mirror of
https://github.com/apache/openjpa.git
synced 2025-03-06 16:39:11 +00:00
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:
parent
24f976d619
commit
b1b503e136
@ -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) {
|
||||
|
@ -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.
|
||||
|
@ -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))
|
||||
|
@ -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;
|
||||
}
|
||||
|
@ -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();
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user