Hi Andrew
I can't be sure but does this commit reslove this jira issue?
https://issues.apache.org/jira/browse/OFBIZ-309
Thanks
Scott
[EMAIL PROTECTED] wrote:
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);
}
}