Update of /cvsroot/xdoclet/xdoclet/modules/ejb/src/xdoclet/modules/ejb/entity In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv5627/modules/ejb/src/xdoclet/modules/ejb/entity
Modified Files: ValueObjectTagsHandler.java Log Message: New tag parameter to let user decide the concrete type of collections in Value Objects (XDT-518) Index: ValueObjectTagsHandler.java =================================================================== RCS file: /cvsroot/xdoclet/xdoclet/modules/ejb/src/xdoclet/modules/ejb/entity/ValueObjectTagsHandler.java,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -r1.22 -r1.23 *** ValueObjectTagsHandler.java 3 Apr 2005 10:46:57 -0000 1.22 --- ValueObjectTagsHandler.java 3 Apr 2005 12:03:20 -0000 1.23 *************** *** 5,8 **** --- 5,9 ---- package xdoclet.modules.ejb.entity; + import java.lang.reflect.Modifier; import java.text.MessageFormat; import java.util.*; *************** *** 15,23 **** --- 16,27 ---- import xdoclet.DocletTask; import xdoclet.XDocletException; + import xdoclet.XDocletMessages; import xdoclet.modules.ejb.EjbTagsHandler; + import xdoclet.modules.ejb.XDocletModulesEjbMessages; import xdoclet.modules.ejb.entity.ValueObjectSubTask; import xdoclet.modules.ejb.intf.InterfaceTagsHandler; import xdoclet.tagshandler.MethodTagsHandler; import xdoclet.util.LogUtil; + import xdoclet.util.Translator; import xdoclet.util.TypeConversionUtil; *************** *** 518,529 **** public String concreteCollectionType() throws XDocletException { String currentReturnType = getCurrentMethod().getReturnType().getType().getQualifiedName(); - String res = null; if (currentReturnType.equals("java.util.Collection")) { ! res = "java.util.ArrayList"; } else if (currentReturnType.equals("java.util.Set")) { ! res = "java.util.HashSet"; } else { --- 522,580 ---- public String concreteCollectionType() throws XDocletException { + String concreteType = getCurrentMethod().getDoc().getTagAttributeValue("ejb.value-object", "concrete-type"); + Class concreteClass = null; + + // test the concrete class + if (concreteType != null) { + try { + concreteClass = Class.forName(concreteType); + } + catch (ClassNotFoundException e) { + throw new XDocletException(Translator.getString(XDocletModulesEjbMessages.class, + XDocletModulesEjbMessages.VALUE_OBJECT_CONCRETE_TYPE_NOT_FOUND, + new String[]{concreteType})); + } + if (concreteClass.isInterface()) { + throw new XDocletException(Translator.getString(XDocletModulesEjbMessages.class, + XDocletModulesEjbMessages.VALUE_OBJECT_CONCRETE_TYPE_IS_INTF, + new String[]{concreteType})); + } + if (Modifier.isAbstract(concreteClass.getModifiers())) { + throw new XDocletException(Translator.getString(XDocletModulesEjbMessages.class, + XDocletModulesEjbMessages.VALUE_OBJECT_CONCRETE_TYPE_IS_ABSTRACT, + new String[]{concreteType})); + } + } + String currentReturnType = getCurrentMethod().getReturnType().getType().getQualifiedName(); if (currentReturnType.equals("java.util.Collection")) { ! if (concreteClass == null) { ! return "java.util.ArrayList"; ! } ! else { ! // verify that the concrete class is a Collection ! if (!Collection.class.isAssignableFrom(concreteClass)) { ! throw new XDocletException(Translator.getString(XDocletModulesEjbMessages.class, ! XDocletModulesEjbMessages.VALUE_OBJECT_CONCRETE_TYPE_INVALID, ! new String[]{concreteType, "java.util.Collection"})); ! } ! return concreteType; ! } ! } else if (currentReturnType.equals("java.util.Set")) { ! if (concreteClass == null) { ! return "java.util.HashSet"; ! } ! else { ! // verify that the concrete class is a Set ! if (!Set.class.isAssignableFrom(concreteClass)) { ! throw new XDocletException(Translator.getString(XDocletModulesEjbMessages.class, ! XDocletModulesEjbMessages.VALUE_OBJECT_CONCRETE_TYPE_INVALID, ! new String[]{concreteType, "java.util.Set"})); ! } ! return concreteType; ! } } else { *************** *** 532,536 **** " on aggregate or composition."); } - return res; } --- 583,586 ---- ------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ xdoclet-devel mailing list xdoclet-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/xdoclet-devel