Merge r1022436 TUSCANY-3722: Check for correct versions of jaxws-api jar and pom in local maven repository

git-svn-id: https://svn.apache.org/repos/asf/tuscany/sca-java-1.x/trunk@1027546 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/distribution/bundle/pom.xml b/distribution/bundle/pom.xml
index b209b41..ee35aec 100644
--- a/distribution/bundle/pom.xml
+++ b/distribution/bundle/pom.xml
@@ -36,6 +36,20 @@
         <tuscany.version>${pom.version}</tuscany.version>
     </properties>
 
+    <repositories>
+        <!-- search this repository first because it contains the correct version
+             of jaxws-api-2.1.jar -->
+        <repository>
+            <snapshots>
+                <enabled>true</enabled>
+            </snapshots>
+            <id>java.net</id>
+            <name>java.net Maven 1.x Repository</name>
+            <url>http://download.java.net/maven/1</url>
+            <layout>legacy</layout>
+        </repository>
+    </repositories>
+
     <dependencies>
         <dependency>
             <groupId>${pom.groupId}</groupId>
@@ -654,6 +668,29 @@
 
             <plugin>
                 <groupId>org.codehaus.mojo</groupId>
+                <artifactId>exec-maven-plugin</artifactId>
+                <version>1.1</version>
+                <executions>
+                    <execution>
+                        <id>check-local-repository</id>
+                        <phase>compile</phase>
+                        <goals>
+                            <goal>exec</goal>
+                        </goals>
+                    </execution>
+                </executions>
+                <configuration>
+                    <executable>java</executable>
+                    <arguments>
+                        <argument>-cp</argument>
+                        <argument>${basedir}/target/classes</argument>
+                        <argument>org.apache.tuscany.sca.distribution.CheckLocalRepository</argument>
+                        <argument>${settings.localRepository}</argument>
+                    </arguments>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.codehaus.mojo</groupId>
                 <artifactId>shade-maven-plugin</artifactId>
                 <version>1.0-alpha-7</version>
                 <executions>
diff --git a/distribution/bundle/src/main/java/org/apache/tuscany/sca/distribution/CheckLocalRepository.java b/distribution/bundle/src/main/java/org/apache/tuscany/sca/distribution/CheckLocalRepository.java
new file mode 100644
index 0000000..eee32d7
--- /dev/null
+++ b/distribution/bundle/src/main/java/org/apache/tuscany/sca/distribution/CheckLocalRepository.java
@@ -0,0 +1,68 @@
+/*

+ * 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.distribution;

+

+import java.io.BufferedReader;

+import java.io.FileReader;

+import java.util.jar.JarFile;

+

+public class CheckLocalRepository {

+

+    public static void main(String[] args) {

+        String repo = args[0];

+        checkJarFile(repo);

+        checkPomFile(repo);

+        System.exit(0);

+    }

+

+    private static void checkJarFile(String repo) {

+        try {

+            JarFile jaxwsJar = new JarFile(repo + "/javax/xml/ws/jaxws-api/2.1/jaxws-api-2.1.jar");

+            if (jaxwsJar.getEntry("javax/xml/ws/soap/Addressing.class") != null) {

+                return;

+            }

+        } catch (Exception e) {

+        }

+        System.out.println("===================================================================");

+        System.out.println("ERROR: Incorrect version of jaxws-api jar in local maven repository");

+        System.out.println("ERROR: To fix this, delete the javax/xml/ws/jaxws-api/2.1 directory");

+        System.out.println("ERROR: and rerun the distribution build");

+        System.out.println("===================================================================");

+        System.exit(1);

+    }

+

+    private static void checkPomFile(String repo) {

+        try {

+            FileReader jaxwsPom = new FileReader(repo + "/javax/xml/ws/jaxws-api/2.1/jaxws-api-2.1.pom");

+            BufferedReader reader = new BufferedReader(jaxwsPom);

+            while (true) {

+                if (reader.readLine().contains("saaj-api")) {

+                    return;

+                }

+            }

+        } catch (Exception e) {

+        }

+        System.out.println("===================================================================");

+        System.out.println("ERROR: Incorrect version of jaxws-api pom in local maven repository");

+        System.out.println("ERROR: To fix this, delete the javax/xml/ws/jaxws-api/2.1 directory");

+        System.out.println("ERROR: and rerun the distribution build");

+        System.out.println("===================================================================");

+        System.exit(1);

+    }

+}