Author: cziegeler
Date: Wed Mar 24 08:09:56 2010
New Revision: 926969
URL: http://svn.apache.org/viewvc?rev=926969&view=rev
Log:
SLING-1452 : Use new commons compiler
Modified:
sling/trunk/contrib/jcr/compiler/src/main/java/org/apache/sling/jcr/compiler/JcrJavaCompiler.java
sling/trunk/contrib/jcr/compiler/src/main/java/org/apache/sling/jcr/compiler/impl/JcrJavaCompilerImpl.java
Modified:
sling/trunk/contrib/jcr/compiler/src/main/java/org/apache/sling/jcr/compiler/JcrJavaCompiler.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/jcr/compiler/src/main/java/org/apache/sling/jcr/compiler/JcrJavaCompiler.java?rev=926969&r1=926968&r2=926969&view=diff
==============================================================================
---
sling/trunk/contrib/jcr/compiler/src/main/java/org/apache/sling/jcr/compiler/JcrJavaCompiler.java
(original)
+++
sling/trunk/contrib/jcr/compiler/src/main/java/org/apache/sling/jcr/compiler/JcrJavaCompiler.java
Wed Mar 24 08:09:56 2010
@@ -16,7 +16,7 @@
*/
package org.apache.sling.jcr.compiler;
-import org.apache.sling.commons.compiler.ErrorHandler;
+import org.apache.sling.commons.compiler.CompilationResult;
import org.apache.sling.commons.compiler.Options;
/**
@@ -32,8 +32,8 @@ public interface JcrJavaCompiler {
* @param options - optional
* @since 2.0
*/
- boolean compile(String[] srcFiles,
- String outputDir,
- ErrorHandler errorHandler,
- Options options);
+ CompilationResult compile(String[] srcFiles,
+ String outputDir,
+ Options options)
+ throws Exception;
}
Modified:
sling/trunk/contrib/jcr/compiler/src/main/java/org/apache/sling/jcr/compiler/impl/JcrJavaCompilerImpl.java
URL:
http://svn.apache.org/viewvc/sling/trunk/contrib/jcr/compiler/src/main/java/org/apache/sling/jcr/compiler/impl/JcrJavaCompilerImpl.java?rev=926969&r1=926968&r2=926969&view=diff
==============================================================================
---
sling/trunk/contrib/jcr/compiler/src/main/java/org/apache/sling/jcr/compiler/impl/JcrJavaCompilerImpl.java
(original)
+++
sling/trunk/contrib/jcr/compiler/src/main/java/org/apache/sling/jcr/compiler/impl/JcrJavaCompilerImpl.java
Wed Mar 24 08:09:56 2010
@@ -27,6 +27,7 @@ import java.io.StringWriter;
import javax.jcr.Item;
import javax.jcr.Node;
+import javax.jcr.Property;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
@@ -34,8 +35,8 @@ import org.apache.felix.scr.annotations.
import org.apache.felix.scr.annotations.Reference;
import org.apache.felix.scr.annotations.Service;
import org.apache.sling.commons.classloader.ClassLoaderWriter;
+import org.apache.sling.commons.compiler.CompilationResult;
import org.apache.sling.commons.compiler.CompilationUnit;
-import org.apache.sling.commons.compiler.ErrorHandler;
import org.apache.sling.commons.compiler.JavaCompiler;
import org.apache.sling.commons.compiler.Options;
import org.apache.sling.jcr.api.SlingRepository;
@@ -56,12 +57,12 @@ public class JcrJavaCompilerImpl impleme
protected SlingRepository repository;
/**
- * @see
org.apache.sling.jcr.compiler.JcrJavaCompiler#compile(java.lang.String[],
java.lang.String, org.apache.sling.commons.compiler.ErrorHandler,
org.apache.sling.commons.compiler.Options)
+ * @see
org.apache.sling.jcr.compiler.JcrJavaCompiler#compile(java.lang.String[],
java.lang.String, org.apache.sling.commons.compiler.Options)
*/
- public boolean compile(final String[] srcFiles,
- final String outputDir,
- final ErrorHandler errorHandler,
- final Options compilerOptions) {
+ public CompilationResult compile(final String[] srcFiles,
+ final String outputDir,
+ final Options compilerOptions)
+ throws Exception {
// make sure we have options
final Options options = (compilerOptions == null ? new Options() : new
Options(compilerOptions));
// open session
@@ -116,15 +117,7 @@ public class JcrJavaCompilerImpl impleme
}
// and compile
- return compiler.compile(units, errorHandler, options);
- } catch (final IOException ioe) {
- errorHandler.onError("Error while accessing repository: " +
ioe.getMessage(),
- srcFiles[0], 0, 0);
- return false;
- } catch (final RepositoryException re) {
- errorHandler.onError("Error while accessing repository: " +
re.getMessage(),
- srcFiles[0], 0, 0);
- return false;
+ return compiler.compile(units, options);
} finally {
if ( session != null ) {
session.logout();
@@ -136,8 +129,8 @@ public class JcrJavaCompilerImpl impleme
private CompilationUnit createCompileUnit(final String sourceFile, final
Session session)
throws RepositoryException, IOException {
- final String source = readTextResource(sourceFile, session);
- final String packageName = extractPackageName(source);
+ final Source source = readTextResource(sourceFile, session);
+ final String packageName = extractPackageName(source.contents);
return new CompilationUnit() {
@@ -152,7 +145,14 @@ public class JcrJavaCompilerImpl impleme
* @see
org.apache.sling.commons.compiler.CompilationUnit#getSource()
*/
public Reader getSource() throws IOException {
- return new StringReader(source);
+ return new StringReader(source.contents);
+ }
+
+ /**
+ * @see
org.apache.sling.commons.compiler.CompilationUnit#getLastModified()
+ */
+ public long getLastModified() {
+ return source.lastModified;
}
private String getMainTypeName() {
@@ -189,8 +189,9 @@ public class JcrJavaCompilerImpl impleme
return "";
}
- private String readTextResource(final String resourcePath, final Session
session)
+ private Source readTextResource(final String resourcePath, final Session
session)
throws RepositoryException, IOException {
+ final Source source = new Source();
final String relPropPath = resourcePath.substring(1) +
"/jcr:content/jcr:data";
final InputStream in =
session.getRootNode().getProperty(relPropPath).getStream();
final Reader reader = new InputStreamReader(in, "UTF-8");
@@ -202,9 +203,17 @@ public class JcrJavaCompilerImpl impleme
writer.write(buffer, 0, read);
}
writer.close();
- return writer.toString();
+ source.contents = writer.toString();
+ final String lastModPath = resourcePath +
"/jcr:content/jcr:lastModified";
+ source.lastModified = session.itemExists(lastModPath) ?
((Property)session.getItem(lastModPath)).getLong() : -1;
+ return source;
} finally {
try { reader.close(); } catch (IOException ignore) {}
}
}
+
+ private static final class Source {
+ public String contents;
+ public long lastModified;
+ }
}