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 2009/12/01 14:28:42 UTC

svn commit: r885760 - in /cxf/trunk/rt/javascript/src: main/java/org/apache/cxf/javascript/ main/java/org/apache/cxf/javascript/types/ test/java/org/apache/cxf/javascript/fortest/ test/java/org/apache/cxf/javascript/types/ test/resources/

Author: bimargulies
Date: Tue Dec  1 13:28:42 2009
New Revision: 885760

URL: http://svn.apache.org/viewvc?rev=885760&view=rev
Log:
CXF-2568

Modified:
    cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/ParticleInfo.java
    cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java
    cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrapped.java
    cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java
    cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/TestBean1.java
    cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/TestBean3.java
    cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/types/SerializationTest.java
    cxf/trunk/rt/javascript/src/test/resources/serializationTests.js

Modified: cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/ParticleInfo.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/ParticleInfo.java?rev=885760&r1=885759&r2=885760&view=diff
==============================================================================
--- cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/ParticleInfo.java (original)
+++ cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/ParticleInfo.java Tue Dec  1 13:28:42 2009
@@ -189,7 +189,15 @@
             // with elements with identical local names and different
             // namespaces.
             elementInfo.javascriptName = elementQName.getLocalPart();
-            elementInfo.defaultValue = element.getDefaultValue();
+            String schemaDefaultValue = element.getDefaultValue();
+            /*
+             * Schema default values are carried as strings. 
+             * In javascript, for actual strings, we need quotes, but not for
+             * numbers. The following is a trick.
+             */
+            schemaDefaultValue = protectDefaultValue(schemaDefaultValue);
+
+            elementInfo.defaultValue = schemaDefaultValue;
             factorySetupType(element, schemaCollection, elementInfo);
         } else { // any
             elementInfo.any = true;
@@ -201,6 +209,40 @@
         }
     }
 
+    private static String protectDefaultValue(String schemaDefaultValue) {
+        if (schemaDefaultValue == null) {
+            return null;
+        }
+        boolean leaveAlone = false;
+        try {
+            Long.parseLong(schemaDefaultValue);
+            leaveAlone = true;
+        } catch (NumberFormatException nfe) {
+            try {
+                Double.parseDouble(schemaDefaultValue);
+                leaveAlone = true;
+            } catch (NumberFormatException nfe2) {
+                //
+            }
+        }
+        if (!leaveAlone) {
+            StringBuilder builder = new StringBuilder();
+            builder.append("'");
+            for (char c : schemaDefaultValue.toCharArray()) {
+                if (c == '\'') {
+                    builder.append("\\'");
+                } else if (c == '\\') {
+                    builder.append("\\\\");
+                } else {
+                    builder.append(c);
+                }
+            }
+            builder.append('\'');
+            schemaDefaultValue = builder.toString(); 
+        }
+        return schemaDefaultValue;
+    }
+
     private static void factorySetupType(XmlSchemaElement element, SchemaCollection schemaCollection,
                                          ParticleInfo elementInfo) {
         elementInfo.type = element.getSchemaType();
@@ -351,4 +393,9 @@
     public boolean isGlobal() {
         return global;
     }
+
+    @Override
+    public String toString() {
+        return "ItemInfo: " + javascriptName;
+    }
 }

Modified: cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java?rev=885760&r1=885759&r2=885760&view=diff
==============================================================================
--- cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java (original)
+++ cxf/trunk/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java Tue Dec  1 13:28:42 2009
@@ -230,7 +230,6 @@
                                   final String elementPrefix, 
                                   String typeObjectName, 
                                   ItemInfo itemInfo) {
-
             
         String accessorSuffix = StringUtils.capitalize(itemInfo.getJavascriptName());
 
@@ -287,6 +286,7 @@
             // application code is responsible for this.
             utils.appendLine("this._" + itemInfo.getJavascriptName() + " = null;");
         } else {
+
             if (itemInfo.getDefaultValue() == null) {
                 itemInfo.setDefaultValue(utils.getDefaultValueForSimpleType(itemInfo.getType()));
             }

Modified: cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrapped.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrapped.java?rev=885760&r1=885759&r2=885760&view=diff
==============================================================================
--- cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrapped.java (original)
+++ cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrapped.java Tue Dec  1 13:28:42 2009
@@ -76,4 +76,7 @@
     
     @WebMethod 
     void inheritanceTestFunction(@WebParam(name = "d") InheritanceTestDerived d);
+    
+    @WebMethod
+    AnEnum enumEcho(@WebParam(name = "ev") AnEnum value);
 }

Modified: cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java?rev=885760&r1=885759&r2=885760&view=diff
==============================================================================
--- cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java (original)
+++ cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java Tue Dec  1 13:28:42 2009
@@ -163,4 +163,8 @@
         return lastInheritanceTestDerived;
     }
 
+    public AnEnum enumEcho(AnEnum value) {
+        return value;
+    }
+
 }

