You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by bi...@apache.org on 2007/12/21 17:53:27 UTC

svn commit: r606243 - in /incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types: SchemaJavascriptBuilder.java SequenceItemInfo.java

Author: bimargulies
Date: Fri Dec 21 08:53:27 2007
New Revision: 606243

URL: http://svn.apache.org/viewvc?rev=606243&view=rev
Log:
Continue to sneak up on xs:any.

Added:
    incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SequenceItemInfo.java   (with props)
Modified:
    incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java

Modified: incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java?rev=606243&r1=606242&r2=606243&view=diff
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java (original)
+++ incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java Fri Dec 21 08:53:27 2007
@@ -38,12 +38,10 @@
 import org.apache.cxf.javascript.XmlSchemaUtils;
 import org.apache.cxf.service.model.SchemaInfo;
 import org.apache.ws.commons.schema.XmlSchema;
-import org.apache.ws.commons.schema.XmlSchemaAny;
 import org.apache.ws.commons.schema.XmlSchemaComplexType;
 import org.apache.ws.commons.schema.XmlSchemaElement;
 import org.apache.ws.commons.schema.XmlSchemaObject;
 import org.apache.ws.commons.schema.XmlSchemaObjectTable;
-import org.apache.ws.commons.schema.XmlSchemaParticle;
 import org.apache.ws.commons.schema.XmlSchemaSequence;
 import org.apache.ws.commons.schema.XmlSchemaSimpleType;
 import org.apache.ws.commons.schema.XmlSchemaType;
