FELIX-1229 : Correct handling of errors and warnings
git-svn-id: https://svn.apache.org/repos/asf/felix/trunk@784593 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/IssueLog.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/IssueLog.java
index 3453ef1..756821b 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/IssueLog.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/IssueLog.java
@@ -18,24 +18,32 @@
*/
package org.apache.felix.scrplugin;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.apache.maven.plugin.logging.Log;
/**
* Utility class for handling errors and warnings
*/
public class IssueLog {
- private final List<String> errors;
+ private final boolean strictMode;
- private final List<String> warnings;
+ private final List<String> errors = new ArrayList<String>();
+
+ private final List<String> warnings = new ArrayList<String>();
public IssueLog(final boolean strictMode) {
- this.errors = new ArrayList<String>();
- if ( strictMode ) {
- this.warnings = this.errors;
- } else {
- this.warnings = new ArrayList<String>();
- }
+ this.strictMode = strictMode;
+ }
+
+ public int getNumberOfErrors() {
+ return this.errors.size();
+ }
+
+ public boolean hasErrors() {
+ return errors.size() > 0 || (this.strictMode && warnings.size() > 0 );
}
public void addError(final String e) {
@@ -46,19 +54,19 @@
warnings.add(e);
}
- public int getNumberOfErrors() {
- return this.errors.size();
- }
-
- public List<String> getErrors() {
- return this.errors;
- }
-
- @SuppressWarnings("unchecked")
- public List<String> getWarnings() {
- if ( this.errors == this.warnings ) {
- return Collections.EMPTY_LIST;
+ public void log(final Log log) {
+ // now log warnings and errors (warnings first)
+ // in strict mode everything is an error!
+ for(String warn : warnings) {
+ if ( strictMode ) {
+ log.error(warn);
+ } else {
+ log.warn(warn);
+ }
}
- return this.warnings;
+ for(String err : errors) {
+ log.error(err);
+ }
+
}
}
diff --git a/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java b/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
index b8a0bca..6322565 100644
--- a/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
+++ b/scrplugin/src/main/java/org/apache/felix/scrplugin/SCRDescriptorMojo.java
@@ -254,16 +254,11 @@
}
}
- // now log warnings and errors (warnings first)
- for(String warn : iLog.getWarnings()) {
- this.getLog().warn(warn);
- }
- for(String err : iLog.getErrors()) {
- this.getLog().error(err);
- }
+ // log issues
+ iLog.log(this.getLog());
// after checking all classes, throw if there were any failures
- if (iLog.getNumberOfErrors() > 0 ) {
+ if ( iLog.hasErrors() ) {
throw new MojoFailureException("SCR Descriptor parsing had failures (see log)");
}