You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by pp...@apache.org on 2009/09/29 01:51:35 UTC
svn commit: r819771 - in /openjpa/trunk:
openjpa-kernel/src/main/java/org/apache/openjpa/datacache/
openjpa-kernel/src/main/java/org/apache/openjpa/enhance/
openjpa-kernel/src/main/java/org/apache/openjpa/kernel/
openjpa-kernel/src/main/java/org/apache...
Author: ppoddar
Date: Mon Sep 28 23:51:33 2009
New Revision: 819771
URL: http://svn.apache.org/viewvc?rev=819771&view=rev
Log:
OPENJPA-1050: Use generics for DataCache
Modified:
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/AbstractDataCache.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCache.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryCacheStoreQuery.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryResult.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCDataGenerator.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingStoreManager.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StoreContext.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StoreManager.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/AbstractWriteBehindCache.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/SimpleWriteBehindCache.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/SimpleWriteBehindCallback.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/WriteBehindCache.java
openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/WriteBehindStoreManager.java
openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/CustomWriteBehindCache.java
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/AbstractDataCache.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/AbstractDataCache.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/AbstractDataCache.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/AbstractDataCache.java Mon Sep 28 23:51:33 2009
@@ -117,9 +117,9 @@
putAllInternal(existingUpdates);
if (log.isTraceEnabled()) {
- Collection addIds = new ArrayList(additions.size());
- Collection upIds = new ArrayList(newUpdates.size());
- Collection exIds = new ArrayList(existingUpdates.size());
+ Collection<Object> addIds = new ArrayList<Object>(additions.size());
+ Collection<Object> upIds = new ArrayList<Object>(newUpdates.size());
+ Collection<Object> exIds = new ArrayList<Object>(existingUpdates.size());
for (Iterator iter = additions.iterator(); iter.hasNext();)
addIds.add(((DataCachePCData) iter.next()).getId());
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCache.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCache.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCache.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCache.java Mon Sep 28 23:51:33 2009
@@ -97,8 +97,8 @@
* @param deletes A collection of object IDs that have been deleted
* and must therefore be dropped from the cache.
*/
- public void commit(Collection additions, Collection newUpdates,
- Collection existingUpdates, Collection deletes);
+ public void commit(Collection<DataCachePCData> additions, Collection<DataCachePCData> newUpdates,
+ Collection<DataCachePCData> existingUpdates, Collection<Object> deletes);
/**
* Returns <code>true</code> if this cache contains data
@@ -110,7 +110,7 @@
/**
* Returns the indexes of the oids in this cache.
*/
- public BitSet containsAll(Collection oids);
+ public BitSet containsAll(Collection<Object> oids);
/**
* Return the cached object for the given oid. Modifying the returned
@@ -165,7 +165,7 @@
* @return the indexes of the removed oids
* @see #remove
*/
- public BitSet removeAll(Collection oids);
+ public BitSet removeAll(Collection<Object> oids);
/**
* Evict all values of a specified type.
@@ -197,7 +197,7 @@
* @return the indexes of the pinned oids
* @see #pin
*/
- public BitSet pinAll(Collection oids);
+ public BitSet pinAll(Collection<Object> oids);
/**
* Pin all oids for the given type.
@@ -223,7 +223,7 @@
* @return the indexes of the unpinned oids
* @see #unpin
*/
- public BitSet unpinAll(Collection oids);
+ public BitSet unpinAll(Collection<Object> oids);
/**
* Unpin all oids associaed with the given type from the cache.
@@ -261,9 +261,13 @@
public void close ();
/**
- * returns objects from the caches for a given list of keys
+ * Gets objects from the caches for a given list of keys.
+ * The returned map has the same keys as the given keys.
+ * If the cache does not contain data for a specific key,
+ * the returned map still contains the key with a null value.
+ *
*/
- public Map getAll(List keys);
+ public Map<Object,DataCachePCData> getAll(List<Object> keys);
/**
* Returns number of read/write request and cache hit ratio data.
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/DataCacheStoreManager.java Mon Sep 28 23:51:33 2009
@@ -77,8 +77,7 @@
public void setContext(StoreContext ctx) {
_ctx = ctx;
- _gen = ctx.getConfiguration().getDataCacheManagerInstance().
- getPCDataGenerator();
+ _gen = ctx.getConfiguration().getDataCacheManagerInstance().getPCDataGenerator();
super.setContext(ctx);
}
@@ -110,7 +109,7 @@
/**
* Evict all members of the given classes.
*/
- private void evictTypes(Collection classes) {
+ private void evictTypes(Collection<Class<?>> classes) {
if (classes.isEmpty())
return;
@@ -118,10 +117,8 @@
getMetaDataRepositoryInstance();
ClassLoader loader = _ctx.getClassLoader();
- Class cls;
DataCache cache;
- for (Iterator itr = classes.iterator(); itr.hasNext();) {
- cls = (Class) itr.next();
+ for (Class<?> cls : classes) {
cache = mdr.getMetaData(cls, loader, false).getDataCache();
if (cache != null)
cache.removeAll(cls, false);
@@ -134,20 +131,20 @@
private void updateCaches() {
if(_ctx.getCacheStoreMode() != DataCacheStoreMode.BYPASS ) {
// map each data cache to the modifications we need to perform
- Map modMap = null;
+ Map<DataCache,Modifications> modMap = null;
+ if ((_ctx.getPopulateDataCache() && _inserts != null) || _updates != null || _deletes != null)
+ modMap = new HashMap<DataCache,Modifications>();
Modifications mods;
DataCachePCData data;
DataCache cache;
// create pc datas for inserts
if (_ctx.getPopulateDataCache() && _inserts != null) {
- for(OpenJPAStateManager sm : _inserts) {
+ for (OpenJPAStateManager sm : _inserts) {
cache = sm.getMetaData().getDataCache();
if (cache == null)
continue;
- if (modMap == null)
- modMap = new HashMap();
mods = getModifications(modMap, cache);
data = newPCData(sm);
data.store(sm);
@@ -159,7 +156,7 @@
if (_updates != null) {
BitSet fields;
OpenJPAStateManager sm;
- for(Map.Entry<OpenJPAStateManager, BitSet> entry : _updates.entrySet()) {
+ for (Map.Entry<OpenJPAStateManager, BitSet> entry : _updates.entrySet()) {
sm = entry.getKey();
fields = entry.getValue();
@@ -173,8 +170,6 @@
// to the underlying cache are valid. If the commit had not
// already succeeded, then we'd want to clone the retrieved
// object.
- if (modMap == null)
- modMap = new HashMap();
data = cache.get(sm.getObjectId());
mods = getModifications(modMap, cache);
@@ -194,13 +189,11 @@
// remove pcdatas for deletes
if (_deletes != null) {
- for(OpenJPAStateManager sm : _deletes) {
+ for (OpenJPAStateManager sm : _deletes) {
cache = sm.getMetaData().getDataCache();
if (cache == null)
continue;
- if (modMap == null)
- modMap = new HashMap();
mods = getModifications(modMap, cache);
mods.deletes.add(sm.getObjectId());
}
@@ -208,19 +201,18 @@
// notify the caches of the changes
if (modMap != null) {
- for (Iterator itr = modMap.entrySet().iterator(); itr.hasNext();) {
- Map.Entry entry = (Map.Entry) itr.next();
- cache = (DataCache) entry.getKey();
- mods = (Modifications) entry.getValue();
+ for (Map.Entry<DataCache,Modifications> entry : modMap.entrySet()) {
+ cache = entry.getKey();
+ mods = entry.getValue();
// make sure we're not caching old versions
cache.writeLock();
try {
- transformToVersionSafePCDatas(cache, mods.additions);
- transformToVersionSafePCDatas(cache, mods.newUpdates);
- transformToVersionSafePCDatas(cache, mods.existingUpdates);
- cache.commit(mods.additions, mods.newUpdates,
- mods.existingUpdates, mods.deletes);
+ cache.commit(
+ transformToVersionSafePCDatas(cache, mods.additions),
+ transformToVersionSafePCDatas(cache, mods.newUpdates),
+ transformToVersionSafePCDatas(cache, mods.existingUpdates),
+ mods.deletes);
} finally {
cache.writeUnlock();
}
@@ -239,12 +231,12 @@
QueryCache queryCache = _ctx.getConfiguration().
getDataCacheManagerInstance().getSystemQueryCache();
if (queryCache != null) {
- Collection pers = _ctx.getPersistedTypes();
- Collection del = _ctx.getDeletedTypes();
- Collection up = _ctx.getUpdatedTypes();
+ Collection<Class<?>> pers = _ctx.getPersistedTypes();
+ Collection<Class<?>> del = _ctx.getDeletedTypes();
+ Collection<Class<?>> up = _ctx.getUpdatedTypes();
int size = pers.size() + del.size() + up.size();
if (size > 0) {
- Collection types = new ArrayList(size);
+ Collection<Class<?>> types = new ArrayList<Class<?>>(size);
types.addAll(pers);
types.addAll(del);
types.addAll(up);
@@ -258,33 +250,29 @@
* Transforms a collection of {@link PCDataHolder}s that might contain
* stale instances into a collection of up-to-date {@link DataCachePCData}s.
*/
- private void transformToVersionSafePCDatas(DataCache cache,
- List holders) {
-
+ private List<DataCachePCData> transformToVersionSafePCDatas(DataCache cache, List<PCDataHolder> holders) {
+ List<DataCachePCData> transformed = new ArrayList<DataCachePCData>(holders.size());
Map<Object,Integer> ids = new HashMap<Object,Integer>(holders.size());
// this list could be removed if DataCache.getAll() took a Collection
- List idList = new ArrayList(holders.size());
+ List<Object> idList = new ArrayList<Object>(holders.size());
int i = 0;
- for (PCDataHolder holder : (List<PCDataHolder>) holders) {
+ for (PCDataHolder holder : holders) {
ids.put(holder.sm.getObjectId(), i++);
idList.add(holder.sm.getObjectId());
}
- List<PCDataHolder> removes = new ArrayList<PCDataHolder>();
Map<Object,DataCachePCData> pcdatas = cache.getAll(idList);
for (Entry<Object,DataCachePCData> entry : pcdatas.entrySet()) {
Integer index = ids.get(entry.getKey());
DataCachePCData oldpc = entry.getValue();
- PCDataHolder holder = (PCDataHolder) holders.get(index);
+ PCDataHolder holder = holders.get(index);
if (oldpc != null && compareVersion(holder.sm,
holder.sm.getVersion(), oldpc.getVersion()) == VERSION_EARLIER)
- removes.add(holder);
+ continue;
else
- holders.set(index, holder.pcdata);
+ transformed.add(holder.pcdata);
}
-
- for (PCDataHolder holder : removes)
- holders.remove(holder);
+ return transformed;
}
/**
@@ -292,7 +280,7 @@
* to the given cache, creating and caching the instance if it does
* not already exist in the given map.
*/
- private static Modifications getModifications(Map modMap, DataCache cache) {
+ private static Modifications getModifications(Map<DataCache,Modifications> modMap, DataCache cache) {
Modifications mods = (Modifications) modMap.get(cache);
if (mods == null) {
mods = new Modifications();
@@ -334,16 +322,15 @@
}
public boolean initialize(OpenJPAStateManager sm, PCState state, FetchConfiguration fetch, Object edata) {
- boolean rval;
+ boolean fromDatabase;
DataCache cache = sm.getMetaData().getDataCache();
+ DataCachePCData data = null;
boolean updateCache = _ctx.getCacheStoreMode() != DataCacheStoreMode.BYPASS && _ctx.getPopulateDataCache();
if (cache == null || sm.isEmbedded() || _ctx.getCacheRetrieveMode() == DataCacheRetrieveMode.BYPASS
|| _ctx.getCacheStoreMode() == DataCacheStoreMode.REFRESH) {
- rval = super.initialize(sm, state, fetch, edata);
- }
-
- else {
- DataCachePCData data = cache.get(sm.getObjectId());
+ fromDatabase = super.initialize(sm, state, fetch, edata);
+ } else {
+ data = cache.get(sm.getObjectId());
if (data != null && !isLocking(fetch)) {
//### the 'data.type' access here probably needs to be
//### addressed for bug 511
@@ -351,28 +338,27 @@
data.load(sm, fetch, edata);
// no need to update the cache.
updateCache = false;
- rval = true;
+ fromDatabase = true;
} else {
// initialize from store manager
- rval = super.initialize(sm, state, fetch, edata);
+ fromDatabase = super.initialize(sm, state, fetch, edata);
}
}
- if (cache != null && (rval && updateCache)) {
+ if (cache != null && (fromDatabase && updateCache)) {
// update cache if the result came from the database and configured to store or refresh the cache.
- cacheStateManager(cache, sm);
+ cacheStateManager(cache, sm, data);
}
- return rval;
+ return fromDatabase;
}
- private void cacheStateManager(DataCache cache, OpenJPAStateManager sm) {
+ private void cacheStateManager(DataCache cache, OpenJPAStateManager sm, DataCachePCData data) {
if(sm.isFlushed()) {
return;
}
// make sure that we're not trying to cache an old version
cache.writeLock();
try {
- DataCachePCData data = cache.get(sm.getObjectId());
if (data != null && compareVersion(sm, sm.getVersion(), data.getVersion()) == VERSION_EARLIER) {
return;
}
@@ -385,10 +371,9 @@
data = newPCData(sm);
}
data.store(sm);
- if(isNew) {
+ if (isNew) {
cache.put(data);
- }
- else {
+ } else {
cache.update(data);
}
} finally {
@@ -403,8 +388,7 @@
return super.load(sm, fields, fetch, lockLevel, edata);
DataCachePCData data = cache.get(sm.getObjectId());
- if (lockLevel == LockLevels.LOCK_NONE && !isLocking(fetch)
- && data != null)
+ if (lockLevel == LockLevels.LOCK_NONE && !isLocking(fetch) && data != null)
data.load(sm, fields, fetch, edata);
if (fields.length() == 0)
return true;
@@ -414,13 +398,13 @@
if (!super.load(sm, (BitSet) fields.clone(), fetch, lockLevel, edata))
return false;
if (_ctx.getPopulateDataCache()) {
- cacheStateManager(cache, sm);
+ cacheStateManager(cache, sm, data);
}
return true;
}
- public Collection loadAll(Collection sms, PCState state, int load,
+ public Collection<Object> loadAll(Collection<OpenJPAStateManager> sms, PCState state, int load,
FetchConfiguration fetch, Object edata) {
if (isLocking(fetch) ||
(!isLocking(fetch) &&
@@ -430,15 +414,13 @@
}
Map<OpenJPAStateManager, BitSet> unloaded = null;
- List smList = null;
- Map caches = new HashMap();
- OpenJPAStateManager sm;
+ List<OpenJPAStateManager> smList = null;
+ Map<DataCache,List<OpenJPAStateManager>> caches = new HashMap<DataCache,List<OpenJPAStateManager>>();
DataCache cache;
DataCachePCData data;
BitSet fields;
- for (Iterator itr = sms.iterator(); itr.hasNext();) {
- sm = (OpenJPAStateManager) itr.next();
+ for (OpenJPAStateManager sm : sms) {
cache = sm.getMetaData().getDataCache();
if (cache == null || sm.isEmbedded()) {
unloaded = addUnloaded(sm, null, unloaded);
@@ -448,9 +430,9 @@
if (sm.getManagedInstance() == null
|| load != FORCE_LOAD_NONE
|| sm.getPCState() == PCState.HOLLOW) {
- smList = (List) caches.get(cache);
+ smList = caches.get(cache);
if (smList == null) {
- smList = new ArrayList();
+ smList = new ArrayList<OpenJPAStateManager>();
caches.put(cache, smList);
}
smList.add(sm);
@@ -458,22 +440,19 @@
unloaded = addUnloaded(sm, null, unloaded);
}
- for (Iterator itr = caches.keySet().iterator(); itr.hasNext();) {
- cache = (DataCache) itr.next();
- smList = (List) caches.get(cache);
- List oidList = new ArrayList(smList.size());
+ for (Iterator<DataCache> itr = caches.keySet().iterator(); itr.hasNext();) {
+ cache = itr.next();
+ smList = caches.get(cache);
+ List<Object> oidList = new ArrayList<Object>(smList.size());
- for (itr=smList.iterator();itr.hasNext();) {
- sm = (OpenJPAStateManager) itr.next();
+ for (OpenJPAStateManager sm : smList) {
oidList.add((OpenJPAId) sm.getObjectId());
}
- Map dataMap = cache.getAll(oidList);
+ Map<Object,DataCachePCData> dataMap = cache.getAll(oidList);
- for (itr=smList.iterator();itr.hasNext();) {
- sm = (OpenJPAStateManager) itr.next();
- data = (DataCachePCData) dataMap.get(
- (OpenJPAId) sm.getObjectId());
+ for (OpenJPAStateManager sm : smList) {
+ data = dataMap.get(sm.getObjectId());
if (sm.getManagedInstance() == null) {
if (data != null) {
@@ -481,8 +460,9 @@
//### to be addressed for bug 511
sm.initialize(data.getType(), state);
data.load(sm, fetch, edata);
- } else
+ } else {
unloaded = addUnloaded(sm, null, unloaded);
+ }
} else if (load != FORCE_LOAD_NONE
|| sm.getPCState() == PCState.HOLLOW) {
data = cache.get(sm.getObjectId());
@@ -499,11 +479,10 @@
}
if (unloaded == null)
- return Collections.EMPTY_LIST;
+ return Collections.emptyList();
// load with delegate
- Collection failed = super.loadAll(unloaded.keySet(), state, load,
- fetch, edata);
+ Collection<Object> failed = super.loadAll(unloaded.keySet(), state, load, fetch, edata);
if (!_ctx.getPopulateDataCache())
return failed;
@@ -512,7 +491,7 @@
boolean isNew;
for(Map.Entry<OpenJPAStateManager, BitSet> entry : unloaded.entrySet()) {
- sm = entry.getKey();
+ OpenJPAStateManager sm = entry.getKey();
fields = entry.getValue();
cache = sm.getMetaData().getDataCache();
@@ -557,13 +536,12 @@
return unloaded;
}
- public Collection flush(Collection states) {
- Collection exceps = super.flush(states);
+ public Collection<Exception> flush(Collection<OpenJPAStateManager> states) {
+ Collection<Exception> exceps = super.flush(states);
// if there were errors evict bad instances and don't record changes
if (!exceps.isEmpty()) {
- for (Iterator iter = exceps.iterator(); iter.hasNext(); ) {
- Exception e = (Exception) iter.next();
+ for (Exception e : exceps) {
if (e instanceof OptimisticException)
notifyOptimisticLockFailure((OptimisticException) e);
}
@@ -574,10 +552,7 @@
if (_ctx.isTrackChangesByType())
return exceps;
- OpenJPAStateManager sm;
- for (Iterator itr = states.iterator(); itr.hasNext();) {
- sm = (OpenJPAStateManager) itr.next();
-
+ for (OpenJPAStateManager sm : states) {
if (sm.getPCState() == PCState.PNEW && !sm.isFlushed()) {
if (_inserts == null) {
_inserts = new ArrayList<OpenJPAStateManager>();
@@ -605,7 +580,7 @@
_deletes.add(sm);
}
}
- return Collections.EMPTY_LIST;
+ return Collections.emptyList();
}
/**
@@ -708,8 +683,7 @@
private DataCachePCData newPCData(OpenJPAStateManager sm) {
ClassMetaData meta = sm.getMetaData();
if (_gen != null)
- return (DataCachePCData) _gen.generatePCData
- (sm.getObjectId(), meta);
+ return (DataCachePCData) _gen.generatePCData(sm.getObjectId(), meta);
return new DataCachePCDataImpl(sm.fetchObjectId(), meta);
}
@@ -727,19 +701,22 @@
*/
private static class Modifications {
- public final List additions = new ArrayList();
- public final List newUpdates = new ArrayList();
- public final List existingUpdates = new ArrayList();
- public final List deletes = new ArrayList();
+ public final List<PCDataHolder> additions = new ArrayList<PCDataHolder>();
+ public final List<PCDataHolder> newUpdates = new ArrayList<PCDataHolder>();
+ public final List<PCDataHolder> existingUpdates = new ArrayList<PCDataHolder>();
+ public final List<Object> deletes = new ArrayList<Object>();
}
+ /**
+ * Utility structure holds the tuple of cacheable instance and its corresponding state manager.
+ *
+ */
private static class PCDataHolder {
public final DataCachePCData pcdata;
public final OpenJPAStateManager sm;
- public PCDataHolder(DataCachePCData pcdata,
- OpenJPAStateManager sm) {
+ public PCDataHolder(DataCachePCData pcdata, OpenJPAStateManager sm) {
this.pcdata = pcdata;
this.sm = sm;
}
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryCacheStoreQuery.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryCacheStoreQuery.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryCacheStoreQuery.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryCacheStoreQuery.java Mon Sep 28 23:51:33 2009
@@ -111,7 +111,7 @@
* READ_SERIALIZABLE -- to do so, we'd just return false when in
* a transaction.
*/
- private List checkCache(QueryKey qk) {
+ private List<Object> checkCache(QueryKey qk) {
if (qk == null)
return null;
FetchConfiguration fetch = getContext().getFetchConfiguration();
@@ -125,7 +125,7 @@
if (res == null)
return null;
if (res.isEmpty())
- return Collections.EMPTY_LIST;
+ return Collections.emptyList();
// this if block is invoked if the evictOnTimestamp is set to true
if (_cache instanceof AbstractQueryCache) {
@@ -323,7 +323,7 @@
implements Executor {
private final Executor _ex;
- private final Class _candidate;
+ private final Class<?> _candidate;
private final boolean _subs;
private final FetchConfiguration _fc;
@@ -341,7 +341,7 @@
QueryKey key = QueryKey.newInstance(cq.getContext(),
_ex.isPacking(q), params, _candidate, _subs, range.start,
range.end);
- List cached = cq.checkCache(key);
+ List<Object> cached = cq.checkCache(key);
if (cached != null)
return new ListResultObjectProvider(cached);
@@ -371,7 +371,7 @@
if (cmd == null || cmd.length == 0)
return;
- List classes = new ArrayList(cmd.length);
+ List<Class<?>> classes = new ArrayList<Class<?>>(cmd.length);
for (int i = 0; i < cmd.length; i++)
classes.add(cmd[i].getDescribedType());
@@ -435,7 +435,7 @@
return _ex.getAlias(unwrap(q));
}
- public Class getResultClass(StoreQuery q) {
+ public Class<?> getResultClass(StoreQuery q) {
return _ex.getResultClass(unwrap(q));
}
@@ -447,7 +447,7 @@
return _ex.getProjectionAliases(unwrap(q));
}
- public Class[] getProjectionTypes(StoreQuery q) {
+ public Class<?>[] getProjectionTypes(StoreQuery q) {
return _ex.getProjectionTypes(unwrap(q));
}
@@ -488,8 +488,7 @@
* Result list implementation for a cached query result. Package-protected
* for testing.
*/
- public static class CachedList
- extends AbstractList
+ public static class CachedList extends AbstractList<Object>
implements Serializable {
private final QueryResult _res;
@@ -521,7 +520,7 @@
public Object writeReplace()
throws ObjectStreamException {
- return new ArrayList(this);
+ return new ArrayList<Object>(this);
}
}
@@ -537,7 +536,7 @@
private final ResultObjectProvider _rop;
private final boolean _proj;
private final QueryKey _qk;
- private final TreeMap _data = new TreeMap();
+ private final TreeMap<Integer,Object> _data = new TreeMap<Integer,Object>();
private boolean _maintainCache = true;
private int _pos = -1;
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryResult.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryResult.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryResult.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/datacache/QueryResult.java Mon Sep 28 23:51:33 2009
@@ -26,8 +26,9 @@
*
* @author Abe White
*/
+@SuppressWarnings("serial")
public class QueryResult
- extends ArrayList {
+ extends ArrayList<Object> {
private final long _ex;
@@ -35,7 +36,7 @@
/**
* Constructor; supply corresponding query key and result data.
*/
- public QueryResult(QueryKey key, Collection data) {
+ public QueryResult(QueryKey key, Collection<Object> data) {
super(data);
if (key.getTimeout() == -1)
@@ -47,7 +48,7 @@
/**
* Constructor to set internal data from a serializer.
*/
- public QueryResult(Collection data, long ex) {
+ public QueryResult(Collection<Object> data, long ex) {
super(data);
_ex = ex;
}
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCDataGenerator.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCDataGenerator.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCDataGenerator.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/enhance/PCDataGenerator.java Mon Sep 28 23:51:33 2009
@@ -49,7 +49,7 @@
import serp.bytecode.LookupSwitchInstruction;
/**
- * Generates {@link PCData} instances which avoid primitve wrappers
+ * Generates {@link PCData} instances which avoid primitive wrappers
* to optimize memory use and performance at the cost of slightly higher
* startup time.
*
@@ -65,7 +65,7 @@
protected static final String POSTFIX = "$openjpapcdata";
- private final Map _generated = new ConcurrentHashMap();
+ private final Map<Class<?>, DynamicStorage> _generated = new ConcurrentHashMap<Class<?>, DynamicStorage>();
private final OpenJPAConfiguration _conf;
private final Log _log;
@@ -87,8 +87,8 @@
public PCData generatePCData(Object oid, ClassMetaData meta) {
if (meta == null)
return null;
- Class type = meta.getDescribedType();
- DynamicStorage storage = (DynamicStorage) _generated.get(type);
+ Class<?> type = meta.getDescribedType();
+ DynamicStorage storage = _generated.get(type);
if (storage == null) {
storage = generateStorage(meta);
_generated.put(type, storage);
@@ -142,7 +142,7 @@
/**
* Creates a unique name for the given type's pcdata implementation.
*/
- protected String getUniqueName(Class type) {
+ protected String getUniqueName(Class<?> type) {
return type.getName() + "$" + System.identityHashCode(type) + POSTFIX;
}
@@ -218,7 +218,7 @@
// }
code.getstatic().setField(type);
- Collection jumps = new LinkedList();
+ Collection<Instruction> jumps = new LinkedList<Instruction>();
jumps.add(code.ifnonnull());
ExceptionHandler handler = code.addExceptionHandler();
@@ -528,8 +528,8 @@
// Object context)
Code code = addLoadMethod(bc, false);
FieldMetaData[] fmds = meta.getFields();
- Collection jumps = new LinkedList();
- Collection jumps2;
+ Collection<Instruction> jumps = new LinkedList<Instruction>();
+ Collection<Instruction> jumps2;
int local = code.getNextLocalsIndex();
code.constant().setNull();
@@ -541,7 +541,7 @@
int objectCount = 0;
boolean intermediate;
for (int i = 0; i < fmds.length; i++) {
- jumps2 = new LinkedList();
+ jumps2 = new LinkedList<Instruction>();
intermediate = usesIntermediate(fmds[i]);
setTarget(code.aload().setThis(), jumps);
// if (loaded.get(i)) or (!loaded.get(i)) depending on inter resp
@@ -583,8 +583,8 @@
// public void load(OpenJPAStateManager sm, BitSet fields,
// FetchConfiguration fetch, Object conn)
FieldMetaData[] fmds = meta.getFields();
- Collection jumps = new LinkedList();
- Collection jumps2;
+ Collection<Instruction> jumps = new LinkedList<Instruction>();
+ Collection<Instruction> jumps2;
int objectCount = 0;
boolean intermediate;
int local = code.getNextLocalsIndex();
@@ -595,7 +595,7 @@
code.astore().setLocal(inter);
for (int i = 0; i < fmds.length; i++) {
- jumps2 = new LinkedList();
+ jumps2 = new LinkedList<Instruction>();
intermediate = usesIntermediate(fmds[i]);
// if (fields.get(i))
// {
@@ -650,7 +650,7 @@
* Declare and start the base load method.
*/
private Code addLoadMethod(BCClass bc, boolean fields) {
- Class[] args = null;
+ Class<?>[] args = null;
if (fields)
args = new Class[]{ OpenJPAStateManager.class, BitSet.class,
FetchConfiguration.class, Object.class };
@@ -684,7 +684,7 @@
Instruction first;
if (typeCode < JavaTypes.OBJECT) {
// sm.store<type>(i, field<i>)
- Class type = forType(fmd.getTypeCode());
+ Class<?> type = forType(fmd.getTypeCode());
first = code.aload().setParam(0);
code.constant().setValue(index);
code.aload().setThis();
@@ -730,7 +730,7 @@
* Load intermediate data if possible.
*/
private Instruction addLoadIntermediate(Code code, int index,
- int objectCount, Collection jumps2, int inter) {
+ int objectCount, Collection<Instruction> jumps2, int inter) {
// {
// Object inter = objects[objectCount];
Instruction first = code.aload().setThis();
@@ -794,7 +794,7 @@
new Class[]{ OpenJPAStateManager.class });
FieldMetaData[] fmds = meta.getFields();
- Collection jumps = new LinkedList();
+ Collection<Instruction> jumps = new LinkedList<Instruction>();
int objectCount = 0;
for (int i = 0; i < fmds.length; i++) {
if (fields) {
@@ -857,7 +857,7 @@
int typeCode = replaceType(fmd);
int index = fmd.getIndex();
if (typeCode < JavaTypes.OBJECT) {
- Class type = forType(typeCode);
+ Class<?> type = forType(typeCode);
// field<i> = sm.fetch<Type>(index)
code.aload().setThis();
code.aload().setParam(0);
@@ -1027,8 +1027,8 @@
/**
* Add method which defers to AbstractPCData.
*/
- protected void callAbstractPCData(BCClass bc, String name, Class retType,
- Class[] args) {
+ protected void callAbstractPCData(BCClass bc, String name, Class<?> retType,
+ Class<?>[] args) {
BCMethod meth = bc.declareMethod(name, retType, args);
Code code = meth.getCode(true);
code.aload().setThis();
@@ -1046,8 +1046,8 @@
* Set the collection of {@link JumpInstruction}s to the given instruction,
* clearing the collection in the process.
*/
- protected void setTarget(Instruction ins, Collection jumps) {
- for (Iterator it = jumps.iterator(); it.hasNext();)
+ protected void setTarget(Instruction ins, Collection<Instruction> jumps) {
+ for (Iterator<Instruction> it = jumps.iterator(); it.hasNext();)
((JumpInstruction) it.next()).setTarget(ins);
jumps.clear();
}
@@ -1055,7 +1055,7 @@
/**
* Transform the given array of classes to strings.
*/
- private static String[] toStrings(Class[] cls) {
+ private static String[] toStrings(Class<?>[] cls) {
String[] strings = new String[cls.length];
for (int i = 0; i < strings.length; i++)
strings[i] = cls[i].getName();
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingStoreManager.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingStoreManager.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingStoreManager.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/DelegatingStoreManager.java Mon Sep 28 23:51:33 2009
@@ -116,7 +116,7 @@
return _store.load(sm, fields, fetch, lockLevel, context);
}
- public Collection loadAll(Collection sms, PCState state, int load,
+ public Collection<Object> loadAll(Collection<OpenJPAStateManager> sms, PCState state, int load,
FetchConfiguration fetch, Object context) {
return _store.loadAll(sms, state, load, fetch, context);
}
@@ -126,7 +126,7 @@
_store.beforeStateChange(sm, fromState, toState);
}
- public Collection flush(Collection sms) {
+ public Collection<Exception> flush(Collection<OpenJPAStateManager> sms) {
return _store.flush(sms);
}
@@ -139,11 +139,11 @@
return _store.assignField(sm, field, preFlush);
}
- public Class getManagedType(Object oid) {
+ public Class<?> getManagedType(Object oid) {
return _store.getManagedType(oid);
}
- public Class getDataStoreIdType(ClassMetaData meta) {
+ public Class<?> getDataStoreIdType(ClassMetaData meta) {
return _store.getDataStoreIdType(meta);
}
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StoreContext.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StoreContext.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StoreContext.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StoreContext.java Mon Sep 28 23:51:33 2009
@@ -142,7 +142,7 @@
* parameter
* @see #find(Object,boolean,FindCallbacks)
*/
- public Object[] findAll(Collection oids, boolean validate,
+ public Object[] findAll(Collection<Object> oids, boolean validate,
FindCallbacks call);
/**
@@ -150,7 +150,7 @@
* cached instance will be returned. Otherwise, the instance will be
* initialized through the store as usual; however, in this case
* the store will be passed the given execution data, and the
- * system will load the object according to the given fetch configuratiion
+ * system will load the object according to the given fetch configuration
* (or the context's configuration, if the given one is null).
* Fields can optionally be excluded from required loading using the
* <code>exclude</code> mask. By default this method does not find new
@@ -166,7 +166,7 @@
*
* @see #find(Object,FetchConfiguration,BitSet,Object,int)
*/
- public Object[] findAll(Collection oids, FetchConfiguration fetch,
+ public Object[] findAll(Collection<Object> oids, FetchConfiguration fetch,
BitSet exclude, Object edata, int flags);
/**
@@ -175,7 +175,7 @@
* when no longer needed. This method delegates to
* {@link StoreManager#executeExtent}.
*/
- public Iterator extentIterator(Class cls, boolean subs,
+ public Iterator<Object> extentIterator(Class<?> cls, boolean subs,
FetchConfiguration fetch, boolean ignoreChanges);
/**
@@ -198,7 +198,7 @@
* @param fgOnly indicator as to whether to retrieve only fields
* @see #retrieve
*/
- public void retrieveAll(Collection objs, boolean fgOnly, OpCallbacks call);
+ public void retrieveAll(Collection<Object> objs, boolean fgOnly, OpCallbacks call);
/**
* Make the given instance embedded.
@@ -217,16 +217,16 @@
* Return the application or datastore identity class the given persistent
* class uses for object ids.
*/
- public Class getObjectIdType(Class cls);
+ public Class<?> getObjectIdType(Class<?> cls);
/**
* Create a new object id instance from the given value.
*
- * @param cls the persitent class that uses this identity value
+ * @param cls the persistent class that uses this identity value
* @param val an object id instance, stringified object id, or primary
* key value
*/
- public Object newObjectId(Class cls, Object val);
+ public Object newObjectId(Class<?> cls, Object val);
/**
* Return the set of classes that have been made persistent in the current
@@ -234,7 +234,7 @@
*
* @since 0.3.4
*/
- public Collection getPersistedTypes();
+ public Collection<Class<?>> getPersistedTypes();
/**
* Return the set of classes that have been deleted in the current
@@ -242,7 +242,7 @@
*
* @since 0.3.4
*/
- public Collection getDeletedTypes();
+ public Collection<Class<?>> getDeletedTypes();
/**
* Return the set of classes for objects that have been modified
@@ -250,28 +250,28 @@
*
* @since 0.3.4
*/
- public Collection getUpdatedTypes();
+ public Collection<Class<?>> getUpdatedTypes();
/**
* Return a list of all managed instances.
*/
- public Collection getManagedObjects();
+ public Collection<Object> getManagedObjects();
/**
* Return a list of current transaction instances.
*/
- public Collection getTransactionalObjects();
+ public Collection<Object> getTransactionalObjects();
/**
* Return a list of instances which will become transactional upon
* the next transaction.
*/
- public Collection getPendingTransactionalObjects();
+ public Collection<Object> getPendingTransactionalObjects();
/**
* Return a list of current dirty instances.
*/
- public Collection getDirtyObjects();
+ public Collection<Object> getDirtyObjects();
/**
* Whether to maintain the order in which objects are dirtied for
@@ -319,8 +319,7 @@
* @param updateVersion if true, the instance's version will be
* incremented at the next flush
*/
- public void transactional(Object pc, boolean updateVersion,
- OpCallbacks call);
+ public void transactional(Object pc, boolean updateVersion, OpCallbacks call);
/**
* Make the given objects transactional.
@@ -329,18 +328,17 @@
* @param updateVersion if true, the instance's version will be
* incremented at the next flush
*/
- public void transactionalAll(Collection objs, boolean updateVersion,
- OpCallbacks call);
+ public void transactionalAll(Collection<Object> objs, boolean updateVersion, OpCallbacks call);
/**
- * Make the given object nontransactional.
+ * Make the given object non-transactional.
*/
public void nontransactional(Object pc, OpCallbacks call);
/**
* Make the given objects nontransactional.
*/
- public void nontransactionalAll(Collection objs, OpCallbacks call);
+ public void nontransactionalAll(Collection<Object> objs, OpCallbacks call);
/**
* Return whether the given object is persistent.
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StoreManager.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StoreManager.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StoreManager.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/StoreManager.java Mon Sep 28 23:51:33 2009
@@ -213,7 +213,7 @@
* which no data store record exists
* @see org.apache.openjpa.util.ImplHelper#loadAll
*/
- public Collection loadAll(Collection sms, PCState state, int load,
+ public Collection<Object> loadAll(Collection<OpenJPAStateManager> sms, PCState state, int load,
FetchConfiguration fetch, Object edata);
/**
@@ -244,7 +244,7 @@
*
* @see org.apache.openjpa.util.ApplicationIds#assign()
*/
- public Collection flush(Collection sms);
+ public Collection<Exception> flush(Collection<OpenJPAStateManager> sms);
/**
* Assign an object id to the given new instance. Return false if the
@@ -288,7 +288,7 @@
*
* @since 0.3.0
*/
- public Class getManagedType(Object oid);
+ public Class<?> getManagedType(Object oid);
/**
* Return the class used by this StoreManager for datastore identity
@@ -296,7 +296,7 @@
* value should the common datastore identity class for all classes, or
* null if this store manager does not use a common identity class.
*/
- public Class getDataStoreIdType(ClassMetaData meta);
+ public Class<?> getDataStoreIdType(ClassMetaData meta);
/**
* Copy the given object id value. Use the described type of the given
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/AbstractWriteBehindCache.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/AbstractWriteBehindCache.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/AbstractWriteBehindCache.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/AbstractWriteBehindCache.java Mon Sep 28 23:51:33 2009
@@ -20,11 +20,9 @@
public abstract class AbstractWriteBehindCache implements WriteBehindCache {
public String getName() {
- // TODO Auto-generated method stub
return null;
}
public void setName(String name) {
- // TODO Auto-generated method stub
}
}
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/SimpleWriteBehindCache.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/SimpleWriteBehindCache.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/SimpleWriteBehindCache.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/SimpleWriteBehindCache.java Mon Sep 28 23:51:33 2009
@@ -25,16 +25,18 @@
import java.util.Map;
import org.apache.openjpa.enhance.PersistenceCapable;
+import org.apache.openjpa.kernel.OpenJPAStateManager;
import org.apache.openjpa.kernel.StateManagerImpl;
import org.apache.openjpa.meta.ClassMetaData;
public class SimpleWriteBehindCache extends AbstractWriteBehindCache {
- private Map<WriteBehindCacheKey, StateManagerImpl> _cache = new HashMap<WriteBehindCacheKey, StateManagerImpl>();
+ private Map<WriteBehindCacheKey, OpenJPAStateManager> _cache =
+ new HashMap<WriteBehindCacheKey, OpenJPAStateManager>();
- public List<Exception> add(Collection<StateManagerImpl> sms) {
+ public List<Exception> add(Collection<OpenJPAStateManager> sms) {
List<Exception> exceptions = new ArrayList<Exception>();
- for (StateManagerImpl sm : sms) {
+ for (OpenJPAStateManager sm : sms) {
try {
add(sm);
} catch (WriteBehindException wbe) {
@@ -44,7 +46,7 @@
return exceptions;
}
- protected void add(StateManagerImpl sm) {
+ protected void add(OpenJPAStateManager sm) {
WriteBehindCacheKey key = getKey(sm);
synchronized (_cache) {
if (_cache.containsKey(key) && _cache.get(key) != sm) {
@@ -65,14 +67,13 @@
return rval;
}
- public WriteBehindCacheKey getKey(StateManagerImpl sm) {
+ public WriteBehindCacheKey getKey(OpenJPAStateManager sm) {
ClassMetaData md = sm.getMetaData();
Class<?> cls = md.getDescribedType();
String className = cls.getCanonicalName();
Object id = sm.getId();
- SimpleWriteBehindCacheKey key =
- new SimpleWriteBehindCacheKey(className, id);
+ SimpleWriteBehindCacheKey key = new SimpleWriteBehindCacheKey(className, id);
return key;
}
@@ -80,8 +81,8 @@
return _cache.size();
}
- public Collection<StateManagerImpl> getStateManagers() {
- return new ArrayList<StateManagerImpl>(_cache.values());
+ public Collection<OpenJPAStateManager> getStateManagers() {
+ return new ArrayList<OpenJPAStateManager>(_cache.values());
}
public void initialize(WriteBehindCacheManager manager) {
@@ -109,8 +110,7 @@
}
// Might be better in smImpl.
- protected StateManagerImpl merge(StateManagerImpl from,
- StateManagerImpl into) {
+ protected OpenJPAStateManager merge(OpenJPAStateManager from, OpenJPAStateManager into) {
for (int i = 0; i < into.getMetaData().getFields().length; i++) {
if (from.getDirty().get(i)) {
into.dirty(i);
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/SimpleWriteBehindCallback.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/SimpleWriteBehindCallback.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/SimpleWriteBehindCallback.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/SimpleWriteBehindCallback.java Mon Sep 28 23:51:33 2009
@@ -21,6 +21,7 @@
import java.util.Collection;
import org.apache.openjpa.kernel.Broker;
+import org.apache.openjpa.kernel.OpenJPAStateManager;
import org.apache.openjpa.kernel.StateManagerImpl;
import org.apache.openjpa.kernel.StoreManager;
@@ -42,7 +43,7 @@
// skip past any delegating store managers.
StoreManager storeManager =
_broker.getStoreManager().getInnermostDelegate();
- Collection<StateManagerImpl> sms = null;
+ Collection<OpenJPAStateManager> sms = null;
if (_cache != null && !_cache.isEmpty()) {
// TODO lock or switch the cache
sms = _cache.getStateManagers();
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/WriteBehindCache.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/WriteBehindCache.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/WriteBehindCache.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/WriteBehindCache.java Mon Sep 28 23:51:33 2009
@@ -21,6 +21,7 @@
import java.util.Collection;
import java.util.List;
+import org.apache.openjpa.kernel.OpenJPAStateManager;
import org.apache.openjpa.kernel.StateManagerImpl;
/**
@@ -69,14 +70,14 @@
* StateManager to the cache. If no exceptions occur the collection
* will be empty.
*/
- public List<Exception> add(Collection<StateManagerImpl> sms);
+ public List<Exception> add(Collection<OpenJPAStateManager> sms);
/**
* Obtain the StateManagers currently in the cache.
*
* @return collection of state managers.
*/
- public Collection<StateManagerImpl> getStateManagers();
+ public Collection<OpenJPAStateManager> getStateManagers();
/**
* Initialize any resources associated with the given
@@ -92,7 +93,7 @@
* A StateManager
* @return A key that may be used to cache the StateManager.
*/
- public WriteBehindCacheKey getKey(StateManagerImpl sm);
+ public WriteBehindCacheKey getKey(OpenJPAStateManager sm);
/**
* Determine whether the cache is empty.
Modified: openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/WriteBehindStoreManager.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/WriteBehindStoreManager.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/WriteBehindStoreManager.java (original)
+++ openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/writebehind/WriteBehindStoreManager.java Mon Sep 28 23:51:33 2009
@@ -24,6 +24,7 @@
import java.util.Set;
import org.apache.openjpa.kernel.DelegatingStoreManager;
+import org.apache.openjpa.kernel.OpenJPAStateManager;
import org.apache.openjpa.kernel.PCState;
import org.apache.openjpa.kernel.StateManagerImpl;
import org.apache.openjpa.kernel.StoreManager;
@@ -42,7 +43,7 @@
public static final int OP_UPDATE = 3;
WriteBehindCache _cache;
- Collection<StateManagerImpl> inFlightSMs = new ArrayList<StateManagerImpl>();
+ Collection<OpenJPAStateManager> inFlightSMs = new ArrayList<OpenJPAStateManager>();
public WriteBehindStoreManager(StoreManager store) {
this(store, null);
@@ -54,30 +55,27 @@
_cache = wbCache;
}
- public Collection flush(Collection sms) {
- LinkedHashSet<StateManagerImpl> passingThrough = null;
- for (Object o : sms) {
- if(cacheAble((StateManagerImpl)o)) {
- StateManagerImpl sm = (StateManagerImpl) o;
+ public Collection<Exception> flush(Collection<OpenJPAStateManager> sms) {
+ LinkedHashSet<OpenJPAStateManager> passingThrough = null;
+ for (OpenJPAStateManager sm : sms) {
+ if (cacheAble(sm)) {
PCState newState = sm.getPCState();
- if(newState == PCState.PDELETEDFLUSHED) {
+ if (newState == PCState.PDELETEDFLUSHED) {
newState = PCState.PDELETED; // effectively reset the flush
}
- inFlightSMs.add(new StateManagerImpl(sm, newState));
- }
- else {
- if(passingThrough == null) {
- passingThrough = new LinkedHashSet<StateManagerImpl>();
+ inFlightSMs.add(new StateManagerImpl((StateManagerImpl)sm, newState));
+ } else {
+ if (passingThrough == null) {
+ passingThrough = new LinkedHashSet<OpenJPAStateManager>();
}
- passingThrough.add((StateManagerImpl)o);
+ passingThrough.add(sm);
}
}
- Collection rval;
- if(passingThrough != null) {
+ Collection<Exception> rval;
+ if (passingThrough != null) {
rval = getDelegate().flush(passingThrough);
- }
- else {
+ } else {
rval = new ArrayList<Exception>();
}
return rval;
@@ -100,11 +98,11 @@
}
}
- public Collection<Exception> flushBehind(Collection<StateManagerImpl> sms) {
+ public Collection<Exception> flushBehind(Collection<OpenJPAStateManager> sms) {
return super.flush(sms);
}
- public boolean cacheAble(StateManagerImpl sm) {
+ public boolean cacheAble(OpenJPAStateManager sm) {
boolean rval = false;
switch (getOperation(sm)) {
case OP_INSERT:
@@ -135,7 +133,7 @@
return rval;
}
- protected int getOperation(StateManagerImpl sm) {
+ protected int getOperation(OpenJPAStateManager sm) {
int rval = -1; // TODO define me
if (sm.isDirty()) {
if (sm.isNew()) {
Modified: openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/CustomWriteBehindCache.java
URL: http://svn.apache.org/viewvc/openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/CustomWriteBehindCache.java?rev=819771&r1=819770&r2=819771&view=diff
==============================================================================
--- openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/CustomWriteBehindCache.java (original)
+++ openjpa/trunk/openjpa-persistence-jdbc/src/test/java/org/apache/openjpa/jdbc/writebehind/CustomWriteBehindCache.java Mon Sep 28 23:51:33 2009
@@ -33,7 +33,7 @@
*/
public class CustomWriteBehindCache extends AbstractWriteBehindCache {
- public List<Exception> add(Collection<StateManagerImpl> sms) {
+ public List<Exception> add(Collection<OpenJPAStateManager> sms) {
List<Exception> exceptions = new ArrayList<Exception>();
return exceptions;
}
@@ -48,7 +48,7 @@
public void flush() {
}
- public WriteBehindCacheKey getKey(StateManagerImpl sm) {
+ public WriteBehindCacheKey getKey(OpenJPAStateManager sm) {
return null;
}
@@ -64,7 +64,7 @@
return 0;
}
- public Collection<StateManagerImpl> getStateManagers() {
+ public Collection<OpenJPAStateManager> getStateManagers() {
return null;
}