Okay, I will remove it and keep a local copy.

-Adrian

On 6/16/2013 9:09 AM, Scott Gray wrote:
It seems largely like a one off effort though right?  I mean it's pretty rare 
that we make anything other than minor modifications to our schemas.

I guess this just all seems like a lot of effort and code for something that 
could have been fixed by caching the entity engine mappings in a map instead of 
caching the DOM.  I encountered the same bug in 10.04 a few months back and 
fixed it by doing just that, it took about 20 minutes.

Now instead we have so much code that we needed a generator to make it and 
since we tried one and it wasn't suitable we decided to roll our own generator 
as well that might be used rarely (maybe never if you disappear and it isn't 
documented).

Regards
Scott

On 16/06/2013, at 7:53 PM, Adrian Crum wrote:

An external tool was suggested and tried, but it wasn't capable of generating 
thread-safe classes. So, this was the result of a real need - the need to 
generate thread-safe models from OFBiz XML schemas.

For background, look here: https://issues.apache.org/jira/browse/OFBIZ-5204

-Adrian

On 6/16/2013 8:47 AM, Scott Gray wrote:
I'm sure this is a useful tool but are we not stretching the scope of the 
project a bit too far with support for home grown code generators?

Regards
Scott

On 16/06/2013, at 7:36 PM, [email protected] wrote:

Author: adrianc
Date: Sun Jun 16 07:36:08 2013
New Revision: 1493474

URL: http://svn.apache.org/r1493474
Log:
XsdToJava.ftl improvement - Append "Element" to class names to avoid name clash.

Modified:
    ofbiz/trunk/framework/webtools/webapp/webtools/XsdToJava.ftl

Modified: ofbiz/trunk/framework/webtools/webapp/webtools/XsdToJava.ftl
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/framework/webtools/webapp/webtools/XsdToJava.ftl?rev=1493474&r1=1493473&r2=1493474&view=diff
==============================================================================
--- ofbiz/trunk/framework/webtools/webapp/webtools/XsdToJava.ftl (original)
+++ ofbiz/trunk/framework/webtools/webapp/webtools/XsdToJava.ftl Sun Jun 16 
07:36:08 2013
@@ -129,7 +129,7 @@ under the License.
</#if>
<#if !(xsdElement.getAttribute("abstract") == "true")>

-    public ${className}(Element element) throws ${exceptionClassName} {
+    public ${className}Element(Element element) throws ${exceptionClassName} {
   <#-- Class field assignments -->
   <#if attributeElements?exists>
     <#list attributeElements as attributeElement>
@@ -238,10 +238,10 @@ import org.w3c.dom.Element;
  * @see <code>${xsdFileName}</code>
  */
<#if abstract>
-public interface ${className} {
+public interface ${className}Element {
<#else>
@ThreadSafe
-public final class ${className}<#if substitutionGroup?has_content> implements 
${substitutionGroup}</#if> {
+public final class ${className}Element<#if substitutionGroup?has_content> implements 
${substitutionGroup}</#if> {
</#if>
</#macro>

@@ -301,9 +301,9 @@ public final class ${className}<#if subs
   <#local isList = true>
</#if>
<#if isList>
-    private final List<${className}> ${fieldName}List; // <${elementName}>
+    private final List<${className}Element> ${fieldName}List; // 
<${elementName}>
<#else>
-    private final ${className} ${fieldName}; // <${elementName}>
+    private final ${className}Element ${fieldName}; // <${elementName}>
</#if>
</#macro>

@@ -335,12 +335,12 @@ public final class ${className}<#if subs
             this.${fieldName}List = Collections.emptyList();
   </#if>
         } else {
-            List<${className}> ${fieldName}List = new 
ArrayList<${className}>(${fieldName}ElementList.size());
+            List<${className}Element> ${fieldName}List = new 
ArrayList<${className}Element>(${fieldName}ElementList.size());
             for (Element ${fieldName}Element : ${fieldName}ElementList) {
   <#if abstract>
-                
${fieldName}List.add(${className}Factory.create(${fieldName}Element));
+                
${fieldName}List.add(${className}ElementFactory.create(${fieldName}Element));
   <#else>
-                ${fieldName}List.add(new ${className}(${fieldName}Element));
+                ${fieldName}List.add(new 
${className}Element(${fieldName}Element));
   </#if>
             }
             this.${fieldName}List = 
Collections.unmodifiableList(${fieldName}List);
@@ -354,7 +354,7 @@ public final class ${className}<#if subs
             this.${fieldName} = null;
   </#if>
         } else {
-            this.${fieldName} = new ${className}(${fieldName}Element);
+            this.${fieldName} = new ${className}Element(${fieldName}Element);
         }
</#if>
</#macro>
@@ -375,13 +375,13 @@ public final class ${className}<#if subs
<#if isList>

     /** Returns the <code>&amp;lt;${elementName}&amp;gt;</code> child 
elements. */
-    public List<${className}> get${className}List() {
+    public List<${className}Element> get${className}List() {
         return this.${fieldName}List;
     }
<#else>

     /** Returns the <code>&amp;lt;${elementName}&amp;gt;</code> child element, or 
<code>null</code> if no child element was found. */
-    public ${className} get${className}() {
+    public ${className}Element get${className}() {
         return this.${fieldName};
     }
</#if>
@@ -393,19 +393,19 @@ public final class ${className}<#if subs
<@fileHeader />

/**
- * A ${className} factory.
+ * A ${className}Element factory.
  */
@ThreadSafe
-public final class ${className}Factory {
+public final class ${className}ElementFactory {

-    public static ${className} create(Element element) {
+    public static ${className}Element create(Element element) {
         String elementName = element.getNodeName();
   <#list allElements as globalElement>
     <#if globalElement.getAttribute("substitutionGroup") == elementName>
       <#local targetElementName = globalElement.getAttribute("name")>
       <#local className = 
Static["org.ofbiz.base.util.UtilXml"].nodeNameToJavaName(targetElementName, true)>
         if ("${targetElementName}".equals(elementName)) {
-            return new ${className}(element);
+            return new ${className}Element(element);
         }
     </#if>
   </#list>



Reply via email to