[jboss-svn-commits] JBL Code SVN: r31250 - in labs/jbosstm/trunk/ArjunaCore/arjuna: classes/com/arjuna/ats/arjuna/objectstore/type and 2 other directories.
jboss-svn-commits at lists.jboss.org
jboss-svn-commits at lists.jboss.org
Wed Jan 27 07:52:59 EST 2010
Author: jhalliday
Date: 2010-01-27 07:52:59 -0500 (Wed, 27 Jan 2010)
New Revision: 31250
Added:
labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/ObjectStoreTypeManagerTest.java
Modified:
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/ObjectStoreType.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/type/ObjectStoreTypeManager.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/type/ObjectStoreTypeMap.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/abstractrecords/DisposeRecord.java
labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/abstractrecords/PersistenceRecord.java
Log:
Make ObjectStoreTypeManager threadsafe and typesafe. Add unit test coverage. JBTM-690
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/ObjectStoreType.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/ObjectStoreType.java 2010-01-27 12:21:27 UTC (rev 31249)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/ObjectStoreType.java 2010-01-27 12:52:59 UTC (rev 31250)
@@ -118,7 +118,7 @@
*/
@SuppressWarnings("unchecked")
- public final static Class typeToClass (int rt)
+ public final static Class<? extends ObjectStore> typeToClass (int rt)
{
switch (rt)
{
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/type/ObjectStoreTypeManager.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/type/ObjectStoreTypeManager.java 2010-01-27 12:21:27 UTC (rev 31249)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/type/ObjectStoreTypeManager.java 2010-01-27 12:52:59 UTC (rev 31250)
@@ -34,6 +34,7 @@
import java.util.ArrayList;
import com.arjuna.ats.arjuna.coordinator.RecordType;
+import com.arjuna.ats.arjuna.objectstore.ObjectStore;
/**
* This allows users to define a mapping between record type integers
@@ -42,8 +43,7 @@
public class ObjectStoreTypeManager
{
- @SuppressWarnings("unchecked")
- public Class getObjectStoreClass (int type)
+ public synchronized Class<? extends ObjectStore> getObjectStoreClass (int type)
{
/*
* Stop at first hit.
@@ -58,8 +58,7 @@
return null;
}
- @SuppressWarnings("unchecked")
- public int getType (Class c)
+ public synchronized int getType (Class<? extends ObjectStore> c)
{
for (int i = 0; i < _map.size(); i++)
{
@@ -70,7 +69,7 @@
return RecordType.UNTYPED;
}
- public void add (ObjectStoreTypeMap map)
+ public synchronized void add (ObjectStoreTypeMap map)
{
_map.add(map);
}
@@ -85,12 +84,7 @@
_map = new ArrayList<ObjectStoreTypeMap>();
}
- private ArrayList<ObjectStoreTypeMap> _map;
+ private final ArrayList<ObjectStoreTypeMap> _map;
private static final ObjectStoreTypeManager _instance = new ObjectStoreTypeManager();
-
- static
- {
- // trawl through properties to find bindings
- }
}
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/type/ObjectStoreTypeMap.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/type/ObjectStoreTypeMap.java 2010-01-27 12:21:27 UTC (rev 31249)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/arjuna/objectstore/type/ObjectStoreTypeMap.java 2010-01-27 12:52:59 UTC (rev 31250)
@@ -31,15 +31,16 @@
package com.arjuna.ats.arjuna.objectstore.type;
+import com.arjuna.ats.arjuna.objectstore.ObjectStore;
+
/**
* This allows users to define a mapping between record type integers
* and specific Class-es. This replaces Gandiva from previous releases.
*/
public interface ObjectStoreTypeMap
-{
- @SuppressWarnings("unchecked")
- public Class getObjectStoreClass ();
+{
+ public Class<? extends ObjectStore> getObjectStoreClass ();
public int getType ();
}
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/abstractrecords/DisposeRecord.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/abstractrecords/DisposeRecord.java 2010-01-27 12:21:27 UTC (rev 31249)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/abstractrecords/DisposeRecord.java 2010-01-27 12:52:59 UTC (rev 31250)
@@ -259,7 +259,6 @@
return res;
}
- @SuppressWarnings("unchecked")
public boolean restore_state (InputObjectState os, int ot)
{
boolean res = true;
@@ -271,9 +270,9 @@
if (ObjectStoreType.valid(objStoreType))
{
- Class osc = ObjectStoreType.typeToClass(objStoreType);
+ Class<? extends ObjectStore> osc = ObjectStoreType.typeToClass(objStoreType);
- store = (ObjectStore) osc.newInstance();
+ store = osc.newInstance();
store.unpack(os);
objectUid = UidHelper.unpackFrom(os);
Modified: labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/abstractrecords/PersistenceRecord.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/abstractrecords/PersistenceRecord.java 2010-01-27 12:21:27 UTC (rev 31249)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/classes/com/arjuna/ats/internal/arjuna/abstractrecords/PersistenceRecord.java 2010-01-27 12:52:59 UTC (rev 31250)
@@ -430,7 +430,6 @@
return true;
}
- @SuppressWarnings("unchecked")
public boolean restore_state (InputObjectState os, int ot)
{
if (tsLogger.arjLogger.isDebugEnabled())
@@ -460,9 +459,9 @@
if (store == null)
{
- Class oc = ObjectStoreType.typeToClass(objStoreType);
+ Class<? extends ObjectStore> oc = ObjectStoreType.typeToClass(objStoreType);
- store = (ObjectStore) oc.newInstance();
+ store = oc.newInstance();
}
store.unpack(os);
Added: labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/ObjectStoreTypeManagerTest.java
===================================================================
--- labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/ObjectStoreTypeManagerTest.java (rev 0)
+++ labs/jbosstm/trunk/ArjunaCore/arjuna/tests/classes/com/hp/mwtests/ts/arjuna/objectstore/ObjectStoreTypeManagerTest.java 2010-01-27 12:52:59 UTC (rev 31250)
@@ -0,0 +1,75 @@
+/*
+ * JBoss, Home of Professional Open Source
+ * Copyright 2010, Red Hat, Inc. and/or its affiliates,
+ * and individual contributors as indicated by the @author tags.
+ * See the copyright.txt in the distribution for a
+ * full listing of individual contributors.
+ * This copyrighted material is made available to anyone wishing to use,
+ * modify, copy, or redistribute it subject to the terms and conditions
+ * of the GNU Lesser General Public License, v. 2.1.
+ * This program is distributed in the hope that it will be useful, but WITHOUT A
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
+ * PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details.
+ * You should have received a copy of the GNU Lesser General Public License,
+ * v.2.1 along with this distribution; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
+ * MA 02110-1301, USA.
+ *
+ * (C) 2010,
+ * @author JBoss, by Red Hat.
+ */
+package com.hp.mwtests.ts.arjuna.objectstore;
+
+import com.arjuna.ats.arjuna.coordinator.RecordType;
+import com.arjuna.ats.arjuna.objectstore.ObjectStore;
+import com.arjuna.ats.arjuna.objectstore.ObjectStoreType;
+import com.arjuna.ats.arjuna.objectstore.type.ObjectStoreTypeManager;
+import com.arjuna.ats.arjuna.objectstore.type.ObjectStoreTypeMap;
+import com.arjuna.ats.internal.arjuna.objectstore.VolatileStore;
+import org.junit.Test;
+import static org.junit.Assert.*;
+
+public class ObjectStoreTypeManagerTest
+{
+ @Test
+ public void testObjectStoreTypeManager()
+ {
+ Class<? extends ObjectStore> clazz = ObjectStoreType.typeToClass(ObjectStoreType.VOLATILE);
+ int typeCode = ObjectStoreType.classToType(clazz);
+
+ assertEquals(ObjectStoreType.VOLATILE, typeCode);
+
+ ObjectStoreTypeManager manager = ObjectStoreTypeManager.manager();
+
+ assertNull(manager.getObjectStoreClass(1001));
+ assertEquals(RecordType.UNTYPED, manager.getType(DummyObjectStoreImpl.class));
+
+ assertNull(ObjectStoreType.typeToClass(1001));
+ assertEquals(RecordType.UNTYPED, ObjectStoreType.classToType(DummyObjectStoreImpl.class));
+
+ manager.add(new DummyObjectStoreTypeMap());
+
+ assertEquals(DummyObjectStoreImpl.class, manager.getObjectStoreClass(1001));
+ assertEquals(1001, manager.getType(DummyObjectStoreImpl.class));
+
+ assertEquals(DummyObjectStoreImpl.class, ObjectStoreType.typeToClass(1001));
+ assertEquals(1001, ObjectStoreType.classToType(DummyObjectStoreImpl.class));
+ }
+
+ class DummyObjectStoreTypeMap implements ObjectStoreTypeMap
+ {
+ @Override
+ public Class<? extends ObjectStore> getObjectStoreClass()
+ {
+ return DummyObjectStoreImpl.class;
+ }
+
+ @Override
+ public int getType()
+ {
+ return 1001;
+ }
+ }
+
+ class DummyObjectStoreImpl extends VolatileStore{}
+}
More information about the jboss-svn-commits
mailing list