rave-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ciancetta, Jesse E." <jc...@mitre.org>
Subject RE: Problems overriding rave host configuration
Date Fri, 03 Feb 2012 22:31:13 GMT
>-----Original Message-----
>From: Jasha Joachimsthal [mailto:j.joachimsthal@onehippo.com]
>Sent: Friday, February 03, 2012 12:39 PM
>To: rave-dev@incubator.apache.org
>Subject: Re: Problems overriding rave host configuration
>
>Hi,
>
>Something goes wrong in the Rave-Shindig override mechanism but I haven't
>found where yet. On startup the OverridablePropertyPlaceholderConfigurer
>for rave-shindig says it load my custom shindig properties, but later
>Shindig says it loads the default container.js and therefore goes to
>localhost:8080.
>It is probably caused by the Shindig upgrade in December 2011. I'm afraid I
>won't have the time soon to dive into the code base, anyone else?

I don't think it was related to the shindig upgrade -- I think this issue may have been around
longer than that.  

I just committed a change which I'm hoping resolves the issue, but I didn't write the original
property loader code so I'm just basing these changes on how I *think* it was intended to
work:

-- We have a single properties file for the rave-shindig project which is used to initialize
both Shindig proper (via Guice) as well as all of our custom Rave specific extensions (via
Spring).

-- That single properties file is called rave.shindig.properties.  It contains a copy of all
of the properties from the default shindig.properties file plus all of our Rave specific properties.

-- When our extended/custom version of Shindig initializes, it reads all of the properties
it would have normally read from shindig.properties from rave.shindig.properties instead.
 The default shindig.properties file is never read.  Ever.  Not even a little.  :-)

-- When our extended/custom version of Shindig initializes, our Rave components are also initialized
based on the properties contained in rave.shindig.properties.

-- We'd like to be able to set a system property called "rave-shindig.override.properties"
which points to a custom version of rave.shindig.properties.  If that property is set, it
is read instead of the default  rave.shindig.properties  file and used to initialize both
Shindig proper and all of our custom components.

Hopefully all of that was the original intent.

So based on all of that and digging around in the property initialization code I noticed that
the guice component which reads rave.shindig.properties looked for an override property called
"shindig.override.properties", but on the spring side (and the documentation on the rave website)
the properties loader was looking for an override property called "rave-shindig.override.properties".
 I updated the guice loader to also look for "rave-shindig.override.properties" and ran a
bunch of tests and everything appears to be working as I think it's supposed to.

Here are the tests I did after my changes:

-- Clean build, cargo:start -- works fine

-- Set "rave-shindig.override.properties" system property (as a JVM system property -- *not*
an environmental variable) to a file that doesn't exist -- ran another build and then cargo:start
-- blows up as expected: "Unable to load properties from resource. c:\temp\custom.shindig.properties
(The system cannot find the file specified)"
	I set the system property by changing the <cargo.args> element in \rave\rave-project\rave-portal\pom.xml
to this:
	<cargo.args>-Drave-shindig.override.properties="c:\temp\custom.shindig.properties"</cargo.args>
	There are other ways to achieve this as well -- this is just one of them.

-- Copied rave\rave-project\rave-portal\target\tomcat6x\webapps\ROOT\WEB-INF\classes\rave.shindig.properties
to c:\temp\custom.shindig.properties -- cargo:start -- works as expected
	NOTE that I copied the *post build* version of rave.shindig.properties -- there is apparently
a step in the build process that does a literal replacement of the ${rave.database.location}
with a literal value...  If you copy the version straight from SVN trunk (like I did the first
time) you'll end up with an error at application initialization time: "Could not resolve placeholder
'rave.database.location'"

-- Changed shindig.containers.default property in custom.shindig.properties to a file that
doesn't exist -- cargo:start -- blows up as expected: "Error injecting constructor, org.apache.shindig.config.ContainerConfigException:
The file 'C:\temp\custom-container.js' doesn't exist."

-- Copied rave\rave-project\rave-shindig\src\main\webapp\WEB-INF\classes\containers\default\container.js
to C:\temp\custom-container.js -- cargo:start  -- works as expected

Hopefully this solves the issues that others were seeing as well.  If not, please let us know!

--Jesse

>
>Jasha Joachimsthal
>
>Europe - Amsterdam - Oosteinde 11, 1017 WT Amsterdam - +31(0)20 522 4466
>US - Boston - 1 Broadway, Cambridge, MA 02142 - +1 877 414 4776 (toll free)
>
>www.onehippo.com
>
>
>On 3 February 2012 17:00, William Hayes
><William.Hayes@biogenidec.com>wrote:
>
>> Hi Carl,
>>
>> I'm having the same problem - I'm trying to override the domain name and
>> Tomcat ports, and I have updated those files in particular with no
>> success.  I'm getting the same error as you.
>>
>> Are you using the maven cargo:start to start Rave or using the binaries?
>>
>> I'm a bit confused as to the best approach.  Do we make the changes in the
>> source and then run 'mvn install' or 'mvn -Pdist'? Or do we take the
>> binaries and alter the Ports and Domain after they are packaged into
>> binaries?
>>
>> I'm trying to test out Jasha's LDAP module, but I'm stuck on this basic
>> issue.
>>
>> Wm
>>
>>
>>
>> On 2/2/12 2:33 PM, "Louton, Carl O." <clouton@mitre.org> wrote:
>>
>> >Hello,
>> >
>> >I am having some difficulty with the override portal configuration. I can
>> >properly specify portal.properties, rave-shinding.properties, and my own
>> >container.js file. However, when the portal loads, the gadget iframes are
>> >still pointing at a url that looks like
>> >"//locahost:8080/gadgets/ifr?url=...", which does not work when I'm
>> >trying to access the portal from anything but the same machine.
>> >
>> >The override mechanism worked in the past, as of Rave 0.6, but I've
>> >recently tried to start using 0.8 to test it out, and began having this
>> >issue.
>> >
>> >Carl Louton
>> >E543 - HIS, Visualization & Decision Support
>> >The MITRE Corp.
>> >781-271-5231
>> >
>> >
>> >
>>
>>
>>

Mime
View raw message