stevel 2004/10/08 04:09:46
Modified: docs/manual/OptionalTasks depend.html
src/main/org/apache/tools/ant/taskdefs/optional/depend
Depend.java
src/main/org/apache/tools/ant/taskdefs/rmic
DefaultRmicAdapter.java ForkingSunRmic.java
WLRmic.java
Log:
Fed up with complaints about rmic generated code not having its source files
found. Now you can turn it off.
Revision Changes Path
1.11 +6 -0 ant/docs/manual/OptionalTasks/depend.html
Index: depend.html
===================================================================
RCS file: /home/cvs/ant/docs/manual/OptionalTasks/depend.html,v
retrieving revision 1.10
retrieving revision 1.11
diff -u -r1.10 -r1.11
--- depend.html 9 Feb 2004 21:50:08 -0000 1.10
+++ depend.html 8 Oct 2004 11:09:45 -0000 1.11
@@ -147,6 +147,12 @@
check dependencies</td>
<td valign="top" align="center">No</td>
</tr>
+ <tr>
+ <td valign="top">warnOnRmiStubs</td>
+ <td valign="top">Flag to disable warnings about files that look like
rmic generated stub/skeleton
+ classes, and which have no .java source. Useful when doing rmi
development. </td>
+ <td valign="top" align="center">No, default=true</td>
+ </tr>
</table>
<h3>Parameters specified as nested elements</h3>
1.44 +69 -13
ant/src/main/org/apache/tools/ant/taskdefs/optional/depend/Depend.java
Index: Depend.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/optional/depend/Depend.java,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -r1.43 -r1.44
--- Depend.java 9 Mar 2004 16:48:16 -0000 1.43
+++ Depend.java 8 Oct 2004 11:09:46 -0000 1.44
@@ -31,6 +31,8 @@
import org.apache.tools.ant.DirectoryScanner;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.MatchingTask;
+import org.apache.tools.ant.taskdefs.rmic.DefaultRmicAdapter;
+import org.apache.tools.ant.taskdefs.rmic.WLRmic;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.types.Reference;
import org.apache.tools.ant.util.depend.DependencyAnalyzer;
@@ -96,6 +98,11 @@
private boolean closure = false;
/**
+ * flag to enable warning if we encounter RMI stubs
+ */
+ private boolean warnOnRmiStubs=true;
+
+ /**
* Flag which controls whether the reversed dependencies should be
* dumped to the log
*/
@@ -155,6 +162,16 @@
}
/**
+ * flag to set to true if you want dependency issues with RMI
+ * stubs to appear at warning level.
+ * @param warnOnRmiStubs
+ * @since Ant1.7
+ */
+ public void setWarnOnRmiStubs(boolean warnOnRmiStubs) {
+ this.warnOnRmiStubs = warnOnRmiStubs;
+ }
+
+ /**
* Read the dependencies from cache file
*
* @return a collection of class dependencies
@@ -326,10 +343,8 @@
while (depEnum.hasMoreElements()) {
dependencyList.addElement(depEnum.nextElement());
}
- if (dependencyList != null) {
- cacheDirty = true;
- dependencyMap.put(info.className, dependencyList);
- }
+ cacheDirty = true;
+ dependencyMap.put(info.className, dependencyList);
}
// This class depends on each class in the dependency list. For
each
@@ -454,14 +469,7 @@
}
if (affectedClassInfo.sourceFile == null) {
- if (!affectedClassInfo.isUserWarned) {
- log("The class " + affectedClass + " in file "
- + affectedClassInfo.absoluteFile.getPath()
- + " is out of date due to " + className
- + " but has not been deleted because its source file"
- + " could not be determined", Project.MSG_WARN);
- affectedClassInfo.isUserWarned = true;
- }
+ warnOutOfDateButNotDeleted(affectedClassInfo, affectedClass,
className);
continue;
}
@@ -504,6 +512,54 @@
}
/**
+ * warn when a class is out of date, but not deleted as its source is
unknown.
+ * MSG_WARN is the normal level, but we downgrade to MSG_VERBOSE for RMI
files
+ * if [EMAIL PROTECTED] #warnOnRmiStubs is false}
+ * @param affectedClassInfo info about the affectd class
+ * @param affectedClass the name of the affected .class file
+ * @param className the file that is triggering the out of dateness
+ */
+ private void warnOutOfDateButNotDeleted(
+ ClassFileInfo affectedClassInfo, String affectedClass,
+ String className) {
+ if (affectedClassInfo.isUserWarned) {
+ return;
+ }
+ int level = Project.MSG_WARN;
+ if(!warnOnRmiStubs) {
+ //downgrade warnings on RMI stublike classes, as they are
generated
+ //by rmic, so there is no need to tell the user that their
source is
+ //missing.
+ if(isRmiStub(affectedClass, className)) {
+ level=Project.MSG_VERBOSE;
+ }
+ }
+ log("The class " + affectedClass + " in file "
+ + affectedClassInfo.absoluteFile.getPath()
+ + " is out of date due to " + className
+ + " but has not been deleted because its source file"
+ + " could not be determined", level);
+ affectedClassInfo.isUserWarned = true;
+ }
+
+ /**
+ * test for being an RMI stub
+ * @param affectedClass
+ * @param className
+ * @return
+ */
+ private boolean isRmiStub(String affectedClass, String className) {
+ return isStub(affectedClass,className,
DefaultRmicAdapter.RMI_STUB_SUFFIX)
+ || isStub(affectedClass, className,
DefaultRmicAdapter.RMI_SKEL_SUFFIX)
+ || isStub(affectedClass, className, WLRmic.RMI_STUB_SUFFIX)
+ || isStub(affectedClass, className, WLRmic.RMI_SKEL_SUFFIX);
+ }
+
+ private boolean isStub(String affectedClass,String baseClass,String
suffix) {
+ return (baseClass+suffix).equals(affectedClass);
+ }
+
+ /**
* Dump the dependency information loaded from the classes to the Ant log
*/
private void dumpDependencies() {
@@ -548,7 +604,7 @@
private void determineOutOfDateClasses() {
outOfDateClasses = new Hashtable();
for (int i = 0; i < srcPathList.length; i++) {
- File srcDir = (File) getProject().resolveFile(srcPathList[i]);
+ File srcDir = getProject().resolveFile(srcPathList[i]);
if (srcDir.exists()) {
DirectoryScanner ds = this.getDirectoryScanner(srcDir);
String[] files = ds.getIncludedFiles();
1.34 +6 -4
ant/src/main/org/apache/tools/ant/taskdefs/rmic/DefaultRmicAdapter.java
Index: DefaultRmicAdapter.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/rmic/DefaultRmicAdapter.java,v
retrieving revision 1.33
retrieving revision 1.34
diff -u -r1.33 -r1.34
--- DefaultRmicAdapter.java 2 Aug 2004 22:45:44 -0000 1.33
+++ DefaultRmicAdapter.java 8 Oct 2004 11:09:46 -0000 1.34
@@ -25,7 +25,6 @@
import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.Path;
import org.apache.tools.ant.util.FileNameMapper;
-import org.apache.tools.ant.util.JavaEnvUtils;
/**
* This is the default implementation for the RmicAdapter interface.
@@ -39,6 +38,9 @@
private Rmic attributes;
private FileNameMapper mapper;
private static final Random rand = new Random();
+ public static final String RMI_STUB_SUFFIX = "_Stub";
+ public static final String RMI_SKEL_SUFFIX = "_Skel";
+ public static final String RMI_TIE_SUFFIX = "_Tie";
public DefaultRmicAdapter() {
}
@@ -53,15 +55,15 @@
}
protected String getStubClassSuffix() {
- return "_Stub";
+ return RMI_STUB_SUFFIX;
}
protected String getSkelClassSuffix() {
- return "_Skel";
+ return RMI_SKEL_SUFFIX;
}
protected String getTieClassSuffix() {
- return "_Tie";
+ return RMI_TIE_SUFFIX;
}
/**
1.3 +2 -2
ant/src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java
Index: ForkingSunRmic.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/rmic/ForkingSunRmic.java,v
retrieving revision 1.2
retrieving revision 1.3
diff -u -r1.2 -r1.3
--- ForkingSunRmic.java 5 Aug 2004 17:13:42 -0000 1.2
+++ ForkingSunRmic.java 8 Oct 2004 11:09:46 -0000 1.3
@@ -23,8 +23,8 @@
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
+import org.apache.tools.ant.util.JavaEnvUtils;
import org.apache.tools.ant.taskdefs.Rmic;
-import org.apache.tools.ant.taskdefs.Java;
import org.apache.tools.ant.taskdefs.Execute;
import org.apache.tools.ant.taskdefs.LogStreamHandler;
import org.apache.tools.ant.types.Commandline;
@@ -56,7 +56,7 @@
Commandline cmd = setupRmicCommand();
Project project=owner.getProject();
//rely on RMIC being on the path
- cmd.setExecutable(SunRmic.RMIC_EXECUTABLE);
+
cmd.setExecutable(JavaEnvUtils.getJdkExecutable(SunRmic.RMIC_EXECUTABLE));
//set up the args
String[] args=cmd.getCommandline();
1.25 +4 -2
ant/src/main/org/apache/tools/ant/taskdefs/rmic/WLRmic.java
Index: WLRmic.java
===================================================================
RCS file:
/home/cvs/ant/src/main/org/apache/tools/ant/taskdefs/rmic/WLRmic.java,v
retrieving revision 1.24
retrieving revision 1.25
diff -u -r1.24 -r1.25
--- WLRmic.java 24 Aug 2004 20:34:53 -0000 1.24
+++ WLRmic.java 8 Oct 2004 11:09:46 -0000 1.25
@@ -40,6 +40,8 @@
+ "set the environment variable "
+ "CLASSPATH.";
public static final String ERROR_WLRMIC_FAILED = "Error starting
WebLogic rmic: ";
+ public static final String RMI_STUB_SUFFIX = "_WLStub";
+ public static final String RMI_SKEL_SUFFIX = "_WLSkel";
public boolean execute() throws BuildException {
getRmic().log("Using WebLogic rmic", Project.MSG_VERBOSE);
@@ -80,13 +82,13 @@
* Get the suffix for the rmic stub classes
*/
public String getStubClassSuffix() {
- return "_WLStub";
+ return RMI_STUB_SUFFIX;
}
/**
* Get the suffix for the rmic skeleton classes
*/
public String getSkelClassSuffix() {
- return "_WLSkel";
+ return RMI_SKEL_SUFFIX;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]