i suggest that you check that the parameter type matches exactly the method call signature: the CallMethodRule is very particular about the type parameter.

- robert

On Thursday, August 28, 2003, at 11:16 AM, [EMAIL PROTECTED]
com wrote:

I try your solution but I still have the same error
"java.lang.NoSuchMethodException: No such accessible method:..."
With :
Class [] params = {com.arso.trelaze.socle.persistance.Reader.class};
digester.addCallMethod( "acces/reader", "setReader", 1, params );
digester.addCallParam( "acces/reader", 0, true );

The error occurs even if I specify our not the params kind.

At the moment I found an alternative which work. I use
digester.addSetNext( "acces/reader", "setReader" ); rather than an
addCallMethod . It is a fonctionnal solution but not really elegant.

So if some one have a better way ...

Nicolas





"Carsten Kaiser" <[EMAIL PROTECTED]>
28/08/2003 11:34
Veuillez r�pondre � "Jakarta Commons Users List"


Pour : "Jakarta Commons Users List" <[EMAIL PROTECTED] org> cc : Objet : AW: [digester] interface and setter


So I think the problem is, that the CallMethod rule does not expect any parameters since you have specified: 1. no parameters 2. there is no body text to retrieve the parameter value from

I guess it will help, if you specify

          1. digester.addCallMethod("access/reader", "setReader", 1);
          2. digester.addCallParam("access/reader", 0, true);

so that your RWClass instance will be taken from the stack to tell the
call method rule to invoke setReader(RWClass) respectively
setReader(Object)
later on.

Hope this solves your problem!!!

Regards,
CK



-----Urspr�ngliche Nachricht-----
Von: [EMAIL PROTECTED]
[mailto:[EMAIL PROTECTED]
Gesendet: Do 28.08.2003 10:46
An: Jakarta Commons Users List
Cc:
Betreff: [digester] interface and setter



                 I have a class that have 2 private attributes Reader and
Writer who define
                 getter and setter methodes

                 I use an factory to instanciate attributes class. I
define it like this :

                 <acces name="SuivitServices">
                       <reader
classe="com.arso.trelaze.socle.persistance.RWClass"/>
                       <writer
classe="com.arso.trelaze.socle.persistance.RWClass"/>
                 </acces>

                 I call factories for the reader and writer to instanciate
the good class :

                 digester.addFactoryCreate( "acces/reader",
 "com.arso.trelaze.socle.persistance.ReaderFactory" );

                 It works perfect I get an RWClass who implement both the
reader interface
                 and the writer interface.
                 But when I try to call the setter void setReader(Reader
reader) with the
                 rule :
                 digester.addCallMethod( "acces/reader", "setReader", 0 )
;
                 I had the following error :

                 java.lang.NoSuchMethodException: No such accessible
method: setReader() on
                 object: com.arso.trelaze.socle.persistance.RWClass
                         at

org.apache.commons.digester.Digester.createSAXException(Digester.java:2383)
                         at

org.apache.commons.digester.Digester.createSAXException(Digester.java:2409)
                         at
 org.apache.commons.digester.Digester.endElement(Digester.java:1067)
                         at
org.apache.xerces.parsers.AbstractSAXParser.endElement(Unknown
                 Source)
                         at
 org.apache.xerces.parsers.AbstractXMLDocumentParser.emptyElement(Unknown
                 Source)
                         at

org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanStartElement
(Unknown
                 Source)
                         at

org.apache.xerces.impl.XMLDocumentFragmentScannerImpl$FragmentContentDispatcher.
dispatch(Unknown
                 Source)
                         at

org.apache.xerces.impl.XMLDocumentFragmentScannerImpl.scanDocument(Unknown
                 Source)
                         at
org.apache.xerces.parsers.DTDConfiguration.parse(Unknown
                 Source)
                         at
org.apache.xerces.parsers.DTDConfiguration.parse(Unknown
                 Source)
                         at
org.apache.xerces.parsers.XMLParser.parse(Unknown Source)
                         at
org.apache.xerces.parsers.AbstractSAXParser.parse(Unknown
                 Source)
                         at
org.apache.commons.digester.Digester.parse(Digester.java:1600)
                         at

com.arso.trelaze.socle.persistance.ConfigurationLoader.chargerConfiguration(
ConfigurationLoader.java:90)

                 I think it was an introspection error : it try to find a
void
                 setReader(RWClass reader) and don't find it but how could
I do to make
                 digester calling the good setter ?
                 I try to define it has void setReader(Object reader) but
I had the same
                 error.

                 I am new to digester so sorry if it is an evidence for
you.

                 thanks
                 Nicolas

 ---------------------------------------------------------------------
                 To unsubscribe, e-mail:
[EMAIL PROTECTED]
                 For additional commands, e-mail:
[EMAIL PROTECTED]




--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Reply via email to