Return-Path: Delivered-To: apmail-commons-commits-archive@locus.apache.org Received: (qmail 29869 invoked from network); 12 Aug 2007 18:18:48 -0000 Received: from hermes.apache.org (HELO mail.apache.org) (140.211.11.2) by minotaur.apache.org with SMTP; 12 Aug 2007 18:18:48 -0000 Received: (qmail 6690 invoked by uid 500); 12 Aug 2007 18:18:44 -0000 Delivered-To: apmail-commons-commits-archive@commons.apache.org Received: (qmail 6612 invoked by uid 500); 12 Aug 2007 18:18:44 -0000 Mailing-List: contact commits-help@commons.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@commons.apache.org Delivered-To: mailing list commits@commons.apache.org Received: (qmail 6603 invoked by uid 99); 12 Aug 2007 18:18:44 -0000 Received: from nike.apache.org (HELO nike.apache.org) (192.87.106.230) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 12 Aug 2007 11:18:44 -0700 X-ASF-Spam-Status: No, hits=-100.0 required=10.0 tests=ALL_TRUSTED X-Spam-Check-By: apache.org Received: from [140.211.11.3] (HELO eris.apache.org) (140.211.11.3) by apache.org (qpsmtpd/0.29) with ESMTP; Sun, 12 Aug 2007 18:18:51 +0000 Received: by eris.apache.org (Postfix, from userid 65534) id F35111A981D; Sun, 12 Aug 2007 11:18:19 -0700 (PDT) Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: svn commit: r565099 - in /commons/proper/jci/trunk: compilers/eclipse/src/main/java/org/apache/commons/jci/compilers/ compilers/janino/src/main/java/org/apache/commons/jci/compilers/ compilers/javac/src/main/java/org/apache/commons/jci/compilers/ compi... Date: Sun, 12 Aug 2007 18:18:19 -0000 To: commits@commons.apache.org From: tcurdt@apache.org X-Mailer: svnmailer-1.1.0 Message-Id: <20070812181819.F35111A981D@eris.apache.org> X-Virus-Checked: Checked by ClamAV on apache.org 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 ) {