Author: tcurdt
Date: Sun Aug 12 11:18:18 2007
New Revision: 565099

URL: http://svn.apache.org/viewvc?view=rev&rev=565099
Log:
javac settings,
prepared janino settings,
copy constructor and factory pattern for default settings


Added:
    
commons/proper/jci/trunk/compilers/javac/src/test/java/org/apache/commons/jci/compilers/JavacJavaCompilerSettingsTestCase.java
   (with props)
Modified:
    
commons/proper/jci/trunk/compilers/eclipse/src/main/java/org/apache/commons/jci/compilers/EclipseJavaCompiler.java
    
commons/proper/jci/trunk/compilers/eclipse/src/main/java/org/apache/commons/jci/compilers/EclipseJavaCompilerSettings.java
    
commons/proper/jci/trunk/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompiler.java
    
commons/proper/jci/trunk/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompilerSettings.java
    
commons/proper/jci/trunk/compilers/javac/src/main/java/org/apache/commons/jci/compilers/JavacJavaCompiler.java
    
commons/proper/jci/trunk/compilers/javac/src/main/java/org/apache/commons/jci/compilers/JavacJavaCompilerSettings.java
    
commons/proper/jci/trunk/core/src/main/java/org/apache/commons/jci/compilers/JavaCompilerSettings.java

Modified: 
commons/proper/jci/trunk/compilers/eclipse/src/main/java/org/apache/commons/jci/compilers/EclipseJavaCompiler.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jci/trunk/compilers/eclipse/src/main/java/org/apache/commons/jci/compilers/EclipseJavaCompiler.java?view=diff&rev=565099&r1=565098&r2=565099
==============================================================================
--- 
commons/proper/jci/trunk/compilers/eclipse/src/main/java/org/apache/commons/jci/compilers/EclipseJavaCompiler.java
 (original)
+++ 
commons/proper/jci/trunk/compilers/eclipse/src/main/java/org/apache/commons/jci/compilers/EclipseJavaCompiler.java
 Sun Aug 12 11:18:18 2007
@@ -60,11 +60,11 @@
         this(new EclipseJavaCompilerSettings());
     }
 
-    public EclipseJavaCompiler(final Map pSettings) {
+    public EclipseJavaCompiler( final Map pSettings ) {
         defaultSettings = new EclipseJavaCompilerSettings(pSettings);
     }
 
-    public EclipseJavaCompiler(final EclipseJavaCompilerSettings pSettings) {
+    public EclipseJavaCompiler( final EclipseJavaCompilerSettings pSettings ) {
         defaultSettings = pSettings;
     }
 
@@ -132,7 +132,7 @@
             final JavaCompilerSettings pSettings
             ) {
 
-        final Map settingsMap = ((EclipseJavaCompilerSettings) 
defaultSettings).toNativeSettings();
+        final Map settingsMap = new 
EclipseJavaCompilerSettings(defaultSettings).toNativeSettings();
         
         final Collection problems = new ArrayList();
         
@@ -373,6 +373,6 @@
     }
 
     public JavaCompilerSettings createDefaultSettings() {
-        return defaultSettings;
+        return new EclipseJavaCompilerSettings(defaultSettings);
     }
 }

Modified: 
commons/proper/jci/trunk/compilers/eclipse/src/main/java/org/apache/commons/jci/compilers/EclipseJavaCompilerSettings.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jci/trunk/compilers/eclipse/src/main/java/org/apache/commons/jci/compilers/EclipseJavaCompilerSettings.java?view=diff&rev=565099&r1=565098&r2=565099
==============================================================================
--- 
commons/proper/jci/trunk/compilers/eclipse/src/main/java/org/apache/commons/jci/compilers/EclipseJavaCompilerSettings.java
 (original)
+++ 
commons/proper/jci/trunk/compilers/eclipse/src/main/java/org/apache/commons/jci/compilers/EclipseJavaCompilerSettings.java
 Sun Aug 12 11:18:18 2007
