servicemix-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jbono...@apache.org
Subject svn commit: r1554369 - in /servicemix/smx4/specs/trunk: ./ jsr303-api-1.1.0/ jsr303-api-1.1.0/src/ jsr303-api-1.1.0/src/main/ jsr303-api-1.1.0/src/main/java/ jsr303-api-1.1.0/src/main/java/javax/ jsr303-api-1.1.0/src/main/java/javax/validation/
Date Tue, 31 Dec 2013 06:17:12 GMT
Author: jbonofre
Date: Tue Dec 31 06:17:11 2013
New Revision: 1554369

URL: http://svn.apache.org/r1554369
Log:
[SMX4-1618] Create jsr303-api 1.1.0 spec bundle

Added:
    servicemix/smx4/specs/trunk/jsr303-api-1.1.0/
    servicemix/smx4/specs/trunk/jsr303-api-1.1.0/pom.xml
    servicemix/smx4/specs/trunk/jsr303-api-1.1.0/src/
    servicemix/smx4/specs/trunk/jsr303-api-1.1.0/src/main/
    servicemix/smx4/specs/trunk/jsr303-api-1.1.0/src/main/java/
    servicemix/smx4/specs/trunk/jsr303-api-1.1.0/src/main/java/javax/
    servicemix/smx4/specs/trunk/jsr303-api-1.1.0/src/main/java/javax/validation/
    servicemix/smx4/specs/trunk/jsr303-api-1.1.0/src/main/java/javax/validation/Validation.java
Modified:
    servicemix/smx4/specs/trunk/pom.xml

