Author: mikedd
Date: Mon Nov 22 19:18:16 2010
New Revision: 1037844
URL: http://svn.apache.org/viewvc?rev=1037844&view=rev
Log:
OPENJPA-1888: Add generics to ManagedCache and AbstractStoreManager.
Submitted By: Guy Korland
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/abstractstore/AbstractStoreManager.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ManagedCache.java
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/abstractstore/AbstractStoreManager.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/abstractstore/AbstractStoreManager.java?rev=1037844&r1=1037843&r2=1037844&view=diff
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/abstractstore/AbstractStoreManager.java
(original)
+++
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/abstractstore/AbstractStoreManager.java
Mon Nov 22 19:18:16 2010
@@ -234,7 +234,7 @@ public abstract class AbstractStoreManag
* bulk loading APIs, overriding this method to be more clever may be
* advantageous.
*/
- public Collection loadAll(Collection sms, PCState state, int load,
+ public Collection<Object> loadAll(Collection<OpenJPAStateManager> sms,
PCState state, int load,
FetchConfiguration fetch, Object edata) {
return ImplHelper.loadAll(sms, this, state, load, fetch, edata);
}
@@ -244,18 +244,16 @@ public abstract class AbstractStoreManag
* states, and delegates to
* {...@link
#flush(Collection,Collection,Collection,Collection,Collection)}.
*/
- public Collection flush(Collection sms) {
+ public Collection<Exception> flush(Collection<OpenJPAStateManager> sms) {
// break down state managers by state; initialize as empty lists;
// use constants for efficiency
- Collection pNew = new LinkedList();
- Collection pNewUpdated = new LinkedList();
- Collection pNewFlushedDeleted = new LinkedList();
- Collection pDirty = new LinkedList();
- Collection pDeleted = new LinkedList();
-
- OpenJPAStateManager sm;
- for (Iterator itr = sms.iterator(); itr.hasNext();) {
- sm = (OpenJPAStateManager) itr.next();
+ Collection<OpenJPAStateManager> pNew = new
LinkedList<OpenJPAStateManager>();
+ Collection<OpenJPAStateManager> pNewUpdated = new
LinkedList<OpenJPAStateManager>();
+ Collection<OpenJPAStateManager> pNewFlushedDeleted = new
LinkedList<OpenJPAStateManager>();
+ Collection<OpenJPAStateManager> pDirty = new
LinkedList<OpenJPAStateManager>();
+ Collection<OpenJPAStateManager> pDeleted = new
LinkedList<OpenJPAStateManager>();
+
+ for (OpenJPAStateManager sm : sms) {
if (sm.getPCState() == PCState.PNEW && !sm.isFlushed())
pNew.add(sm);
else if (sm.getPCState() == PCState.PNEW && sm.isFlushed())
@@ -472,9 +470,9 @@ public abstract class AbstractStoreManag
* may have been in a previous flush invocation's persistentDirty list.
* @return a collection of exceptions encountered during flushing.
*/
- protected abstract Collection flush(Collection pNew,
- Collection pNewUpdated, Collection pNewFlushedDeleted,
- Collection pDirty, Collection pDeleted);
+ protected abstract Collection<Exception>
flush(Collection<OpenJPAStateManager> pNew,
+ Collection<OpenJPAStateManager> pNewUpdated,
Collection<OpenJPAStateManager> pNewFlushedDeleted,
+ Collection<OpenJPAStateManager> pDirty,
Collection<OpenJPAStateManager> pDeleted);
/**
* Return a new configuration instance for this runtime. Configuration
@@ -498,8 +496,8 @@ public abstract class AbstractStoreManag
* <li>{...@link OpenJPAConfiguration#OPTION_DATASTORE_CONNECTION}</li>
* </ul>
*/
- protected Collection getUnsupportedOptions() {
- Collection c = new HashSet();
+ protected Collection<String> getUnsupportedOptions() {
+ Collection<String> c = new HashSet<String>();
c.add(OpenJPAConfiguration.OPTION_OPTIMISTIC);
c.add(OpenJPAConfiguration.OPTION_ID_DATASTORE);
c.add(OpenJPAConfiguration.OPTION_INC_FLUSH);
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ManagedCache.java
URL:
http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ManagedCache.java?rev=1037844&r1=1037843&r2=1037844&view=diff
==============================================================================
---
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ManagedCache.java
(original)
+++
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ManagedCache.java
Mon Nov 22 19:18:16 2010
@@ -24,14 +24,12 @@ import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.HashSet;
-import java.util.Iterator;
import java.util.List;
import java.util.Map;
import org.apache.openjpa.lib.util.Localizer;
import org.apache.openjpa.lib.util.ReferenceHashSet;
import org.apache.openjpa.util.Exceptions;
-import org.apache.openjpa.util.InternalException;
import org.apache.openjpa.util.UserException;
/**
@@ -42,11 +40,11 @@ class ManagedCache implements Serializab
private static final Localizer _loc =
Localizer.forPackage(ManagedCache.class);
- private Map _main; // oid -> sm
- private Map _conflicts = null; // conflict oid -> new sm
- private Map _news = null; // tmp id -> new sm
- private Collection _embeds = null; // embedded/non-persistent sms
- private Collection _untracked = null; // hard refs to untracked sms
+ private Map<Object,StateManagerImpl> _main; // oid -> sm
+ private Map<Object,StateManagerImpl> _conflicts = null; // conflict oid ->
new sm
+ private Map<Object,StateManagerImpl> _news = null; // tmp id -> new sm
+ private Collection<StateManagerImpl> _embeds = null; //
embedded/non-persistent sms
+ private Collection<StateManagerImpl> _untracked = null; // hard refs to
untracked sms
private BrokerImpl broker;
/**
@@ -54,7 +52,7 @@ class ManagedCache implements Serializab
*/
ManagedCache(BrokerImpl broker) {
this.broker = broker;
- _main = broker.newManagedObjectCache();
+ _main = (Map<Object, StateManagerImpl>) broker.newManagedObjectCache();
}
/**
@@ -66,7 +64,7 @@ class ManagedCache implements Serializab
return null;
// check main cache for oid
- StateManagerImpl sm = (StateManagerImpl) _main.get(oid);
+ StateManagerImpl sm = _main.get(oid);
StateManagerImpl sm2;
if (sm != null) {
// if it's a new instance, we know it's the only match, because
@@ -78,7 +76,7 @@ class ManagedCache implements Serializab
// sm is deleted; check conflict cache
if (_conflicts != null) {
- sm2 = (StateManagerImpl) _conflicts.get(oid);
+ sm2 = _conflicts.get(oid);
if (sm2 != null)
return sm2;
}
@@ -86,9 +84,9 @@ class ManagedCache implements Serializab
// at this point sm is null or deleted; check the new cache for
// any matches. this allows us to match app id objects to new
- // instances without permanant oids
+ // instances without permanent oids
if (allowNew && _news != null && !_news.isEmpty()) {
- sm2 = (StateManagerImpl) _news.get(oid);
+ sm2 = _news.get(oid);
if (sm2 != null)
return sm2;
}
@@ -101,7 +99,7 @@ class ManagedCache implements Serializab
public void add(StateManagerImpl sm) {
if (!sm.isIntercepting()) {
if (_untracked == null)
- _untracked = new HashSet();
+ _untracked = new HashSet<StateManagerImpl>();
_untracked.add(sm);
}
@@ -116,14 +114,13 @@ class ManagedCache implements Serializab
// permanent oid yet
if (sm.isNew()) {
if (_news == null)
- _news = new HashMap();
+ _news = new HashMap<Object,StateManagerImpl>();
_news.put(sm.getId(), sm);
return;
}
// initializing persistent instance; put in main cache
- StateManagerImpl orig = (StateManagerImpl) _main.put
- (sm.getObjectId(), sm);
+ StateManagerImpl orig = _main.put(sm.getObjectId(), sm);
if (orig != null) {
_main.put(sm.getObjectId(), orig);
throw new UserException(_loc.get("dup-load", sm.getObjectId(),
@@ -140,7 +137,7 @@ class ManagedCache implements Serializab
// if it has a permanent oid, remove from main / conflict cache,
// else remove from embedded/nontrans cache, and if not there
// remove from new cache
- Object orig;
+ StateManagerImpl orig;
if (sm.getObjectId() != null) {
orig = _main.remove(id);
if (orig != sm) {
@@ -179,14 +176,14 @@ class ManagedCache implements Serializab
// not be in new cache if another new instance had same id
StateManagerImpl orig = null;
if (_news != null) {
- orig = (StateManagerImpl) _news.remove(id);
+ orig = _news.remove(id);
if (orig != null && orig != sm)
_news.put(id, orig); // put back
}
// put in main cache, but make sure we don't replace another
// instance with the same oid
- orig = (StateManagerImpl) _main.put(sm.getObjectId(), sm);
+ orig = _main.put(sm.getObjectId(), sm);
if (orig != null) {
_main.put(sm.getObjectId(), orig);
if (!orig.isDeleted())
@@ -197,7 +194,7 @@ class ManagedCache implements Serializab
// same oid as deleted instance; put in conflict cache
if (_conflicts == null)
- _conflicts = new HashMap();
+ _conflicts = new HashMap<Object,StateManagerImpl>();
_conflicts.put(sm.getObjectId(), sm);
}
}
@@ -210,10 +207,9 @@ class ManagedCache implements Serializab
// id, but it could have been in conflict cache
StateManagerImpl orig;
if (sm.getObjectId() == id) {
- orig = (_conflicts == null) ? null
- : (StateManagerImpl) _conflicts.remove(id);
+ orig = (_conflicts == null) ? null : _conflicts.remove(id);
if (orig == sm) {
- orig = (StateManagerImpl) _main.put(id, sm);
+ orig = _main.put(id, sm);
if (orig != null && !orig.isDeleted()) {
_main.put(sm.getObjectId(), orig);
throw new UserException(_loc.get("dup-oid-assign",
@@ -232,8 +228,8 @@ class ManagedCache implements Serializab
if (_news != null)
_news.remove(id);
- // and put into main cache now that id is asssigned
- orig = (StateManagerImpl) _main.put(sm.getObjectId(), sm);
+ // and put into main cache now that id is assigned
+ orig = _main.put(sm.getObjectId(), sm);
if (orig != null && orig != sm && !orig.isDeleted()) {
// put back orig and throw error
_main.put(sm.getObjectId(), orig);
@@ -246,7 +242,7 @@ class ManagedCache implements Serializab
/**
* Return a copy of all cached persistent objects.
*/
- public Collection copy() {
+ public Collection<StateManagerImpl> copy() {
// proxies not included here because the state manager is always
// present in other caches too
@@ -260,19 +256,18 @@ class ManagedCache implements Serializab
if (size == 0)
return Collections.EMPTY_LIST;
- List copy = new ArrayList(size);
- for (Iterator itr = _main.values().iterator(); itr.hasNext();)
- copy.add(itr.next());
+ List<StateManagerImpl> copy = new ArrayList<StateManagerImpl>(size);
+ for (StateManagerImpl sm : _main.values())
+ copy.add(sm);
if (_conflicts != null && !_conflicts.isEmpty())
- for (Iterator itr = _conflicts.values().iterator();
- itr.hasNext();)
- copy.add(itr.next());
+ for (StateManagerImpl sm : _conflicts.values())
+ copy.add(sm);
if (_news != null && !_news.isEmpty())
- for (Iterator itr = _news.values().iterator(); itr.hasNext();)
- copy.add(itr.next());
+ for (StateManagerImpl sm : _news.values())
+ copy.add(sm);
if (_embeds != null && !_embeds.isEmpty())
- for (Iterator itr = _embeds.iterator(); itr.hasNext();)
- copy.add(itr.next());
+ for (StateManagerImpl sm : _embeds)
+ copy.add(sm);
return copy;
}
@@ -280,7 +275,7 @@ class ManagedCache implements Serializab
* Clear the cache.
*/
public void clear() {
- _main = broker.newManagedObjectCache();
+ _main = (Map<Object, StateManagerImpl>) broker.newManagedObjectCache();
if (_conflicts != null)
_conflicts = null;
if (_news != null)
@@ -303,7 +298,7 @@ class ManagedCache implements Serializab
if (_untracked == null)
return;
- for (Iterator iter = _untracked.iterator(); iter.hasNext(); )
- ((StateManagerImpl) iter.next()).dirtyCheck();
+ for (StateManagerImpl sm : _untracked)
+ sm.dirtyCheck();
}
}