You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by ni...@apache.org on 2008/11/01 04:26:23 UTC

svn commit: r709631 - in /cxf/branches/2.1.x-fixes: ./ common/common/src/main/java/org/apache/cxf/common/xmlschema/ rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/ rt/javascript/src/main/java/org/apache/cxf/javascript/ rt/javasc...

Author: ningjiang
Date: Fri Oct 31 20:26:22 2008
New Revision: 709631

URL: http://svn.apache.org/viewvc?rev=709631&view=rev
Log:
Merged revisions 707902 via svnmerge from 
https://svn.apache.org/repos/asf/cxf/trunk

........
  r707902 | bimargulies | 2008-10-26 04:43:58 +0800 (Sun, 26 Oct 2008) | 2 lines
  
  Add test case for generic of generics. It passes, perhaps issue was already fixed. Initial swat at supporting inheritance.
........

Added:
    cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/InheritanceTestBase.java
      - copied unchanged from r707902, cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/InheritanceTestBase.java
    cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/InheritanceTestDerived.java
      - copied unchanged from r707902, cxf/trunk/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/InheritanceTestDerived.java
Modified:
    cxf/branches/2.1.x-fixes/   (props changed)
    cxf/branches/2.1.x-fixes/common/common/src/main/java/org/apache/cxf/common/xmlschema/SchemaCollection.java
    cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentServiceDocLiteral.java
    cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentServiceDocLiteralImpl.java
    cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentTest.java
    cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/Messages.properties
    cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/XmlSchemaUtils.java
    cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/service/ServiceJavascriptBuilder.java
    cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java
    cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/DocLitWrappedClientTest.java
    cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrapped.java
    cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java

Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Fri Oct 31 20:26:22 2008
@@ -1 +1 @@
-/cxf/trunk:686333-686363,686764,686820,687096,687194,687363,687387,687463,687543,687722,687798,687814,687817,687891,687910,687914,688086,688102,688133,688596,688735,688870,689572,689596,689855,689924,690067,690289,691246,691271,691295,691338,691355,691488,691602,691646,691706,691728,692116,692157,692310,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694795,694869,694981,694987,694993,695041,695096,695396,695484,695537,695552,695561,695619,695684,695835,695840,695868,695935,695977,696016,696094,696433,696720,697085,697868,698128,699289,700261,700507,700602,700981,701316,701783,701830,701862,702187,702205-702248,702267,702547,702561,702580,702602,702609,702616,702653,702656,702957,703191,703239,703309,703501,703513,703548,704584,704937,704997,705150,705235,705274,705340,705446,705548,705614,705692,705708,706482,706631,706675,706900,706909,707034,707089,707100,709353-709354
+/cxf/trunk:686333-686363,686764,686820,687096,687194,687363,687387,687463,687543,687722,687798,687814,687817,687891,687910,687914,688086,688102,688133,688596,688735,688870,689572,689596,689855,689924,690067,690289,691246,691271,691295,691338,691355,691488,691602,691646,691706,691728,692116,692157,692310,692466,692499,693653,693819,694179,694263,694417,694716,694744,694747,694795,694869,694981,694987,694993,695041,695096,695396,695484,695537,695552,695561,695619,695684,695835,695840,695868,695935,695977,696016,696094,696433,696720,697085,697868,698128,699289,700261,700507,700602,700981,701316,701783,701830,701862,702187,702205-702248,702267,702547,702561,702580,702602,702609,702616,702653,702656,702957,703191,703239,703309,703501,703513,703548,704584,704937,704997,705150,705235,705274,705340,705446,705548,705614,705692,705708,706482,706631,706675,706900,706909,707034,707089,707100,707902,709353-709354

Propchange: cxf/branches/2.1.x-fixes/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: cxf/branches/2.1.x-fixes/common/common/src/main/java/org/apache/cxf/common/xmlschema/SchemaCollection.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/common/common/src/main/java/org/apache/cxf/common/xmlschema/SchemaCollection.java?rev=709631&r1=709630&r2=709631&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/common/common/src/main/java/org/apache/cxf/common/xmlschema/SchemaCollection.java (original)
+++ cxf/branches/2.1.x-fixes/common/common/src/main/java/org/apache/cxf/common/xmlschema/SchemaCollection.java Fri Oct 31 20:26:22 2008
@@ -86,7 +86,7 @@
     public XmlSchemaElement getElementByQName(QName qname) {
         return schemaCollection.getElementByQName(qname);
     }