@@ -38,6 +38,14 @@
         
defaultEclipseSettings.put(CompilerOptions.OPTION_LocalVariableAttribute, 
CompilerOptions.GENERATE);
     }
     
+    public EclipseJavaCompilerSettings( final JavaCompilerSettings pSettings ) 
{
+       super(pSettings);
+       
+       if (pSettings instanceof EclipseJavaCompilerSettings) {
+               
defaultEclipseSettings.putAll(((EclipseJavaCompilerSettings)pSettings).toNativeSettings());
+       }
+    }
+    
     public EclipseJavaCompilerSettings( final Map pMap ) {
         defaultEclipseSettings.putAll(pMap);
     }

Modified: 
commons/proper/jci/trunk/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompiler.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jci/trunk/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompiler.java?view=diff&rev=565099&r1=565098&r2=565099
==============================================================================
--- 
commons/proper/jci/trunk/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompiler.java
 (original)
+++ 
commons/proper/jci/trunk/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompiler.java
 Sun Aug 12 11:18:18 2007
@@ -56,6 +56,16 @@
 
     private final Log log = LogFactory.getLog(JaninoJavaCompiler.class);
 
+    private final JaninoJavaCompilerSettings defaultSettings;
+
+    public JaninoJavaCompiler() {
+       this(new JaninoJavaCompilerSettings());
+    }
+    
+    public JaninoJavaCompiler( final JaninoJavaCompilerSettings pSettings ) {
+       defaultSettings = pSettings;
+    }
+    
     private class CompilingIClassLoader extends IClassLoader {
 
         private final Map types = new HashMap();
@@ -165,8 +175,7 @@
     }
 
     public JavaCompilerSettings createDefaultSettings() {
-        // FIXME
-        return null;
+        return new JaninoJavaCompilerSettings(defaultSettings);
     }
     
 }

Modified: 
commons/proper/jci/trunk/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompilerSettings.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jci/trunk/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompilerSettings.java?view=diff&rev=565099&r1=565098&r2=565099
==============================================================================
--- 
commons/proper/jci/trunk/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompilerSettings.java
 (original)
+++ 
commons/proper/jci/trunk/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompilerSettings.java
 Sun Aug 12 11:18:18 2007
@@ -19,4 +19,13 @@
 
 public final class JaninoJavaCompilerSettings extends JavaCompilerSettings {
     // TODO: implement the native janino compiler settings
+
+       public JaninoJavaCompilerSettings() {
+               
+       }
+
+       public JaninoJavaCompilerSettings( final JaninoJavaCompilerSettings 
pSettings ) {
+               super(pSettings);               
+       }
+
 }

Modified: 
commons/proper/jci/trunk/compilers/javac/src/main/java/org/apache/commons/jci/compilers/JavacJavaCompiler.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jci/trunk/compilers/javac/src/main/java/org/apache/commons/jci/compilers/JavacJavaCompiler.java?view=diff&rev=565099&r1=565098&r2=565099
==============================================================================
--- 
commons/proper/jci/trunk/compilers/javac/src/main/java/org/apache/commons/jci/compilers/JavacJavaCompiler.java
 (original)
+++ 
commons/proper/jci/trunk/compilers/javac/src/main/java/org/apache/commons/jci/compilers/JavacJavaCompiler.java
 Sun Aug 12 11:18:18 2007
@@ -50,14 +50,14 @@
     private static final String NOTE_PREFIX = "Note: ";
     private static final String ERROR_PREFIX = "error: ";
 
