Update of /cvsroot/xdoclet/xdoclet/modules/jdo/src/xdoclet/modules/jdo In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv19978/modules/jdo/src/xdoclet/modules/jdo
Modified Files: JdoTagsHandler.java Log Message: The project-wide default-fetch-depth is now only applied, if the field is a member of at least one fetch-group. Index: JdoTagsHandler.java =================================================================== RCS file: /cvsroot/xdoclet/xdoclet/modules/jdo/src/xdoclet/modules/jdo/JdoTagsHandler.java,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -r1.11 -r1.12 *** JdoTagsHandler.java 20 Jul 2005 14:43:48 -0000 1.11 --- JdoTagsHandler.java 17 Sep 2005 22:44:43 -0000 1.12 *************** *** 6,15 **** import java.util.ArrayList; - import java.util.Collection; import java.util.Iterator; import java.util.Properties; ! ! import xjavadoc.*; import xdoclet.SubTask; --- 6,18 ---- import java.util.ArrayList; import java.util.Collection; + import java.util.HashSet; import java.util.Iterator; import java.util.Properties; ! import java.util.Set; ! import xjavadoc.XClass; ! import xjavadoc.XDoc; ! import xjavadoc.XPackage; ! import xjavadoc.XTag; import xdoclet.SubTask; *************** *** 31,34 **** --- 34,50 ---- /** + * @see #cacheFieldsInFetchGroups + */ + private XClass cacheFieldsInFetchGroupsClass = null; + /** + * This Set stores all fields that are declared in the current class (cached in [EMAIL PROTECTED] + * #cacheFieldsInFetchGroupsClass}) to be included in a fetch-group. If a field is in no fetch-group, it is not + * contained in this Set. This Set is null if [EMAIL PROTECTED] #ifCurrentFieldIsInFetchGroup(String, Properties)} has not yet + * been called. If [EMAIL PROTECTED] #cacheFieldsInFetchGroupsClass} specifies a class that is different from [EMAIL PROTECTED] + * XDocletTagSupport#getCurrentClass()} then this Set needs to be recreated. + */ + private Set cacheFieldsInFetchGroups = null; + + /** * The <code>forAllPackages</code> iterates through all packages, and generates the template if the * jdo.persistence-capable tag is present in at least one class in the package. <p> *************** *** 179,182 **** --- 195,231 ---- } + public void ifCurrentFieldIsInFetchGroup(String template, Properties attributes) throws XDocletException + { + if (cacheFieldsInFetchGroupsClass != getCurrentClass()) + cacheFieldsInFetchGroupsClass = null; + + if (cacheFieldsInFetchGroupsClass == null || cacheFieldsInFetchGroups == null) { + if (cacheFieldsInFetchGroups == null) + cacheFieldsInFetchGroups = new HashSet(); + else + cacheFieldsInFetchGroups.clear(); + + for (Iterator it = getCurrentClass().getDoc().getTags("jdo.fetch-group").iterator(); it.hasNext(); ) { + XTag fgt = (XTag) it.next(); + String fieldStr = fgt.getAttributeValue("field-names"); + + if (fieldStr != null) { + String[] fieldNames = fieldStr.split(","); + + for (int i = 0; i < fieldNames.length; ++i) { + String fieldName = fieldNames[i].replaceAll(" ", ""); + + if (!cacheFieldsInFetchGroups.contains(fieldName)) + cacheFieldsInFetchGroups.add(fieldName); + } + } + } + cacheFieldsInFetchGroupsClass = getCurrentClass(); + } + + if (cacheFieldsInFetchGroups.contains(getCurrentField().getName())) + generate(template); + } + protected void setCurrentVendorExtension(VendorExtension vendorExtension) { ------------------------------------------------------- SF.Net email is sponsored by: Tame your development challenges with Apache's Geronimo App Server. Download it for free - -and be entered to win a 42" plasma tv or your very own Sony(tm)PSP. Click here to play: http://sourceforge.net/geronimo.php _______________________________________________ xdoclet-devel mailing list xdoclet-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/xdoclet-devel