@@ -195,97 +193,82 @@
                                      final String elementPrefix, 
                                      String typeObjectName, 
                                      XmlSchemaObject thing) {
-
-        XmlSchemaParticle particle = XmlSchemaUtils.getObjectParticle(thing, type);
-        XmlSchemaElement sequenceElement = null;
-        XmlSchemaType elType = null;
-        boolean nillable = false;
-        String elementName = null;
-        String elementJavascriptVariable = null;
-        String defaultValueString = null;
-        boolean any = false;
-        
-        if (particle instanceof XmlSchemaAny) {
-            any = true;
-            // TODO: what about a collision here?
-            elementName = "any" + anyCounter;
-            elementJavascriptVariable = elementPrefix + elementName;
+        
+        SequenceItemInfo itemInfo = new SequenceItemInfo(xmlSchemaCollection, type, thing);
+        
+        if (itemInfo.isAny()) {
+            itemInfo.setElementJavascriptVariable(itemInfo.getElementJavascriptVariable()
+                                                          + anyCounter);
             anyCounter++;
-        } else {
-            sequenceElement = (XmlSchemaElement)thing;
-            elType = XmlSchemaUtils.getElementType(xmlSchemaCollection, null, sequenceElement, type);
-            nillable = sequenceElement.isNillable();
-            if (sequenceElement.isAbstract()) { 
-                XmlSchemaUtils.unsupportedConstruct("ABSTRACT_ELEMENT", sequenceElement.getName(), type);
-            }
-            elementName = sequenceElement.getName();
-            elementJavascriptVariable = elementPrefix + sequenceElement.getName();
-            defaultValueString = sequenceElement.getDefaultValue();
         }
-
         
-        String accessorSuffix = StringUtils.capitalize(elementName);
+        itemInfo.setElementJavascriptVariable(elementPrefix 
+                                                      + itemInfo.getElementJavascriptVariable()); 
+
+        String accessorSuffix = StringUtils.capitalize(itemInfo.getElementName());
 
         String accessorName = typeObjectName + "_get" + accessorSuffix;
         String getFunctionProperty = typeObjectName + ".prototype.get" + accessorSuffix; 
         String setFunctionProperty = typeObjectName + ".prototype.set" + accessorSuffix; 
         accessors.append("//\n");
         accessors.append("// accessor is " + getFunctionProperty + "\n");
-        accessors.append("// element get for " + elementName + "\n");
-        if (any) {
+        accessors.append("// element get for " + itemInfo.getElementName() + "\n");
+        if (itemInfo.isAny()) {
             accessors.append("// - xs:any\n");
         } else {
             //  can we get an anonymous type on an element in the middle of a type?
-            accessors.append("// - element type is " + elType.getQName() + "\n");
+            accessors.append("// - element type is " 
+                             + itemInfo.getElementType().getQName() + "\n");
         }
         
-        if (XmlSchemaUtils.isParticleOptional(particle)) {
+        if (XmlSchemaUtils.isParticleOptional(itemInfo.getParticle())) {
             accessors.append("// - optional element\n");
         } else {
             accessors.append("// - required element\n");
             
         }
         
-        if (XmlSchemaUtils.isParticleArray(particle)) {
+        if (XmlSchemaUtils.isParticleArray(itemInfo.getParticle())) {
             accessors.append("// - array\n");
             
         }
         
-        if (nillable) {
+        if (itemInfo.isNillable()) {
             accessors.append("// - nillable\n");
         }
         
         accessors.append("//\n");
-        accessors.append("// element set for " + elementName + "\n");
+        accessors.append("// element set for " + itemInfo.getElementName() + "\n");
         accessors.append("// setter function is is " + setFunctionProperty + "\n");
         accessors.append("//\n");
         accessors.append("function " + accessorName + "() { return " 
-                         + elementJavascriptVariable 
+                         + itemInfo.getElementJavascriptVariable() 
                          + ";}\n");
         accessors.append(getFunctionProperty + " = " + accessorName + ";\n");
         accessorName = typeObjectName + "_set" + accessorSuffix;
         accessors.append("function " 
                          + accessorName + "(value) {" 
-                         + elementJavascriptVariable
+                         + itemInfo.getElementJavascriptVariable()
                          + " = value;}\n");
         accessors.append(setFunctionProperty + " = " + accessorName + ";\n");
         
-        if (XmlSchemaUtils.isParticleOptional(particle) 
-            || (nillable && !XmlSchemaUtils.isParticleArray(particle))) {
-            utils.appendLine(elementJavascriptVariable + " = null;");
-        } else if (XmlSchemaUtils.isParticleArray(particle)) {
-            utils.appendLine(elementJavascriptVariable + " = [];");
-        } else if (elType instanceof XmlSchemaComplexType) {
+        if (XmlSchemaUtils.isParticleOptional(itemInfo.getParticle()) 
+            || (itemInfo.isNillable() && !XmlSchemaUtils.isParticleArray(itemInfo.getParticle()))) {
+            utils.appendLine(itemInfo.getElementJavascriptVariable() + " = null;");
+        } else if (XmlSchemaUtils.isParticleArray(itemInfo.getParticle())) {
+            utils.appendLine(itemInfo.getElementJavascriptVariable() + " = [];");
+        } else if (itemInfo.getElementType() instanceof XmlSchemaComplexType) {
             // even for required complex elements, we leave them null. 
             // otherwise, we could end up in a cycle or otherwise miserable. The 
             // application code is responsible for this.
-            utils.appendLine(elementJavascriptVariable + " = null;");
+            utils.appendLine(itemInfo.getElementJavascriptVariable() + " = null;");
         } else {
-            if (defaultValueString == null) {
-                defaultValueString = 
-                    utils.getDefaultValueForSimpleType(elType);
+            if (itemInfo.getDefaultValueString() == null) {
+                itemInfo.setDefaultValueString(utils.getDefaultValueForSimpleType(itemInfo.getElementType()));
             }
-            utils.appendLine(elementJavascriptVariable + " = " + defaultValueString + ";");
+            utils.appendLine(itemInfo.getElementJavascriptVariable()
+                             + " = " 
+                             + itemInfo.getDefaultValueString() + ";");
         }
     }
     

Added: incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SequenceItemInfo.java
URL: http://svn.apache.org/viewvc/incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SequenceItemInfo.java?rev=606243&view=auto
==============================================================================
--- incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SequenceItemInfo.java (added)
+++ incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SequenceItemInfo.java Fri Dec 21 08:53:27 2007
@@ -0,0 +1,182 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.cxf.javascript.types;
+
+import org.apache.cxf.common.xmlschema.SchemaCollection;
+import org.apache.cxf.javascript.XmlSchemaUtils;
+import org.apache.ws.commons.schema.XmlSchemaAny;
+import org.apache.ws.commons.schema.XmlSchemaComplexType;
+import org.apache.ws.commons.schema.XmlSchemaElement;
+import org.apache.ws.commons.schema.XmlSchemaObject;
+import org.apache.ws.commons.schema.XmlSchemaParticle;
+import org.apache.ws.commons.schema.XmlSchemaType;
+
+/**
+ * Information about a sequence 'element'
+ * For now, only handles elements and 'any'. 
+ */
+public class SequenceItemInfo {
+    private XmlSchemaParticle particle;
+    private XmlSchemaElement sequenceElement;
+    private XmlSchemaType elementType;
+    private boolean nillable;
+    private String elementName;
+    private String elementJavascriptVariable;
+    private String defaultValueString;
+    private boolean any;
+    
+    /**
+     * Gather information about a member of a sequence.
+     * @param xmlSchemaCollection
+     * @param containingType
+     * @param sequenceMember
+     */
+    public SequenceItemInfo(SchemaCollection xmlSchemaCollection,
+                            XmlSchemaComplexType containingType, 
+                            XmlSchemaObject sequenceMember) {
+        particle = XmlSchemaUtils.getObjectParticle(sequenceMember, containingType);
+        if (particle instanceof XmlSchemaAny) {
+            any = true;
+            elementName = "any";
+            elementJavascriptVariable = elementName;
+        } else {
+            sequenceElement = (XmlSchemaElement)sequenceMember;
+            elementType = XmlSchemaUtils.getElementType(xmlSchemaCollection, 
+                                                   null, sequenceElement, containingType);
+            nillable = sequenceElement.isNillable();
+            if (sequenceElement.isAbstract()) { 
+                XmlSchemaUtils.unsupportedConstruct("ABSTRACT_ELEMENT", 
+                                                    sequenceElement.getName(), containingType);
+            }
+            elementName = sequenceElement.getName();
+            elementJavascriptVariable = sequenceElement.getName();
+            defaultValueString = sequenceElement.getDefaultValue();
+        }
+
+        
+    }
+    
+    
+    /** 
+     * @return Returns the particle.
+     */
+    public XmlSchemaParticle getParticle() {
+        return particle;
+    }
+    /** * @return Returns the sequenceElement.
+     */
+    public XmlSchemaElement getSequenceElement() {
+        return sequenceElement;
+    }
+    /** * @return Returns the elType.
+     */
+    public XmlSchemaType getElementType() {
+        return elementType;
+    }
+    /** * @return Returns the nillable.
+     */
+    public boolean isNillable() {
+        return nillable;
+    }
+    /** * @return Returns the elementName.
+     */
+    public String getElementName() {
+        return elementName;
+    }
+    /** * @return Returns the elementJavascriptVariable.
+     */
+    public String getElementJavascriptVariable() {
+        return elementJavascriptVariable;
+    }
+    /** * @return Returns the defaultValueString.
+     */
+    public String getDefaultValueString() {
+        return defaultValueString;
+    }
+    /** * @return Returns the any.
+     */
+    public boolean isAny() {
+        return any;
+    }
+
+
+    /**
+     * @param particle The particle to set.
+     */
+    public void setParticle(XmlSchemaParticle particle) {
+        this.particle = particle;
+    }
+
+
+    /**
+     * @param sequenceElement The sequenceElement to set.
+     */
+    public void setSequenceElement(XmlSchemaElement sequenceElement) {
+        this.sequenceElement = sequenceElement;
+    }
+
+
+    /**
+     * @param elementType The elementType to set.
+     */
+    public void setElementType(XmlSchemaType elementType) {
+        this.elementType = elementType;
+    }
+
+
+    /**
+     * @param nillable The nillable to set.
+     */
+    public void setNillable(boolean nillable) {
+        this.nillable = nillable;
+    }
+
+
+    /**
+     * @param elementName The elementName to set.
+     */
+    public void setElementName(String elementName) {
+        this.elementName = elementName;
+    }
+
+
+    /**
+     * @param elementJavascriptVariable The elementJavascriptVariable to set.
+     */
+    public void setElementJavascriptVariable(String elementJavascriptVariable) {
+        this.elementJavascriptVariable = elementJavascriptVariable;
+    }
+
+
+    /**
+     * @param defaultValueString The defaultValueString to set.
+     */
+    public void setDefaultValueString(String defaultValueString) {
+        this.defaultValueString = defaultValueString;
+    }
+
+
+    /**
+     * @param any The any to set.
+     */
+    public void setAny(boolean any) {
+        this.any = any;
+    }
+}

Propchange: incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SequenceItemInfo.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: incubator/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SequenceItemInfo.java
------------------------------------------------------------------------------
    svn:keywords = Rev Date