CXFXJC-17 - Multiple Binding Files
diff --git a/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/AbstractXSDToJavaMojo.java b/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/AbstractXSDToJavaMojo.java
index 9e9b0dd..fbe12e3 100644
--- a/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/AbstractXSDToJavaMojo.java
+++ b/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/AbstractXSDToJavaMojo.java
@@ -214,12 +214,14 @@
                             //ignore
                         }
                     }
-                    if (xsdOptions[x].getBindingFile() != null) { 
-                        URI bindingURI = mapLocation(xsdOptions[x].getBindingFile());
-                        if ("file".equals(bindingURI.getScheme())) {
-                            long bts = new File(bindingURI).lastModified();
-                            if (bts > srctimestamp) {
-                                srctimestamp = bts;
+                    if (xsdOptions[x].getBindingFiles() != null) {
+                        for (String bf : xsdOptions[x].getBindingFiles()) {
+                            URI bindingURI = mapLocation(bf);
+                            if ("file".equals(bindingURI.getScheme())) {
+                                long bts = new File(bindingURI).lastModified();
+                                if (bts > srctimestamp) {
+                                    srctimestamp = bts;
+                                }
                             }
                         }
                     }
@@ -251,7 +253,11 @@
                                 }
                             }
                             removeMessages(xsdFile);
-                            removeMessages(xsdOptions[x].getBindingFile());
+                            if (xsdOptions[x].getBindingFiles() != null) {
+                                for (String bf : xsdOptions[x].getBindingFiles()) {
+                                    removeMessages(bf);
+                                }
+                            }
                             int i = run(xsdOptions[x], xsdFile, outputDir);
                             if (i == 0) {
                                 doneFile.delete();
@@ -410,9 +416,11 @@
             list.add("-p");
             list.add(option.getPackagename());
         }
-        if (option.getBindingFile() != null) {
-            list.add("-b");
-            list.add(mapLocation(option.getBindingFile()).toString());
+        if (option.getBindingFiles() != null) {
+            for (String bf : option.getBindingFiles()) {
+                list.add("-b");
+                list.add(mapLocation(bf).toString());
+            }
         }
         if (option.getCatalog() != null) {
             list.add("-catalog");
diff --git a/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/XsdOption.java b/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/XsdOption.java
index 4329b39..8fc2a13 100644
--- a/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/XsdOption.java
+++ b/cxf-xjc-plugin/src/main/java/org/apache/cxf/maven_plugin/XsdOption.java
@@ -20,17 +20,18 @@
 package org.apache.cxf.maven_plugin;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.List;
 
 public class XsdOption {
     String xsd;
     String xsdDir;
     String packagename;
-    String bindingFile;
     File dependencies[];
     File redundantDirs[];
     boolean extension;    
     List<String> extensionArgs;
+    List<String> bindingFiles;
     String catalog;
     
     public String getPackagename() {
@@ -52,10 +53,25 @@
         this.xsdDir = x;
     }
     public String getBindingFile() {
-        return bindingFile;
+        if (bindingFiles != null && !bindingFiles.isEmpty()) {
+            return bindingFiles.get(0);
+        }
+        return null;
     }
     public void setBindingFile(String bf) {
-        this.bindingFile = bf;
+        if (bindingFiles == null) {
+            bindingFiles = new ArrayList<>();
+            bindingFiles.add(bf);
+        } else {
+            bindingFiles.clear();
+            bindingFiles.add(bf);
+        }
+    }
+    public List<String> getBindingFiles() {
+        return bindingFiles;
+    }
+    public void setBindingFiles(List<String> bindingFiles) {
+        this.bindingFiles = bindingFiles;
     }    
     public void setDependencies(File files[]) {
         dependencies = files;