[forge-dev] Seam render issue with @include in scaffolding

Ronald van Kuijk rvkuijk at gmail.com
Sun Jun 19 13:06:52 EDT 2011


The solutions I currently have is identical to what is done for the seam
render test (including the BeanManagerCaptuireExtension ) with one
difference. The forge Startup event was to late, and the AfterBeanDiscovery
did not work. So I introduced a PreStartup event (could have been
'PostWeldInitialize as well) that did the trick. So I'm not sure this is te
solution you want and since it seams not that complicated (certainly now
with the knowledge you guys have about this) I'll leave the real solution up
to you.

After that a small template resolving error occured but that was solved by
removing the '' from my include name. So

@include{'rfc.mv'} became @include{rfc.mv}

But... it works and that is the most important thing



2011/6/17 Ronald van Kuijk <rvkuijk at gmail.com>

> Ah, ok. I was already looking in this direction after creating a
> testclass that eventually demonstrated the same problem and seeing the
> test case in seam-render. I'll try this myself (some experience withe
> the seam2 core, not the weld internals) over the weekend and get back
> to you after that. Have a good conference.
>
> Cheers,
>
> Ronald
>
> 2011/6/17, Lincoln Baxter, III <lincolnbaxter at gmail.com>:
> > Ahhh, yes. I know why this is happening. We need to register a custom
> > BeanManagerProvider with the ServiceProvider API. I'll take a look at
> this
> > as soon as possible. But it might be a few days since I am getting ready
> for
> > a conference.
> >
> > If you wanted to try to do this yourself, in a @Singleton or
> > @ApplicationScoped bean, we can implement the BeanManagerLocator
> interface
> > and register it. In order to obtain an instance of the BeanManager, we'd
> > need a class like this:
> >
> > It would have to be registered by creating a service file. This file
> needs
> > to contain the fully qualified class name of the provider, for instance:
> >
> > -------------------------------------------------
> > *
> >
> src/main/resources/META-INF/services/org.jboss.seam.solder.beanManager.BeanManagerProvider
> > *
> > org.jboss.seam.forge.shell.ObserverBeanManagerLocator
> >
> > -------------------------------------------------
> > public class ObserverBeanManagerLocator implements BeanManagerProvider
> > {
> >   private BeanManager manager;
> >
> >   public void onStartup(@Observes Startup event, BeanManager manager)
> >   {
> >      this.manager = manager;
> >   }
> >
> >   public BeanManager getBeanManager()
> >   {
> >      return manager;
> >   }
> >
> > }
> > -------------------------------------------------
> >
> > On Thu, Jun 16, 2011 at 7:27 PM, Ronald van Kuijk <rvkuijk at gmail.com>
> wrote:
> >
> >> I'm making nice progress with extending the scaffolding of webpages from
> >> entities. To keep the different pages for different JSF component
> >> frameworks
> >> as short as possible I'm thinking of working with mvel/seam-render
> >> @include
> >> templates.
> >>
> >> Just adding a small line like
> >>
> >> @include{'rf-colum.mv'}
> >>
> >> results in the error below when starting seam-forge
> >>
> >> It does not even make a difference whether the file even exists or not.
> >> I'm
> >> not sure if this is a seam-render issue or a seam-forge issue, So
> therefor
> >> I
> >> post the question here. I have debugged the code and have seen that the
> >> *BeanManagerProviders do indeed not give back a BeanManager.
> >>
> >> Any clues?
> >>
> >> Cheers,
> >>
> >> Ronald
> >>
> >> [ERROR] Failed to execute goal
> >> org.codehaus.mojo:exec-maven-plugin:1.1.1:java (default-cli) on project
> >> forge-distribution: An exception occured while executing the Java class.
> >> [Error: Failed to locate BeanManager using any of these providers:
> >> org.jboss.seam.solder.beanManager.DefaultJndiBeanManagerProvider(11),
> >>
> org.jboss.seam.solder.beanManager.ServletContainerJndiBeanManagerProvider(10)]
> >> [ERROR] [Near : {... @include{'pf.mv'} ....}]
> >> [ERROR] ^
> >> [ERROR] [Line: 11, Column: 0]
> >> [ERROR] -> [Help 1]
> >> org.apache.maven.lifecycle.LifecycleExecutionException: Failed to
> execute
> >> goal org.codehaus.mojo:exec-maven-plugin:1.1.1:java (default-cli) on
> >> project
> >> forge-distribution: An exception occured while executing the Java class.
> >> [Error: Failed to locate BeanManager using any of these providers:
> >> org.jboss.seam.solder.beanManager.DefaultJndiBeanManagerProvider(11),
> >>
> org.jboss.seam.solder.beanManager.ServletContainerJndiBeanManagerProvider(10)]
> >> [Near : {... @include{'pf.mv'} ....}]
> >>                     ^
> >> [Line: 11, Column: 0]
> >>     at
> >>
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:217)
> >>     at
> >>
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:153)
> >>     at
> >>
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:145)
> >>     at
> >>
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:84)
> >>     at
> >>
> org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:59)
> >>     at
> >>
> org.apache.maven.lifecycle.internal.LifecycleStarter.singleThreadedBuild(LifecycleStarter.java:183)
> >>     at
> >>
> org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:161)
> >>     at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:319)
> >>     at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:156)
> >>     at org.apache.maven.cli.MavenCli.execute(MavenCli.java:534)
> >>     at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:196)
> >>     at org.apache.maven.cli.MavenCli.main(MavenCli.java:141)
> >>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>     at
> >>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> >>     at
> >>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >>     at java.lang.reflect.Method.invoke(Method.java:616)
> >>     at
> >>
> org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:290)
> >>     at
> >>
> org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:230)
> >>     at
> >>
> org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:409)
> >>     at
> >>
> org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:352)
> >> Caused by: org.apache.maven.plugin.MojoExecutionException: An exception
> >> occured while executing the Java class. [Error: Failed to locate
> >> BeanManager
> >> using any of these providers:
> >> org.jboss.seam.solder.beanManager.DefaultJndiBeanManagerProvider(11),
> >>
> org.jboss.seam.solder.beanManager.ServletContainerJndiBeanManagerProvider(10)]
> >> [Near : {... @include{'pf.mv'} ....}]
> >>                     ^
> >> [Line: 11, Column: 0]
> >>     at
> org.codehaus.mojo.exec.ExecJavaMojo.execute(ExecJavaMojo.java:338)
> >>     at
> >>
> org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:107)
> >>     at
> >>
> org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:209)
> >>     ... 19 more
> >> Caused by: [Error: Failed to locate BeanManager using any of these
> >> providers:
> >> org.jboss.seam.solder.beanManager.DefaultJndiBeanManagerProvider(11),
> >>
> org.jboss.seam.solder.beanManager.ServletContainerJndiBeanManagerProvider(10)]
> >> [Near : {... @include{'pf.mv'} ....}]
> >>                     ^
> >> [Line: 11, Column: 0]
> >>     at
> >>
> org.jboss.seam.render.template.compiler.CustomTemplateCompiler.compileFrom(CustomTemplateCompiler.java:295)
> >>     at
> >>
> org.jboss.seam.render.template.compiler.CustomTemplateCompiler.compile(CustomTemplateCompiler.java:88)
> >>     at
> >>
> org.jboss.seam.render.template.compiler.CustomTemplateCompiler.compileTemplate(CustomTemplateCompiler.java:493)
> >>     at
> >>
> org.jboss.seam.render.template.CompiledTemplateResource.<init>(CompiledTemplateResource.java:99)
> >>     at
> >>
> org.jboss.seam.render.TemplateCompiler.compile(TemplateCompiler.java:140)
> >>     at
> >>
> org.jboss.seam.render.TemplateCompiler.compile(TemplateCompiler.java:129)
> >>     at
> >>
> org.jboss.seam.render.TemplateCompiler.compile(TemplateCompiler.java:107)
> >>     at
> >>
> org.metawidget.forge.MetawidgetScaffold.<init>(MetawidgetScaffold.java:122)
> >>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> >> Method)
> >>     at
> >>
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
> >>     at
> >>
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> >>     at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
> >>     at
> >>
> org.jboss.weld.introspector.jlr.WeldConstructorImpl.newInstance(WeldConstructorImpl.java:239)
> >>     at
> >>
> org.jboss.weld.injection.ConstructorInjectionPoint.newInstance(ConstructorInjectionPoint.java:134)
> >>     at
> >> org.jboss.weld.bean.ManagedBean.createInstance(ManagedBean.java:385)
> >>     at
> >>
> org.jboss.weld.bean.ManagedBean$ManagedBeanInjectionTarget.produce(ManagedBean.java:234)
> >>     at org.jboss.weld.bean.ManagedBean.create(ManagedBean.java:338)
> >>     at
> >>
> org.jboss.weld.context.unbound.DependentContextImpl.get(DependentContextImpl.java:67)
> >>     at
> >>
> org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:690)
> >>     at
> >>
> org.jboss.weld.manager.BeanManagerImpl.getReference(BeanManagerImpl.java:728)
> >>     at
> >> org.jboss.weld.bean.builtin.InstanceImpl.iterator(InstanceImpl.java:147)
> >>     at
> >>
> org.jboss.forge.project.services.FacetFactory.getFacets(FacetFactory.java:59)
> >>     at
> >>
> org.jboss.forge.project.services.ProjectFactory.registerFacets(ProjectFactory.java:184)
> >>     at
> >>
> org.jboss.forge.project.services.ProjectFactory.findProjectRecursively(ProjectFactory.java:129)
> >>     at
> >>
> org.jboss.forge.shell.project.ProjectInitializer.doInit(ProjectInitializer.java:87)
> >>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>     at
> >>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> >>     at
> >>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >>     at java.lang.reflect.Method.invoke(Method.java:616)
> >>     at
> >>
> org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:305)
> >>     at
> >>
> org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:54)
> >>     at
> >>
> org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:163)
> >>     at
> >>
> org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:299)
> >>     at
> >>
> org.jboss.weld.introspector.jlr.WeldMethodImpl.invokeOnInstance(WeldMethodImpl.java:188)
> >>     at
> >>
> org.jboss.weld.introspector.ForwardingWeldMethod.invokeOnInstance(ForwardingWeldMethod.java:59)
> >>     at
> >>
> org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:198)
> >>     at
> >>
> org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:270)
> >>     at
> >>
> org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:253)
> >>     at
> >>
> org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:222)
> >>     at
> >>
> org.jboss.weld.manager.BeanManagerImpl.notifyObservers(BeanManagerImpl.java:632)
> >>     at
> >>
> org.jboss.weld.manager.BeanManagerImpl.fireEvent(BeanManagerImpl.java:625)
> >>     at org.jboss.weld.event.EventImpl.fire(EventImpl.java:75)
> >>     at
> >>
> org.jboss.forge.shell.project.CurrentProject.setCurrentResource(CurrentProject.java:91)
> >>     at org.jboss.forge.shell.ShellImpl.init(ShellImpl.java:317)
> >>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>     at
> >>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> >>     at
> >>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >>     at java.lang.reflect.Method.invoke(Method.java:616)
> >>     at
> >>
> org.jboss.weld.bean.proxy.AbstractBeanInstance.invoke(AbstractBeanInstance.java:48)
> >>     at
> >>
> org.jboss.weld.bean.proxy.ProxyMethodHandler.invoke(ProxyMethodHandler.java:125)
> >>     at org.jboss.forge.shell.org
> >>
> $jboss$weld$bean-classpath-ManagedBean-org$jboss$forge$shell$ShellImpl[@javax$enterprise$context$ApplicationScoped()]{org$jboss$forge$shell$ShellImpl$commandHolder[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$environment[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$fshRuntime[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$manager[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$parameters[@javax$inject$Inject()@org$jboss$weld$environment$se$bindings$Parameters()]$org$jboss$forge$shell$ShellImpl$postStartup[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$projectContext[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$promptTypeConverter[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$resourceFactory[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$shellConfig[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$shutdown[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$doShell(org$jboss$forge$shell$events$AcceptUserInput[@javax$enterprise$event$Observes(during=IN_PROGRESS,notifyObserver=ALWAYS)])$org$jboss$forge$shell$ShellImpl$init(org$jboss$forge$shell$events$Startup[@javax$enterprise$event$Observes(during=IN_PROGRESS,notifyObserver=ALWAYS)],org$jboss$forge$shell$completer$PluginCommandCompleter)$org$jboss$forge$shell$ShellImpl$teardown(org$jboss$forge$shell$events$Shutdown[@javax$enterprise$event$Observes(during=IN_PROGRESS,notifyObserver=ALWAYS)],javax$enterprise$event$Event<org$jboss$forge$shell$events$PreShutdown>)$}_$$_WeldClientProxy.init(org$jboss$weld$bean-classpath-ManagedBean-org$jboss$forge$shell$ShellImpl[@javax$enterprise$context$ApplicationScoped()]{org$jboss$forge$shell$ShellImpl$commandHolder[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$environment[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$fshRuntime[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$manager[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$parameters[@javax$inject$Inject()@org$jboss$weld$environment$se$bindings$Parameters()]$org$jboss$forge$shell$ShellImpl$postStartup[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$projectContext[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$promptTypeConverter[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$resourceFactory[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$shellConfig[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$shutdown[@javax$inject$Inject()]$org$jboss$forge$shell$ShellImpl$doShell(org$jboss$forge$shell$events$AcceptUserInput[@javax$enterprise$event$Observes(during=IN_PROGRESS,notifyObserver=ALWAYS)])$org$jboss$forge$shell$ShellImpl$init(org$jboss$forge$shell$events$Startup[@javax$enterprise$event$Observes(during=IN_PROGRESS,notifyObserver=ALWAYS)],org$jboss$forge$shell$completer$PluginCommandCompleter)$org$jboss$forge$shell$ShellImpl$teardown(org$jboss$forge$shell$events$Shutdown[@javax$enterprise$event$Observes(during=IN_PROGRESS,notifyObserver=ALWAYS)],javax$enterprise$event$Event<org$jboss$forge$shell$events$PreShutdown>)$}_$$_WeldClientProxy.java)
> >>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >>     at
> >>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
> >>     at
> >>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
> >>     at java.lang.reflect.Method.invoke(Method.java:616)
> >>     at
> >>
> org.jboss.weld.util.reflection.SecureReflections$13.work(SecureReflections.java:305)
> >>     at
> >>
> org.jboss.weld.util.reflection.SecureReflectionAccess.run(SecureReflectionAccess.java:54)
> >>     at
> >>
> org.jboss.weld.util.reflection.SecureReflectionAccess.runAsInvocation(SecureReflectionAccess.java:163)
> >>     at
> >>
> org.jboss.weld.util.reflection.SecureReflections.invoke(SecureReflections.java:299)
> >>     at
> >>
> org.jboss.weld.introspector.jlr.WeldMethodImpl.invokeOnInstance(WeldMethodImpl.java:188)
> >>     at
> >>
> org.jboss.weld.introspector.ForwardingWeldMethod.invokeOnInstance(ForwardingWeldMethod.java:59)
> >>     at
> >>
> org.jboss.weld.injection.MethodInjectionPoint.invokeOnInstanceWithSpecialValue(MethodInjectionPoint.java:198)
> >>     at
> >>
> org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:270)
> >>     at
> >>
> org.jboss.weld.event.ObserverMethodImpl.sendEvent(ObserverMethodImpl.java:253)
> >>     at
> >>
> org.jboss.weld.event.ObserverMethodImpl.notify(ObserverMethodImpl.java:222)
> >>     at
> >>
> org.jboss.weld.manager.BeanManagerImpl.notifyObservers(BeanManagerImpl.java:632)
> >>     at
> >>
> org.jboss.weld.manager.BeanManagerImpl.fireEvent(BeanManagerImpl.java:619)
> >>     at
> >>
> org.jboss.weld.manager.BeanManagerImpl.fireEvent(BeanManagerImpl.java:613)
> >>     at org.jboss.forge.shell.Bootstrap$2.run(Bootstrap.java:92)
> >>     at java.lang.Thread.run(Thread.java:636)
> >> Caused by:
> >> org.jboss.seam.solder.beanManager.BeanManagerUnavailableException:
> Failed
> >> to
> >> locate BeanManager using any of these providers:
> >> org.jboss.seam.solder.beanManager.DefaultJndiBeanManagerProvider(11),
> >>
> org.jboss.seam.solder.beanManager.ServletContainerJndiBeanManagerProvider(10)
> >>     at
> >>
> org.jboss.seam.solder.beanManager.BeanManagerLocator.getBeanManager(BeanManagerLocator.java:91)
> >>     at
> >>
> org.jboss.seam.render.template.nodes.ContextualNode.init(ContextualNode.java:58)
> >>     at
> >>
> org.jboss.seam.render.template.nodes.ContextualNode.<init>(ContextualNode.java:40)
> >>     at
> >>
> org.jboss.seam.render.template.nodes.IncludeNode.<init>(IncludeNode.java:35)
> >>     at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> >> Method)
> >>     at
> >>
> sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
> >>     at
> >>
> sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
> >>     at java.lang.reflect.Constructor.newInstance(Constructor.java:532)
> >>     at java.lang.Class.newInstance0(Class.java:372)
> >>     at java.lang.Class.newInstance(Class.java:325)
> >>     at
> >>
> org.jboss.seam.render.template.compiler.CustomTemplateCompiler.compileFrom(CustomTemplateCompiler.java:257)
> >>     ... 69 more
> >>
> >>
> >> _______________________________________________
> >> forge-dev mailing list
> >> forge-dev at lists.jboss.org
> >> https://lists.jboss.org/mailman/listinfo/forge-dev
> >>
> >>
> >
> >
> > --
> > Lincoln Baxter, III
> > http://ocpsoft.com
> > http://scrumshark.com
> > "Keep it Simple"
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.jboss.org/pipermail/forge-dev/attachments/20110619/c78dcc68/attachment-0001.html 


More information about the forge-dev mailing list