-
+    
     public XmlSchemaAttribute getAttributeByQName(QName qname) {
         String uri = qname.getNamespaceURI();
         for (XmlSchema schema : schemaCollection.getXmlSchemas()) {

Modified: cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentServiceDocLiteral.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentServiceDocLiteral.java?rev=709631&r1=709630&r2=709631&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentServiceDocLiteral.java (original)
+++ cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentServiceDocLiteral.java Fri Oct 31 20:26:22 2008
@@ -18,9 +18,11 @@
  */
 package org.apache.cxf.aegis.type.java5.map;
 
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
+
 import javax.jws.WebService;
 
 @WebService(targetNamespace = "uri:org.apache.cxf.aegis.test.map", 
@@ -34,5 +36,8 @@
     List<Student> getStudents(Map<String, String> filters);
 
     List<Student> getStudentsByIds(List<String> ids);
+    
+    //CHECKSTYLE:OFF
+    void takeMapMap(HashMap<String, HashMap<String, Student>> myComplexData);
 
 }

Modified: cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentServiceDocLiteralImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentServiceDocLiteralImpl.java?rev=709631&r1=709630&r2=709631&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentServiceDocLiteralImpl.java (original)
+++ cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentServiceDocLiteralImpl.java Fri Oct 31 20:26:22 2008
@@ -63,4 +63,9 @@
         return studentMap;
     }
 
+    //CHECKSTYLE:OFF
+    public void takeMapMap(HashMap<String, HashMap<String, Student>> myComplexData) {
+        // original failure was explosion on this, no need to bother to fill it in.
+    }
+
 }

Modified: cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentTest.java?rev=709631&r1=709630&r2=709631&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentTest.java (original)
+++ cxf/branches/2.1.x-fixes/rt/databinding/aegis/src/test/java/org/apache/cxf/aegis/type/java5/map/StudentTest.java Fri Oct 31 20:26:22 2008
@@ -18,12 +18,15 @@
  */
 package org.apache.cxf.aegis.type.java5.map;
 
+import java.util.HashMap;
 import java.util.Map;
 
 import org.w3c.dom.Document;
 
 import org.apache.cxf.aegis.AbstractAegisTest;
 import org.apache.cxf.endpoint.Server;
+import org.apache.cxf.frontend.ClientProxyFactoryBean;
+import org.apache.cxf.frontend.ServerFactoryBean;
 import org.apache.cxf.interceptor.LoggingInInterceptor;
 import org.apache.cxf.interceptor.LoggingOutInterceptor;
 import org.apache.cxf.jaxws.JaxWsProxyFactoryBean;
@@ -74,6 +77,35 @@
     }
 
     @Test 
