You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by aa...@apache.org on 2009/09/14 23:34:45 UTC
svn commit: r814869 - in
/cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization:
BaseDeserializer.java SubgraphNode.java
xstream/PersistentCloneUnmarshalConverter.java
xstream/XStreamDeserializer.java
Author: aadamchik
Date: Mon Sep 14 21:34:44 2009
New Revision: 814869
URL: http://svn.apache.org/viewvc?rev=814869&view=rev
Log:
prototyping (de)serializer based on XStream
Modified:
cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/BaseDeserializer.java
cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/SubgraphNode.java
cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/xstream/PersistentCloneUnmarshalConverter.java
cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/xstream/XStreamDeserializer.java
Modified: cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/BaseDeserializer.java
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/BaseDeserializer.java?rev=814869&r1=814868&r2=814869&view=diff
==============================================================================
--- cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/BaseDeserializer.java (original)
+++ cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/BaseDeserializer.java Mon Sep 14 21:34:44 2009
@@ -29,10 +29,16 @@
public abstract class BaseDeserializer implements SubgraphDeserializer {
protected int commitCountThreshold = 1000;
+ protected boolean committing = true;
public abstract <T> T deserialize(ObjectContext context,
Subgraph<T> subgraph, InputStream in);
+ /**
+ * Returns the max size of the commit batch. This is needed to constrain
+ * memory use. The default is 1000 objects. Note that setting "committing"
+ * flag to false would cause deserializer to ignore this setting.
+ */
public int getCommitCountThreshold() {
return commitCountThreshold;
}
@@ -40,4 +46,16 @@
public void setCommitCountThreshold(int commitCountThreshold) {
this.commitCountThreshold = commitCountThreshold;
}
+
+ /**
+ * Returns true if deserializer will commit deserialized objects. True is
+ * the default.
+ */
+ public boolean isCommitting() {
+ return committing;
+ }
+
+ public void setCommitting(boolean committing) {
+ this.committing = committing;
+ }
}
Modified: cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/SubgraphNode.java
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/SubgraphNode.java?rev=814869&r1=814868&r2=814869&view=diff
==============================================================================
--- cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/SubgraphNode.java (original)
+++ cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/SubgraphNode.java Mon Sep 14 21:34:44 2009
@@ -70,8 +70,8 @@
}
SubgraphNode(ArcProperty incomingProperty) {
+ this(incomingProperty.getTargetDescriptor());
this.incomingProperty = incomingProperty;
- this.classDescriptor = incomingProperty.getTargetDescriptor();
}
/**
Modified: cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/xstream/PersistentCloneUnmarshalConverter.java
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/xstream/PersistentCloneUnmarshalConverter.java?rev=814869&r1=814868&r2=814869&view=diff
==============================================================================
--- cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/xstream/PersistentCloneUnmarshalConverter.java (original)
+++ cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/xstream/PersistentCloneUnmarshalConverter.java Mon Sep 14 21:34:44 2009
@@ -69,6 +69,8 @@
.getClassDescriptor(entityName);
final Object object = descriptor.createObject();
+
+ objectContext.registerNewObject(object);
DeserializerCounter deserializerCounter = getDeserialierCounter(context);
Modified: cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/xstream/XStreamDeserializer.java
URL: http://svn.apache.org/viewvc/cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/xstream/XStreamDeserializer.java?rev=814869&r1=814868&r2=814869&view=diff
==============================================================================
--- cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/xstream/XStreamDeserializer.java (original)
+++ cayenne/sandbox/cayenne-serialization/src/main/java/org/apache/cayenne/serialization/xstream/XStreamDeserializer.java Mon Sep 14 21:34:44 2009
@@ -37,10 +37,19 @@
XStream xstream = XStreamUtil.defaultXStream(subgraph.getRootNode()
.getClassDescriptor());
+ int commitCountThreshold = isCommitting() ? getCommitCountThreshold()
+ : 0;
+
xstream.registerConverter(new PersistentCloneUnmarshalConverter(
context, commitCountThreshold));
- return (T) xstream.fromXML(in);
+ T object = (T) xstream.fromXML(in);
+
+ if (isCommitting()) {
+ context.commitChanges();
+ }
+
+ return object;
}
}