Return-Path: Delivered-To: apmail-db-ojb-dev-archive@www.apache.org Received: (qmail 54947 invoked from network); 18 Feb 2006 01:14:59 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (209.237.227.199) by minotaur.apache.org with SMTP; 18 Feb 2006 01:14:59 -0000 Received: (qmail 87296 invoked by uid 500); 18 Feb 2006 01:14:59 -0000 Delivered-To: apmail-db-ojb-dev-archive@db.apache.org Received: (qmail 87139 invoked by uid 500); 18 Feb 2006 01:14:58 -0000 Mailing-List: contact ojb-dev-help@db.apache.org; run by ezmlm Precedence: bulk List-Unsubscribe: List-Help: List-Post: List-Id: "OJB Developers List" Reply-To: "OJB Developers List" Delivered-To: mailing list ojb-dev@db.apache.org Received: (qmail 87128 invoked by uid 500); 18 Feb 2006 01:14:58 -0000 Received: (qmail 87125 invoked by uid 99); 18 Feb 2006 01:14:57 -0000 Received: from asf.osuosl.org (HELO asf.osuosl.org) (140.211.166.49) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 17 Feb 2006 17:14:57 -0800 X-ASF-Spam-Status: No, hits=-9.4 required=10.0 tests=ALL_TRUSTED,NO_REAL_NAME X-Spam-Check-By: apache.org Received: from [209.237.227.194] (HELO minotaur.apache.org) (209.237.227.194) by apache.org (qpsmtpd/0.29) with SMTP; Fri, 17 Feb 2006 17:14:57 -0800 Received: (qmail 54896 invoked by uid 65534); 18 Feb 2006 01:14:36 -0000 Message-ID: <20060218011436.54893.qmail@minotaur.apache.org> Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r378672 - in /db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata: CollectionDescriptor.java ObjectReferenceDescriptor.java Date: Sat, 18 Feb 2006 01:14:36 -0000 To: ojb-commits@db.apache.org From: arminw@apache.org X-Mailer: svnmailer-1.0.6 X-Virus-Checked: Checked by ClamAV on apache.org X-Spam-Rating: minotaur.apache.org 1.6.2 0/1000/N Author: arminw Date: Fri Feb 17 17:14:34 2006 New Revision: 378672 URL: http://svn.apache.org/viewcvs?rev=378672&view=rev Log: fix for test-suite errors caused by new ForeignKey class Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/CollectionDescriptor.java db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ObjectReferenceDescriptor.java Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/CollectionDescriptor.java URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/CollectionDescriptor.java?rev=378672&r1=378671&r2=378672&view=diff ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/CollectionDescriptor.java (original) +++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/CollectionDescriptor.java Fri Feb 17 17:14:34 2006 @@ -19,6 +19,7 @@ import java.util.Collection; import java.util.Iterator; import java.util.Vector; +import java.util.List; import org.apache.commons.lang.SystemUtils; import org.apache.ojb.broker.PersistenceBrokerException; @@ -64,6 +65,17 @@ super(descriptor); } + /** + * Override method from base class to declare foreign key + * field as inverse. + * @param fkField + * @param targetField + */ + public void addForeignKeyField(Object fkField, String targetField) + { + addForeignKeyField(fkField, targetField, true); + } + public String[] getFksToThisClass() { if (fksToThisClassAry == null) @@ -259,23 +271,12 @@ // close opening tag result += " >" + eol; - // write elements - // inverse fk elements - for (int i=0;i" + eol; - } - else - { - String fk = (String) obj; - result += " " + tags.getOpeningTagNonClosingById(INVERSE_FK) + " "; - result += tags.getAttribute(FIELD_REF, fk) + "/>" + eol; - } + // write foreignkey elements + List fkf = getForeignKeyFields(); + for(int i = 0; i < fkf.size(); i++) + { + ForeignKey fk = (ForeignKey) fkf.get(i); + result += (fk.toXML()); } // write optional M:N elements Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ObjectReferenceDescriptor.java URL: http://svn.apache.org/viewcvs/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ObjectReferenceDescriptor.java?rev=378672&r1=378671&r2=378672&view=diff ============================================================================== --- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ObjectReferenceDescriptor.java (original) +++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/metadata/ObjectReferenceDescriptor.java Fri Feb 17 17:14:34 2006 @@ -350,11 +350,22 @@ */ public void addForeignKeyField(Object fkField, String targetField) { + addForeignKeyField(fkField, targetField, false); + } + + /** + * Add a foreign key field. + * @param fkField the id or name of the foreign key field + * @param targetField the name of the target field + * @param inverse Flag to mark inverse foreign key fields. + */ + protected void addForeignKeyField(Object fkField, String targetField, boolean inverse) + { if (m_ForeignKeyFields == null) { m_ForeignKeyFields = new Vector(); } - m_ForeignKeyFields.add(new ForeignKey(fkField, targetField)); + m_ForeignKeyFields.add(new ForeignKey(fkField, targetField, inverse)); } @@ -733,29 +744,11 @@ // elements // write foreignkey elements - for( int i = 0; i < getForeignKeyFields().size(); i++ ) + List fkf = getForeignKeyFields(); + for(int i = 0; i < fkf.size(); i++) { - Object obj = getForeignKeyFields().get( i ); - if( obj instanceof Integer ) - { - String fkId = obj.toString(); - result.append( " " ); - result.append( tags.getOpeningTagNonClosingById( FOREIGN_KEY ) ); - result.append( " " ); - result.append( tags.getAttribute( FIELD_ID_REF, fkId ) ); - result.append( "/>" ); - result.append( eol ); - } - else - { - String fk = ( String ) obj; - result.append( " " ); - result.append( tags.getOpeningTagNonClosingById( FOREIGN_KEY ) ); - result.append( " " ); - result.append( tags.getAttribute( FIELD_REF, fk ) ); - result.append( "/>" ); - result.append( eol ); - } + ForeignKey fk = (ForeignKey) fkf.get(i); + result.append(fk.toXML()); } // closing tag @@ -768,17 +761,50 @@ /** * Helper to store the fkField and the field it's referencing. */ - static class ForeignKey implements Serializable + static class ForeignKey implements Serializable, XmlCapable { private static final long serialVersionUID = 3256718468362482741L; - + boolean inverse; Object fkField; String targetField; - ForeignKey(Object fkField, String targetField) + public ForeignKey(Object fkField, String targetField, boolean inverse) { this.fkField = fkField; this.targetField = targetField; + this.inverse = inverse; + } + + public String toXML() + { + RepositoryTags tags = RepositoryTags.getInstance(); + String eol = System.getProperty( "line.separator" ); + // opening tag + StringBuffer result = new StringBuffer(); + result.append( " " ); + if(inverse) result.append( tags.getOpeningTagNonClosingById( INVERSE_FK ) ); + else result.append( tags.getOpeningTagNonClosingById( FOREIGN_KEY ) ); + result.append( " " ); + String fk; + if(fkField instanceof String) + { + fk = ( String ) fkField; + result.append( tags.getAttribute( FIELD_REF, fk ) ); + } + else + { + fk = fkField.toString(); + result.append( tags.getAttribute( FIELD_ID_REF, fk ) ); + } + result.append( " " ); + if(targetField != null) + { + result.append( tags.getAttribute(TARGET_FIELD_REF, targetField)); + } + result.append( "/>" ); + result.append( eol ); + + return result.toString(); } } } --------------------------------------------------------------------- To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org For additional commands, e-mail: ojb-dev-help@db.apache.org