[ 
https://issues.apache.org/jira/browse/AXIS2-5072?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13051076#comment-13051076
 ] 

Jason Tholstrup commented on AXIS2-5072:
----------------------------------------

I'd ask that you reconsider opening this issue as I believe you are 
misinterpreting the JavaBeans specification.  

    The javabeans specification allows for properties to have only a read 
method or only a write method.  In my case, I have a getter and setter pair 
that require an additional parameter (this was not in the sample as I went for 
simplicity).  It is my expectation that since this does not constitute a 
property (it does not meet javaBeans specs) that it would be ignored.  In the 
axis2-1.3 code this was the case.  Other Apache projects follow this 
interpretation as well. For example, BeanUtils (in commons-BeanUtils) would 
simply skip this property if you were to copy one instance of Event to another 
instance.

    Beans are allowed to expose methods which are not properties and read-only 
and write-only are perfectly acceptable.  From the javaBeans specification 
(http://www.oracle.com/technetwork/java/javase/documentation/spec-136004.html) 

Section 2.2
The three most important features of a Java Bean are the set of properties it 
exposes, the set of methods it allows other components to call, and the set of 
events it fires.


Section 8.3.1

By default, we use design patterns to locate properties by looking for methods 
of the form:
public <PropertyType> get<PropertyName>(); public void 
set<PropertyName>(<PropertyType> a);
If we discover a matching pair of “get<PropertyName>” and “set<PropertyName>” 
methods that take and return the same type, then we regard these methods as 
defining a read-write property whose name will be “<propertyName>”. We will use 
the “get<PropertyName>” method to get the property value and the 
“set<PropertyName>” method to set the property value. The pair of methods may 
be located either in the same class or one may be in a base class and the other 
may be in a derived class.

If we find only one of these methods, then we regard it as defining either a 
read-only or a write- only property called “<propertyName>”

By default we assume that properties are neither bound nor constrained (see 
Section 7). So a simple read-write property “foo” might be represented by a 
pair of methods:
public Wombat getFoo(); public void setFoo(Wombat w);


Thanks,
Jason

> BeanUtil bombs on missing setter
> --------------------------------
>
>                 Key: AXIS2-5072
>                 URL: https://issues.apache.org/jira/browse/AXIS2-5072
>             Project: Axis2
>          Issue Type: Bug
>          Components: adb
>    Affects Versions: 1.6.0
>         Environment: OSX
>            Reporter: Jason Tholstrup
>            Assignee: Sagara Gunathunga 
>              Labels: adb, beanutil
>             Fix For: 1.7.0
>
>
> First off, thanks for all your work on axis.
> I am currently upgrading from Axis2 1.3 to version 1.6  and I've run into an 
> issue.  BeanUtil bombs out on a missing setter property that is not in my 
> WSDL when building response objects on my server side code (see stack trace 
> below).  This "modifiedAttribute" property has a signature of 
> isModifiedAttribute(int index) and is not included in any wsdl yet this 
> section still throws an error.  Is there a reason elsewhere in the code where 
> it makes sense to throw an exception if a property does not have a getter and 
> a setter?  To me the appropriate decision would seem to be to ignore anything 
> that did not have both.  This seems to be the decision that my 1.3 version of 
> the code went with since I wasn't seeing this issue before.  Any thoughts 
> would be appreciated. 
> Thanks,
> Jason Tholstrup
> 14:24:32.129 ERROR [http-8080-8]  
> o.a.a.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic line:210 - 
> org.apache.axis2.AxisFault: Property 'modifiedAttribute' in bean class 
> 'com.nicusa.db.tables.Item'is not readable.
> java.lang.RuntimeException: org.apache.axis2.AxisFault: Property 
> 'modifiedAttribute' in bean class 'com.nicusa.db.tables.Item'is not readable.
>       at 
> org.apache.axis2.databinding.utils.BeanUtil.getPropertyQnameList(BeanUtil.java:276)
>  ~[axis2-adb-1.6.0.jar:1.6.0]
>       at 
> org.apache.axis2.databinding.utils.BeanUtil.getPropertyQnameList(BeanUtil.java:129)
>  ~[axis2-adb-1.6.0.jar:1.6.0]
>       at 
> org.apache.axis2.databinding.utils.BeanUtil.getPullParser(BeanUtil.java:72) 
> ~[axis2-adb-1.6.0.jar:1.6.0]
>       at 
> org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl.processProperties(ADBXMLStreamReaderImpl.java:994)
>  ~[axis2-adb-1.6.0.jar:1.6.0]
>       at 
> org.apache.axis2.databinding.utils.reader.ADBXMLStreamReaderImpl.next(ADBXMLStreamReaderImpl.java:850)
>  ~[axis2-adb-1.6.0.jar:1.6.0]
>       at org.apache.axis2.util.StreamWrapper.next(StreamWrapper.java:71) 
> ~[axis2-kernel-1.6.0.jar:1.6.0]
>       at 
> org.apache.axiom.om.impl.builder.StAXOMBuilder.parserNext(StAXOMBuilder.java:681)
>  ~[axiom-api-1.2.11.jar:1.2.11]
>       at 
> org.apache.axiom.om.impl.builder.StAXOMBuilder.next(StAXOMBuilder.java:214) 
> ~[axiom-api-1.2.11.jar:1.2.11]
>       at 
> org.apache.axiom.om.impl.llom.OMSerializableImpl.build(OMSerializableImpl.java:78)
>  ~[axiom-impl-1.2.11.jar:1.2.11]
>       at 
> org.apache.axiom.om.impl.llom.OMElementImpl.build(OMElementImpl.java:722) 
> ~[axiom-impl-1.2.11.jar:1.2.11]
>       at 
> org.apache.axiom.om.impl.llom.OMElementImpl.detach(OMElementImpl.java:700) 
> ~[axiom-impl-1.2.11.jar:1.2.11]
>       at 
> org.apache.axiom.om.impl.llom.OMNodeImpl.setParent(OMNodeImpl.java:105) 
> ~[axiom-impl-1.2.11.jar:1.2.11]
>       at 
> org.apache.axiom.om.impl.llom.OMElementImpl.addChild(OMElementImpl.java:296) 
> ~[axiom-impl-1.2.11.jar:1.2.11]
>       at 
> org.apache.axiom.om.impl.llom.OMElementImpl.addChild(OMElementImpl.java:212) 
> ~[axiom-impl-1.2.11.jar:1.2.11]
>       at 
> org.apache.axis2.rpc.receivers.RPCUtil.processResponse(RPCUtil.java:105) 
> ~[axis2-adb-1.6.0.jar:1.6.0]
>       at 
> org.apache.axis2.rpc.receivers.RPCUtil.processResponseAsDocLitWrapped(RPCUtil.java:456)
>  ~[axis2-adb-1.6.0.jar:1.6.0]
>       at 
> org.apache.axis2.rpc.receivers.RPCMessageReceiver.invokeBusinessLogic(RPCMessageReceiver.java:153)
>  ~[axis2-adb-1.6.0.jar:1.6.0]
>       at 
> org.apache.axis2.receivers.AbstractInOutMessageReceiver.invokeBusinessLogic(AbstractInOutMessageReceiver.java:40)
>  [axis2-kernel-1.6.0.jar:1.6.0]
>       at 
> org.apache.axis2.receivers.AbstractMessageReceiver.receive(AbstractMessageReceiver.java:110)
>  [axis2-kernel-1.6.0.jar:1.6.0]
>       at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:181) 
> [axis2-kernel-1.6.0.jar:1.6.0]
>       at 
> org.apache.axis2.transport.http.HTTPTransportUtils.processHTTPPostRequest(HTTPTransportUtils.java:172)
>  [axis2-transport-http-1.6.0.jar:na]
>       at 
> org.apache.axis2.transport.http.AxisServlet.doPost(AxisServlet.java:146) 
> [axis2-transport-http-1.6.0.jar:na]
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:637) 
> [servlet-api.jar:na]
>       at javax.servlet.http.HttpServlet.service(HttpServlet.java:717) 
> [servlet-api.jar:na]
>       at 
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
>  [catalina.jar:6.0.29]
>       at 
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
>  [catalina.jar:6.0.29]
>       at 
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
>  [catalina.jar:6.0.29]
>       at 
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
>  [catalina.jar:6.0.29]
>       at 
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127) 
> [catalina.jar:6.0.29]
>       at 
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102) 
> [catalina.jar:6.0.29]
>       at 
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
>  [catalina.jar:6.0.29]
>       at 
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:298) 
> [catalina.jar:6.0.29]
>       at 
> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:857) 
> [tomcat-coyote.jar:6.0.29]
>       at 
> org.apache.coyote.http11.Http11Protocol$Http11ConnectionHandler.process(Http11Protocol.java:588)
>  [tomcat-coyote.jar:6.0.29]
>       at 
> org.apache.tomcat.util.net.JIoEndpoint$Worker.run(JIoEndpoint.java:489) 
> [tomcat-coyote.jar:6.0.29]
>       at java.lang.Thread.run(Thread.java:680) [na:1.6.0_24]
> Caused by: org.apache.axis2.AxisFault: Property 'modifiedAttribute' in bean 
> class 'com.nicusa.db.tables.Item'is not readable.
>       at 
> org.apache.axis2.databinding.utils.BeanUtil.getPropertyQnameList(BeanUtil.java:189)
>  ~[axis2-adb-1.6.0.jar:1.6.0]
>       ... 35 common frames omitted

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira



---------------------------------------------------------------------
To unsubscribe, e-mail: java-dev-unsubscr...@axis.apache.org
For additional commands, e-mail: java-dev-h...@axis.apache.org

Reply via email to