Author: jaz
Date: Fri Feb 16 12:38:54 2007 New Revision: 508566 URL: http://svn.apache.org/viewvc?view=rev&rev=508566 Log: fixed big bug in using default-value with override parameters; effected groups and implemented services w/ overrides Modified: ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelParam.java 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/src/org/ofbiz/service/ModelParam.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelParam.java?view=diff&rev=508566&r1=508565&r2=508566 ============================================================================== --- ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelParam.java (original) +++ ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelParam.java Fri Feb 16 12:38:54 2007 @@ -63,7 +63,8 @@ public List validators; /** Default value */ - public Object defaultValue; + public String defaultValue; + public Object defaultValueObj; /** Is this Parameter required or optional? Default to false, or required */ public boolean optional = false; 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=508566&r1=508565&r2=508566 ============================================================================== --- ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java (original) +++ ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelService.java Fri Feb 16 12:38:54 2007 @@ -128,7 +128,7 @@ public String permissionMainAction; /** Permission service resource-description */ - public String permissionResourceDescription; + public String permissionResourceDesc; /** Set of services this service implements */ public Set implServices = new ListOrderedSet(); @@ -167,9 +167,14 @@ this.useTransaction = model.useTransaction || true; this.requireNewTransaction = model.requireNewTransaction; this.transactionTimeout = model.transactionTimeout; + this.maxRetry = model.maxRetry; + this.permissionServiceName = model.permissionServiceName; + this.permissionMainAction = model.permissionMainAction; + this.permissionResourceDesc = model.permissionResourceDesc; this.implServices = model.implServices; this.overrideParameters = model.overrideParameters; this.inheritedParameters = model.inheritedParameters(); + this.internalGroup = model.internalGroup; List modelParamList = model.getModelParamList(); Iterator i = modelParamList.iterator(); @@ -775,11 +780,12 @@ if (UtilValidate.isNotEmpty(this.permissionMainAction)) { ctx.put("mainAction", this.permissionMainAction); } - if (UtilValidate.isNotEmpty(this.permissionResourceDescription)) { - ctx.put("resourceDescription", this.permissionResourceDescription); + if (UtilValidate.isNotEmpty(this.permissionResourceDesc)) { + ctx.put("resourceDescription", this.permissionResourceDesc); } else if (thisService != null) { ctx.put("resourceDescription", thisService.name); } + LocalDispatcher dispatcher = dctx.getDispatcher(); Map resp; try { @@ -963,21 +969,31 @@ if (existingParam != null) { // now re-write the parameters - if (overrideParam.type != null && overrideParam.type.length() > 0) { + if (UtilValidate.isNotEmpty(overrideParam.type)) { existingParam.type = overrideParam.type; } - if (overrideParam.mode != null && overrideParam.mode.length() > 0) { + if (UtilValidate.isNotEmpty(overrideParam.mode)) { existingParam.mode = overrideParam.mode; } - if (overrideParam.entityName != null && overrideParam.entityName.length() > 0) { + if (UtilValidate.isNotEmpty(overrideParam.entityName)) { existingParam.entityName = overrideParam.entityName; } - if (overrideParam.fieldName != null && overrideParam.fieldName.length() > 0) { + if (UtilValidate.isNotEmpty(overrideParam.fieldName)) { existingParam.fieldName = overrideParam.fieldName; } - if (overrideParam.formLabel != null && overrideParam.formLabel.length() > 0) { + if (UtilValidate.isNotEmpty(overrideParam.formLabel)) { existingParam.formLabel = overrideParam.formLabel; } + if (overrideParam.defaultValue != null) { + existingParam.defaultValue = overrideParam.defaultValue; + existingParam.optional = true; + if (overrideParam.defaultValueObj == null) { + existingParam.defaultValueObj = this.convertDefaultValue(this.name, overrideParam.name, + existingParam.type, overrideParam.defaultValue); + } else { + existingParam.defaultValueObj = overrideParam.defaultValueObj; + } + } if (overrideParam.overrideFormDisplay) { existingParam.formDisplay = overrideParam.formDisplay; } @@ -994,6 +1010,18 @@ // set the flag so we don't do this again this.inheritedParameters = true; } + } + + protected Object convertDefaultValue(String serviceName, String name, String type, String value) { + Object converted; + try { + converted = ObjectType.simpleTypeConvert(value, type, null, null, false); + } catch (Exception e) { + Debug.logWarning("Service [" + serviceName + "] attribute [" + name + "] default value could not be converted to type [" + type + "]", module); + return value; + } + + return converted; } public Document toWSDL(String locationURI) throws WSDLException { 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=508566&r1=508565&r2=508566 ============================================================================== --- ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelServiceReader.java (original) +++ ofbiz/trunk/framework/service/src/org/ofbiz/service/ModelServiceReader.java Fri Feb 16 12:38:54 2007 @@ -68,7 +68,7 @@ protected DispatchContext dctx = null; public static ModelServiceReader getModelServiceReader(URL readerURL, DispatchContext dctx) { - ModelServiceReader reader = null; + ModelServiceReader reader; // if ( readersUrl.containsKey(readerURL) ) <-- this is unnecessary as it will return null below if not found reader = (ModelServiceReader) readersUrl.get(readerURL); @@ -87,7 +87,7 @@ } public static ModelServiceReader getModelServiceReader(ResourceHandler handler, DispatchContext dctx) { - ModelServiceReader reader = null; + ModelServiceReader reader; reader = (ModelServiceReader) readersLoader.get(handler); if (reader == null) { // don't want to block here @@ -131,7 +131,7 @@ UtilTimer utilTimer = new UtilTimer(); - Document document = null; + Document document; if (this.isFromURL) { // utilTimer.timerString("Before getDocument in file " + readerURL); @@ -170,7 +170,7 @@ utilTimer.timerString("Before start of service loop in file " + readerURL); } else { utilTimer.timerString("Before start of service loop in " + handler); - } ; + } do { if (curChild.getNodeType() == Node.ELEMENT_NODE && "service".equals(curChild.getNodeName())) { @@ -321,20 +321,12 @@ service.description = getCDATADef(serviceElement, "description"); service.nameSpace = getCDATADef(serviceElement, "namespace"); - - // check or an internal group - List group = UtilXml.childElementList(serviceElement, "group"); - if (group != null && group.size() > 0) { - Element groupElement = (Element) group.get(0); - groupElement.setAttribute("name", "_" + service.name + ".group"); - service.internalGroup = new GroupModel(groupElement); - service.invoke = service.internalGroup.getGroupName(); - } - + // contruct the context service.contextInfo = FastMap.newInstance(); this.createPermission(serviceElement, service); this.createPermGroups(serviceElement, service); + this.createGroupDefs(serviceElement, service); this.createImplDefs(serviceElement, service); this.createAutoAttrDefs(serviceElement, service); this.createAttrDefs(serviceElement, service); @@ -366,7 +358,7 @@ if (e != null) { model.permissionServiceName = e.getAttribute("service-name"); model.permissionMainAction = e.getAttribute("main-action"); - model.permissionResourceDescription = e.getAttribute("resource-description"); + model.permissionResourceDesc = e.getAttribute("resource-description"); model.auth = true; // auth is always required when permissions are set } } @@ -416,6 +408,17 @@ } } + protected void createGroupDefs(Element baseElement, ModelService service) { + List group = UtilXml.childElementList(baseElement, "group"); + if (group != null && group.size() > 0) { + Element groupElement = (Element) group.get(0); + groupElement.setAttribute("name", "_" + service.name + ".group"); + service.internalGroup = new GroupModel(groupElement); + service.invoke = service.internalGroup.getGroupName(); + Debug.logWarning("Created INTERNAL GROUP model [" + service.internalGroup + "]", module); + } + } + protected void createImplDefs(Element baseElement, ModelService service) { List implElements = UtilXml.childElementList(baseElement, "implements"); Iterator implIter = implElements.iterator(); @@ -539,7 +542,10 @@ // default value String defValue = attribute.getAttribute("default-value"); if (UtilValidate.isNotEmpty(defValue)) { - param.defaultValue = this.convertDefaultValue(service.name, param.name, param.type, defValue); + param.defaultValue = defValue; + if (param.type != null) { + param.defaultValueObj = service.convertDefaultValue(service.name, param.name, param.type, defValue); + } param.optional = true; } @@ -559,7 +565,7 @@ } // Add the default optional parameters - ModelParam def = null; + ModelParam def; // responseMessage def = new ModelParam(); @@ -629,7 +635,7 @@ ModelParam param = service.getParam(name); boolean directToParams = true; if (param == null) { - if (service.implServices.size() > 0 && !service.inheritedParameters) { + if (!service.inheritedParameters && (service.implServices.size() > 0 || "group".equals(service.engineName))) { // create a temp def to place in the ModelService // this will get read when we read implemented services directToParams = false; @@ -669,7 +675,10 @@ // default value String defValue = attribute.getAttribute("default-value"); if (UtilValidate.isNotEmpty(defValue)) { - param.defaultValue = this.convertDefaultValue(service.name, param.name, param.type, defValue); + param.defaultValue = defValue; + if (param.type != null) { + param.defaultValueObj = service.convertDefaultValue(service.name, param.name, param.type, defValue); + } param.optional = true; } @@ -733,17 +742,5 @@ } return document; - } - - protected Object convertDefaultValue(String serviceName, String name, String type, String value) { - Object converted; - try { - converted = ObjectType.simpleTypeConvert(value, type, null, null, false); - } catch (Exception e) { - Debug.logWarning("Service [" + serviceName + "] attribute [" + name + "] default value could not be converted to type [" + type + "]", module); - return value; - } - - return converted; } } |
Free forum by Nabble | Edit this page |