OPENJPA-1050: Generics for extent

git-svn-id: https://svn.apache.org/repos/asf/openjpa/trunk@1069984 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Pinaki Poddar 2011-02-11 23:34:15 +00:00
parent 24f976d619
commit b1b503e136
5 changed files with 38 additions and 39 deletions

View File

@ -36,27 +36,27 @@ import org.apache.openjpa.util.RuntimeExceptionTranslator;
* @author Abe White
* @nojavadoc
*/
public class DelegatingExtent
implements Extent {
public class DelegatingExtent<T>
implements Extent<T> {
private final Extent _extent;
private final DelegatingExtent _del;
private final Extent<T> _extent;
private final DelegatingExtent<T> _del;
private final RuntimeExceptionTranslator _trans;
/**
* Constructor; supply delegate.
*/
public DelegatingExtent(Extent extent) {
public DelegatingExtent(Extent<T> extent) {
this(extent, null);
}
/**
* Constructor; supply delegate and exception translator.
*/
public DelegatingExtent(Extent extent, RuntimeExceptionTranslator trans) {
public DelegatingExtent(Extent<T> extent, RuntimeExceptionTranslator trans) {
_extent = extent;
if (extent instanceof DelegatingExtent)
_del = (DelegatingExtent) extent;
_del = (DelegatingExtent<T>) extent;
else
_del = null;
_trans = trans;
@ -65,14 +65,14 @@ public class DelegatingExtent
/**
* Return the direct delegate.
*/
public Extent getDelegate() {
public Extent<T> getDelegate() {
return _extent;
}
/**
* Return the native delegate.
*/
public Extent getInnermostDelegate() {
public Extent<T> getInnermostDelegate() {
return (_del == null) ? _extent : _del.getInnermostDelegate();
}
@ -84,7 +84,7 @@ public class DelegatingExtent
if (other == this)
return true;
if (other instanceof DelegatingExtent)
other = ((DelegatingExtent) other).getInnermostDelegate();
other = ((DelegatingExtent<T>) other).getInnermostDelegate();
return getInnermostDelegate().equals(other);
}
@ -95,7 +95,7 @@ public class DelegatingExtent
return (_trans == null) ? re : _trans.translate(re);
}
public Class getElementType() {
public Class<T> getElementType() {
try {
return _extent.getElementType();
} catch (RuntimeException re) {
@ -143,7 +143,7 @@ public class DelegatingExtent
}
}
public List list() {
public List<T> list() {
try {
return _extent.list();
} catch (RuntimeException re) {
@ -151,7 +151,7 @@ public class DelegatingExtent
}
}
public Iterator iterator() {
public Iterator<T> iterator() {
try {
return _extent.iterator();
} catch (RuntimeException re) {

View File

@ -28,7 +28,7 @@ import java.util.List;
* @author Abe White
* @author Patrick Linskey
*/
public interface Extent {
public interface Extent<T> {
/**
* Return the (mutable) fetch configuration for this extent.
@ -52,12 +52,12 @@ public interface Extent {
* work correctly, but if the extent represents a large data set, this
* method may be quite slow and may consume quite a bit of memory.
*/
public List list();
public List<T> list();
/**
* Return an iterator over the extent members.
*/
public Iterator iterator();
public Iterator<T> iterator();
/**
* The broker that generated the extent.
@ -67,7 +67,7 @@ public interface Extent {
/**
* The class of extent elements.
*/
public Class getElementType();
public Class<T> getElementType();
/**
* Whether the extent includes subclasses.

View File

@ -44,13 +44,13 @@ import org.apache.openjpa.util.OpenJPAException;
* @author Patrick Linskey
* @nojavadoc
*/
public class ExtentImpl
implements Extent {
public class ExtentImpl<T>
implements Extent<T> {
private static final ClassMetaData[] EMPTY_METAS = new ClassMetaData[0];
private final Broker _broker;
private final Class _type;
private final Class<T> _type;
private final boolean _subs;
private final FetchConfiguration _fc;
private final ReentrantLock _lock;
@ -66,7 +66,7 @@ public class ExtentImpl
* @param type the candidate class
* @param subs whether subclasses are included in the extent
*/
ExtentImpl(Broker broker, Class type, boolean subs,
ExtentImpl(Broker broker, Class<T> type, boolean subs,
FetchConfiguration fetch) {
_broker = broker;
_type = type;
@ -95,9 +95,9 @@ public class ExtentImpl
_ignore = ignoreChanges;
}
public List list() {
List list = new ArrayList();
Iterator itr = iterator();
public List<T> list() {
List<T> list = new ArrayList<T>();
Iterator<T> itr = iterator();
try {
while (itr.hasNext())
list.add(itr.next());
@ -107,7 +107,7 @@ public class ExtentImpl
}
}
public Iterator iterator() {
public Iterator<T> iterator() {
_broker.assertNontransactionalRead();
CloseableIterator citr = null;
try {
@ -169,7 +169,7 @@ public class ExtentImpl
return _broker;
}
public Class getElementType() {
public Class<T> getElementType() {
return _type;
}
@ -215,13 +215,13 @@ public class ExtentImpl
/**
* Closeable iterator.
*/
private static interface CloseableIterator
extends Closeable, Iterator {
private static interface CloseableIterator<T>
extends Closeable, Iterator<T> {
/**
* Set the extent to remove self from on close.
*/
public void setRemoveOnClose(ExtentImpl extent);
public void setRemoveOnClose(ExtentImpl<T> extent);
}
/**
@ -231,7 +231,7 @@ public class ExtentImpl
extends IteratorChain
implements CloseableIterator {
private ExtentImpl _extent = null;
private ExtentImpl<?> _extent = null;
private boolean _closed = false;
public boolean hasNext() {
@ -342,7 +342,7 @@ public class ExtentImpl
if (!_broker.isNew(o))
return false;
Class type = o.getClass();
Class<?> type = o.getClass();
if (!_subs && type != _type)
return false;
if (_subs && !_type.isAssignableFrom(type))

View File

@ -53,7 +53,7 @@ public class InMemoryExpressionFactory
private static final Object UNIQUE = new Object();
// list of unbound variables in this query
private List _unbounds = null;
private List<UnboundVariable> _unbounds = null;
/**
* Tests whether the given candidate matches the given type and this
@ -90,8 +90,8 @@ public class InMemoryExpressionFactory
return exp.evaluate(candidate, candidate, ctx, params);
// grab the extent for this variable
UnboundVariable var = (UnboundVariable) _unbounds.get(i);
Iterator itr = ctx.extentIterator(var.getType(), true, null, false);
UnboundVariable var = _unbounds.get(i);
Iterator<Object> itr = ctx.extentIterator(var.getType(), true, null, false);
try {
// if the extent was empty, then alias the variable to null
if (!itr.hasNext()) {
@ -191,7 +191,7 @@ public class InMemoryExpressionFactory
return exp.evaluate(group, ctx, params);
// grab the extent for this variable
UnboundVariable var = (UnboundVariable) _unbounds.get(i);
UnboundVariable var = _unbounds.get(i);
Extent extent = ctx.getBroker().newExtent(var.getType(), true);
Iterator itr = extent.iterator();
try {
@ -533,7 +533,7 @@ public class InMemoryExpressionFactory
public Value newUnboundVariable(String name, Class type) {
UnboundVariable var = new UnboundVariable(type);
if (_unbounds == null)
_unbounds = new ArrayList(3);
_unbounds = new ArrayList<UnboundVariable>(3);
_unbounds.add(var);
return var;
}

View File

@ -40,8 +40,7 @@ public class ExtentImpl<T>
/**
* Constructor; supply delegate.
*/
public ExtentImpl(EntityManagerImpl em,
org.apache.openjpa.kernel.Extent extent) {
public ExtentImpl(EntityManagerImpl em, org.apache.openjpa.kernel.Extent<T> extent) {
_em = em;
_extent = new DelegatingExtent(extent,
PersistenceExceptions.getRollbackTranslator(em));
@ -50,7 +49,7 @@ public class ExtentImpl<T>
/**
* Delegate.
*/
public org.apache.openjpa.kernel.Extent getDelegate() {
public org.apache.openjpa.kernel.Extent<T> getDelegate() {
return _extent.getDelegate();
}