Author: markt Date: Mon Mar 25 15:01:41 2013 New Revision: 1460700 URL: http://svn.apache.org/r1460700 Log: Fix https://issues.apache.org/bugzilla/show_bug.cgi?id=54740 Update SCI scan to reflect changes in spec
Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java Modified: tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java URL: http://svn.apache.org/viewvc/tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java?rev=1460700&r1=1460699&r2=1460700&view=diff ============================================================================== --- tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java (original) +++ tomcat/trunk/java/org/apache/tomcat/websocket/server/WsSci.java Mon Mar 25 15:01:41 2013 @@ -16,6 +16,7 @@ */ package org.apache.tomcat.websocket.server; +import java.lang.reflect.Modifier; import java.util.HashSet; import java.util.Set; @@ -36,7 +37,7 @@ import javax.websocket.server.ServerEndp * server. */ @HandlesTypes({ServerEndpoint.class, ServerEndpointConfig.class, - ServerApplicationConfig.class}) + Endpoint.class}) public class WsSci implements ServletContainerInitializer { @Override @@ -51,7 +52,6 @@ public class WsSci implements ServletCon // Group the discovered classes by type Set<ServerApplicationConfig> serverApplicationConfigs = new HashSet<>(); - Set<ServerEndpointConfig> scannedEndpointConfigs = new HashSet<>(); Set<Class<? extends Endpoint>> scannedEndpointClazzes = new HashSet<>(); Set<Class<?>> scannedPojoEndpoints = new HashSet<>(); @@ -60,6 +60,12 @@ public class WsSci implements ServletCon String wsPackage = ContainerProvider.class.getName(); wsPackage = wsPackage.substring(0, wsPackage.lastIndexOf('.') + 1); for (Class<?> clazz : clazzes) { + int modifiers = clazz.getModifiers(); + if (!Modifier.isPublic(clazz.getModifiers()) || + Modifier.isAbstract(modifiers)) { + // Non-public or abstract - skip it. + continue; + } // Protect against scanning the WebSocket API JARs if (clazz.getName().startsWith(wsPackage)) { continue; @@ -68,14 +74,11 @@ public class WsSci implements ServletCon serverApplicationConfigs.add( (ServerApplicationConfig) clazz.newInstance()); } - if (ServerEndpointConfig.class.isAssignableFrom(clazz)) { + if (Endpoint.class.isAssignableFrom(clazz)) { @SuppressWarnings("unchecked") - Class<? extends ServerEndpointConfig> configClazz = - (Class<? extends ServerEndpointConfig>) clazz; - ServerEndpointConfig config = configClazz.newInstance(); - scannedEndpointConfigs.add(config); - scannedEndpointClazzes.add( - (Class<? extends Endpoint>) config.getEndpointClass()); + Class<? extends Endpoint> endpoint = + (Class<? extends Endpoint>) clazz; + scannedEndpointClazzes.add(endpoint); } if (clazz.isAnnotationPresent(ServerEndpoint.class)) { scannedPojoEndpoints.add(clazz); @@ -90,7 +93,6 @@ public class WsSci implements ServletCon Set<Class<?>> filteredPojoEndpoints = new HashSet<>(); if (serverApplicationConfigs.isEmpty()) { - filteredEndpointConfigs.addAll(scannedEndpointConfigs); filteredPojoEndpoints.addAll(scannedPojoEndpoints); } else { for (ServerApplicationConfig config : serverApplicationConfigs) { --------------------------------------------------------------------- To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org For additional commands, e-mail: dev-h...@tomcat.apache.org