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)");
         }