Hi,

I was converting some components from T5.2 to T5.3 and I came across
some confusing behaviour / error messages. The following replicates
what I found:

If you put the following in your module - i.e. contributing to the new
ComponentClassTransformWorker2

@Contribute(ComponentClassTransformWorker2.class)
public static void
notMetaWorkerContributions(OrderedConfiguration<ComponentClassTransformWorker2>
configuration) {
        configuration.add("NotMetaWorker", new ComponentClassTransformWorker2() 
{
                public void transform(PlasticClass plasticClass,
TransformationSupport support, MutableComponentModel model) {}
        });
}

then you receive the following error message about trying to
contribute a MetaWorker...?

Registry - Service 'MetaWorker' is configured using
org.apache.tapestry5.ioc.MappedConfiguration, not
org.apache.tapestry5.ioc.OrderedConfiguration.
Registry - Operations trace:
Registry - [ 1] Constructing instance of page class
com.alienfactory.thag.web.pages.Index
Registry - [ 2] Creating ComponentAssembler for
com.alienfactory.thag.web.pages.Index
Registry - [ 3] Creating instantiator for component class
com.alienfactory.thag.web.pages.Index
Registry - [ 4] Running component class transformations on
com.alienfactory.thag.web.base.ArticlePageBase
Registry - [ 5] Realizing service MetaWorker
Registry - [ 6] Invoking service creator
org.apache.tapestry5.internal.services.meta.MetaWorkerImpl(Map) (at
MetaWorkerImpl.java:33) via
org.apache.tapestry5.services.TapestryModule.bind(ServiceBinder) (at
TapestryModule.java:303)
Registry - [ 7] Invoking constructor
org.apache.tapestry5.internal.services.meta.MetaWorkerImpl(Map) (at
MetaWorkerImpl.java:33) via
org.apache.tapestry5.services.TapestryModule.bind(ServiceBinder) (at
TapestryModule.java:303)
Registry - [ 8] Determining injection value for parameter #1 (java.util.Map)
Registry - [ 9] Collecting mapped configuration for service MetaWorker
Registry - [10] Invoking method
com.alienfactory.thag.web.services.ThagModule.contributeComponentClassTransformWorker(OrderedConfiguration)
(at ThagModule.java:81).
Registry - [11] Determining injection value for parameter #1
(org.apache.tapestry5.ioc.OrderedConfiguration)
MetaWorker - Construction of service MetaWorker failed: Error invoking
constructor org.apache.tapestry5.internal.services.meta.MetaWorkerImpl(Map)
(at MetaWorkerImpl.java:33) via
org.apache.tapestry5.services.TapestryModule.bind(ServiceBinder) (at
TapestryModule.java:303) (for service 'MetaWorker'): Error invoking
service contribution method
com.alienfactory.thag.web.services.ThagModule.contributeComponentClassTransformWorker(OrderedConfiguration):
Service 'MetaWorker' is configured using
org.apache.tapestry5.ioc.MappedConfiguration, not
org.apache.tapestry5.ioc.OrderedConfiguration.

So I removed the @Contribute annotation and tried the method name
convention and received:

public static void contributeComponentClassTransformWorker2(...)

java.lang.IllegalArgumentException: Contribution
com.alienfactory.thag.web.services.ThagModule.contributeComponentClassTransformWorker2(OrderedConfiguration)
(at ThagModule.java:79) is for service
'ComponentClassTransformWorker2', which does not exist.

Trying the older deprecated ComponentClassTransformWorker gives an
(expected) error:

@Contribute(ComponentClassTransformWorker.class)
public static void notMetaWorkerContributions(...)

java.lang.IllegalArgumentException: Contribution
com.alienfactory.thag.web.services.ThagModule.notMetaWorkerContributions(OrderedConfiguration)
(at ThagModule.java:82) is for service 'interface
org.apache.tapestry5.services.ComponentClassTransformWorker' qualified
with marker annotations [], which does not exist.

Finally, if you try the method name convention for the deprecated
ComponentClassTransformWorker then all works fine:

public static void
contributeComponentClassTransformWorker(OrderedConfiguration<ComponentClassTransformWorker2>
configuration) {
        configuration.add("NotMetaWorker", new ComponentClassTransformWorker2() 
{
                public void transform(PlasticClass plasticClass,
TransformationSupport support, MutableComponentModel model) {}
        });
}

Can anyone explain what is going on? For it made the upgrade a little tricky.

I did find the following in TapestryModule which explains why only the
deprecated service exists but my T5-IoC foo fell short of deciphering
the other error messages.

@Marker(Primary.class)
public ComponentClassTransformWorker2 buildComponentClassTransformWorker(
    List<ComponentClassTransformWorker2> configuration) {
        return chainBuilder.build(ComponentClassTransformWorker2.class,
configuration);
}

Cheers,

Steve.

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

Reply via email to