You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cayenne.apache.org by km...@apache.org on 2006/05/30 14:49:37 UTC
svn commit: r410263 - in
/incubator/cayenne/main/trunk/cayenne/cayenne-java/src:
cayenne/java/org/objectstyle/cayenne/map/Entity.java
tests/java/org/objectstyle/cayenne/map/EntityTst.java
Author: kmenard
Date: Tue May 30 05:49:37 2006
New Revision: 410263
URL: http://svn.apache.org/viewvc?rev=410263&view=rev
Log:
Fix for CAY-415. Entities can no longer add relationships with the same name as an existing attribute, vice versa.
Modified:
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/map/Entity.java
incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/map/EntityTst.java
Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/map/Entity.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/map/Entity.java?rev=410263&r1=410262&r2=410263&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/map/Entity.java (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/cayenne/java/org/objectstyle/cayenne/map/Entity.java Tue May 30 05:49:37 2006
@@ -170,6 +170,13 @@
+ attribute.getName());
}
}
+
+ // Check that there aren't any relationships with the same name as the given attribute.
+ Object existingRelationship = relationships.get(attribute.getName());
+ if (existingRelationship != null) {
+ throw new IllegalArgumentException(
+ "An attempt to override relationship '" + attribute.getName());
+ }
attributes.put(attribute.getName(), attribute);
attribute.setEntity(this);
@@ -211,6 +218,13 @@
throw new IllegalArgumentException(
"An attempt to override relationship '" + relationship.getName());
}
+ }
+
+ // Check that there aren't any attributes with the same name as the given relationship.
+ Object existingAttribute = attributes.get(relationship.getName());
+ if (existingAttribute != null) {
+ throw new IllegalArgumentException("An attempt to override attribute '"
+ + relationship.getName());
}
relationships.put(relationship.getName(), relationship);
Modified: incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/map/EntityTst.java
URL: http://svn.apache.org/viewvc/incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/map/EntityTst.java?rev=410263&r1=410262&r2=410263&view=diff
==============================================================================
--- incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/map/EntityTst.java (original)
+++ incubator/cayenne/main/trunk/cayenne/cayenne-java/src/tests/java/org/objectstyle/cayenne/map/EntityTst.java Tue May 30 05:49:37 2006
@@ -161,6 +161,40 @@
entity.removeRelationship(rel.getName());
assertNull(entity.getRelationship(rel.getName()));
}
+
+ public void testAttributeClashWithRelationship() {
+ Entity entity = new MockEntity();
+ Relationship rel = new MockRelationship("tst_name");
+
+ entity.addRelationship(rel);
+
+ try {
+ Attribute attribute = new MockAttribute("tst_name");
+ entity.addAttribute(attribute);
+
+ fail("Exception should have been thrown due to clashing attribute and relationship names.");
+ }
+ catch (Exception e) {
+ // Exception expected.
+ }
+ }
+
+ public void testRelationshipClashWithAttribute() {
+ Entity entity = new MockEntity();
+ Attribute attribute = new MockAttribute("tst_name");
+
+ entity.addAttribute(attribute);
+
+ try {
+ Relationship rel = new MockRelationship("tst_name");
+ entity.addRelationship(rel);
+
+ fail("Exception should have been thrown due to clashing attribute and relationship names.");
+ }
+ catch (Exception e) {
+ // Exception expected.
+ }
+ }
public void testResolveBadObjPath1() {
// test invalid expression path