-    private final JavacJavaCompilerSettings settings;
+    private final JavacJavaCompilerSettings defaultSettings;
 
     public JavacJavaCompiler() {
-        settings = new JavacJavaCompilerSettings();
+        defaultSettings = new JavacJavaCompilerSettings();
     }
 
     public JavacJavaCompiler( final JavacJavaCompilerSettings pSettings ) {
-        settings = pSettings;
+        defaultSettings = pSettings;
     }
 
     public CompilationResult compile( final String[] pSourcePaths, final 
ResourceReader pReader, ResourceStore pStore, final ClassLoader 
pClasspathClassLoader, final JavaCompilerSettings pSettings ) {
@@ -71,7 +71,10 @@
 
             final Method compile = renamedClass.getMethod("compile", new 
Class[] { String[].class, PrintWriter.class });
             final StringWriter out = new StringWriter();
-            final Integer ok = (Integer) compile.invoke(null, new Object[] { 
buildCompilerArguments(pSourcePaths, pClasspathClassLoader), new 
PrintWriter(out) });
+
+            final String[] compilerArguments = buildCompilerArguments(new 
JavacJavaCompilerSettings(pSettings), pSourcePaths, pClasspathClassLoader);
+            
+            final Integer ok = (Integer) compile.invoke(null, new Object[] { 
compilerArguments, new PrintWriter(out) });
 
             final CompilationResult result = parseModernStream(new 
BufferedReader(new StringReader(out.toString())));
 
@@ -186,80 +189,23 @@
     }
 
     public JavaCompilerSettings createDefaultSettings() {
-        return settings;
+        return defaultSettings;
     }
 
-    private String[] buildCompilerArguments( final String[] resourcePaths, 
final ClassLoader classloader ) {
+    private String[] buildCompilerArguments( final JavacJavaCompilerSettings 
pSettings, final String[] pResourcePaths, final ClassLoader pClassloader ) {
 
         // FIXME: build classpath from classloader information
-        return resourcePaths;
-
-//    {
-//        final List args = new ArrayList();
-//        for (int i = 0; i < resourcePaths.length; i++) {
-//            args.add(resourcePaths[i]);
-//        }
-//
-//        if (settings != null) {
-//            if (settings.isOptimize()) {
-//                args.add("-O");
-//            }
-//
-//            if (settings.isDebug()) {
-//                args.add("-g");
-//            }
-//
-//            if (settings.isVerbose()) {
-//                args.add("-verbose");
-//            }
-//
-//            if (settings.isShowDeprecation()) {
-//                args.add("-deprecation");
-//                // This is required to actually display the deprecation 
messages
-//                settings.setShowWarnings(true);
-//            }
-//
-//            if (settings.getMaxmem() != null) {
-//                args.add("-J-Xmx" + settings.getMaxmem());
-//            }
-//
-//            if (settings.getMeminitial() != null) {
-//                args.add("-J-Xms" + settings.getMeminitial());
-//            }
-//
-//            if (!settings.isShowWarnings()) {
-//                args.add("-nowarn");
-//            }
-//
-//            // TODO: this could be much improved
-//            if (settings.getTargetVersion() != null) {
-//                // Required, or it defaults to the target of your JDK (eg 
1.5)
-//                args.add("-target");
-//                args.add("1.1");
-//            } else {
-//                args.add("-target");
-//                args.add(settings.getTargetVersion());
-//            }
-//
-//            // TODO suppressSource
-//            if (settings.getSourceVersion() != null) {
-//                // If omitted, later JDKs complain about a 1.1 target
-//                args.add("-source");
-//                args.add("1.3");
-//            } else {
-//                args.add("-source");
-//                args.add(settings.getSourceVersion());
-//            }
-//
-//            // TODO suppressEncoding
-//            if (settings.getSourceEncoding() != null) {
-//                args.add("-encoding");
-//                args.add(settings.getSourceEncoding());
-//            }
-//
-//            // TODO CustomCompilerArguments
-//        }
-//
-//        return (String[]) args.toArray(new String[args.size()]);
+       final String[] classpath = new String[0];
+       final String[] resources = pResourcePaths;      
+       final String[] args = pSettings.toNativeSettings();
+       
+       final String[] result = new String[classpath.length + resources.length 
+ args.length];
+       
+       System.arraycopy(classpath, 0, result, 0, classpath.length);
+       System.arraycopy(resources, 0, result, classpath.length, 
resources.length);
+       System.arraycopy(args, 0, result, classpath.length + resources.length, 
args.length);
+       
+       return result;
     }