+    public void testMapMap() throws Exception {
+
+        ServerFactoryBean sf = new ServerFactoryBean();
+        sf.setServiceClass(StudentServiceDocLiteral.class);
+        sf.setServiceBean(new StudentServiceDocLiteralImpl());
+        sf.setAddress("local://StudentServiceDocLiteral");
+        setupAegis(sf);
+        Server server = sf.create();
+        server.getEndpoint().getInInterceptors().add(new LoggingInInterceptor());
+        server.getEndpoint().getOutInterceptors().add(new LoggingOutInterceptor());
+        server.start();
+        
+        ClientProxyFactoryBean proxyFac = new ClientProxyFactoryBean();
+        proxyFac.setAddress("local://StudentServiceDocLiteral");
+        proxyFac.setServiceClass(StudentServiceDocLiteral.class);
+        proxyFac.setBus(getBus());
+        setupAegis(proxyFac.getClientFactoryBean());
+        //CHECKSTYLE:OFF
+        HashMap<String, Student> mss = new HashMap<String, Student>();
+        mss.put("Alice", new Student());
+        HashMap<String, HashMap<String, Student>> mmss = new HashMap<String, HashMap<String, Student>>();
+        mmss.put("Bob", mss);
+        
+        StudentServiceDocLiteral clientInterface = (StudentServiceDocLiteral)proxyFac.create();
+        clientInterface.takeMapMap(mmss);
+        //CHECKSTYLE:ON
+    }
+    
+    @Test 
     public void testReturnMapDocLiteral() throws Exception {
 
         JaxWsServerFactoryBean sf = new JaxWsServerFactoryBean();

Modified: cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/Messages.properties
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/Messages.properties?rev=709631&r1=709630&r2=709631&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/Messages.properties (original)
+++ cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/Messages.properties Fri Oct 31 20:26:22 2008
@@ -31,3 +31,4 @@
 IMPOSSIBLE_GLOBAL_ITEM= JavaScript limitation: Element or xs:any at {0} used in a context that requires a global name, but it, and its type, are anonymous.
 MISSING_TYPE=Type {0} is missing from the WSDL schema for element {1}. {2}
 ATTRIBUTE_DANGLING_REFERENCE=Attribute {0} refers to undefined attribute {1}.
+ELEMENT_DANGLING_REFERENCE= Element {0} refers to undefined element {1}.

Modified: cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/XmlSchemaUtils.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/XmlSchemaUtils.java?rev=709631&r1=709630&r2=709631&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/XmlSchemaUtils.java (original)
+++ cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/XmlSchemaUtils.java Fri Oct 31 20:26:22 2008
@@ -32,7 +32,10 @@
 import org.apache.ws.commons.schema.XmlSchemaAny;
 import org.apache.ws.commons.schema.XmlSchemaAnyAttribute;
 import org.apache.ws.commons.schema.XmlSchemaAttribute;
+import org.apache.ws.commons.schema.XmlSchemaComplexContentExtension;
 import org.apache.ws.commons.schema.XmlSchemaComplexType;
+import org.apache.ws.commons.schema.XmlSchemaContent;
+import org.apache.ws.commons.schema.XmlSchemaContentModel;
 import org.apache.ws.commons.schema.XmlSchemaElement;
 import org.apache.ws.commons.schema.XmlSchemaForm;
 import org.apache.ws.commons.schema.XmlSchemaObject;
@@ -87,6 +90,52 @@
         
     }
     
+    public static QName getBaseType(XmlSchemaComplexType type) {
+        XmlSchemaContentModel model = type.getContentModel();
+        if (model == null) {
+            return null;
+        }
+        XmlSchemaContent content = model.getContent();
+        if (content == null) {
+            return null;
+        }
+        
+        if (!(content instanceof XmlSchemaComplexContentExtension)) {
+            return null;
+        }
+
+        XmlSchemaComplexContentExtension ext = (XmlSchemaComplexContentExtension)content;
+        QName baseTypeName = ext.getBaseTypeName();
+        return baseTypeName;
+    }
+    
+    public static XmlSchemaSequence getContentSequence(XmlSchemaComplexType type) {
+        XmlSchemaContentModel model = type.getContentModel();
+        if (model == null) {
+            return null;
+        }
+        XmlSchemaContent content = model.getContent();
+        if (content == null) {
+            return null;
+        }
+        if (!(content instanceof XmlSchemaComplexContentExtension)) {
+            return null;
+        }
+
+        XmlSchemaComplexContentExtension ext = (XmlSchemaComplexContentExtension)content;
+        XmlSchemaParticle particle = ext.getParticle();
+        if (particle == null) {
+            return null;
+        }
+        XmlSchemaSequence sequence = null;
+        try {
+            sequence = (XmlSchemaSequence) particle;
+        } catch (ClassCastException cce) {
+            unsupportedConstruct("NON_SEQUENCE_PARTICLE", type);
+        }
+        return sequence;
+    }
+    
     public static XmlSchemaSequence getSequence(XmlSchemaComplexType type) {
         XmlSchemaParticle particle = type.getParticle();
         XmlSchemaSequence sequence = null;

Modified: cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/service/ServiceJavascriptBuilder.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/service/ServiceJavascriptBuilder.java?rev=709631&r1=709630&r2=709631&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/service/ServiceJavascriptBuilder.java (original)
+++ cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/service/ServiceJavascriptBuilder.java Fri Oct 31 20:26:22 2008
@@ -188,7 +188,7 @@
                 }
                 // If the element uses a named type, we use the functions for the type.
                 XmlSchemaComplexType elementType = (XmlSchemaComplexType)element.getSchemaType();
