Would a patch be useful for evaluating this? Essentially I'm talking about
1) adding get/setResourceNameIterator to IResourceSettings & Settings
2) calling Application.get().getResourceSettings().getResourceNameIterator()
from ResourceStreamLocator and ComponentStringResourceLocator
- Scott
On Thu, Apr 17, 2008 at 10:36 AM, Scott Swank <[EMAIL PROTECTED]> wrote:
> It seems that the problem is that the ComponentStringResourceLoader
> does not handle the MyApplication.properties (never mind what its
> javadoc says). Instead the ClassStringResourceLoader does. It is
> registered in the Settings constructor.
>
> The ClassSRL ultimately delegates to super
>
> return super.loadStringResource((Class)clazzRef.get(), key, locale, style);
>
> And that means that it calls back up to ComponentStringResourceLoader.
> So I have copied the code (!!!) from ClassSRL into "VcomClassSRL
> extends VcomComponentSRL" and registered VcomClassSRL with my
> application. Now the app.properties are found. Excellent.
>
> This means that I had to write my own:
>
> VcomResourceStreamLoader
> VcomComponentStringResourceLoader
> VcomClassStringResourceLoader
>
> This is a decent step backward from the centralized strategy in Wicket
> 1.2. All of the above could have been eliminated if I could have
> registered my:
>
> VcomResourceNameIterator
>
> With my application. Then the ResourceStreamLoader would have used
> it, the ComponentSRLwould have used it, and the ClassSRL would have
> delegated back to the ComponentSRL.
>
> I don't know whether the Wicket devs want to expose the
> ResourceNameIterator and add it to Settings, but since that is
> currently where the resource location strategy is centralized I would
> prefer that it be exposed.
>
> What do the devs think?
>
> Thank you,
> Scott
>
>
>
> On Wed, Apr 16, 2008 at 10:37 PM, Nino Saturnino Martinez Vazquez Wael
>
>
> <[EMAIL PROTECTED]> wrote:
> > No problem, thank me after the issue are solved:) But you would send the
> > thing to me? I haven't received anything yet FYI...
> >
> >
> >
> > Scott Swank wrote:
> >
> > > Thank you Nino. I'll send the quickstart directly to you since the
> > > list doesn't allow attachments. I'm extracting everything from our
> > > sandbox app that you're not interested in. I do have the behavior
> > > reproduced there.
> > >
> > > - Scott
> > >
> > > On Wed, Apr 16, 2008 at 1:02 PM, Nino Saturnino Martinez Vazquez Wael
> > > <[EMAIL PROTECTED]> wrote:
> > >
> > >
> > > > Hi Scott
> > > >
> > > > Could you provide a quickstart? I have some time tomorrow...
> > > >
> > > > Scott Swank wrote:
> > > >
> > > >
> > > >
> > > > >
> > > > > I have subclassed ComponentStringResourceLoader so that I can drive
> it
> > > > > from a custom ResourceNameIterator (in particular to look in the
> right
> > > > > directories). In particular, I just overrode
> > > > >
> > > > > public String loadStringResource(Class clazz, final String key,
> > > > > final Locale locale, final String style)
> > > > >
> > > > > and only changed the line
> > > > >
> > > > > ResourceNameIterator iter = new ResourceNameIterator(path, style,
> > > > > locale, "properties,xml");
> > > > >
> > > > > to use our iterator. Now it cannot find myApplication.properties and
> > > > > I am at a bit of a loss as how this class ever got to
> > > > > myApplication.properties. When it is constructing its list of
> > > > > components it clearly stops at the Page and I don't see how it would
> > > > > ever get to the Application.
> > > > >
> > > > > private List getComponentStack(final Component component)
> > > > > {
> > > > > // Build the search stack
> > > > > final List searchStack = new ArrayList();
> > > > > searchStack.add(component.getClass());
> > > > >
> > > > > if (!(component instanceof Page))
> > > > > {
> > > > > // Add all the component on the way to the Page
> > > > > MarkupContainer container =
> > component.getParent();
> > > > > while (container != null)
> > > > > {
> > > > > searchStack.add(container.getClass());
> > > > > if (container instanceof Page)
> > > > > {
> > > > > break;
> > > > > }
> > > > >
> > > > > container = container.getParent();
> > > > > }
> > > > > }
> > > > > return searchStack;
> > > > > }
> > > > >
> > > > > What am I missing?
> > > > >
> > > > > Thank you,
> > > > > Scott
> > > > >
> > > > > On Tue, Apr 15, 2008 at 12:30 PM, Scott Swank <[EMAIL PROTECTED]>
> > > > >
> > > > >
> > > > wrote:
> > > >
> > > >
> > > > >
> > > > >
> > > > > > Previously we retrieved the CompoundResourceStreamLocator and added
> > > > > > our ResourceStreamLocator to it. In 1.2 did this take care of
> > > > > > StringResourceLoader too?
> > > > > >
> > > > > > WebApplicationPath resourceFinder = (WebApplicationPath)
> > > > > > getResourceSettings().getResourceFinder();
> > > > > > resourceFinder.add(Env.getInstance().getAthenaDocRoot());
> > > > > >
> > > > > > CompoundResourceStreamLocator locator =
> > > > > > (CompoundResourceStreamLocator)
> > > > > > getResourceSettings().getResourceStreamLocator();
> > > > > > locator.add(0, new WebPageResourceStreamLocator(resourceFinder));
> > > > > >
> > > > > > Thank you,
> > > > > > Scott
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > On Tue, Apr 15, 2008 at 10:55 AM, Scott Swank
> > <[EMAIL PROTECTED]>
> > > > > >
> > > > > >
> > > > >
> > > > wrote:
> > > >
> > > >
> > > > >
> > > > > > > We are finally upgrading to Wicket 1.3 (in particular to 1.3.3
> > from
> > > > > > > 1.2.6) and our StringResourceModels can no longer find their
> > > > > >
> > > > > >
> > > > >
> > > > property
> > > >
> > > >
> > > > >
> > > > > > > files, which leaves our web pages containing the following:
> > > > > > >
> > > > > > > [Warning: String resource for 'tickets' not found]
> > > > > > >
> > > > > > > Our application init method contains:
> > > > > > >
> > > > > > > IResourceFinder finder =
> > > > > >
> > > > > >
> > > > >
> > > > getResourceSettings().getResourceFinder();
> > > >
> > > >
> > > > >
> > > > > > > IResourceStreamLocator streamLocator = new
> > > > > > > WebPageResourceStreamLocator(finder);
> > > > > > >
> getResourceSettings().setResourceStreamLocator(streamLocator);
> > > > > > >
> > > > > > > and in our ResourceStreamLocator I added the following with a
> > break
> > > > > > > point on the System.out line:
> > > > > > >
> > > > > > > public IResourceStream locate(final Class clazz, String path,
> > > > > >
> > > > > >
> > > > >
> > > > final
> > > >
> > > >
> > > > >
> > > > > > > String variationAndStyle, final Locale locale, String
> extension)
> > > > > > > {
> > > > > > > if (!"html".equals(extension) && !path.endsWith(".js") &&
> > > > > > > !path.endsWith(".css"))
> > > > > > > {
> > > > > > > System.out.println("break");
> > > > > > > }
> > > > > > > ...
> > > > > > >
> > > > > > > I never see the locate() method called in an attempt to find
> the
> > > > > > > properties. Where should I be looking?
> > > > > > >
> > > > > > > Thank you,
> > > > > > > Scott
> > > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > ---------------------------------------------------------------------
> > > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > >
> > > > --
> > > > -Wicket for love
> > > >
> > > > Nino Martinez Wael
> > > > Java Specialist @ Jayway DK
> > > > http://www.jayway.dk
> > > > +45 2936 7684
> > > >
> > > >
> > > > ---------------------------------------------------------------------
> > > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > > For additional commands, e-mail: [EMAIL PROTECTED]
> > > >
> > > >
> > > >
> > > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > > For additional commands, e-mail: [EMAIL PROTECTED]
> > >
> > >
> > >
> > >
> >
> > --
> > -Wicket for love
> >
> > Nino Martinez Wael
> > Java Specialist @ Jayway DK
> > http://www.jayway.dk
> > +45 2936 7684
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: [EMAIL PROTECTED]
> > For additional commands, e-mail: [EMAIL PROTECTED]
> >
> >
>
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]