You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by ke...@apache.org on 2007/07/17 11:57:15 UTC

svn commit: r556870 - in /incubator/tuscany/java/sdo: impl/src/main/java/org/apache/tuscany/sdo/helper/ impl/src/main/java/org/apache/tuscany/sdo/util/resource/ impl/src/test/java/org/apache/tuscany/sdo/test/ lib/src/main/java/org/apache/tuscany/sdo/ap...

Author: kelvingoodson
Date: Tue Jul 17 02:57:12 2007
New Revision: 556870

URL: http://svn.apache.org/viewvc?view=rev&rev=556870
Log:
fix for TUSCANY-1391

Added:
    incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLUnknownPropertiesTestCase.java
Modified:
    incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLDocumentImpl.java
    incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java
    incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/AllTests.java
    incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java
    incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOClass.java
    incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOFactoryClass.java

Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLDocumentImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLDocumentImpl.java?view=diff&rev=556870&r1=556869&r2=556870
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLDocumentImpl.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/XMLDocumentImpl.java Tue Jul 17 02:57:12 2007
@@ -267,6 +267,14 @@
     initLoadedRoot();
   }
 
+  /**
+   * @return a Map object with key-value pair where key is the DataObject and value contains the info 
+   * about the unknown properties for the DataObject
+   */
+  public Map getUnknownProperties(){
+      return resource.getEObjectToExtensionMap();
+  }
+  
   private void initLoadedRoot()
   {
     rootObject = null;

Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java?view=diff&rev=556870&r1=556869&r2=556870
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/resource/SDOXMLResourceImpl.java Tue Jul 17 02:57:12 2007
@@ -570,7 +570,12 @@
                     }
                 });
             }
-        } else if (loadLaxForm != 0) {
+            
+            if (Boolean.TRUE.equals(options.get(SDOHelper.XMLOptions.XML_LOAD_UNKNOWN_PROPERTIES))) {
+                options.put(OPTION_RECORD_UNKNOWN_FEATURE , Boolean.TRUE);
+            }
+        }
+        else if (loadLaxForm != 0) {
             /*
              * Tolerates element/attribute malform
              */

Modified: incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/AllTests.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/AllTests.java?view=diff&rev=556870&r1=556869&r2=556870
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/AllTests.java (original)
+++ incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/AllTests.java Tue Jul 17 02:57:12 2007
@@ -63,6 +63,7 @@
         suite.addTestSuite(XSDQNameTestCase.class);
         suite.addTestSuite(XMLLoadOptionsTestCase.class);
         suite.addTestSuite(XMLSaveOptionsTestCase.class);
+        suite.addTestSuite(XMLUnknownPropertiesTestCase.class);
         suite.addTestSuite(ExpectedExceptionsTestCase.class);
         return suite;
     }
@@ -76,6 +77,7 @@
         junit.textui.TestRunner.run(suite());
     }
 }
+
 
 
 