+    
 }

Modified: 
commons/proper/jci/trunk/compilers/javac/src/main/java/org/apache/commons/jci/compilers/JavacJavaCompilerSettings.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jci/trunk/compilers/javac/src/main/java/org/apache/commons/jci/compilers/JavacJavaCompilerSettings.java?view=diff&rev=565099&r1=565098&r2=565099
==============================================================================
--- 
commons/proper/jci/trunk/compilers/javac/src/main/java/org/apache/commons/jci/compilers/JavacJavaCompilerSettings.java
 (original)
+++ 
commons/proper/jci/trunk/compilers/javac/src/main/java/org/apache/commons/jci/compilers/JavacJavaCompilerSettings.java
 Sun Aug 12 11:18:18 2007
@@ -17,46 +17,141 @@
 
 package org.apache.commons.jci.compilers;
 
+import java.util.ArrayList;
 import java.util.List;
 
 public final class JavacJavaCompilerSettings extends JavaCompilerSettings {
 
     private boolean optimize;
-    private String maxmem;
-    private String meminitial;
+    private String memMax;
+    private String memInitial;
+    private String[] customArguments;
 
-    private List customCompilerArguments;
+    public JavacJavaCompilerSettings() {       
+    }
+    
+    public JavacJavaCompilerSettings( final JavaCompilerSettings pSettings ) {
+       super(pSettings);
+    }
+    
+    
+    public void setCustomArguments( final String[] pCustomArguments ) {
+       customArguments = pCustomArguments;
+    }
+    
+    public String[] getCustomArguments() {
+       return customArguments;
+    }
+    
+    
+    public void setMaxMemory( final String pMemMax ) {
+       memMax = pMemMax;
+    }
+    
+    public String getMaxMemory() {
+       return memMax;
+    }
+    
+    
+    public void setInitialMemory( final String pMemInitial ) {
+       memInitial = pMemInitial;
+    }
+    
+    public String getInitialMemory() {
+       return memInitial;
+    }
+
+    
+    public boolean isOptimize() {
+        return optimize;
+    }
+
+    public void setOptimize( final boolean pOptimize ) {
+        optimize = pOptimize;
+    }
 
+    
+    
+    /** @deprecated */
     public List getCustomCompilerArguments() {
-        return customCompilerArguments;
+       final List list = new ArrayList();
+       for (int i = 0; i < customArguments.length; i++) {
+                       list.add(customArguments[i]);
+               }
+       return list;            
     }
 
+    /** @deprecated */
     public void setCustomCompilerArguments(List customCompilerArguments) {
-        this.customCompilerArguments = customCompilerArguments;
+       customArguments = (String[]) customCompilerArguments.toArray(new 
String[customCompilerArguments.size()]);
     }
 
+    /** @deprecated */
     public String getMaxmem() {
-        return maxmem;
+        return memMax;
     }
 
+    /** @deprecated */
     public void setMaxmem(String maxmem) {
-        this.maxmem = maxmem;
+        this.memMax = maxmem;
     }
 
+    /** @deprecated */
     public String getMeminitial() {
-        return meminitial;
+        return memInitial;
     }
 
+    /** @deprecated */
     public void setMeminitial(String meminitial) {
-        this.meminitial = meminitial;
+        this.memInitial = meminitial;
     }
 
-    public boolean isOptimize() {
-        return optimize;
-    }
+    
+    
+    
+    String[] toNativeSettings() {
+       
+       final List args = new ArrayList();
 
-    public void setOptimize(boolean optimize) {
-        this.optimize = optimize;
-    }
+       if (isOptimize()) {
+               args.add("-O");
+       }
+
+       if (isDebug()) {
+               args.add("-g");
+       }
+
+       if (isDeprecations()) {
+               args.add("-deprecation");
+       }
+
+       if (!isWarnings() && !isDeprecations()) {
+               args.add("-nowarn");
+       }
 
+       if (getMaxMemory() != null) {
+               args.add("-J-Xmx" + getMaxMemory());
+       }
+
+       if (getInitialMemory() != null) {
+               args.add("-J-Xms" + getInitialMemory());
+       }
+
+       args.add("-target");
+       args.add(getTargetVersion());
+
+       args.add("-source");
+       args.add(getSourceVersion());
+
+       args.add("-encoding");
+       args.add(getSourceEncoding());
+
+       if (customArguments != null) {
+               for (int i = 0; i < customArguments.length; i++) {
+                               args.add(customArguments[i]);
+                       }
+       }
+
+       return (String[])args.toArray(new String[args.size()]);
+    }
 }

