You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by tc...@apache.org on 2007/09/05 00:22:37 UTC

svn commit: r572825 - in /commons/proper/jci/trunk/compilers/janino: pom.xml src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompiler.java

Author: tcurdt
Date: Tue Sep  4 15:22:29 2007
New Revision: 572825

URL: http://svn.apache.org/viewvc?rev=572825&view=rev
Log:
a bug in janino required an upgrade,
also use the janino compiler API in a better way,
(fixes jci-53)


Modified:
    commons/proper/jci/trunk/compilers/janino/pom.xml
    commons/proper/jci/trunk/compilers/janino/src/main/java/org/apache/commons/jci/compilers/JaninoJavaCompiler.java

Modified: commons/proper/jci/trunk/compilers/janino/pom.xml
URL: http://svn.apache.org/viewvc/commons/proper/jci/trunk/compilers/janino/pom.xml?rev=572825&r1=572824&r2=572825&view=diff
==============================================================================
--- commons/proper/jci/trunk/compilers/janino/pom.xml (original)
+++ commons/proper/jci/trunk/compilers/janino/pom.xml Tue Sep  4 15:22:29 2007
@@ -52,7 +52,7 @@
         <dependency>
             <groupId>janino</groupId>
             <artifactId>janino</artifactId>
-            <version>2.5.7</version>
+            <version>2.5.10</version>
         </dependency>
     </dependencies>
 </project>

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?rev=572825&r1=572824&r2=572825&view=diff
==============================================================================
--- 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 Tue Sep  4 15:22:29 2007
@@ -24,18 +24,15 @@
 import java.io.OutputStream;
 import java.util.ArrayList;
 import java.util.Collection;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.Map;
 
 import org.apache.commons.jci.problems.CompilationProblem;
 import org.apache.commons.jci.readers.ResourceReader;
 import org.apache.commons.jci.stores.ResourceStore;
-import org.apache.commons.jci.utils.ConversionUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.codehaus.janino.CachingJavaSourceClassLoader;
+import org.codehaus.janino.ClassLoaderIClassLoader;
 import org.codehaus.janino.CompileException;
+import org.codehaus.janino.Compiler;
 import org.codehaus.janino.DebuggingInformation;
 import org.codehaus.janino.FilterWarningHandler;
 import org.codehaus.janino.Location;
@@ -110,11 +107,11 @@
     public CompilationResult compile( final String[] pSourceNames, final ResourceReader pResourceReader, final ResourceStore pStore, final ClassLoader pClassLoader, final JavaCompilerSettings pSettings ) {
 
     	final Collection problems = new ArrayList();
-    	    	
-    	final CachingJavaSourceClassLoader cl = new CachingJavaSourceClassLoader(
-    			pClassLoader,
-    			new ResourceFinder() {
+    	
+    	final StringPattern[] pattern = StringPattern.PATTERNS_NONE;
 
+    	final Compiler compiler = new Compiler(
+    			new ResourceFinder() {
 					public Resource findResource( final String pSourceName ) {
 						final byte[] bytes = pResourceReader.getBytes(pSourceName);
 						
@@ -126,12 +123,10 @@
 						log.debug("reading " + pSourceName + " (" + bytes.length + ")");
 						
 						return new JciResource(pSourceName, bytes);
-					}
-    		
+					}    		
     			},
-    			pSettings.getSourceEncoding(),
+    			new ClassLoaderIClassLoader(pClassLoader),
     			new ResourceFinder() {
-
 					public Resource findResource( final String pResourceName ) {
 						final byte[] bytes = pStore.read(pResourceName);
 						
@@ -143,11 +138,9 @@
 						log.debug("reading " + pResourceName + " (" + bytes.length + ")");
 						
 						return new JciResource(pResourceName, bytes);
-					}
-    		
+					}    		
     			},
     			new ResourceCreator() {
-
 					public OutputStream createResource( final String pResourceName ) throws IOException {
 						return new JciOutputStream(pResourceName, pStore);
 					}
@@ -157,14 +150,24 @@
 
 						pStore.remove(pResourceName);
 						return true;
-					}
-    				
+					}    				
     			},
-    			pSettings.isDebug()?DebuggingInformation.ALL:DebuggingInformation.NONE
+    			pSettings.getSourceEncoding(),
+    			false,
+    			pSettings.isDebug()?DebuggingInformation.ALL:DebuggingInformation.NONE,
+    			new FilterWarningHandler(pattern, new WarningHandler() {
+						public void handleWarning( final String pHandle, final String pMessage, final Location pLocation ) {
+							final CompilationProblem problem = new JaninoCompilationProblem(pLocation.getFileName(), pLocation, pMessage, false);
+							if (problemHandler != null) {
+								problemHandler.handle(problem);
+							}
+							problems.add(problem);
+						}    		
+			    	})    			
     			);
     	
     	
-    	cl.setCompileErrorHandler(new ErrorHandler() {
+    	compiler.setCompileErrorHandler(new ErrorHandler() {
 			public void handleError( final String pMessage, final Location pLocation ) throws CompileException {
 				final CompilationProblem problem = new JaninoCompilationProblem(pLocation.getFileName(), pLocation, pMessage, true);
 				if (problemHandler != null) {
@@ -174,36 +177,19 @@
 			}
     	});
     	
-    	final StringPattern[] pattern = StringPattern.PATTERNS_NONE;
-    	cl.setWarningHandler(new FilterWarningHandler(pattern, new WarningHandler() {
-			public void handleWarning( final String pHandle, final String pMessage, final Location pLocation ) {
-				final CompilationProblem problem = new JaninoCompilationProblem(pLocation.getFileName(), pLocation, pMessage, false);
-				if (problemHandler != null) {
-					problemHandler.handle(problem);
-				}
-				problems.add(problem);
-			}    		
-    	}));
-    	
-    	
-    	
-        final Map classFilesByName = new HashMap();       
-        
+
+    	final Resource[] resources = new Resource[pSourceNames.length];
         for (int i = 0; i < pSourceNames.length; i++) {
-            log.debug("compiling " + pSourceNames[i]);            
-            try {
-				cl.loadClass(ConversionUtils.convertResourceToClassName(pSourceNames[i]));
-			} catch (ClassNotFoundException e) {
-				log.error(e);
-			}
+            log.debug("compiling " + pSourceNames[i]);
+            final byte[] source = pResourceReader.getBytes(pSourceNames[i]);
+            resources[i] = new JciResource(pSourceNames[i], source);
         }
         
-        // Store all fully compiled classes
-        for (Iterator i = classFilesByName.entrySet().iterator(); i.hasNext();) {
-            final Map.Entry entry = (Map.Entry)i.next();
-            final String clazzName = (String)entry.getKey(); 
-            pStore.write(ConversionUtils.convertClassToResourcePath(clazzName), (byte[])entry.getValue());
-        }
+        try {
+			compiler.compile(resources);
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
         
         final CompilationProblem[] result = new CompilationProblem[problems.size()];
         problems.toArray(result);