Author: tchemit Date: 2011-09-22 00:20:20 +0200 (Thu, 22 Sep 2011) New Revision: 2336 Url: http://nuiton.org/repositories/revision/topia/2336 Log: Anomalie #1732: Cannot compile with N multiplicity to an enumeration Added: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/Title.java Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java trunk/topia-persistence/src/test/java/org/nuiton/topiatest/Gender.java trunk/topia-persistence/src/test/xmi/topiatest.zargo Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java 2011-09-21 18:13:28 UTC (rev 2335) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/EntityTransformer.java 2011-09-21 22:20:20 UTC (rev 2336) @@ -615,8 +615,7 @@ // getXXX addMultipleGetOperation(attribute, collectionInterface); - if (!TopiaGeneratorUtil.isPrimitiveType(attribute) && - !TopiaGeneratorUtil.isDateType(attribute)) { + if (TopiaGeneratorUtil.isEntity(attribute, model)) { // getXXXByTopiaId addMultipleGetTopiaIdOperation(attribute); Modified: trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java =================================================================== --- trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java 2011-09-21 18:13:28 UTC (rev 2335) +++ trunk/topia-persistence/src/main/java/org/nuiton/topia/generator/TopiaGeneratorUtil.java 2011-09-21 22:20:20 UTC (rev 2336) @@ -101,8 +101,8 @@ * The Eugene provider of tag values and stereotypes. * * @author tchemit <chemit@codelutin.com> + * @plexus.component role="org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider" role-hint="topia" * @since 2.3 - * @plexus.component role="org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider" role-hint="topia" */ public static class TopiaModelPropertiesProvider extends ModelPropertiesUtil.ModelPropertiesProvider { @@ -823,7 +823,7 @@ /** * Retourne true si le tagValue {@link TopiaTagValues#TAG_CONTEXTABLE} * à la valeur {@code true}. - * + * * @param classifier classifier to test * @return {@code true} si {@link TopiaTagValues#TAG_CONTEXTABLE} == {@code true} */ @@ -970,7 +970,7 @@ fqns.remove(VOID_TYPE); int packageLength = packageName.length(); List<String> genericType = new ArrayList<String>(); - for (Iterator<String> it = fqns.iterator(); it.hasNext();) { + for (Iterator<String> it = fqns.iterator(); it.hasNext(); ) { String fqn = it.next(); int lastIndex = fqn.lastIndexOf("."); if (lastIndex == packageLength && fqn.startsWith(packageName)) { @@ -993,7 +993,7 @@ /** * Obtain the class to use as abstract dao. - * + * <p/> * It will look after a tag value {@link TopiaTagValues#TAG_DAO_IMPLEMENTATION} in model * and if not found will use the default value which is {@link TopiaDAOImpl}. * @@ -1081,7 +1081,7 @@ } public static boolean isImportNeeded(Collection<ObjectModelOperation> operations, - String importName) { + String importName) { if (CollectionUtils.isNotEmpty(operations)) { for (ObjectModelOperation op : operations) { if (op.getReturnType().contains(importName)) { @@ -1135,17 +1135,38 @@ } /** + * Check if the given attribute type is an entity. + * + * @param attribute attribute to test + * @param model model containing the attribute + * @return {@code true} if type of attribute is an entity, + * {@code false} otherwise + * @see TopiaStereoTypes#STEREOTYPE_ENTITY + * @since 2.7 + */ + public static boolean isEntity(ObjectModelAttribute attribute, + ObjectModel model) { + if (isPrimitiveType(attribute)) { + return false; + } + String attributeType = attribute.getType(); + ObjectModelClassifier typeclassifier = + model.getClassifier(attributeType); + return typeclassifier != null && isEntity(typeclassifier); + } + + /** * Check if the given classifier has the * {@link TopiaStereoTypes#STEREOTYPE_ENTITY} and is not an enumeration * * @param classifier classifier to test * @return {@code true} if stereotype was found and classifier is not - * enumeration, {@code false} otherwise + * enumeration, {@code false} otherwise * @see TopiaStereoTypes#STEREOTYPE_ENTITY * @since 2.5 */ public static boolean isEntity(ObjectModelClassifier classifier) { - return hasEntityStereotype(classifier) && ! classifier.isEnum(); + return hasEntityStereotype(classifier) && !classifier.isEnum(); } @@ -1732,7 +1753,7 @@ * <p/> * * @param classifier classifier to seek - * @param model model to seek + * @param model model to seek * @return the none empty value of the found tag value or {@code null} if not found nor empty. * @see TopiaTagValues#TAG_NO_LOG_IN_SERVICE * @since 2.5 @@ -1744,7 +1765,7 @@ return value; } - /** + /** * Obtain the value of the {@link TopiaTagValues#TAG_DAO_IMPLEMENTATION} * tag value on the given model. * <p/> Modified: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/Gender.java =================================================================== --- trunk/topia-persistence/src/test/java/org/nuiton/topiatest/Gender.java 2011-09-21 18:13:28 UTC (rev 2335) +++ trunk/topia-persistence/src/test/java/org/nuiton/topiatest/Gender.java 2011-09-21 22:20:20 UTC (rev 2336) @@ -25,5 +25,5 @@ package org.nuiton.topiatest; public enum Gender { - MALE, FEMALE; + MALE, FEMALE } Added: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/Title.java =================================================================== --- trunk/topia-persistence/src/test/java/org/nuiton/topiatest/Title.java (rev 0) +++ trunk/topia-persistence/src/test/java/org/nuiton/topiatest/Title.java 2011-09-21 22:20:20 UTC (rev 2336) @@ -0,0 +1,13 @@ +package org.nuiton.topiatest; + +/** + * To test http://nuiton.org/issues/1732. + * + * @author tchemit <chemit@codelutin.com> + * @since 2.6.2 + */ +public enum Title { + Mr, + Madam, + Other +} Property changes on: trunk/topia-persistence/src/test/java/org/nuiton/topiatest/Title.java ___________________________________________________________________ Added: svn:keywords + Author Date Id Revision HeadURL Added: svn:eol-style + native Modified: trunk/topia-persistence/src/test/xmi/topiatest.zargo =================================================================== (Binary files differ)