ant-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Takashi Okamoto <toran...@kun.ne.jp>
Subject [PATCH] for Weblogic Rmic (Re: New rmic factory)
Date Sat, 17 Mar 2001 14:34:52 GMT
Hi!!

I send following patch.

I added org.apache.tools.ant.taskdefs.rmic.WLRmic.java. It's rmic
adapter for Weblogic. I refered Peter Holzwarth's WLRmic.java that was
posted in January. Althogh there is one significant problem. I can't
test WLRmic code because I don't use weblogic. Does anyone test it?

I added getStubClassSuffix() and getSkelClassSuffix() at
RmicAdapter.java and DefaultRmicAdapter.java. Weblogic rmic's Stub and
Skel suffixes are different from SUN's rmic. And these methods are
needed. I took idea from Peter Holzwarth's code too.

regards.
----------------------
Takashi Okamoto


diff -urN orig/src/main/org/apache/tools/ant/taskdefs/Rmic.java src/main/org/apache/tools/ant/taskdefs/Rmic.java
--- orig/src/main/org/apache/tools/ant/taskdefs/Rmic.java	Sat Mar 17 23:25:05 2001
+++ src/main/org/apache/tools/ant/taskdefs/Rmic.java	Sat Mar 17 23:25:48 2001
@@ -366,11 +366,11 @@
 
         String compiler = project.getProperty("build.rmic");
         RmicAdapter adapter = RmicAdapterFactory.getRmic(compiler, this );
-            
-        // now we need to populate the compiler adapter
-        adapter.setRmic( this );
 
-        Path classpath = adapter.getClasspath();
+	// now we need to populate the compiler adapter
+	adapter.setRmic(this);
+
+	Path classpath = adapter.getClasspath();
         loader = new AntClassLoader(project, classpath);
 
         // scan base dirs to build up compile lists only if a
@@ -391,7 +391,7 @@
             log("RMI Compiling " + fileCount +
                 " class"+ (fileCount > 1 ? "es" : "")+" to " + baseDir, 
                 Project.MSG_INFO);
-
+            
             // finally, lets execute the compiler!!
             if (!adapter.execute()) {
                 throw new BuildException(FAIL_MSG, location);
@@ -401,7 +401,7 @@
         // 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 +412,10 @@
      *
      * @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 +427,8 @@
             throw new BuildException(msg, ioe, location);
         }
         if (!"1.2".equals(stubVersion)) {
-            String skelFileName = classname.replace('.', '/') + "_Skel.java";
+            String skelFileName = classname.replace('.', '/') + 
+	      adapter.getSkelClassSuffix() + ".java";
             File oldSkelFile = new File(baseDir, skelFileName);
             File newSkelFile = new File(sourceBaseFile, skelFileName);
             try {
diff -urN orig/src/main/org/apache/tools/ant/taskdefs/rmic/DefaultRmicAdapter.java src/main/org/apache/tools/ant/taskdefs/rmic/DefaultRmicAdapter.java
--- orig/src/main/org/apache/tools/ant/taskdefs/rmic/DefaultRmicAdapter.java	Sat Mar 17 23:25:05
2001
+++ src/main/org/apache/tools/ant/taskdefs/rmic/DefaultRmicAdapter.java	Sat Mar 17 23:25:58
2001
@@ -75,7 +75,7 @@
  */
 public abstract class DefaultRmicAdapter implements RmicAdapter {
 
-    private Rmic attributes;
+    protected Rmic attributes;
 
     public void setRmic( Rmic attributes ) {
         this.attributes = attributes;
@@ -297,17 +297,17 @@
         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");
             }
         }
 
-        /**
+      /**
          * Empty implementation.
          */
         public void setFrom(String s) {}
@@ -319,8 +319,8 @@
         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;
             }
@@ -341,5 +341,17 @@
             }
         }
     }
-
+  /**
+    * Get the suffix for the rmic stub classes
+    */
+  public String getStubClassSuffix() {
+    return "_Stub";
+  }
+
+  /**
+   * Get the suffix for the rmic skeleton classes
+   */
+  public String getSkelClassSuffix() {
+    return "_Skel";
+  }
 }
diff -urN orig/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapter.java src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapter.java
--- orig/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapter.java	Sat Mar 17 23:25:05
2001
+++ src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapter.java	Sat Mar 17 23:25:58 2001
@@ -97,4 +97,14 @@
      * The CLASSPATH this rmic process will use.
      */
     public Path getClasspath();
+
+    /**
+      * Get the suffix for the rmic stub classes
+      */
+    public String getStubClassSuffix();
+
+    /**
+     * Get the suffix for the rmic skeleton classes
+     */
+    public String getSkelClassSuffix();
 }
diff -urN orig/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapterFactory.java src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapterFactory.java
--- orig/src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapterFactory.java	Sat Mar 17 23:25:05
2001
+++ src/main/org/apache/tools/ant/taskdefs/rmic/RmicAdapterFactory.java	Sat Mar 17 23:25:58
2001
@@ -110,9 +110,11 @@
 
         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 );
     }
 
diff -urN orig/src/main/org/apache/tools/ant/taskdefs/rmic/WLRmic.java src/main/org/apache/tools/ant/taskdefs/rmic/WLRmic.java
--- orig/src/main/org/apache/tools/ant/taskdefs/rmic/WLRmic.java	Thu Jan  1 09:00:00 1970
+++ src/main/org/apache/tools/ant/taskdefs/rmic/WLRmic.java	Sat Mar 17 23:25:58 2001
@@ -0,0 +1,117 @@
+/*
+ * 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 apache@apache.org.
+ *
+ * 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 <tokamoto@rd.nttdata.co.jp>
+ */
+public class WLRmic extends DefaultRmicAdapter {
+
+    public boolean execute() throws BuildException {
+        attributes.log("Using WebLogic rmic", Project.MSG_VERBOSE);
+        Commandline cmd = setupRmicCommand();
+
+        try {
+            // 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());
+	    }
+	}
+    }
+
+    /**
+      * 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";
+    }
+}
+
+
+
+
+

Mime
View raw message