diff options
author | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2009-02-09 15:50:08 +0000 |
---|---|---|
committer | antelder <antelder@13f79535-47bb-0310-9956-ffa450edef68> | 2009-02-09 15:50:08 +0000 |
commit | 3c1595ad7b0afd147195462f711ac20e51fdd2b1 (patch) | |
tree | 4eca27716ee93e47f31624197ddf28914500a9de /plugins/tags/tuscany-maven-eclipse-compiler-1.0/src/main/java/org/apache/tuscany/sca/tools/maven/compiler/CompilerRequestor.java | |
parent | 9f42b274475daa097a2f7985a2bd3eeda119d9bb (diff) |
[maven-release-plugin] copy for tag tuscany-maven-eclipse-compiler-1.0
git-svn-id: http://svn.us.apache.org/repos/asf/tuscany@742575 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'plugins/tags/tuscany-maven-eclipse-compiler-1.0/src/main/java/org/apache/tuscany/sca/tools/maven/compiler/CompilerRequestor.java')
-rw-r--r-- | plugins/tags/tuscany-maven-eclipse-compiler-1.0/src/main/java/org/apache/tuscany/sca/tools/maven/compiler/CompilerRequestor.java | 114 |
1 files changed, 114 insertions, 0 deletions
diff --git a/plugins/tags/tuscany-maven-eclipse-compiler-1.0/src/main/java/org/apache/tuscany/sca/tools/maven/compiler/CompilerRequestor.java b/plugins/tags/tuscany-maven-eclipse-compiler-1.0/src/main/java/org/apache/tuscany/sca/tools/maven/compiler/CompilerRequestor.java new file mode 100644 index 0000000000..3df4b4d602 --- /dev/null +++ b/plugins/tags/tuscany-maven-eclipse-compiler-1.0/src/main/java/org/apache/tuscany/sca/tools/maven/compiler/CompilerRequestor.java @@ -0,0 +1,114 @@ +/* + * 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.tuscany.sca.tools.maven.compiler; + +import java.io.File; +import java.io.FileNotFoundException; +import java.io.FileOutputStream; +import java.io.IOException; +import java.util.List; + +import org.codehaus.plexus.compiler.CompilerError; +import org.eclipse.jdt.core.compiler.IProblem; +import org.eclipse.jdt.internal.compiler.ClassFile; +import org.eclipse.jdt.internal.compiler.CompilationResult; +import org.eclipse.jdt.internal.compiler.ICompilerRequestor; + +class CompilerRequestor implements ICompilerRequestor { + private String outputDirectory; + private boolean showWarnings; + private List<CompilerError> compilerErrors; + + public CompilerRequestor(String outputDirectory, boolean showWarnings, List<CompilerError> compilerErrors) { + this.outputDirectory = outputDirectory; + this.showWarnings = showWarnings; + this.compilerErrors = compilerErrors; + } + + public void acceptResult(CompilationResult result) { + boolean hasErrors = false; + if (result.hasProblems()) { + + // Convert JDT IProblems into plexus CompilerErrors + for (IProblem problem: result.getProblems()) { + if (problem.isWarning()) { + if (showWarnings) { + compilerErrors.add(new CompilerError(new String(problem.getOriginatingFileName()), + false, + problem.getSourceLineNumber(), + problem.getSourceStart(), + problem.getSourceLineNumber(), + problem.getSourceEnd(), + problem.getMessage())); + } + + } else if (problem.isError()) { + hasErrors = true; + compilerErrors.add(new CompilerError(new String(problem.getOriginatingFileName()), + true, + problem.getSourceLineNumber(), + problem.getSourceStart(), + problem.getSourceLineNumber(), + problem.getSourceEnd(), + problem.getMessage())); + + } + } + } + + // Write the class files + if (!hasErrors) { + ClassFile[] classFiles = result.getClassFiles(); + for (ClassFile classFile: classFiles) { + + // Create file and parent directories + StringBuffer className = new StringBuffer(); + for (char[] name: classFile.getCompoundName()) { + if (className.length() != 0) { + className.append('.'); + } + className.append(name); + } + File file = new File(outputDirectory, className.toString().replace('.', '/') + ".class"); + if (!file.getParentFile().exists()) { + file.getParentFile().mkdirs(); + } + + // Write class file contents + FileOutputStream fos = null; + try { + fos = new FileOutputStream(file); + fos.write(classFile.getBytes()); + } catch (FileNotFoundException e) { + throw new IllegalArgumentException(e); + } catch (IOException e) { + throw new IllegalArgumentException(e); + } finally { + if (fos != null) { + try { + fos.close(); + } catch (IOException e) {} + } + } + } + } + } + +}
\ No newline at end of file |