You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@ofbiz.apache.org by "Leon Torres (JIRA)" <ji...@apache.org> on 2007/02/13 21:33:05 UTC

[jira] Updated: (OFBIZ-309) If a service is implemented as an interface, its settings for optional attributes are ignored!

     [ 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.