-                if (elementType.getQName() != null) {
+                if (elementType != null && elementType.getQName() != null) {
                     name = elementType.getQName();
                 }
                 utils.appendLine("this.globalElementSerializers['" + name.toString() + "'] = "

Modified: cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java?rev=709631&r1=709630&r2=709631&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java (original)
+++ cxf/branches/2.1.x-fixes/rt/javascript/src/main/java/org/apache/cxf/javascript/types/SchemaJavascriptBuilder.java Fri Oct 31 20:26:22 2008
@@ -53,8 +53,6 @@
  * Generate Javascript for a schema, and provide information needed for the
  * service builder. As of this pass, there is no support for non-sequence types
  * or for attribute mappings.
- * 
- * @author bimargulies
  */
 public class SchemaJavascriptBuilder {
 
@@ -349,8 +347,20 @@
      */
     protected void complexTypeSerializerBody(XmlSchemaComplexType type, String elementPrefix,
                                              JavascriptUtils bodyUtils) {
+        XmlSchemaSequence sequence = null;
+        // deal with type extension.
+        QName baseTypeName = XmlSchemaUtils.getBaseType(type);
+        if (baseTypeName !=  null) {
+            XmlSchemaType baseType = xmlSchemaCollection.getTypeByQName(baseTypeName);
+            XmlSchemaComplexType baseComplexType = (XmlSchemaComplexType) baseType;
+            // I think we can recurse ...?
+            complexTypeSerializerBody(baseComplexType, elementPrefix, bodyUtils);
+            sequence = XmlSchemaUtils.getContentSequence(type);
+        }
 
-        XmlSchemaSequence sequence = XmlSchemaUtils.getSequence(type);
+        if (sequence == null) {
+            sequence = XmlSchemaUtils.getSequence(type);
+        }
 
         for (int i = 0; i < sequence.getItems().getCount(); i++) {
             XmlSchemaObject sequenceItem = (XmlSchemaObject)sequence.getItems().getItem(i);

Modified: cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/DocLitWrappedClientTest.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/DocLitWrappedClientTest.java?rev=709631&r1=709630&r2=709631&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/DocLitWrappedClientTest.java (original)
+++ cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/DocLitWrappedClientTest.java Fri Oct 31 20:26:22 2008
@@ -233,6 +233,18 @@
     }
     
     @Test
+    public void inheritedProperties() {
+        testUtilities.runInsideContext(Void.class, new JSRunnable<Void>() {
+
+            public Void run(Context context) {
+                return null;
+            }
+            
+        });
+    }
+
+    
+    @Test
     public void callTest2WithNullString() {
         testUtilities.runInsideContext(Void.class, new JSRunnable<Void>() {
             public Void run(Context context) {
@@ -298,4 +310,5 @@
         testUtilities.rhinoCallMethod(rv, "setStringItem", beanTwoItem.stringItem);
         return rv;
     }
+    
 }

Modified: cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrapped.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrapped.java?rev=709631&r1=709630&r2=709631&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrapped.java (original)
+++ cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrapped.java Fri Oct 31 20:26:22 2008
@@ -70,4 +70,7 @@
     @WebMethod
     void genericTestFunction(@WebParam(name = "g1") SpecificGenericClass sgc,
                              @WebParam(name = "g2") GenericGenericClass<Double> ggc);
+    
+    @WebMethod 
+    void inheritanceTestFunction(@WebParam(name = "d") InheritanceTestDerived d);
 }

Modified: cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java
URL: http://svn.apache.org/viewvc/cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java?rev=709631&r1=709630&r2=709631&view=diff
==============================================================================
--- cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java (original)
+++ cxf/branches/2.1.x-fixes/rt/javascript/src/test/java/org/apache/cxf/javascript/fortest/SimpleDocLitWrappedImpl.java Fri Oct 31 20:26:22 2008
@@ -37,6 +37,7 @@
     private TestBean1[] lastBean1Array;
     private SpecificGenericClass lastSpecificGeneric;
     private GenericGenericClass<Double> lastGenericGeneric;
+    private InheritanceTestDerived lastInheritanceTestDerived;
 
     /** {@inheritDoc}*/
     public int basicTypeFunctionReturnInt(String s, int i, long l, float f, double d) {
@@ -119,6 +120,10 @@
         lastSpecificGeneric = sgc;
         lastGenericGeneric = ggc;
     }
+    
+    public void inheritanceTestFunction(InheritanceTestDerived d) {
+        lastInheritanceTestDerived = d;
+    }
 
     public SpecificGenericClass getLastSpecificGeneric() {
         return lastSpecificGeneric;
@@ -127,4 +132,9 @@
     public GenericGenericClass<Double> getLastGenericGeneric() {
         return lastGenericGeneric;
     }
+
+    public InheritanceTestDerived getLastInheritanceTestDerived() {
+        return lastInheritanceTestDerived;
+    }
+
 }