axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Jason Tholstrup (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (AXIS2-5072) BeanUtil bombs on missing setter
Date Fri, 17 Jun 2011 13:53:48 GMT

    [ 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-unsubscribe@axis.apache.org
For additional commands, e-mail: java-dev-help@axis.apache.org


Mime
View raw message