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: [email protected]
For additional commands, e-mail: [email protected]