Added: 
commons/proper/jci/trunk/compilers/javac/src/test/java/org/apache/commons/jci/compilers/JavacJavaCompilerSettingsTestCase.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jci/trunk/compilers/javac/src/test/java/org/apache/commons/jci/compilers/JavacJavaCompilerSettingsTestCase.java?view=auto&rev=565099
==============================================================================
--- 
commons/proper/jci/trunk/compilers/javac/src/test/java/org/apache/commons/jci/compilers/JavacJavaCompilerSettingsTestCase.java
 (added)
+++ 
commons/proper/jci/trunk/compilers/javac/src/test/java/org/apache/commons/jci/compilers/JavacJavaCompilerSettingsTestCase.java
 Sun Aug 12 11:18:18 2007
@@ -0,0 +1,99 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.commons.jci.compilers;
+
+import junit.framework.TestCase;
+
+public final class JavacJavaCompilerSettingsTestCase extends TestCase {
+
+       private static void assertEquals(String[] expected, String[] result) {
+               assertEquals(expected.length, result.length);
+
+               for (int i = 0; i < expected.length; i++) {
+                       assertEquals("Unexpected value at index " + i, 
expected[i], result[i]);
+               }
+       }
+       
+       public void testDefaultSettings() {
+               final String[] expected = {
+                       "-nowarn",
+                       "-target", "1.4",
+                       "-source", "1.4",
+                       "-encoding", "UTF-8"                            
+               };
+               
+               final String[] s = new 
JavacJavaCompilerSettings().toNativeSettings();
+
+               assertEquals(expected, s);
+       }
+
+       public void testSourceVersion() {
+               final JavacJavaCompilerSettings s = new 
JavacJavaCompilerSettings();
+               s.setSourceVersion("1.1");
+               assertEquals("1.1", s.toNativeSettings()[4]);
+               s.setSourceVersion("1.2");
+               assertEquals("1.2", s.toNativeSettings()[4]);
+               s.setSourceVersion("1.3");
+               assertEquals("1.3", s.toNativeSettings()[4]);
+               s.setSourceVersion("1.4");
+               assertEquals("1.4", s.toNativeSettings()[4]);
+               s.setSourceVersion("1.5");
+               assertEquals("1.5", s.toNativeSettings()[4]);
+               s.setSourceVersion("1.6");
+               assertEquals("1.6", s.toNativeSettings()[4]);
+       }
+
+       public void testTargetVersion() {
+               final JavacJavaCompilerSettings s = new 
JavacJavaCompilerSettings();
+               s.setTargetVersion("1.1");
+               assertEquals("1.1", s.toNativeSettings()[2]);
+               s.setTargetVersion("1.2");
+               assertEquals("1.2", s.toNativeSettings()[2]);
+               s.setTargetVersion("1.3");
+               assertEquals("1.3", s.toNativeSettings()[2]);
+               s.setTargetVersion("1.4");
+               assertEquals("1.4", s.toNativeSettings()[2]);
+               s.setTargetVersion("1.5");
+               assertEquals("1.5", s.toNativeSettings()[2]);
+               s.setTargetVersion("1.6");
+               assertEquals("1.6", s.toNativeSettings()[2]);
+       }
+
+       public void testEncoding() {
+               final JavacJavaCompilerSettings s = new 
JavacJavaCompilerSettings();
+               s.setSourceEncoding("ASCII");
+               assertEquals("ASCII", s.toNativeSettings()[6]);
+       }
+
+       public void testWarnings() {
+               final JavacJavaCompilerSettings s = new 
JavacJavaCompilerSettings();
+               s.setWarnings(true);
+               assertFalse("-nowarn".equals(s.toNativeSettings()[0]));
+               s.setWarnings(false);
+               assertEquals("-nowarn", s.toNativeSettings()[0]);
+
+       }
+
+       public void testDeprecations() {
+               final JavacJavaCompilerSettings s = new 
JavacJavaCompilerSettings();
+               s.setDeprecations(true);
+               assertEquals("-deprecation", s.toNativeSettings()[0]);
+               s.setDeprecations(false);
+               assertFalse("-deprecation".equals(s.toNativeSettings()[0]));
+       }
+}