Added: incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLUnknownPropertiesTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLUnknownPropertiesTestCase.java?view=auto&rev=556870
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLUnknownPropertiesTestCase.java (added)
+++ incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/XMLUnknownPropertiesTestCase.java Tue Jul 17 02:57:12 2007
@@ -0,0 +1,132 @@
+/**
+ *
+ *  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.tuscany.sdo.test;
+
+import java.io.ByteArrayOutputStream;
+import java.io.IOException;
+import java.io.StringReader;
+import java.util.HashMap;
+import java.util.Map;
+
+import junit.framework.Assert;
+import junit.framework.TestCase;
+
+import org.apache.tuscany.sdo.SDOPackage;
+import org.apache.tuscany.sdo.api.SDOHelper;
+import org.apache.tuscany.sdo.api.SDOUtil;
+import commonj.sdo.DataObject;
+import commonj.sdo.helper.HelperContext;
+import commonj.sdo.helper.XMLDocument;
+import commonj.sdo.helper.XMLHelper;
+
+public class XMLUnknownPropertiesTestCase extends TestCase {
+    XMLHelper xmlHelper;
+    Map options;
+
+    protected void setUp() throws Exception {
+        super.setUp();
+    }
+
+    protected void tearDown() throws Exception {
+        super.tearDown();
+    }
+
+    // SDOUtil->SDOHelper->SDOHelperImpl->HelperContextImpl->XMLHelperImpl
+    public void testOptionUnknownProperties() throws IOException {
+        options = new HashMap();
+        options.put(SDOHelper.XMLOptions.XML_LOAD_UNKNOWN_PROPERTIES, Boolean.TRUE);
+
+        final HelperContext hc = SDOUtil.createHelperContext(true);
+        hc
+            .getXSDHelper()
+            .define("<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"testNS\">" + "<element name=\"root\">"
+                + "<complexType>"
+                + "<sequence>"
+                + "<element name=\"unqualifiedElement\" type=\"string\"/>"
+                + "<element name=\"qualifiedElement\" form=\"qualified\" type=\"string\"/>"
+                + "</sequence>"
+                + "<attribute name=\"unqualifiedAttribute\" type=\"string\"/>"
+                + "<attribute name=\"qualifiedAttribute\" form=\"qualified\" type=\"string\"/>"
+                + "</complexType>"
+                + "</element>"
+                + "</schema>");
+
+        final String xml =
+            "<p:root xmlns:p=\"testNS\">" + "<unqualifiedElement/>"
+                + "<telem>my test data0</telem>"
+                + "<zap>my test data1</zap>"
+                + "</p:root>";
+
+        try {
+            final XMLDocument xmlDoc = hc.getXMLHelper().load(new StringReader(xml), null, options);// pass
+                                                                                                // during
+                                                                                                // invoke
+            
+            final DataObject root = xmlDoc.getRootObject();
+            assertNotSame(root.getType(), SDOPackage.eINSTANCE.getAnyTypeDataObject());
+            final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+            hc.getXMLHelper().save(xmlDoc, baos, null);
+            assertTrue(baos.toString().indexOf("<telem>my test data0</telem>") != -1);
+            assertTrue(baos.toString().indexOf("<zap>my test data1</zap>") != -1);
+        } catch (final Exception e) {// (Resource.IOWrappedException featureNotFound)
+            e.printStackTrace();
+        }
+    }
+
+    public void testOptionUnknownProperties2() throws IOException {
+        options = new HashMap();
+        options.put(SDOHelper.XMLOptions.XML_LOAD_UNKNOWN_PROPERTIES, Boolean.FALSE);
+
+        final HelperContext hc = SDOUtil.createHelperContext(true);
+        hc
+            .getXSDHelper()
+            .define("<schema xmlns=\"http://www.w3.org/2001/XMLSchema\" targetNamespace=\"testNS\">" + "<element name=\"root\">"
+                + "<complexType>"
+                + "<sequence>"
+                + "<element name=\"unqualifiedElement\" type=\"string\"/>"
+                + "<element name=\"qualifiedElement\" form=\"qualified\" type=\"string\"/>"
+                + "</sequence>"
+                + "<attribute name=\"unqualifiedAttribute\" type=\"string\"/>"
+                + "<attribute name=\"qualifiedAttribute\" form=\"qualified\" type=\"string\"/>"
+                + "</complexType>"
+                + "</element>"
+                + "</schema>");
+
+        final String xml =
+            "<p:root xmlns:p=\"testNS\">" + "<unqualifiedElement/>"
+                + "<telem>my test data</telem>"
+                + "<telem1>my test data</telem1>"
+                + "</p:root>";
+
+        try {
+            final XMLDocument xmlDoc = hc.getXMLHelper().load(new StringReader(xml), null, options);// pass
+                                                                                                // on
+                                                                                                // invokation
+            final DataObject root = xmlDoc.getRootObject();
+            assertNotSame(root.getType(), SDOPackage.eINSTANCE.getAnyTypeDataObject());
+            fail();
+        } catch (final Exception e) {// (Resource.IOWrappedException featureNotFound)
+            // e.printStackTrace();
+            if (e.getMessage().indexOf("telem") != -1) {
+                Assert.assertTrue(true);
+            }
+        }
+    }
+}

Modified: incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java?view=diff&rev=556870&r1=556869&r2=556870
==============================================================================
--- incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java (original)
+++ incubator/tuscany/java/sdo/lib/src/main/java/org/apache/tuscany/sdo/api/SDOHelper.java Tue Jul 17 02:57:12 2007
@@ -398,6 +398,12 @@
      * To tolerate malformed elements and attributes (default unless set by System property XML.load.form.lax). 0 not to.  
      */
     final String XML_LOAD_LAX_FORM = "load malform";
+    
+    /**
+     * Allows you to record unknown features during deserialization/loading. 
+     * The default is Boolean.FALSE unless set to Boolean.TRUE explicitly. 
+     */
+    final String XML_LOAD_UNKNOWN_PROPERTIES = "load unknown properties";
   }
 
 }

Modified: incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOClass.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOClass.java?view=diff&rev=556870&r1=556869&r2=556870
==============================================================================
--- incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOClass.java (original)
+++ incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOClass.java Tue Jul 17 02:57:12 2007
@@ -17,7 +17,7 @@
     return result;
   }
 
-  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+  public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
   protected final String TEXT_1 = "";
   protected final String TEXT_2 = "/**" + NL + " * <copyright>" + NL + " * </copyright>" + NL + " *" + NL + " * ";
   protected final String TEXT_3 = "Id";

Modified: incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOFactoryClass.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOFactoryClass.java?view=diff&rev=556870&r1=556869&r2=556870
==============================================================================
--- incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOFactoryClass.java (original)
+++ incubator/tuscany/java/sdo/tools/src/main/java/org/apache/tuscany/sdo/generate/templates/model/SDOFactoryClass.java Tue Jul 17 02:57:12 2007
@@ -37,7 +37,7 @@
     return result;
   }
 
-  protected final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
+  public final String NL = nl == null ? (System.getProperties().getProperty("line.separator")) : nl;
   protected final String TEXT_1 = "";
   protected final String TEXT_2 = "/**" + NL + " * <copyright>" + NL + " * </copyright>" + NL + " *" + NL + " * ";
   protected final String TEXT_3 = "Id";



---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org