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 2006/05/05 17:58:36 UTC
svn commit: r400094 - in /incubator/tuscany/java/sdo/impl/src:
main/java/org/apache/tuscany/sdo/impl/ClassImpl.java
main/java/org/apache/tuscany/sdo/util/SDOUtil.java
test/java/org/apache/tuscany/sdo/test/DefineTypeTestCase.java
Author: frankb
Date: Fri May 5 08:58:35 2006
New Revision: 400094
URL: http://svn.apache.org/viewcvs?rev=400094&view=rev
Log:
Minor improvement to SDOUtil.setSequenced and setOpen methods
Modified:
incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ClassImpl.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/DefineTypeTestCase.java
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ClassImpl.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ClassImpl.java?rev=400094&r1=400093&r2=400094&view=diff
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ClassImpl.java (original)
+++ incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/impl/ClassImpl.java Fri May 5 08:58:35 2006
@@ -96,6 +96,7 @@
switch (ExtendedMetaData.INSTANCE.getFeatureKind(eStructuralFeature))
{
case ExtendedMetaData.ELEMENT_WILDCARD_FEATURE:
+ if (eStructuralFeature == ExtendedMetaData.INSTANCE.getMixedFeature(this)) break;
case ExtendedMetaData.ATTRIBUTE_WILDCARD_FEATURE:
case ExtendedMetaData.GROUP_FEATURE:
return true;
Modified: incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sdo/impl/src/main/java/org/apache/tuscany/sdo/util/SDOUtil.java?rev=400094&r1=400093&r2=400094&view=diff
==============================================================================
--- 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 5 08:58:35 2006
@@ -262,16 +262,8 @@
public static void setOpen(Type type, boolean isOpen)
{
- boolean hasProperties =
- (type.isSequenced()) ?
- type.getProperties().size() > 1 :
- !type.getProperties().isEmpty();
-
- if (type.isDataType() || hasProperties)
- {
- if (type.getName() != null) //FB TEMP ... figure out how to handle document root
- throw new IllegalArgumentException(); // type must a non dataType with no properties yet
- }
+ if (isOpen == type.isOpen()) return;
+
if (isOpen)
{
EAttribute eAttribute = EcoreFactory.eINSTANCE.createEAttribute();
@@ -291,18 +283,25 @@
eAttribute.setVolatile(true);
}
}
+ else
+ {
+ EClass eClass = (EClass)type;
+ EAttribute any = (EAttribute)eClass.getEStructuralFeature("any");
+ eClass.getEStructuralFeatures().remove(any);
+ }
}
public static void setSequenced(Type type, boolean isSequenced)
{
- if ((isSequenced && type.isSequenced()) ||
- !isSequenced && !type.isSequenced()) return;
+ if (isSequenced == type.isSequenced()) return;
+ // currently, we require setSequenced to be called first, before anything else is added to the type.
if (type.isDataType() || !type.getProperties().isEmpty())
{
- if (type.getName() != null) //FB TEMP ... figure out how to handle document root
+ if (type.getName() != null) // document root is a special case
throw new IllegalArgumentException();
}
+
if (isSequenced) {
EClass eClass = (EClass)type;
ExtendedMetaData.INSTANCE.setContentKind(eClass, ExtendedMetaData.MIXED_CONTENT);
@@ -314,7 +313,11 @@
mixedFeature.setUpperBound(-1);
eClass.getEStructuralFeatures().add(mixedFeature);
ExtendedMetaData.INSTANCE.setFeatureKind(mixedFeature, ExtendedMetaData.ELEMENT_WILDCARD_FEATURE);
- ExtendedMetaData.INSTANCE.setName(mixedFeature, ":mixed");
+ ExtendedMetaData.INSTANCE.setName(mixedFeature, ":mixed");
+ }
+ else
+ {
+ // nothing to do, because of current restriction that setSequence must be called first.
}
}
Modified: incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DefineTypeTestCase.java
URL: http://svn.apache.org/viewcvs/incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DefineTypeTestCase.java?rev=400094&r1=400093&r2=400094&view=diff
==============================================================================
--- incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DefineTypeTestCase.java (original)
+++ incubator/tuscany/java/sdo/impl/src/test/java/org/apache/tuscany/sdo/test/DefineTypeTestCase.java Fri May 5 08:58:35 2006
@@ -457,7 +457,6 @@
ByteArrayOutputStream baos = new ByteArrayOutputStream();
xmlHelper.save(quote, "http://www.example.com/mixed", "mixedStockQuote", baos);
assertTrue(TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(MIXED_XML)));
-
}
public void testDefineSequencedOpenType() throws Exception
@@ -500,7 +499,7 @@
// Define a global type
DataObject globalType = factory.create("commonj.sdo", "Type");
globalType.set("uri", "http://www.example.com/open");
- // no need to specify the type's name
+ // Don't set the type's name - null is used for types containing global properties.
DataObject symbolProperty = globalType.createDataObject("property");
symbolProperty.set("name", "symbol");
@@ -520,7 +519,6 @@
Type definedGlobalType = types.getType("http://www.example.com/open", null);
Property definedSymbolProperty = definedGlobalType.getProperty("symbol");
- //sequence.add(definedSymbolProperty, "fbnt");
quote.setString(definedSymbolProperty, "fbnt");
sequence.add("\n ");
@@ -541,9 +539,7 @@
ByteArrayOutputStream baos = new ByteArrayOutputStream();
xmlHelper.save(quote, "http://www.example.com/mixed", "mixedOpenStockQuote", baos);
- xmlHelper.save(quote, "http://www.example.com/mixed", "mixedOpenStockQuote", System.out);
assertTrue(TestUtil.equalXmlFiles(new ByteArrayInputStream(baos.toByteArray()), getClass().getResource(MIXEDOPEN_XML)));
-
}
@@ -581,7 +577,7 @@
// Define a global type
DataObject globalType = factory.create("commonj.sdo", "Type");
globalType.set("uri", "http://www.example.com/open");
- // no need to specify the type's name
+ // Don't set the type's name - null is used for types containing global properties.
DataObject symbolProperty = globalType.createDataObject("property");
symbolProperty.set("name", "symbol");