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
[email protected]
https://lists.sourceforge.net/lists/listinfo/xdoclet-devel