Propchange: 
commons/proper/jci/trunk/compilers/javac/src/test/java/org/apache/commons/jci/compilers/JavacJavaCompilerSettingsTestCase.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: 
commons/proper/jci/trunk/compilers/javac/src/test/java/org/apache/commons/jci/compilers/JavacJavaCompilerSettingsTestCase.java
------------------------------------------------------------------------------
    svn:keywords = Date Revision Author HeadURL Id

Propchange: 
commons/proper/jci/trunk/compilers/javac/src/test/java/org/apache/commons/jci/compilers/JavacJavaCompilerSettingsTestCase.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
commons/proper/jci/trunk/core/src/main/java/org/apache/commons/jci/compilers/JavaCompilerSettings.java
URL: 
http://svn.apache.org/viewvc/commons/proper/jci/trunk/core/src/main/java/org/apache/commons/jci/compilers/JavaCompilerSettings.java?view=diff&rev=565099&r1=565098&r2=565099
==============================================================================
--- 
commons/proper/jci/trunk/core/src/main/java/org/apache/commons/jci/compilers/JavaCompilerSettings.java
 (original)
+++ 
commons/proper/jci/trunk/core/src/main/java/org/apache/commons/jci/compilers/JavaCompilerSettings.java
 Sun Aug 12 11:18:18 2007
@@ -18,6 +18,7 @@
 package org.apache.commons.jci.compilers;
 
 
+
 /**
  * Most common denominator for JavaCompiler settings.
  * 
@@ -34,10 +35,23 @@
     private String sourceEncoding = "UTF-8";
     private boolean warnings = false;
     private boolean deprecations = false;
+    private boolean debug = false;
 
     /** @deprecated */
     private boolean verbose = false;
 
+    public JavaCompilerSettings() {            
+    }
+    
+    public JavaCompilerSettings( final JavaCompilerSettings pSettings ) {
+       targetVersion = pSettings.targetVersion;
+       sourceVersion = pSettings.sourceVersion;
+       sourceEncoding = pSettings.sourceEncoding;
+       warnings = pSettings.warnings;
+       deprecations = pSettings.deprecations;
+       debug = pSettings.debug;
+    }
+    
     public void setTargetVersion( final String pTargetVersion ) {
         targetVersion = pTargetVersion;
     }
@@ -82,6 +96,13 @@
         return deprecations;
     }
 
+    public void setDebug( final boolean pDebug )  {
+        debug = pDebug;
+    }
+
+    public boolean isDebug() {
+        return debug;
+    }
 
     /** @deprecated */
     public void setVerbose( final boolean pVerbose ) {


Reply via email to