You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@tapestry.apache.org by jack Nuzbit <fn...@googlemail.com> on 2008/03/04 18:29:31 UTC

beaneditform - java.lang.RuntimeException: No service implements the interface org.apache.tapestry.internal.InternalComponentResources.

Hi All,

I'm trying to use the beaneditform component but i'm getting the following
exception bubbling up. Do i have to create a Service to implement the
InternalComponentResources class?
I can't find anything about this in any documentation so i'm inclined to
think i've misconfigured something but could anybody shed any light on where
i might be going wrong.

...
Caused by: org.apache.tapestry.ioc.internal.util.TapestryException:
Exception instantiating instance of
uk.co.myapp.tapestry.pages.account.LoginForm (for component 'account/Login:
beaneditform.editor'): Error invoking constructor
uk.co.myapp.tapestry.pages.account.LoginForm(InternalComponentResources)
(for service 'BeanModelSource'): No service implements the interface
org.apache.tapestry.internal.InternalComponentResources. [at
classpath:org/apache/tapestry/corelib/components/BeanEditForm.tml, line 8,
column 81]
        at
org.apache.tapestry.internal.structure.ComponentPageElementImpl.invoke(
ComponentPageElementImpl.java:884)
        at
org.apache.tapestry.internal.structure.ComponentPageElementImpl.access$100(
ComponentPageElementImpl.java:54)
        at
org.apache.tapestry.internal.structure.ComponentPageElementImpl$13.render(
ComponentPageElementImpl.java:482)
        at org.apache.tapestry.internal.services.RenderQueueImpl.run(
RenderQueueImpl.java:63)
        ... 65 more
Caused by: org.apache.tapestry.ioc.internal.util.TapestryException:
Exception instantiating instance of
uk.co.myapp.tapestry.pages.account.LoginForm (for component 'account/Login:
beaneditform.editor'): Error invoking constructor
uk.co.myapp.tapestry.pages.account.LoginForm(InternalComponentResources)
(for service 'BeanModelSource'): No service implements the interface
org.apache.tapestry.internal.InternalComponentResources. [at
classpath:org/apache/tapestry/corelib/components/BeanEditForm.tml, line 8,
column 81]
        at org.apache.tapestry.corelib.components.BeanEditor.doPrepare(
BeanEditor.java:151)
        at org.apache.tapestry.corelib.components.BeanEditor$Prepare.execute
(BeanEditor.java:46)
        at org.apache.tapestry.corelib.components.BeanEditor$Prepare.execute
(BeanEditor.java:40)
        at
org.apache.tapestry.corelib.internal.FormSupportImpl.storeAndExecute(
FormSupportImpl.java:116)
        at org.apache.tapestry.corelib.components.BeanEditor.setupRender(
BeanEditor.java:125)
        at org.apache.tapestry.corelib.components.BeanEditor.setupRender(
BeanEditor.java)
        at
org.apache.tapestry.internal.structure.ComponentPageElementImpl$13$1.run(
ComponentPageElementImpl.java:478)
        at
org.apache.tapestry.internal.structure.ComponentPageElementImpl.invoke(
ComponentPageElementImpl.java:874)
        ... 68 more
Caused by: java.lang.RuntimeException: Error invoking constructor
uk.co.myapp.tapestry.pages.account.LoginForm(InternalComponentResources)
(for service 'BeanModelSource'): No service implements the interface
org.apache.tapestry.internal.InternalComponentResources.
        at
org.apache.tapestry.ioc.internal.ConstructorServiceCreator.createObject(
ConstructorServiceCreator.java:62)
        at org.apache.tapestry.ioc.internal.ServiceResourcesImpl.autobuild(
ServiceResourcesImpl.java:123)
        at org.apache.tapestry.internal.beaneditor.BeanModelImpl.newInstance
(BeanModelImpl.java:75)
        at org.apache.tapestry.corelib.components.BeanEditor.doPrepare(
BeanEditor.java:144)
        ... 75 more
Caused by: java.lang.RuntimeException: No service implements the interface
org.apache.tapestry.internal.InternalComponentResources.
        at org.apache.tapestry.ioc.internal.RegistryImpl.getService(
RegistryImpl.java:517)
        at
org.apache.tapestry.ioc.internal.services.MasterObjectProviderImpl.provide(
MasterObjectProviderImpl.java:46)
        at
$MasterObjectProvider_1187ad554bb.provide($MasterObjectProvider_1187ad554bb.java)
        at org.apache.tapestry.ioc.internal.RegistryImpl.getObject(
RegistryImpl.java:621)
        at org.apache.tapestry.ioc.internal.RegistryImpl.getObject(
RegistryImpl.java:675)
        at org.apache.tapestry.ioc.internal.ObjectLocatorImpl.getObject(
ObjectLocatorImpl.java:50)
        at
org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParameterValue(
InternalUtils.java:209)
        at
org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParameters(
InternalUtils.java:239)
        at
org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParametersForConstructor
(InternalUtils.java:227)
        at
org.apache.tapestry.ioc.internal.ConstructorServiceCreator.createObject(
ConstructorServiceCreator.java:46)
        ... 78 more


I'm using the tapestry 5.0.11-snapshot.
I've got a very simple page:

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
Login:
<t:beaneditform object="loginForm"/>
</html>


And a similarly simple form:

package mytapestry.pages.account;
import org.apache.tapestry.internal.InternalComponentResources;
public class LoginForm {

    private String emailAddress;
    private String password;
    public String getEmailAddress() {
        return emailAddress;
    }
    public void setEmailAddress(String emailAddress) {
        this.emailAddress = emailAddress;
    }
    public String getPassword() {
        return password;
    }
    public void setPassword(String password) {
        this.password = password;
    }
}


Any help would be much appreciated,
Cheers,

Jack

Re: beaneditform - java.lang.RuntimeException: No service implements the interface org.apache.tapestry.internal.InternalComponentResources.

Posted by Howard Lewis Ship <hl...@gmail.com>.
May be related to TAPESTRY-2229, which was just fixed this morning.

On Tue, Mar 4, 2008 at 12:50 PM, jack Nuzbit <fn...@googlemail.com> wrote:
> Hi Marcus, looks like this is tapestry 5.0.11-SNAPSHOT specific. My fault
>  for being too eager.
>  I switched over to 5.0.10 and everything works fine.
>
>  In case this is a bug and not just a work in progress, to recreate it just
>  create a new project with the tapestry 5 archetype, change the tapestry
>  version to 5.0.11-SNAPSHOT
>
>  Add a form to the prebuilt Start class
>
>  public class Start
>  {
>     private MyForm myForm;
>     public Date getCurrentTime()
>     {
>         return new Date();
>     }
>     public static class MyForm {
>         private String myField;
>         public String getMyField() {
>             return myField;
>         }
>         public void setMyField(String myField) {
>             this.myField = myField;
>         }
>     }
>     public MyForm getMyForm() {
>         return myForm;
>     }
>    public void setMyForm(MyForm myForm) {
>         this.myForm = myForm;
>     }
>  }
>
>  Add the beaneditform to the Start.tml file
>
>  <t:beaneditform object="myForm"/>
>
>  mvn jetty:run and you should get the exception.
>
>  Cheers,
>
>  Jack
>
>
>
>
>  On Tue, Mar 4, 2008 at 6:36 PM, Marcus <mv...@gmail.com> wrote:
>
>  > Hi Jack,
>  >
>  > Can you post the code of this class?
>  >
>  > <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
>  > Login:
>  > <t:beaneditform object="loginForm"/>
>  > </html>
>  >
>  > maybe the problem is there.
>  >
>  > Marcus
>  >
>



-- 
Howard M. Lewis Ship

Creator Apache Tapestry and Apache HiveMind

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org


Re: beaneditform - java.lang.RuntimeException: No service implements the interface org.apache.tapestry.internal.InternalComponentResources.

Posted by jack Nuzbit <fn...@googlemail.com>.
Hi Marcus, looks like this is tapestry 5.0.11-SNAPSHOT specific. My fault
for being too eager.
I switched over to 5.0.10 and everything works fine.

In case this is a bug and not just a work in progress, to recreate it just
create a new project with the tapestry 5 archetype, change the tapestry
version to 5.0.11-SNAPSHOT

Add a form to the prebuilt Start class

public class Start
{
    private MyForm myForm;
    public Date getCurrentTime()
    {
        return new Date();
    }
    public static class MyForm {
        private String myField;
        public String getMyField() {
            return myField;
        }
        public void setMyField(String myField) {
            this.myField = myField;
        }
    }
    public MyForm getMyForm() {
        return myForm;
    }
   public void setMyForm(MyForm myForm) {
        this.myForm = myForm;
    }
}

Add the beaneditform to the Start.tml file

<t:beaneditform object="myForm"/>

mvn jetty:run and you should get the exception.

Cheers,

Jack


On Tue, Mar 4, 2008 at 6:36 PM, Marcus <mv...@gmail.com> wrote:

> Hi Jack,
>
> Can you post the code of this class?
>
> <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
> Login:
> <t:beaneditform object="loginForm"/>
> </html>
>
> maybe the problem is there.
>
> Marcus
>

Re: beaneditform - java.lang.RuntimeException: No service implements the interface org.apache.tapestry.internal.InternalComponentResources.

Posted by Marcus <mv...@gmail.com>.
Hi Jack,

Can you post the code of this class?

<html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
Login:
<t:beaneditform object="loginForm"/>
</html>

maybe the problem is there.

Marcus

Re: beaneditform - java.lang.RuntimeException: No service implements the interface org.apache.tapestry.internal.InternalComponentResources.

Posted by jack Nuzbit <fn...@googlemail.com>.
Thanks for the suggestion Bill, I've just tried adding the following to the
containing page but the problem remains:

@Inject
private ComponentResources _resources;

Am I right in thinking that the beaneditform should work out of the box?


On Tue, Mar 4, 2008 at 6:03 PM, Bill Holloway <bi...@gmail.com>
wrote:

> I believe that the "internal" APIs in T5 are "off limits".  Injecting
> ComponentResources, an interface, doesn't do what you want?
>
> Bill h
>
> On Tue, Mar 4, 2008 at 11:29 AM, jack Nuzbit <fn...@googlemail.com>
> wrote:
> > Hi All,
> >
> >  I'm trying to use the beaneditform component but i'm getting the
> following
> >  exception bubbling up. Do i have to create a Service to implement the
> >  InternalComponentResources class?
> >  I can't find anything about this in any documentation so i'm inclined
> to
> >  think i've misconfigured something but could anybody shed any light on
> where
> >  i might be going wrong.
> >
> >  ...
> >  Caused by: org.apache.tapestry.ioc.internal.util.TapestryException:
> >  Exception instantiating instance of
> >  uk.co.myapp.tapestry.pages.account.LoginForm (for component
> 'account/Login:
> >  beaneditform.editor'): Error invoking constructor
> >  uk.co.myapp.tapestry.pages.account.LoginForm
> (InternalComponentResources)
> >  (for service 'BeanModelSource'): No service implements the interface
> >  org.apache.tapestry.internal.InternalComponentResources. [at
> >  classpath:org/apache/tapestry/corelib/components/BeanEditForm.tml, line
> 8,
> >  column 81]
> >         at
> >  org.apache.tapestry.internal.structure.ComponentPageElementImpl.invoke(
> >  ComponentPageElementImpl.java:884)
> >         at
> >
> org.apache.tapestry.internal.structure.ComponentPageElementImpl.access$100
> (
> >  ComponentPageElementImpl.java:54)
> >         at
> >
> org.apache.tapestry.internal.structure.ComponentPageElementImpl$13.render(
> >  ComponentPageElementImpl.java:482)
> >         at org.apache.tapestry.internal.services.RenderQueueImpl.run(
> >  RenderQueueImpl.java:63)
> >         ... 65 more
> >  Caused by: org.apache.tapestry.ioc.internal.util.TapestryException:
> >  Exception instantiating instance of
> >  uk.co.myapp.tapestry.pages.account.LoginForm (for component
> 'account/Login:
> >  beaneditform.editor'): Error invoking constructor
> >  uk.co.myapp.tapestry.pages.account.LoginForm
> (InternalComponentResources)
> >  (for service 'BeanModelSource'): No service implements the interface
> >  org.apache.tapestry.internal.InternalComponentResources. [at
> >  classpath:org/apache/tapestry/corelib/components/BeanEditForm.tml, line
> 8,
> >  column 81]
> >         at org.apache.tapestry.corelib.components.BeanEditor.doPrepare(
> >  BeanEditor.java:151)
> >         at
> org.apache.tapestry.corelib.components.BeanEditor$Prepare.execute
> >  (BeanEditor.java:46)
> >         at
> org.apache.tapestry.corelib.components.BeanEditor$Prepare.execute
> >  (BeanEditor.java:40)
> >         at
> >  org.apache.tapestry.corelib.internal.FormSupportImpl.storeAndExecute(
> >  FormSupportImpl.java:116)
> >         at org.apache.tapestry.corelib.components.BeanEditor.setupRender
> (
> >  BeanEditor.java:125)
> >         at org.apache.tapestry.corelib.components.BeanEditor.setupRender
> (
> >  BeanEditor.java)
> >         at
> >
> org.apache.tapestry.internal.structure.ComponentPageElementImpl$13$1.run(
> >  ComponentPageElementImpl.java:478)
> >         at
> >  org.apache.tapestry.internal.structure.ComponentPageElementImpl.invoke(
> >  ComponentPageElementImpl.java:874)
> >         ... 68 more
> >  Caused by: java.lang.RuntimeException: Error invoking constructor
> >  uk.co.myapp.tapestry.pages.account.LoginForm
> (InternalComponentResources)
> >  (for service 'BeanModelSource'): No service implements the interface
> >  org.apache.tapestry.internal.InternalComponentResources.
> >         at
> >  org.apache.tapestry.ioc.internal.ConstructorServiceCreator.createObject
> (
> >  ConstructorServiceCreator.java:62)
> >         at
> org.apache.tapestry.ioc.internal.ServiceResourcesImpl.autobuild(
> >  ServiceResourcesImpl.java:123)
> >         at
> org.apache.tapestry.internal.beaneditor.BeanModelImpl.newInstance
> >  (BeanModelImpl.java:75)
> >         at org.apache.tapestry.corelib.components.BeanEditor.doPrepare(
> >  BeanEditor.java:144)
> >         ... 75 more
> >  Caused by: java.lang.RuntimeException: No service implements the
> interface
> >  org.apache.tapestry.internal.InternalComponentResources.
> >         at org.apache.tapestry.ioc.internal.RegistryImpl.getService(
> >  RegistryImpl.java:517)
> >         at
> >
> org.apache.tapestry.ioc.internal.services.MasterObjectProviderImpl.provide
> (
> >  MasterObjectProviderImpl.java:46)
> >         at
> >
>  $MasterObjectProvider_1187ad554bb.provide($MasterObjectProvider_1187ad554bb.java)
> >         at org.apache.tapestry.ioc.internal.RegistryImpl.getObject(
> >  RegistryImpl.java:621)
> >         at org.apache.tapestry.ioc.internal.RegistryImpl.getObject(
> >  RegistryImpl.java:675)
> >         at org.apache.tapestry.ioc.internal.ObjectLocatorImpl.getObject(
> >  ObjectLocatorImpl.java:50)
> >         at
> >
> org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParameterValue
> (
> >  InternalUtils.java:209)
> >         at
> >  org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParameters
> (
> >  InternalUtils.java:239)
> >         at
> >
> org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParametersForConstructor
> >  (InternalUtils.java:227)
> >         at
> >  org.apache.tapestry.ioc.internal.ConstructorServiceCreator.createObject
> (
> >  ConstructorServiceCreator.java:46)
> >         ... 78 more
> >
> >
> >  I'm using the tapestry 5.0.11-snapshot.
> >  I've got a very simple page:
> >
> >  <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
> >  Login:
> >  <t:beaneditform object="loginForm"/>
> >  </html>
> >
> >
> >  And a similarly simple form:
> >
> >  package mytapestry.pages.account;
> >  import org.apache.tapestry.internal.InternalComponentResources;
> >  public class LoginForm {
> >
> >     private String emailAddress;
> >     private String password;
> >     public String getEmailAddress() {
> >         return emailAddress;
> >     }
> >     public void setEmailAddress(String emailAddress) {
> >         this.emailAddress = emailAddress;
> >     }
> >     public String getPassword() {
> >         return password;
> >     }
> >     public void setPassword(String password) {
> >         this.password = password;
> >     }
> >  }
> >
> >
> >  Any help would be much appreciated,
> >  Cheers,
> >
> >  Jack
> >
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
> For additional commands, e-mail: users-help@tapestry.apache.org
>
>

Re: beaneditform - java.lang.RuntimeException: No service implements the interface org.apache.tapestry.internal.InternalComponentResources.

Posted by Bill Holloway <bi...@gmail.com>.
I believe that the "internal" APIs in T5 are "off limits".  Injecting
ComponentResources, an interface, doesn't do what you want?

Bill h

On Tue, Mar 4, 2008 at 11:29 AM, jack Nuzbit <fn...@googlemail.com> wrote:
> Hi All,
>
>  I'm trying to use the beaneditform component but i'm getting the following
>  exception bubbling up. Do i have to create a Service to implement the
>  InternalComponentResources class?
>  I can't find anything about this in any documentation so i'm inclined to
>  think i've misconfigured something but could anybody shed any light on where
>  i might be going wrong.
>
>  ...
>  Caused by: org.apache.tapestry.ioc.internal.util.TapestryException:
>  Exception instantiating instance of
>  uk.co.myapp.tapestry.pages.account.LoginForm (for component 'account/Login:
>  beaneditform.editor'): Error invoking constructor
>  uk.co.myapp.tapestry.pages.account.LoginForm(InternalComponentResources)
>  (for service 'BeanModelSource'): No service implements the interface
>  org.apache.tapestry.internal.InternalComponentResources. [at
>  classpath:org/apache/tapestry/corelib/components/BeanEditForm.tml, line 8,
>  column 81]
>         at
>  org.apache.tapestry.internal.structure.ComponentPageElementImpl.invoke(
>  ComponentPageElementImpl.java:884)
>         at
>  org.apache.tapestry.internal.structure.ComponentPageElementImpl.access$100(
>  ComponentPageElementImpl.java:54)
>         at
>  org.apache.tapestry.internal.structure.ComponentPageElementImpl$13.render(
>  ComponentPageElementImpl.java:482)
>         at org.apache.tapestry.internal.services.RenderQueueImpl.run(
>  RenderQueueImpl.java:63)
>         ... 65 more
>  Caused by: org.apache.tapestry.ioc.internal.util.TapestryException:
>  Exception instantiating instance of
>  uk.co.myapp.tapestry.pages.account.LoginForm (for component 'account/Login:
>  beaneditform.editor'): Error invoking constructor
>  uk.co.myapp.tapestry.pages.account.LoginForm(InternalComponentResources)
>  (for service 'BeanModelSource'): No service implements the interface
>  org.apache.tapestry.internal.InternalComponentResources. [at
>  classpath:org/apache/tapestry/corelib/components/BeanEditForm.tml, line 8,
>  column 81]
>         at org.apache.tapestry.corelib.components.BeanEditor.doPrepare(
>  BeanEditor.java:151)
>         at org.apache.tapestry.corelib.components.BeanEditor$Prepare.execute
>  (BeanEditor.java:46)
>         at org.apache.tapestry.corelib.components.BeanEditor$Prepare.execute
>  (BeanEditor.java:40)
>         at
>  org.apache.tapestry.corelib.internal.FormSupportImpl.storeAndExecute(
>  FormSupportImpl.java:116)
>         at org.apache.tapestry.corelib.components.BeanEditor.setupRender(
>  BeanEditor.java:125)
>         at org.apache.tapestry.corelib.components.BeanEditor.setupRender(
>  BeanEditor.java)
>         at
>  org.apache.tapestry.internal.structure.ComponentPageElementImpl$13$1.run(
>  ComponentPageElementImpl.java:478)
>         at
>  org.apache.tapestry.internal.structure.ComponentPageElementImpl.invoke(
>  ComponentPageElementImpl.java:874)
>         ... 68 more
>  Caused by: java.lang.RuntimeException: Error invoking constructor
>  uk.co.myapp.tapestry.pages.account.LoginForm(InternalComponentResources)
>  (for service 'BeanModelSource'): No service implements the interface
>  org.apache.tapestry.internal.InternalComponentResources.
>         at
>  org.apache.tapestry.ioc.internal.ConstructorServiceCreator.createObject(
>  ConstructorServiceCreator.java:62)
>         at org.apache.tapestry.ioc.internal.ServiceResourcesImpl.autobuild(
>  ServiceResourcesImpl.java:123)
>         at org.apache.tapestry.internal.beaneditor.BeanModelImpl.newInstance
>  (BeanModelImpl.java:75)
>         at org.apache.tapestry.corelib.components.BeanEditor.doPrepare(
>  BeanEditor.java:144)
>         ... 75 more
>  Caused by: java.lang.RuntimeException: No service implements the interface
>  org.apache.tapestry.internal.InternalComponentResources.
>         at org.apache.tapestry.ioc.internal.RegistryImpl.getService(
>  RegistryImpl.java:517)
>         at
>  org.apache.tapestry.ioc.internal.services.MasterObjectProviderImpl.provide(
>  MasterObjectProviderImpl.java:46)
>         at
>  $MasterObjectProvider_1187ad554bb.provide($MasterObjectProvider_1187ad554bb.java)
>         at org.apache.tapestry.ioc.internal.RegistryImpl.getObject(
>  RegistryImpl.java:621)
>         at org.apache.tapestry.ioc.internal.RegistryImpl.getObject(
>  RegistryImpl.java:675)
>         at org.apache.tapestry.ioc.internal.ObjectLocatorImpl.getObject(
>  ObjectLocatorImpl.java:50)
>         at
>  org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParameterValue(
>  InternalUtils.java:209)
>         at
>  org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParameters(
>  InternalUtils.java:239)
>         at
>  org.apache.tapestry.ioc.internal.util.InternalUtils.calculateParametersForConstructor
>  (InternalUtils.java:227)
>         at
>  org.apache.tapestry.ioc.internal.ConstructorServiceCreator.createObject(
>  ConstructorServiceCreator.java:46)
>         ... 78 more
>
>
>  I'm using the tapestry 5.0.11-snapshot.
>  I've got a very simple page:
>
>  <html xmlns:t="http://tapestry.apache.org/schema/tapestry_5_0_0.xsd">
>  Login:
>  <t:beaneditform object="loginForm"/>
>  </html>
>
>
>  And a similarly simple form:
>
>  package mytapestry.pages.account;
>  import org.apache.tapestry.internal.InternalComponentResources;
>  public class LoginForm {
>
>     private String emailAddress;
>     private String password;
>     public String getEmailAddress() {
>         return emailAddress;
>     }
>     public void setEmailAddress(String emailAddress) {
>         this.emailAddress = emailAddress;
>     }
>     public String getPassword() {
>         return password;
>     }
>     public void setPassword(String password) {
>         this.password = password;
>     }
>  }
>
>
>  Any help would be much appreciated,
>  Cheers,
>
>  Jack
>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@tapestry.apache.org
For additional commands, e-mail: users-help@tapestry.apache.org