Hi,
When I ran modules/config's unit tests, I got the following exception
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running org.glassfish.grizzly.config.PUGrizzlyConfigTest
2012. 5. 21 ???? 5:11:16 org.glassfish.grizzly.config.Utils newInstance
???: Instance could not be initialized. Class=interface
org.glassfish.grizzly.filterchain.Filter, name=websockets,
realClassName=org.glassfish.grizzly.websockets.WebSocketFilter
2012. 5. 21 ???? 5:11:16 org.glassfish.grizzly.config.GenericGrizzlyListener
configureSubProtocol
???: Can not initialize sub protocol. Finder:
org.glassfish.grizzly.config.portunif.HttpProtocolFinder
java.lang.NullPointerException
at
org.glassfish.grizzly.filterchain.AbstractFilterChain.notifyConstructed(Abst
ractFilterChain.java:114)
at
org.glassfish.grizzly.filterchain.FilterChainBuilder$StatelessFilterChainBui
lder.build(FilterChainBuilder.java:145)
at
org.glassfish.grizzly.config.GenericGrizzlyListener.configureSubProtocol(Gen
ericGrizzlyListener.java:355)
at
org.glassfish.grizzly.config.GenericGrizzlyListener.configureProtocol(Generi
cGrizzlyListener.java:292)
at
org.glassfish.grizzly.config.GenericGrizzlyListener.configure(GenericGrizzly
Listener.java:232)
at
org.glassfish.grizzly.config.GrizzlyConfig.setupNetwork(GrizzlyConfig.java:8
1)
at
org.glassfish.grizzly.config.PUGrizzlyConfigTest.puConfig(PUGrizzlyConfigTes
t.java:69)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.
java:44)
at
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.j
ava:15)
at
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.ja
va:41)
at
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.jav
a:20)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.jav
a:76)
at
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.jav
a:50)
at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
at
org.apache.maven.surefire.junit4.JUnit4Provider.execute(JUnit4Provider.java:
228)
at
org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provide
r.java:134)
at
org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:1
13)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39
)
at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl
.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at
org.apache.maven.surefire.util.ReflectionUtils.invokeMethodWithArray(Reflect
ionUtils.java:189)
at
org.apache.maven.surefire.booter.ProviderFactory$ProviderProxy.invoke(Provid
erFactory.java:165)
at
org.apache.maven.surefire.booter.ProviderFactory.invokeProvider(ProviderFact
ory.java:85)
at
org.apache.maven.surefire.booter.ForkedBooter.runSuitesInProcess(ForkedBoote
r.java:103)
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:74)
It seems "WebSockets enabled by default"'s side-effect. :-)
I attached the simple patch.
===
---
../../../dev/grizzly2_git/modules/config/src/main/java/org/glassfish/grizzly
/config/GenericGrizzlyListener.java (revision
51afab3a2cd4a91584be3d23a8f6d7c4d14dd6c5)
+++
../../../dev/grizzly2_git/modules/config/src/main/java/org/glassfish/grizzly
/config/GenericGrizzlyListener.java (revision )
@@ -601,7 +601,7 @@
}
final int httpServerFilterIdx =
filterChainBuilder.indexOfType(HttpServerFilter.class);
- if (httpServerFilterIdx >= 0) {
+ if (httpServerFilterIdx >= 0 && f != null) {
// Insert the WebSocketFilter right after HttpCodecFilter
filterChainBuilder.add(httpServerFilterIdx, f);
}
===
Thanks!
Regards,
Bongjae Chang