From: <hib...@li...> - 2006-05-29 14:22:13
|
Author: max...@jb... Date: 2006-05-29 10:21:56 -0400 (Mon, 29 May 2006) New Revision: 9957 Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/ide/completion/ConfigurationCompletion.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/Model.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/ModelCompletionTest.java trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/Product.hbm.xml trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/Product.java Log: fixed completion for joined components e.g. "from Product p join p.otherOwners where p.|" Modified: trunk/HibernateExt/tools/src/java/org/hibernate/tool/ide/completion/ConfigurationCompletion.java =================================================================== --- trunk/HibernateExt/tools/src/java/org/hibernate/tool/ide/completion/ConfigurationCompletion.java 2006-05-29 14:20:28 UTC (rev 9956) +++ trunk/HibernateExt/tools/src/java/org/hibernate/tool/ide/completion/ConfigurationCompletion.java 2006-05-29 14:21:56 UTC (rev 9957) @@ -9,6 +9,7 @@ import java.util.Set; import java.util.Map.Entry; +import org.hibernate.HibernateException; import org.hibernate.cfg.Configuration; import org.hibernate.mapping.Collection; import org.hibernate.mapping.Component; @@ -104,6 +105,8 @@ // No properties left if (value instanceof Component) { addPropertiesToList((Component) value, prefix, cursorPosition, hcc); + } else if (value instanceof Collection && ((Collection)value).getElement() instanceof Component) { + addPropertiesToList((Component) ((Collection)value).getElement(), prefix, cursorPosition, hcc); } else { addPropertiesToList(getPersistentClass( getReferencedEntityName( value ) ), prefix, cursorPosition, hcc); } @@ -280,8 +283,13 @@ if (attribute.equals(idName)) { return cmd.getIdentifierProperty().getValue(); } - Property property = cmd.getProperty( attribute ); - return property==null?null:property.getValue(); + try { + Property property = cmd.getProperty( attribute ); + return property==null?null:property.getValue(); + } catch (HibernateException he) { + return null; + } + } private Value getNextAttributeType(Component t, String attributeName) { Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/Model.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/Model.java 2006-05-29 14:20:28 UTC (rev 9956) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/Model.java 2006-05-29 14:21:56 UTC (rev 9957) @@ -38,6 +38,7 @@ addInputStream(Model.class.getResourceAsStream("Store.hbm.xml")). addInputStream(Model.class.getResourceAsStream("ProductOwnerAddress.hbm.xml")). addInputStream(Model.class.getResourceAsStream("StoreCity.hbm.xml")); + cfg.buildMappings(); return cfg; } Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/ModelCompletionTest.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/ModelCompletionTest.java 2006-05-29 14:20:28 UTC (rev 9956) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/ModelCompletionTest.java 2006-05-29 14:21:56 UTC (rev 9957) @@ -96,7 +96,7 @@ Collector hcc = new Collector(); cc.getMatchingProperties( "Product", "", hcc ); - doTestFields(hcc.getCompletionProposals(), new String[] {"id", "owner", "price", "stores", "version", "weight"}); + doTestFields(hcc.getCompletionProposals(), new String[] {"id", "otherOwners", "owner", "price", "stores", "version", "weight" }); hcc.clear(); cc.getMatchingProperties( "Product", " ", hcc ); @@ -407,7 +407,17 @@ assertEquals(3, completionProposals.length); - + c.clear(); + + query = "from Product as p join p.otherOwners o where o."; + caretPosition = getCaretPosition(query); + hqlEval.codeComplete(getCleanQuery(query), caretPosition, c); + + completionProposals = c.getCompletionProposals(); + + assertEquals(3, completionProposals.length); + + } Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/Product.hbm.xml =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/Product.hbm.xml 2006-05-29 14:20:28 UTC (rev 9956) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/Product.hbm.xml 2006-05-29 14:21:56 UTC (rev 9957) @@ -23,6 +23,15 @@ <property name="lastName"/> <one-to-one name="address" class="ProductOwnerAddress"/> </component> + + <set name="otherOwners"> + <key/> + <composite-element class="ProductOwner"> + <property name="firstName"/> + <property name="lastName"/> + <many-to-one name="address" class="ProductOwnerAddress"/> + </composite-element> + </set> </class> </hibernate-mapping> \ No newline at end of file Modified: trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/Product.java =================================================================== --- trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/Product.java 2006-05-29 14:20:28 UTC (rev 9956) +++ trunk/HibernateExt/tools/src/test/org/hibernate/tool/ide/completion/Product.java 2006-05-29 14:21:56 UTC (rev 9957) @@ -37,6 +37,8 @@ private ProductOwner owner; + private Set otherOwners; + public Product() { } @@ -87,5 +89,12 @@ public ProductOwner getOwner() { return owner; } + + public Set getOtherOwners() { + return otherOwners; + } + public void setOtherOwners(Set otherOwners) { + this.otherOwners = otherOwners; + } } |