You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pc...@apache.org on 2006/11/15 00:42:44 UTC
svn commit: r475059 - in /incubator/openjpa/trunk:
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/
openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/
openjpa-kernel/src/main/ja...
Author: pcl
Date: Tue Nov 14 15:42:42 2006
New Revision: 475059
URL: http://svn.apache.org/viewvc?view=rev&rev=475059
Log:
made a number of configuration-related classes serializable to facilitate alternate means of configuration population; moved away from a couple more usages of commons collections LinkedMap; added new lifecycle callback to ProductDerivation interface
Modified:
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/NativeJDBCSeq.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ClassMapping.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Joinable.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/NoneMappingDefaults.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Strategy.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/StrategyInstaller.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueHandler.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueMapping.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueMappingImpl.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ColumnIO.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DynamicSchemaFactory.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LazySchemaFactory.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ReferenceCounter.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Schema.java
incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/BeanLifecycleCallbacks.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleCallbacks.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataFactory.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Extensions.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FetchGroup.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InheritanceComparator.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/LifecycleMetaData.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Order.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/QueryMetaData.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/SequenceMetaData.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaData.java
incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java
incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/AbstractProductDerivation.java
incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivation.java
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/NativeJDBCSeq.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/NativeJDBCSeq.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/NativeJDBCSeq.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/NativeJDBCSeq.java Tue Nov 14 15:42:42 2006
@@ -196,7 +196,7 @@
: new Object[]{ name };
_select = MessageFormat.format(_format, subs);
}
-
+
protected Object nextInternal(JDBCStore store, ClassMapping mapping)
throws SQLException {
Connection conn = getConnection(store);
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/TableJDBCSeq.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,7 @@
*/
package org.apache.openjpa.jdbc.kernel;
+import java.io.Serializable;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
@@ -69,8 +70,8 @@
private static final Localizer _loc = Localizer.forPackage
(TableJDBCSeq.class);
- private JDBCConfiguration _conf = null;
- private Log _log = null;
+ private transient JDBCConfiguration _conf = null;
+ private transient Log _log = null;
private int _alloc = 50;
private final Status _stat = new Status();
@@ -188,7 +189,7 @@
public void endConfiguration() {
buildTable();
}
-
+
public void addSchema(ClassMapping mapping, SchemaGroup group) {
// table already exists?
if (group.isKnownTable(_table))
@@ -624,7 +625,8 @@
/**
* Helper struct to hold status information.
*/
- protected static class Status {
+ protected static class Status
+ implements Serializable {
public long seq = 1L;
public long max = 0L;
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ClassMapping.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ClassMapping.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ClassMapping.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ClassMapping.java Tue Nov 14 15:42:42 2006
@@ -21,13 +21,12 @@
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
-import org.apache.commons.collections.set.ListOrderedSet;
import org.apache.openjpa.enhance.PersistenceCapable;
import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
import org.apache.openjpa.jdbc.kernel.JDBCStore;
@@ -621,8 +620,7 @@
_assignMaps = subs;
} else {
int size = (int) (subs.length * 1.33 + 2);
- Set independent = ListOrderedSet.decorate(new HashSet(size),
- new ArrayList(subs.length + 1));
+ Set independent = new LinkedHashSet(size);
if (isMapped())
independent.add(this);
independent.addAll(Arrays.asList(subs));
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Joinable.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Joinable.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Joinable.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Joinable.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,7 @@
*/
package org.apache.openjpa.jdbc.meta;
+import java.io.Serializable;
import java.sql.SQLException;
import org.apache.openjpa.jdbc.kernel.JDBCStore;
@@ -38,7 +39,8 @@
*
* @author Abe White
*/
-public interface Joinable {
+public interface Joinable
+ extends Serializable {
/**
* Return the field index of this joinable, or -1 if not a field.
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingDefaultsImpl.java Tue Nov 14 15:42:42 2006
@@ -44,7 +44,7 @@
public class MappingDefaultsImpl
implements MappingDefaults, Configurable {
- protected DBDictionary dict = null;
+ protected transient DBDictionary dict = null;
private String _baseClassStrategy = null;
private String _subclassStrategy = null;
private String _versionStrategy = null;
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingInfo.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,7 @@
*/
package org.apache.openjpa.jdbc.meta;
+import java.io.Serializable;
import java.sql.Types;
import java.util.ArrayList;
import java.util.Collections;
@@ -47,7 +48,8 @@
*
* @author Abe White
*/
-public abstract class MappingInfo {
+public abstract class MappingInfo
+ implements Serializable {
public static final int JOIN_NONE = 0;
public static final int JOIN_FORWARD = 1;
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/MappingRepository.java Tue Nov 14 15:42:42 2006
@@ -65,6 +65,7 @@
import org.apache.openjpa.jdbc.schema.SchemaGroup;
import org.apache.openjpa.jdbc.sql.DBDictionary;
import org.apache.openjpa.jdbc.sql.JoinSyntaxes;
+import org.apache.openjpa.lib.conf.Configurable;
import org.apache.openjpa.lib.conf.Configurations;
import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.meta.ClassMetaData;
@@ -94,8 +95,9 @@
"org.apache.openjpa.jdbc.meta.strats.EnumValueHandler");
}
- private DBDictionary _dict = null;
- private MappingDefaults _defaults = null;
+ private transient DBDictionary _dict = null;
+ private transient MappingDefaults _defaults = null;
+
private Map _results = new HashMap(); // object->queryresultmapping
private SchemaGroup _schema = null;
private StrategyInstaller _installer = null;
@@ -1158,7 +1160,7 @@
return NoneVersionStrategy.getInstance();
}
}
-
+
public void endConfiguration()
{
super.endConfiguration();
@@ -1167,5 +1169,10 @@
_dict = conf.getDBDictionaryInstance();
if (_defaults == null)
_defaults = conf.getMappingDefaultsInstance();
+ if (_schema != null && _schema instanceof Configurable) {
+ ((Configurable) _schema).setConfiguration(conf);
+ ((Configurable) _schema).startConfiguration();
+ ((Configurable) _schema).endConfiguration();
+ }
}
-}
+}
\ No newline at end of file
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/NoneMappingDefaults.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/NoneMappingDefaults.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/NoneMappingDefaults.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/NoneMappingDefaults.java Tue Nov 14 15:42:42 2006
@@ -21,6 +21,7 @@
import org.apache.openjpa.jdbc.schema.Schema;
import org.apache.openjpa.jdbc.schema.Table;
import org.apache.openjpa.jdbc.schema.Unique;
+
import serp.util.Strings;
/**
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Strategy.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Strategy.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Strategy.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/Strategy.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,7 @@
*/
package org.apache.openjpa.jdbc.meta;
+import java.io.Serializable;
import java.sql.SQLException;
import org.apache.openjpa.jdbc.kernel.JDBCStore;
@@ -28,7 +29,8 @@
* @author Abe White
* @since 0.4.0
*/
-public interface Strategy {
+public interface Strategy
+ extends Serializable {
/**
* Return the alias of this strategy. For custom strategies, return the
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/StrategyInstaller.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/StrategyInstaller.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/StrategyInstaller.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/StrategyInstaller.java Tue Nov 14 15:42:42 2006
@@ -15,7 +15,7 @@
*/
package org.apache.openjpa.jdbc.meta;
-import org.apache.openjpa.jdbc.conf.JDBCConfiguration;
+import java.io.Serializable;
/**
* Installs mapping strategies.
@@ -24,9 +24,9 @@
* @nojavadoc
* @since 0.4.0
*/
-public abstract class StrategyInstaller {
+public abstract class StrategyInstaller
+ implements Serializable {
- protected final JDBCConfiguration conf;
protected final MappingRepository repos;
/**
@@ -34,7 +34,6 @@
*/
public StrategyInstaller(MappingRepository repos) {
this.repos = repos;
- this.conf = (JDBCConfiguration) repos.getConfiguration();
}
/**
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueHandler.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueHandler.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueHandler.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueHandler.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,7 @@
*/
package org.apache.openjpa.jdbc.meta;
+import java.io.Serializable;
import java.sql.SQLException;
import org.apache.openjpa.jdbc.kernel.JDBCFetchConfiguration;
@@ -30,7 +31,8 @@
* @author Abe White
* @since 0.4.0
*/
-public interface ValueHandler {
+public interface ValueHandler
+ extends Serializable {
/**
* Map the given value and return all mapped columns, or simply return an
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueMapping.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueMapping.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueMapping.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueMapping.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,7 @@
*/
package org.apache.openjpa.jdbc.meta;
+import java.io.Serializable;
import java.sql.SQLException;
import org.apache.openjpa.jdbc.schema.Column;
@@ -34,7 +35,7 @@
* @since 0.4.0
*/
public interface ValueMapping
- extends ValueMetaData, MetaDataContext {
+ extends ValueMetaData, MetaDataContext, Serializable {
/**
* Standard forward join.
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueMappingImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueMappingImpl.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueMappingImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/meta/ValueMappingImpl.java Tue Nov 14 15:42:42 2006
@@ -48,7 +48,7 @@
private static final Localizer _loc = Localizer.forPackage
(ValueMappingImpl.class);
- private final ValueMappingInfo _info;
+ private ValueMappingInfo _info;
private ValueHandler _handler = null;
private ClassMapping[] _typeArr = null;
@@ -70,6 +70,13 @@
_info = owner.getMappingRepository().newMappingInfo(this);
_info.setUseClassCriteria(owner.getMappingRepository().
getMappingDefaults().useClassCriteria());
+ }
+
+ /**
+ * Constructor for deserialization.
+ */
+ protected ValueMappingImpl() {
+ super();
}
public ValueMappingInfo getValueInfo() {
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ColumnIO.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ColumnIO.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ColumnIO.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ColumnIO.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,8 @@
*/
package org.apache.openjpa.jdbc.schema;
+import java.io.Serializable;
+
/**
* Metadata about column I/O in a specific context. In the context of
* a foreign key, the standard foreign key columns are indexed first, then
@@ -22,7 +24,8 @@
*
* @author Abe White
*/
-public class ColumnIO {
+public class ColumnIO
+ implements Serializable {
public static final ColumnIO UNRESTRICTED = new ColumnIO() {
public void setInsertable(int col, boolean insertable) {
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DynamicSchemaFactory.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DynamicSchemaFactory.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DynamicSchemaFactory.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/DynamicSchemaFactory.java Tue Nov 14 15:42:42 2006
@@ -35,7 +35,7 @@
extends SchemaGroup
implements SchemaFactory, Configurable {
- private DBDictionary _dict = null;
+ private transient DBDictionary _dict = null;
private String _schema = null;
public void setConfiguration(Configuration conf) {
@@ -49,7 +49,7 @@
public void endConfiguration() {
}
-
+
public SchemaGroup readSchema() {
return this;
}
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ForeignKey.java Tue Nov 14 15:42:42 2006
@@ -19,8 +19,8 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
+import java.util.LinkedHashMap;
-import org.apache.commons.collections.map.LinkedMap;
import org.apache.commons.lang.ObjectUtils;
import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.lib.util.StringDistance;
@@ -65,17 +65,18 @@
*/
public static final int ACTION_DEFAULT = 5;
- private static Localizer _loc = Localizer.forPackage(ForeignKey.class);
+ private static final Localizer _loc =
+ Localizer.forPackage(ForeignKey.class);
private String _pkTableName = null;
private String _pkSchemaName = null;
private String _pkColumnName = null;
private int _seq = 0;
- private LinkedMap _joins = null;
- private LinkedMap _joinsPK = null;
- private LinkedMap _consts = null;
- public LinkedMap _constsPK = null;
+ private LinkedHashMap _joins = null;
+ private LinkedHashMap _joinsPK = null;
+ private LinkedHashMap _consts = null;
+ private LinkedHashMap _constsPK = null;
private int _delAction = ACTION_NONE;
private int _upAction = ACTION_NONE;
private int _index = 0;
@@ -525,10 +526,10 @@
_pkTable = pkTable;
if (_joins == null)
- _joins = new LinkedMap();
+ _joins = new LinkedHashMap();
_joins.put(local, toPK);
if (_joinsPK == null)
- _joinsPK = new LinkedMap();
+ _joinsPK = new LinkedHashMap();
_joinsPK.put(toPK, local);
// force re-cache
@@ -550,7 +551,7 @@
_pkTable = pkTable;
if (_constsPK == null)
- _constsPK = new LinkedMap();
+ _constsPK = new LinkedHashMap();
_constsPK.put(toPK, val);
// force re-cache
@@ -564,7 +565,7 @@
*/
public void joinConstant(Column col, Object val) {
if (_consts == null)
- _consts = new LinkedMap();
+ _consts = new LinkedHashMap();
_consts.put(col, val);
// force re-cache
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LazySchemaFactory.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LazySchemaFactory.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LazySchemaFactory.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/LazySchemaFactory.java Tue Nov 14 15:42:42 2006
@@ -36,10 +36,11 @@
extends SchemaGroup
implements SchemaFactory, Configurable {
- private JDBCConfiguration _conf = null;
- private SchemaGenerator _gen = null;
- private Connection _conn = null;
- private DatabaseMetaData _meta = null;
+ private transient JDBCConfiguration _conf = null;
+ private transient Connection _conn = null;
+ private transient DatabaseMetaData _meta = null;
+ private transient SchemaGenerator _gen = null;
+
private boolean _indexes = false;
private boolean _pks = false;
private boolean _fks = false;
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/NameSet.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,7 @@
*/
package org.apache.openjpa.jdbc.schema;
+import java.io.Serializable;
import java.util.HashSet;
import java.util.Set;
@@ -28,7 +29,8 @@
*
* @author Abe White
*/
-public class NameSet {
+public class NameSet
+ implements Serializable {
private static final Localizer _loc = Localizer.forPackage(NameSet.class);
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ReferenceCounter.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ReferenceCounter.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ReferenceCounter.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/ReferenceCounter.java Tue Nov 14 15:42:42 2006
@@ -15,13 +15,16 @@
*/
package org.apache.openjpa.jdbc.schema;
+import java.io.Serializable;
+
/**
* Some schema components count references so that unused components
* can be detected.
*
* @author Abe White
*/
-class ReferenceCounter {
+class ReferenceCounter
+ implements Serializable {
private int _count = 0;
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Schema.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Schema.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Schema.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Schema.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,7 @@
*/
package org.apache.openjpa.jdbc.schema;
+import java.io.Serializable;
import java.util.Map;
import java.util.TreeMap;
@@ -26,7 +27,7 @@
* @author Abe White
*/
public class Schema
- implements Comparable {
+ implements Comparable, Serializable {
private String _name = null;
private SchemaGroup _group = null;
Modified: incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java (original)
+++ incubator/openjpa/trunk/openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/schema/Table.java Tue Nov 14 15:42:42 2006
@@ -21,8 +21,8 @@
import java.util.Iterator;
import java.util.Map;
import java.util.TreeMap;
+import java.util.LinkedHashMap;
-import org.apache.commons.collections.map.LinkedMap;
import org.apache.commons.lang.StringUtils;
import org.apache.openjpa.lib.meta.SourceTracker;
@@ -269,7 +269,7 @@
else
col = new Column(name, this);
if (_colMap == null)
- _colMap = new LinkedMap();
+ _colMap = new LinkedHashMap();
_colMap.put(name.toUpperCase(), col);
_cols = null;
return col;
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/BeanLifecycleCallbacks.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/BeanLifecycleCallbacks.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/BeanLifecycleCallbacks.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/BeanLifecycleCallbacks.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,9 @@
*/
package org.apache.openjpa.event;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import java.lang.reflect.Method;
import org.apache.openjpa.lib.util.Localizer;
@@ -31,7 +34,7 @@
private static final Localizer _loc = Localizer.forPackage
(BeanLifecycleCallbacks.class);
- private Object _listener;
+ private transient Object _listener;
/**
* Constructor. Make the callback on an instance of the given type.
@@ -49,8 +52,12 @@
*/
public BeanLifecycleCallbacks(Class cls, Method method, boolean arg) {
super(method, arg);
+ _listener = newListener(cls);
+ }
+
+ private Object newListener(Class cls) {
try {
- _listener = cls.newInstance();
+ return cls.newInstance();
} catch (Throwable t) {
throw new UserException(_loc.get("bean-constructor",
cls.getName()), t);
@@ -66,5 +73,18 @@
callback.invoke(_listener, new Object[]{ obj, rel });
else
callback.invoke(_listener, new Object[]{ obj });
+ }
+
+ public void readExternal(ObjectInput in)
+ throws IOException, ClassNotFoundException {
+ super.readExternal(in);
+ Class cls = (Class) in.readObject();
+ _listener = newListener(cls);
+ }
+
+ public void writeExternal(ObjectOutput out)
+ throws IOException {
+ super.writeExternal(out);
+ out.writeObject(_listener.getClass());
}
}
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleCallbacks.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleCallbacks.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleCallbacks.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/LifecycleCallbacks.java Tue Nov 14 15:42:42 2006
@@ -15,12 +15,15 @@
*/
package org.apache.openjpa.event;
+import java.io.Serializable;
+
/**
* A lifecycle listener that responds to callbacks rather than events.
*
* @author Steve Kim
*/
-public interface LifecycleCallbacks {
+public interface LifecycleCallbacks
+ extends Serializable {
/**
* Return whether the given instance has a callback for the given
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/event/MethodLifecycleCallbacks.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,10 @@
*/
package org.apache.openjpa.event;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import java.lang.reflect.Method;
import java.util.Arrays;
@@ -27,12 +31,12 @@
* @author Steve Kim
*/
public class MethodLifecycleCallbacks
- implements LifecycleCallbacks {
+ implements LifecycleCallbacks, Externalizable {
private static final Localizer _loc = Localizer.forPackage
(MethodLifecycleCallbacks.class);
- private Method _callback;
+ private transient Method _callback;
private boolean _arg;
/**
@@ -137,5 +141,22 @@
}
return true;
+ }
+
+ public void readExternal(ObjectInput in)
+ throws IOException, ClassNotFoundException {
+ Class cls = (Class) in.readObject();
+ String methName = (String) in.readObject();
+ _arg = in.readBoolean();
+
+ Class[] args = _arg ? new Class[]{ Object.class } : null;
+ _callback = getMethod(cls, methName, args);
+ }
+
+ public void writeExternal(ObjectOutput out)
+ throws IOException {
+ out.writeObject(_callback.getClass());
+ out.writeObject(_callback.getName());
+ out.writeBoolean(_arg);
}
}
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataFactory.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataFactory.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataFactory.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/AbstractMetaDataFactory.java Tue Nov 14 15:42:42 2006
@@ -38,11 +38,12 @@
implements MetaDataFactory {
protected MetaDataRepository repos = null;
- protected Log log = null;
+ protected transient Log log = null;
protected File dir = null;
protected int store = STORE_DEFAULT;
protected boolean strict = false;
protected Set types = null;
+
/**
* Set of persistent type names supplied by user.
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ClassMetaData.java Tue Nov 14 15:42:42 2006
@@ -111,11 +111,11 @@
private static final Localizer _loc = Localizer.forPackage
(ClassMetaData.class);
- // the repository this class belongs to, if any, and source file
- private final MetaDataRepository _repos;
+ private MetaDataRepository _repos;
+ private transient ClassLoader _loader = null;
+
private final ValueMetaData _owner;
private final LifecycleMetaData _lifeMeta = new LifecycleMetaData(this);
- private ClassLoader _loader = null;
private File _srcFile = null;
private int _srcType = SRC_OTHER;
private String[] _comments = null;
@@ -537,7 +537,7 @@
* The datastore identity sequence name, or null for none.
*/
public String getIdentitySequenceName() {
- if (_seqName == DEFAULT_STRING) {
+ if (DEFAULT_STRING.equals(_seqName)) {
if (_super != null)
_seqName = getPCSuperclassMetaData().getIdentitySequenceName();
else
@@ -1279,7 +1279,7 @@
* The name of the datacache to use for this class, or null if none.
*/
public String getDataCacheName() {
- if (_cacheName == DEFAULT_STRING) {
+ if (DEFAULT_STRING.equals(_cacheName)) {
if (_super != null)
_cacheName = getPCSuperclassMetaData().getDataCacheName();
else
@@ -1353,7 +1353,7 @@
* The name of the detach state field, or null if none.
*/
public String getDetachedState() {
- if (_detachState == DEFAULT_STRING) {
+ if (DEFAULT_STRING.equals(_detachState)) {
ClassMetaData sup = getPCSuperclassMetaData();
if (sup != null && sup.isDetachable() == isDetachable())
_detachState = sup.getDetachedState();
@@ -2246,13 +2246,13 @@
// only copy this information if it wasn't set explicitly for this
// instance
- if (_cacheName == DEFAULT_STRING)
+ if (DEFAULT_STRING.equals(_cacheName))
_cacheName = meta.getDataCacheName();
if (_cacheTimeout == Integer.MIN_VALUE)
_cacheTimeout = meta.getDataCacheTimeout();
if (_detachable == null)
_detachable = meta._detachable;
- if (_detachState == DEFAULT_STRING)
+ if (DEFAULT_STRING.equals(_detachState))
_detachState = meta.getDetachedState();
// synch field information; first remove extra fields
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Extensions.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Extensions.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Extensions.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Extensions.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,7 @@
*/
package org.apache.openjpa.meta;
+import java.io.Serializable;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
@@ -35,7 +36,8 @@
*
* @author Abe White
*/
-public abstract class Extensions {
+public abstract class Extensions
+ implements Serializable {
public static final String OPENJPA = "openjpa";
@@ -412,7 +414,8 @@
/**
* Key class.
*/
- private static class HashKey {
+ private static class HashKey
+ implements Serializable {
public final String vendor;
public final String key;
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FetchGroup.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FetchGroup.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FetchGroup.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FetchGroup.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,7 @@
*/
package org.apache.openjpa.meta;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -30,7 +31,8 @@
/**
* Captures fetch group metadata.
*/
-public class FetchGroup {
+public class FetchGroup
+ implements Serializable {
/**
* Name of the default fetch group.
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/FieldMetaData.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,10 @@
*/
package org.apache.openjpa.meta;
+import java.io.Externalizable;
+import java.io.IOException;
+import java.io.ObjectInput;
+import java.io.ObjectOutput;
import java.lang.reflect.Constructor;
import java.lang.reflect.Field;
import java.lang.reflect.InvocationTargetException;
@@ -62,7 +66,7 @@
public class FieldMetaData
extends Extensions
implements ValueMetaData, MetaDataContext, MetaDataModes, Commentable {
-
+
/**
* Constant specifying that no null-value was given.
*/
@@ -156,13 +160,19 @@
private String _lfg = null;
private Boolean _lrs = null;
private String _extName = null;
- private Method _extMethod = DEFAULT_METHOD;
private String _factName = null;
- private Member _factMethod = DEFAULT_METHOD;
private String _extString = null;
private Map _extValues = Collections.EMPTY_MAP;
private Map _fieldValues = Collections.EMPTY_MAP;
- private Member _backingMember = null;
+
+ // Members aren't serializable. Use a proxy that can provide a Member
+ // to avoid writing the full Externalizable implementation.
+ private transient MemberProvider _backingMember = null;
+
+ // Members aren't serializable. Initializing _extMethod and _factMethod to
+ // DEFAULT_METHOD is sufficient to trigger lazy population of these fields.
+ private transient Method _extMethod = DEFAULT_METHOD;
+ private transient Member _factMethod = DEFAULT_METHOD;
// intermediate and impl data
private boolean _intermediate = true;
@@ -213,7 +223,7 @@
if (Modifier.isTransient(member.getModifiers()))
_transient = true;
- _backingMember = member;
+ _backingMember = new MemberProvider(member);
Class type;
Class[] types;
@@ -245,7 +255,7 @@
* Return the backing member supplied in {@link #backingMember}.
*/
public Member getBackingMember() {
- return _backingMember;
+ return _backingMember.getMember();
}
/**
@@ -782,7 +792,7 @@
* Logical inverse field.
*/
public String getInverse() {
- if (_inverse == ClassMetaData.DEFAULT_STRING)
+ if (ClassMetaData.DEFAULT_STRING.equals(_inverse))
_inverse = null;
return _inverse;
}
@@ -906,7 +916,7 @@
* The value sequence name, or null for none.
*/
public String getValueSequenceName() {
- if (_seqName == ClassMetaData.DEFAULT_STRING)
+ if (ClassMetaData.DEFAULT_STRING.equals(_seqName))
_seqName = null;
return _seqName;
}
@@ -1487,10 +1497,6 @@
return StoreContext.class.getName().equals(type.getName());
}
- public int hashCode() {
- return getFullName(true).hashCode();
- }
-
public boolean equals(Object other) {
if (other == this)
return true;
@@ -1713,7 +1719,7 @@
_extValues = Collections.EMPTY_MAP;
_fieldValues = Collections.EMPTY_MAP;
_primKey = field.isPrimaryKey();
- _backingMember = field.getBackingMember();
+ _backingMember = field._backingMember;
// embedded fields can't be versions
if (_owner.getEmbeddingMetaData() == null && _version == null)
@@ -1735,11 +1741,11 @@
_valStrategy = field.getValueStrategy();
if (_upStrategy == -1)
_upStrategy = field.getUpdateStrategy();
- if (_seqName == ClassMetaData.DEFAULT_STRING) {
+ if (ClassMetaData.DEFAULT_STRING.equals(_seqName)) {
_seqName = field.getValueSequenceName();
_seqMeta = null;
}
- if (_inverse == ClassMetaData.DEFAULT_STRING)
+ if (ClassMetaData.DEFAULT_STRING.equals(_inverse))
_inverse = field.getInverse();
// copy value metadata
@@ -1919,4 +1925,62 @@
{
_val.copy (vmd);
}
+
+ /**
+ * Serializable wrapper around a {@link Method} or {@link Field}. For
+ * space considerations, this does not support {@link Constructor}s.
+ */
+ private static class MemberProvider
+ implements Externalizable {
+
+ private transient Member _member;
+
+ private MemberProvider(Member member) {
+ if (_member instanceof Constructor)
+ throw new IllegalArgumentException();
+
+ _member = member;
+ }
+
+ public Member getMember() {
+ return _member;
+ }
+
+ public void readExternal(ObjectInput in)
+ throws IOException, ClassNotFoundException {
+ boolean isField = in.readBoolean();
+ Class cls = _member.getDeclaringClass();
+ String memberName = (String) in.readObject();
+ try {
+ if (isField)
+ _member = cls.getDeclaredField(memberName);
+ else {
+ Class[] parameterTypes = (Class[]) in.readObject();
+ _member = cls.getDeclaredMethod(memberName, parameterTypes);
+ }
+ } catch (SecurityException e) {
+ IOException ioe = new IOException(e.getMessage());
+ ioe.initCause(e);
+ throw ioe;
+ } catch (NoSuchFieldException e) {
+ IOException ioe = new IOException(e.getMessage());
+ ioe.initCause(e);
+ throw ioe;
+ } catch (NoSuchMethodException e) {
+ IOException ioe = new IOException(e.getMessage());
+ ioe.initCause(e);
+ throw ioe;
+ }
+ }
+
+ public void writeExternal(ObjectOutput out)
+ throws IOException {
+ boolean isField = _member instanceof Field;
+ out.writeBoolean(isField);
+ out.writeObject(_member.getDeclaringClass());
+ out.writeObject(_member.getName());
+ if (!isField)
+ out.writeObject(((Method) _member).getParameterTypes());
+ }
+ }
}
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InheritanceComparator.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InheritanceComparator.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InheritanceComparator.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/InheritanceComparator.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,7 @@
*/
package org.apache.openjpa.meta;
+import java.io.Serializable;
import java.util.Comparator;
/**
@@ -24,7 +25,7 @@
* @nojavadoc
*/
public class InheritanceComparator
- implements Comparator {
+ implements Comparator, Serializable {
private Class _base = Object.class;
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/LifecycleMetaData.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/LifecycleMetaData.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/LifecycleMetaData.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/LifecycleMetaData.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,7 @@
*/
package org.apache.openjpa.meta;
+import java.io.Serializable;
import java.util.Arrays;
import org.apache.openjpa.event.LifecycleCallbacks;
@@ -28,7 +29,8 @@
* @author Steve Kim
* @author Abe White
*/
-public class LifecycleMetaData {
+public class LifecycleMetaData
+ implements Serializable {
public static final int IGNORE_NONE = 0;
public static final int IGNORE_HIGH = 2 << 0;
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/MetaDataRepository.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,7 @@
*/
package org.apache.openjpa.meta;
+import java.io.Serializable;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -53,7 +54,7 @@
*/
public class MetaDataRepository
implements PCRegistry.RegisterClassListener, Configurable, Closeable,
- MetaDataModes {
+ MetaDataModes, Serializable {
/**
* Constant to not validate any metadata.
@@ -109,10 +110,11 @@
// map of classes to lists of their subclasses
private final Map _subs = Collections.synchronizedMap(new HashMap());
- private OpenJPAConfiguration _conf = null;
- private Log _log = null;
- private MetaDataFactory _factory = null;
- private InterfaceImplGenerator _implGen = null;
+ private transient OpenJPAConfiguration _conf = null;
+ private transient Log _log = null;
+ private transient InterfaceImplGenerator _implGen = null;
+ private transient MetaDataFactory _factory = null;
+
private int _resMode = MODE_META | MODE_MAPPING;
private int _sourceMode = MODE_META | MODE_MAPPING | MODE_QUERY;
private int _validate = VALIDATE_META | VALIDATE_UNENHANCED;
@@ -1458,6 +1460,10 @@
}
public void endConfiguration() {
+ initializeMetaDataFactory();
+ }
+
+ private void initializeMetaDataFactory() {
if (_factory == null) {
MetaDataFactory mdf = _conf.newMetaDataFactoryInstance();
if (mdf == null)
@@ -1789,7 +1795,8 @@
/**
* Query key struct.
*/
- private static class QueryKey {
+ private static class QueryKey
+ implements Serializable {
public String clsName;
public String name;
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Order.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Order.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Order.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/Order.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,7 @@
*/
package org.apache.openjpa.meta;
+import java.io.Serializable;
import java.util.Comparator;
/**
@@ -22,7 +23,8 @@
*
* @author Abe White
*/
-public interface Order {
+public interface Order
+ extends Serializable {
/**
* Token denoting to order by the element value.
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/QueryMetaData.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/QueryMetaData.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/QueryMetaData.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/QueryMetaData.java Tue Nov 14 15:42:42 2006
@@ -16,6 +16,7 @@
package org.apache.openjpa.meta;
import java.io.File;
+import java.io.Serializable;
import java.util.LinkedList;
import java.util.List;
@@ -32,7 +33,7 @@
* @author Steve Kim
*/
public class QueryMetaData
- implements MetaDataModes, SourceTracker, Commentable {
+ implements MetaDataModes, SourceTracker, Commentable, Serializable {
private static final String[] EMPTY_KEYS = new String[0];
private static final Object[] EMPTY_VALS = new Object[0];
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/SequenceMetaData.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/SequenceMetaData.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/SequenceMetaData.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/SequenceMetaData.java Tue Nov 14 15:42:42 2006
@@ -16,6 +16,7 @@
package org.apache.openjpa.meta;
import java.io.File;
+import java.io.Serializable;
import org.apache.commons.lang.StringUtils;
import org.apache.openjpa.conf.SeqValue;
@@ -36,7 +37,8 @@
* @since 0.4.0
*/
public class SequenceMetaData
- implements SourceTracker, MetaDataContext, Closeable, Commentable {
+ implements SourceTracker, MetaDataContext, Closeable, Commentable,
+ Serializable {
/**
* Sequence name that means to use the system default sequence.
@@ -63,11 +65,12 @@
private static final Localizer _loc = Localizer.forPackage
(SequenceMetaData.class);
- private final MetaDataRepository _repos;
+ private MetaDataRepository _repos;
+ private SequenceFactory _factory = null;
+
private final String _name;
private int _type = Seq.TYPE_DEFAULT;
private String _plugin = IMPL_NATIVE;
- private SequenceFactory _factory = null;
private File _source = null;
private Object _scope = null;
private int _srcType = SRC_OTHER;
@@ -78,7 +81,7 @@
private int _initial = -1;
// instantiated lazily
- private Seq _instance = null;
+ private transient Seq _instance = null;
/**
* Constructor; supply sequence name.
@@ -341,12 +344,13 @@
public void setComments(String[] comments) {
_comments = comments;
}
-
+
/**
* Allow facades to supply adapters from a spec sequence type to the
* OpenJPA sequence type.
*/
- public static interface SequenceFactory {
+ public static interface SequenceFactory
+ extends Serializable {
/**
* Transform the given class named in metadata into a sequence.
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaData.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaData.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaData.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaData.java Tue Nov 14 15:42:42 2006
@@ -15,6 +15,8 @@
*/
package org.apache.openjpa.meta;
+import java.io.Serializable;
+
/**
* Holds metadata on a value; this could be a field value, key value, or
* element value.
@@ -23,7 +25,7 @@
* @author Abe White
*/
public interface ValueMetaData
- extends MetaDataContext, MetaDataModes {
+ extends MetaDataContext, MetaDataModes, Serializable {
/**
* The operation is not cascaded to this field.
Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/meta/ValueMetaDataImpl.java Tue Nov 14 15:42:42 2006
@@ -36,7 +36,7 @@
// embedded metadata, make sure to add it to the copy() method
///////////////////////////////////////////////////////////////
- private final FieldMetaData _owner;
+ private FieldMetaData _owner;
private Class _decType = Object.class;
private int _decCode = JavaTypes.OBJECT;
private ClassMetaData _decTypeMeta = null;
@@ -57,6 +57,12 @@
protected ValueMetaDataImpl(FieldMetaData owner) {
_owner = owner;
+ }
+
+ /**
+ * Constructor for serialization.
+ */
+ protected ValueMetaDataImpl() {
}
public FieldMetaData getFieldMetaData() {
Modified: incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/AbstractProductDerivation.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/AbstractProductDerivation.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/AbstractProductDerivation.java (original)
+++ incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/AbstractProductDerivation.java Tue Nov 14 15:42:42 2006
@@ -1,69 +1,72 @@
-/*
- * Copyright 2006 The Apache Software Foundation.
- *
- * Licensed 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.openjpa.lib.conf;
-
-import java.io.File;
-
-/**
- * Abstract no-op product derivation for easy extension.
- *
- * @author Pinaki Poddar
- * @since 0.4.1
- */
-public abstract class AbstractProductDerivation
- implements ProductDerivation {
-
- public String getConfigurationPrefix() {
- return null;
- }
-
- public void validate()
- throws Exception {
- }
-
- public ConfigurationProvider loadGlobals(ClassLoader loader)
- throws Exception {
- return null;
- }
-
- public ConfigurationProvider loadDefaults(ClassLoader loader)
- throws Exception {
- return null;
- }
-
- public ConfigurationProvider load(String resource, String anchor,
- ClassLoader loader)
- throws Exception {
- return null;
- }
-
- public ConfigurationProvider load(File file, String anchor)
- throws Exception {
- return null;
- }
-
- public boolean beforeConfigurationConstruct(ConfigurationProvider cp) {
- return false;
- }
-
- public boolean beforeConfigurationLoad(Configuration conf) {
- return false;
- }
-
- public boolean afterSpecificationSet(Configuration conf) {
- return false;
- }
-}
+/*
+ * Copyright 2006 The Apache Software Foundation.
+ *
+ * Licensed 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.openjpa.lib.conf;
+
+import java.io.File;
+
+/**
+ * Abstract no-op product derivation for easy extension.
+ *
+ * @author Pinaki Poddar
+ * @since 0.4.1
+ */
+public abstract class AbstractProductDerivation
+ implements ProductDerivation {
+
+ public String getConfigurationPrefix() {
+ return null;
+ }
+
+ public void validate()
+ throws Exception {
+ }
+
+ public ConfigurationProvider loadGlobals(ClassLoader loader)
+ throws Exception {
+ return null;
+ }
+
+ public ConfigurationProvider loadDefaults(ClassLoader loader)
+ throws Exception {
+ return null;
+ }
+
+ public ConfigurationProvider load(String resource, String anchor,
+ ClassLoader loader)
+ throws Exception {
+ return null;
+ }
+
+ public ConfigurationProvider load(File file, String anchor)
+ throws Exception {
+ return null;
+ }
+
+ public boolean beforeConfigurationConstruct(ConfigurationProvider cp) {
+ return false;
+ }
+
+ public boolean beforeConfigurationLoad(Configuration conf) {
+ return false;
+ }
+
+ public boolean afterSpecificationSet(Configuration conf) {
+ return false;
+ }
+
+ public void beforeConfigurationClose(Configuration conf) {
+ }
+}
Modified: incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivation.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivation.java?view=diff&rev=475059&r1=475058&r2=475059
==============================================================================
--- incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivation.java (original)
+++ incubator/openjpa/trunk/openjpa-lib/src/main/java/org/apache/openjpa/lib/conf/ProductDerivation.java Tue Nov 14 15:42:42 2006
@@ -112,4 +112,11 @@
* @return true if given Configuration has been mutated.
*/
public boolean afterSpecificationSet(Configuration conf);
+
+ /**
+ * Called before the given Configuration is closed.
+ *
+ * @since 0.9.7
+ */
+ public void beforeConfigurationClose(Configuration conf);
}