You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tuscany.apache.org by fr...@apache.org on 2007/05/04 18:20:38 UTC
svn commit: r535315 - in /incubator/tuscany/java/sdo/impl/src:
main/java/org/apache/tuscany/sdo/helper/
main/java/org/apache/tuscany/sdo/impl/ main/java/org/apache/tuscany/sdo/util/
test/java/org/apache/tuscany/sdo/test/
Author: frankb
Date: Fri May 4 09:20:37 2007
New Revision: 535315
URL: http://svn.apache.org/viewvc?view=rev&rev=535315
Log:
Fix for TUSCANY-1223
Modified:
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/AttributeImpl.java
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SerializeTypesTestCase.java
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java?view=diff&rev=535315&r1=535314&r2=535315
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/helper/SDOXSDEcoreBuilder.java Fri May 4 09:20:37 2007
@@ -155,7 +155,8 @@
protected EClassifier getBuiltInEClassifier(String namespace, String name)
{
EClassifier eClassifier = (EClassifier)SDOUtil.getXSDSDOType(name);
- if (eClassifier == null) {
+ if (eClassifier == null || "base64Binary".equals(name))
+ {
eClassifier = super.getBuiltInEClassifier(namespace, name);
}
return eClassifier;
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/AttributeImpl.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/AttributeImpl.java?view=diff&rev=535315&r1=535314&r2=535315
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/AttributeImpl.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/AttributeImpl.java Fri May 4 09:20:37 2007
@@ -22,14 +22,18 @@
import java.util.List;
import org.apache.tuscany.sdo.SDOPackage;
+import org.apache.tuscany.sdo.model.ModelFactory;
+import org.apache.tuscany.sdo.model.impl.ModelFactoryImpl;
import org.apache.tuscany.sdo.util.BasicSequence;
import org.apache.tuscany.sdo.util.DataObjectUtil;
import org.apache.tuscany.sdo.util.SDOUtil;
import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EClassifier;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.emf.ecore.InternalEObject;
import org.eclipse.emf.ecore.impl.EAttributeImpl;
import org.eclipse.emf.ecore.util.FeatureMap;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
import commonj.sdo.Property;
import commonj.sdo.Sequence;
@@ -123,12 +127,10 @@
*/
public Type getType()
{
- return (Type)getEType();
- /*
EClassifier eType = getEType();
- //FB More temporary hacks
- return eType instanceof Type ? (Type)getEType() : null;
- */
+ if (eType == XMLTypePackage.Literals.BASE64_BINARY)
+ return ((ModelFactoryImpl)ModelFactory.INSTANCE).getBytes();
+ return (Type)eType;
}
/**
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java?view=diff&rev=535315&r1=535314&r2=535315
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/DataObjectUtil.java Fri May 4 09:20:37 2007
@@ -70,6 +70,7 @@
import org.eclipse.emf.ecore.xmi.impl.XMLOptionsImpl;
import org.eclipse.emf.ecore.xmi.impl.XMLParserPoolImpl;
import org.eclipse.emf.ecore.xml.type.XMLTypeFactory;
+import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
import org.eclipse.xsd.util.XSDResourceFactoryImpl;
import commonj.sdo.ChangeSummary;
@@ -383,7 +384,8 @@
public static boolean isInternalProperty(EStructuralFeature eStructuralFeature)
{
//return FeatureMapUtil.isFeatureMap(eStructuralFeature);
- return !(eStructuralFeature.getEType() instanceof Type);
+ EClassifier eClassifier = eStructuralFeature.getEType();
+ return !(eClassifier instanceof Type || eClassifier == XMLTypePackage.Literals.BASE64_BINARY);
}
public static List getInstanceProperties(DataObject dataObject)
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java?view=diff&rev=535315&r1=535314&r2=535315
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java Fri May 4 09:20:37 2007
@@ -181,16 +181,8 @@
public static Type getXSDSDOType(String xsdType)
{
Type type = null;
- //if ("anyType".equals(xsdType)) {
- // type = (Type)SDOPackage.eINSTANCE.getDataObject();
- //} else {
- String name = (String)xsdToSdoMappings.get(xsdType);
- if (name != null) {
- type = (Type)((ModelFactoryImpl)ModelFactory.INSTANCE).getEClassifier(name);
- } else {
- type = (Type)SDOExtendedMetaData.INSTANCE.getType(XMLTypePackage.eINSTANCE, xsdType);
- }
- //}
+ String name = (String)xsdToSdoMappings.get(xsdType);
+ if (name != null) type = (Type)((ModelFactoryImpl)ModelFactory.INSTANCE).getEClassifier(name);
return type;
}
@@ -866,7 +858,7 @@
xsdToSdoMappings.put("anySimpleType", "Object");
xsdToSdoMappings.put("anyType", "DataObject");
xsdToSdoMappings.put("anyURI", "URI");
- xsdToSdoMappings.put("base64Binary", "Base64Bytes");
+ xsdToSdoMappings.put("base64Binary", "Bytes");
xsdToSdoMappings.put("boolean", "Boolean");
xsdToSdoMappings.put("byte", "Byte");
xsdToSdoMappings.put("date", "YearMonthDay");
Modified: incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SerializeTypesTestCase.java
URL: http://svn.apache.org/viewvc/incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SerializeTypesTestCase.java?view=diff&rev=535315&r1=535314&r2=535315
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SerializeTypesTestCase.java (original)
+++ incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/SerializeTypesTestCase.java Fri May 4 09:20:37 2007
@@ -34,6 +34,7 @@
import commonj.sdo.helper.DataFactory;
import commonj.sdo.helper.HelperContext;
import commonj.sdo.helper.TypeHelper;
+import commonj.sdo.helper.XMLDocument;
public class SerializeTypesTestCase extends TestCase {
@@ -125,5 +126,65 @@
assertEquals(loadedRootObject.get("lastName"), customer1.get("lastName"));
DataObject loadedAddress = loadedRootObject.getDataObject("address");
assertEquals(loadedAddress.get("addrSt"), address.get("addrSt"));
+ }
+
+ private String xsdString =
+ "<xsd:schema targetNamespace=\"http://www.example.com/simple\" " +
+ "xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\" " +
+ "xmlns:simple=\"http://www.example.com/simple\"> " +
+ "<xsd:element name=\"bytesTypeTest\" type=\"simple:BytesTypeTest\"/> " +
+ "<xsd:complexType name=\"BytesTypeTest\"> " +
+ "<xsd:sequence> " +
+ "<xsd:element name=\"base64Binary\" type=\"xsd:base64Binary\"/> " +
+ "<xsd:element name=\"hexBinary\" type=\"xsd:hexBinary\"/> " +
+ "</xsd:sequence> " +
+ "</xsd:complexType> " +
+ "</xsd:schema>";
+
+
+ private String testString = "Hello World";
+ private String testStringInBase64 = "SGVsbG8gV29ybGQ=";
+ private String testStringInHex = "48656C6C6F20576F726C64";
+
+ public void testSerializeXSDBase64BinaryRoundTrip() throws Exception {
+ hc.getXSDHelper().define(xsdString);
+
+ DataObject typeTest = hc.getDataFactory().create("http://www.example.com/simple", "BytesTypeTest");
+ typeTest.setBytes("base64Binary", testString.getBytes());
+
+ String output = hc.getXMLHelper().save(typeTest, typeTest.getType().getURI(), "bytesTypeTest");
+
+ String startTag = "<base64Binary>";
+ String endTag = "</base64Binary>";
+ int start = output.indexOf(startTag) + startTag.length();
+ int end = output.indexOf(endTag);
+
+ String value = output.substring(start, end);
+ assertEquals(testStringInBase64, value);
+
+ XMLDocument xmlDoc = hc.getXMLHelper().load(output);
+ typeTest = xmlDoc.getRootObject();
+ assertEquals(testString, new String(typeTest.getBytes("base64Binary")));
+ }
+
+ public void testSerializeXSDHexBinaryRoundTrip() throws Exception {
+ hc.getXSDHelper().define(xsdString);
+
+ DataObject typeTest = hc.getDataFactory().create("http://www.example.com/simple", "BytesTypeTest");
+ typeTest.setBytes("hexBinary", testString.getBytes());
+
+ String output = hc.getXMLHelper().save(typeTest, typeTest.getType().getURI(), "bytesTypeTest");
+
+ String startTag = "<hexBinary>";
+ String endTag = "</hexBinary>";
+ int start = output.indexOf(startTag) + startTag.length();
+ int end = output.indexOf(endTag);
+
+ String value = output.substring(start, end);
+ assertEquals(testStringInHex, value);
+
+ XMLDocument xmlDoc = hc.getXMLHelper().load(output);
+ typeTest = xmlDoc.getRootObject();
+ assertEquals(testString, new String(typeTest.getBytes("hexBinary")));
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: tuscany-commits-unsubscribe@ws.apache.org
For additional commands, e-mail: tuscany-commits-help@ws.apache.org