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 ) {