Modified: cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/TestBean1.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/TestBean1.java?rev=885760&r1=885759&r2=885760&view=diff
==============================================================================
--- cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/TestBean1.java (original)
+++ cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/TestBean1.java Tue Dec  1 13:28:42 2009
@@ -22,11 +22,13 @@
 import java.util.Arrays;
 
 import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
 import javax.xml.bind.annotation.XmlType;
 
 /**
  * Bean with a selection of elements suitable for testing the JavaScript client.
  */
+@XmlRootElement(namespace = "uri:org.apache.cxf.javascript.testns")
 @XmlType(namespace = "uri:org.apache.cxf.javascript.testns")
 public class TestBean1 {
     
@@ -35,6 +37,7 @@
         doubleItem = -1.0;
         beanTwoItem = new TestBean2("required=true");
         beanTwoNotRequiredItem = null;
+        enumeration = AnEnum.Animal;
     }
     
     //CHECKSTYLE:OFF
@@ -56,13 +59,12 @@
     public TestBean2 beanTwoItem;
     @XmlElement(required = false)
     public TestBean2 beanTwoNotRequiredItem;
+    @XmlElement(defaultValue = "Animal", required = true)
     public AnEnum enumeration;
+    @XmlElement 
+    public AnEnum enum2;
     //CHECKSTYLE:ON
     
-    public AnEnum getEnumeration() {
-        return enumeration;
-    }
-    
     @Override
     public boolean equals(Object obj) {
         if (!(obj instanceof TestBean1)) {

Modified: cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/TestBean3.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/TestBean3.java?rev=885760&r1=885759&r2=885760&view=diff
==============================================================================
--- cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/TestBean3.java (original)
+++ cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/TestBean3.java Tue Dec  1 13:28:42 2009
@@ -123,7 +123,7 @@
     @Override
     public String toString() {
         StringBuilder builder = new StringBuilder();
-        builder.append("TestBean1");
+        builder.append("TestBean3");
         builder.append(" stringItem ");
         builder.append(stringItem == null ? "Null" : stringItem);
         builder.append(" intItem ");

Modified: cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/types/SerializationTest.java
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/types/SerializationTest.java?rev=885760&r1=885759&r2=885760&view=diff
==============================================================================
--- cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/types/SerializationTest.java (original)
+++ cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/types/SerializationTest.java Tue Dec  1 13:28:42 2009
@@ -43,7 +43,6 @@
 import org.apache.cxf.javascript.NamespacePrefixAccumulator;
 import org.apache.cxf.javascript.fortest.TestBean1;
 import org.apache.cxf.javascript.fortest.TestBean2;
-import org.apache.cxf.javascript.fortest.TestBean3;
 import org.apache.cxf.jaxb.JAXBDataBinding;
 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
 import org.apache.cxf.service.model.SchemaInfo;
@@ -86,15 +85,15 @@
     public void testDeserialization() throws Exception {
         setupClientAndRhino("simple-dlwu-proxy-factory");
         testUtilities.readResourceIntoRhino("/deserializationTests.js");
-        DataBinding dataBinding = new JAXBDataBinding(TestBean3.class, TestBean2.class);
+        DataBinding dataBinding = new JAXBDataBinding(TestBean1.class, TestBean2.class);
         assertNotNull(dataBinding);
-        TestBean3 bean = new TestBean3();
+        TestBean1 bean = new TestBean1();
         bean.stringItem = "bean1>stringItem";
         bean.doubleItem = -1.0;
         String serialized = serializeObject(dataBinding, bean);
         testUtilities.rhinoCallInContext("deserializeTestBean3_1", serialized);
 
-        bean = new TestBean3();
+        bean = new TestBean1();
         bean.stringItem = null;
         bean.intItem = 21;
         bean.longItem = 200000001;
@@ -109,7 +108,7 @@
         testUtilities.rhinoCallInContext("deserializeTestBean3_2", serialized);
     }
 
-    private String serializeObject(DataBinding dataBinding, TestBean3 bean) throws XMLStreamException {
+    private String serializeObject(DataBinding dataBinding, TestBean1 bean) throws XMLStreamException {
         DataWriter<XMLStreamWriter> writer = dataBinding.createWriter(XMLStreamWriter.class);
         StringWriter stringWriter = new StringWriter();
         XMLStreamWriter xmlStreamWriter = xmlOutputFactory.createXMLStreamWriter(stringWriter);

Modified: cxf/trunk/rt/javascript/src/test/resources/serializationTests.js
URL: http://svn.apache.org/viewvc/cxf/trunk/rt/javascript/src/test/resources/serializationTests.js?rev=885760&r1=885759&r2=885760&view=diff
==============================================================================
--- cxf/trunk/rt/javascript/src/test/resources/serializationTests.js (original)
+++ cxf/trunk/rt/javascript/src/test/resources/serializationTests.js Tue Dec  1 13:28:42 2009
@@ -39,6 +39,7 @@
  	var a = [];
  	a.push(543);
  	bean1.setOptionalIntArrayItem(a);
+ 	bean1.setEnum2('Mineral');
 	return bean1.serialize(jsutils, "testBean1");
 }