svn commit: r492815 - in /ofbiz/trunk/framework/service: dtd/services.xsd src/org/ofbiz/service/ModelService.java src/org/ofbiz/service/ModelServiceReader.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r492815 - in /ofbiz/trunk/framework/service: dtd/services.xsd src/org/ofbiz/service/ModelService.java src/org/ofbiz/service/ModelServiceReader.java

jaz-3
Author: jaz
Date: Thu Jan  4 15:45:08 2007
New Revision: 492815

URL: http://svn.apache.org/viewvc?view=rev&rev=492815
Log:
changed which implement other services to specifiy if the parameters should be optional or default to the inherited service; rather than always being optional.

Modified:
    ofbiz/trunk/framework/service/dtd/services.xsd
    ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java
    ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelServiceReader.java

Modified: ofbiz/trunk/framework/service/dtd/services.xsd
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/dtd/services.xsd?view=diff&rev=492815&r1=492814&r2=492815
==============================================================================
--- ofbiz/trunk/framework/service/dtd/services.xsd (original)
+++ ofbiz/trunk/framework/service/dtd/services.xsd Thu Jan  4 15:45:08 2007
@@ -145,6 +145,15 @@
     </xs:element>
     <xs:attributeGroup name="attlist.implements">
         <xs:attribute type="xs:string" name="service" use="required"/>
+        <xs:attribute type="xs:string" name="optional" default="true">
+            <xs:simpleType>
+                <xs:restriction base="xs:token">
+                    <xs:enumeration value="true"/>
+                    <xs:enumeration value="false"/>
+                </xs:restriction>
+            </xs:simpleType>
+
+        </xs:attribute>
     </xs:attributeGroup>
     <xs:element name="auto-attributes">
         <xs:complexType>

Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java?view=diff&rev=492815&r1=492814&r2=492815
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java Thu Jan  4 15:45:08 2007
@@ -824,7 +824,10 @@
             if (implServices != null && implServices.size() > 0 && dctx != null) {
                 Iterator implIter = implServices.iterator();
                 while (implIter.hasNext()) {
-                    String serviceName = (String) implIter.next();
+                    ModelServiceIface iface = (ModelServiceIface) implIter.next();
+                    String serviceName = iface.getService();
+                    boolean optional = iface.isOptional();
+
                     ModelService model = dctx.getModelService(serviceName);
                     if (model != null) {
                         Iterator contextParamIter = model.contextParamList.iterator();
@@ -836,12 +839,17 @@
                              // TODO: this is another case where having different optional/required settings for IN and OUT would be quite valuable...
                              if (!"INOUT".equals(existingParam.mode) && !existingParam.mode.equals(newParam.mode)) {
                                     existingParam.mode = "INOUT";
-                             existingParam.optional = true;
-                             }
+                                    if (existingParam.optional || newParam.optional) {
+                                        existingParam.optional = true;
+                                    }
+                                }
                             } else {
-                                // instead of calling: addParamClone(param), do it here because we want to make the inputs optional and such because earlier services in a group may create the parameters for later
                                 ModelParam newParamClone = new ModelParam(newParam);
-                                newParamClone.optional = true;
+                                if (optional) {
+                                    // default option is to make this optional, however the service can override and
+                                    // force the clone to use the parents setting.
+                                    newParamClone.optional = true;
+                                }
                                 this.addParam(newParamClone);
                             }
                         }

Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelServiceReader.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelServiceReader.java?view=diff&rev=492815&r1=492814&r2=492815
==============================================================================
--- ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelServiceReader.java (original)
+++ ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelServiceReader.java Thu Jan  4 15:45:08 2007
@@ -402,8 +402,10 @@
         while (implIter.hasNext()) {
             Element implement = (Element) implIter.next();
             String serviceName = UtilXml.checkEmpty(implement.getAttribute("service"));
+            boolean optional = UtilXml.checkBoolean(implement.getAttribute("optional"), false);
             if (serviceName.length() > 0)
-                service.implServices.add(serviceName);
+                service.implServices.add(new ModelServiceIface(serviceName, optional));
+                //service.implServices.add(serviceName);
         }
     }