Return-Path: Delivered-To: apmail-cayenne-commits-archive@www.apache.org Received: (qmail 9796 invoked from network); 17 Dec 2007 12:52:09 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 17 Dec 2007 12:52:09 -0000 Received: (qmail 53376 invoked by uid 500); 17 Dec 2007 12:51:58 -0000 Delivered-To: apmail-cayenne-commits-archive@cayenne.apache.org Received: (qmail 53356 invoked by uid 500); 17 Dec 2007 12:51:58 -0000 Mailing-List: contact commits-help@cayenne.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cayenne.apache.org Delivered-To: mailing list commits@cayenne.apache.org Received: (qmail 53347 invoked by uid 99); 17 Dec 2007 12:51:58 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 17 Dec 2007 04:51:58 -0800 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 17 Dec 2007 12:51:54 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id AB06A1A9850; Mon, 17 Dec 2007 04:51:44 -0800 (PST) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: 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/ Date: Mon, 17 Dec 2007 12:51:43 -0000 To: commits@cayenne.apache.org From: amaniatis@apache.org X-Mailer: svnmailer-1.0.8 Message-Id: <20071217125144.AB06A1A9850@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 it = getObjEntity().resolvePathComponents(pathExp); + Iterator 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 it = getDbEntity().resolvePathComponents(pathExp); + Iterator 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 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 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) super.getRelationships(); } - public Iterator resolvePathComponents(Expression pathExp) + public Iterator 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 finalPath = new LinkedList(); - Iterator it = resolvePathComponents(path); + Iterator 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 pathIt = resolvePathComponents(path); - Iterator relationshipIt = resolvePathComponents(relationshipPath); + Iterator pathIt = resolvePathComponents(path); + Iterator relationshipIt = resolvePathComponents(relationshipPath); // for inserts from the both ends use LinkedList LinkedList finalPath = new LinkedList(); @@ -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 it = resolvePathComponents(pathExp); + CayenneMapEntry last = null; + Iterator 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 resolvePathComponents(Expression pathExp) + public abstract Iterator 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 resolvePathComponents(String path) throws ExpressionException { + public Iterator 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 { + final class PathIterator implements Iterator { 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 pathIterator = getDbPathIterator(); - Object o = null; + Iterator pathIterator = getDbPathIterator(); + CayenneMapEntry o = null; while (pathIterator.hasNext()) { o = pathIterator.next(); } return (DbAttribute) o; } - public Iterator getDbPathIterator() { + public Iterator 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 resolvePathComponents(Expression pathExp) throws ExpressionException { + public Iterator 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 objectPathComponents) { + String toDbPath(Iterator 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 it = entity.resolvePathComponents(new ASTDbPath(path)); + Iterator 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 it = entity.resolvePathComponents(new ASTDbPath( + Iterator 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 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 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 attributes = entity.getAttributes(); assertEquals(2, attributes.size()); entity.removeAttribute("a1");