You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by am...@apache.org on 2007/12/17 13:51:43 UTC
svn commit: r604858 - in
/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src:
main/java/org/apache/cayenne/access/trans/
main/java/org/apache/cayenne/exp/parser/ main/java/org/apache/cayenne/map/
test/java/org/apache/cayenne/map/
Author: amaniatis
Date: Mon Dec 17 04:51:42 2007
New Revision: 604858
URL: http://svn.apache.org/viewvc?rev=604858&view=rev
Log:
PathIterator now iterates through CayenneMapEntry items, making the generics a little nicer.
Modified:
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssemblerHelper.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/ASTPath.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/DbEntity.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/Entity.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjAttribute.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjRelationship.java
cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/EntityTest.java
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssemblerHelper.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssemblerHelper.java?rev=604858&r1=604857&r2=604858&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssemblerHelper.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/QueryAssemblerHelper.java Mon Dec 17 04:51:42 2007
@@ -37,6 +37,7 @@
import org.apache.cayenne.map.ObjAttribute;
import org.apache.cayenne.map.ObjEntity;
import org.apache.cayenne.map.ObjRelationship;
+import org.apache.cayenne.util.CayenneMapEntry;
/**
* Translates parts of the query to SQL.
@@ -85,11 +86,11 @@
/** Processes parts of the OBJ_PATH expression. */
protected void appendObjPath(StringBuffer buf, Expression pathExp) {
- Iterator<Object> it = getObjEntity().resolvePathComponents(pathExp);
+ Iterator<CayenneMapEntry> it = getObjEntity().resolvePathComponents(pathExp);
ObjRelationship lastRelationship = null;
while (it.hasNext()) {
- Object pathComp = it.next();
+ CayenneMapEntry pathComp = it.next();
if (pathComp instanceof ObjRelationship) {
ObjRelationship rel = (ObjRelationship) pathComp;
@@ -122,10 +123,10 @@
}
protected void appendDbPath(StringBuffer buf, Expression pathExp) {
- Iterator<Object> it = getDbEntity().resolvePathComponents(pathExp);
+ Iterator<CayenneMapEntry> it = getDbEntity().resolvePathComponents(pathExp);
while (it.hasNext()) {
- Object pathComp = it.next();
+ CayenneMapEntry pathComp = it.next();
if (pathComp instanceof DbRelationship) {
DbRelationship rel = (DbRelationship) pathComp;
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java?rev=604858&r1=604857&r2=604858&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/access/trans/SelectTranslator.java Mon Dec 17 04:51:42 2007
@@ -49,6 +49,7 @@
import org.apache.cayenne.reflect.PropertyVisitor;
import org.apache.cayenne.reflect.ToManyProperty;
import org.apache.cayenne.reflect.ToOneProperty;
+import org.apache.cayenne.util.CayenneMapEntry;
/**
* A builder of JDBC PreparedStatements based on Cayenne SelectQueries. Translates
@@ -377,10 +378,10 @@
String path = (String) extraPaths.next();
Expression pathExp = oe.translateToDbPath(Expression.fromString(path));
- Iterator it = table.resolvePathComponents(pathExp);
+ Iterator<CayenneMapEntry> it = table.resolvePathComponents(pathExp);
// add joins and find terminating element
- Object pathComponent = null;
+ CayenneMapEntry pathComponent = null;
while (it.hasNext()) {
pathComponent = it.next();
@@ -430,13 +431,7 @@
// handle joint prefetches directly attached to this query...
if (query.getPrefetchTree() != null) {
- Iterator jointPrefetches = query
- .getPrefetchTree()
- .adjacentJointNodes()
- .iterator();
-
- while (jointPrefetches.hasNext()) {
- PrefetchTreeNode prefetch = (PrefetchTreeNode) jointPrefetches.next();
+ for (PrefetchTreeNode prefetch : query.getPrefetchTree().adjacentJointNodes()) {
// for each prefetch add all joins plus columns from the target entity
Expression prefetchExp = Expression.fromString(prefetch.getPath());
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/ASTPath.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/ASTPath.java?rev=604858&r1=604857&r2=604858&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/ASTPath.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/exp/parser/ASTPath.java Mon Dec 17 04:51:42 2007
@@ -22,6 +22,7 @@
import java.util.Iterator;
import org.apache.cayenne.map.Entity;
+import org.apache.cayenne.util.CayenneMapEntry;
/**
* Generic path expression.
@@ -68,9 +69,9 @@
/**
* Helper method to evaluate path expression with Cayenne Entity.
*/
- protected Object evaluateEntityNode(Entity entity) {
- Iterator path = entity.resolvePathComponents(this);
- Object next = null;
+ protected CayenneMapEntry evaluateEntityNode(Entity entity) {
+ Iterator<CayenneMapEntry> path = entity.resolvePathComponents(this);
+ CayenneMapEntry next = null;
while (path.hasNext()) {
next = path.next();
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/DbEntity.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/DbEntity.java?rev=604858&r1=604857&r2=604858&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/DbEntity.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/DbEntity.java Mon Dec 17 04:51:42 2007
@@ -258,7 +258,7 @@
return (Collection<DbRelationship>) super.getRelationships();
}
- public Iterator<Object> resolvePathComponents(Expression pathExp)
+ public Iterator<CayenneMapEntry> resolvePathComponents(Expression pathExp)
throws ExpressionException {
if (pathExp.getType() != Expression.DB_PATH) {
throw new ExpressionException("Invalid expression type: '"
@@ -603,7 +603,7 @@
if (path.equals(relationshipPath)) {
LinkedList<String> finalPath = new LinkedList<String>();
- Iterator<Object> it = resolvePathComponents(path);
+ Iterator<CayenneMapEntry> it = resolvePathComponents(path);
// just do one step back and one step forward to create correct joins...
// find last rel...
@@ -629,8 +629,8 @@
}
// case (3)
- Iterator<Object> pathIt = resolvePathComponents(path);
- Iterator<Object> relationshipIt = resolvePathComponents(relationshipPath);
+ Iterator<CayenneMapEntry> pathIt = resolvePathComponents(path);
+ Iterator<CayenneMapEntry> relationshipIt = resolvePathComponents(relationshipPath);
// for inserts from the both ends use LinkedList
LinkedList<String> finalPath = new LinkedList<String>();
@@ -640,7 +640,7 @@
DbRelationship nextDBR = (DbRelationship) relationshipIt.next();
// expression components may be attributes or relationships
- CayenneMapEntry next = (CayenneMapEntry) pathIt.next();
+ CayenneMapEntry next = pathIt.next();
if (nextDBR != next) {
// found split point
@@ -662,7 +662,7 @@
while (pathIt.hasNext()) {
// components may be attributes or relationships
- CayenneMapEntry next = (CayenneMapEntry) pathIt.next();
+ CayenneMapEntry next = pathIt.next();
appendPath(finalPath, next);
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/Entity.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/Entity.java?rev=604858&r1=604857&r2=604858&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/Entity.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/Entity.java Mon Dec 17 04:51:42 2007
@@ -281,8 +281,8 @@
* @see #resolvePathComponents(Expression)
*/
public Object lastPathComponent(Expression pathExp) {
- Object last = null;
- Iterator<Object> it = resolvePathComponents(pathExp);
+ CayenneMapEntry last = null;
+ Iterator<CayenneMapEntry> it = resolvePathComponents(pathExp);
while (it.hasNext()) {
last = it.next();
}
@@ -297,7 +297,7 @@
* return an Iterator, but an attempt to read the first invalid path component will
* result in ExpressionException.
*/
- public abstract Iterator<Object> resolvePathComponents(Expression pathExp)
+ public abstract Iterator<CayenneMapEntry> resolvePathComponents(Expression pathExp)
throws ExpressionException;
/**
@@ -306,13 +306,13 @@
* entity, this method will still return an Iterator, but an attempt to read the first
* invalid path component will result in ExpressionException.
*/
- public Iterator<Object> resolvePathComponents(String path) throws ExpressionException {
+ public Iterator<CayenneMapEntry> resolvePathComponents(String path) throws ExpressionException {
return new PathIterator(path);
}
// An iterator resolving mapping components represented by the path string.
// This entity is assumed to be the root of the path.
- final class PathIterator implements Iterator<Object> {
+ final class PathIterator implements Iterator<CayenneMapEntry> {
private StringTokenizer toks;
private Entity currentEnt;
@@ -329,7 +329,7 @@
return toks.hasMoreTokens();
}
- public Object next() {
+ public CayenneMapEntry next() {
String pathComp = toks.nextToken();
// see if this is an attribute
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjAttribute.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjAttribute.java?rev=604858&r1=604857&r2=604858&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjAttribute.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjAttribute.java Mon Dec 17 04:51:42 2007
@@ -22,6 +22,7 @@
import java.util.Iterator;
import org.apache.cayenne.CayenneRuntimeException;
+import org.apache.cayenne.util.CayenneMapEntry;
import org.apache.cayenne.util.Util;
import org.apache.cayenne.util.XMLEncoder;
import org.apache.commons.collections.IteratorUtils;
@@ -138,15 +139,15 @@
* Returns a DbAttribute mapped by this ObjAttribute.
*/
public DbAttribute getDbAttribute() {
- Iterator<Object> pathIterator = getDbPathIterator();
- Object o = null;
+ Iterator<CayenneMapEntry> pathIterator = getDbPathIterator();
+ CayenneMapEntry o = null;
while (pathIterator.hasNext()) {
o = pathIterator.next();
}
return (DbAttribute) o;
}
- public Iterator<Object> getDbPathIterator() {
+ public Iterator<CayenneMapEntry> getDbPathIterator() {
if (dbAttributePath == null) {
return IteratorUtils.EMPTY_ITERATOR;
}
@@ -163,7 +164,7 @@
int lastPartStart = dbAttributePath.lastIndexOf('.');
if (lastPartStart < 0) {
- Attribute attribute = dbEnt.getAttribute(dbAttributePath);
+ DbAttribute attribute = (DbAttribute) dbEnt.getAttribute(dbAttributePath);
if (attribute == null) {
return IteratorUtils.EMPTY_ITERATOR;
}
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java?rev=604858&r1=604857&r2=604858&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjEntity.java Mon Dec 17 04:51:42 2007
@@ -812,7 +812,7 @@
return (superEntity != null) ? superEntity.isSubentityOf(entity) : false;
}
- public Iterator<Object> resolvePathComponents(Expression pathExp) throws ExpressionException {
+ public Iterator<CayenneMapEntry> resolvePathComponents(Expression pathExp) throws ExpressionException {
// resolve DB_PATH if we can
if (pathExp.getType() == Expression.DB_PATH) {
@@ -896,7 +896,7 @@
// TODO: make it a public method - resolveDBPathComponents or something...
// seems generally useful
- String toDbPath(Iterator<Object> objectPathComponents) {
+ String toDbPath(Iterator<CayenneMapEntry> objectPathComponents) {
StringBuffer buf = new StringBuffer();
while (objectPathComponents.hasNext()) {
Object component = objectPathComponents.next();
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjRelationship.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjRelationship.java?rev=604858&r1=604857&r2=604858&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjRelationship.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/main/java/org/apache/cayenne/map/ObjRelationship.java Mon Dec 17 04:51:42 2007
@@ -31,6 +31,7 @@
import org.apache.cayenne.exp.ExpressionException;
import org.apache.cayenne.exp.parser.ASTDbPath;
import org.apache.cayenne.map.event.RelationshipEvent;
+import org.apache.cayenne.util.CayenneMapEntry;
import org.apache.cayenne.util.Util;
import org.apache.cayenne.util.XMLEncoder;
import org.apache.commons.lang.builder.ToStringBuilder;
@@ -539,7 +540,7 @@
StringBuffer validPath = new StringBuffer();
try {
- Iterator<Object> it = entity.resolvePathComponents(new ASTDbPath(path));
+ Iterator<CayenneMapEntry> it = entity.resolvePathComponents(new ASTDbPath(path));
while (it.hasNext()) {
DbRelationship relationship = (DbRelationship) it.next();
@@ -594,7 +595,7 @@
try {
// add new relationships from path
- Iterator<Object> it = entity.resolvePathComponents(new ASTDbPath(
+ Iterator<CayenneMapEntry> it = entity.resolvePathComponents(new ASTDbPath(
this.dbRelationshipPath));
while (it.hasNext()) {
Modified: cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/EntityTest.java
URL: http://svn.apache.org/viewvc/cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/EntityTest.java?rev=604858&r1=604857&r2=604858&view=diff
==============================================================================
--- cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/EntityTest.java (original)
+++ cayenne/main/trunk/framework/cayenne-jdk1.5-unpublished/src/test/java/org/apache/cayenne/map/EntityTest.java Mon Dec 17 04:51:42 2007
@@ -26,6 +26,7 @@
import org.apache.cayenne.exp.ExpressionFactory;
import org.apache.cayenne.remote.hessian.service.HessianUtil;
import org.apache.cayenne.unit.CayenneCase;
+import org.apache.cayenne.util.CayenneMapEntry;
import org.apache.cayenne.util.Util;
public class EntityTest extends CayenneCase {
@@ -168,7 +169,7 @@
// itertator should be returned, but when trying to read 1st component,
// it should throw an exception....
ObjEntity galleryEnt = getObjEntity("Gallery");
- Iterator it = galleryEnt.resolvePathComponents(pathExpr);
+ Iterator<CayenneMapEntry> it = galleryEnt.resolvePathComponents(pathExpr);
assertTrue(it.hasNext());
try {
@@ -200,7 +201,7 @@
pathExpr.setOperand(0, "galleryName");
ObjEntity galleryEnt = getObjEntity("Gallery");
- Iterator it = galleryEnt.resolvePathComponents(pathExpr);
+ Iterator<CayenneMapEntry> it = galleryEnt.resolvePathComponents(pathExpr);
// iterator must contain a single ObjAttribute
assertNotNull(it);
@@ -221,7 +222,7 @@
entity.addAttribute(attribute1);
entity.addAttribute(attribute2);
- Collection attributes = entity.getAttributes();
+ Collection<? extends Attribute> attributes = entity.getAttributes();
assertEquals(2, attributes.size());
entity.removeAttribute("a1");