No, I get the exception for all pages, also the ExpcetionReportPage for 
example.

>             
> -------- Original-Nachricht --------
> Datum: Thu, 9 Sep 2010 08:26:05 +0200
> Von: Christophe Cordenier <christophe.corden...@gmail.com>
> An: Tapestry users <users@tapestry.apache.org>
> Betreff: Re: Retrieve ActivationRequestParameters in custom 
> PageResponseRenderer
> 
>             Weird, does you Index page extends a base class ?
> 
> 2010/9/8 Markus Feindler <markus.feind...@gmx.de>
> 
> >  Sorry to bother you, but Im stuck with a DuplicateMemberException:
> > Caused by: java.lang.RuntimeException:
> > javassist.bytecode.DuplicateMemberException: duplicate method:
> > extractRequestParameters in de.wiv.tapestryportlet2.pages.Index
> >    at
> > 
> org.apache.tapestry5.internal.services.InternalClassTransformationImpl.addOverrideOfSuperclassMethod(InternalClassTransformationImpl.java:1458)
> >    at
> > 
> org.apache.tapestry5.internal.services.InternalClassTransformationImpl.findOrOverrideMethod(InternalClassTransformationImpl.java:1412)
> >    at
> > 
> org.apache.tapestry5.internal.services.InternalClassTransformationImpl.findOverrideOrCreateMethod(InternalClassTransformationImpl.java:1397)
> >    at
> > 
> org.apache.tapestry5.internal.services.InternalClassTransformationImpl.getOrCreateMethod(InternalClassTransformationImpl.java:1392)
> >    at
> > 
> org.apache.tapestry5.portlet.services.PortletRequestParameterWorker.transform(PortletRequestParameterWorker.java:48)
> >    at
> > 
> $ComponentClassTransformWorker_12af2cfc4c4.transform($ComponentClassTransformWorker_12af2cfc4c4.java)
> >    at
> > 
> $ComponentClassTransformWorker_12af2cfc4c5.transform($ComponentClassTransformWorker_12af2cfc4c5.java)
> >    at
> > 
> $ComponentClassTransformWorker_12af2cfc4b6.transform($ComponentClassTransformWorker_12af2cfc4b6.java)
> >    at
> > 
> org.apache.tapestry5.internal.services.ComponentClassTransformerImpl$1.run(ComponentClassTransformerImpl.java:194)
> >    ... 250 more
> > Caused by: javassist.bytecode.DuplicateMemberException: duplicate 
> method:
> > extractRequestParameters in de.wiv.tapestryportlet2.pages.Index
> >    at 
> javassist.bytecode.ClassFile.testExistingMethod(ClassFile.java:637)
> >    at javassist.bytecode.ClassFile.addMethod(ClassFile.java:613)
> >    at javassist.CtClassType.addMethod(CtClassType.java:1320)
> >    at
> > 
> org.apache.tapestry5.internal.services.InternalClassTransformationImpl.addOverrideOfSuperclassMethod(InternalClassTransformationImpl.java:1444)
> >    ... 258 more
> >
> > This is my worker:
> >
> > public class PortletRequestParameterWorker implements
> > ComponentClassTransformWorker {
> >
> >    private final ValueEncoderSource valueEncoderSource;
> >    private final ComponentClassCache classCache;
> >    private final RequestParameterContext requestParameterContext;
> >    private final ComponentSource componentSource;
> >
> >    public PortletRequestParameterWorker(ValueEncoderSource
> > valueEncoderSource,
> >            ComponentClassCache classCache, RequestParameterContext
> > requestParameterContext,
> >            ComponentSource componentSource) {
> >        this.valueEncoderSource = valueEncoderSource;
> >        this.classCache = classCache;
> >        this.requestParameterContext = requestParameterContext;
> >        this.componentSource = componentSource;
> >    }
> >
> >    public void transform(final ClassTransformation transformation,
> >            MutableComponentModel model) {
> >
> >
> >  
> transformation.addImplementedInterface(RequestParameterExtractor.class);
> >            TransformMethodSignature extractMethod = new
> > TransformMethodSignature(Modifier.PUBLIC,
> >                    "Map<String, String>", "extractRequestParameters", 
> null,
> > null);
> > //            if (transformation.isDeclaredMethod(extractMethod)) {
> > //                return;
> > //            }
> >            
> transformation.getOrCreateMethod(extractMethod).addAdvice(new
> > ComponentMethodAdvice(){
> >
> >                public void advise(ComponentMethodInvocation invocation) 
> {
> >                    Map<String, String> requestParameters = new
> > HashMap<String, String>();
> >                    for (TransformField field :
> > 
> transformation.matchFieldsWithAnnotation(ActivationRequestParameter.class))
> > {
> >                        String parameterName = getParameterName(field,
> > field.getAnnotation(ActivationRequestParameter.class));
> >                        Class fieldType =
> > classCache.forName(field.getType());
> >                        FieldAccess access = field.getAccess();
> >                        ValueEncoder encoder =
> > valueEncoderSource.getValueEncoder(fieldType);
> >                        Object value =
> > access.read(invocation.getInstance());
> >                        if (value == null)
> >                            continue;
> >                        String clientValue = encoder.toClient(value);
> >                        requestParameters.put(parameterName, 
> clientValue);
> >                    }
> >                    invocation.overrideResult(requestParameters);
> >                }
> >
> >            });
> >    }
> >
> >    private String getParameterName(TransformField field,
> > ActivationRequestParameter annotation)
> >    {
> >        if (annotation.value().equals(""))
> >            return field.getName();
> >
> >        return annotation.value();
> >    }
> >
> > }
> >
> > Any ideas?
> >
> >  Hi !
> >>
> >> Tapestry 5.2 has a brand new API for class manipulation in worker, you
> >> have
> >> to provide the method signature and implement the logic in a
> >> ComponentMethodAdvice (see PropertyWorker sources to have a simple
> >> example)
> >>
> >> HTH
> >>
> >> 2010/9/7 Markus Feindler<markus.feind...@gmx.de>
> >>
> >>   So, I tried to follow your advice, but I don't see how to add a new
> >>> method
> >>> after calling
> >>> "transformation.addImplementedInterface(MyInterface.class)".
> >>> The documentation states to use transformation.getOrCreateMethod, but
> >>> where
> >>> to define the message body?
> >>>
> >>>  Actually,
> >>>
> >>>> I would implement a ClassTransformation and add it to
> >>>> contributeComponentClassTransformWorker (see Tapestry Module), This
> >>>> worker
> >>>> should add and implement an interface that contains the method to
> >>>> extract
> >>>> useful information from the page
> >>>>
> >>>> Then in your PageResponseRenderer, you can use ComponentSource to 
> get
> >>>> the
> >>>> page instance, cast it to your interface and call the method.
> >>>>
> >>>> 2010/9/6 Markus Feindler<markus.feind...@gmx.de>
> >>>>
> >>>>   Thats the class I discovered earlier at work.
> >>>>
> >>>>> Now my question is how to get ClassTransformation and
> >>>>> MutableComponentModel
> >>>>> from the Page Object in the PageResponseRenderer?
> >>>>>
> >>>>> Thanks for you help/hints.
> >>>>>
> >>>>> Regards markus
> >>>>>
> >>>>>  Hi
> >>>>>
> >>>>>  Logic is enclosed in ActivationRequestParameterWorker, i think you 
> can
> >>>>>> adapt
> >>>>>> this to your needs and extract values. At the moment, I don't see 
> any
> >>>>>> other
> >>>>>> way to identify ActivationRequestParameters during link creation.
> >>>>>>
> >>>>>> 2010/9/6 Markus Feindler<markus.feind...@gmx.de>
> >>>>>>
> >>>>>>   i would say you can get them from
> >>>>>>
> >>>>>>  Request directly
> >>>>>>>
> >>>>>>>>  This only works for the current request. I need to get the
> >>>>>>>> parameters,
> >>>>>>>>
> >>>>>>>>  which will be set for the next request/redirect. It would be
> >>>>>>> possible
> >>>>>>> to
> >>>>>>> write get methods for the ActivationRequestParameters, but that 
> would
> >>>>>>> not
> >>>>>>> be
> >>>>>>> the right way. I need to find out how that is solved internally.
> >>>>>>>
> >>>>>>>
> >>>>>>>  Oh sorry, i had mis-read your first message. I didn't get deep 
> into
> >>>>>>> this
> >>>>>>>
> >>>>>>>  new
> >>>>>>>
> >>>>>>>> feature at the time, but at first glance, i would say you can 
> get
> >>>>>>>> them
> >>>>>>>> from
> >>>>>>>> Request directly. Maybe, you can implement a worker that will be 
> in
> >>>>>>>> charge
> >>>>>>>> of implementing an interface that will contain the method that
> >>>>>>>> return
> >>>>>>>> the
> >>>>>>>> values.
> >>>>>>>>
> >>>>>>>> I will go deeper to see if there is not a more simple way of 
> doing
> >>>>>>>> this.
> >>>>>>>>
> >>>>>>>> 2010/9/6 Markus Feindler<markus.feind...@gmx.de>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>
> >>>>>>>>  Thats what Im doing right now for the PageActivationContext, 
> but I
> >>>>>>>> also
> >>>>>>>>
> >>>>>>>>  need the values for the ActivationRequestParameters (introduced 
> in
> >>>>>>>>> 5.2:
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>> 
> http://tapestry.apache.org/tapestry5.2-dev/apidocs/org/apache/tapestry5/annotations/ActivationRequestParameter.html
> >>>>>>>>> ).
> >>>>>>>>>
> >>>>>>>>>  Hi
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>  So why not passivate the page, see 
> PageActivationContextCollector
> >>>>>>>>> ?
> >>>>>>>>>
> >>>>>>>>>  This
> >>>>>>>>>> is
> >>>>>>>>>> how it works to create links.
> >>>>>>>>>>
> >>>>>>>>>> 2010/9/5 Markus Feindler<markus.feind...@gmx.de>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>
> >>>>>>>>>>   No, Im trying to upgrade "my" portlet implementation from 
> 5.1 to
> >>>>>>>>>> 5.2
> >>>>>>>>>>
> >>>>>>>>>>  and
> >>>>>>>>>>> up to now the activationrequestparameters aren't put in the 
> url,
> >>>>>>>>>>> cause
> >>>>>>>>>>> I
> >>>>>>>>>>> have to adjust my former 5.1 custom response renderer. If the
> >>>>>>>>>>> Request
> >>>>>>>>>>> is
> >>>>>>>>>>> an
> >>>>>>>>>>> ActionRequest (see Portlet lifecycle) you can't write output 
> into
> >>>>>>>>>>> a
> >>>>>>>>>>> stream
> >>>>>>>>>>> instead a redirect is done internally in the portlet 
> container.
> >>>>>>>>>>> Therefore
> >>>>>>>>>>> I
> >>>>>>>>>>> have to add the parameters to the ActionReponse
> >>>>>>>>>>> (_actionResponse.setRenderParameter). In order to do so I 
> need to
> >>>>>>>>>>> get
> >>>>>>>>>>> the
> >>>>>>>>>>> parameters.
> >>>>>>>>>>>
> >>>>>>>>>>>  That's not enough details.
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>  -- Josh
> >>>>>>>>>>>
> >>>>>>>>>>>  On Sep 5, 2010, at 9:51 AM, Markus Feindler<
> >>>>>>>>>>>> markus.feind...@gmx.de>
> >>>>>>>>>>>>  wrote:
> >>>>>>>>>>>>
> >>>>>>>>>>>>  Need it for portlet implementation.
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>   Hi
> >>>>>>>>>>>>
> >>>>>>>>>>>>> What is the purpose ? I guess you are dealing with some 
> kind of
> >>>>>>>>>>>>>> dynamic
> >>>>>>>>>>>>>> stuff, please can you give more details ?
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>> 2010/9/5 Markus Feindler<markus.feind...@gmx.de>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>   Hey folks,
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>  I need to access page field values annotated with
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>  ActivationRequestParameters in order to retrieve the 
> values.
> >>>>>>>>>>>>>>> Reflection
> >>>>>>>>>>>>>>> doesnt work, because the fields are private and a
> >>>>>>>>>>>>>>> java.lang.IllegalAccessException is thrown. Whats the 
> right
> >>>>>>>>>>>>>>> way
> >>>>>>>>>>>>>>> to
> >>>>>>>>>>>>>>> retrieve
> >>>>>>>>>>>>>>> the values / activation request parameters?
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> Regards
> >>>>>>>>>>>>>>> Markus
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 
> ---------------------------------------------------------------------
> >>>>>>>>>>>>>>> To unsubscribe, e-mail:
> >>>>>>>>>>>>>>> users-unsubscr...@tapestry.apache.org
> >>>>>>>>>>>>>>> For additional commands, e-mail:
> >>>>>>>>>>>>>>> users-h...@tapestry.apache.org
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>> 
> ---------------------------------------------------------------------
> >>>>>>>>>>>>>>>
> >>>>>>>>>>>>>>>   To unsubscribe, e-mail:
> >>>>>>>>>>>>>> users-unsubscr...@tapestry.apache.org
> >>>>>>>>>>>>>>
> >>>>>>>>>>>>>>  For additional commands, e-mail:
> >>>>>>>>>>>>> users-h...@tapestry.apache.org
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>  
> ---------------------------------------------------------------------
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>  To unsubscribe, e-mail: 
> users-unsubscr...@tapestry.apache.org
> >>>>>>>>>>>>>
> >>>>>>>>>>>>>  For additional commands, e-mail:
> >>>>>>>>>>>> users-h...@tapestry.apache.org
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>>
> >>>>>>>>>>>> 
> ---------------------------------------------------------------------
> >>>>>>>>>>>>
> >>>>>>>>>>>>  To unsubscribe, e-mail: 
> users-unsubscr...@tapestry.apache.org
> >>>>>>>>>>> For additional commands, e-mail: 
> users-h...@tapestry.apache.org
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>
> >>>>>>>>>>>  
> ---------------------------------------------------------------------
> >>>>>>>>>>
> >>>>>>>>>>  To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> >>>>>>>>> For additional commands, e-mail: users-h...@tapestry.apache.org
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>
> >>>>>>>>>  
> ---------------------------------------------------------------------
> >>>>>>>>
> >>>>>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> >>>>>>> For additional commands, e-mail: users-h...@tapestry.apache.org
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>
> >>>>>>>  
> ---------------------------------------------------------------------
> >>>>>>>
> >>>>>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> >>>>> For additional commands, e-mail: users-h...@tapestry.apache.org
> >>>>>
> >>>>>
> >>>>>
> >>>>>  
> ---------------------------------------------------------------------
> >>> To unsubscribe, e-mail: users-unsubscr...@tapestry.apache.org
> >>> For additional commands, e-mail: users-h...@tapestry.apache.org
> >>>
> >>>
> >>>
> >>
> >
> 
> 
> -- 
> Regards,
> Christophe Cordenier.
> 
> Committer on Apache Tapestry 5
> Co-creator of wooki @wookicentral.com
> 
        
-- 
GMX DSL SOMMER-SPECIAL: Surf & Phone Flat 16.000 für nur 19,99 Euro/mtl.!*
http://portal.gmx.net/de/go/dsl

Reply via email to