You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@servicemix.apache.org by ff...@apache.org on 2012/11/20 13:47:39 UTC

svn commit: r1411646 - in /servicemix/smx4/specs/trunk: ./ jsr339-api-m13/ jsr339-api-m13/src/ jsr339-api-m13/src/main/ jsr339-api-m13/src/main/java/ jsr339-api-m13/src/main/java/javax/ jsr339-api-m13/src/main/java/javax/ws/ jsr339-api-m13/src/main/jav...

Author: ffang
Date: Tue Nov 20 12:47:36 2012
New Revision: 1411646

URL: http://svn.apache.org/viewvc?rev=1411646&view=rev
Log:
[SMX4-1284]Create a spec bundle for javax.ws.rs-api 2.0-m13

Added:
    servicemix/smx4/specs/trunk/jsr339-api-m13/
    servicemix/smx4/specs/trunk/jsr339-api-m13/pom.xml
    servicemix/smx4/specs/trunk/jsr339-api-m13/src/
    servicemix/smx4/specs/trunk/jsr339-api-m13/src/main/
    servicemix/smx4/specs/trunk/jsr339-api-m13/src/main/java/
    servicemix/smx4/specs/trunk/jsr339-api-m13/src/main/java/javax/
    servicemix/smx4/specs/trunk/jsr339-api-m13/src/main/java/javax/ws/
    servicemix/smx4/specs/trunk/jsr339-api-m13/src/main/java/javax/ws/rs/
    servicemix/smx4/specs/trunk/jsr339-api-m13/src/main/java/javax/ws/rs/ext/
    servicemix/smx4/specs/trunk/jsr339-api-m13/src/main/java/javax/ws/rs/ext/FactoryFinder.java
Modified:
    servicemix/smx4/specs/trunk/pom.xml

