You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by jo...@apache.org on 2008/04/03 08:06:51 UTC
svn commit: r644179 - in /ofbiz/trunk/framework:
base/src/base/org/ofbiz/base/util/ webapp/src/org/ofbiz/webapp/control/
webtools/src/org/ofbiz/webtools/artifactinfo/
widget/src/org/ofbiz/widget/form/ widget/src/org/ofbiz/widget/screen/
Author: jonesde
Date: Wed Apr 2 23:06:48 2008
New Revision: 644179
URL: http://svn.apache.org/viewvc?rev=644179&view=rev
Log:
Finished form to link/target request artifact info stuff
Modified:
ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java
ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java
ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/FormWidgetArtifactInfo.java
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java
Modified: ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java?rev=644179&r1=644178&r2=644179&view=diff
==============================================================================
--- ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java (original)
+++ ofbiz/trunk/framework/base/src/base/org/ofbiz/base/util/UtilHttp.java Wed Apr 2 23:06:48 2008
@@ -675,6 +675,7 @@
}
public static String getRequestUriFromTarget(String target) {
+ if (target == null || target.length() == 0) return null;
int endOfRequestUri = target.length();
if (target.indexOf('?') > 0) {
endOfRequestUri = target.indexOf('?');
@@ -691,6 +692,7 @@
public static String getWebappMountPointFromTarget(String target) {
int firstChar = 0;
+ if (target == null || target.length() == 0) return null;
if (target.charAt(0) == '/') firstChar = 1;
int pathSep = target.indexOf('/', 1);
String webappMountPoint = null;
Modified: ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java?rev=644179&r1=644178&r2=644179&view=diff
==============================================================================
--- ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java (original)
+++ ofbiz/trunk/framework/webapp/src/org/ofbiz/webapp/control/ConfigXMLReader.java Wed Apr 2 23:06:48 2008
@@ -35,6 +35,7 @@
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.FileUtil;
import org.ofbiz.base.util.GeneralException;
+import org.ofbiz.base.util.UtilHttp;
import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.base.util.UtilXml;
import org.ofbiz.base.util.cache.UtilCache;
@@ -91,6 +92,10 @@
public static Set<String> findControllerFilesWithRequest(String requestUri, String controllerPartialPath) throws GeneralException {
Set<String> allControllerRequestSet = FastSet.newInstance();
+ if (UtilValidate.isEmpty(requestUri)) {
+ return allControllerRequestSet;
+ }
+
String cacheId = controllerPartialPath != null ? controllerPartialPath : "NOPARTIALPATH";
List<ControllerConfig> controllerConfigs = (List<ControllerConfig>) controllerSearchResultsCache.get(cacheId);
@@ -129,6 +134,38 @@
}
return allControllerRequestSet;
+ }
+
+ public static Set<String> findControllerRequestUniqueForTargetType(String target, String urlMode) throws GeneralException {
+ if (UtilValidate.isEmpty(urlMode)) {
+ urlMode = "intra-app";
+ }
+
+ int indexOfDollarSignCurlyBrace = target.indexOf("${");
+ int indexOfQuestionMark = target.indexOf("?");
+ if (indexOfDollarSignCurlyBrace >= 0 && (indexOfQuestionMark < 0 || indexOfQuestionMark > indexOfDollarSignCurlyBrace)) {
+ // we have an expanded string in the requestUri part of the target, not much we can do about that...
+ return null;
+ }
+
+ if ("intra-app".equals(urlMode)) {
+ // look through all controller.xml files and find those with the request-uri referred to by the target
+ String requestUri = UtilHttp.getRequestUriFromTarget(target);
+
+ Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerFilesWithRequest(requestUri, null);
+ // if (controllerLocAndRequestSet.size() > 0) Debug.logInfo("============== In findRequestNamesLinkedtoInWidget, controllerLocAndRequestSet: " + controllerLocAndRequestSet, module);
+ return controllerLocAndRequestSet;
+ } else if ("inter-app".equals(urlMode)) {
+ String webappMountPoint = UtilHttp.getWebappMountPointFromTarget(target);
+ if (webappMountPoint != null) webappMountPoint += "/WEB-INF";
+ String requestUri = UtilHttp.getRequestUriFromTarget(target);
+
+ Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerFilesWithRequest(requestUri, webappMountPoint);
+ // if (controllerLocAndRequestSet.size() > 0) Debug.logInfo("============== In findRequestNamesLinkedtoInWidget, controllerLocAndRequestSet: " + controllerLocAndRequestSet, module);
+ return controllerLocAndRequestSet;
+ } else {
+ return FastSet.newInstance();
+ }
}
/** Site Config Variables */
Modified: ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/FormWidgetArtifactInfo.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/FormWidgetArtifactInfo.java?rev=644179&r1=644178&r2=644179&view=diff
==============================================================================
--- ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/FormWidgetArtifactInfo.java (original)
+++ ofbiz/trunk/framework/webtools/src/org/ofbiz/webtools/artifactinfo/FormWidgetArtifactInfo.java Wed Apr 2 23:06:48 2008
@@ -28,6 +28,7 @@
import org.ofbiz.base.util.Debug;
import org.ofbiz.base.util.GeneralException;
import org.ofbiz.base.util.UtilMisc;
+import org.ofbiz.base.util.UtilURL;
import org.ofbiz.service.ModelService;
import org.ofbiz.widget.form.ModelForm;
import org.xml.sax.SAXException;
@@ -70,7 +71,10 @@
this.populateUsedEntities();
this.populateUsedServices();
this.populateFormExtended();
+ this.populateLinkedRequests();
+ this.populateTargetedRequests();
}
+
protected void populateFormExtended() throws GeneralException {
// populate formThisFormExtends and the reverse-associate cache in the aif
if (this.modelForm.getParentFormName() != null) {
@@ -134,6 +138,43 @@
this.servicesUsedInThisForm.add(aif.getServiceArtifactInfo(serviceName));
// the reverse reference
UtilMisc.addToSetInMap(this, aif.allFormInfosReferringToServiceName, serviceName);
+ }
+ }
+
+ protected void populateLinkedRequests() throws GeneralException{
+ Set<String> allRequestUniqueId = this.modelForm.getLinkedRequestsLocationAndUri();
+
+ for (String requestUniqueId: allRequestUniqueId) {
+ if (requestUniqueId.contains("${")) {
+ continue;
+ }
+
+ if (requestUniqueId.indexOf("#") > -1) {
+ String controllerXmlUrl = requestUniqueId.substring(0, requestUniqueId.indexOf("#"));
+ String requestUri = requestUniqueId.substring(requestUniqueId.indexOf("#") + 1);
+ // the forward reference
+ this.requestsLinkedToInForm.add(aif.getControllerRequestArtifactInfo(UtilURL.fromUrlString(controllerXmlUrl), requestUri));
+ // the reverse reference
+ UtilMisc.addToSetInMap(this, aif.allFormInfosReferringToRequest, requestUniqueId);
+ }
+ }
+ }
+ protected void populateTargetedRequests() throws GeneralException{
+ Set<String> allRequestUniqueId = this.modelForm.getTargetedRequestsLocationAndUri();
+
+ for (String requestUniqueId: allRequestUniqueId) {
+ if (requestUniqueId.contains("${")) {
+ continue;
+ }
+
+ if (requestUniqueId.indexOf("#") > -1) {
+ String controllerXmlUrl = requestUniqueId.substring(0, requestUniqueId.indexOf("#"));
+ String requestUri = requestUniqueId.substring(requestUniqueId.indexOf("#") + 1);
+ // the forward reference
+ this.requestsTargetedByInForm.add(aif.getControllerRequestArtifactInfo(UtilURL.fromUrlString(controllerXmlUrl), requestUri));
+ // the reverse reference
+ UtilMisc.addToSetInMap(this, aif.allFormInfosTargetingRequest, requestUniqueId);
+ }
}
}
Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java?rev=644179&r1=644178&r2=644179&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/form/ModelForm.java Wed Apr 2 23:06:48 2008
@@ -20,28 +20,24 @@
import java.io.IOException;
import java.io.Writer;
-
import java.util.ArrayList;
+import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
-import java.util.LinkedList;
import java.util.List;
import java.util.Map;
-import java.util.TreeMap;
-import java.util.Collection;
import java.util.NoSuchElementException;
import java.util.Set;
+import java.util.TreeMap;
import java.util.TreeSet;
import javolution.util.FastList;
import javolution.util.FastMap;
import javolution.util.FastSet;
-import bsh.EvalError;
-import bsh.Interpreter;
-
import org.ofbiz.base.util.BshUtil;
import org.ofbiz.base.util.Debug;
+import org.ofbiz.base.util.GeneralException;
import org.ofbiz.base.util.UtilMisc;
import org.ofbiz.base.util.UtilValidate;
import org.ofbiz.base.util.UtilXml;
@@ -58,10 +54,13 @@
import org.ofbiz.service.LocalDispatcher;
import org.ofbiz.service.ModelParam;
import org.ofbiz.service.ModelService;
+import org.ofbiz.webapp.control.ConfigXMLReader;
import org.ofbiz.widget.ModelWidget;
-
import org.w3c.dom.Element;
+import bsh.EvalError;
+import bsh.Interpreter;
+
/**
* Widget Library - Form model class
*/
@@ -122,10 +121,10 @@
protected boolean overridenListSize = false;
protected boolean clientAutocompleteFields = true;
- protected List altTargets = new LinkedList();
- protected List<AutoFieldsService> autoFieldsServices = new LinkedList();
- protected List<AutoFieldsEntity> autoFieldsEntities = new LinkedList();
- protected List sortOrderFields = new LinkedList();
+ protected List<AltTarget> altTargets = FastList.newInstance();
+ protected List<AutoFieldsService> autoFieldsServices = FastList.newInstance();
+ protected List<AutoFieldsEntity> autoFieldsEntities = FastList.newInstance();
+ protected List<String> sortOrderFields = FastList.newInstance();
/** This List will contain one copy of each field for each field name in the order
* they were encountered in the service, entity, or form definition; field definitions
@@ -136,23 +135,23 @@
* necessary to use the Map. The Map is used when loading the form definition to keep the
* list clean and implement the override features for field definitions.
*/
- protected List<ModelFormField> fieldList = new LinkedList();
+ protected List<ModelFormField> fieldList = FastList.newInstance();
/** This Map is keyed with the field name and has a ModelFormField for the value; fields
* with conditions will not be put in this Map so field definition overrides for fields
* with conditions is not possible.
*/
- protected Map fieldMap = new HashMap();
+ protected Map<String, ModelFormField> fieldMap = FastMap.newInstance();
/** This is a list of FieldGroups in the order they were created.
* Can also include Banner objects.
*/
- protected List fieldGroupList = new ArrayList();
+ protected List<FieldGroupBase> fieldGroupList = FastList.newInstance();
/** This Map is keyed with the field name and has a FieldGroup for the value.
* Can also include Banner objects.
*/
- protected Map fieldGroupMap = new HashMap();
+ protected Map<String, FieldGroupBase> fieldGroupMap = FastMap.newInstance();
/** This field group will be the "catch-all" group for fields that are not
* included in an explicit field-group.
@@ -491,7 +490,7 @@
String tagName = sortFieldElement.getTagName();
if (tagName.equals("sort-field")) {
String fieldName = sortFieldElement.getAttribute("name");
- this.sortOrderFields.add(fieldName );
+ this.sortOrderFields.add(fieldName);
this.fieldGroupMap.put(fieldName, lastFieldGroup);
} else if (tagName.equals("banner")) {
Banner thisBanner = new Banner(sortFieldElement, this);
@@ -511,8 +510,8 @@
// reorder fields according to sort order
if (sortOrderFields.size() > 0) {
- List sortedFields = new ArrayList(this.fieldList.size());
- Iterator sortOrderFieldIter = this.sortOrderFields.iterator();
+ List<ModelFormField> sortedFields = FastList.newInstance();
+ Iterator<String> sortOrderFieldIter = this.sortOrderFields.iterator();
while (sortOrderFieldIter.hasNext()) {
String fieldName = (String) sortOrderFieldIter.next();
if (UtilValidate.isEmpty(fieldName)) {
@@ -2590,8 +2589,10 @@
this.defaultPosition = position;
}
}
+
+ public static interface FieldGroupBase {}
- public static class FieldGroup {
+ public static class FieldGroup implements FieldGroupBase {
public String id;
public String style;
protected ModelForm modelForm;
@@ -2643,7 +2644,7 @@
}
}
- public static class Banner {
+ public static class Banner implements FieldGroupBase {
protected ModelForm modelForm;
public FlexibleStringExpander style;
public FlexibleStringExpander text;
@@ -2748,5 +2749,95 @@
}
}
return allServiceNamesUsed;
+ }
+
+ public Set<String> getLinkedRequestsLocationAndUri() throws GeneralException {
+ Set<String> allRequestsUsed = FastSet.newInstance();
+
+ if (this.fieldList != null) {
+ for (ModelFormField modelFormField: this.fieldList) {
+ if (modelFormField.getFieldInfo() instanceof ModelFormField.HyperlinkField) {
+ ModelFormField.HyperlinkField link = (ModelFormField.HyperlinkField) modelFormField.getFieldInfo();
+ String target = link.getTarget(null);
+ String urlMode = link.getTargetType();
+ // Debug.logInfo("In findRequestNamesLinkedtoInWidget found link [" + link.rawString() + "] with target [" + target + "]", module);
+
+ Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerRequestUniqueForTargetType(target, urlMode);
+ if (controllerLocAndRequestSet != null) {
+ allRequestsUsed.addAll(controllerLocAndRequestSet);
+ }
+ } else if (modelFormField.getFieldInfo() instanceof ModelFormField.DisplayEntityField) {
+ ModelFormField.DisplayEntityField parentField = (ModelFormField.DisplayEntityField) modelFormField.getFieldInfo();
+ if (parentField.subHyperlink != null) {
+ Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerRequestUniqueForTargetType(parentField.subHyperlink.getTarget(null), parentField.subHyperlink.getTargetType());
+ if (controllerLocAndRequestSet != null) {
+ allRequestsUsed.addAll(controllerLocAndRequestSet);
+ }
+ }
+ } else if (modelFormField.getFieldInfo() instanceof ModelFormField.TextField) {
+ ModelFormField.TextField parentField = (ModelFormField.TextField) modelFormField.getFieldInfo();
+ if (parentField.subHyperlink != null) {
+ Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerRequestUniqueForTargetType(parentField.subHyperlink.getTarget(null), parentField.subHyperlink.getTargetType());
+ if (controllerLocAndRequestSet != null) {
+ allRequestsUsed.addAll(controllerLocAndRequestSet);
+ }
+ }
+ } else if (modelFormField.getFieldInfo() instanceof ModelFormField.DropDownField) {
+ ModelFormField.DropDownField parentField = (ModelFormField.DropDownField) modelFormField.getFieldInfo();
+ if (parentField.subHyperlink != null) {
+ Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerRequestUniqueForTargetType(parentField.subHyperlink.getTarget(null), parentField.subHyperlink.getTargetType());
+ if (controllerLocAndRequestSet != null) {
+ allRequestsUsed.addAll(controllerLocAndRequestSet);
+ }
+ }
+ } else if (modelFormField.getFieldInfo() instanceof ModelFormField.ImageField) {
+ ModelFormField.ImageField parentField = (ModelFormField.ImageField) modelFormField.getFieldInfo();
+ if (parentField.subHyperlink != null) {
+ Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerRequestUniqueForTargetType(parentField.subHyperlink.getTarget(null), parentField.subHyperlink.getTargetType());
+ if (controllerLocAndRequestSet != null) {
+ allRequestsUsed.addAll(controllerLocAndRequestSet);
+ }
+ }
+ } else if (modelFormField.getFieldInfo() instanceof ModelFormField.DropDownField) {
+ ModelFormField.DropDownField parentField = (ModelFormField.DropDownField) modelFormField.getFieldInfo();
+ if (parentField.subHyperlink != null) {
+ Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerRequestUniqueForTargetType(parentField.subHyperlink.getTarget(null), parentField.subHyperlink.getTargetType());
+ if (controllerLocAndRequestSet != null) {
+ allRequestsUsed.addAll(controllerLocAndRequestSet);
+ }
+ }
+ }
+ }
+ }
+ return allRequestsUsed;
+ }
+
+ public Set<String> getTargetedRequestsLocationAndUri() throws GeneralException {
+ Set<String> allRequestsUsed = FastSet.newInstance();
+
+ if (this.altTargets != null) {
+ for (AltTarget altTarget: this.altTargets) {
+ String target = altTarget.target;
+ String urlMode = "intra-app";
+
+ Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerRequestUniqueForTargetType(target, urlMode);
+ if (controllerLocAndRequestSet != null) {
+ allRequestsUsed.addAll(controllerLocAndRequestSet);
+ }
+ }
+ }
+
+ if (!this.target.isEmpty()) {
+ String target = this.target.getOriginal();
+ String urlMode = UtilValidate.isNotEmpty(this.targetType) ? this.targetType : "intra-app";
+ if (target.indexOf("${") < 0) {
+ Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerRequestUniqueForTargetType(target, urlMode);
+ if (controllerLocAndRequestSet != null) {
+ allRequestsUsed.addAll(controllerLocAndRequestSet);
+ }
+ }
+ }
+
+ return allRequestsUsed;
}
}
Modified: ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java?rev=644179&r1=644178&r2=644179&view=diff
==============================================================================
--- ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java (original)
+++ ofbiz/trunk/framework/widget/src/org/ofbiz/widget/screen/ModelScreen.java Wed Apr 2 23:06:48 2008
@@ -280,31 +280,12 @@
if (currentWidget instanceof ModelScreenWidget.Link) {
ModelScreenWidget.Link link = (ModelScreenWidget.Link) currentWidget;
String target = link.getTarget(null);
+ String urlMode = link.getUrlMode();
// Debug.logInfo("In findRequestNamesLinkedtoInWidget found link [" + link.rawString() + "] with target [" + target + "]", module);
- int indexOfDollarSignCurlyBrace = target.indexOf("${");
- int indexOfQuestionMark = target.indexOf("?");
- if (indexOfDollarSignCurlyBrace >= 0 && (indexOfQuestionMark < 0 || indexOfQuestionMark > indexOfDollarSignCurlyBrace)) {
- // we have an expanded string in the requestUri part of the target, not much we can do about that...
- return;
- }
-
- if ("intra-app".equals(link.getUrlMode())) {
- // look through all controller.xml files and find those with the request-uri referred to by the target
- String requestUri = UtilHttp.getRequestUriFromTarget(target);
-
- Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerFilesWithRequest(requestUri, null);
- allRequestNamesIncluded.addAll(controllerLocAndRequestSet);
- // if (controllerLocAndRequestSet.size() > 0) Debug.logInfo("============== In findRequestNamesLinkedtoInWidget, controllerLocAndRequestSet: " + controllerLocAndRequestSet, module);
- } else if ("inter-app".equals(link.getUrlMode())) {
- String webappMountPoint = UtilHttp.getWebappMountPointFromTarget(target);
- if (webappMountPoint != null) webappMountPoint += "/WEB-INF";
- String requestUri = UtilHttp.getRequestUriFromTarget(target);
-
- Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerFilesWithRequest(requestUri, webappMountPoint);
- allRequestNamesIncluded.addAll(controllerLocAndRequestSet);
- // if (controllerLocAndRequestSet.size() > 0) Debug.logInfo("============== In findRequestNamesLinkedtoInWidget, controllerLocAndRequestSet: " + controllerLocAndRequestSet, module);
- }
+ Set<String> controllerLocAndRequestSet = ConfigXMLReader.findControllerRequestUniqueForTargetType(target, urlMode);
+ if (controllerLocAndRequestSet == null) return;
+ allRequestNamesIncluded.addAll(controllerLocAndRequestSet);
} else if (currentWidget instanceof ModelScreenWidget.Section) {
ModelScreenWidget.Section section = (ModelScreenWidget.Section) currentWidget;
if (section.subWidgets != null) {