[
https://issues.apache.org/jira/browse/OFBIZ-309?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Leon Torres updated OFBIZ-309:
------------------------------
Attachment: services.patch
Hi Scott, thanks for looking into this.
First, that diff doesn't have anything to do with this issue, although it helped me pinpoint the real problem, which is this:
<xs:attributeGroup name="attlist.implements">
<xs:attribute type="xs:string" name="service" use="required"/>
<xs:attribute name="optional" default="true">
According to this snippet from services.xsd and the code that handles cloning the optional attributes, OFBiz SVN considers all interfaces to be optional. That is, if you were to implement a service, by default all of its attributes will be optional="true". If you had a required attribute in the service, it gets overruled.
This is wrong.
Previously, attributes were inherited as-is, preserving the optional setting for each attribute. That is if you have a service that has a required attribute, then implementing the service will preserve that. Thus, this change ended up breaking a lot of services.
I've attached a patch to show what the expected behavior should be. Since this is a change in behavior, it needs to be discussed some more.
Thanks again for the help. :-)
> If a service is implemented as an interface, its settings for optional attributes are ignored!
> ----------------------------------------------------------------------------------------------
>
> Key: OFBIZ-309
> URL:
https://issues.apache.org/jira/browse/OFBIZ-309> Project: OFBiz (The Open for Business Project)
> Issue Type: Bug
> Components: framework
> Affects Versions: SVN trunk
> Reporter: Leon Torres
> Priority: Critical
> Attachments: services.patch
>
>
> This is bad:
> If a service has some attributes with optional="false" and is implemented with <implements service="">, the settings for optional are ignored and default to "true" instead.
> As an example, look up the service definition for upsRateEstimate in webtools and compare to the service that it implements, calcShipmentEstimateInterface. The interface defines a few optional fields as false, which show up correctly for calcShipmentEstimateInterface but are all set to true in upsRateEstimate.
> It used to work, something must have broken it.
--
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.