[jboss-remoting-commits] JBoss Remoting SVN: r5110 - remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/spi.
jboss-remoting-commits at lists.jboss.org
jboss-remoting-commits at lists.jboss.org
Thu Apr 30 22:17:24 EDT 2009
Author: david.lloyd at jboss.com
Date: 2009-04-30 22:17:23 -0400 (Thu, 30 Apr 2009)
New Revision: 5110
Modified:
remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/spi/SpiUtils.java
Log:
remove some duplicate code
Modified: remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/spi/SpiUtils.java
===================================================================
--- remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/spi/SpiUtils.java 2009-05-01 01:11:18 UTC (rev 5109)
+++ remoting3/trunk/jboss-remoting/src/main/java/org/jboss/remoting3/spi/SpiUtils.java 2009-05-01 02:17:23 UTC (rev 5110)
@@ -141,20 +141,8 @@
public static <T extends ConnectionHandler> ConnectionHandlerFactory connectionHandlerFactory(final Class<T> handlerClass) throws IllegalArgumentException {
return AccessController.doPrivileged(new PrivilegedAction<ConnectionHandlerFactory>() {
public ConnectionHandlerFactory run() {
- final Constructor<T> constructor;
- try {
- constructor = handlerClass.getConstructor(ConnectionHandler.class);
- } catch (NoSuchMethodException e) {
- throw new IllegalArgumentException("No valid constructor is present");
- }
- if ((handlerClass.getModifiers() & constructor.getModifiers() & Modifier.PUBLIC) == 0) {
- throw new IllegalArgumentException("Class or constructor is not public");
- }
- for (Class<?> exceptionType : constructor.getExceptionTypes()) {
- if (Exception.class.isAssignableFrom(exceptionType) && ! RuntimeException.class.isAssignableFrom(exceptionType)) {
- throw new IllegalArgumentException("Constructor may not throw checked exceptions");
- }
- }
+ final Constructor<T> constructor = getPutOneArgConstructor(ConnectionHandler.class, handlerClass);
+ checkForCheckedExceptions(constructor);
return new ConnectionHandlerFactory() {
public ConnectionHandler createInstance(final ConnectionHandler localConnectionHandler) {
return AccessController.doPrivileged(new PrivilegedAction<ConnectionHandler>() {
@@ -176,6 +164,19 @@
});
}
+ private static <T> Constructor<T> getPutOneArgConstructor(final Class<?> argType, final Class<T> targetClass) {
+ final Constructor<T> constructor;
+ try {
+ constructor = targetClass.getConstructor(argType);
+ } catch (NoSuchMethodException e) {
+ throw new IllegalArgumentException("No valid constructor is present");
+ }
+ if ((targetClass.getModifiers() & constructor.getModifiers() & Modifier.PUBLIC) == 0) {
+ throw new IllegalArgumentException("Class or constructor is not public");
+ }
+ return constructor;
+ }
+
/**
* Create a connection provider factory for a public class which implements {@code ConnectionProvider} and has a
* public constructor which accepts a {@code ConnectionProviderContext} as its sole parameter.
@@ -188,20 +189,8 @@
public static <T extends ConnectionProvider> ConnectionProviderFactory connectionProviderFactory(final Class<T> providerClass) throws IllegalArgumentException {
return AccessController.doPrivileged(new PrivilegedAction<ConnectionProviderFactory>() {
public ConnectionProviderFactory run() {
- final Constructor<T> constructor;
- try {
- constructor = providerClass.getConstructor(ConnectionProviderContext.class);
- } catch (NoSuchMethodException e) {
- throw new IllegalArgumentException("No valid constructor is present");
- }
- if ((providerClass.getModifiers() & constructor.getModifiers() & Modifier.PUBLIC) == 0) {
- throw new IllegalArgumentException("Class or constructor is not public");
- }
- for (Class<?> exceptionType : constructor.getExceptionTypes()) {
- if (Exception.class.isAssignableFrom(exceptionType) && ! RuntimeException.class.isAssignableFrom(exceptionType)) {
- throw new IllegalArgumentException("Constructor may not throw checked exceptions");
- }
- }
+ final Constructor<T> constructor = getPutOneArgConstructor(ConnectionProviderContext.class, providerClass);
+ checkForCheckedExceptions(constructor);
return new ConnectionProviderFactory() {
public ConnectionProvider createInstance(final ConnectionProviderContext context) {
return AccessController.doPrivileged(new PrivilegedAction<ConnectionProvider>() {
@@ -223,6 +212,14 @@
});
}
+ private static void checkForCheckedExceptions(final Constructor<?> constructor) {
+ for (Class<?> exceptionType : constructor.getExceptionTypes()) {
+ if (! Error.class.isAssignableFrom(exceptionType) && ! RuntimeException.class.isAssignableFrom(exceptionType)) {
+ throw new IllegalArgumentException("Constructor may not throw checked exceptions");
+ }
+ }
+ }
+
/**
* Get a remote request context that simply ignores a cancel request.
*
More information about the jboss-remoting-commits
mailing list