You can contribute just the name of the file you want ("quartz.properties"),
put it in the classpath, eg in src/main/resources, and then in the place
where you need to use it, load it from the classloader as a resource:
InputStream in = getClass().getResourceAsStream("quartz.properties");
But instead of "quartz.properties" you can use the symbol that contains that
filename.


On Wed, Jan 5, 2011 at 10:06 AM, abangkis <abang...@gmail.com> wrote:

> Hi josh, thanks a lot. I follow your advice and tries to include all the
> module that i could think of. This is the modified initRegistry method :
>
> private void initRegistry() {
>  RegistryBuilder builder = new RegistryBuilder();
>   builder.add(TapestryModule.class);
>  builder.add(AppModule.class);
>  builder.add(HibernateCoreModule.class);
>  builder.add(ChenilleKitQuartzModule.class);
> registry = builder.build();
> registry.performRegistryStartup();
>  }
>
> Adding TapestryModule fix the previous error, but i think I'm missing a
> little something here. The ChennileKitQuartzModule throw a null pointer
> exception
>
> Caused by: java.lang.RuntimeException: Error invoking service contribution
> method
>
> net.mreunion.cinematorserver.services.AppModule.contributeSchedulerFactory(ApplicationGlobals,
> OrderedConfiguration): java.lang.NullPointerException
>  at
>
> org.apache.tapestry5.ioc.internal.ContributionDefImpl.invokeMethod(ContributionDefImpl.java:139)
> at
>
> org.apache.tapestry5.ioc.internal.ContributionDefImpl.contribute(ContributionDefImpl.java:82)
>  at
> org.apache.tapestry5.ioc.internal.RegistryImpl$9.run(RegistryImpl.java:651)
> at
>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:50)
>  at
>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl$1.invoke(OperationTrackerImpl.java:47)
> at
>
> org.apache.tapestry5.ioc.internal.OperationTrackerImpl.invoke(OperationTrackerImpl.java:65)
>  ... 98 more
> Caused by: java.lang.NullPointerException
> at
>
> net.mreunion.cinematorserver.services.AppModule.contributeSchedulerFactory(AppModule.java:116)
>
> That leads to the quartz contribution method in my app module
>
> public static void contributeSchedulerFactory(
>  @InjectService("ApplicationGlobals") ApplicationGlobals
> applicationGlobals,
> OrderedConfiguration<URL> configuration) {
>  String fileName = applicationGlobals.getServletContext().getRealPath(
> "/WEB-INF/classes/quartz.properties");
>  File file = new File(fileName);
> if (!file.canRead())
> throw new RuntimeException(String.format("can't read file '%s'",
>  file.toURI()));
>
> try {
> configuration.add("configuration", file.toURI().toURL());
>  } catch (MalformedURLException e) {
> throw new RuntimeException(e);
> }
>  }
>
> public static void contributeQuartzSchedulerManager(
>  OrderedConfiguration<JobSchedulingBundle> configuration,
> CrawlingJobImpl crawlingJob, JakartaCrawler crawler) {
>  configuration.add("crawlScheduler", new CrawlSchedulerBundle(crawlingJob,
> crawler));
> }
>
> The null pointer is in  the
>
> String fileName = applicationGlobals.getServletContext().getRealPath(
> "/WEB-INF/classes/quartz.properties");
>
> I guess it makes sense, since TestNG is not using Servlet Context to run
> the
> test.  Is there anyway to contribute the quartz.properties that will work
> inside and outside of the servlet context  ?
>
>
> Cheers,
> Abangkis
>
> On Wed, Jan 5, 2011 at 9:38 PM, Josh Canfield <joshcanfi...@gmail.com
> >wrote:
>
> > It doesn't look like you are including TapestryModule in your registry.
> > Since you're building the registry you're in charge kit adding all the
> > modules.
> >
> > Optionally you could add @SubModule(TapestryModule.class) to your
> AppModule
> > to make the dependency explicit.
> > On Jan 5, 2011 4:25 AM, "abangkis" <abang...@gmail.com> wrote:
> > > Hello, i have a tapestry app that consist of 1-2 pages, and lots of
> > > services. The apps is used to crawl another website. The apps uses
> > hibernate
> > > module, quartz and some other contribution. Because of the nature of my
> > > apps, i want to test the services class using TestNG. I've created a
> > simple
> > > test that build the tapestry registry for my services and run it. But i
> > > received an error that the ComponentRequestHandler doesn't exist.
> Here's
> > the
> > > contribution in the appmodule, test file and the stack trace. I wonder
> > what
> > > I've missed ?
> > >
> > >
> > > Cheers,
> > > Abangkis
> > >
> > > public class AppModule {
> > > ....
> > >
> > > public void
> > >
> >
> >
> contributeComponentRequestHandler(OrderedConfiguration<ComponentRequestFilter>
> > > configuration) {
> > > configuration.addInstance("PageProtectionFilter",
> > > PageProtectionFilter.class);
> > > }
> > > public void
> contributeRequestHandler(OrderedConfiguration<RequestFilter>
> > > configuration,
> > > PageRenderLinkSource pageRenderLinkSource) {
> > > final HashSet<String> ASSETS_WHITE_LIST = new
> > > HashSet<String>(Arrays.asList("jpg", "jpeg", "png", "gif", "js",
> > > "css", "ico", "html", "json"));
> > > configuration.add("AssetProtectionFilter", new
> > > AssetProtectionFilter(ASSETS_WHITE_LIST, pageRenderLinkSource),
> > > "before:*");
> > > }
> > > ....
> > > }
> > >
> > > public class MyTest {
> > > private Registry registry;
> > >
> > > @Test
> > > public void f() {
> > > String pageName = "DummyPage";
> > > MovieManager movieManager = registry.getService(MovieManager.class);
> > > String result = movieManager.getMovieTitle(pageName);
> > > assertEquals("Gullivers Island", result);
> > > }
> > >
> > > @BeforeClass
> > > public void beforeClass() {
> > > // registry = IOCUtilities.buildDefaultRegistry();
> > > initRegistry();
> > > }
> > >
> > > private void initRegistry() {
> > > RegistryBuilder builder = new RegistryBuilder();
> > > builder.add(ChenilleKitQuartzModule.class);
> > > builder.add(AppModule.class);
> > > registry = builder.build();
> > > registry.performRegistryStartup();
> > > }
> > >
> > > @AfterClass
> > > public void afterClass() {
> > > registry.shutdown();
> > > }
> > >
> > > }
> > >
> > > FAILED CONFIGURATION: @BeforeClass beforeClass
> > > java.lang.IllegalArgumentException: Contribution
> > >
> >
> >
> net.mreunion.cinematorserver.services.AppModule.contributeComponentRequestHandler(OrderedConfiguration)
> > > (at AppModule.java:145) is for service 'ComponentRequestHandler', which
> > does
> > > not exist.
> > > at
> > >
> >
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.validateContributeDefs(RegistryImpl.java:253)
> > > at
> > >
> >
> >
> org.apache.tapestry5.ioc.internal.RegistryImpl.<init>(RegistryImpl.java:229)
> > > at
> > org.apache.tapestry5.ioc.RegistryBuilder.build(RegistryBuilder.java:170)
> > > at
> > > net.mreunion.cinematorserver.TestEscapedCharacter.initRegistry(MyTest
> > .java:45)
> > > at
> > > net.mreunion.cinematorserver.TestEscapedCharacter.beforeClass(MyTest
> > .java:33)
> > > at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> > > at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
> > > at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
> > > at java.lang.reflect.Method.invoke(Unknown Source)
> > > at
> > >
> >
> >
> org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:74)
> > > at
> > org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:525)
> > > at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:202)
> > > at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:130)
> > > at
> > >
> >
> >
> org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:173)
> > > at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:105)
> > > at org.testng.TestRunner.runWorkers(TestRunner.java:1125)
> > > at org.testng.TestRunner.privateRun(TestRunner.java:749)
> > > at org.testng.TestRunner.run(TestRunner.java:600)
> > > at org.testng.SuiteRunner.runTest(SuiteRunner.java:317)
> > > at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:312)
> > > at org.testng.SuiteRunner.privateRun(SuiteRunner.java:274)
> > > at org.testng.SuiteRunner.run(SuiteRunner.java:223)
> > > at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
> > > at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
> > > at org.testng.TestNG.runSuitesSequentially(TestNG.java:995)
> > > at org.testng.TestNG.runSuitesLocally(TestNG.java:920)
> > > at org.testng.TestNG.run(TestNG.java:856)
> > > at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:110)
> > > at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:205)
> > > at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:174)
> > >
> > >
> > > --
> > > http://www.mreunion-labs.net/
> > > twitter : @mreunionlabs
> > > blog : mreunion.wordpress.com
> > > Follow our android survey at :
> > > http://www.mreunion-labs.net/downloads:dlapk/MySurvey.apk
> >
>
>
>
> --
> http://www.mreunion-labs.net/
> twitter : @mreunionlabs
> blog : mreunion.wordpress.com
> Follow our android survey at :
> http://www.mreunion-labs.net/downloads:dlapk/MySurvey.apk
>

Reply via email to