bodewig 01/03/19 03:22:53
Modified: . WHATSNEW
docs/manual/CoreTasks rmic.html
src/main/org/apache/tools/ant/taskdefs Rmic.java
src/main/org/apache/tools/ant/taskdefs/rmic
DefaultRmicAdapter.java RmicAdapter.java
RmicAdapterFactory.java
Added: src/main/org/apache/tools/ant/taskdefs/rmic WLRmic.java
Log:
Add support for Weblogic's rmic.
PR: 959
Submitted by: Takashi Okamoto <[EMAIL PROTECTED]>
Revision Changes Path
1.91 +1 -1 jakarta-ant/WHATSNEW
Index: WHATSNEW
===================================================================
RCS file: /home/cvs/jakarta-ant/WHATSNEW,v
retrieving revision 1.90
retrieving revision 1.91
diff -u -r1.90 -r1.91
--- WHATSNEW 2001/03/16 12:57:15 1.90
+++ WHATSNEW 2001/03/19 11:22:43 1.91
@@ -15,7 +15,7 @@
* Ant now uses JAXP 1.1
-* rmic now supports Kaffe's version of rmic.
+* rmic now supports Kaffe's and Weblogic's version of rmic.
* new magic property build.rmic to chose the rmic implementation
1.4 +2 -1 jakarta-ant/docs/manual/CoreTasks/rmic.html
Index: rmic.html
===================================================================
RCS file: /home/cvs/jakarta-ant/docs/manual/CoreTasks/rmic.html,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- rmic.html 2001/03/16 12:57:15 1.3
+++ rmic.html 2001/03/19 11:22:46 1.4
@@ -28,10 +28,11 @@
<code><include></code>, <code><exclude></code> and
<code><patternset></code> elements.</p>
<p>It is possible to use different compilers. This can be selected with the
-"build.rmic" property. There are two choices:</p>
+"build.rmic" property. There are three choices:</p>
<ul>
<li>sun (the standard compiler of the JDK)</li>
<li>kaffe (the standard compiler of <a href="http://www.kaffe.org"
target="_top">Kaffe</a>)</li>
+ <li>weblogic</li>
</ul>
<h3>Parameters</h3>
<table border="1" cellpadding="2" cellspacing="0">
1.21 +10 -4
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Rmic.java
Index: Rmic.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/Rmic.java,v
retrieving revision 1.20
retrieving revision 1.21
diff -u -r1.20 -r1.21
--- Rmic.java 2001/03/17 12:41:38 1.20
+++ Rmic.java 2001/03/19 11:22:48 1.21
@@ -401,7 +401,9 @@
// Move the generated source file to the base directory
if (null != sourceBase) {
for (int j = 0; j < fileCount; j++) {
- moveGeneratedFile(baseDir, sourceBase, (String)
compileList.elementAt(j));
+ moveGeneratedFile(baseDir, sourceBase,
+ (String) compileList.elementAt(j),
+ adapter);
}
}
compileList.removeAllElements();
@@ -412,9 +414,12 @@
*
* @exception org.apache.tools.ant.BuildException When error
copying/removing files.
*/
- private void moveGeneratedFile (File baseDir, File sourceBaseFile,
String classname)
+ private void moveGeneratedFile (File baseDir, File sourceBaseFile,
+ String classname,
+ RmicAdapter adapter)
throws BuildException {
- String stubFileName = classname.replace('.', File.separatorChar) +
"_Stub.java";
+ String stubFileName = classname.replace('.', File.separatorChar)
+ + adapter.getStubClassSuffix()+".java";
File oldStubFile = new File(baseDir, stubFileName);
File newStubFile = new File(sourceBaseFile, stubFileName);
try {
@@ -426,7 +431,8 @@
throw new BuildException(msg, ioe, location);
}
if (!"1.2".equals(stubVersion)) {
- String skelFileName = classname.replace('.', '/') + "_Skel.java";
+ String skelFileName = classname.replace('.', File.separatorChar)
+ + adapter.getSkelClassSuffix()+".java";
File oldSkelFile = new File(baseDir, skelFileName);
File newSkelFile = new File(sourceBaseFile, skelFileName);
try {
1.2 +21 -7
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/rmic/DefaultRmicAdapter.java
Index: DefaultRmicAdapter.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/rmic/DefaultRmicAdapter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DefaultRmicAdapter.java 2001/03/16 12:57:16 1.1
+++ DefaultRmicAdapter.java 2001/03/19 11:22:50 1.2
@@ -76,21 +76,34 @@
public abstract class DefaultRmicAdapter implements RmicAdapter {
private Rmic attributes;
+ private FileNameMapper mapper;
+ public DefaultRmicAdapter() {
+ }
+
public void setRmic( Rmic attributes ) {
this.attributes = attributes;
+ mapper = new RmicFileNameMapper();
}
public Rmic getRmic() {
return attributes;
}
+ public String getStubClassSuffix() {
+ return "_Stub";
+ }
+
+ public String getSkelClassSuffix() {
+ return "_Skel";
+ }
+
/**
- * This implementation maps *.class to *_Stub.class and - if
- * stubversion is not 1.2 - to _Skel.class.
+ * This implementation maps *.class to *getStubClassSuffix().class and -
if
+ * stubversion is not 1.2 - to *getSkelClassSuffix().class.
*/
public FileNameMapper getMapper() {
- return new RmicFileNameMapper();
+ return mapper;
}
/**
@@ -297,13 +310,13 @@
RmicFileNameMapper() {
stubMapper = new GlobPatternMapper();
stubMapper.setFrom("*.class");
- stubMapper.setTo("*_Stub.class");
+ stubMapper.setTo("*"+getStubClassSuffix()+".class");
// no _Skel file in stub version 1.2
if (!"1.2".equals(attributes.getStubVersion())) {
skelMapper = new GlobPatternMapper();
skelMapper.setFrom("*.class");
- skelMapper.setTo("*_Skel.class");
+ skelMapper.setTo("*"+getSkelClassSuffix()+".class");
}
}
@@ -319,8 +332,9 @@
public String[] mapFileName(String name) {
String[] stubName = stubMapper.mapFileName(name);
- if (stubName == null || name.endsWith("_Stub.class")
- || name.endsWith("_Skel.class")) {
+ if (stubName == null
+ || name.endsWith(getStubClassSuffix()+".class")
+ || name.endsWith(getSkelClassSuffix()+".class")) {
// Not a .class file
return null;
}
1.2 +12 -0
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapter.java
Index: RmicAdapter.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapter.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RmicAdapter.java 2001/03/16 12:57:16 1.1
+++ RmicAdapter.java 2001/03/19 11:22:51 1.2
@@ -93,6 +93,18 @@
*/
public FileNameMapper getMapper();
+ /**
+ * Difference between original class file name and the generated
+ * stub class.
+ */
+ public String getStubClassSuffix();
+
+ /**
+ * Difference between original class file name and the generated
+ * skel class.
+ */
+ public String getSkelClassSuffix();
+
/**
* The CLASSPATH this rmic process will use.
*/
1.2 +3 -1
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapterFactory.java
Index: RmicAdapterFactory.java
===================================================================
RCS file:
/home/cvs/jakarta-ant/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapterFactory.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- RmicAdapterFactory.java 2001/03/16 12:57:16 1.1
+++ RmicAdapterFactory.java 2001/03/19 11:22:51 1.2
@@ -110,8 +110,10 @@
if ( rmicType.equalsIgnoreCase("sun") ) {
return new SunRmic();
- } if ( rmicType.equalsIgnoreCase("kaffe") ) {
+ } else if ( rmicType.equalsIgnoreCase("kaffe") ) {
return new KaffeRmic();
+ } else if ( rmicType.equalsIgnoreCase("weblogic") ) {
+ return new WLRmic();
}
return resolveClassName( rmicType );
}
1.1
jakarta-ant/src/main/org/apache/tools/ant/taskdefs/rmic/WLRmic.java
Index: WLRmic.java
===================================================================
/*
* The Apache Software License, Version 1.1
*
* Copyright (c) 2001 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution, if
* any, must include the following acknowlegement:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowlegement may appear in the software itself,
* if and wherever such third-party acknowlegements normally appear.
*
* 4. The names "The Jakarta Project", "Ant", and "Apache Software
* Foundation" must not be used to endorse or promote products derived
* from this software without prior written permission. For written
* permission, please contact [EMAIL PROTECTED]
*
* 5. Products derived from this software may not be called "Apache"
* nor may "Apache" appear in their names without prior written
* permission of the Apache Group.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
package org.apache.tools.ant.taskdefs.rmic;
import org.apache.tools.ant.BuildException;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.LogOutputStream;
import org.apache.tools.ant.types.Commandline;
import org.apache.tools.ant.types.Path;
import java.io.*;
import java.lang.reflect.Constructor;
import java.lang.reflect.Method;
/**
* The implementation of the rmic for WebLogic
*
* @author Takashi Okamoto <[EMAIL PROTECTED]>
*/
public class WLRmic extends DefaultRmicAdapter {
public boolean execute() throws BuildException {
getRmic().log("Using WebLogic rmic", Project.MSG_VERBOSE);
Commandline cmd = setupRmicCommand();
PrintStream err = System.err;
PrintStream out = System.out;
try {
PrintStream logstr =
new PrintStream(new LogOutputStream(getRmic(),
Project.MSG_WARN));
System.setOut(logstr);
System.setErr(logstr);
// Create an instance of the rmic
Class c = Class.forName("weblogic.rmic");
Method doRmic = c.getMethod("main",
new Class [] { String[].class });
doRmic.invoke(null, new Object[] { cmd.getArguments() });
return true;
} catch (ClassNotFoundException ex) {
throw new BuildException("Cannot use WebLogic rmic, as it is not
available"+
" A common solution is to set the
environment variable"+
" CLASSPATH.", getRmic().getLocation() );
}
catch (Exception ex) {
if (ex instanceof BuildException) {
throw (BuildException) ex;
} else {
throw new BuildException("Error starting WebLogic rmic: ",
ex, getRmic().getLocation());
}
} finally {
System.setErr(err);
System.setOut(out);
}
}
/**
* Get the suffix for the rmic stub classes
*/
public String getStubClassSuffix() {
return "_WLStub";
}
/**
* Get the suffix for the rmic skeleton classes
*/
public String getSkelClassSuffix() {
return "_WLSkel";
}
}