Added: servicemix/smx4/specs/trunk/jsr339-api-m13/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jsr339-api-m13/pom.xml?rev=1411646&view=auto
==============================================================================
--- servicemix/smx4/specs/trunk/jsr339-api-m13/pom.xml (added)
+++ servicemix/smx4/specs/trunk/jsr339-api-m13/pom.xml Tue Nov 20 12:47:36 2012
@@ -0,0 +1,174 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
+    <!--
+
+        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.
+    -->
+
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.apache.servicemix.specs</groupId>
+        <artifactId>specs</artifactId>
+        <version>2.2-SNAPSHOT</version>
+    </parent>
+
+    <groupId>org.apache.servicemix.specs</groupId>
+    <artifactId>org.apache.servicemix.specs.jsr339-api-m13</artifactId>
+    <packaging>bundle</packaging>
+    <version>2.2-SNAPSHOT</version>
+    <name>Apache ServiceMix :: Specs :: JSR-339 API M13</name>
+
+    <dependencies>
+        <dependency>
+            <groupId>javax.ws.rs</groupId>
+            <artifactId>javax.ws.rs-api</artifactId>
+            <version>2.0-m13</version>
+        </dependency>
+        <dependency>
+            <groupId>org.apache.servicemix.specs</groupId>
+            <artifactId>org.apache.servicemix.specs.locator</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+    </dependencies>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-bundle-plugin</artifactId>
+                <configuration>
+                    <instructions>
+                        <Bundle-SymbolicName>${project.artifactId}</Bundle-SymbolicName>
+                        <Bundle-Description>${project.description}</Bundle-Description>
+                        <Export-Package>
+                            javax.ws.rs*;version=2.0.0.m13,;-split-package:=merge-first,
+                            javax.ws.rs;version=2.0.0.m13,
+                            javax.ws.rs.core;version=2.0.0.m13,
+                            javax.ws.rs.ext;version=2.0.0.m13,
+                        </Export-Package>
+                        <Import-Package>!javax.ws.rs*,*</Import-Package>
+                        <_nouses>true</_nouses>
+                        <Private-Package>org.apache.servicemix.specs.locator;-split-package:=merge-first;-noimport:=true</Private-Package>
+                        <Bundle-Activator>org.apache.servicemix.specs.locator.Activator</Bundle-Activator>
+                        <Implementation-Title>Apache ServiceMix</Implementation-Title>
+                        <Implementation-Version>${project.version}</Implementation-Version>
+                    </instructions>
+                    <unpackBundle>true</unpackBundle>
+                </configuration>
+            </plugin>
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-shade-plugin</artifactId>
+                <executions>
+                    <execution>
+                        <phase>package</phase>
+                        <goals>
+                            <goal>shade</goal>
+                        </goals>
+                        <configuration>
+                            <artifactSet>
+                                <includes>
+                                    <include>javax.ws.rs:javax.ws.rs-api</include>
+                                    <include>org.apache.servicemix.specs:org.apache.servicemix.specs.locator</include>
+                                </includes>
+                            </artifactSet>
+                            <filters>
+                                <filter>
+                                    <artifact>javax.ws.rs:javax.ws.rs-api</artifact>
+                                    <excludes>
+                                        <exclude>javax/**</exclude>
+                                    </excludes>
+                                </filter>
+                                <filter>
+                                    <artifact>org.apache.servicemix.specs:org.apache.servicemix.specs.locator</artifact>
+                                    <excludes>
+                                        <exclude>org/**</exclude>
+                                    </excludes>
+                                </filter>
+                            </filters>
+                            <createSourcesJar>${createSourcesJar}</createSourcesJar>
+                            <promoteTransitiveDependencies>true</promoteTransitiveDependencies>
+                            <createDependencyReducedPom>true</createDependencyReducedPom>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+
+    <profiles>
+        <profile>
+            <id>deploy</id>
+            <properties>
+                <createSourcesJar>true</createSourcesJar>
+            </properties>
+            <build>
+                <plugins>
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-dependency-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>unpack-sources</id>
+                                <phase>generate-sources</phase>
+                                <goals>
+                                    <goal>unpack</goal>
+                                </goals>
+                                <configuration>
+                                    <artifactItems>
+                                        <artifactItem>
+                                            <groupId>javax.ws.rs</groupId>
+                                            <artifactId>javax.ws.rs-api</artifactId>
+                                            <classifier>sources</classifier>
+                                        </artifactItem>
+                                        <artifactItem>
+                                            <groupId>org.apache.servicemix.specs</groupId>
+                                            <artifactId>org.apache.servicemix.specs.locator</artifactId>
+                                            <classifier>sources</classifier>
+                                        </artifactItem>
+                                    </artifactItems>
+                                    <outputDirectory>${project.build.directory}/sources</outputDirectory>
+                                </configuration>
+                            </execution>
+                        </executions>
+                    </plugin>
+
+                    <plugin>
+                        <groupId>org.apache.maven.plugins</groupId>
+                        <artifactId>maven-javadoc-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>package</id>
+                                <phase>package</phase>
+                                <goals>
+                                    <goal>jar</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                        <configuration>
+                            <minmemory>128m</minmemory>
+                            <maxmemory>512m</maxmemory>
+                            <sourcepath>${project.build.directory}/sources</sourcepath>
+                        </configuration>
+                    </plugin>
+                </plugins>
+            </build>
+        </profile>
+    </profiles>
+
+</project>

Added: servicemix/smx4/specs/trunk/jsr339-api-m13/src/main/java/javax/ws/rs/ext/FactoryFinder.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jsr339-api-m13/src/main/java/javax/ws/rs/ext/FactoryFinder.java?rev=1411646&view=auto
==============================================================================
--- servicemix/smx4/specs/trunk/jsr339-api-m13/src/main/java/javax/ws/rs/ext/FactoryFinder.java (added)
+++ servicemix/smx4/specs/trunk/jsr339-api-m13/src/main/java/javax/ws/rs/ext/FactoryFinder.java Tue Nov 20 12:47:36 2012
@@ -0,0 +1,146 @@
+/*
+ * The contents of this file are subject to the terms
+ * of the Common Development and Distribution License
+ * (the "License").  You may not use this file except
+ * in compliance with the License.
+ *
+ * You can obtain a copy of the license at
+ * http://www.opensource.org/licenses/cddl1.php
+ * See the License for the specific language governing
+ * permissions and limitations under the License.
+ */
+package javax.ws.rs.ext;
+
+import java.io.BufferedReader;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.Properties;
+
+public class FactoryFinder {
+
+    /**
+     * Creates an instance of the specified class using the specified
+     * <code>ClassLoader</code> object.
+     *
+     * @throws ClassNotFoundException if the given class could not be found
+     *                                or could not be instantiated
+     */
+    private static Object newInstance(String className,
+                                      ClassLoader classLoader) throws ClassNotFoundException {
+        try {
+            Class spiClass;
+            if (classLoader == null) {
+                spiClass = Class.forName(className);
+            } else {
+                spiClass = classLoader.loadClass(className);
+            }
+            return spiClass.newInstance();
+        } catch (ClassNotFoundException x) {
+            throw x;
+        } catch (Exception x) {
+            throw new ClassNotFoundException(
+                    "Provider " + className + " could not be instantiated: " + x,
+                    x);
+        }
+    }
+
+    /**
+     * Finds the implementation <code>Class</code> object for the given
+     * factory name, or if that fails, finds the <code>Class</code> object
+     * for the given fallback class name. The arguments supplied MUST be
+     * used in order. If using the first argument is successful, the second
+     * one will not be used.
+     * <p/>
+     * This method is package private so that this code can be shared.
+     *
+     * @param factoryId         the name of the factory to find, which is
+     *                          a system property
+     * @param fallbackClassName the implementation class name, which is
+     *                          to be used only if nothing else
+     *                          is found; <code>null</code> to indicate that
+     *                          there is no fallback class name
+     * @return the <code>Class</code> object of the specified message factory;
+     *         may not be <code>null</code>
+     * @throws WebServiceException if there is an error
+     */
+    static Object find(String factoryId, String fallbackClassName) throws ClassNotFoundException {
+        try {
+            // If we are deployed into an OSGi environment, leverage it
+            Class factoryClass = FactoryFinder.class.getClassLoader().loadClass(factoryId);
+            Class spiClass = org.apache.servicemix.specs.locator.OsgiLocator.locate(factoryClass, factoryId);
+            if (spiClass != null) {
+                return spiClass.newInstance();
+            }
+        } catch (Throwable e) {
+        }
+
+        ClassLoader classLoader;
+        try {
+            classLoader = Thread.currentThread().getContextClassLoader();
+        } catch (Exception x) {
+            throw new ClassNotFoundException(x.toString(), x);
+        }
+
+        String serviceId = "META-INF/services/" + factoryId;
+        // try to find services in CLASSPATH
+        try {
+            InputStream is;
+            if (classLoader == null) {
+                is = ClassLoader.getSystemResourceAsStream(serviceId);
+            } else {
+                is = classLoader.getResourceAsStream(serviceId);
+            }
+
+            if (is != null) {
+                BufferedReader rd =
+                        new BufferedReader(new InputStreamReader(is, "UTF-8"));
+
+                String factoryClassName = rd.readLine();
+                rd.close();
+
+                if (factoryClassName != null &&
+                        !"".equals(factoryClassName)) {
+                    return newInstance(factoryClassName, classLoader);
+                }
+            }
+        } catch (Exception ex) {
+        }
+
+
+        // try to read from $java.home/lib/jaxrs.properties
+        try {
+            String javah = System.getProperty("java.home");
+            String configFile = javah + File.separator +
+                    "lib" + File.separator + "jaxrs.properties";
+            File f = new File(configFile);
+            if (f.exists()) {
+                Properties props = new Properties();
+                props.load(new FileInputStream(f));
+                String factoryClassName = props.getProperty(factoryId);
+                return newInstance(factoryClassName, classLoader);
+            }
+        } catch (Exception ex) {
+        }
+
+
+        // Use the system property
+        try {
+            String systemProp =
+                    System.getProperty(factoryId);
+            if (systemProp != null) {
+                return newInstance(systemProp, classLoader);
+            }
+        } catch (SecurityException se) {
+        }
+
+        if (fallbackClassName == null) {
+            throw new ClassNotFoundException(
+                    "Provider for " + factoryId + " cannot be found", null);
+        }
+
+        return newInstance(fallbackClassName, classLoader);
+    }
+
+}

Modified: servicemix/smx4/specs/trunk/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/pom.xml?rev=1411646&r1=1411645&r2=1411646&view=diff
==============================================================================
--- servicemix/smx4/specs/trunk/pom.xml (original)
+++ servicemix/smx4/specs/trunk/pom.xml Tue Nov 20 12:47:36 2012
@@ -58,6 +58,7 @@
         <module>jsr311-api-1.1</module>
         <module>jsr311-api-1.1.1</module>
         <module>jsr339-api-m10</module>
+        <module>jsr339-api-m13</module>
         <module>javamail-api-1.4</module>
         <module>activation-api-1.1</module>
         <module>java-persistence-api-1.1.1</module>