You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by fa...@apache.org on 2008/12/18 06:44:44 UTC
svn commit: r727649 - in /openjpa/trunk:
openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingSerializer.java
openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataSerializer.java
Author: faywang
Date: Wed Dec 17 21:44:44 2008
New Revision: 727649
URL: http://svn.apache.org/viewvc?rev=727649&view=rev
Log:
OPENJPA-782: adding element-collection and collection-table
support for XML Serializer
Modified:
openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingSerializer.java
openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataSerializer.java
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingSerializer.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingSerializer.java?rev=727649&r1=727648&r2=727649&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingSerializer.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/main/java/org/apache/openjpa/persistence/jdbc/XMLPersistenceMappingSerializer.java Wed Dec 17 21:44:44 2008
@@ -39,6 +39,7 @@
import org.apache.openjpa.jdbc.meta.MappingRepository;
import org.apache.openjpa.jdbc.meta.QueryResultMapping;
import org.apache.openjpa.jdbc.meta.SequenceMapping;
+import org.apache.openjpa.jdbc.meta.ValueMappingImpl;
import org.apache.openjpa.jdbc.meta.ValueMappingInfo;
import org.apache.openjpa.jdbc.meta.strats.EnumValueHandler;
import org.apache.openjpa.jdbc.meta.strats.FlatClassStrategy;
@@ -392,6 +393,27 @@
endElement("join-table");
}
return;
+ case ELEM_COLL:
+ if (field.getMappingInfo().hasSchemaComponents()
+ || field.getElementMapping().getValueInfo()
+ .hasSchemaComponents()) {
+ String table = field.getMappingInfo().getTableName();
+ if (table != null) {
+ int index = table.indexOf('.');
+ if (index < 0)
+ addAttribute("name", table);
+ else {
+ addAttribute("schema", table.substring(0, index));
+ addAttribute("name", table.substring(index + 1));
+ }
+ }
+ startElement("collection-table");
+ ValueMappingImpl elem = (ValueMappingImpl) field.getElement();
+ serializeColumns(elem.getValueInfo(), ColType.COL,
+ null);
+ endElement("collection-table");
+ }
+ return;
}
serializeColumns(field.getValueInfo(), ColType.COL,
Modified: openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataSerializer.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataSerializer.java?rev=727649&r1=727648&r2=727649&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataSerializer.java (original)
+++ openjpa/trunk/openjpa-persistence/src/main/java/org/apache/openjpa/persistence/XMLPersistenceMetaDataSerializer.java Wed Dec 17 21:44:44 2008
@@ -919,6 +919,11 @@
strategy = "many-to-many";
cascades = fmd.getElement();
break;
+ case ELEM_COLL:
+ if (isMetaDataMode())
+ addElementCollectionAttributes(fmd);
+ strategy = "element-collection";
+ break;
}
if (isMappingMode())
addStrategyMappingAttributes(fmd);
@@ -1069,6 +1074,8 @@
case JavaTypes.ARRAY:
case JavaTypes.COLLECTION:
case JavaTypes.MAP:
+ if (fmd.isElementCollection())
+ return PersistenceStrategy.ELEM_COLL;
mappedBy = fmd.getMappedByMetaData();
if (mappedBy == null || mappedBy.getTypeCode() != JavaTypes.PC)
return PersistenceStrategy.MANY_MANY;
@@ -1134,6 +1141,16 @@
}
/**
+ * Add element-collection attributes.
+ */
+ private void addElementCollectionAttributes(FieldMetaData fmd)
+ throws SAXException {
+ if (fmd.isInDefaultFetchGroup())
+ addAttribute("fetch", "EAGER");
+ addTargetEntityAttribute(fmd);
+ }
+
+ /**
* Add a target-entity attribute to collection and map fields that do
* not use generics.
*/