Added: servicemix/smx4/specs/trunk/jsr303-api-1.1.0/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jsr303-api-1.1.0/pom.xml?rev=1554369&view=auto
==============================================================================
--- servicemix/smx4/specs/trunk/jsr303-api-1.1.0/pom.xml (added)
+++ servicemix/smx4/specs/trunk/jsr303-api-1.1.0/pom.xml Tue Dec 31 06:17:11 2013
@@ -0,0 +1,176 @@
+<?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/maven-v4_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.4-SNAPSHOT</version>
+    </parent>
+    
+    <groupId>org.apache.servicemix.specs</groupId>
+    <artifactId>org.apache.servicemix.specs.jsr303-api-1.1.0</artifactId>
+    <packaging>bundle</packaging>
+    <version>2.4-SNAPSHOT</version>
+    <name>Apache ServiceMix :: Specs :: JSR-303 API 1.1.0</name>
+    
+    <dependencies>
+        <dependency>
+            <groupId>org.apache.servicemix.specs</groupId>
+            <artifactId>org.apache.servicemix.specs.locator</artifactId>
+            <version>${project.version}</version>
+        </dependency>
+        <dependency>
+            <groupId>javax.validation</groupId>
+            <artifactId>validation-api</artifactId>
+            <version>1.1.0.Final</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.validation*;version=1.0.0;-split-package:=merge-first;-noimport:=true</Export-Package>
+                        <Import-Package>*</Import-Package>
+                        <Private-Package>org.apache.servicemix.specs.locator;-split-package:=merge-first</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.validation:validation-api</include>
+                                    <include>org.apache.servicemix.specs:org.apache.servicemix.specs.locator</include>
+                                    <include>${project.groupId}:${project.artifactId}</include>
+                                </includes>
+                            </artifactSet>
+                            <filters>
+                                <filter>
+                                    <artifact>javax.validation:validation-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-source-plugin</artifactId>
+                        <executions>
+                            <execution>
+                                <id>attach-sources</id>
+                                <phase>process-classes</phase>
+                                <goals>
+                                    <goal>jar</goal>
+                                </goals>
+                            </execution>
+                        </executions>
+                    </plugin>
+                    <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>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/jsr303-api-1.1.0/src/main/java/javax/validation/Validation.java
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/jsr303-api-1.1.0/src/main/java/javax/validation/Validation.java?rev=1554369&view=auto
==============================================================================
--- servicemix/smx4/specs/trunk/jsr303-api-1.1.0/src/main/java/javax/validation/Validation.java
(added)
+++ servicemix/smx4/specs/trunk/jsr303-api-1.1.0/src/main/java/javax/validation/Validation.java
Tue Dec 31 06:17:11 2013
@@ -0,0 +1,433 @@
+// $Id: Validation.java 17620 2009-10-04 19:19:28Z hardy.ferentschik $
+/*
+* JBoss, Home of Professional Open Source
+* Copyright 2009, Red Hat, Inc. and/or its affiliates, and individual contributors
+* by the @authors tag. See the copyright.txt in the distribution for a
+* full listing of individual contributors.
+*
+* Licensed 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 javax.validation;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.net.URL;
+import java.security.AccessController;
+import java.security.PrivilegedAction;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.Map;
+import java.util.WeakHashMap;
+import javax.validation.bootstrap.GenericBootstrap;
+import javax.validation.bootstrap.ProviderSpecificBootstrap;
+import javax.validation.spi.BootstrapState;
+import javax.validation.spi.ValidationProvider;
+
+/**
+ * This class is the entry point for Bean Validation. There are three ways
+ * to bootstrap it:
+ * <ul>
+ * <li>
+ * The easiest approach is to build the default <code>ValidatorFactory</code>.
+ * <pre>{@code ValidatorFactory factory = Validation.buildDefaultValidatorFactory();}</pre>
+ * In this case, the default validation provider resolver
+ * will be used to locate available providers.
+ * The chosen provider is defined as followed:
+ * <ul>
+ * <li>if the XML configuration defines a provider, this provider is used</li>
+ * <li>if the XML configuration does not define a provider or if no XML configuration
+ * is present the first provider returned by the
+ * <code>ValidationProviderResolver</code> instance is used.</li>
+ * </ul>
+ * </li>
+ * <li>
+ * The second bootstrap approach allows to choose a custom
+ * <code>ValidationProviderResolver</code>. The chosen
+ * <code>ValidationProvider</code> is then determined in the same way
+ * as in the default bootstrapping case (see above).
+ * <pre>{@code
+ * Configuration<?> configuration = Validation
+ *    .byDefaultProvider()
+ *    .providerResolver( new MyResolverStrategy() )
+ *    .configure();
+ * ValidatorFactory factory = configuration.buildValidatorFactory();}
+ * </pre>
+ * </li>
+ * <li>
+ * The third approach allows you to specify explicitly and in
+ * a type safe fashion the expected provider.
+ * <p/>
+ * Optionally you can choose a custom <code>ValidationProviderResolver</code>.
+ * <pre>{@code
+ * ACMEConfiguration configuration = Validation
+ *    .byProvider(ACMEProvider.class)
+ *    .providerResolver( new MyResolverStrategy() )  // optionally set the provider resolver
+ *    .configure();
+ * ValidatorFactory factory = configuration.buildValidatorFactory();}
+ * </pre>
+ * </li>
+ * </ul>
+ * Note:<br/>
+ * <ul>
+ * <li>
+ * The <code>ValidatorFactory</code> object built by the bootstrap process should
be cached
+ * and shared amongst <code>Validator</code> consumers.
+ * </li>
+ * <li>
+ * This class is thread-safe.
+ * </li>
+ * </ul>
+ *
+ * @author Emmanuel Bernard
+ * @author Hardy Ferentschik
+ */
+public class Validation {
+
+	/**
+	 * Build and return a <code>ValidatorFactory</code> instance based on the
+	 * default Bean Validation provider and following the XML configuration.
+	 * <p/>
+	 * The provider list is resolved using the default validation provider resolver
+	 * logic.
+	 * <p/> The code is semantically equivalent to
+	 * <code>Validation.byDefaultProvider().configure().buildValidatorFactory()</code>
+	 *
+	 * @return <code>ValidatorFactory</code> instance.
+	 *
+	 * @throws ValidationException if the ValidatorFactory cannot be built
+	 */
+	public static ValidatorFactory buildDefaultValidatorFactory() {
+		return byDefaultProvider().configure().buildValidatorFactory();
+	}
+
+	/**
+	 * Build a <code>Configuration</code>. The provider list is resolved
+	 * using the strategy provided to the bootstrap state.
+	 * <pre>
+	 * Configuration&lt?&gt; configuration = Validation
+	 *    .byDefaultProvider()
+	 *    .providerResolver( new MyResolverStrategy() )
+	 *    .configure();
+	 * ValidatorFactory factory = configuration.buildValidatorFactory();
+	 * </pre>
+	 * The provider can be specified in the XML configuration. If the XML
+	 * configuration does not exsist or if no provider is specified,
+	 * the first available provider will be returned.
+	 *
+	 * @return instance building a generic <code>Configuration</code>
+	 *         compliant with the bootstrap state provided.
+	 */
+	public static GenericBootstrap byDefaultProvider() {
+		return new GenericBootstrapImpl();
+	}
+
+	/**
+	 * Build a <code>Configuration</code> for a particular provider implementation.
+	 * Optionally overrides the provider resolution strategy used to determine the provider.
+	 * <p/>
+	 * Used by applications targeting a specific provider programmatically.
+	 * <p/>
+	 * <pre>
+	 * ACMEConfiguration configuration =
+	 *     Validation.byProvider(ACMEProvider.class)
+	 *             .providerResolver( new MyResolverStrategy() )
+	 *             .configure();
+	 * </pre>,
+	 * where <code>ACMEConfiguration</code> is the
+	 * <code>Configuration</code> sub interface uniquely identifying the
+	 * ACME Bean Validation provider. and <code>ACMEProvider</code> is the
+	 * <code>ValidationProvider</code> implementation of the ACME provider.
+	 *
+	 * @param providerType the <code>ValidationProvider</code> implementation type
+	 *
+	 * @return instance building a provider specific <code>Configuration</code>
+	 *         sub interface implementation.
+	 */
+	public static <T extends Configuration<T>, U extends ValidationProvider<T>>
+	ProviderSpecificBootstrap<T> byProvider(Class<U> providerType) {
+		return new ProviderSpecificBootstrapImpl<T, U>( providerType );
+	}
+
+	//private class, not exposed
+	private static class ProviderSpecificBootstrapImpl<T extends Configuration<T>,
U extends ValidationProvider<T>>
+			implements ProviderSpecificBootstrap<T> {
+
+		private final Class<U> validationProviderClass;
+		private ValidationProviderResolver resolver;
+
+		public ProviderSpecificBootstrapImpl(Class<U> validationProviderClass) {
+			this.validationProviderClass = validationProviderClass;
+		}
+
+		/**
+		 * Optionally define the provider resolver implementation used.
+		 * If not defined, use the default ValidationProviderResolver
+		 *
+		 * @param resolver ValidationProviderResolver implementation used
+		 *
+		 * @return self
+		 */
+		public ProviderSpecificBootstrap<T> providerResolver(ValidationProviderResolver resolver)
{
+			this.resolver = resolver;
+			return this;
+		}
+
+		/**
+		 * Determine the provider implementation suitable for byProvider(Class)
+		 * and delegate the creation of this specific Configuration subclass to the provider.
+		 *
+		 * @return a Configuration sub interface implementation
+		 */
+		public T configure() {
+			if ( validationProviderClass == null ) {
+				throw new ValidationException(
+						"builder is mandatory. Use Validation.byDefaultProvider() to use the generic provider
discovery mechanism"
+				);
+			}
+			//used mostly as a BootstrapState
+			GenericBootstrapImpl state = new GenericBootstrapImpl();
+			if ( resolver == null ) {
+				resolver = state.getDefaultValidationProviderResolver();
+			}
+			else {
+				//stay null if no resolver is defined
+				state.providerResolver( resolver );
+			}
+
+			List<ValidationProvider<?>> resolvers;
+			try {
+				resolvers = resolver.getValidationProviders();
+			}
+			catch ( RuntimeException re ) {
+				throw new ValidationException( "Unable to get available provider resolvers.", re );
+			}
+
+			for ( ValidationProvider provider : resolvers ) {
+				if ( validationProviderClass.isAssignableFrom( provider.getClass() ) ) {
+					ValidationProvider<T> specificProvider = validationProviderClass.cast( provider
);
+					return specificProvider.createSpecializedConfiguration( state );
+
+				}
+			}
+			throw new ValidationException( "Unable to find provider: " + validationProviderClass );
+		}
+	}
+
+	//private class, not exposed
+	private static class GenericBootstrapImpl implements GenericBootstrap, BootstrapState {
+
+		private ValidationProviderResolver resolver;
+		private ValidationProviderResolver defaultResolver;
+
+		public GenericBootstrap providerResolver(ValidationProviderResolver resolver) {
+			this.resolver = resolver;
+			return this;
+		}
+
+		public ValidationProviderResolver getValidationProviderResolver() {
+			return resolver;
+		}
+
+		public ValidationProviderResolver getDefaultValidationProviderResolver() {
+			if ( defaultResolver == null ) {
+				defaultResolver = new DefaultValidationProviderResolver();
+			}
+			return defaultResolver;
+		}
+
+		public Configuration<?> configure() {
+			ValidationProviderResolver resolver = this.resolver == null ?
+					getDefaultValidationProviderResolver() :
+					this.resolver;
+
+			List<ValidationProvider<?>> resolvers;
+			try {
+				resolvers = resolver.getValidationProviders();
+			}
+			catch ( RuntimeException re ) {
+				throw new ValidationException( "Unable to get available provider resolvers.", re );
+			}
+
+			if ( resolvers.size() == 0 ) {
+				//FIXME looks like an assertion error almost
+				throw new ValidationException( "Unable to find a default provider" );
+			}
+
+			Configuration<?> config;
+			try {
+				config = resolver.getValidationProviders().get( 0 ).createGenericConfiguration( this
);
+			}
+			catch ( RuntimeException re ) {
+				throw new ValidationException( "Unable to instantiate Configuration.", re );
+			}
+
+			return config;
+		}
+	}
+
+	/**
+	 * Find <code>ValidationProvider</code> according to the default <code>ValidationProviderResolver</code>
defined in the
+	 * Bean Validation specification. This implementation uses the current classloader or the
classloader which has loaded
+	 * the current class if the current class loader is unavailable. The classloader is used
to retrieve the Service Provider files.
+	 * <p>
+	 * This class implements the Service Provider pattern described <a href="http://java.sun.com/j2se/1.5.0/docs/guide/jar/jar.html#Service%20Provider">here</a>.
+	 * Since we cannot rely on Java 6 we have to reimplement the <code>Service</code>
functionality.
+	 * </p>
+	 *
+	 * @author Emmanuel Bernard
+	 * @author Hardy Ferentschik
+	 */
+	private static class DefaultValidationProviderResolver implements ValidationProviderResolver
{
+
+		//cache per classloader for an appropriate discovery
+		//keep them in a weak hashmap to avoid memory leaks and allow proper hot redeployment
+		//TODO use a WeakConcurrentHashMap
+		//FIXME The List<VP> does keep a strong reference to the key ClassLoader, use the
same model as JPA CachingPersistenceProviderResolver
+		private static final Map<ClassLoader, List<ValidationProvider<?>>> providersPerClassloader
=
+				new WeakHashMap<ClassLoader, List<ValidationProvider<?>>>();
+
+		private static final String SERVICES_FILE = "META-INF/services/" + ValidationProvider.class.getName();
+
+		public List<ValidationProvider<?>> getValidationProviders() {
+			ClassLoader classloader = GetClassLoader.fromContext();
+			if ( classloader == null ) {
+				classloader = GetClassLoader.fromClass( DefaultValidationProviderResolver.class );
+			}
+
+			List<ValidationProvider<?>> providers;
+			synchronized ( providersPerClassloader ) {
+				providers = providersPerClassloader.get( classloader );
+			}
+
+			if ( providers == null ) {
+				providers = new ArrayList<ValidationProvider<?>>();
+				try {
+					// If we are deployed into an OSGi environment, leverage it
+					Class<? extends ValidationProvider> providerClass = org.apache.servicemix.specs.locator.OsgiLocator.locate(ValidationProvider.class);
+					if (providerClass != null) {
+						providers.add(providerClass.newInstance());
+					}
+				} catch (Throwable e) {
+					// Do nothing here
+				} 
+				String name = null;
+				try {
+					Enumeration<URL> providerDefinitions = classloader.getResources( SERVICES_FILE
);
+					while ( providerDefinitions.hasMoreElements() ) {
+						URL url = providerDefinitions.nextElement();
+						InputStream stream = url.openStream();
+						try {
+							BufferedReader reader = new BufferedReader( new InputStreamReader( stream ), 100 );
+							name = reader.readLine();
+							while ( name != null ) {
+								name = name.trim();
+								if ( !name.startsWith( "#" ) ) {
+									final Class<?> providerClass = loadClass(
+											name,
+											DefaultValidationProviderResolver.class
+									);
+
+									providers.add(
+											( ValidationProvider ) providerClass.newInstance()
+									);
+								}
+								name = reader.readLine();
+							}
+						}
+						finally {
+							stream.close();
+						}
+					}
+				}
+				catch ( IOException e ) {
+					throw new ValidationException( "Unable to read " + SERVICES_FILE, e );
+				}
+				catch ( ClassNotFoundException e ) {
+					//TODO is it better to not fail the whole loading because of a black sheep?
+					throw new ValidationException( "Unable to load Bean Validation provider " + name, e
);
+				}
+				catch ( IllegalAccessException e ) {
+					throw new ValidationException( "Unable to instanciate Bean Validation provider" + name,
e );
+				}
+				catch ( InstantiationException e ) {
+					throw new ValidationException( "Unable to instanciate Bean Validation provider" + name,
e );
+				}
+
+				synchronized ( providersPerClassloader ) {
+					providersPerClassloader.put( classloader, providers );
+				}
+			}
+
+			return providers;
+		}
+
+		private static Class<?> loadClass(String name, Class<?> caller) throws ClassNotFoundException
{
+			try {
+				//try context classloader, if fails try caller classloader
+				ClassLoader loader = GetClassLoader.fromContext();
+				if ( loader != null ) {
+					return loader.loadClass( name );
+				}
+			}
+			catch ( ClassNotFoundException e ) {
+				//trying caller classloader
+				if ( caller == null ) {
+					throw e;
+				}
+			}
+			return Class.forName( name, true, GetClassLoader.fromClass( caller ) );
+		}
+	}
+
+	private static class GetClassLoader implements PrivilegedAction<ClassLoader> {
+		private final Class<?> clazz;
+
+		public static ClassLoader fromContext() {
+			final GetClassLoader action = new GetClassLoader( null );
+			if ( System.getSecurityManager() != null ) {
+				return AccessController.doPrivileged( action );
+			}
+			else {
+				return action.run();
+			}
+		}
+
+		public static ClassLoader fromClass(Class<?> clazz) {
+			if ( clazz == null ) {
+				throw new IllegalArgumentException( "Class is null" );
+			}
+			final GetClassLoader action = new GetClassLoader( clazz );
+			if ( System.getSecurityManager() != null ) {
+				return AccessController.doPrivileged( action );
+			}
+			else {
+				return action.run();
+			}
+		}
+
+		private GetClassLoader(Class<?> clazz) {
+			this.clazz = clazz;
+		}
+
+		public ClassLoader run() {
+			if ( clazz != null ) {
+				return clazz.getClassLoader();
+			}
+			else {
+				return Thread.currentThread().getContextClassLoader();
+			}
+		}
+	}
+}
+

Modified: servicemix/smx4/specs/trunk/pom.xml
URL: http://svn.apache.org/viewvc/servicemix/smx4/specs/trunk/pom.xml?rev=1554369&r1=1554368&r2=1554369&view=diff
==============================================================================
--- servicemix/smx4/specs/trunk/pom.xml (original)
+++ servicemix/smx4/specs/trunk/pom.xml Tue Dec 31 06:17:11 2013
@@ -69,6 +69,7 @@
         <module>java-persistence-api-1.1.1</module>
         <module>java-persistence-api-2.0</module>
         <module>jsr303-api-1.0.0</module>
+        <module>jsr303-api-1.1.0</module>
         <module>jcr-api-2.0</module>
         <module>assembly</module>
     </modules>



Mime
View raw message