Hi Jesse,
On Wed, Oct 15, 2014 at 12:39 PM, Jesse Long <[email protected]> wrote: > Hi Martin, Sebastien, > > In the future, there may be other situations where there is some funky URL > scheme in place and we cannot load initializers, because of the failure to > list all /META-INF/wicket/*.properties > > Could I suggest that we modify collectWicketProperties() to check that we > have at least one initializer and if not, instead of looking for > /META-INF/wicket/*.properties, we use normal ClassLoader.getResources("/ > META-INF/wicket/wicket.properties") directly? > There is no /META-INF/wicket/wicket.properties now. Just moving /wicket.properties to /META-INF/wicket/wicket.properties won't improve the problem with the uberjar because now the overridden file will be /META-INF/wicket/wicket.properties. The files should have different names so they do not overlap each other when merged in an uberjar. The new scheme is: - /META-INF/wicket/org.apache.wicket.core.properties - /META-INF/wicket/org.apache.wicket.extensions.properties - /META-INF/wicket/com.example.my.properties etc. I agree with you that it may break when a web container changes the way it manages its jars, e.g. with custom UrlStreamHandler(Factory), but I don't see a way to make the code future-proof. One optimization I see is to merge the impls for "jar" and "vfs". Both use JarInputStream so it should work. But again this won't guarantee that some web container in the future won't implement its own custom InputStream and break the traversing again. > Customer initializers will not work but at least Wicket initializers will > work. This would have solved Sebastien's problem, not so? > > Cheers, > Jesse > > > On 15/10/2014 11:21, Sebastien wrote: > >> Hi Martin, >> >> Just tested the new snapshot. It's working, thanks! :) >> >> Best regards, >> Sebastien. >> >> >> On Wed, Oct 15, 2014 at 10:42 AM, Martin Grigorov <[email protected]> >> wrote: >> >> Sebastien, >>> >>> I've just pushed an improvement. >>> It seems to work fine here. >>> Please update and test with your application. >>> Thanks! >>> >>> Martin Grigorov >>> Wicket Training and Consulting >>> https://twitter.com/mtgrigorov >>> >>> On Wed, Oct 15, 2014 at 11:17 AM, Martin Grigorov <[email protected]> >>> wrote: >>> >>> Class#getResource[s]() and ClassLoader#getResource[s]() do work. >>>> >>>> But traversing the classpath to find files inside a directory doesn't >>>> >>> work. >>> >>>> The idea of https://issues.apache.org/jira/browse/WICKET-5713 is to use >>>> /META-INF/wicket/ with custom names for the old wicket.properties, e.g. >>>> org.apache.wicket.core.properties and >>>> org.apache.wicket.extensions.properties, and com.example.my.properties. >>>> The custom names are needed/wanted to be able to create an uberjar with >>>> all Wicket jars without overriding files coming from several jars. >>>> >>>> I have setup WildFly 8.1 in my IDE and debugging it to see whether I can >>>> solve this without adding dependency to jboss-vfs. >>>> But I think it should be OK to add dependency with scope "provided". It >>>> will be used only when deploying in JBoss. >>>> >>>> Martin Grigorov >>>> Wicket Training and Consulting >>>> https://twitter.com/mtgrigorov >>>> >>>> On Wed, Oct 15, 2014 at 11:03 AM, Sebastien <[email protected]> wrote: >>>> >>>> Hi Martin, >>>>> >>>>> This a little bit strange because it work in other situation (like for >>>>> properties). Maybe is it related to the location (META-INF) ? >>>>> >>>>> 09:59:11,057 INFO [org.apache.wicket.resource.PropertiesFactory] >>>>> >>>> Loading >>> >>>> properties files from >>>>> >>>>> >>>>> vfs:/D:/runtimes/wildfly-8.1.0.Final/bin/content/my-ear- >>> dev.ear/my-war-1.0-SNAPSHOT.war/WEB-INF/lib/wicket-core-7. >>> 0.0-M3.jar/org/apache/wicket/Application.properties >>> >>>> with loader >>>>> org.apache.wicket.resource.IsoPropertiesFilePropertiesLoader@4807df36 >>>>> 09:59:20,718 INFO [org.apache.wicket.resource.PropertiesFactory] >>>>> >>>> Loading >>> >>>> properties files from >>>>> >>>>> >>>>> vfs:/D:/runtimes/wildfly-8.1.0.Final/bin/content/my-ear- >>> dev.ear/my-war-1.0-SNAPSHOT.war/WEB-INF/lib/wicket- >>> extensions-7.0.0-M3.jar/org/apache/wicket/extensions/ >>> Initializer.properties >>> >>>> with loader >>>>> org.apache.wicket.resource.IsoPropertiesFilePropertiesLoader@4807df36 >>>>> >>>>> Best regards, >>>>> Sebastien. >>>>> >>>>> >>>>> On Tue, Oct 14, 2014 at 5:37 PM, Martin Grigorov <[email protected] >>>>> > >>>>> wrote: >>>>> >>>>> Nice ! >>>>>> JBoss - the new WebSphere ! >>>>>> >>>>>> I'll check what is needed to support this. >>>>>> wicket-webjars uses Reflections plus some extras to support Vfs. >>>>>> I prefer to revert the change than to add third party dependencies. >>>>>> >>>>>> Martin Grigorov >>>>>> Wicket Training and Consulting >>>>>> https://twitter.com/mtgrigorov >>>>>> >>>>>> On Tue, Oct 14, 2014 at 6:21 PM, Sebastien <[email protected]> wrote: >>>>>> >>>>>> Oh, you are right ! I did not paid attention to this, it was with >>>>>>> >>>>>> the >>> >>>> warnings for my own jars (/wicket.properties location is >>>>>>> >>>>>> deprecated...) >>>>> >>>>>> ERROR [org.apache.wicket.Application] Cannot load >>>>>>> >>>>>>> >>>>>>> 'vfs:/D:/runtimes/wildfly-8.1.0.Final/bin/content/myear-dev. >>> ear/hawk-war-1.0-SNAPSHOT.war/WEB-INF/lib/wicket-core-7.0.0- >>> SNAPSHOT.jar/META-INF/wicket/'. >>> >>>> The protocol 'vfs' is not supported! >>>>>>> ERROR [org.apache.wicket.Application] Cannot load >>>>>>> >>>>>>> >>>>>>> 'vfs:/D:/runtimes/wildfly-8.1.0.Final/bin/content/myear-dev. >>> ear/hawk-war-1.0-SNAPSHOT.war/WEB-INF/lib/wicket-devutils-7. >>> 0.0-SNAPSHOT.jar/META-INF/wicket/'. >>> >>>> The protocol 'vfs' is not supported! >>>>>>> ERROR [org.apache.wicket.Application] Cannot load >>>>>>> >>>>>>> >>>>>>> 'vfs:/D:/runtimes/wildfly-8.1.0.Final/bin/content/myear-dev. >>> ear/hawk-war-1.0-SNAPSHOT.war/WEB-INF/lib/wicket-extensions- >>> 7.0.0-SNAPSHOT.jar/META-INF/wicket/'. >>> >>>> The protocol 'vfs' is not supported! >>>>>>> >>>>>>> >>>>>>> >>>>>>> >>>>>>> On Tue, Oct 14, 2014 at 5:10 PM, Martin Grigorov < >>>>>>> >>>>>> [email protected]> >>>>> >>>>>> wrote: >>>>>>> >>>>>>> After removing all beanvalidation related stuff the deployment is >>>>>>>> successful and the initializers work fine. >>>>>>>> >>>>>>>> Could it be again something with JBoss ? >>>>>>>> The change related to this problem is that wicket.properties has >>>>>>>> >>>>>>> been >>>>> >>>>>> moved >>>>>>> >>>>>>>> from / (i.e. the root of the classpath) to /META-INF/wicket/** >>>>>>>> I am not sure whether JBoss doesn't do something special with >>>>>>>> >>>>>>> /META-INF/** >>>>>>> >>>>>>>> ... >>>>>>>> >>>>>>>> Martin Grigorov >>>>>>>> Wicket Training and Consulting >>>>>>>> https://twitter.com/mtgrigorov >>>>>>>> >>>>>>>> On Tue, Oct 14, 2014 at 5:57 PM, Martin Grigorov < >>>>>>>> >>>>>>> [email protected] >>>>> >>>>>> wrote: >>>>>>>> >>>>>>>> Deploying in Tomcat fails with: >>>>>>>>> >>>>>>>>> Caused by: java.lang.ClassNotFoundException: >>>>>>>>> javax.validation.constraints.Pattern$Flag >>>>>>>>> at >>>>>>>>> >>>>>>>>> org.apache.catalina.loader.WebappClassLoaderBase.loadClass( >>> WebappClassLoaderBase.java:1293) >>> >>>> at >>>>>>>>> >>>>>>>>> org.apache.catalina.loader.WebappClassLoaderBase.loadClass( >>> WebappClassLoaderBase.java:1145) >>> >>>> ... 51 more >>>>>>>>> >>>>>>>>> >>>>>>>>> Martin Grigorov >>>>>>>>> Wicket Training and Consulting >>>>>>>>> https://twitter.com/mtgrigorov >>>>>>>>> >>>>>>>>> On Tue, Oct 14, 2014 at 5:54 PM, Martin Grigorov < >>>>>>>>> >>>>>>>> [email protected] >>>>>> >>>>>>> wrote: >>>>>>>>> >>>>>>>>> Works fine in embedded Jetty. >>>>>>>>>> Let's see in Tomcat.. >>>>>>>>>> >>>>>>>>>> Martin Grigorov >>>>>>>>>> Wicket Training and Consulting >>>>>>>>>> https://twitter.com/mtgrigorov >>>>>>>>>> >>>>>>>>>> On Tue, Oct 14, 2014 at 5:48 PM, Martin Grigorov < >>>>>>>>>> >>>>>>>>> [email protected]> >>>>>>> >>>>>>>> wrote: >>>>>>>>>> >>>>>>>>>> Let me see. >>>>>>>>>>> >>>>>>>>>>> Martin Grigorov >>>>>>>>>>> Wicket Training and Consulting >>>>>>>>>>> https://twitter.com/mtgrigorov >>>>>>>>>>> >>>>>>>>>>> On Tue, Oct 14, 2014 at 5:45 PM, Sebastien <[email protected]> >>>>>>>>>>> >>>>>>>>>> wrote: >>>>>> >>>>>>> Hi devs, >>>>>>>>>>>> >>>>>>>>>>>> I've got an issue with 7.0.0-SNAPSHOT which is/was not >>>>>>>>>>>> >>>>>>>>>>> present >>> >>>> in >>>>> >>>>>> M3; >>>>>>> >>>>>>>> it >>>>>>>> >>>>>>>>> seems that Wicket extensions initializer is not called (no >>>>>>>>>>>> >>>>>>>>>>> "init: >>>>> >>>>>> Wicket >>>>>>>> >>>>>>>>> extensions initializer" in the log). >>>>>>>>>>>> >>>>>>>>>>>> At least the exact error I have is: >>>>>>>>>>>> >>>>>>>>>>>> java.util.MissingResourceException: Unable to find property: >>>>>>>>>>>> 'datatable.no-records-found' for component: >>>>>>>>>>>> datatable:bottomToolbars:toolbars:2:td:msg >>>>>>>>>>>> [class=org.apache.wicket.markup.html.basic.Label]. Locale: >>>>>>>>>>>> >>>>>>>>>>> null, >>>>> >>>>>> style: null >>>>>>>>>>>> at >>>>>>>>>>>> >>>>>>>>>>> org.apache.wicket.Localizer.getString(Localizer.java:237) >>>>> >>>>>> >>>>>>>>>>>> Thanks & best regards, >>>>>>>>>>>> Sebastien >>>>>>>>>>>> >>>>>>>>>>>> >>>>>>>>>>> >>>> >
