Salut,
actually I've found a way to make it works. But I'm a little worried to
change http-util to util...but I do agree it looks weird.
A+
-- Jeanfrancois
Jeanfrancois Arcand wrote:
> Salut,
>
>
> Oleksiy Stashok wrote:
>>>
>>> Oleksiy Stashok wrote:
>>>> Hi,
>>>> +1
>>>> (though I'd prefer http-utils'es package to be renamed to
>>>> com.sun.grizzly.http.utils, but we really have a lot of dependencies
>>>> on it)
>>>
>>> One alternative would consist of moving the
>>> grizzly/com.sun.grizzly.util classes under the http-util package, and
>>> add that small dependencies to the grizzly modules. This way no
>>> package change.
>>>
>>> In short:
>>>
>>> + move util from grizzly to http-util (we can eventually rename that
>>> module)
>>> + change the build order (first build http-util, then framework)
>>> + The maven bundle plugs in can filter the extra classes so the
>>> framework module stay small
>>>
>>> What do you think? That way no backward compatibility issues.
>> Ok, I agree. But for sure we have to rename http-utils in that case.
>
> I was too optimistic. We seems to have dependencies in util to "core".
> Looking at it....
>
> A+
>
> -- jeanfrancois
>
>>
>> WBR,
>> Alexey.
>>
>>>
>>>
>>> A+
>>>
>>> -- Jeanfrancois
>>>
>>>
>>>> Thanks.
>>>> WBR,
>>>> Alexey.
>>>> On Dec 19, 2008, at 5:51 , Jeanfrancois Arcand wrote:
>>>>> Hi,
>>>>>
>>>>> we currently have a split package that prevent us supporting OSGi
>>>>> properly (we know that for awhile, but thanks to Hubert, it very
>>>>> simple test case helped me isolating the issue).
>>>>>
>>>>> Mainly, module grizzly has:
>>>>>
>>>>> com.sun.grizzly.util
>>>>>
>>>>>
>>>>> module http-util has:
>>>>>
>>>>> com.sun.grizzly.util
>>>>>
>>>>> Since http-util is, IMO, more used that other, I would like to
>>>>> propose we rename the package in trunk/modules/grizzly to:
>>>>>
>>>>> com.sun.grizzly.misc
>>>>>
>>>>> (or any better name)
>>>>>
>>>>> With that changes, OSGi works like a charm. I'm attaching the diff.
>>>>>
>>>>> That will breaks backward compatibility, but I guess we don't have
>>>>> choice.
>>>>>
>>>>> A+
>>>>>
>>>>> -- Jeanfrancois
>>>>> Index:
>>>>> modules/http/src/test/java/com/sun/grizzly/http/utils/EchoStreamAlgorithm.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/test/java/com/sun/grizzly/http/utils/EchoStreamAlgorithm.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/test/java/com/sun/grizzly/http/utils/EchoStreamAlgorithm.java
>>>>> (working copy)
>>>>> @@ -40,8 +40,8 @@
>>>>>
>>>>> import com.sun.grizzly.http.SelectorThread;
>>>>> import com.sun.grizzly.standalone.StaticStreamAlgorithm;
>>>>> -import com.sun.grizzly.util.OutputWriter;
>>>>> -import com.sun.grizzly.util.SSLOutputWriter;
>>>>> +import com.sun.grizzly.misc.OutputWriter;
>>>>> +import com.sun.grizzly.misc.SSLOutputWriter;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> import java.util.logging.Level;
>>>>> Index:
>>>>> modules/http/src/test/java/com/sun/grizzly/http/utils/EmptyHttpStreamAlgorithm.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/test/java/com/sun/grizzly/http/utils/EmptyHttpStreamAlgorithm.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/test/java/com/sun/grizzly/http/utils/EmptyHttpStreamAlgorithm.java
>>>>> (working copy)
>>>>> @@ -40,8 +40,8 @@
>>>>>
>>>>> import com.sun.grizzly.http.SelectorThread;
>>>>> import com.sun.grizzly.standalone.StaticStreamAlgorithm;
>>>>> -import com.sun.grizzly.util.OutputWriter;
>>>>> -import com.sun.grizzly.util.SSLOutputWriter;
>>>>> +import com.sun.grizzly.misc.OutputWriter;
>>>>> +import com.sun.grizzly.misc.SSLOutputWriter;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> import java.util.concurrent.atomic.AtomicInteger;
>>>>> Index: modules/http/src/test/java/com/sun/grizzly/http/ArpSSLTest.java
>>>>> ===================================================================
>>>>> --- modules/http/src/test/java/com/sun/grizzly/http/ArpSSLTest.java
>>>>> (revision 2047)
>>>>> +++ modules/http/src/test/java/com/sun/grizzly/http/ArpSSLTest.java
>>>>> (working copy)
>>>>> @@ -48,7 +48,7 @@
>>>>> import com.sun.grizzly.tcp.OutputBuffer;
>>>>> import com.sun.grizzly.tcp.Request;
>>>>> import com.sun.grizzly.tcp.Response;
>>>>> -import com.sun.grizzly.util.ExtendedThreadPool;
>>>>> +import com.sun.grizzly.misc.ExtendedThreadPool;
>>>>> import com.sun.grizzly.util.buf.ByteChunk;
>>>>> import com.sun.grizzly.util.net.jsse.JSSEImplementation;
>>>>> import java.io.DataInputStream;
>>>>> Index:
>>>>> modules/http/src/test/java/com/sun/grizzly/http/SelectorThreadStatsTest.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/test/java/com/sun/grizzly/http/SelectorThreadStatsTest.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/test/java/com/sun/grizzly/http/SelectorThreadStatsTest.java
>>>>> (working copy)
>>>>> @@ -43,7 +43,7 @@
>>>>> import com.sun.grizzly.tcp.OutputBuffer;
>>>>> import com.sun.grizzly.tcp.Request;
>>>>> import com.sun.grizzly.tcp.Response;
>>>>> -import com.sun.grizzly.util.ExtendedThreadPool;
>>>>> +import com.sun.grizzly.misc.ExtendedThreadPool;
>>>>> import com.sun.grizzly.util.buf.ByteChunk;
>>>>> import java.io.BufferedReader;
>>>>> import java.io.DataInputStream;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/HttpWorkerThread.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/HttpWorkerThread.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/HttpWorkerThread.java
>>>>> (working copy)
>>>>> @@ -38,10 +38,10 @@
>>>>>
>>>>> package com.sun.grizzly.http;
>>>>>
>>>>> -import com.sun.grizzly.util.InputReader;
>>>>> -import com.sun.grizzly.util.WorkerThreadImpl;
>>>>> +import com.sun.grizzly.misc.InputReader;
>>>>> +import com.sun.grizzly.misc.WorkerThreadImpl;
>>>>>
>>>>> -import com.sun.grizzly.util.StreamAlgorithm;
>>>>> +import com.sun.grizzly.misc.StreamAlgorithm;
>>>>>
>>>>> /**
>>>>> * Specialized WorkerThread.
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/ProcessorTask.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/ProcessorTask.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/ProcessorTask.java
>>>>> (working copy)
>>>>> @@ -42,7 +42,7 @@
>>>>> import java.io.OutputStream;
>>>>> import java.net.Socket;
>>>>>
>>>>> -import com.sun.grizzly.util.Interceptor;
>>>>> +import com.sun.grizzly.misc.Interceptor;
>>>>>
>>>>> /**
>>>>> * Process HTTP request.
>>>>> Index: modules/http/src/main/java/com/sun/grizzly/http/FileCache.java
>>>>> ===================================================================
>>>>> --- modules/http/src/main/java/com/sun/grizzly/http/FileCache.java
>>>>> (revision 2047)
>>>>> +++ modules/http/src/main/java/com/sun/grizzly/http/FileCache.java
>>>>> (working copy)
>>>>> @@ -38,8 +38,8 @@
>>>>>
>>>>> package com.sun.grizzly.http;
>>>>>
>>>>> -import com.sun.grizzly.util.OutputWriter;
>>>>> -import com.sun.grizzly.util.WorkerThreadImpl;
>>>>> +import com.sun.grizzly.misc.OutputWriter;
>>>>> +import com.sun.grizzly.misc.WorkerThreadImpl;
>>>>> import java.io.File;
>>>>> import java.io.FileInputStream;
>>>>> import java.io.IOException;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/HttpProtocolChain.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/HttpProtocolChain.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/HttpProtocolChain.java
>>>>> (working copy)
>>>>> @@ -40,7 +40,7 @@
>>>>> import com.sun.grizzly.Context;
>>>>> import com.sun.grizzly.DefaultProtocolChain;
>>>>> import com.sun.grizzly.rcm.ResourceAllocationFilter;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import java.nio.ByteBuffer;
>>>>>
>>>>> /**
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SelectorThreadHandler.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SelectorThreadHandler.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SelectorThreadHandler.java
>>>>> (working copy)
>>>>> @@ -38,7 +38,7 @@
>>>>> package com.sun.grizzly.http;
>>>>>
>>>>> import com.sun.grizzly.TCPSelectorHandler;
>>>>> -import com.sun.grizzly.util.Copyable;
>>>>> +import com.sun.grizzly.misc.Copyable;
>>>>> import java.io.IOException;
>>>>> import java.nio.channels.SelectableChannel;
>>>>> import java.nio.channels.SocketChannel;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/DefaultProcessorTask.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/DefaultProcessorTask.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/DefaultProcessorTask.java
>>>>> (working copy)
>>>>> @@ -84,10 +84,10 @@
>>>>> import com.sun.grizzly.tcp.http11.filters.VoidInputFilter;
>>>>> import com.sun.grizzly.tcp.http11.filters.VoidOutputFilter;
>>>>> import com.sun.grizzly.tcp.http11.filters.BufferedInputFilter;
>>>>> -import com.sun.grizzly.util.InputReader;
>>>>> -import com.sun.grizzly.util.Interceptor;
>>>>> +import com.sun.grizzly.misc.InputReader;
>>>>> +import com.sun.grizzly.misc.Interceptor;
>>>>>
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import com.sun.grizzly.util.buf.Ascii;
>>>>> import com.sun.grizzly.util.buf.ByteChunk;
>>>>> import com.sun.grizzly.util.buf.HexUtils;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SelectorThread.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SelectorThread.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SelectorThread.java
>>>>> (working copy)
>>>>> @@ -53,7 +53,7 @@
>>>>> import com.sun.grizzly.portunif.ProtocolFinder;
>>>>> import com.sun.grizzly.portunif.ProtocolHandler;
>>>>> import com.sun.grizzly.rcm.ResourceAllocationFilter;
>>>>> -import com.sun.grizzly.util.SelectorFactory;
>>>>> +import com.sun.grizzly.misc.SelectorFactory;
>>>>>
>>>>> import java.io.IOException;
>>>>> import java.net.InetAddress;
>>>>> @@ -70,7 +70,7 @@
>>>>> import com.sun.grizzly.tcp.Adapter;
>>>>> import com.sun.grizzly.tcp.RequestGroupInfo;
>>>>> import com.sun.grizzly.tcp.http11.GrizzlyAdapter;
>>>>> -import com.sun.grizzly.util.ExtendedThreadPool;
>>>>> +import com.sun.grizzly.misc.ExtendedThreadPool;
>>>>> import com.sun.grizzly.util.IntrospectionUtils;
>>>>>
>>>>> import com.sun.grizzly.util.LoggerUtils;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/DefaultProtocolFilter.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/DefaultProtocolFilter.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/DefaultProtocolFilter.java
>>>>> (working copy)
>>>>> @@ -43,9 +43,9 @@
>>>>> import com.sun.grizzly.ProtocolFilter;
>>>>> import com.sun.grizzly.http.algorithms.NoParsingAlgorithm;
>>>>> import com.sun.grizzly.rcm.ResourceAllocationFilter;
>>>>> -import com.sun.grizzly.util.InputReader;
>>>>> -import com.sun.grizzly.util.Interceptor;
>>>>> -import com.sun.grizzly.util.StreamAlgorithm;
>>>>> +import com.sun.grizzly.misc.InputReader;
>>>>> +import com.sun.grizzly.misc.Interceptor;
>>>>> +import com.sun.grizzly.misc.StreamAlgorithm;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> import java.nio.channels.SelectionKey;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SelectorThreadKeyHandler.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SelectorThreadKeyHandler.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SelectorThreadKeyHandler.java
>>>>> (working copy)
>>>>> @@ -41,9 +41,9 @@
>>>>> import com.sun.grizzly.DefaultSelectionKeyHandler;
>>>>> import com.sun.grizzly.tcp.Response;
>>>>> import com.sun.grizzly.tcp.Response.ResponseAttachment;
>>>>> -import com.sun.grizzly.util.Copyable;
>>>>> -import com.sun.grizzly.util.SelectionKeyAttachment;
>>>>> -import com.sun.grizzly.util.ThreadAttachment;
>>>>> +import com.sun.grizzly.misc.Copyable;
>>>>> +import com.sun.grizzly.misc.SelectionKeyAttachment;
>>>>> +import com.sun.grizzly.misc.ThreadAttachment;
>>>>> import java.nio.channels.SelectionKey;
>>>>> import java.util.Iterator;
>>>>> import java.util.concurrent.ConcurrentLinkedQueue;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/StatsThreadPool.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/StatsThreadPool.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/StatsThreadPool.java
>>>>> (working copy)
>>>>> @@ -37,7 +37,7 @@
>>>>> */
>>>>> package com.sun.grizzly.http;
>>>>>
>>>>> -import com.sun.grizzly.util.DefaultThreadPool;
>>>>> +import com.sun.grizzly.misc.DefaultThreadPool;
>>>>> import java.util.concurrent.ThreadFactory;
>>>>> import java.util.concurrent.TimeUnit;
>>>>>
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/portunif/HttpProtocolHandler.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/portunif/HttpProtocolHandler.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/portunif/HttpProtocolHandler.java
>>>>> (working copy)
>>>>> @@ -41,7 +41,7 @@
>>>>> import com.sun.grizzly.Context;
>>>>> import com.sun.grizzly.portunif.PUProtocolRequest;
>>>>> import com.sun.grizzly.portunif.ProtocolHandler;
>>>>> -import com.sun.grizzly.util.Utils;
>>>>> +import com.sun.grizzly.misc.Utils;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> import java.nio.channels.SelectionKey;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/portunif/HttpRedirector.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/portunif/HttpRedirector.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/portunif/HttpRedirector.java
>>>>> (working copy)
>>>>> @@ -41,8 +41,8 @@
>>>>> import com.sun.grizzly.Context;
>>>>> import com.sun.grizzly.portunif.PUProtocolRequest;
>>>>> import com.sun.grizzly.ssl.SSLSelectorThread;
>>>>> -import com.sun.grizzly.util.OutputWriter;
>>>>> -import com.sun.grizzly.util.SSLOutputWriter;
>>>>> +import com.sun.grizzly.misc.OutputWriter;
>>>>> +import com.sun.grizzly.misc.SSLOutputWriter;
>>>>> import com.sun.grizzly.util.buf.Ascii;
>>>>> import java.io.IOException;
>>>>> import java.net.InetAddress;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/algorithms/ContentLengthAlgorithm.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/algorithms/ContentLengthAlgorithm.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/algorithms/ContentLengthAlgorithm.java
>>>>> (working copy)
>>>>> @@ -54,7 +54,7 @@
>>>>> package com.sun.grizzly.http.algorithms;
>>>>>
>>>>> import com.sun.grizzly.http.Constants;
>>>>> -import com.sun.grizzly.util.Interceptor;
>>>>> +import com.sun.grizzly.misc.Interceptor;
>>>>> import com.sun.grizzly.http.SelectorThread;
>>>>>
>>>>> import java.nio.ByteBuffer;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/algorithms/NoParsingAlgorithm.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/algorithms/NoParsingAlgorithm.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/algorithms/NoParsingAlgorithm.java
>>>>> (working copy)
>>>>> @@ -38,7 +38,7 @@
>>>>>
>>>>> package com.sun.grizzly.http.algorithms;
>>>>>
>>>>> -import com.sun.grizzly.util.Interceptor;
>>>>> +import com.sun.grizzly.misc.Interceptor;
>>>>> import java.nio.ByteBuffer;
>>>>>
>>>>>
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/algorithms/StateMachineAlgorithm.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/algorithms/StateMachineAlgorithm.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/algorithms/StateMachineAlgorithm.java
>>>>> (working copy)
>>>>> @@ -37,7 +37,7 @@
>>>>> */
>>>>> package com.sun.grizzly.http.algorithms;
>>>>>
>>>>> -import com.sun.grizzly.util.Interceptor;
>>>>> +import com.sun.grizzly.misc.Interceptor;
>>>>> import com.sun.grizzly.http.SelectorThread;
>>>>>
>>>>> import java.nio.ByteBuffer;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/algorithms/StreamAlgorithmBase.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/algorithms/StreamAlgorithmBase.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/algorithms/StreamAlgorithmBase.java
>>>>> (working copy)
>>>>> @@ -38,9 +38,9 @@
>>>>>
>>>>> package com.sun.grizzly.http.algorithms;
>>>>>
>>>>> -import com.sun.grizzly.util.Interceptor;
>>>>> -import com.sun.grizzly.util.StreamAlgorithm;
>>>>> -import com.sun.grizzly.util.ByteBufferFactory;
>>>>> +import com.sun.grizzly.misc.Interceptor;
>>>>> +import com.sun.grizzly.misc.StreamAlgorithm;
>>>>> +import com.sun.grizzly.misc.ByteBufferFactory;
>>>>> import java.io.IOException;
>>>>>
>>>>> import java.nio.ByteBuffer;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/ThreadPoolStatistic.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/ThreadPoolStatistic.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/ThreadPoolStatistic.java
>>>>> (working copy)
>>>>> @@ -38,8 +38,8 @@
>>>>>
>>>>> package com.sun.grizzly.http;
>>>>>
>>>>> -import com.sun.grizzly.util.ExtendedThreadPool;
>>>>> -import com.sun.grizzly.util.WorkerThreadImpl;
>>>>> +import com.sun.grizzly.misc.ExtendedThreadPool;
>>>>> +import com.sun.grizzly.misc.WorkerThreadImpl;
>>>>> import java.util.concurrent.ConcurrentHashMap;
>>>>> import java.util.concurrent.ExecutorService;
>>>>> import java.util.concurrent.Future;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SocketChannelOutputBuffer.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SocketChannelOutputBuffer.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SocketChannelOutputBuffer.java
>>>>> (working copy)
>>>>> @@ -48,10 +48,10 @@
>>>>> import java.nio.ByteBuffer;
>>>>> import java.nio.channels.FileChannel;
>>>>> import java.nio.channels.SocketChannel;
>>>>> -import com.sun.grizzly.util.OutputWriter;
>>>>> +import com.sun.grizzly.misc.OutputWriter;
>>>>> import com.sun.grizzly.tcp.Response;
>>>>> import com.sun.grizzly.tcp.http11.InternalOutputBuffer;
>>>>> -import com.sun.grizzly.util.ByteBufferFactory;
>>>>> +import com.sun.grizzly.misc.ByteBufferFactory;
>>>>> import java.nio.channels.Channel;
>>>>> import java.nio.channels.SelectionKey;
>>>>> import java.nio.channels.WritableByteChannel;
>>>>> Index: modules/http/src/main/java/com/sun/grizzly/http/TaskBase.java
>>>>> ===================================================================
>>>>> --- modules/http/src/main/java/com/sun/grizzly/http/TaskBase.java
>>>>> (revision 2047)
>>>>> +++ modules/http/src/main/java/com/sun/grizzly/http/TaskBase.java
>>>>> (working copy)
>>>>> @@ -46,7 +46,7 @@
>>>>> import java.util.logging.Level;
>>>>>
>>>>> import com.sun.grizzly.tcp.RequestGroupInfo;
>>>>> -import com.sun.grizzly.util.OutputWriter;
>>>>> +import com.sun.grizzly.misc.OutputWriter;
>>>>> import java.util.concurrent.ExecutorService;
>>>>>
>>>>> /**
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SelectorThreadConfig.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SelectorThreadConfig.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/http/SelectorThreadConfig.java
>>>>> (working copy)
>>>>> @@ -39,10 +39,10 @@
>>>>>
>>>>> import com.sun.grizzly.arp.AsyncHandler;
>>>>> import com.sun.grizzly.util.ClassLoaderUtil;
>>>>> -import com.sun.grizzly.util.ExtendedThreadPool;
>>>>> -import com.sun.grizzly.util.InputReader;
>>>>> -import com.sun.grizzly.util.OutputWriter;
>>>>> -import com.sun.grizzly.util.SelectorFactory;
>>>>> +import com.sun.grizzly.misc.ExtendedThreadPool;
>>>>> +import com.sun.grizzly.misc.InputReader;
>>>>> +import com.sun.grizzly.misc.OutputWriter;
>>>>> +import com.sun.grizzly.misc.SelectorFactory;
>>>>> import com.sun.grizzly.util.res.StringManager;
>>>>> import java.io.IOException;
>>>>> import java.util.StringTokenizer;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLAsyncProtocolFilter.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLAsyncProtocolFilter.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLAsyncProtocolFilter.java
>>>>> (working copy)
>>>>> @@ -42,9 +42,9 @@
>>>>> import com.sun.grizzly.arp.AsyncProtocolFilter;
>>>>> import com.sun.grizzly.http.HttpWorkerThread;
>>>>> import com.sun.grizzly.http.ProcessorTask;
>>>>> -import com.sun.grizzly.util.ByteBufferFactory;
>>>>> -import com.sun.grizzly.util.InputReader;
>>>>> -import com.sun.grizzly.util.Interceptor;
>>>>> +import com.sun.grizzly.misc.ByteBufferFactory;
>>>>> +import com.sun.grizzly.misc.InputReader;
>>>>> +import com.sun.grizzly.misc.Interceptor;
>>>>> import com.sun.grizzly.util.net.SSLImplementation;
>>>>> import com.sun.grizzly.util.net.SSLSupport;
>>>>> import java.io.InputStream;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLSelectorThreadHandler.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLSelectorThreadHandler.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLSelectorThreadHandler.java
>>>>> (working copy)
>>>>> @@ -40,8 +40,8 @@
>>>>> import com.sun.grizzly.SSLSelectorHandler;
>>>>> import com.sun.grizzly.http.SelectorThread;
>>>>> import java.nio.channels.SelectionKey;
>>>>> -import com.sun.grizzly.util.Copyable;
>>>>> -import com.sun.grizzly.util.SelectionKeyOP;
>>>>> +import com.sun.grizzly.misc.Copyable;
>>>>> +import com.sun.grizzly.misc.SelectionKeyOP;
>>>>> import java.nio.channels.ClosedChannelException;
>>>>>
>>>>> /**
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLAsyncOutputBuffer.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLAsyncOutputBuffer.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLAsyncOutputBuffer.java
>>>>> (working copy)
>>>>> @@ -40,7 +40,7 @@
>>>>>
>>>>> import com.sun.grizzly.http.SocketChannelOutputBuffer;
>>>>> import com.sun.grizzly.tcp.Response;
>>>>> -import com.sun.grizzly.util.SSLOutputWriter;
>>>>> +import com.sun.grizzly.misc.SSLOutputWriter;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> import java.nio.channels.SocketChannel;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLAsyncStream.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLAsyncStream.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLAsyncStream.java
>>>>> (working copy)
>>>>> @@ -38,8 +38,8 @@
>>>>>
>>>>> package com.sun.grizzly.ssl;
>>>>>
>>>>> -import com.sun.grizzly.util.InputReader;
>>>>> -import com.sun.grizzly.util.SSLUtils;
>>>>> +import com.sun.grizzly.misc.InputReader;
>>>>> +import com.sun.grizzly.misc.SSLUtils;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> import java.nio.channels.SocketChannel;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLOutputBuffer.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLOutputBuffer.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLOutputBuffer.java
>>>>> (working copy)
>>>>> @@ -40,7 +40,7 @@
>>>>>
>>>>> import com.sun.grizzly.http.SocketChannelOutputBuffer;
>>>>> import com.sun.grizzly.tcp.Response;
>>>>> -import com.sun.grizzly.util.SSLOutputWriter;
>>>>> +import com.sun.grizzly.misc.SSLOutputWriter;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> import java.nio.channels.SocketChannel;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLFileCacheFactory.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLFileCacheFactory.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLFileCacheFactory.java
>>>>> (working copy)
>>>>> @@ -41,7 +41,7 @@
>>>>> import com.sun.grizzly.http.FileCache;
>>>>> import com.sun.grizzly.http.FileCacheFactory;
>>>>> import com.sun.grizzly.http.FileCache.FileCacheEntry;
>>>>> -import com.sun.grizzly.util.SSLOutputWriter;
>>>>> +import com.sun.grizzly.misc.SSLOutputWriter;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> import java.nio.channels.SocketChannel;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLDefaultProtocolFilter.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLDefaultProtocolFilter.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/ssl/SSLDefaultProtocolFilter.java
>>>>> (working copy)
>>>>> @@ -41,7 +41,7 @@
>>>>> import com.sun.grizzly.http.DefaultProtocolFilter;
>>>>> import com.sun.grizzly.http.HttpWorkerThread;
>>>>> import com.sun.grizzly.http.ProcessorTask;
>>>>> -import com.sun.grizzly.util.Interceptor;
>>>>> +import com.sun.grizzly.misc.Interceptor;
>>>>> import com.sun.grizzly.util.net.SSLImplementation;
>>>>> import com.sun.grizzly.util.net.SSLSupport;
>>>>>
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/arp/AsyncProtocolFilter.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/arp/AsyncProtocolFilter.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/arp/AsyncProtocolFilter.java
>>>>> (working copy)
>>>>> @@ -44,13 +44,13 @@
>>>>> import com.sun.grizzly.http.HttpWorkerThread;
>>>>> import com.sun.grizzly.http.ProcessorTask;
>>>>> import com.sun.grizzly.http.SelectorThread;
>>>>> -import com.sun.grizzly.util.Interceptor;
>>>>> -import com.sun.grizzly.util.StreamAlgorithm;
>>>>> +import com.sun.grizzly.misc.Interceptor;
>>>>> +import com.sun.grizzly.misc.StreamAlgorithm;
>>>>> import com.sun.grizzly.http.TaskEvent;
>>>>> import com.sun.grizzly.http.TaskListener;
>>>>> import com.sun.grizzly.http.algorithms.NoParsingAlgorithm;
>>>>> -import com.sun.grizzly.util.ByteBufferFactory;
>>>>> -import com.sun.grizzly.util.InputReader;
>>>>> +import com.sun.grizzly.misc.ByteBufferFactory;
>>>>> +import com.sun.grizzly.misc.InputReader;
>>>>> import java.io.IOException;
>>>>> import java.io.InputStream;
>>>>> import java.nio.ByteBuffer;
>>>>> Index :
>>>>> modules/http/src/main/java/com/sun/grizzly/standalone/StaticHandler.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/standalone/StaticHandler.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/standalone/StaticHandler.java
>>>>> (working copy)
>>>>> @@ -40,7 +40,7 @@
>>>>>
>>>>> import com.sun.grizzly.http.Constants;
>>>>> import com.sun.grizzly.http.FileCacheFactory;
>>>>> -import com.sun.grizzly.util.Interceptor;
>>>>> +import com.sun.grizzly.misc.Interceptor;
>>>>> import com.sun.grizzly.http.FileCache;
>>>>> import com.sun.grizzly.http.SelectorThread;
>>>>> import java.io.IOException;
>>>>> Index:
>>>>> modules/http/src/main/java/com/sun/grizzly/standalone/StaticStreamAlgorithm.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/http/src/main/java/com/sun/grizzly/standalone/StaticStreamAlgorithm.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/http/src/main/java/com/sun/grizzly/standalone/StaticStreamAlgorithm.java
>>>>> (working copy)
>>>>> @@ -38,7 +38,7 @@
>>>>>
>>>>> package com.sun.grizzly.standalone;
>>>>>
>>>>> -import com.sun.grizzly.util.Interceptor;
>>>>> +import com.sun.grizzly.misc.Interceptor;
>>>>> import com.sun.grizzly.http.algorithms.StreamAlgorithmBase;
>>>>> import java.nio.ByteBuffer;
>>>>>
>>>>> Index: modules/rcm/src/test/java/com/sun/grizzly/rcm/RCMTest.java
>>>>> ===================================================================
>>>>> --- modules/rcm/src/test/java/com/sun/grizzly/rcm/RCMTest.java
>>>>> (revision 2047)
>>>>> +++ modules/rcm/src/test/java/com/sun/grizzly/rcm/RCMTest.java
>>>>> (working copy)
>>>>> @@ -46,9 +46,9 @@
>>>>> import com.sun.grizzly.ProtocolChain;
>>>>> import com.sun.grizzly.ProtocolFilter;
>>>>> import com.sun.grizzly.TCPSelectorHandler;
>>>>> -import com.sun.grizzly.util.ByteBufferInputStream;
>>>>> -import com.sun.grizzly.util.OutputWriter;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.ByteBufferInputStream;
>>>>> +import com.sun.grizzly.misc.OutputWriter;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import java.io.BufferedReader;
>>>>> import java.io.InputStream;
>>>>> import java.io.InputStreamReader;
>>>>> Index:
>>>>> modules/rcm/src/main/java/com/sun/grizzly/rcm/ResourceAllocationFilter.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/rcm/src/main/java/com/sun/grizzly/rcm/ResourceAllocationFilter.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/rcm/src/main/java/com/sun/grizzly/rcm/ResourceAllocationFilter.java
>>>>> (working copy)
>>>>> @@ -44,12 +44,12 @@
>>>>> import com.sun.grizzly.ProtocolChainContextTask;
>>>>> import com.sun.grizzly.ProtocolParser;
>>>>> import com.sun.grizzly.filter.ParserProtocolFilter;
>>>>> -import com.sun.grizzly.util.ByteBufferFactory;
>>>>> -import com.sun.grizzly.util.ByteBufferInputStream;
>>>>> -import com.sun.grizzly.util.Cloner;
>>>>> -import com.sun.grizzly.util.DefaultThreadPool;
>>>>> -import com.sun.grizzly.util.ExtendedThreadPool;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.ByteBufferFactory;
>>>>> +import com.sun.grizzly.misc.ByteBufferInputStream;
>>>>> +import com.sun.grizzly.misc.Cloner;
>>>>> +import com.sun.grizzly.misc.DefaultThreadPool;
>>>>> +import com.sun.grizzly.misc.ExtendedThreadPool;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import java.io.IOException;
>>>>> import java.nio.BufferUnderflowException;
>>>>> import java.nio.ByteBuffer;
>>>>> Index:
>>>>> modules/portunif/src/test/java/com/sun/grizzly/portunif/SimpleProtocolHandler.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/portunif/src/test/java/com/sun/grizzly/portunif/SimpleProtocolHandler.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/portunif/src/test/java/com/sun/grizzly/portunif/SimpleProtocolHandler.java
>>>>> (working copy)
>>>>> @@ -40,11 +40,11 @@
>>>>>
>>>>> import com.sun.grizzly.Context;
>>>>> import com.sun.grizzly.Controller;
>>>>> -import com.sun.grizzly.util.OutputWriter;
>>>>> -import com.sun.grizzly.util.SSLOutputWriter;
>>>>> -import com.sun.grizzly.util.SelectionKeyAttachment;
>>>>> -import com.sun.grizzly.util.ThreadAttachment;
>>>>> -import com.sun.grizzly.util.Utils;
>>>>> +import com.sun.grizzly.misc.OutputWriter;
>>>>> +import com.sun.grizzly.misc.SSLOutputWriter;
>>>>> +import com.sun.grizzly.misc.SelectionKeyAttachment;
>>>>> +import com.sun.grizzly.misc.ThreadAttachment;
>>>>> +import com.sun.grizzly.misc.Utils;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> import java.nio.channels.SelectionKey;
>>>>> Index:
>>>>> modules/portunif/src/main/java/com/sun/grizzly/portunif/PUReadFilter.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/portunif/src/main/java/com/sun/grizzly/portunif/PUReadFilter.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/portunif/src/main/java/com/sun/grizzly/portunif/PUReadFilter.java
>>>>> (working copy)
>>>>> @@ -42,7 +42,7 @@
>>>>> import com.sun.grizzly.Controller;
>>>>> import com.sun.grizzly.ProtocolFilter;
>>>>> import com.sun.grizzly.filter.ReadFilter;
>>>>> -import com.sun.grizzly.util.Utils;
>>>>> +import com.sun.grizzly.misc.Utils;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> import java.nio.channels.SelectionKey;
>>>>> Index:
>>>>> modules/portunif/src/main/java/com/sun/grizzly/portunif/SSLFilterChainProtocolHandler.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/portunif/src/main/java/com/sun/grizzly/portunif/SSLFilterChainProtocolHandler.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/portunif/src/main/java/com/sun/grizzly/portunif/SSLFilterChainProtocolHandler.java
>>>>> (working copy)
>>>>> @@ -38,7 +38,7 @@
>>>>>
>>>>> package com.sun.grizzly.portunif;
>>>>>
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import java.nio.ByteBuffer;
>>>>>
>>>>> /**
>>>>> Index:
>>>>> modules/portunif/src/main/java/com/sun/grizzly/portunif/ProtocolRequestWorkerThreadAdapter.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/portunif/src/main/java/com/sun/grizzly/portunif/ProtocolRequestWorkerThreadAdapter.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/portunif/src/main/java/com/sun/grizzly/portunif/ProtocolRequestWorkerThreadAdapter.java
>>>>> (working copy)
>>>>> @@ -39,7 +39,7 @@
>>>>> package com.sun.grizzly.portunif;
>>>>>
>>>>> import com.sun.grizzly.Context;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import java.nio.ByteBuffer;
>>>>> import java.nio.channels.SelectableChannel;
>>>>> import java.nio.channels.SelectionKey;
>>>>> Index:
>>>>> modules/portunif/src/main/java/com/sun/grizzly/portunif/TLSPUPreProcessor.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/portunif/src/main/java/com/sun/grizzly/portunif/TLSPUPreProcessor.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/portunif/src/main/java/com/sun/grizzly/portunif/TLSPUPreProcessor.java
>>>>> (working copy)
>>>>> @@ -41,11 +41,11 @@
>>>>> import com.sun.grizzly.Context;
>>>>> import com.sun.grizzly.Controller;
>>>>> import com.sun.grizzly.SSLConfig;
>>>>> -import com.sun.grizzly.util.SSLUtils;
>>>>> -import com.sun.grizzly.util.SelectionKeyAttachment;
>>>>> -import com.sun.grizzly.util.ThreadAttachment;
>>>>> -import com.sun.grizzly.util.ThreadAttachment.Mode;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.SSLUtils;
>>>>> +import com.sun.grizzly.misc.SelectionKeyAttachment;
>>>>> +import com.sun.grizzly.misc.ThreadAttachment;
>>>>> +import com.sun.grizzly.misc.ThreadAttachment.Mode;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import java.io.EOFException;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> Index:
>>>>> modules/comet/src/main/java/com/sun/grizzly/comet/CometInputStream.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/comet/src/main/java/com/sun/grizzly/comet/CometInputStream.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/comet/src/main/java/com/sun/grizzly/comet/CometInputStream.java
>>>>> (working copy)
>>>>> @@ -38,7 +38,7 @@
>>>>>
>>>>> package com.sun.grizzly.comet;
>>>>>
>>>>> -import com.sun.grizzly.util.InputReader;
>>>>> +import com.sun.grizzly.misc.InputReader;
>>>>> import java.nio.ByteBuffer;
>>>>>
>>>>> /**
>>>>> Index:
>>>>> modules/comet/src/main/java/com/sun/grizzly/comet/CometWriter.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/comet/src/main/java/com/sun/grizzly/comet/CometWriter.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/comet/src/main/java/com/sun/grizzly/comet/CometWriter.java
>>>>> (working copy)
>>>>> @@ -37,7 +37,7 @@
>>>>> */
>>>>> package com.sun.grizzly.comet;
>>>>>
>>>>> -import com.sun.grizzly.util.OutputWriter;
>>>>> +import com.sun.grizzly.misc.OutputWriter;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> import java.nio.channels.SocketChannel;
>>>>> Index:
>>>>> modules/comet/src/main/java/com/sun/grizzly/comet/CometTask.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/comet/src/main/java/com/sun/grizzly/comet/CometTask.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/comet/src/main/java/com/sun/grizzly/comet/CometTask.java
>>>>> (working copy)
>>>>> @@ -43,9 +43,9 @@
>>>>> import com.sun.grizzly.NIOContext;
>>>>> import com.sun.grizzly.ProtocolChain;
>>>>> import com.sun.grizzly.http.SelectorThread;
>>>>> -import com.sun.grizzly.util.InputReader;
>>>>> +import com.sun.grizzly.misc.InputReader;
>>>>> import com.sun.grizzly.http.TaskBase;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> import java.nio.channels.SelectionKey;
>>>>> Index:
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/SSLAsyncQueueWriterTest.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/SSLAsyncQueueWriterTest.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/SSLAsyncQueueWriterTest.java
>>>>> (working copy)
>>>>> @@ -40,7 +40,7 @@
>>>>>
>>>>> import com.sun.grizzly.filter.SSLEchoAsyncWriteQueueFilter;
>>>>> import com.sun.grizzly.filter.SSLReadFilter;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import com.sun.grizzly.utils.ControllerUtils;
>>>>> import java.io.File;
>>>>> import java.io.IOException;
>>>>> Index:
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/TCPAsyncQueueReaderTest.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/TCPAsyncQueueReaderTest.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/TCPAsyncQueueReaderTest.java
>>>>> (working copy)
>>>>> @@ -42,7 +42,7 @@
>>>>> import com.sun.grizzly.async.AsyncQueueReadUnit;
>>>>> import com.sun.grizzly.filter.EchoAsyncWriteQueueFilter;
>>>>> import com.sun.grizzly.filter.ReadFilter;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import com.sun.grizzly.utils.ControllerUtils;
>>>>> import java.io.IOException;
>>>>> import java.net.InetSocketAddress;
>>>>> Index:
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/StateHolderTest.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/StateHolderTest.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/StateHolderTest.java
>>>>> (working copy)
>>>>> @@ -38,9 +38,9 @@
>>>>>
>>>>> package com.sun.grizzly;
>>>>>
>>>>> -import com.sun.grizzly.util.State;
>>>>> -import com.sun.grizzly.util.StateHolder;
>>>>> -import com.sun.grizzly.util.StateHolder.ConditionListener;
>>>>> +import com.sun.grizzly.misc.State;
>>>>> +import com.sun.grizzly.misc.StateHolder;
>>>>> +import com.sun.grizzly.misc.StateHolder.ConditionListener;
>>>>> import java.util.Arrays;
>>>>> import java.util.List;
>>>>> import java.util.Random;
>>>>> Index:
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/UDPAsyncQueueReaderTest.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/UDPAsyncQueueReaderTest.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/UDPAsyncQueueReaderTest.java
>>>>> (working copy)
>>>>> @@ -45,7 +45,7 @@
>>>>> import com.sun.grizzly.async.AsyncQueueReadUnit;
>>>>> import com.sun.grizzly.filter.EchoAsyncWriteQueueFilter;
>>>>> import com.sun.grizzly.filter.ReadFilter;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import com.sun.grizzly.utils.ControllerUtils;
>>>>> import java.io.IOException;
>>>>> import java.net.InetSocketAddress;
>>>>> Index:
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/RoundRobinSelectorHandlerTest.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/RoundRobinSelectorHandlerTest.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/RoundRobinSelectorHandlerTest.java
>>>>> (working copy)
>>>>> @@ -40,7 +40,7 @@
>>>>>
>>>>> import com.sun.grizzly.filter.ReadFilter;
>>>>> import com.sun.grizzly.filter.EchoFilter;
>>>>> -import com.sun.grizzly.util.DefaultThreadPool;
>>>>> +import com.sun.grizzly.misc.DefaultThreadPool;
>>>>> import com.sun.grizzly.utils.ControllerUtils;
>>>>> import com.sun.grizzly.utils.TCPIOClient;
>>>>> import java.io.IOException;
>>>>> Index:
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/TCPAsyncQueueWriterTest.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/TCPAsyncQueueWriterTest.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/TCPAsyncQueueWriterTest.java
>>>>> (working copy)
>>>>> @@ -40,7 +40,7 @@
>>>>>
>>>>> import com.sun.grizzly.filter.EchoAsyncWriteQueueFilter;
>>>>> import com.sun.grizzly.filter.ReadFilter;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import com.sun.grizzly.utils.ControllerUtils;
>>>>> import java.io.IOException;
>>>>> import java.net.InetSocketAddress;
>>>>> Index:
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/BaseSelectionKeyHandlerTest.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/BaseSelectionKeyHandlerTest.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/BaseSelectionKeyHandlerTest.java
>>>>> (working copy)
>>>>> @@ -40,7 +40,7 @@
>>>>>
>>>>> import com.sun.grizzly.filter.EchoFilter;
>>>>> import com.sun.grizzly.filter.ReadFilter;
>>>>> -import com.sun.grizzly.util.DefaultThreadPool;
>>>>> +import com.sun.grizzly.misc.DefaultThreadPool;
>>>>> import com.sun.grizzly.utils.ControllerUtils;
>>>>> import com.sun.grizzly.utils.TCPIOClient;
>>>>> import java.io.IOException;
>>>>> Index:
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/UDPAsyncQueueWriterTest.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/UDPAsyncQueueWriterTest.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/test/java/com/sun/grizzly/UDPAsyncQueueWriterTest.java
>>>>> (working copy)
>>>>> @@ -40,7 +40,7 @@
>>>>>
>>>>> import com.sun.grizzly.filter.EchoAsyncWriteQueueFilter;
>>>>> import com.sun.grizzly.filter.ReadFilter;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import com.sun.grizzly.utils.ControllerUtils;
>>>>> import java.io.IOException;
>>>>> import java.net.InetSocketAddress;
>>>>> Index:
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/TCPConnectorHandler.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/TCPConnectorHandler.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/TCPConnectorHandler.java
>>>>> (working copy)
>>>>> @@ -46,9 +46,9 @@
>>>>> import com.sun.grizzly.async.AsyncQueueWritable;
>>>>> import com.sun.grizzly.async.AsyncQueueWriteUnit;
>>>>> import com.sun.grizzly.async.ByteBufferCloner;
>>>>> -import com.sun.grizzly.util.DefaultThreadPool;
>>>>> -import com.sun.grizzly.util.InputReader;
>>>>> -import com.sun.grizzly.util.OutputWriter;
>>>>> +import com.sun.grizzly.misc.DefaultThreadPool;
>>>>> +import com.sun.grizzly.misc.InputReader;
>>>>> +import com.sun.grizzly.misc.OutputWriter;
>>>>> import java.io.IOException;
>>>>> import java.net.Socket;
>>>>> import java.net.SocketAddress;
>>>>> Index: modules/grizzly/src/main/java/com/sun/grizzly/ContextTask.java
>>>>> ===================================================================
>>>>> --- modules/grizzly/src/main/java/com/sun/grizzly/ContextTask.java
>>>>> (revision 2047)
>>>>> +++ modules/grizzly/src/main/java/com/sun/grizzly/ContextTask.java
>>>>> (working copy)
>>>>> @@ -38,7 +38,7 @@
>>>>>
>>>>> package com.sun.grizzly;
>>>>>
>>>>> -import com.sun.grizzly.util.ConcurrentLinkedQueuePool;
>>>>> +import com.sun.grizzly.misc.ConcurrentLinkedQueuePool;
>>>>> import java.util.concurrent.Callable;
>>>>>
>>>>> /**
>>>>> Index:
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/SelectorHandlerRunner.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/SelectorHandlerRunner.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/SelectorHandlerRunner.java
>>>>> (working copy)
>>>>> @@ -38,9 +38,9 @@
>>>>>
>>>>> package com.sun.grizzly;
>>>>>
>>>>> -import com.sun.grizzly.util.State;
>>>>> -import com.sun.grizzly.util.StateHolder;
>>>>> -import com.sun.grizzly.util.StateHolder.ConditionListener;
>>>>> +import com.sun.grizzly.misc.State;
>>>>> +import com.sun.grizzly.misc.StateHolder;
>>>>> +import com.sun.grizzly.misc.StateHolder.ConditionListener;
>>>>> import java.util.concurrent.CountDownLatch;
>>>>> import java.util.concurrent.TimeUnit;
>>>>>
>>>>> Index:
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/RoundRobinSelectorHandler.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/RoundRobinSelectorHandler.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/RoundRobinSelectorHandler.java
>>>>> (working copy)
>>>>> @@ -39,7 +39,7 @@
>>>>> package com.sun.grizzly;
>>>>>
>>>>> import com.sun.grizzly.Controller.Protocol;
>>>>> -import com.sun.grizzly.util.Copyable;
>>>>> +import com.sun.grizzly.misc.Copyable;
>>>>> import java.io.IOException;
>>>>> import java.nio.channels.SelectableChannel;
>>>>> import java.nio.channels.SelectionKey;
>>>>> Index:
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/suspendable/SuspendableFilter.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/suspendable/SuspendableFilter.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/suspendable/SuspendableFilter.java
>>>>> (working copy)
>>>>> @@ -44,10 +44,10 @@
>>>>> import com.sun.grizzly.Controller;
>>>>> import com.sun.grizzly.DefaultProtocolChain;
>>>>> import com.sun.grizzly.SelectorHandler;
>>>>> -import com.sun.grizzly.util.ThreadAttachment;
>>>>> -import com.sun.grizzly.util.ThreadAttachment.Mode;
>>>>> -import com.sun.grizzly.util.Utils;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.ThreadAttachment;
>>>>> +import com.sun.grizzly.misc.ThreadAttachment.Mode;
>>>>> +import com.sun.grizzly.misc.Utils;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> import java.nio.channels.SelectionKey;
>>>>> Index:
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/suspendable/SuspendableContextTask.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/suspendable/SuspendableContextTask.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/suspendable/SuspendableContextTask.java
>>>>> (working copy)
>>>>> @@ -39,8 +39,8 @@
>>>>>
>>>>> import com.sun.grizzly.DefaultProtocolChain;
>>>>> import com.sun.grizzly.SelectionKeyContextTask;
>>>>> -import com.sun.grizzly.util.ThreadAttachment;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.ThreadAttachment;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>>
>>>>> /**
>>>>> * Simple ContextTask used to resume a {_at_link ProtocolChain} execution
>>>>> Index:
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/UDPSelectorHandler.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/UDPSelectorHandler.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/UDPSelectorHandler.java
>>>>> (working copy)
>>>>> @@ -40,10 +40,10 @@
>>>>>
>>>>> import com.sun.grizzly.async.UDPAsyncQueueReader;
>>>>> import com.sun.grizzly.async.UDPAsyncQueueWriter;
>>>>> -import com.sun.grizzly.util.CallbackHandlerSelectionKeyAttachment;
>>>>> -import com.sun.grizzly.util.Copyable;
>>>>> -import com.sun.grizzly.util.SelectionKeyOP;
>>>>> -import com.sun.grizzly.util.State;
>>>>> +import com.sun.grizzly.misc.CallbackHandlerSelectionKeyAttachment;
>>>>> +import com.sun.grizzly.misc.Copyable;
>>>>> +import com.sun.grizzly.misc.SelectionKeyOP;
>>>>> +import com.sun.grizzly.misc.State;
>>>>> import java.io.IOException;
>>>>> import java.net.BindException;
>>>>> import java.net.DatagramSocket;
>>>>> Index:
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/SelectionKeyHandler.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/SelectionKeyHandler.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/SelectionKeyHandler.java
>>>>> (working copy)
>>>>> @@ -37,7 +37,7 @@
>>>>> */
>>>>> package com.sun.grizzly;
>>>>>
>>>>> -import com.sun.grizzly.util.Copyable;
>>>>> +import com.sun.grizzly.misc.Copyable;
>>>>> import java.nio.channels.ClosedChannelException;
>>>>> import java.nio.channels.SelectableChannel;
>>>>> import java.nio.channels.SelectionKey;
>>>>> Index:
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/UDPConnectorHandler.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/UDPConnectorHandler.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/UDPConnectorHandler.java
>>>>> (working copy)
>>>>> @@ -47,8 +47,8 @@
>>>>> import com.sun.grizzly.async.AsyncReadCallbackHandler;
>>>>> import com.sun.grizzly.async.AsyncReadCondition;
>>>>> import com.sun.grizzly.async.ByteBufferCloner;
>>>>> -import com.sun.grizzly.util.DefaultThreadPool;
>>>>> -import com.sun.grizzly.util.InputReader;
>>>>> +import com.sun.grizzly.misc.DefaultThreadPool;
>>>>> +import com.sun.grizzly.misc.InputReader;
>>>>> import java.io.IOException;
>>>>> import java.net.SocketAddress;
>>>>> import java.nio.ByteBuffer;
>>>>> Index:
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/DefaultSelectionKeyHandler.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/DefaultSelectionKeyHandler.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/DefaultSelectionKeyHandler.java
>>>>> (working copy)
>>>>> @@ -38,8 +38,8 @@
>>>>>
>>>>> package com.sun.grizzly;
>>>>>
>>>>> -import com.sun.grizzly.util.Copyable;
>>>>> -import com.sun.grizzly.util.SelectionKeyAttachment;
>>>>> +import com.sun.grizzly.misc.Copyable;
>>>>> +import com.sun.grizzly.misc.SelectionKeyAttachment;
>>>>> import java.nio.channels.ClosedChannelException;
>>>>> import java.nio.channels.SelectableChannel;
>>>>> import java.nio.channels.SelectionKey;
>>>>> Index:
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/connectioncache/server/CacheableSelectionKeyHandler.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/connectioncache/server/CacheableSelectionKeyHandler.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/connectioncache/server/CacheableSelectionKeyHandler.java
>>>>> (working copy)
>>>>> @@ -41,7 +41,7 @@
>>>>> import com.sun.grizzly.DefaultSelectionKeyHandler;
>>>>> import
>>>>> com.sun.grizzly.connectioncache.spi.transport.ConnectionCacheFactory;
>>>>> import
>>>>> com.sun.grizzly.connectioncache.spi.transport.InboundConnectionCache;
>>>>> -import com.sun.grizzly.util.Copyable;
>>>>> +import com.sun.grizzly.misc.Copyable;
>>>>> import java.nio.channels.SelectableChannel;
>>>>> import java.nio.channels.SelectionKey;
>>>>>
>>>>> Index:
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/ReadFilter.java
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/ReadFilter.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/ReadFilter.java
>>>>> (working copy)
>>>>> @@ -42,7 +42,7 @@
>>>>> import com.sun.grizzly.Context;
>>>>> import com.sun.grizzly.Controller;
>>>>> import com.sun.grizzly.ProtocolFilter;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import java.net.SocketAddress;
>>>>> import java.io.IOException;
>>>>> import java.nio.ByteBuffer;
>>>>> Index:
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/EchoAsyncWriteQueueFilter.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/EchoAsyncWriteQueueFilter.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/EchoAsyncWriteQueueFilter.java
>>>>> (working copy)
>>>>> @@ -42,8 +42,8 @@
>>>>> import com.sun.grizzly.Controller;
>>>>> import com.sun.grizzly.ProtocolFilter;
>>>>> import com.sun.grizzly.async.ByteBufferCloner;
>>>>> -import com.sun.grizzly.util.ByteBufferFactory;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.ByteBufferFactory;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import java.io.IOException;
>>>>> import java.net.SocketAddress;
>>>>> import java.nio.ByteBuffer;
>>>>> Index:
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/SSLReadFilter.java
>>>>>
>>>>> ===================================================================
>>>>> ---
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/SSLReadFilter.java
>>>>> (revision 2047)
>>>>> +++
>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/SSLReadFilter.java
>>>>> (working copy)
>>>>> @@ -42,11 +42,11 @@
>>>>> import com.sun.grizzly.Controller;
>>>>> import com.sun.grizzly.ProtocolFilter;
>>>>> import com.sun.grizzly.SSLConfig;
>>>>> -import com.sun.grizzly.util.InputReader;
>>>>> -import com.sun.grizzly.util.SSLUtils;
>>>>> -import com.sun.grizzly.util.ThreadAttachment;
>>>>> -import com.sun.grizzly.util.ThreadAttachment.Mode;
>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>> +import com.sun.grizzly.misc.InputReader;
>>>>> +import com.sun.grizzly.misc.SSLUtils;
>>>>> +import com.sun.grizzly.misc.ThreadAttachment;
>>>>> +import com.sun.grizzly.misc.ThreadAttachment.Mode;
>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>> import java.io.EOFException;
>>>>> import java.io.IOException;
>>>>>> import java.nio.ByteBuffer;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/SSLEchoAsyncWriteQueueFilter.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/SSLEchoAsyncWriteQueueFilter.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/SSLEchoAsyncWriteQueueFilter.java
>>>>>> (working copy)
>>>>>> @@ -42,9 +42,9 @@
>>>>>> import com.sun.grizzly.ProtocolFilter;
>>>>>> import com.sun.grizzly.async.AsyncQueueDataProcessor;
>>>>>> import com.sun.grizzly.async.ByteBufferCloner;
>>>>>> -import com.sun.grizzly.util.AttributeHolder;
>>>>>> -import com.sun.grizzly.util.ByteBufferFactory;
>>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>>> +import com.sun.grizzly.misc.AttributeHolder;
>>>>>> +import com.sun.grizzly.misc.ByteBufferFactory;
>>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>>> import java.io.IOException;
>>>>>> import java.nio.ByteBuffer;
>>>>>> import javax.net.ssl.SSLEngine;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/ParserProtocolFilter.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/ParserProtocolFilter.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/ParserProtocolFilter.java
>>>>>> (working copy)
>>>>>> @@ -43,14 +43,14 @@
>>>>>> import com.sun.grizzly.ProtocolChainInstruction;
>>>>>> import com.sun.grizzly.ProtocolParser;
>>>>>> import com.sun.grizzly.SSLConfig;
>>>>>> -import com.sun.grizzly.util.AttributeHolder;
>>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>>> +import com.sun.grizzly.misc.AttributeHolder;
>>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>>> import java.io.IOException;
>>>>>> import java.nio.ByteBuffer;
>>>>>> import java.nio.channels.SelectionKey;
>>>>>>
>>>>>> -import com.sun.grizzly.util.ThreadAttachment;
>>>>>> -import com.sun.grizzly.util.ThreadAttachment.Mode;
>>>>>> +import com.sun.grizzly.misc.ThreadAttachment;
>>>>>> +import com.sun.grizzly.misc.ThreadAttachment.Mode;
>>>>>>
>>>>>> /**
>>>>>> * Simple ProtocolFilter implementation which read the available bytes
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/EchoFilter.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/EchoFilter.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/EchoFilter.java
>>>>>> (working copy)
>>>>>> @@ -41,8 +41,8 @@
>>>>>> import com.sun.grizzly.Context;
>>>>>> import com.sun.grizzly.Controller;
>>>>>> import com.sun.grizzly.ProtocolFilter;
>>>>>> -import com.sun.grizzly.util.OutputWriter;
>>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>>> +import com.sun.grizzly.misc.OutputWriter;
>>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>>> import java.io.IOException;
>>>>>> import java.net.SocketAddress;
>>>>>> import java.nio.ByteBuffer;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/SSLEchoFilter.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/SSLEchoFilter.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/SSLEchoFilter.java
>>>>>> (working copy)
>>>>>> @@ -40,8 +40,8 @@
>>>>>>
>>>>>> import com.sun.grizzly.Context;
>>>>>> import com.sun.grizzly.ProtocolFilter;
>>>>>> -import com.sun.grizzly.util.SSLOutputWriter;
>>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>>> +import com.sun.grizzly.misc.SSLOutputWriter;
>>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>>> import java.io.IOException;
>>>>>> import java.nio.ByteBuffer;
>>>>>> import java.nio.channels.SelectableChannel;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/LogFilter.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/LogFilter.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/LogFilter.java
>>>>>> (working copy)
>>>>>> @@ -39,7 +39,7 @@
>>>>>>
>>>>>> import com.sun.grizzly.Context;
>>>>>> import com.sun.grizzly.ProtocolFilter;
>>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>>> import java.io.IOException;
>>>>>> import java.nio.ByteBuffer;
>>>>>>
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/UDPWriteFilter.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/UDPWriteFilter.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/UDPWriteFilter.java
>>>>>> (working copy)
>>>>>> @@ -41,8 +41,8 @@
>>>>>> import com.sun.grizzly.Context;
>>>>>> import com.sun.grizzly.Controller;
>>>>>> import com.sun.grizzly.ProtocolFilter;
>>>>>> -import com.sun.grizzly.util.OutputWriter;
>>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>>> +import com.sun.grizzly.misc.OutputWriter;
>>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>>> import java.io.IOException;
>>>>>> import java.net.SocketAddress;
>>>>>> import java.nio.ByteBuffer;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/UDPReadFilter.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/UDPReadFilter.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/filter/UDPReadFilter.java
>>>>>> (working copy)
>>>>>> @@ -39,7 +39,7 @@
>>>>>> package com.sun.grizzly.filter;
>>>>>>
>>>>>> import com.sun.grizzly.Context;
>>>>>> -import com.sun.grizzly.util.WorkerThread;
>>>>>> +import com.sun.grizzly.misc.WorkerThread;
>>>>>> import java.io.IOException;
>>>>>> import java.net.SocketAddress;
>>>>>> import java.nio.ByteBuffer;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/SSLConnectorHandler.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/SSLConnectorHandler.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/SSLConnectorHandler.java
>>>>>> (working copy)
>>>>>> @@ -46,10 +46,10 @@
>>>>>> import com.sun.grizzly.async.AsyncReadCondition;
>>>>>> import com.sun.grizzly.async.AsyncWriteCallbackHandler;
>>>>>> import com.sun.grizzly.async.ByteBufferCloner;
>>>>>> -import com.sun.grizzly.util.DefaultThreadPool;
>>>>>> -import com.sun.grizzly.util.OutputWriter;
>>>>>> -import com.sun.grizzly.util.SSLOutputWriter;
>>>>>> -import com.sun.grizzly.util.SSLUtils;
>>>>>> +import com.sun.grizzly.misc.DefaultThreadPool;
>>>>>> +import com.sun.grizzly.misc.OutputWriter;
>>>>>> +import com.sun.grizzly.misc.SSLOutputWriter;
>>>>>> +import com.sun.grizzly.misc.SSLUtils;
>>>>>> import java.io.EOFException;
>>>>>> import java.io.IOException;
>>>>>> import java.net.SocketAddress;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ObjectPool.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ObjectPool.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ObjectPool.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> /**
>>>>>> * Basic interface for object pool implementations
>>>>>> Index: modules/grizzly/src/main/java/com/sun/grizzly/misc/Utils.java
>>>>>> ===================================================================
>>>>>> --- modules/grizzly/src/main/java/com/sun/grizzly/misc/Utils.java
>>>>>> (revision 0)
>>>>>> +++ modules/grizzly/src/main/java/com/sun/grizzly/misc/Utils.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.io.IOException;
>>>>>> import java.nio.ByteBuffer;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/WorkerThread.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/WorkerThread.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/WorkerThread.java
>>>>>> (working copy)
>>>>>> @@ -35,7 +35,7 @@
>>>>>> * holder.
>>>>>> *
>>>>>> */
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.nio.ByteBuffer;
>>>>>> import javax.net.ssl.SSLEngine;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/AttributeHolder.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/AttributeHolder.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/AttributeHolder.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.util.Map;
>>>>>>
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/StreamAlgorithm.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/StreamAlgorithm.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/StreamAlgorithm.java
>>>>>> (working copy)
>>>>>> @@ -35,7 +35,7 @@
>>>>>> * holder.
>>>>>> *
>>>>>> */
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.nio.ByteBuffer;
>>>>>> import java.nio.channels.SocketChannel;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectionKeyAttachment.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectionKeyAttachment.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectionKeyAttachment.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.nio.channels.SelectionKey;
>>>>>>
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ConcurrentLinkedQueuePool.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ConcurrentLinkedQueuePool.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ConcurrentLinkedQueuePool.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.util.concurrent.ConcurrentLinkedQueue;
>>>>>>
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SupportStateHolder.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SupportStateHolder.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SupportStateHolder.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> /**
>>>>>> * Interface implementors support {_at_link StateHolder} for state
>>>>>> control
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SSLOutputWriter.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SSLOutputWriter.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SSLOutputWriter.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.io.IOException;
>>>>>> import java.nio.ByteBuffer;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ThreadAttachment.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ThreadAttachment.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ThreadAttachment.java
>>>>>> (working copy)
>>>>>> @@ -35,7 +35,7 @@
>>>>>> * holder.
>>>>>> *
>>>>>> */
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.nio.ByteBuffer;
>>>>>> import java.nio.channels.SelectionKey;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SSLUtils.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SSLUtils.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SSLUtils.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import com.sun.grizzly.Controller;
>>>>>> import java.io.ByteArrayInputStream;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/CallbackHandlerSelectionKeyAttachment.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/CallbackHandlerSelectionKeyAttachment.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/CallbackHandlerSelectionKeyAttachment.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import com.sun.grizzly.CallbackHandler;
>>>>>> import java.nio.channels.SelectionKey;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ExtendedThreadPool.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ExtendedThreadPool.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ExtendedThreadPool.java
>>>>>> (working copy)
>>>>>> @@ -35,7 +35,7 @@
>>>>>> * holder.
>>>>>> *
>>>>>> */
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.util.concurrent.BlockingQueue;
>>>>>> import java.util.concurrent.TimeUnit;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ConnectionCloseHandler.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ConnectionCloseHandler.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ConnectionCloseHandler.java
>>>>>> (working copy)
>>>>>> @@ -35,7 +35,7 @@
>>>>>> * holder.
>>>>>> *
>>>>>> */
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import com.sun.grizzly.Handler;
>>>>>> import java.nio.channels.SelectionKey;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ByteBufferFactory.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ByteBufferFactory.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ByteBufferFactory.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.nio.ByteBuffer;
>>>>>>
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectionKeyOP.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectionKeyOP.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectionKeyOP.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import com.sun.grizzly.CallbackHandler;
>>>>>> import java.net.SocketAddress;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/Copyable.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/Copyable.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/Copyable.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> /**
>>>>>> * Copyable objects are able to copy their content to
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/Interceptor.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/Interceptor.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/Interceptor.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.io.IOException;
>>>>>> import java.nio.channels.Channel;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectionKeyActionAttachment.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectionKeyActionAttachment.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectionKeyActionAttachment.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.nio.channels.SelectionKey;
>>>>>>
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/DefaultThreadPool.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/DefaultThreadPool.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/DefaultThreadPool.java
>>>>>> (working copy)
>>>>>> @@ -36,10 +36,10 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import com.sun.grizzly.Controller;
>>>>>> -import com.sun.grizzly.util.ByteBufferFactory.ByteBufferType;
>>>>>> +import com.sun.grizzly.misc.ByteBufferFactory.ByteBufferType;
>>>>>> import java.util.concurrent.ExecutorService;
>>>>>> import java.util.concurrent.LinkedBlockingQueue;
>>>>>> import java.util.concurrent.ThreadFactory;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectorFactory.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectorFactory.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectorFactory.java
>>>>>> (working copy)
>>>>>> @@ -35,7 +35,7 @@
>>>>>> * holder.
>>>>>> *
>>>>>> */
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import com.sun.grizzly.Controller;
>>>>>> import java.io.IOException;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectionKeyAttachmentWrapper.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectionKeyAttachmentWrapper.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/SelectionKeyAttachmentWrapper.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.nio.channels.SelectionKey;
>>>>>>
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/LoggingFormatter.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/LoggingFormatter.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/LoggingFormatter.java
>>>>>> (working copy)
>>>>>> @@ -33,7 +33,7 @@
>>>>>> * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> * holder.
>>>>>> */
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.io.PrintWriter;
>>>>>> import java.io.StringWriter;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/StateHolder.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/StateHolder.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/StateHolder.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import com.sun.grizzly.Controller;
>>>>>> import java.util.Iterator;
>>>>>> Index: modules/grizzly/src/main/java/com/sun/grizzly/misc/State.java
>>>>>> ===================================================================
>>>>>> --- modules/grizzly/src/main/java/com/sun/grizzly/misc/State.java
>>>>>> (revision 0)
>>>>>> +++ modules/grizzly/src/main/java/com/sun/grizzly/misc/State.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> /**
>>>>>> * State enum
>>>>>> Index: modules/grizzly/src/main/java/com/sun/grizzly/misc/Cloner.java
>>>>>> ===================================================================
>>>>>> --- modules/grizzly/src/main/java/com/sun/grizzly/misc/Cloner.java
>>>>>> (revision 0)
>>>>>> +++ modules/grizzly/src/main/java/com/sun/grizzly/misc/Cloner.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import com.sun.grizzly.Controller;
>>>>>> import java.lang.reflect.Constructor;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/InputReader.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/InputReader.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/InputReader.java
>>>>>> (working copy)
>>>>>> @@ -35,7 +35,7 @@
>>>>>> * holder.
>>>>>> *
>>>>>> */
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.io.InputStream;
>>>>>> import java.io.IOException;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/WorkerThreadImpl.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/WorkerThreadImpl.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/WorkerThreadImpl.java
>>>>>> (working copy)
>>>>>> @@ -35,11 +35,11 @@
>>>>>> * holder.
>>>>>> *
>>>>>> */
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.util.concurrent.Callable;
>>>>>> -import com.sun.grizzly.util.ByteBufferFactory.ByteBufferType;
>>>>>> -import com.sun.grizzly.util.ThreadAttachment.Mode;
>>>>>> +import com.sun.grizzly.misc.ByteBufferFactory.ByteBufferType;
>>>>>> +import com.sun.grizzly.misc.ThreadAttachment.Mode;
>>>>>>
>>>>>> /**
>>>>>> * Simple worker thread used for processing HTTP requests. All
>>>>>> threads are
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ByteBufferInputStream.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ByteBufferInputStream.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/ByteBufferInputStream.java
>>>>>> (working copy)
>>>>>> @@ -35,7 +35,7 @@
>>>>>> * holder.
>>>>>> *
>>>>>> */
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> /**
>>>>>> * This class implement IO stream operations on top of a {_at_link
>>>>>> ByteBuffer}.
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/WorkerThreadFactory.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/WorkerThreadFactory.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/WorkerThreadFactory.java
>>>>>> (working copy)
>>>>>> @@ -21,7 +21,7 @@
>>>>>> * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.util.concurrent.ThreadFactory;
>>>>>>
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/OutputWriter.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/OutputWriter.java
>>>>>> (revision 0)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/misc/OutputWriter.java
>>>>>> (working copy)
>>>>>> @@ -36,7 +36,7 @@
>>>>>> *
>>>>>> */
>>>>>>
>>>>>> -package com.sun.grizzly.util;
>>>>>> +package com.sun.grizzly.misc;
>>>>>>
>>>>>> import java.io.IOException;
>>>>>> import java.net.SocketAddress;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/SelectorHandler.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/SelectorHandler.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/SelectorHandler.java
>>>>>> (working copy)
>>>>>> @@ -39,10 +39,10 @@
>>>>>>
>>>>>> import com.sun.grizzly.async.AsyncQueueReader;
>>>>>> import com.sun.grizzly.async.AsyncQueueWriter;
>>>>>> -import com.sun.grizzly.util.AttributeHolder;
>>>>>> -import com.sun.grizzly.util.Copyable;
>>>>>> -import com.sun.grizzly.util.State;
>>>>>> -import com.sun.grizzly.util.SupportStateHolder;
>>>>>> +import com.sun.grizzly.misc.AttributeHolder;
>>>>>> +import com.sun.grizzly.misc.Copyable;
>>>>>> +import com.sun.grizzly.misc.State;
>>>>>> +import com.sun.grizzly.misc.SupportStateHolder;
>>>>>> import java.io.IOException;
>>>>>> import java.nio.channels.SelectableChannel;
>>>>>> import java.nio.channels.SelectionKey;
>>>>>> Index: modules/grizzly/src/main/java/com/sun/grizzly/Controller.java
>>>>>> ===================================================================
>>>>>> --- modules/grizzly/src/main/java/com/sun/grizzly/Controller.java
>>>>>> (revision 2047)
>>>>>> +++ modules/grizzly/src/main/java/com/sun/grizzly/Controller.java
>>>>>> (working copy)
>>>>>> @@ -38,14 +38,14 @@
>>>>>>
>>>>>> package com.sun.grizzly;
>>>>>>
>>>>>> -import com.sun.grizzly.util.AttributeHolder;
>>>>>> -import com.sun.grizzly.util.Cloner;
>>>>>> -import com.sun.grizzly.util.ConcurrentLinkedQueuePool;
>>>>>> -import com.sun.grizzly.util.Copyable;
>>>>>> -import com.sun.grizzly.util.DefaultThreadPool;
>>>>>> -import com.sun.grizzly.util.State;
>>>>>> -import com.sun.grizzly.util.StateHolder;
>>>>>> -import com.sun.grizzly.util.SupportStateHolder;
>>>>>> +import com.sun.grizzly.misc.AttributeHolder;
>>>>>> +import com.sun.grizzly.misc.Cloner;
>>>>>> +import com.sun.grizzly.misc.ConcurrentLinkedQueuePool;
>>>>>> +import com.sun.grizzly.misc.Copyable;
>>>>>> +import com.sun.grizzly.misc.DefaultThreadPool;
>>>>>> +import com.sun.grizzly.misc.State;
>>>>>> +import com.sun.grizzly.misc.StateHolder;
>>>>>> +import com.sun.grizzly.misc.SupportStateHolder;
>>>>>> import java.io.IOException;
>>>>>> import java.nio.channels.ClosedChannelException;
>>>>>> import java.nio.channels.ClosedSelectorException;
>>>>>> Index: modules/grizzly/src/main/java/com/sun/grizzly/Context.java
>>>>>> ===================================================================
>>>>>> --- modules/grizzly/src/main/java/com/sun/grizzly/Context.java
>>>>>> (revision 2047)
>>>>>> +++ modules/grizzly/src/main/java/com/sun/grizzly/Context.java
>>>>>> (working copy)
>>>>>> @@ -40,8 +40,8 @@
>>>>>>
>>>>>> import com.sun.grizzly.async.AsyncQueueReader;
>>>>>> import com.sun.grizzly.async.AsyncQueueWritable;
>>>>>> -import com.sun.grizzly.util.AttributeHolder;
>>>>>> -import com.sun.grizzly.util.Copyable;
>>>>>> +import com.sun.grizzly.misc.AttributeHolder;
>>>>>> +import com.sun.grizzly.misc.Copyable;
>>>>>> import java.nio.channels.SelectionKey;
>>>>>> import java.util.Map;
>>>>>> import java.util.concurrent.ExecutorService;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/TCPSelectorHandler.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/TCPSelectorHandler.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/TCPSelectorHandler.java
>>>>>> (working copy)
>>>>>> @@ -44,14 +44,14 @@
>>>>>> import com.sun.grizzly.async.TCPAsyncQueueWriter;
>>>>>> import com.sun.grizzly.async.AsyncQueueWriterContextTask;
>>>>>> import com.sun.grizzly.async.TCPAsyncQueueReader;
>>>>>> -import com.sun.grizzly.util.CallbackHandlerSelectionKeyAttachment;
>>>>>> -import com.sun.grizzly.util.Cloner;
>>>>>> -import com.sun.grizzly.util.Copyable;
>>>>>> -import com.sun.grizzly.util.SelectionKeyAttachment;
>>>>>> -import com.sun.grizzly.util.SelectionKeyOP;
>>>>>> -import com.sun.grizzly.util.SelectionKeyOP.ConnectSelectionKeyOP;
>>>>>> -import com.sun.grizzly.util.State;
>>>>>> -import com.sun.grizzly.util.StateHolder;
>>>>>> +import com.sun.grizzly.misc.CallbackHandlerSelectionKeyAttachment;
>>>>>> +import com.sun.grizzly.misc.Cloner;
>>>>>> +import com.sun.grizzly.misc.Copyable;
>>>>>> +import com.sun.grizzly.misc.SelectionKeyAttachment;
>>>>>> +import com.sun.grizzly.misc.SelectionKeyOP;
>>>>>> +import com.sun.grizzly.misc.SelectionKeyOP.ConnectSelectionKeyOP;
>>>>>> +import com.sun.grizzly.misc.State;
>>>>>> +import com.sun.grizzly.misc.StateHolder;
>>>>>> import java.io.IOException;
>>>>>> import java.net.BindException;
>>>>>> import java.net.InetAddress;
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/BaseSelectionKeyHandler.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/BaseSelectionKeyHandler.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/BaseSelectionKeyHandler.java
>>>>>> (working copy)
>>>>>> @@ -38,10 +38,10 @@
>>>>>>
>>>>>> package com.sun.grizzly;
>>>>>>
>>>>>> -import com.sun.grizzly.util.ConnectionCloseHandler;
>>>>>> -import com.sun.grizzly.util.Copyable;
>>>>>> -import com.sun.grizzly.util.SelectionKeyActionAttachment;
>>>>>> -import com.sun.grizzly.util.SelectionKeyAttachment;
>>>>>> +import com.sun.grizzly.misc.ConnectionCloseHandler;
>>>>>> +import com.sun.grizzly.misc.Copyable;
>>>>>> +import com.sun.grizzly.misc.SelectionKeyActionAttachment;
>>>>>> +import com.sun.grizzly.misc.SelectionKeyAttachment;
>>>>>> import java.io.IOException;
>>>>>> import java.net.Socket;
>>>>>> import java.nio.channels.ClosedChannelException;
>>>>>> Index: modules/grizzly/src/main/java/com/sun/grizzly/NIOContext.java
>>>>>> ===================================================================
>>>>>> --- modules/grizzly/src/main/java/com/sun/grizzly/NIOContext.java
>>>>>> (revision 2047)
>>>>>> +++ modules/grizzly/src/main/java/com/sun/grizzly/NIOContext.java
>>>>>> (working copy)
>>>>>> @@ -48,9 +48,9 @@
>>>>>> import com.sun.grizzly.async.AsyncWriteCallbackHandler;
>>>>>> import com.sun.grizzly.async.AsyncQueueWriteUnit;
>>>>>> import com.sun.grizzly.async.ByteBufferCloner;
>>>>>> -import com.sun.grizzly.util.AttributeHolder;
>>>>>> -import com.sun.grizzly.util.Copyable;
>>>>>> -import com.sun.grizzly.util.SelectionKeyAttachment;
>>>>>> +import com.sun.grizzly.misc.AttributeHolder;
>>>>>> +import com.sun.grizzly.misc.Copyable;
>>>>>> +import com.sun.grizzly.misc.SelectionKeyAttachment;
>>>>>> import java.io.IOException;
>>>>>> import java.net.SocketAddress;
>>>>>> import java.nio.ByteBuffer;
>>>>>> Index: modules/grizzly/src/main/java/com/sun/grizzly/util/Utils.java
>>>>>> ===================================================================
>>>>>> --- modules/grizzly/src/main/java/com/sun/grizzly/util/Utils.java
>>>>>> (revision 2047)
>>>>>> +++ modules/grizzly/src/main/java/com/sun/grizzly/util/Utils.java
>>>>>> (working copy)
>>>>>> @@ -1,248 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.io.IOException;
>>>>>> -import java.nio.ByteBuffer;
>>>>>> -import java.nio.channels.ReadableByteChannel;
>>>>>> -import java.nio.channels.SelectableChannel;
>>>>>> -import java.nio.channels.SelectionKey;
>>>>>> -import java.nio.channels.Selector;
>>>>>> -
>>>>>> -/**
>>>>>> - * Class contains set of useful operations commonly used in the
>>>>>> framework
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - * @author Jean-Francois Arcand
>>>>>> - */
>>>>>> -public class Utils {
>>>>>> - /**
>>>>>> - * Character translation tables.
>>>>>> - */
>>>>>> - private static final byte[] toLower = new byte[256];
>>>>>> -
>>>>>> - /**
>>>>>> - * Initialize character translation and type tables.
>>>>>> - */
>>>>>> - static {
>>>>>> - for (int i = 0; i < 256; i++) {
>>>>>> - toLower[i] = (byte)i;
>>>>>> - }
>>>>>> -
>>>>>> - for (int lc = 'a'; lc <= 'z'; lc++) {
>>>>>> - int uc = lc + 'A' - 'a';
>>>>>> - toLower[uc] = (byte)lc;
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Method reads data from {_at_link SelectableChannel} to
>>>>>> - * {_at_link ByteBuffer}. If data is not immediately available -
>>>>>> channel
>>>>>> - * will be reregistered on temporary {_at_link Selector} and
>>>>>> wait maximum
>>>>>> - * readTimeout milliseconds for data.
>>>>>> - *
>>>>>> - * @param channel {_at_link SelectableChannel} to read data from
>>>>>> - * @param byteBuffer {_at_link ByteBuffer} to store read data to
>>>>>> - * @param readTimeout maximum time in millis operation will
>>>>>> wait for
>>>>>> - * incoming data
>>>>>> - *
>>>>>> - * @return number of bytes were read
>>>>>> - * @throws <code>IOException</code> if any error was occured
>>>>>> during read
>>>>>> - */
>>>>>> - public static int readWithTemporarySelector(SelectableChannel
>>>>>> channel,
>>>>>> - ByteBuffer byteBuffer, long readTimeout) throws
>>>>>> IOException {
>>>>>> - int count = 1;
>>>>>> - int byteRead = 0;
>>>>>> - int preReadInputBBPos = byteBuffer.position();
>>>>>> - Selector readSelector = null;
>>>>>> - SelectionKey tmpKey = null;
>>>>>> -
>>>>>> - try {
>>>>>> - ReadableByteChannel readableChannel =
>>>>>> (ReadableByteChannel) channel;
>>>>>> - while (count > 0){
>>>>>> - count = readableChannel.read(byteBuffer);
>>>>>> - if ( count > -1 )
>>>>>> - byteRead += count;
>>>>>> - else
>>>>>> - byteRead = count;
>>>>>> - }
>>>>>> -
>>>>>> - if (byteRead == 0 && byteBuffer.position() ==
>>>>>> preReadInputBBPos) {
>>>>>> - readSelector = SelectorFactory.getSelector();
>>>>>> -
>>>>>> - if ( readSelector == null ){
>>>>>> - return 0;
>>>>>> - }
>>>>>> - count = 1;
>>>>>> -
>>>>>> - tmpKey = channel.register(readSelector,
>>>>>> SelectionKey.OP_READ);
>>>>>> - tmpKey.interestOps(tmpKey.interestOps() |
>>>>>> SelectionKey.OP_READ);
>>>>>> - int code = readSelector.select(readTimeout);
>>>>>> - tmpKey.interestOps(
>>>>>> - tmpKey.interestOps() & (~SelectionKey.OP_READ));
>>>>>> -
>>>>>> - if ( code == 0 ){
>>>>>> - return 0; // Return on the main Selector and
>>>>>> try again.
>>>>>> - }
>>>>>> -
>>>>>> - while (count > 0){
>>>>>> - count = readableChannel.read(byteBuffer);
>>>>>> - if ( count > -1 )
>>>>>> - byteRead += count;
>>>>>> - else
>>>>>> - byteRead = count;
>>>>>> - }
>>>>>> - } else if (byteRead == 0 && byteBuffer.position() !=
>>>>>> preReadInputBBPos) {
>>>>>> - byteRead += (byteBuffer.position() -
>>>>>> preReadInputBBPos);
>>>>>> - }
>>>>>> - } finally {
>>>>>> - if (tmpKey != null)
>>>>>> - tmpKey.cancel();
>>>>>> -
>>>>>> - if ( readSelector != null) {
>>>>>> - // Bug 6403933
>>>>>> -
>>>>>> SelectorFactory.selectNowAndReturnSelector(readSelector);
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - return byteRead;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the bytes contained between the startByte and the
>>>>>> endByte. The ByteBuffer
>>>>>> - * will be left in the state it was before invoking that
>>>>>> method, meaning
>>>>>> - * its position and limit will be the same.
>>>>>> - *
>>>>>> - * @param byteBuffer The bytes.
>>>>>> - * @param startByte the first byte to look for
>>>>>> - * @param endByte the second byte to look for
>>>>>> - * @return The byte[] contained between startByte and endByte
>>>>>> - */
>>>>>> - public static byte[] extractBytes(ByteBuffer byteBuffer,
>>>>>> - byte startByte, byte endByte) throws IOException{
>>>>>> -
>>>>>> - int curPosition = byteBuffer.position();
>>>>>> - int curLimit = byteBuffer.limit();
>>>>>> -
>>>>>> - if (byteBuffer.position() == 0){
>>>>>> - throw new IllegalStateException("Invalid state");
>>>>>> - }
>>>>>> -
>>>>>> - byteBuffer.position(0);
>>>>>> - byteBuffer.limit(curPosition);
>>>>>> - int state =0;
>>>>>> - int start =0;
>>>>>> - int end = 0;
>>>>>> - try {
>>>>>> - byte c;
>>>>>> -
>>>>>> - // Rule b - try to determine the context-root
>>>>>> - while(byteBuffer.hasRemaining()) {
>>>>>> - c = byteBuffer.get();
>>>>>> - switch(state) {
>>>>>> - case 0: // Search for first ' '
>>>>>> - if (c == startByte){
>>>>>> - state = 1;
>>>>>> - start = byteBuffer.position();
>>>>>> - }
>>>>>> - break;
>>>>>> - case 1:
>>>>>> - if (c == endByte){
>>>>>> - end = byteBuffer.position();
>>>>>> - byte[] bytes = new byte[end - start];
>>>>>> - byteBuffer.position(start);
>>>>>> - byteBuffer.limit(end);
>>>>>> - byteBuffer.get(bytes);
>>>>>> - return bytes;
>>>>>> - }
>>>>>> - break;
>>>>>> - default:
>>>>>> - throw new
>>>>>> IllegalArgumentException("Unexpected state");
>>>>>> - }
>>>>>> - }
>>>>>> - throw new IllegalStateException("Unexpected state");
>>>>>> - } finally {
>>>>>> - byteBuffer.limit(curLimit);
>>>>>> - byteBuffer.position(curPosition);
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Specialized utility method: find a sequence of lower case
>>>>>> bytes inside
>>>>>> - * a ByteBuffer.
>>>>>> - */
>>>>>> - public static int findBytes(ByteBuffer byteBuffer, byte[] b) {
>>>>>> - int curPosition = byteBuffer.position();
>>>>>> - int curLimit = byteBuffer.limit();
>>>>>> -
>>>>>> - if (byteBuffer.position() == 0){
>>>>>> - throw new IllegalStateException("Invalid state");
>>>>>> - }
>>>>>> -
>>>>>> - byteBuffer.position(0);
>>>>>> - byteBuffer.limit(curPosition);
>>>>>> - try {
>>>>>> - byte first = b[0];
>>>>>> - int start = 0;
>>>>>> - int end = curPosition;
>>>>>> -
>>>>>> - // Look for first char
>>>>>> - int srcEnd = b.length;
>>>>>> -
>>>>>> - for (int i = start; i <= (end - srcEnd); i++) {
>>>>>> - if ((toLower[byteBuffer.get(i) & 0xff] & 0xff) !=
>>>>>> first) continue;
>>>>>> - // found first char, now look for a match
>>>>>> - int myPos = i+1;
>>>>>> - for (int srcPos = 1; srcPos < srcEnd; ) {
>>>>>> - if ((toLower[byteBuffer.get(myPos++) &
>>>>>> 0xff] & 0xff) != b[srcPos++])
>>>>>> - break;
>>>>>> - if (srcPos == srcEnd) return i - start;
>>>>>> // found it
>>>>>> - }
>>>>>> - }
>>>>>> - return -1;
>>>>>> - } finally {
>>>>>> - byteBuffer.limit(curLimit);
>>>>>> - byteBuffer.position(curPosition);
>>>>>> - }
>>>>>> - }
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ObjectPool.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ObjectPool.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ObjectPool.java
>>>>>> (working copy)
>>>>>> @@ -1,50 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -/**
>>>>>> - * Basic interface for object pool implementations
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public interface ObjectPool<E> {
>>>>>> - public E poll();
>>>>>> -
>>>>>> - public void offer(E object);
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/WorkerThread.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/WorkerThread.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/WorkerThread.java
>>>>>> (working copy)
>>>>>> @@ -1,223 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, e lected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.nio.ByteBuffer;
>>>>>> -import javax.net.ssl.SSLEngine;
>>>>>> -
>>>>>> -/**
>>>>>> - * Simple interface to allow the addition of <code>Thread</code>
>>>>>> attributes.
>>>>>> - *
>>>>>> - * @author Jean-Francois Arcand
>>>>>> - */
>>>>>> -public abstract class WorkerThread extends Thread {
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The {_at_link ByteBuffer} used when {_at_link Task} are executed.
>>>>>> - */
>>>>>> - protected ByteBuffer byteBuffer;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The encrypted ByteBuffer used for handshaking and reading
>>>>>> request bytes.
>>>>>> - */
>>>>>> - protected ByteBuffer inputBB;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The encrypted ByteBuffer used for handshaking and writing
>>>>>> response bytes.
>>>>>> - */
>>>>>> - protected ByteBuffer outputBB;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The{_at_link SSLEngine} used to manage the SSL over NIO request.
>>>>>> - */
>>>>>> - protected SSLEngine sslEngine;
>>>>>> -
>>>>>> - public WorkerThread() {
>>>>>> - }
>>>>>> -
>>>>>> - public WorkerThread(String name) {
>>>>>> - super(name);
>>>>>> - }
>>>>>> -
>>>>>> - public WorkerThread(Runnable target) {
>>>>>> - super(target);
>>>>>> - }
>>>>>> -
>>>>>> - public WorkerThread(Runnable target, String name) {
>>>>>> - super(target, name);
>>>>>> - }
>>>>>> -
>>>>>> - public WorkerThread(ThreadGroup group, String name) {
>>>>>> - super(group, name);
>>>>>> - }
>>>>>> -
>>>>>> - public WorkerThread(ThreadGroup group, Runnable target) {
>>>>>> - super(group, target);
>>>>>> - }
>>>>>> -
>>>>>> - public WorkerThread(ThreadGroup group, Runnable target,
>>>>>> String name) {
>>>>>> - super(group, target, name);
>>>>>> - }
>>>>>> -
>>>>>> - public WorkerThread(ThreadGroup group, Runnable target,
>>>>>> String name, long stackSize) {
>>>>>> - super(group, target, name, stackSize);
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the {_at_link ByteBuffer} shared this thread
>>>>>> - */
>>>>>> - public void setByteBuffer(ByteBuffer byteBuffer){
>>>>>> - this.byteBuffer = byteBuffer;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the {_at_link ByteBuffer} shared this thread
>>>>>> - */
>>>>>> - public ByteBuffer getByteBuffer(){
>>>>>> - return byteBuffer;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the encrypted {_at_link ByteBuffer} used to handle
>>>>>> request.
>>>>>> - * @return {_at_link ByteBuffer}
>>>>>> - */
>>>>>> - public ByteBuffer getInputBB(){
>>>>>> - return inputBB;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the encrypted {_at_link ByteBuffer} used to handle request.
>>>>>> - * @param inputBB {_at_link ByteBuffer}
>>>>>> - */
>>>>>> - public void setInputBB(ByteBuffer inputBB){
>>>>>> - this.inputBB = inputBB;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the encrypted {_at_link ByteBuffer} used to handle
>>>>>> response.
>>>>>> - * @return {_at_link ByteBuffer}
>>>>>> - */
>>>>>> - public ByteBuffer getOutputBB(){
>>>>>> - return outputBB;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the encrypted {_at_link ByteBuffer} used to handle response.
>>>>>> - * @param outputBB {_at_link ByteBuffer}
>>>>>> - */
>>>>>> - public void setOutputBB(ByteBuffer outputBB){
>>>>>> - this.outputBB = outputBB;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the{_at_link SSLEngine}.
>>>>>> - * @return{_at_link SSLEngine}
>>>>>> - */
>>>>>> - public SSLEngine getSSLEngine() {
>>>>>> - return sslEngine;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Get the{_at_link SSLEngine}.
>>>>>> - * @param sslEngine{_at_link SSLEngine}
>>>>>> - */
>>>>>> - public void setSSLEngine(SSLEngine sslEngine) {
>>>>>> - this.sslEngine = sslEngine;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Updates Thread associated attachment according to the
>>>>>> passed mode.
>>>>>> - *
>>>>>> - * @return updated ThreadAttachment
>>>>>> - */
>>>>>> - public abstract ThreadAttachment updateAttachment(int mode);
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Get the current set of attributes (state) associated with
>>>>>> this instance.
>>>>>> - * Unlike detach(), this method doesn't clear the
>>>>>> WorkerThread attributes.
>>>>>> - *
>>>>>> - * @return the Thread associated ThreadAttachment
>>>>>> - */
>>>>>> - public abstract ThreadAttachment getAttachment();
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Detach the current set of attributes (state) associated
>>>>>> with this instance.
>>>>>> - * Method will re-create all the ByteBuffers associated with
>>>>>> this thread.
>>>>>> - *
>>>>>> - * @return a new ThreadAttachment
>>>>>> - */
>>>>>> - public abstract ThreadAttachment detach();
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Attach the ThreadAttachment to this instance. This will
>>>>>> configure this
>>>>>> - * Thread attributes like ByteBuffer, SSLEngine, etc.
>>>>>> - * @param ThreadAttachment the attachment.
>>>>>> - */
>>>>>> - public abstract void attach(ThreadAttachment threadAttachment);
>>>>>> -
>>>>>> - protected void reset() {
>>>>>> - if (byteBuffer != null) {
>>>>>> - byteBuffer.clear();
>>>>>> - }
>>>>>> -
>>>>>> - if (inputBB != null) {
>>>>>> - inputBB.clear();
>>>>>> - }
>>>>>> -
>>>>>> - if (outputBB != null) {
>>>>>> - outputBB.clear();
>>>>>> - }
>>>>>> -
>>>>>> - sslEngine = null;
>>>>>> - }
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/AttributeHolder.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/AttributeHolder.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/AttributeHolder.java
>>>>>> (working copy)
>>>>>> @@ -1,94 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.util.Map;
>>>>>> -
>>>>>> -/**
>>>>>> - * Interface declares common functionality for objects, which
>>>>>> could have
>>>>>> - * associated attributes.
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public interface AttributeHolder {
>>>>>> - /**
>>>>>> - * Remove a name/value object.
>>>>>> - * @param name - name of an attribute
>>>>>> - * @return attribute which has been removed
>>>>>> - */
>>>>>> - public Object removeAttribute(String name);
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set a name/value object.
>>>>>> - * @param name - name of an attribute
>>>>>> - * @param value - value of named attribute
>>>>>> - */
>>>>>> - public void setAttribute(String name, Object value);
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set a {_at_link Map} of attribute name/value pairs.
>>>>>> - * Old {_at_link AttributeHolder} values will not be available.
>>>>>> - * Later changes of this {_at_link Map} will lead to changes to
>>>>>> the current
>>>>>> - * {_at_link AttributeHolder}.
>>>>>> - *
>>>>>> - * @param attributes - map of name/value pairs
>>>>>> - */
>>>>>> - public void setAttributes(Map<String, Object> attributes);
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return an object based on a name.
>>>>>> - * @param name - name of an attribute
>>>>>> - * @return - attribute value for the <tt>name</tt>, null if
>>>>>> <tt>name</tt>
>>>>>> - * does not exist in <tt>attributes</tt>
>>>>>> - */
>>>>>> - public Object getAttribute(String name);
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return a {_at_link Map} of attribute name/value pairs.
>>>>>> - * Updates, performed on the returned {_at_link Map} will be
>>>>>> reflected in
>>>>>> - * this {_at_link AttributeHolder}
>>>>>> - *
>>>>>> - * @return - {_at_link Map} of attribute name/value pairs
>>>>>> - */
>>>>>> - public Map<String, Object> getAttributes();
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/StreamAlgorithm.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/StreamAlgorithm.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/StreamAlgorithm.java
>>>>>> (working copy)
>>>>>> @@ -1,147 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.nio.ByteBuffer;
>>>>>> -import java.nio.channels.SocketChannel;
>>>>>> -/**
>>>>>> - * Generic parsing interface that can be used to implement protocol
>>>>>> - * specific logic parsing.
>>>>>> - *
>>>>>> - * @deprecated Use the ProtocolParser instead.
>>>>>> - *
>>>>>> - * @author Jean-Francois Arcand
>>>>>> - */
>>>>>> -public interface StreamAlgorithm<E>{
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the stream content-length. If the content-length
>>>>>> wasn't parsed,
>>>>>> - * return -1.
>>>>>> - * @return content length or -1 if content length was not
>>>>>> parsed
>>>>>> - */
>>>>>> - public int contentLength();
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the stream header length. The header length is the
>>>>>> length between
>>>>>> - * the start of the stream and the first occurance of
>>>>>> character '\r\n' .
>>>>>> - * @return header length
>>>>>> - */
>>>>>> - public int headerLength();
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Allocate a {_at_link ByteBuffer}
>>>>>> - * @param useDirect allocate a direct {_at_link ByteBuffer}.
>>>>>> - * @param useView allocate a view {_at_link ByteBuffer}.
>>>>>> - * @param size the size of the newly created {_at_link ByteBuffer}.
>>>>>> - * @return a new {_at_link ByteBuffer}
>>>>>> - */
>>>>>> - public ByteBuffer allocate(boolean useDirect, boolean
>>>>>> useView, int size);
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Before parsing the bytes, initialize and prepare the
>>>>>> algorithm.
>>>>>> - * @param byteBuffer the {_at_link ByteBuffer} used by this
>>>>>> algorithm
>>>>>> - * @return {_at_link ByteBuffer} used by this algorithm
>>>>>> - */
>>>>>> - public ByteBuffer preParse(ByteBuffer byteBuffer);
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Parse the {_at_link ByteBuffer} and try to determine if the
>>>>>> bytes
>>>>>> - * stream has been fully read from the {_at_link SocketChannel}.
>>>>>> - * @param byteBuffer the bytes read.
>>>>>> - * @return true if the algorithm determines the end of the
>>>>>> stream.
>>>>>> - */
>>>>>> - public boolean parse(ByteBuffer byteBuffer);
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * After parsing the bytes, post process the {_at_link ByteBuffer}
>>>>>> - * @param byteBuffer the {_at_link ByteBuffer} used by this
>>>>>> algorithm
>>>>>> - * @return {_at_link ByteBuffer} used by this algorithm
>>>>>> - */
>>>>>> - public ByteBuffer postParse(ByteBuffer byteBuffer);
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Recycle the algorithm.
>>>>>> - */
>>>>>> - public void recycle();
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Rollback the {_at_link ByteBuffer} to its previous state in case
>>>>>> - * an error as occured.
>>>>>> - * @param byteBuffer
>>>>>> - * @return {_at_link ByteBuffer}
>>>>>> - */
>>>>>> - public ByteBuffer rollbackParseState(ByteBuffer byteBuffer);
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The {_at_link Interceptor} associated with this algorithm.
>>>>>> - * @return {_at_link Interceptor}
>>>>>> - */
>>>>>> - public Interceptor getHandler();
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the {_at_link Channel} used by this algorithm
>>>>>> - * @param channek set {_at_link Channel}
>>>>>> - */
>>>>>> - public void setChannel(E channel);
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the <code>port</code> this algorithm is used.
>>>>>> - * @param port port number
>>>>>> - */
>>>>>> - public void setPort(int port);
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the port
>>>>>> - * @return port number being used
>>>>>> - */
>>>>>> - public int getPort();
>>>>>> -
>>>>>> -}
>>>>>> -
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectionKeyAttachment.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectionKeyAttachment.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectionKeyAttachment.java
>>>>>> (working copy)
>>>>>> @@ -1,72 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.nio.channels.SelectionKey;
>>>>>> -
>>>>>> -/**
>>>>>> - * Basic class for all SelectionKey attachments.
>>>>>> - * Custom attachments should be inherited from it.
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public abstract class SelectionKeyAttachment {
>>>>>> - private Long timeout;
>>>>>> -
>>>>>> - public static Object getAttachment(SelectionKey key) {
>>>>>> - Object attachment = key.attachment();
>>>>>> - if (attachment instanceof SelectionKeyAttachmentWrapper) {
>>>>>> - return ((SelectionKeyAttachmentWrapper)
>>>>>> attachment).getAttachment();
>>>>>> - }
>>>>>> -
>>>>>> - return attachment;
>>>>>> - }
>>>>>> -
>>>>>> - public Long getTimeout() {
>>>>>> - return timeout;
>>>>>> - }
>>>>>> -
>>>>>> - public void setTimeout(Long timeout) {
>>>>>> - this.timeout = timeout;
>>>>>> - }
>>>>>> -
>>>>>> - public void release(SelectionKey selectionKey) {
>>>>>> - timeout = null;
>>>>>> - }
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ConcurrentLinkedQueuePool.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ConcurrentLinkedQueuePool.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ConcurrentLinkedQueuePool.java
>>>>>> (working copy)
>>>>>> @@ -1,75 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at glassfish/bootstrap/leg
>>>>>> al/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.util.concurrent.ConcurrentLinkedQueue;
>>>>>> -
>>>>>> -/**
>>>>>> - * <code>ObjectPool</code> implementation based on {_at_link
>>>>>> ConcurrentLinkedQueue}
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public abstract class ConcurrentLinkedQueuePool<E> implements
>>>>>> ObjectPool<E> {
>>>>>> - private volatile ConcurrentLinkedQueue<E> pool;
>>>>>> -
>>>>>> - public abstract E newInstance();
>>>>>> -
>>>>>> - public E poll() {
>>>>>> - if (pool == null) {
>>>>>> - synchronized(this) {
>>>>>> - if (pool == null) {
>>>>>> - pool = new ConcurrentLinkedQueue<E>();
>>>>>> - }
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - E object = pool.poll();
>>>>>> - if (object == null) {
>>>>>> - object = newInstance();
>>>>>> - }
>>>>>> -
>>>>>> - return object;
>>>>>> - }
>>>>>> -
>>>>>> - public void offer(E object) {
>>>>>> - if (pool != null) {
>>>>>> - pool.offer(object);
>>>>>> - }
>>>>>> - }
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SupportStateHolder.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SupportStateHolder.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SupportStateHolder.java
>>>>>> (working copy)
>>>>>> @@ -1,52 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -/**
>>>>>> - * Interface implementors support {_at_link StateHolder} for state
>>>>>> control
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public interface SupportStateHolder<E> {
>>>>>> - /**
>>>>>> - * Gets {_at_link StateHolder} for this object
>>>>>> - * @return {_at_link StateHolder}
>>>>>> - */
>>>>>> - public StateHolder<E> getStateHolder();
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SSLOutputWriter.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SSLOutputWriter.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SSLOutputWriter.java
>>>>>> (working copy)
>>>>>> @@ -1,106 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.io.IOException;
>>>>>> -import java.nio.ByteBuffer;
>>>>>> -import java.nio.channels.SelectableChannel;
>>>>>> -import javax.net.ssl.SSLEngine;
>>>>>> -import javax.net.ssl.SSLEngineResult;
>>>>>> -import javax.net.ssl.SSLEngineResult.HandshakeStatus;
>>>>>> -
>>>>>> -/**
>>>>>> - * SSL over NIO utility to encrypt {_at_link ByteBuffer} and flush
>>>>>> them.
>>>>>> - * All the SSLEngine operations are delegated to class {_at_link
>>>>>> SSLUtils}
>>>>>> - *
>>>>>> - * @author Jeanfrancois Arcand
>>>>>> - */
>>>>>> -public final class SSLOutputWriter{
>>>>>> -
>>>>>> - /**
>>>>>> - * Encrypt the response and flush it using {_at_link OutputWriter}
>>>>>> - * @param channel {_at_link SelectableChannel} to flush
>>>>>> - * @param bb {_at_link ByteBuffer}
>>>>>> - * @return number of bytes written
>>>>>> - * @throws java.io.IOException
>>>>>> - */
>>>>>> - public static long flushChannel(SelectableChannel channel,
>>>>>> ByteBuffer bb)
>>>>>> - throws IOException{
>>>>>> -
>>>>>> - WorkerThread workerThread =
>>>>>> (WorkerThread)Thread.currentThread();
>>>>>> - SSLEngine sslEngine = workerThread.getSSLEngine();
>>>>>> - ByteBuffer outputBB = workerThread.getOutputBB();
>>>>>> - return flushChannel(channel,bb,outputBB,sslEngine);
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Encrypt the response and flush it using {_at_link OutputWriter}
>>>>>> - * @param channel {_at_link SelectableChannel} to flush
>>>>>> - * @param bb input {_at_link ByteBuffer}
>>>>>> - * @param outputBB output {_at_link ByteBuffer}
>>>>>> - * @param sslEngine {_at_link SSLEngine}
>>>>>> - * @return number of bytes written
>>>>>> - * @throws java.io.IOException
>>>>>> - */
>>>>>> - public static long flushChannel(SelectableChannel channel,
>>>>>> ByteBuffer bb,
>>>>>> - ByteBuffer outputBB, SSLEngine sslEngine) throws
>>>>>> IOException{
>>>>>> -
>>>>>> - long nWrite = 0;
>>>>>> - while (bb.hasRemaining()) {
>>>>>> - SSLEngineResult result =
>>>>>> SSLUtils.wrap(bb,outputBB,sslEngine);
>>>>>> - switch (result.getStatus()) {
>>>>>> - case OK:
>>>>>> - if (result.getHandshakeStatus() ==
>>>>>> HandshakeStatus.NEED_TASK) {
>>>>>> - SSLUtils.executeDelegatedTask(sslEngine);
>>>>>> - }
>>>>>> - break;
>>>>>> -
>>>>>> - default:
>>>>>> - throw new IOException("SSLOutputWriter: " +
>>>>>> result.getStatus());
>>>>>> - }
>>>>>> -
>>>>>> - if (outputBB.hasRemaining()) {
>>>>>> - nWrite +=
>>>>>> OutputWriter.flushChannel(channel,outputBB);
>>>>>> - }
>>>>>> - }
>>>>>> - outputBB.clear();
>>>>>> - return nWrite;
>>>>>> - }
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ThreadAttachment.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ThreadAttachment.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ThreadAttachment.java
>>>>>> (working copy)
>>>>>> @@ -1,286 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.nio.ByteBuffer;
>>>>>> -import java.nio.channels.SelectionKey;
>>>>>> -import java.util.HashMap;
>>>>>> -import java.util.Map;
>>>>>> -import java.util.concurrent.locks.ReentrantLock;
>>>>>> -import javax.net.ssl.SSLEngine;
>>>>>> -
>>>>>> -/**
>>>>>> - * This object represent the state of a {_at_link WorkerThread}.
>>>>>> This include
>>>>>> - * the ByteBuffer binded to the WorkerThread, application data etc.
>>>>>> - *
>>>>>> - * @author Jeanfrancois Arcand
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public class ThreadAttachment extends SelectionKeyActionAttachment
>>>>>> - implements AttributeHolder {
>>>>>> -
>>>>>> - public static class Mode {
>>>>>> - public static int ATTRIBUTES_ONLY = 0;
>>>>>> - public static int BYTE_BUFFER = 2;
>>>>>> - public static int INPUT_BB = 4;
>>>>>> - public static int OUTPUT_BB = 8;
>>>>>> - public static int SECURE_BUFFERS = 12;
>>>>>> - public static int SSL_ENGINE = 16;
>>>>>> - public static int SSL_ARTIFACTS = 28;
>>>>>> - public static int STORE_ALL = 31;
>>>>>> - };
>>>>>> -
>>>>>> - private ReentrantLock threadLock = new ReentrantLock();
>>>>>> -
>>>>>> - private String threadId;
>>>>>> -
>>>>>> -
>>>>>> - private Map<String, Object> attributes;
>>>>>> -
>>>>>> -
>>>>>> - private ByteBuffer byteBuffer;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The encrypted ByteBuffer used for handshaking and reading
>>>>>> request bytes.
>>>>>> - */
>>>>>> - private ByteBuffer inputBB;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The encrypted ByteBuffer used for handshaking and writing
>>>>>> response bytes.
>>>>>> - */
>>>>>> - private ByteBuffer outputBB;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The{_at_link SSLEngine} used to manage the SSL over NIO request.
>>>>>> - */
>>>>>> - private SSLEngine sslEngine;
>>>>>> -
>>>>>> - /**
>>>>>> - * ThreadAttachment store mode
>>>>>> - */
>>>>>> - private int mode;
>>>>>> -
>>>>>> -
>>>>>> - public ThreadAttachment(){
>>>>>> - attributes = new HashMap<String,Object>();
>>>>>> - }
>>>>>> -
>>>>>> - public int getMode() {
>>>>>> - return mode;
>>>>>> - }
>>>>>> -
>>>>>> - public void setMode(int mode) {
>>>>>> - this.mode = mode;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - public void setAttribute(String key, Object value){
>>>>>> - attributes.put(key,value);
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - public Object getAttribute(String key){
>>>>>> - return attributes.get(key);
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - public Object removeAttribute(String key){
>>>>>> - return attributes.remove(key);
>>>>>> - }
>>>>>> -
>>>>>> - public void setAttributes(Map<String, Object> attributes) {
>>>>>> - this.attributes = attributes;
>>>>>> - }
>>>>>> -
>>>>>> - public Map<String, Object> getAttributes() {
>>>>>> - return attributes;
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the {_at_link ByteBuffer} shared this thread
>>>>>> - */
>>>>>> - public void setByteBuffer(ByteBuffer byteBuffer){
>>>>>> - this.byteBuffer = byteBuffer;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the {_at_link ByteBuffer} shared this thread
>>>>>> - */
>>>>>> - public ByteBuffer getByteBuffer(){
>>>>>> - return byteBuffer;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the encrypted {_at_link ByteBuffer} used to handle
>>>>>> request.
>>>>>> - * @return {_at_link ByteBuffer}
>>>>>> - */
>>>>>> - public ByteBuffer getInputBB(){
>>>>>> - return inputBB;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the encrypted {_at_link ByteBuffer} used to handle request.
>>>>>> - * @param inputBB {_at_link ByteBuffer}
>>>>>> - */
>>>>>> - public void setInputBB(ByteBuffer inputBB){
>>>>>> - this.inputBB = inputBB;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the encrypted {_at_link ByteBuffer} used to handle
>>>>>> response.
>>>>>> - * @return {_at_link ByteBuffer}
>>>>>> - */
>>>>>> - public ByteBuffer getOutputBB(){
>>>>>> - return outputBB;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the encrypted {_at_link ByteBuffer} used to handle response.
>>>>>> - * @param outputBB {_at_link ByteBuffer}
>>>>>> - */
>>>>>> - public void setOutputBB(ByteBuffer outputBB){
>>>>>> - this.outputBB = outputBB;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the{_at_link SSLEngine}.
>>>>>> - * @return{_at_link SSLEngine}
>>>>>> - */
>>>>>> - public SSLEngine getSSLEngine() {
>>>>>> - return sslEngine;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Get the{_at_link SSLEngine}.
>>>>>> - * @param sslEngine{_at_link SSLEngine}
>>>>>> - */
>>>>>> - public void setSSLEngine(SSLEngine sslEngine) {
>>>>>> - this.sslEngine = sslEngine;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the name of the Thread on which this instance is
>>>>>> binded.
>>>>>> - */
>>>>>> - public String getThreadId() {
>>>>>> - return threadId;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the Thread's name on which this instance is binded.
>>>>>> - */
>>>>>> - public void setThreadId(String threadId) {
>>>>>> - this.threadId = threadId;
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Associates ThreadAttachment with the current thread
>>>>>> - */
>>>>>> - public void associate() {
>>>>>> - if (!threadLock.isHeldByCurrentThread()) {
>>>>>> - threadLock.lock();
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Releases ThreadAttachment association with the current thread
>>>>>> - */
>>>>>> - public void deassociate() {
>>>>>> - if (threadLock.isHeldByCurrentThread()) {
>>>>>> - threadLock.unlock();
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * SelectionKey attachment processing
>>>>>> - * @param selectionKey
>>>>>> - */
>>>>>> - public void process(SelectionKey selectionKey) {
>>>>>> - ((WorkerThread) Thread.currentThread()).attach(this);
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * SelectionKey attachment postProcessing
>>>>>> - * @param selectionKey
>>>>>> - */
>>>>>> - public void postProcess(SelectionKey selectionKey) {
>>>>>> - ((WorkerThread) Thread.currentThread()).detach();
>>>>>> - }
>>>>>> -
>>>>>> - public void reset() {
>>>>>> - mode = Mode.ATTRIBUTES_ONLY;
>>>>>> - byteBuffer = null;
>>>>>> - sslEngine = null;
>>>>>> - inputBB = null;
>>>>>> - outputBB = null;
>>>>>> - }
>>>>>> -
>>>>>> - @Override
>>>>>> - public void release(SelectionKey selectionKey) {
>>>>>> - attributes.clear();
>>>>>> - reset();
>>>>>> -
>>>>>> - deassociate();
>>>>>> - super.release(selectionKey);
>>>>>> - }
>>>>>> -
>>>>>> - @Override
>>>>>> - public String toString() {
>>>>>> - StringBuilder sb = new StringBuilder(256);
>>>>>> - sb.append("ThreadAttachment[mode=").append(mode);
>>>>>> - sb.append(", threadId=").append(threadId);
>>>>>> - sb.append(", byteBuffer=").append(byteBuffer);
>>>>>> - sb.append(", sslEngine=").append(sslEngine);
>>>>>> - sb.append(", inputBB=").append(inputBB);
>>>>>> - sb.append(", outputBB=").append(outputBB);
>>>>>> - sb.append(", attributes=").append(attributes);
>>>>>> - sb.append(']');
>>>>>> - return sb.toString();
>>>>>> - }
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ExtendedThreadPool.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ExtendedThreadPool.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ExtendedThreadPool.java
>>>>>> (working co py)
>>>>>> @@ -1,189 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.util.concurrent.BlockingQueue;
>>>>>> -import java.util.concurrent.TimeUnit;
>>>>>> -
>>>>>> -/**
>>>>>> - * Thread pool, from which it's possible to gather statistics
>>>>>> information,
>>>>>> - * and finer control its execution.
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public interface ExtendedThreadPool {
>>>>>> -
>>>>>> - /**
>>>>>> - * Returns the approximate number of threads that are actively
>>>>>> - * executing tasks.
>>>>>> - *
>>>>>> - * @return the number of threads
>>>>>> - */
>>>>>> - public int getActiveCount();
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Returns the approximate total number of tasks that have been
>>>>>> - * scheduled for execution. Because the states of tasks and
>>>>>> - * threads may change dynamically during computation, the
>>>>>> returned
>>>>>> - * value is only an approximation, but one that does not ever
>>>>>> - * decrease across successive calls.
>>>>>> - *
>>>>>> - * @return the number of tasks
>>>>>> - */
>>>>>> - public long getTaskCount();
>>>>>> -
>>>>>> - /**
>>>>>> - * Returns the approximate total number of tasks that have
>>>>>> - * completed execution. Because the states of tasks and threads
>>>>>> - * may change dynamically during computation, the returned value
>>>>>> - * is only an approximation, but one that does not ever decrease
>>>>>> - * across successive calls.
>>>>>> - *
>>>>>> - * @return the number of tasks
>>>>>> - */
>>>>>> - public long getCompletedTaskCount();
>>>>>> -
>>>>>> - /**
>>>>>> - * Returns the core number of threads.
>>>>>> - *
>>>>>> - * @return the core number of threads
>>>>>> - * @see #setCorePoolSize
>>>>>> - */
>>>>>> - public int getCorePoolSize();
>>>>>> -
>>>>>> - /**
>>>>>> - * Sets the core number of threads. This overrides any value
>>>>>> set
>>>>>> - * in the constructor. If the new value is smaller than the
>>>>>> - * current value, excess existing threads will be terminated
>>>>>> when
>>>>>> - * they next become idle. If larger, new threads will, if
>>>>>> needed,
>>>>>> - * be started to execute any queued tasks.
>>>>>> - *
>>>>>> - * @param corePoolSize the new core size
>>>>>> - * @throws IllegalArgumentException if <tt>corePoolSize</tt>
>>>>>> - * less than zero
>>>>>> - * @see #getCorePoolSize
>>>>>> - */
>>>>>> - public void setCorePoolSize(int corePoolSize);
>>>>>> -
>>>>>> - /**
>>>>>> - * Returns the largest number of threads that have ever
>>>>>> - * simultaneously been in the pool.
>>>>>> - *
>>>>>> - * @return the number of threads
>>>>>> - */
>>>>>> - public int getLargestPoolSize();
>>>>>> -
>>>>>> - /**
>>>>>> - * Returns the current number of threads in the pool.
>>>>>> - *
>>>>>> - * @return the number of threads
>>>>>> - */
>>>>>> - public int getPoolSize();
>>>>>> -
>>>>>> - /**
>>>>>> - * Returns the task queue used by this executor. Access to the
>>>>>> - * task queue is intended primarily for debugging and
>>>>>> monitoring.
>>>>>> - * This queue may be in active use. Retrieving the task queue
>>>>>> - * does not prevent queued tasks from executing.
>>>>>> - *
>>>>>> - * @return the task queue
>>>>>> - */
>>>>>> - public BlockingQueue<Runnable> getQueue();
>>>>>> -
>>>>>> - /**
>>>>>> - * Returns the number of tasks, which are currently waiting
>>>>>> in the queue.
>>>>>> - *
>>>>>> - * @return the number of tasks, which are currently waiting
>>>>>> in the queue.
>>>>>> - */
>>>>>> - public int getQueueSize();
>>>>>> -
>>>>>> - /**
>>>>>> - * Returns the thread keep-alive time, which is the amount of
>>>>>> time
>>>>>> - * which threads in excess of the core pool size may remain
>>>>>> - * idle before being terminated.
>>>>>> - *
>>>>>> - * @param unit the desired time unit of the result
>>>>>> - * @return the time limit
>>>>>> - * @see #setKeepAliveTime
>>>>>> - */
>>>>>> - public long getKeepAliveTime(TimeUnit unit);
>>>>>> -
>>>>>> - /**
>>>>>> - * Sets the time limit for which threads may remain idle before
>>>>>> - * being terminated. If there are more than the core number of
>>>>>> - * threads currently in the pool, after waiting this amount of
>>>>>> - * time without processing a task, excess threads will be
>>>>>> - * terminated. This overrides any value set in the constructor.
>>>>>> - * @param time the time to wait. A time value of zero will
>>>>>> cause
>>>>>> - * excess threads to terminate immediately after executing
>>>>>> tasks.
>>>>>> - * @param unit the time unit of the time argument
>>>>>> - * @throws IllegalArgumentException if time less than zero
>>>>>> - * @see #getKeepAliveTime
>>>>>> - */
>>>>>> - public void setKeepAliveTime(long time, TimeUnit unit);
>>>>>> -
>>>>>> - /**
>>>>>> - * Returns the maximum allowed number of threads.
>>>>>> - *
>>>>>> - * @return the maximum allowed number of threads
>>>>>> - * @see #setMaximumPoolSize
>>>>>> - */
>>>>>> - public int getMaximumPoolSize();
>>>>>> -
>>>>>> - /**
>>>>>> - * Sets the maximum allowed number of threads. This overrides
>>>>>> any
>>>>>> - * value set in the constructor. If the new value is smaller
>>>>>> than
>>>>>> - * the current value, excess existing threads will be
>>>>>> - * terminated when they next become idle.
>>>>>> - *
>>>>>> - * @param maximumPoolSize the new maximum
>>>>>> - * @throws IllegalArgumentException if maximumPoolSize less
>>>>>> than zero or
>>>>>> - * the {_at_link #getCorePoolSize core pool size}
>>>>>> - * @see #getMaximumPoolSize
>>>>>> - */
>>>>>> - public void setMaximumPoolSize(int maximumPoolSize);
>>>>>> -
>>>>>> - public int getMaxQueuedTasksCount();
>>>>>> -
>>>>>> - public void setMaxQueuedTasksCount(int maxTasksCount);
>>>>>> -
>>>>>> - public String getName();
>>>>>> -
>>>>>> - public void setName(String name);
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/CallbackHandlerSelectionKeyAttachment.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/CallbackHandlerSelectionKeyAttachment.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/CallbackHandlerSelectionKeyAttachment.java
>>>>>> (working copy)
>>>>>> @@ -1,101 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import com.sun.grizzly.CallbackHandler;
>>>>>> -import java.nio.channels.SelectionKey;
>>>>>> -import java.util.concurrent.atomic.AtomicReference;
>>>>>> -
>>>>>> -/**
>>>>>> - * {_at_link SelectionKey} attachment, which wraps {_at_link
>>>>>> CallbackHandler}
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public class CallbackHandlerSelectionKeyAttachment extends
>>>>>> SelectionKeyAttachmentWrapper<CallbackHandler> {
>>>>>> - private static
>>>>>> ConcurrentLinkedQueuePool<CallbackHandlerSelectionKeyAttachment>
>>>>>> pool =
>>>>>> - new
>>>>>> ConcurrentLinkedQueuePool<CallbackHandlerSelectionKeyAttachment>() {
>>>>>> -
>>>>>> - @Override
>>>>>> - public CallbackHandlerSelectionKeyAttachment
>>>>>> newInstance() {
>>>>>> - return new
>>>>>> CallbackHandlerSelectionKeyAttachment();
>>>>>> - }
>>>>>> - };
>>>>>> -
>>>>>> - // Is used for key pooling
>>>>>> - private AtomicReference<SelectionKey> associatedKey = new
>>>>>> AtomicReference<SelectionKey>();
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Creates the {_at_link CallbackHandler} to the {_at_link
>>>>>> SelectionKey}
>>>>>> - * CallbackHandler will not be attached directly, but wrapped
>>>>>> with
>>>>>> - * <code>CallbackHandlerSelectionKeyAttachment</code>
>>>>>> - */
>>>>>> - public static CallbackHandlerSelectionKeyAttachment create(
>>>>>> - CallbackHandler callbackHandler) {
>>>>>> - CallbackHandlerSelectionKeyAttachment attachment =
>>>>>> pool.poll();
>>>>>> -
>>>>>> - attachment.setAttachment(callbackHandler);
>>>>>> - return attachment;
>>>>>> - }
>>>>>> -
>>>>>> - private CallbackHandlerSelectionKeyAttachment() {
>>>>>> - }
>>>>>> -
>>>>>> - public void associateKey(SelectionKey selectionKey) {
>>>>>> - associatedKey.set(selectionKey);
>>>>>> - }
>>>>>> -
>>>>>> - @Override
>>>>>> - public void release(SelectionKey selectionKey) {
>>>>>> - if (associatedKey.getAndSet(null) == selectionKey) {
>>>>>> - super.release(selectionKey);
>>>>>> - pool.offer(this);
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Callback handler never should lead to the timeout situation,
>>>>>> - * as connections could use it, but perform IO operations in
>>>>>> sync. mode.
>>>>>> - * @return null
>>>>>> - */
>>>>>> - @Override
>>>>>> - public Long getTimeout() {
>>>>>> - return null;
>>>>>> - }
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SSLUtils.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SSLUtils.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SSLUtils.java
>>>>>> (working copy)
>>>>>> @@ -1,646 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import com.sun.grizzly.Controller;
>>>>>> -import java.io.ByteArrayInputStream;
>>>>>> -import java.io.EOFException;
>>>>>> -import java.io.IOException;
>>>>>> -import java.nio.ByteBuffer;
>>>>>> -import java.nio.channels.SelectableChannel;
>>>>>> -import java.security.cert.Certificate;
>>>>>> -import java.security.cert.CertificateFactory;
>>>>>> -import java.security.cert.X509Certificate;
>>>>>> -import java.util.logging.Level;
>>>>>> -import java.util.logging.Logger;
>>>>>> -import javax.net.ssl.SSLEngine;
>>>>>> -import javax.net.ssl.SSLEngineResult;
>>>>>> -import javax.net.ssl.SSLEngineResult.HandshakeStatus;
>>>>>> -import javax.net.ssl.SSLEngineResult.Status;
>>>>>> -
>>>>>> -/**
>>>>>> - * SSL over NIO utility class. The class handle the SSLEngine
>>>>>> operations
>>>>>> - * needed to support SSL over NIO.
>>>>>> - *
>>>>>> - * TODO: Create an object that Wrap SSLEngine and its associated
>>>>>> buffers.
>>>>>> - *
>>>>>> - * @author Jeanfrancois Arcand
>>>>>> - */
>>>>>> -public class SSLUtils {
>>>>>> -
>>>>>> - /**
>>>>>> - * The maximum size a ByteBuffer can take.
>>>>>> - */
>>>>>> - public final static int MAX_BB_SIZE = 48 * 4096;
>>>>>> -
>>>>>> -
>>>>>> - /*
>>>>>> - * An empty ByteBuffer used for handshaking
>>>>>> - */
>>>>>> - protected final static ByteBuffer hsBB = ByteBuffer.allocate(0);
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The time to wait before timing out when reading bytes
>>>>>> - */
>>>>>> - private static int readTimeout = 30000;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Read and decrypt bytes from the underlying SSL connections.
>>>>>> - * @param socketChannel underlying socket channel
>>>>>> - * @param sslEngine{_at_link SSLEngine}
>>>>>> - * @param byteBuffer buffer for application decrypted data
>>>>>> - * @param inputBB buffer for reading enrypted data from socket
>>>>>> - * @return number of bytes read
>>>>>> - * @throws java.io.IOException
>>>>>> - */
>>>>>> - public static int doSecureRead(SelectableChannel channel,
>>>>>> SSLEngine sslEngine,
>>>>>> - ByteBuffer byteBuffer, ByteBuffer inputBB) throws
>>>>>> IOException {
>>>>>> -
>>>>>> - int initialPosition = byteBuffer.position();
>>>>>> - int byteRead = 0;
>>>>>> -
>>>>>> - // We need to make sure the unwrap worked properly and we
>>>>>> have all
>>>>>> - // the packets properly read. If the SSLEngine fail to
>>>>>> unwrap all the
>>>>>> - // bytes, the byteBuffer will be empty event if some
>>>>>> encrypted bytes
>>>>>> - // are available.
>>>>>> - while (byteBuffer.position() == initialPosition){
>>>>>> - int currentRead = SSLUtils.doRead(channel, inputBB,
>>>>>> - sslEngine,readTimeout);
>>>>>> -
>>>>>> - if (currentRead > 0) {
>>>>>> - byteRead += currentRead;
>>>>>> - }
>>>>>> -
>>>>>> - if (currentRead > 0 || inputBB.position() > 0) {
>>>>>> - try{
>>>>>> - byteBuffer = SSLUtils.unwrapAll(byteBuffer,
>>>>>> - inputBB, sslEngine);
>>>>>> -
>>>>>> - if (currentRead == -1 &&
>>>>>> - byteBuffer.position() ==
>>>>>> initialPosition) {
>>>>>> - // if last read was -1 and unwrap decoded
>>>>>> nothing then return -1
>>>>>> - byteRead = -1;
>>>>>> - break;
>>>>>> - }
>>>>>> - } catch (IOException ex){
>>>>>> - Logger logger = Controller.logger();
>>>>>> - if ( logger.isLoggable(Level.FINE) )
>>>>>> -
>>>>>> logger.log(Level.FINE,"SSLUtils.unwrapAll",ex);
>>>>>> - return -1;
>>>>>> - }
>>>>>> - } else if (currentRead == -1) {
>>>>>> - byteRead = -1;
>>>>>> - break;
>>>>>> - } else {
>>>>>> - break;
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - return byteRead;
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Read encrypted bytes using an{_at_link SSLEngine}.
>>>>>> - * @param channel The {_at_link SelectableChannel}
>>>>>> - * @param inputBB The byteBuffer to store encrypted bytes
>>>>>> - * @param sslEngine The{_at_link SSLEngine} uses to manage the
>>>>>> - * SSL operations.
>>>>>> - * @param timeout The Selector.select() timeout value. A
>>>>>> value of 0 will
>>>>>> - * be exectuted as a Selector.selectNow();
>>>>>> - * @return the bytes read.
>>>>>> - */
>>>>>> - public static int doRead(SelectableChannel channel,
>>>>>> ByteBuffer inputBB,
>>>>>> - SSLEngine sslEngine, int timeout) {
>>>>>> -
>>>>>> - if (channel == null) return -1;
>>>>>> -
>>>>>> - try {
>>>>>> - int bytesRead = Utils.readWithTemporarySelector(channel,
>>>>>> - inputBB, timeout);
>>>>>> -
>>>>>> - if (bytesRead == -1) {
>>>>>> - try {
>>>>>> - sslEngine.closeInbound();
>>>>>> - } catch (IOException ex) {
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - return bytesRead;
>>>>>> - } catch (Throwable t){
>>>>>> - Logger logger = Controller.logger();
>>>>>> - if ( logger.isLoggable(Level.FINEST) ){
>>>>>> - logger.log(Level.FINEST,"doRead",t);
>>>>>> - }
>>>>>> - return -1;
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Unwrap all encrypted bytes from <code>inputBB</code> to
>>>>>> - * {_at_link ByteBuffer} using the{_at_link SSLEngine}
>>>>>> - * @param byteBuffer the decrypted ByteBuffer
>>>>>> - * @param inputBB the encrypted ByteBuffer
>>>>>> - * @param sslEngine The SSLEngine used to manage the SSL
>>>>>> operations.
>>>>>> - * @return the decrypted ByteBuffer
>>>>>> - * @throws java.io.IOException
>>>>>> - */
>>>>>> - public static ByteBuffer unwrapAll(ByteBuffer byteBuffer,
>>>>>> - ByteBuffer inputBB, SSLEngine sslEngine) throws
>>>>>> IOException{
>>>>>> -
>>>>> - SSLEngineResult result = null;
>>>>> - do{
>>>>> - try{
>>>>> - result = unwrap(byteBuffer,inputBB,sslEngine);
>>>>> - } catch (Throwable ex){
>>>>> - Logger logger = Controller.logger();
>>>>> - if ( logger.isLoggable(Level.FINE) ){
>>>>> - logger.log(Level.FINE,"unwrap",ex);
>>>>> - }
>>>>> - inputBB.compact();
>>>>> - }
>>>>> -
>>>>> - if (result != null){
>>>>> - switch (result.getStatus()) {
>>>>> -
>>>>> - case BUFFER_UNDERFLOW:
>>>>> - case CLOSED:
>>>>> - // Closed or need more data.
>>>>> - break;
>>>>> - case OK:
>>>>> - if (result.getHandshakeStatus()
>>>>> - == HandshakeStatus.NEED_TASK) {
>>>>> - executeDelegatedTask(sslEngine);
>>>>> - }
>>>>> - break;
>>>>> - case BUFFER_OVERFLOW:
>>>>> - byteBuffer = reallocate(byteBuffer);
>>>>> - break;
>>>>> - default:
>>>>> - throw new
>>>>> - IOException("Unwrap error: "+
>>>>> result.getStatus());
>>>>> - }
>>>>> - }
>>>>> - } while (inputBB.position() > 0 && result!= null &&
>>>>> - result.getStatus() != Status.BUFFER_UNDERFLOW);
>>>>> - return byteBuffer;
>>>>> - }
>>>>> -
>>>>> -
>>>>> - /**
>>>>> - * Unwrap available encrypted bytes from <code>inputBB</code> to
>>>>> - * {_at_link ByteBuffer} using the{_at_link SSLEngine}
>>>>> - * @param byteBuffer the decrypted ByteBuffer
>>>>> - * @param inputBB the encrypted ByteBuffer
>>>>> - * @param sslEngine The SSLEngine used to manage the SSL
>>>>> operations.
>>>>> - * @return SSLEngineResult of the SSLEngine.unwrap operation.
>>>>> - * @throws java.io.IOException
>>>>> - */
>>>>> - public static SSLEngineResult unwrap(ByteBuffer byteBuffer,
>>>>> - ByteBuffer inputBB, SSLEngine sslEngine) throws
>>>>> IOException{
>>>>> -
>>>>> - // Logging block
>>>>> - if (Controller.logger().isLoggable(Level.FINE)) {
>>>>> - Controller.logger().log(Level.FINE, "start unwrap.
>>>>> engine: " +
>>>>> - sslEngine + " buffer: " +
>>>>> - byteBuffer + " secured: " + inputBB);
>>>>> - if (Controller.logger().isLoggable(Level.FINER)) {
>>>>> - StackTraceElement[] stackTraceElements =
>>>>> Thread.currentThread().getStackTrace();
>>>>> - StringBuilder buffer = new StringBuilder();
>>>>> - for (StackTraceElement element :
>>>>> stackTraceElements) {
>>>>> - buffer.append('\n');
>>>>> - buffer.append(element);
>>>>> - }
>>>>> -
>>>>> - Controller.logger().log(Level.FINER,
>>>>> buffer.toString());
>>>>> - }
>>>>> - }
>>>>> -
>>>>> - inputBB.flip();
>>>>> - SSLEngineResult result = sslEngine.unwrap(inputBB,
>>>>> byteBuffer);
>>>>> - inputBB.compact();
>>>>> -
>>>>> - // Logging block
>>>>> - if (Controller.logger().isLoggable(Level.FINE)) {
>>>>> - int bytesProduced = result.bytesProduced();
>>>>> - Controller.logger().log(Level.FINE, "after unwrap.
>>>>> engine: " +
>>>>> - sslEngine + " buffer: " +
>>>>> - byteBuffer + " secured: " + inputBB + "
>>>>> consumed: " +
>>>>> - result.bytesConsumed() + " produced: " +
>>>>> bytesProduced +
>>>>> - " status: " + result.getStatus() +
>>>>> - " handshakeStatus: " +
>>>>> result.getHandshakeStatus());
>>>>> - if (bytesProduced > 0 &&
>>>>> Controller.logger().isLoggable(Level.FINER)) {
>>>>> - byteBuffer.position(byteBuffer.position() -
>>>>> bytesProduced);
>>>>> - byte[] producedBytes = new byte[bytesProduced];
>>>>> - byteBuffer.get(producedBytes);
>>>>> - Controller.logger().log(Level.FINER, new
>>>>> String(producedBytes));
>>>>> - }
>>>>> - }
>>>>> -
>>>>> - return result;
>>>>> - }
>>>>> -
>>>>> -
>>>>> - /**
>>>>> - * Encrypt bytes.
>>>>> - * @param byteBuffer the decrypted ByteBuffer
>>>>> - * @param outputBB the encrypted ByteBuffer
>>>>> - * @param sslEngine The SSLEngine used to manage the SSL
>>>>> operations.
>>>>> - * @return SSLEngineResult of the SSLEngine.wrap operation.
>>>>> - * @throws java.io.IOException
>>>>> - */
>>>>> - public static SSLEngineResult wrap(ByteBuffer byteBuffer,
>>>>> - ByteBuffer outputBB, SSLEngine sslEngine) throws
>>>>> IOException {
>>>>> -
>>>>> - outputBB.clear();
>>>>> - SSLEngineResult result = sslEngine.wrap(byteBuffer,
>>>>> outputBB);
>>>>> - outputBB.flip();
>>>>> - return result;
>>>>> - }
>>>>> -
>>>>> -
>>>>> - /**
>>>>> - * Resize a ByteBuffer.
>>>>> - * @param byteBuffer {_at_link ByteBuffer} to re-allocate
>>>>> - * @return {_at_link ByteBuffer} reallocted
>>>>> - * @throws java.io.IOException
>>>>> - */
>>>>> - private static ByteBuffer reallocate(ByteBuffer byteBuffer)
>>>>> - throws IOException{
>>>>> -
>>>>> - if (byteBuffer.capacity() > MAX_BB_SIZE){
>>>>> - throw new IOException("Unwrap error: BUFFER_OVERFLOW");
>>>>> - }
>>>>> - ByteBuffer tmp = ByteBuffer.allocate(byteBuffer.capacity()
>>>>> * 2);
>>>>> - byteBuffer.flip();
>>>>> - tmp.put(byteBuffer);
>>>>> - byteBuffer = tmp;
>>>>> - return byteBuffer;
>>>>> - }
>>>>> -
>>>>> -
>>>>> - /**
>>>>> - * Complete hanshakes operations.
>>>>> - * @param sslEngine The SSLEngine used to manage the SSL
>>>>> operations.
>>>>> - * @return SSLEngineResult.HandshakeStatus
>>>>> - */
>>>>> - public static SSLEngineResult.HandshakeStatus
>>>>> - executeDelegatedTask(SSLEngine sslEngine) {
>>>>> -
>>>>> - Runnable runnable;
>>>>> - while ((runnable = sslEngine.getDelegatedTask()) != null) {
>>>>> - runnable.run();
>>>>> - }
>>>>> - return sslEngine.getHandshakeStatus();
>>>>> - }
>>>>> -
>>>>> -
>>>>> - /**
>>>>> - * Perform an SSL handshake using the SSLEngine.
>>>>> - * Note: If handshake was done successfully - outputBB will be
>>>>> cleared out,
>>>>> - * but this is *not* ready data to be written.
>>>>> - *
>>>>> - * @param channel the {_at_link SelectableChannel}
>>>>> - * @param byteBuffer The application {_at_link ByteBuffer}
>>>>> - * @param inputBB The encrypted input {_at_link ByteBuffer}
>>>>> - * @param outputBB The encrypted output {_at_link ByteBuffer}
>>>>> - * @param sslEngine The SSLEngine used.
>>>>> - * @param handshakeStatus The current handshake status
>>>>> - * @return byteBuffer the new ByteBuffer
>>>>> - * @throws java.io.IOException
>>>>> - * @throw IOException if the handshake fail.
>>>>> - */
>>>>> - public static ByteBuffer doHandshake(SelectableChannel channel,
>>>>> - ByteBuffer byteBuffer, ByteBuffer inputBB, ByteBuffer
>>>>> outputBB,
>>>>> - SSLEngine sslEngine, HandshakeStatus handshakeStatus)
>>>>> - throws IOException {
>>>>> - return doHandshake(channel, byteBuffer, inputBB, outputBB,
>>>>> - sslEngine, handshakeStatus, readTimeout);
>>>>> - }
>>>>> -
>>>>> -
>>>>> - /**
>>>>> - * Perform an SSL handshake using the SSLEngine.
>>>>> - * Note: If handshake was done successfully - outputBB will be
>>>>> cleared out,
>>>>> - * but this is *not* ready data to be written.
>>>>> - *
>>>>> - * @param channel the {_at_link SelectableChannel}
>>>>> - * @param byteBuffer The application {_at_link ByteBuffer}
>>>>> - * @param inputBB The encrypted input {_at_link ByteBuffer}
>>>>> - * @param outputBB The encrypted output {_at_link ByteBuffer}
>>>>> - * @param sslEngine The SSLEngine used.
>>>>> - * @param handshakeStatus The current handshake status
>>>>> - * @param timeout
>>>>> - * @return byteBuffer the new ByteBuffer
>>>>> - * @throws java.io.IOException
>>>>> - * @throws IOException if the handshake fail.
>>>>> - */
>>>>> - public static ByteBuffer doHandshake(SelectableChannel channel,
>>>>> - ByteBuffer byteBuffer, ByteBuffer inputBB, ByteBuffer
>>>>> outputBB,
>>>>> - SSLEngine sslEngine, HandshakeStatus
>>>>> handshakeStatus,int timeout)
>>>>> - throws IOException {
>>>>> - return doHandshake(channel, byteBuffer, inputBB, outputBB,
>>>>> - sslEngine, handshakeStatus, timeout,
>>>>> inputBB.position() > 0);
>>>>> - }
>>>>> -
>>>>> - /**
>>>>> - * Perform an SSL handshake using the SSLEngine.
>>>>> - * Note: If handshake was done successfully - outputBB will be
>>>>> cleared out,
>>>>> - * but this is *not* ready data to be written.
>>>>> - *
>>>>> - * @param channel the {_at_link SelectableChannel}
>>>>> - * @param byteBuffer The application {_at_link ByteBuffer}
>>>>> - * @param inputBB The encrypted input {_at_link ByteBuffer}
>>>>> - * @param outputBB The encrypted output {_at_link ByteBuffer}
>>>>> - * @param sslEngine The SSLEngine used.
>>>>> - * @param handshakeStatus The current handshake status
>>>>> - * @param timeout
>>>>> - * @param useReadyBuffer does method need to read data before
>>>>> UNWRAP or use
>>>>> - * a data from inputBB
>>>>> - * @return byteBuffer the new ByteBuffer
>>>>> - * @throws java.io.IOException
>>>>> - * @throws IOException if the handshake fail.
>>>>> - */
>>>>> - public static ByteBuffer doHandshake(SelectableChannel channel,
>>>>> - ByteBuffer byteBuffer, ByteBuffer inputBB, ByteBuffer
>>>>> outputBB,
>>>>> - SSLEngine sslEngine, HandshakeStatus handshakeStatus,
>>>>> - int timeout,boolean useReadyBuffer)
>>>>> - throws IOException {
>>>>> -
>>>>> - SSLEngineResult result;
>>>>> - int eof = timeout > 0 ? 0 : -1;
>>>>> - while (handshakeStatus != HandshakeStatus.FINISHED){
>>>>> - switch (handshakeStatus) {
>>>>> - case NEED_UNWRAP:
>>>>> - if (!useReadyBuffer) {
>>>>> - if (doRead(channel, inputBB, sslEngine,
>>>>> timeout) <= eof) {
>>>>> - try {
>>>>> - sslEngine.closeInbound();
>>>>> - } catch (IOException ex) {
>>>>> - Logger logger = Controller.logger();
>>>>> - if (logger.isLoggable(Level.FINE)) {
>>>>> - logger.log(Level.FINE,
>>>>> "closeInbound", ex);
>>>>> - }
>>>>> - }
>>>>> - throw new EOFException("Connection
>>>>> closed");
>>>>> - }
>>>>> - } else {
>>>>> - useReadyBuffer = false;
>>>>> - }
>>>>> -
>>>>> - while (handshakeStatus ==
>>>>> HandshakeStatus.NEED_UNWRAP) {
>>>>> - result =
>>>>> unwrap(byteBuffer,inputBB,sslEngine);
>>>>> - handshakeStatus =
>>>>> result.getHandshakeStatus();
>>>>> -
>>>>> - if (result.getStatus() ==
>>>>> Status.BUFFER_UNDERFLOW){
>>>>> - break;
>>>>> - }
>>>>> -
>>>>> - switch (result.getStatus()) {
>>>>> - case OK:
>>>>> - switch (handshakeStatus) {
>>>>> - case NOT_HANDSHAKING:
>>>>> - throw new IOException("No
>>>>> Hanshake");
>>>>> -
>>>>> - case NEED_TASK:
>>>>> - handshakeStatus =
>>>>> -
>>>>> executeDelegatedTask(sslEngine);
>>>>> - break;
>>>>> -
>>>>> - case FINISHED:
>>>>> - return byteBuffer;
>>>>> - }
>>>>> - break;
>>>>> - case BUFFER_OVERFLOW:
>>>>> - byteBuffer = reallocate(byteBuffer);
>>>>> - break;
>>>>> - default:
>>>>> - throw new IOException("Handshake
>>>>> exception: " +
>>>>> - result.getStatus());
>>>>> - }
>>>>> - }
>>>>> -
>>>>> - if (handshakeStatus !=
>>>>> HandshakeStatus.NEED_WRAP) {
>>>>> - break;
>>>>> - }
>>>>> - case NEED_WRAP:
>>>>> - result = wrap(hsBB,outputBB,sslEngine);
>>>>> - handshakeStatus = result.getHandshakeStatus();
>>>>> - switch (result.getStatus()) {
>>>>> - case OK:
>>>>> -
>>>>> - if (handshakeStatus ==
>>>>> HandshakeStatus.NEED_TASK) {
>>>>> - handshakeStatus =
>>>>> executeDelegatedTask(sslEngine);
>>>>> - }
>>>>> -
>>>>> - // Flush all Server bytes to the client.
>>>>> - if (channel != null) {
>>>>> - OutputWriter.flushChannel(
>>>>> - channel, outputBB);
>>>>> - outputBB.clear();
>>>>> - }
>>>>> - break;
>>>>> - default:
>>>>> - throw new IOException("Handshaking
>>>>> error: "
>>>>> - + result.getStatus());
>>>>> - }
>>>>> - break;
>>>>> - default:
>>>>> - throw new RuntimeException("Invalid
>>>>> Handshaking State" +
>>>>> - handshakeStatus);
>>>>> - }
>>>>> - }
>>>>> - return byteBuffer;
>>>>> - }
>>>>> -
>>>>> -
>>>>> - /**
>>>>> - * Get the peer certificate list by initiating a new handshake.
>>>>> - * @param channel {_at_link SelectableChannel}
>>>>> - * @param needClientAuth
>>>>> - * @return Object[] An array of X509Certificate.
>>>>> - * @throws java.io.IOException
>>>>> - */
>>>>> - public static Object[]
>>>>> doPeerCertificateChain(SelectableChannel channel,
>>>>> - ByteBuffer byteBuffer, ByteBuffer inputBB, ByteBuffer
>>>>> outputBB,
>>>>> - SSLEngine sslEngine, boolean needClientAuth, int
>>>>> timeout) throws IOException {
>>>>> -
>>>>> - Logger logger = Controller.logger();
>>>>> -
>>>>> - Certificate[] certs=null;
>>>>> - try {
>>>>> - certs = sslEngine.getSession().getPeerCertificates();
>>>>> - } catch( Throwable t ) {
>>>>> - if ( logger.isLoggable(Level.FINE))
>>>>> - logger.log(Level.FINE,"Error getting client
>>>>> certs",t);
>>>>> - }
>>>>> -
>>>>> - if (certs == null && needClientAuth){
>>>>> - sslEngine.getSession().invalidate();
>>>>> - sslEngine.setNeedClientAuth(true);
>>>>> - sslEngine.beginHandshake();
>>>>> -
>>>>> - ByteBuffer origBB = byteBuffer;
>>>>> - // In case the application hasn't read all the body
>>>>> bytes.
>>>>> - if ( origBB.position() != origBB.limit() ){
>>>>> - byteBuffer = ByteBuffer.allocate(origBB.capacity());
>>>>> - } else {
>>>>> - byteBuffer.clear();
>>>>> - }
>>>>> - outputBB.position(0);
>>>>> - outputBB.limit(0);
>>>>> -
>>>>> - // We invalidate ssl seesion, so no need for unwrap
>>>>> - try{
>>>>> - doHandshake(channel, byteBuffer, inputBB, outputBB,
>>>>> - sslEngine, HandshakeStatus.NEED_WRAP,
>>>>> timeout);
>>>>> - } catch (Throwable ex){
>>>>> - if ( logger.isLoggable(Level.FINE))
>>>>> - logger.log(Level.FINE,"Error during
>>>>> handshake",ex);
>>>>> - return null;
>>>>> - } finally {
>>>>> - byteBuffer = origBB;
>>>>> - byteBuffer.clear();
>>>>> - }
>>>>> -
>>>>> - try {
>>>>> - certs = sslEngine.getSession().getPeerCertificates();
>>>>> - } catch( Throwable t ) {
>>>>> - if ( logger.isLoggable(Level.FINE))
>>>>> - logger.log(Level.FINE,"Error getting client
>>>>> certs",t);
>>>>> - }
>>>>> - }
>>>>> -
>>>>> - if( certs==null ) return null;
>>>>> -
>>>>> - X509Certificate[] x509Certs = new
>>>>> X509Certificate[certs.length];
>>>>> - for(int i=0; i < certs.length; i++) {
>>>>> - if( certs[i] instanceof X509Certificate ) {
>>>>> - x509Certs[i] = (X509Certificate)certs[i];
>>>>> - } else {
>>>>> - try {
>>>>> - byte [] buffer = certs[i].getEncoded();
>>>>>> - CertificateFactory cf =
>>>>>> - CertificateFactory.getInstance("X.509");
>>>>>> - ByteArrayInputStream stream = new
>>>>>> ByteArrayInputStream(buffer);
>>>>>> - x509Certs[i] = (X509Certificate)
>>>>>> - cf.generateCertificate(stream);
>>>>>> - } catch(Exception ex) {
>>>>>> - logger.log(Level.INFO,"Error translating cert
>>>>>> " + certs[i],
>>>>>> - ex);
>>>>>> - return null;
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - if(logger.isLoggable(Level.FINE))
>>>>>> - logger.log(Level.FINE,"Cert #" + i + " = " +
>>>>>> x509Certs[i]);
>>>>>> - }
>>>>>> -
>>>>>> - if(x509Certs.length < 1)
>>>>>> - return null;
>>>>>> -
>>>>>> - return x509Certs;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Allocate themandatory {_at_link ByteBuffer}s. Since the
>>>>>> ByteBuffer
>>>>>> - * are maintaned on the {_at_link WorkerThread} lazily, this method
>>>>>> - * makes sure the ByteBuffers are properly allocated and
>>>>>> configured.
>>>>>> - */
>>>>>> - public static void allocateThreadBuffers(int
>>>>>> defaultBufferSize) {
>>>>>> - final WorkerThread workerThread =
>>>>>> - (WorkerThread)Thread.currentThread();
>>>>>> - ByteBuffer byteBuffer = workerThread.getByteBuffer();
>>>>>> - ByteBuffer outputBB = workerThread.getOutputBB();
>>>>>> - ByteBuffer inputBB = workerThread.getInputBB();
>>>>>> -
>>>>>> - int expectedSize = workerThread.getSSLEngine().getSession()
>>>>>> - .getPacketBufferSize();
>>>>>> - if (defaultBufferSize < expectedSize){
>>>>>> - defaultBufferSize = expectedSize;
>>>>>> - }
>>>>>> -
>>>>>> - if (inputBB != null && inputBB.capacity() <
>>>>>> defaultBufferSize) {
>>>>>> - ByteBuffer newBB =
>>>>>> ByteBuffer.allocate(defaultBufferSize);
>>>>>> - inputBB.flip();
>>>>>> - newBB.put(inputBB);
>>>>>> - inputBB = newBB;
>>>>>> - } else if (inputBB == null){
>>>>>> - inputBB = ByteBuffer.allocate(defaultBufferSize);
>>>>>> - }
>>>>>> -
>>>>>> - if (outputBB == null) {
>>>>>> - outputBB = ByteBuffer.allocate(defaultBufferSize);
>>>>>> - }
>>>>>> -
>>>>>> - if (byteBuffer == null){
>>>>>> - byteBuffer = ByteBuffer.allocate(defaultBufferSize * 2);
>>>>>> - }
>>>>>> -
>>>>>> - expectedSize = workerThread.getSSLEngine().getSession()
>>>>>> - .getApplicationBufferSize();
>>>>>> - if ( expectedSize > byteBuffer.capacity() ) {
>>>>>> - ByteBuffer newBB = ByteBuffer.allocate(expectedSize);
>>>>>> - byteBuffer.flip();
>>>>>> - newBB.put(byteBuffer);
>>>>>> - byteBuffer = newBB;
>>>>>> - }
>>>>>> -
>>>>>> - workerThread.setInputBB(inputBB);
>>>>>> - workerThread.setOutputBB(outputBB);
>>>>>> - workerThread.setByteBuffer(byteBuffer);
>>>>>> -
>>>>>> - outputBB.position(0);
>>>>>> - outputBB.limit(0);
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - public static int getReadTimeout() {
>>>>>> - return readTimeout;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - public static void setReadTimeout(int aReadTimeout) {
>>>>>> - readTimeout = aReadTimeout;
>>>>>> - }
>>>>>> -
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ConnectionCloseHandler.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ConnectionCloseHandler.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ConnectionCloseHandler.java
>>>>>> (working copy)
>>>>>> @@ -1,73 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import com.sun.grizzly.Handler;
>>>>>> -import java.nio.channels.SelectionKey;
>>>>>> -
>>>>>> -/**
>>>>>> - * Simple listener to be used when an application needs to be
>>>>>> notified when a
>>>>>> - * a {_at_link SelectorHandler}, {_at_link ConnectionHandler} or {_at_link
>>>>>> SelectionKeyHandler}
>>>>>> - * close a connection ({_at_link
>>>>>> ConnectionCloseHandler#locallyClosed}), or when a
>>>>>> - * remote client close the connection ({_at_link
>>>>>> ConnectionCloseHandler#remotlyClosed}).
>>>>>> - *
>>>>>> - * Note that when the connection is closed remotly, the ({_at_link
>>>>>> ConnectionCloseHandler#remotlyClosed})
>>>>>> - * will be invoked immediately followed by a ({_at_link
>>>>>> ConnectionCloseHandler#locallyClosed}), as
>>>>>> - * Grizzly will discard the server side dirty {_at_link SelectionKey}.
>>>>>> - *
>>>>>> - * @author Jeanfrancois Arcand
>>>>>> - */
>>>>>> -public interface ConnectionCloseHandler extends Handler {
>>>>>> -
>>>>>> - /**
>>>>>> - * Invoked when the a {_at_link SelectionKey} is cancelled
>>>>>> locally, e.g. by
>>>>>> - * one {_at_link SelectorHandler}, {_at_link ConnectionHandler} or
>>>>>> {_at_link SelectionKeyHandler}
>>>>>> - *
>>>>>> - * @param key a {_at_link SelectionKey}
>>>>>> - */
>>>>>> - void locallyClosed(SelectionKey key);
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Invoked when a remote connection is being closed.
>>>>>> - *
>>>>>> - * @param key a {_at_link SelectionKey}
>>>>>> - */
>>>>>> - void remotlyClosed(SelectionKey key);
>>>>>> -
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ByteBufferFactory.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ByteBufferFactory.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ByteBufferFactory.java
>>>>>> (working copy)
>>>>>> @@ -1,148 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.nio.ByteBuffer;
>>>>>> -
>>>>>> -
>>>>>> -/**
>>>>>> - * Factory class used to create {_at_link ByteBuffer}.
>>>>>> - *
>>>>>> - * The ByteBuffer can by direct (ByteBufferType.DIRECT) or heap
>>>>>> (ByteBufferType.HEAP)
>>>>>> - * a view (ByteBufferType.DIRECT_VIEW) or ByteBufferType.HEAP_VIEW)
>>>>>> - * or backed by an array (ByteBufferType.HEAP_ARRAY).
>>>>>> - *
>>>>>> - * @author Jean-Francois Arcand
>>>>>> - */
>>>>>> -public class ByteBufferFactory{
>>>>>> -
>>>>>> - /**
>>>>>> - * An enumeration of all type of ByteBuffer this object can
>>>>>> create.
>>>>>> - */
>>>>>> - public enum ByteBufferType { DIRECT, HEAP, DIRECT_VIEW,
>>>>>> HEAP_VIEW, HEAP_ARRAY }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The default capacity of the default view of a {_at_link
>>>>>> ByteBuffer}
>>>>>> - */
>>>>>> - public static int defaultCapacity = 8192;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The default capacity of the {_at_link ByteBuffer} from which
>>>>>> views
>>>>>> - * will be created.
>>>>>> - */
>>>>>> - public static int capacity = 4000000;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The {_at_link ByteBuffer} used to create direct byteBuffer view.
>>>>>> - */
>>>>>> - private static ByteBuffer directByteBuffer;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The {_at_link ByteBuffer} used to create direct byteBuffer view.
>>>>>> - */
>>>>>> - private static ByteBuffer heapByteBuffer;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Private constructor.
>>>>>> - */
>>>>>> - private ByteBufferFactory(){
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return a direct {_at_link ByteBuffer} view
>>>>>> - * @param size the Size of the {_at_link ByteBuffer}
>>>>>> - * @param direct - direct or non-direct buffer?
>>>>>> - * @return {_at_link ByteBuffer}
>>>>>> - */
>>>>>> - public synchronized static ByteBuffer allocateView(int size,
>>>>>> boolean direct){
>>>>>> - if (direct && (directByteBuffer == null ||
>>>>>> - (directByteBuffer.capacity() -
>>>>>> directByteBuffer.limit() < size))){
>>>>>> - directByteBuffer = ByteBuffer.allocateDirect(capacity);
>>>>>> - } else if (heapByteBuffer == null ||
>>>>>> - (heapByteBuffer.capacity() -
>>>>>> heapByteBuffer.limit() < size)){
>>>>>> - heapByteBuffer = ByteBuffer.allocate(capacity);
>>>>>> - }
>>>>>> - ByteBuffer byteBuffer = (direct ? directByteBuffer :
>>>>>> heapByteBuffer);
>>>>>> -
>>>>>> - byteBuffer.limit(byteBuffer.position() + size);
>>>>>> - ByteBuffer view = byteBuffer.slice();
>>>>>> - byteBuffer.position(byteBuffer.limit());
>>>>>> -
>>>>>> - return view;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return a direct {_at_link ByteBuffer} view using the default
>>>>>> size.
>>>>>> - * @param direct - direct or non-direct buffer
>>>>>> - * @return {_at_link ByteBuffer}
>>>>>> - */
>>>>>> - public synchronized static ByteBuffer allocateView(boolean
>>>>>> direct){
>>>>>> - return allocateView(defaultCapacity, direct);
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return a new ByteBuffer based on the requested
>>>>>> <code>ByteBufferType</code>
>>>>>> - * @param type the requested <code>ByteBufferType</code>
>>>>>> - * @param size the {_at_link ByteBuffer} size.
>>>>>> - * @return a new ByteBuffer based on the requested
>>>>>> <code>ByteBufferType</code>
>>>>>> - */
>>>>>> - public static ByteBuffer allocate(ByteBufferType type,int size){
>>>>>> - if (type == ByteBufferType.HEAP){
>>>>>> - return ByteBuffer.allocate(size);
>>>>>> - } else if (type == ByteBufferType.HEAP_VIEW) {
>>>>>> - return allocateView(size,false);
>>>>>> - } else if (type == ByteBufferType.HEAP_ARRAY) {
>>>>>> - return ByteBuffer.wrap(new byte[size]);
>>>>>> - } else if (type == ByteBufferType.DIRECT){
>>>>>> - return ByteBuffer.allocateDirect(size);
>>>>>> - } else if (type == ByteBufferType.DIRECT_VIEW){
>>>>>> - return allocateView(size,true);
>>>>>> - } else {
>>>>>> - throw new IllegalStateException("Invalid ByteBuffer
>>>>>> Type");
>>>>>> - }
>>>>>> - }
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectionKeyOP.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectionKeyOP.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectionKeyOP.java
>>>>>> (working copy)
>>>>>> @@ -1,169 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import com.sun.grizzly.CallbackHandler;
>>>>>> -import java.net.SocketAddress;
>>>>>> -import java.nio.channels.SelectableChannel;
>>>>>> -import java.nio.channels.SelectionKey;
>>>>>> -
>>>>>> -/**
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public class SelectionKeyOP {
>>>>>> - private int op;
>>>>>> - private SelectionKey key;
>>>>>> - private SelectableChannel channel;
>>>>>> -
>>>>>> - private static ConcurrentLinkedQueuePool<SelectionKeyOP>
>>>>>> readWritePool =
>>>>>> - new ConcurrentLinkedQueuePool<SelectionKeyOP>() {
>>>>>> - @Override
>>>>>> - public SelectionKeyOP newInstance() {
>>>>>> - return new SelectionKeyOP();
>>>>>> - }
>>>>>> - };
>>>>>> -
>>>>>> - private static ConcurrentLinkedQueuePool<SelectionKeyOP>
>>>>>> connectPool =
>>>>>> - new ConcurrentLinkedQueuePool<SelectionKeyOP>() {
>>>>>> - @Override
>>>>>> - public SelectionKeyOP newInstance() {
>>>>>> - return new ConnectSelectionKeyOP();
>>>>>> - }
>>>>>> - };
>>>>>> -
>>>>>> - public static SelectionKeyOP aquireSelectionKeyOP(int op) {
>>>>>> - if (op == SelectionKey.OP_READ || op ==
>>>>>> SelectionKey.OP_WRITE ||
>>>>>> - op == (SelectionKey.OP_WRITE |
>>>>>> SelectionKey.OP_READ)) {
>>>>>> - SelectionKeyOP operation = readWritePool.poll();
>>>>>> - return operation;
>>>>>> - } else if (op == SelectionKey.OP_CONNECT) {
>>>>>> - SelectionKeyOP operation = connectPool.poll();
>>>>>> - return operation;
>>>>>> - }
>>>>>> -
>>>>>> - throw new IllegalStateException("Unknown operation or
>>>>>> operation is not supported");
>>>>>> - }
>>>>>> -
>>>>>> - public static void releaseSelectionKeyOP(SelectionKeyOP
>>>>>> operation) {
>>>>>> - int op = operation.op;
>>>>>> - operation.recycle();
>>>>>> -
>>>>>> - if (op == SelectionKey.OP_READ || op ==
>>>>>> SelectionKey.OP_WRITE ||
>>>>>> - op == (SelectionKey.OP_WRITE |
>>>>>> SelectionKey.OP_READ)) {
>>>>>> - readWritePool.offer(operation);
>>>>>> - return;
>>>>>> - } else if (op == SelectionKey.OP_CONNECT) {
>>>>>> - connectPool.offer(operation);
>>>>>> - return;
>>>>>> - }
>>>>>> -
>>>>>> - throw new IllegalStateException("Unknown operation or
>>>>>> operation is not supported");
>>>>>> - }
>>>>>> -
>>>>>> - private SelectionKeyOP() {
>>>>>> - }
>>>>>> -
>>>>>> - public int getOp() {
>>>>>> - return op;
>>>>>> - }
>>>>>> -
>>>>>> - public void setOp(int op) {
>>>>>> - this.op = op;
>>>>>> - }
>>>>>> -
>>>>>> - public SelectionKey getSelectionKey() {
>>>>>> - return key;
>>>>>> - }
>>>>>> -
>>>>>> - public void setSelectionKey(SelectionKey key) {
>>>>>> - this.key = key;
>>>>>> - }
>>>>>> -
>>>>>> - public SelectableChannel getChannel() {
>>>>>> - return channel;
>>>>>> - }
>>>>>> -
>>>>>> - public void setChannel(SelectableChannel channel) {
>>>>>> - this.channel = channel;
>>>>>> - }
>>>>>> -
>>>>>> - protected void recycle() {
>>>>>> - op = 0;
>>>>>> - key = null;
>>>>>> - channel = null;
>>>>>> - }
>>>>>> -
>>>>>> - public static class ConnectSelectionKeyOP extends
>>>>>> SelectionKeyOP {
>>>>>> - private SocketAddress localAddress;
>>>>>> - private SocketAddress remoteAddress;
>>>>>> - private CallbackHandler callbackHandler;
>>>>>> -
>>>>>> - public SocketAddress getLocalAddress() {
>>>>>> - return localAddress;
>>>>>> - }
>>>>>> -
>>>>>> - public void setLocalAddress(SocketAddress localAddress) {
>>>>>> - this.localAddress = localAddress;
>>>>>> - }
>>>>>> -
>>>>>> - public SocketAddress getRemoteAddress() {
>>>>>> - return remoteAddress;
>>>>>> - }
>>>>>> -
>>>>>> - public void setRemoteAddress(SocketAddress remoteAddress) {
>>>>>> - this.remoteAddress = remoteAddress;
>>>>>> - }
>>>>>> -
>>>>>> - public CallbackHandler getCallbackHandler() {
>>>>>> - return callbackHandler;
>>>>>> - }
>>>>>> -
>>>>>> - public void setCallbackHandler(CallbackHandler
>>>>>> callbackHandler) {
>>>>>> - this.callbackHandler = callbackHandler;
>>>>>> - }
>>>>>> -
>>>>>> - @Override
>>>>>> - protected void recycle() {
>>>>>> - localAddress = null;
>>>>>> - remoteAddress = null;
>>>>>> - &n bsp; callbackHandler = null;
>>>>>> - }
>>>>>> - }
>>>>>> -}
>>>>>> \ No newline at end of file
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/Copyable.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/Copyable.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/Copyable.java
>>>>>> (working copy)
>>>>>> @@ -1,54 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -/**
>>>>>> - * Copyable objects are able to copy their content to
>>>>>> - * other objects of the same type
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public interface Copyable {
>>>>>> - /**
>>>>>> - * Copies current object content to copy object
>>>>>> - *
>>>>>> - * @param copy represents target object, where current
>>>>>> object's content will be copied
>>>>>> - */
>>>>>> - public void copyTo(Copyable copy);
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/Interceptor.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/Interceptor.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/Interceptor.java
>>>>>> (working copy)
>>>>>> @@ -1,98 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.io.IOException;
>>>>>> -import java.nio.channels.Channel;
>>>>>> -
>>>>>> -/**
>>>>>> - * Simple interception hook used to trap events inside Grizzly core.
>>>>>> - *
>>>>>> - * @param E type of Interceptor handler
>>>>>> - * @author Jeanfrancois Arcand
>>>>>> - */
>>>>>> -public interface Interceptor<E,F extends Channel>{
>>>>>> -
>>>>>> - /**
>>>>>> - * Continue the processing
>>>>>> - */
>>>>>> - public final static int CONTINUE = 0;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Do not continue the processing.
>>>>>> - */
>>>>>> - public final static int BREAK = 1;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The request line has been parsed
>>>>>> - */
>>>>>> - public final static int REQUEST_LINE_PARSED = 0;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The response has been proceeded.
>>>>>> - */
>>>>>> - public final static int RESPONSE_PROCEEDED = 1;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The request has been buffered.
>>>>>> - */
>>>>>> - public final static int REQUEST_BUFFERED = 2;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Handle <E> and the associated handler code.
>>>>>> - * @param e
>>>>>> - * @param handlerCode
>>>>>> - * @return
>>>>>> - * @throws java.io.IOException
>>>>>> - */
>>>>>> - public int handle(E e, int handlerCode) throws IOException;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The {_at_link Channel} associated with this handler.
>>>>>> - * @param socketChannel
>>>>>> - */
>>>>>> - public void attachChannel(F channel);
>>>>>> -
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectionKeyActionAttachment.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectionKeyActionAttachment.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectionKeyActionAttachment.java
>>>>>> (working copy)
>>>>>> @@ -1,53 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.nio.channels.SelectionKey;
>>>>>> -
>>>>>> -/**
>>>>>> - * Class represents extended version of {_at_link
>>>>>> SelectionKeyAttachment},
>>>>>> - * and introduces process method, which will be called by
>>>>>> framework once
>>>>>> - * {_at_link SelectionKey} has some ready event, before actual event
>>>>>> processing.
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public abstract class SelectionKeyActionAttachment extends
>>>>>> SelectionKeyAttachment {
>>>>>> - public abstract void process(SelectionKey selectionKey);
>>>>>> - public abstract void postProcess(SelectionKey selectionKey);
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/DefaultThreadPool.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/DefaultThreadPool.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/DefaultThreadPool.java
>>>>>> (working copy)
>>>>>> @@ -1,208 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import com.sun.grizzly.Controller;
>>>>>> -import com.sun.grizzly.util.ByteBufferFactory.ByteBufferType;
>>>>>> -import java.util.concurrent.ExecutorService;
>>>>>> -import java.util.concurrent.LinkedBlockingQueue;
>>>>>> -import java.util.concurrent.ThreadFactory;
>>>>>> -import java.util.concurrent.ThreadPoolExecutor;
>>>>>> -import java.util.concurrent.TimeUnit;
>>>>>> -import java.util.concurrent.atomic.AtomicInteger;
>>>>>> -import java.util.logging.Level;
>>>>>> -
>>>>>> -/**
>>>>>> - * Thread Pool implementation, based on {_at_link ThreadPoolExecutor}
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public class DefaultThreadPool extends ThreadPoolExecutor
>>>>>> - implements ExecutorService, ExtendedThreadPool,
>>>>>> - Thread.UncaughtExceptionHandler {
>>>>>> - // Min number of worker threads in a pool
>>>>>> - public static int DEFAULT_MIN_THREAD_COUNT = 5;
>>>>>> -
>>>>>> - // Max number of worker threads in a pool
>>>>>> - public static int DEFAULT_MAX_THREAD_COUNT = 5;
>>>>>> -
>>>>>> - // Max number of tasks thread pool can enqueue
>>>>>> - public static int DEFAULT_MAX_TASKS_QUEUED = Integer.MAX_VALUE;
>>>>>> -
>>>>>> - // Timeout, after which idle thread will be stopped and
>>>>>> excluded from pool
>>>>>> - public static int DEFAULT_IDLE_THREAD_KEEPALIVE_TIMEOUT = 30000;
>>>>>> -
>>>>>> - protected String name = "Grizzly";
>>>>>> -
>>>>>> - protected int maxTasksCount;
>>>>>> -
>>>>>> - protected AtomicInteger workerThreadCounter = new
>>>>>> AtomicInteger();
>>>>>> -
>>>>>> - /**
>>>>>> - * Threads priority
>>>>>> - */
>>>>>> - protected int priority = Thread.NORM_PRIORITY;
>>>>>> -
>>>>>> - /**
>>>>>> - * The initial ByteBuffer size for newly created WorkerThread
>>>>>> instances
>>>>>> - */
>>>>>> - protected int initialByteBufferSize = 8192;
>>>>>> -
>>>>>> - /**
>>>>>> - * The {_at_link ByteBufferType}
>>>>>> - */
>>>>>> - protected ByteBufferType byteBufferType =
>>>>>> ByteBufferType.HEAP_VIEW;
>>>>>> -
>>>>>> - public DefaultThreadPool() {
>>>>>> - this(DEFAULT_MIN_THREAD_COUNT, DEFAULT_MAX_THREAD_COUNT,
>>>>>> - DEFAULT_MAX_TASKS_QUEUED,
>>>>>> DEFAULT_IDLE_THREAD_KEEPALIVE_TIMEOUT,
>>>>>> - TimeUnit.MILLISECONDS);
>>>>>> - }
>>>>>> -
>>>>>> - public DefaultThreadPool(int corePoolSize, int maximumPoolSize,
>>>>>> - int maxTasksCount, long keepAliveTime, TimeUnit unit) {
>>>>>> - super(corePoolSize, maximumPoolSize, keepAliveTime, unit,
>>>>>> - new LinkedBlockingQueue<Runnable>(maxTasksCount));
>>>>>> - setThreadFactory(new DefaultWorkerThreadFactory());
>>>>>> - this.maxTasksCount = maxTasksCount;
>>>>>> - }
>>>>>> -
>>>>>> - public int getQueuedTasksCount() {
>>>>>> - return getQueue().size();
>>>>>> - }
>>>>>> -
>>>>>> - public int getMaxQueuedTasksCount() {
>>>>>> - return maxTasksCount;
>>>>>> - }
>>>>>> -
>>>>>> - public void setMaxQueuedTasksCount(int maxTasksCount) {
>>>>>> - throw new UnsupportedOperationException("Value could not
>>>>>> be changed!");
>>>>>> - }
>>>>>> -
>>>>>> - public String getName() {
>>>>>> - return name;
>>>>>> - }
>>>>>> -
>>>>>> - public void setName(String name) {
>>>>>> - this.name = name;
>>>>>> - }
>>>>>> -
>>>>>> - public int getPriority() {
>>>>>> - return priority;
>>>>>> - }
>>>>>> -
>>>>>> - public void setPriority(int priority) {
>>>>>> - this.priority = priority;
>>>>>> - }
>>>>>> -
>>>>>> - public int getQueueSize() {
>>>>>> - return getQueue().size();
>>>>>> - }
>>>>>> -
>>>>>> - public ByteBufferType getByteBufferType() {
>>>>>> - return byteBufferType;
>>>>>> - }
>>>>>> -
>>>>>> - public void setByteBufferType(ByteBufferType byteBufferType) {
>>>>>> - this.byteBufferType = byteBufferType;
>>>>>> - }
>>>>>> -
>>>>>> - public int getInitialByteBufferSize() {
>>>>>> - return initialByteBufferSize;
>>>>>> - }
>>>>>> -
>>>>>> - public void setInitialByteBufferSize(int
>>>>>> initialByteBufferSize) {
>>>>>> - this.initialByteBufferSize = initialByteBufferSize;
>>>>>> - }
>>>>>> -
>>>>>> - public void start() {
>>>>>> - this.prestartCoreThread();
>>>>>> - }
>>>>>> -
>>>>>> - public void stop() {
>>>>>> - shutdownNow();
>>>>>> - }
>>>>>> -
>>>>>> - public void uncaughtException(Thread thread, Throwable
>>>>>> throwable) {
>>>>>> - Controller.logger().log(Level.WARNING,
>>>>>> - "Uncaught thread exception. Thread: " + thread,
>>>>>> throwable);
>>>>>> - }
>>>>>> -
>>>>>> - @Override
>>>>>> - protected void beforeExecute(Thread t, Runnable r) {
>>>>>> - ((WorkerThreadImpl) t).createByteBuffer(false);
>>>>>> - }
>>>>>> -
>>>>>> - @Override
>>>>>> - protected void afterExecute(Runnable r, Throwable t) {
>>>>>> - ((WorkerThreadImpl) Thread.currentThread()).reset();
>>>>>> - }
>>>>>> -
>>>>>> - private class DefaultWorkerThreadFactory implements
>>>>>> ThreadFactory {
>>>>>> - public Thread newThread(Runnable r) {
>>>>>> - Thread thread = new
>>>>>> WorkerThreadImpl(DefaultThreadPool.this,
>>>>>> - name + "-WorkerThread(" +
>>>>>> - workerThreadCounter.getAndIncrement() + ")", r,
>>>>>> - initialByteBufferSize);
>>>>>> -
>>>>>> thread.setUncaughtExceptionHandler(DefaultThreadPool.this);
>>>>>> - thread.setPriority(priority);
>>>>>> - return thread;
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - @Override
>>>>>> - public String toString() {
>>>>>> - StringBuilder builder = new StringBuilder(512);
>>>>>> - builder.append("DefaultThreadPool[");
>>>>>> - injectToStringAttributes(builder);
>>>>>> - builder.append(']');
>>>>>> - return builder.toString();
>>>>>> - }
>>>>>> -
>>>>>> - protected void injectToStringAttributes(StringBuilder sb) {
>>>>>> - sb.append("name=").append(name);
>>>>>> - sb.append(", priority=").append(priority);
>>>>>> - sb.append(", min-threads=").append(getCorePoolSize());
>>>>>> - sb.append(", max-threads=").append(getMaximumPoolSize());
>>>>>> - sb.append(",
>>>>>> max-queue-size=").append(getMaxQueuedTasksCount());
>>>>>> - sb.append(",
>>>>>> initial-byte-buffer-size=").append(initialByteBufferSize);
>>>>>> - sb.append(", byte-buffer-type=").append(byteBufferType);
>>>>>> - sb.append(", is-shutdown=").append(isShutdown());
>>>>>> - }
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectionKeyAttachmentWrapper.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectionKeyAttachmentWrapper.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectionKeyAttachmentWrapper.java
>>>>>> (working copy)
>>>>>> @@ -1,77 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.nio.channels.SelectionKey;
>>>>>> -
>>>>>> -/**
>>>>>> - * {_at_link SelectionKey} attachment utility class.
>>>>>> - * This class could be used as wrapper for custom {_at_link
>>>>>> SelectionKey}
>>>>>> - * attachments, which are not subclasses of
>>>>>> <code>SelectionKeyAttachment</code>
>>>>>> - * class.
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public class SelectionKeyAttachmentWrapper<E> extends
>>>>>> SelectionKeyActionAttachment {
>>>>>> - private E attachment;
>>>>>> -
>>>>>> - public E getAttachment() {
>>>>>> - return attachment;
>>>>>> - }
>>>>>> -
>>>>>> - public void setAttachment(E attachment) {
>>>>>> - this.attachment = attachment;
>>>>>> - }
>>>>>> -
>>>>>> - @Override
>>>>>> - public void process(SelectionKey selectionKey) {
>>>>>> - // Do nothing by default
>>>>>> - }
>>>>>> -
>>>>>> - @Override
>>>>>> - public void postProcess(SelectionKey selectionKey) {
>>>>>> - // Do nothing by default
>>>>>> - }
>>>>>> -
>>>>>> - @Override
>>>>>> - public void release(SelectionKey selectionKey) {
>>>>>> - attachment = null;
>>>>>> - super.release(selectionKey);
>>>>>> - }
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectorFactory.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectorFactory.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/SelectorFactory.java
>>>>>> (working copy)
>>>>>> @@ -1,235 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import com.sun.grizzly.Controller;
>>>>>> -import java.io.IOException;
>>>>>> -import java.nio.channels.Selector;
>>>>>> -import java.util.EmptyStackException;
>>>>>> -import java.util.Stack;
>>>>>> -import java.util.logging.Level;
>>>>>> -import java.util.logging.Logger;
>>>>>> -
>>>>>> -/**
>>>>>> - * Factory used to dispatch/share {_at_link Selector}.
>>>>>> - *
>>>>>> - * @author Scott Oaks
>>>>>> - * @author Jean-Francois Arcand
>>>>>> - */
>>>>>> -public class SelectorFactory{
>>>>>> -
>>>>>> - public static final int DEFAULT_MAX_SELECTORS = 20;
>>>>>> -
>>>>>> - /**
>>>>>> - * The timeout before we exit.
>>>>>> - */
>>>>>> - public static long timeout = 5000;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The number of {_at_link Selector} to create.
>>>>>> - */
>>>>>> - private static int maxSelectors = DEFAULT_MAX_SELECTORS;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Cache of {_at_link Selector}
>>>>>> - */
>>>>>> - private final static Stack<Selector> selectors = new
>>>>>> Stack<Selector>();
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * have we created the Selector instances.
>>>>>> - */
>>>>>> - private static boolean initialized = false;
>>>>>> -
>>>>>> - /**
>>>>>> - * Set max selector pool size.
>>>>>> - * @param size max pool size
>>>>>> - */
>>>>>> - public final static void setMaxSelectors(int size) throws
>>>>>> IOException {
>>>>>> - synchronized(selectors) {
>>>>>> - if (size > maxSelectors || !initialized) {
>>>>>> - // if not initialized yet - grow cache by size
>>>>>> - if (!initialized) maxSelectors = 0;
>>>>>> -
>>>>>> - grow(size);
>>>>>> - } else if (size < maxSelectors) {
>>>>>> - reduce(size);
>>>>>> - }
>>>>>> -
>>>>>> - maxSelectors = size;
>>>>>> - initialized = true;
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Returns max selector pool size
>>>>>> - * @return max pool size
>>>>>> - */
>>>>>> - public final static int getMaxSelectors() {
>>>>>> - return maxSelectors;
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Get a exclusive {_at_link Selector}
>>>>>> - * @return {_at_link Selector}
>>>>>> - */
>>>>>> - public final static Selector getSelector() {
>>>>>> - synchronized(selectors) {
>>>>>> - if (!initialized) {
>>>>>> - try {
>>>>>> - setMaxSelectors(maxSelectors);
>>>>>> - } catch (IOException e) {
>>>>>> - Logger logger = Controller.logger();
>>>>>> - if (logger.isLoggable(Level.WARNING)) {
>>>>>> - logger.log(Level.WARNING,
>>>>>> "SelectorFactory lazy initialization", e);
>>>>>> - }
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - Selector s = null;
>>>>>> - try {
>>>>>> - if ( selectors.size() != 0 )
>>>>>> - s = selectors.pop();
>>>>>> - } catch (EmptyStackException ex){}
>>>>>> -
>>>>>> - int attempts = 0;
>>>>>> - try{
>>>>>> - while (s == null && attempts < 2) {
>>>>>> - selectors.wait(timeout);
>>>>>> - try {
>>>>>> - if ( selectors.size() != 0 )
>>>>>> - s = selectors.pop();
>>>>>> - } catch (EmptyStackException ex){
>>>>>> - break;
>>>>>> - }
>>>>>> - attempts++;
>>>>>> - }
>>>>>> - } catch (InterruptedException ex){}
>>>>>> - return s;
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the {_at_link Selector} to the cache
>>>>>> - * @param s {_at_link Selector}
>>>>>> - */
>>>>>> - public final static void returnSelector(Selector s) {
>>>>>> - synchronized(selectors) {
>>>>>> - selectors.push(s);
>>>>>> - if (selectors.size() == 1)
>>>>>> - selectors.notify();
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Executes <code>Selector.selectNow()</code> and returns
>>>>>> - * the {_at_link Selector} to the cache
>>>>>> - */
>>>>>> - public final static void selectNowAndReturnSelector(Selector
>>>>>> s) {
>>>>>> - try {
>>>>>> - s.selectNow();
>>>>>> - returnSelector(s);
>>>>>> - } catch(IOException e) {
>>>>>> - Logger logger = Controller.logger();
>>>>>> - logger.log(Level.WARNING,
>>>>>> - "Unexpected problem when releasing temporary
>>>>>> Selector", e);
>>>>>> - try {
>>>>>> - s.close();
>>>>>> - } catch(IOException ee) {
>>>>>> - // We are not interested
>>>>>> - }
>>>>>> -
>>>>>> - try {
>>>>>> - reimburseSelector();
>>>>>> - } catch(IOException ee) {
>>>>>> - logger.log(Level.WARNING,
>>>>>> - "Problematic Selector could not be
>>>>>> reimbursed!", ee);
>>>>>> - }
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Add Selector to the cache.
>>>>>> - * This method could be called to reimberse a lost or
>>>>>> problematic Selector.
>>>>>> - *
>>>>>> - * @throws java.io.IOException
>>>>>> - */
>>>>>> - public final static void reimburseSelector() throws
>>>>>> IOException {
>>>>>> - returnSelector(createSelector());
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Creeate Selector
>>>>>> - * @return Selector
>>>>>> - * @throws java.io.IOException
>>>>>> - */
>>>>>> - protected static Selector createSelector() throws IOException {
>>>>>> - return Selector.open();
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Increase {_at_link Selector} pool size
>>>>>> - */
>>>>>> - private static void grow(int size) throws IOException {
>>>>>> - for(int i=0; i<size - maxSelectors; i++) {
>>>>>> - selectors.add(createSelector());
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Decrease {_at_link Selector} pool size
>>>>>> - */
>>>>>> - private static void reduce(int size) {
>>>>>> - for(int i=0; i<maxSelectors - size; i++) {
>>>>>> - try {
>>>>>> - Selector selector = selectors.pop();
>>>>>> - selector.close();
>>>>>> - } catch(IOException e) {
>>>>>> - Logger logger = Controller.logger();
>>>>>> - if (logger.isLoggable(Level.FINE)) {
>>>>>> - logger.log(Level.FINE,
>>>>>> "SelectorFactory.reduce", e);
>>>>>> - }
>>>>>> - }
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/LoggingFormatter.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/LoggingFormatter.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/LoggingFormatter.java
>>>>>> (working copy)
>>>>>> @@ -1,166 +0,0 @@
>>>>>> -/*
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 1997-2007 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - */
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.io.PrintWriter;
>>>>>> -import java.io.StringWriter;
>>>>>> -import java.util.Date;
>>>>>> -import java.util.logging.Formatter;
>>>>>> -import java.util.logging.Level;
>>>>>> -import java.util.logging.LogRecord;
>>>>>> -import java.util.logging.Logger;
>>>>>> -
>>>>>> -/**
>>>>>> - *
>>>>>> - * Format the record to include the Thread that logged the record.
>>>>>> - * To change the default configuration for java.util.logging you
>>>>>> will need to
>>>>>> - * add this in the command line parameters :
>>>>>> -Djava.util.logging.config.file=myfile
>>>>>> - *
>>>>>> - * Here a sample of what you need to include in myfile
>>>>>> - *
>>>>>> - * #the default logger is this add you can replace it with
>>>>>> LoggingFormatter
>>>>>> - * #java.util.logging.ConsoleHandler.formatter =
>>>>>> java.util.logging.SimpleFormatter
>>>>>> - * java.util.logging.ConsoleHandler.formatter =
>>>>>> com.sun.grizzly.util.LoggingFormatter
>>>>>> - *
>>>>>> - * refer to :
>>>>>> https://grizzly.dev.java.net/issues/show_bug.cgi?id=291
>>>>>> - *
>>>>>> - * @author Sebastien Dionne
>>>>>> - *
>>>>>> - */
>>>>>> -public class LoggingFormatter extends Formatter {
>>>>>> -
>>>>>> - private static Logger log =
>>>>>> Logger.getLogger(LoggingFormatter.class.getName());
>>>>>> - - // took that from the JDK java.util.logging.SimpleFormatter
>>>>>> - - // Line separator string. This is the value of the
>>>>>> line.separator
>>>>>> - // property at the moment that the SimpleFormatter was created.
>>>>>> - private static String lineSeparator = "\n";
>>>>>> - - static {
>>>>>> - try {
>>>>>> - String separator = System.getProperty("line.separator");
>>>>>> - - if(separator!=null &&
>>>>>> separator.trim().length()>0){
>>>>>> - lineSeparator = separator;
>>>>>> - }
>>>>>> - } catch(SecurityException se){
>>>>>> - // ignore the exception
>>>>>> - }
>>>>>> - - }
>>>>>> - - public LoggingFormatter() {
>>>>>> - super();
>>>>>> - }
>>>>>> - - /**
>>>>>> - * Format the record to include the Thread that logged this
>>>>>> record.
>>>>>> - * the format should be
>>>>>> - * [WorkerThreadImpl-1, Grizzly] 2008-10-08 18:49:59 [INFO]
>>>>>> com.sun.grizzly.Controller:doSelect message
>>>>>> - *
>>>>>> - * @param record The record to be logged into the logger.
>>>>>> - *
>>>>>> - * @return the record formated to be more human readable
>>>>>> - */
>>>>>> - public String format(LogRecord record) {
>>>>>> - - // Create a StringBuffer to contain the formatted
>>>>>> record
>>>>>> - StringBuffer sb = new StringBuffer();
>>>>>> - -
>>>>>> sb.append("[").append(Thread.currentThread().getName()).append("] ");
>>>>>> - - // Get the date from the LogRecord and add it to
>>>>>> the buffer
>>>>>> - Date date = new Date(record.getMillis());
>>>>>> - sb.append(date.toString()).append(" ");
>>>>>> - - // Get the level name and add it to the buffer
>>>>>> -
>>>>>> sb.append("[").append(record.getLevel().getLocalizedName()).append("]
>>>>>> ");
>>>>>> - - // Get Class name
>>>>>> - if (record.getSourceClassName() != null) { -
>>>>>> sb.append(record.getSourceClassName());
>>>>>> - } else {
>>>>>> - sb.append(record.getLoggerName());
>>>>>> - }
>>>>>> - // Get method name
>>>>>> - if (record.getSourceMethodName() != null) { -
>>>>>> sb.append(" ");
>>>>>> - sb.append(record.getSourceMethodName());
>>>>>> - }
>>>>>> - sb.append(":");
>>>>>> - - // Get the formatted message (includes localization
>>>>>> - // and substitution of parameters) and add it to the buffer
>>>>>> - sb.append(formatMessage(record)).append(lineSeparator);
>>>>>> - - //we log the stackTrace if it's a exception
>>>>>> - if (record.getThrown() != null) {
>>>>>> - try {
>>>>>> - StringWriter sw = new StringWriter();
>>>>>> - PrintWriter pw = new PrintWriter(sw);
>>>>>> - record.getThrown().printStackTrace(pw);
>>>>>> - pw.close();
>>>>>> - sb.append(sw.toString());
>>>>>> - } catch (Exception ex) {
>>>>>> - }
>>>>>> - }
>>>>>> - sb.append(lineSeparator);
>>>>>> -
>>>>>> - return sb.toString();
>>>>>> - }
>>>>>> - - /**
>>>>>> - * Example to test the com.sun.grizzly.util.LoggingFormatter
>>>>>> - * You need to include this parameter in the command line
>>>>>> - * -Djava.util.logging.config.file=myfile
>>>>>> - * @param args main parameters
>>>>>> - */
>>>>>> - public static void main(String[] args) {
>>>>>> - - log.info("Info Event");
>>>>>> - - log.severe("Severe Event");
>>>>>> - - // show the thread info in the logger.
>>>>>> - Thread t = new Thread(new Runnable(){public void
>>>>>> run(){log.info("Info Event in Thread");}}, "Thread into main");
>>>>>> - t.start();
>>>>>> - - log.log(Level.SEVERE, "exception", new Exception());
>>>>>> - - - }
>>>>>> -}
>>>>>> \ No newline at end of file
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/StateHolder.java
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/StateHolder.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/StateHolder.java
>>>>>> (working copy)
>>>>>> @@ -1,369 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import com.sun.grizzly.Controller;
>>>>>> -import java.util.Iterator;
>>>>>> -import java.util.Map;
>>>>>> -import java.util.concurrent.Callable;
>>>>>> -import java.util.concurrent.ConcurrentHashMap;
>>>>>> -import java.util.concurrent.CountDownLatch;
>>>>>> -import java.util.concurrent.atomic.AtomicReference;
>>>>>> -import java.util.concurrent.locks.ReentrantReadWriteLock;
>>>>>> -import java.util.logging.Level;
>>>>>> -
>>>>>> -/**
>>>>>> - * Class, which holds the state.
>>>>>> - * Provides API for state change notification, state read/write
>>>>>> access locking.
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public class StateHolder<E> {
>>>>>> - private AtomicReference<E> stateRef;
>>>>>> -
>>>>>> - private ReentrantReadWriteLock readWriteLock;
>>>>>> - private volatile boolean isLockEnabled;
>>>>>> -
>>>>>> - private Map<ConditionListener<E>, Object> conditionListeners;
>>>>>> -
>>>>>> - /**
>>>>>> - * Constructs {_at_link StateHolder}.
>>>>>> - * StateHolder will work in not-locking mode.
>>>>>> - */
>>>>>> - public StateHolder() {
>>>>>> - this(false);
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Constructs {_at_link StateHolder}.
>>>>>> - * @param isLockEnabled locking mode
>>>>>> - */
>>>>>> - public StateHolder(boolean isLockEnabled) {
>>>>>> - stateRef = new AtomicReference<E>();
>>>>>> - readWriteLock = new ReentrantReadWriteLock();
>>>>>>> - conditionListeners = new
>>>>>>> ConcurrentHashMap<ConditionListener<E>, Object>();
>>>>>>> - this.isLockEnabled = isLockEnabled;
>>>>>>> - }
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Gets current state
>>>>>>> - * Current StateHolder locking mode will be used
>>>>>>> - * @return state
>>>>>>> - */
>>>>>>> - public E getState() {
>>>>>>> - return getState(isLockEnabled);
>>>>>>> - }
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Gets current state
>>>>>>> - * @param locked if true, get will be invoked in locking
>>>>>>> mode, false - non-locked
>>>>>>> - * @return state
>>>>>>> - */
>>>>>>> - public E getState(boolean locked) {
>>>>>>> - if (locked) {
>>>>>>> - readWriteLock.readLock().lock();
>>>>>>> - }
>>>>>>> -
>>>>>>> - E retState = stateRef.get();
>>>>>>> -
>>>>>>> - if (locked) {
>>>>>>> - readWriteLock.readLock().unlock();
>>>>>>> - }
>>>>>>> - return retState;
>>>>>>> - }
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Sets current state
>>>>>>> - * Current StateHolder locking mode will be used
>>>>>>> - * @param state
>>>>>>> - */
>>>>>>> - public void setState(E state) {
>>>>>>> - setState(state, isLockEnabled);
>>>>>>> - }
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Sets current state
>>>>>>> - * @param state
>>>>>>> - * @param locked if true, set will be invoked in locking
>>>>>>> mode, false - non-locking
>>>>>>> - */
>>>>>>> - public void setState(E state, boolean locked) {
>>>>>>> - if (locked) {
>>>>>>> - readWriteLock.writeLock().lock();
>>>>>>> - }
>>>>>>> -
>>>>>>> - stateRef.set(state);
>>>>>>> -
>>>>>>> - // downgrading lock to read
>>>>>>> - if (locked) {
>>>>>>> - readWriteLock.readLock().lock();
>>>>>>> - readWriteLock.writeLock().unlock();
>>>>>>> - }
>>>>>>> -
>>>>>>> - checkConditionListeners(state);
>>>>>>> -
>>>>>>> - if (locked) {
>>>>>>> - readWriteLock.readLock().unlock();
>>>>>>> - }
>>>>>>> - }
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Gets Read/Write locker, which is used by this {_at_link
>>>>>>> StateHolder}
>>>>>>> - * @return locker
>>>>>>> - */
>>>>>>> - public ReentrantReadWriteLock getStateLocker() {
>>>>>>> - return readWriteLock;
>>>>>>> - }
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Gets current locking mode
>>>>>>> - * @return true, if mode is set to locking, false otherwise
>>>>>>> - */
>>>>>>> - public boolean isLockEnabled() {
>>>>>>> - return isLockEnabled;
>>>>>>> - }
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Setss current locking mode
>>>>>>> - * @param isLockEnabled true, if mode will be set to
>>>>>>> locking, false otherwise
>>>>>>> - */
>>>>>>> - public void setLockEnabled(boolean isLockEnabled) {
>>>>>>> - this.isLockEnabled = isLockEnabled;
>>>>>>> - }
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Register listener, which will be notified, when state
>>>>>>> will be equal to passed
>>>>>>> - * one. Once listener will be notified - it will be removed
>>>>>>> from this
>>>>>>> - * {_at_link StateHolder}'s listener set.
>>>>>>> - * @param state State, listener is interested in
>>>>>>> - * @param listener Object, which will be notified. This
>>>>>>> {_at_link StateHolder}
>>>>>>> - * implementation works with Runnable, Callable,
>>>>>>> CountDownLatch, Object
>>>>>>> - * listeners
>>>>>>> - * @return <code>ConditionListener</code>, if current state
>>>>>>> is not equal to required
>>>>>>> - * and listener was registered, null if current
>>>>>>> state is equal to required.
>>>>>>> - * In both cases listener will be notified
>>>>>>> - */
>>>>>>> - public ConditionListener<E> notifyWhenStateIsEqual(E state,
>>>>>>> Object listener) {
>>>>>>> - boolean isLockEnabledLocal = isLockEnabled;
>>>>>>> - if (isLockEnabledLocal) {
>>>>>>> - getStateLocker().writeLock().lock();
>>>>>>> - }
>>>>>>> -
>>>>>>> - ConditionListener<E> conditionListener = null;
>>>>>>> -
>>>>>>> - if (stateRef.get().equals(state)) {
>>>>>>> - EventListener.notifyListener(listener);
>>>>>>> - } else {
>>>>>>> - conditionListener = new EqualConditionListener<E>();
>>>>>>> - EventListener eventListener = new EventListener();
>>>>>>> - eventListener.set(listener);
>>>>>>> - conditionListener.set(state, eventListener);
>>>>>>> -
>>>>>>> - conditionListeners.put(conditionListener, this);
>>>>>>> - }
>>>>>>> -
>>>>>>> - if (isLockEnabledLocal) {
>>>>>>> - getStateLocker().writeLock().unlock();
>>>>>>> - }
>>>>>>> -
>>>>>>> - return conditionListener;
>>>>>>> - }
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Register listener, which will be notified, when state
>>>>>>> will become not equal
>>>>>>> - * to passed one. Once listener will be notified - it will
>>>>>>> be removed from
>>>>>>> - * this {_at_link StateHolder}'s listener set.
>>>>>>> - * @param state State, listener is interested in
>>>>>>> - * @param listener Object, which will be notified. This
>>>>>>> {_at_link StateHolder}
>>>>>>> - * implementation works with Runnable, Callable,
>>>>>>> CountDownLatch, Object
>>>>>>> - * listeners
>>>>>>> - * @return <code>ConditionListener</code>, if current state
>>>>>>> is equal to required
>>>>>>> - * and listener was registered, null if current
>>>>>>> state is not equal to required.
>>>>>>> - * In both cases listener will be notified
>>>>>>> - */
>>>>>>> - public ConditionListener<E> notifyWhenStateIsNotEqual(E
>>>>>>> state, Object listener) {
>>>>>>> - boolean isLockEnabledLocal = isLockEnabled;
>>>>>>> - if (isLockEnabledLocal) {
>>>>>>> - getStateLocker().writeLock().lock();
>>>>>>> - }
>>>>>>> -
>>>>>>> - ConditionListener<E> conditionListener = null;
>>>>>>> -
>>>>>>> - if (!stateRef.get().equals(state)) {
>>>>>>> - EventListener.notifyListener(listener);
>>>>>>> - } else {
>>>>>>> - conditionListener = new NotEqualConditionListener<E>();
>>>>>>> - EventListener eventListener = new EventListener();
>>>>>>> - eventListener.set(listener);
>>>>>>> - conditionListener.set(state, eventListener);
>>>>>>> -
>>>>>>> - conditionListeners.put(conditionListener, this);
>>>>>>> - }
>>>>>>> -
>>>>>>> - if (isLockEnabledLocal) {
>>>>>>> - getStateLocker().writeLock().unlock();
>>>>>>> - }
>>>>>>> -
>>>>>>> - return conditionListener;
>>>>>>> - }
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Register custom condition listener, which will be
>>>>>>> notified, when listener's
>>>>>>> - * condition will become true. Once listener will be
>>>>>>> notified - it will be
>>>>>>> - * removed from this {_at_link StateHolder}'s listener set.
>>>>>>> - * @param conditionListener contains both condition and
>>>>>>> listener, which will be
>>>>>>> - * called, when condition become true
>>>>>>> - */
>>>>>>> - public void
>>>>>>> notifyWhenConditionMatchState(ConditionListener<E>
>>>>>>> conditionListener) {
>>>>>>> - boolean isLockEnabledLocal = isLockEnabled;
>>>>>>> - if (isLockEnabledLocal) {
>>>>>>> - getStateLocker().writeLock().lock();
>>>>>>> - }
>>>>>>> -
>>>>>>> - E currentState = getState();
>>>>>>> -
>>>>>>> - if (conditionListener.check(currentState)) {
>>>>>>> - conditionListener.notifyListener();
>>>>>>> - } else {
>>>>>>> - conditionListeners.put(conditionListener, this);
>>>>>>> - }
>>>>>>> -
>>>>>>> - if (isLockEnabledLocal) {
>>>>>>> - getStateLocker().writeLock().unlock();
>>>>>>> - }
>>>>>>> - }
>>>>>>> -
>>>>>>> - public void removeConditionListener(ConditionListener<E>
>>>>>>> conditionListener) {
>>>>>>> - if (conditionListener == null) return;
>>>>>>> -
>>>>>>> - conditionListeners.remove(conditionListener);
>>>>>>> - }
>>>>>>> -
>>>>>>> - protected void checkConditionListeners(E state) {
>>>>>>> - Iterator<ConditionListener<E>> it =
>>>>>>> conditionListeners.keySet().iterator();
>>>>>>> - while(it.hasNext()) {
>>>>>>> - ConditionListener<E> listener = it.next();
>>>>>>> - try {
>>>>>>> - if (listener.check(state)) {
>>>>>>> - it.remove();
>>>>>>> - listener.notifyListener();
>>>>>>> - }
>>>>>>> - } catch(Exception e) {
>>>>>>> - Controller.logger().log(Level.WARNING, "Error
>>>>>>> calling ConditionListener", e);
>>>>>>> - }
>>>>>>> - }
>>>>>>> - }
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Common ConditionListener class, which could be used with
>>>>>>> StateHolder, to
>>>>>>> - * register custom conditions.
>>>>>>> - *
>>>>>>> - * On each state change - condition will be checked, if it's
>>>>>>> true - Condition's
>>>>>>> - * listener will be notified.
>>>>>>> - */
>>>>>>> - public static abstract class ConditionListener<E> {
>>>>>>> - public E state;
>>>>>>> - public EventListener listener;
>>>>>>> -
>>>>>>> - protected void set(E state, EventListener listener) {
>>>>>>> - this.state = state;
>>>>>>> - this.listener = listener;
>>>>>>> - }
>>>>>>> -
>>>>>>> - public void notifyListener() {
>>>>>>> - listener.notifyEvent();
>>>>>>> - }
>>>>>>> -
>>>>>>> - public abstract boolean check(E state);
>>>>>>> - }
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Equal ConditionListener implementation
>>>>>>> - * @param E state class
>>>>>>> - */
>>>>>>> - public static class EqualConditionListener<E> extends
>>>>>>> ConditionListener<E> {
>>>>>>> - public boolean check(E state) {
>>>>>>> - return state.equals(this.state);
>>>>>>> - }
>>>>>>> - }
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Not equal ConditionListener implementation
>>>>>>> - * @param E state class
>>>>>>> - */
>>>>>>> - public static class NotEqualConditionListener<E> extends
>>>>>>> ConditionListener<E> {
>>>>>>> - public boolean check(E state) {
>>>>>>> - return !state.equals(this.state);
>>>>>>> - }
>>>>>>> - }
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * EventListener class, which is a part of
>>>>>>> - * <codE>EventConditionListener</code>, and implements
>>>>>>> notificatation logic,
>>>>>>> - * when condition becomes true.
>>>>>>> - */
>>>>>>> - public static class EventListener {
>>>>>>> - public Object notificationObject;
>>>>>>> -
>>>>>>> - public void set(Object notificationObject) {
>>>>>>> - this.notificationObject = notificationObject;
>>>>>>> - }
>>>>>>> -
>>>>>>> - public void notifyEvent() {
>>>>>>> - notifyListener(notificationObject);
>>>>>>> - }
>>>>>>> -
>>>>>>> - protected static void notifyListener(Object listener) {
>>>>>>> - if (listener instanceof CountDownLatch) {
>>>>>>> - ((CountDownLatch) listener).countDown();
>>>>>>> - } else if (listener instanceof Callable) {
>>>>>>> - try {
>>>>>>> - ((Callable) listener).call();
>>>>>>> - } catch(Exception e) {
>>>>>>> - throw new RuntimeException(e);
>>>>>>> - }
>>>>>>> - } else if (listener instanceof Runnable) {
>>>>>>> - ((Runnable) listener).run();
>>>>>>> - } else {
>>>>>>> - synchronized(listener) {
>>>>>>> - listener.notify();
>>>>>>> - }
>>>>>>> - }
>>>>>>> - }
>>>>>>> - }
>>>>>>> -}
>>>>>>> Index: modules/grizzly/src/main/java/com/sun/grizzly/util/State.java
>>>>>>> ===================================================================
>>>>>>> --- modules/grizzly/src/main/java/com/sun/grizzly/util/State.java
>>>>>>> (revision 2047)
>>>>>>> +++ modules/grizzly/src/main/java/com/sun/grizzly/util/State.java
>>>>>>> (working copy)
>>>>>>> @@ -1,51 +0,0 @@
>>>>>>> -/*
>>>>>>> - *
>>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>>> - *
>>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>>> - *
>>>>>>> - * The contents of this file are subject to the terms of either
>>>>>>> the GNU
>>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>>> Development
>>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>>> "License"). You
>>>>>>> - * may not use this file except in compliance with the License.
>>>>>>> You can obtain
>>>>>>> - * a copy of the License at
>>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License
>>>>>>> for the specific
>>>>>>> - * language governing permissions and limitations under the
>>>>>>> License.
>>>>>>> - *
>>>>>>> - * When distributing the software, include this License Header
>>>>>>> Notice in each
>>>>>>> - * file and include the License file at
>>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>>> - * Sun designates this particular file as subject to the
>>>>>>> "Classpath" exception
>>>>>>> - * as provided by Sun in the GPL Version 2 section of the
>>>>>>> License file that
>>>>>>> - * accompanied this code. If applicable, add the following
>>>>>>> below the License
>>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>>> your own
>>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>>> - * [name of copyright owner]"
>>>>>>> - *
>>>>>>> - * Contributor(s):
>>>>>>> - *
>>>>>>> - * If you wish your version of this file to be governed by only
>>>>>>> the CDDL or
>>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>>> "[Contributor]
>>>>>>> - * elects to include this software in this distribution under
>>>>>>> the [CDDL or GPL
>>>>>>> - * Version 2] license." If you don't indicate a single choice
>>>>>>> of license, a
>>>>>>> - * recipient has the option to distribute your version of this
>>>>>>> file under
>>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>>> license to
>>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>>> Version 2 code
>>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>>> option applies
>>>>>>> - * only if the new code is made subject to such option by the
>>>>>>> copyright
>>>>>>> - * holder.
>>>>>>> - *
>>>>>>> - */
>>>>>>> -
>>>>>>> -package com.sun.grizzly.util;
>>>>>>> -
>>>>>>> -/**
>>>>>>> - * State enum
>>>>>>> - * STOPPED - Process is stopped, not running state
>>>>>>> - * STARTED - Process is started, running state
>>>>>>> - * PAUSED - Process is paused, not processing tasks
>>>>>>> - *
>>>>>>> - * @author Alexey Stashok
>>>>>>> - */
>>>>>>> -public enum State {
>>>>>>> - STOPPED, STARTED, PAUSED
>>>>>>> -}
>>>>>>> Index:
>>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/InputReader.java
>>>>>>> ===================================================================
>>>>>>> ---
>>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/InputReader.java
>>>>>>> (revision 2047)
>>>>>>> +++
>>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/InputReader.java
>>>>>>> (working copy)
>>>>>>> @@ -1,384 +0,0 @@
>>>>>>> -/*
>>>>>>> - *
>>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>>> - *
>>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>>> - *
>>>>>>> - * The contents of this file are subject to the terms of either
>>>>>>> the GNU
>>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>>> Development
>>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>>> "License"). You
>>>>>>> - * may not use this file except in compliance with the License.
>>>>>>> You can obtain
>>>>>>> - * a copy of the License at
>>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License
>>>>>>> for the specific
>>>>>>> - * language governing permissions and limitations under the
>>>>>>> License.
>>>>>>> - *
>>>>>>> - * When distributing the software, include this License Header
>>>>>>> Notice in each
>>>>>>> - * file and include the License file at
>>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>>> - * Sun designates this particular file as subject to the
>>>>>>> "Classpath" exception
>>>>>>> - * as provided by Sun in the GPL Version 2 section of the
>>>>>>> License file that
>>>>>>> - * accompanied this code. If applicable, add the following
>>>>>>> below the License
>>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>>> your own
>>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>>> - * [name of copyright owner]"
>>>>>>> - *
>>>>>>> - * Contributor(s):
>>>>>>> - *
>>>>>>> - * If you wish your version of this file to be governed by only
>>>>>>> the CDDL or
>>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>>> "[Contributor]
>>>>>>> - * elects to include this software in this distribution under
>>>>>>> the [CDDL or GPL
>>>>>>> - * Version 2] license." If you don't indicate a single choice
>>>>>>> of license, a
>>>>>>> - * recipient has the option to distribute your version of this
>>>>>>> file under
>>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>>> license to
>>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>>> Version 2 code
>>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>>> option applies
>>>>>>> - * only if the new code is made subject to such option by the
>>>>>>> copyright
>>>>>>> - * holder.
>>>>>>> - *
>>>>>>> - */
>>>>>>> -package com.sun.grizzly.util;
>>>>>>> -
>>>>>>> -import java.io.InputStream;
>>>>>>> -import java.io.IOException;
>>>>>>> -import java.nio.ByteBuffer;
>>>>>>> -import java.nio.channels.SelectionKey;
>>>>>>> -import java.nio.channels.SocketChannel;
>>>>>>> -
>>>>>>> -/**
>>>>>>> - * This class implement IO stream operations on top of a {_at_link
>>>>>>> ByteBuffer}.
>>>>>>> - * Under the hood, this class use a temporary Selector pool for
>>>>>>> reading
>>>>>>> - * bytes when the client ask for more and the current Selector
>>>>>>> is not yet ready.
>>>>>>> - *
>>>>>>> - * @author Jeanfrancois Arcand
>>>>>>> - */
>>>>>>> -public class InputReader extends InputStream {
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * The {_at_link Channel} type is used to avoid invoking the
>>>>>>> instanceof
>>>>>>> - * operation when registering the Socket|Datagram Channel to
>>>>>>> the Selector.
>>>>>>> - */
>>>>>>> - public enum ChannelType { SocketChannel, DatagramChannel }
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * By default this class will cast the Channel to a
>>>>>>> SocketChannel.
>>>>>>> - */
>>>>>>> - private ChannelType defaultChannelType =
>>>>>>> ChannelType.SocketChannel;
>>>>>>> -
>>>>>>> -
>>>>>>> - private static int defaultReadTimeout = 30000;
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * The wrapped <code>ByteBuffer</code<
>>>>>>> - */
>>>>>>> - protected ByteBuffer byteBuffer;
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * The {_at_link SelectionKey} used by this stream.
>>>>>>> - */
>>>>>>> - protected SelectionKey key = null;
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * The time to wait before timing out when reading bytes
>>>>>>> - */
>>>>>>> - protected int readTimeout = defaultReadTimeout;
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Is the stream secure.
>>>>>>> - */
>>>>>>> - private boolean secure = false;
>>>>>>> -
>>>>>>> -
>>>>>>> - // -------------------------------------------------
>>>>>>> Constructor -------//
>>>>>>> -
>>>>>>> -
>>>>>>> - public InputReader () {
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - public InputReader (final ByteBuffer byteBuffer) {
>>>>>>> - this.byteBuffer = byteBuffer;
>>>>>>> - }
>>>>>>> -
>>>>>>> - //
>>>>>>> ---------------------------------------------------------------------//
>>>>>>>
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Set the wrapped {_at_link ByteBuffer}
>>>>>>> - * @param byteBuffer The wrapped byteBuffer
>>>>>>> - */
>>>>>>> - public void setByteBuffer(final ByteBuffer byteBuffer) {
>>>>>>> - this.byteBuffer = byteBuffer;
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Get the wrapped {_at_link ByteBuffer}
>>>>>>> - * @return {_at_link ByteBuffer}
>>>>>>> - */
>>>>>>> - public ByteBuffer getByteBuffer() {
>>>>>>> - return byteBuffer;
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Return the available bytes
>>>>>>> - * @return the wrapped byteBuffer.remaining()
>>>>>>> - */
>>>>>>> - @Override
>>>>>>> - public int available () {
>>>>>>> - return (byteBuffer.remaining());
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Close this stream.
>>>>>>> - */
>>>>>>> - @Override
>>>>>>> - public void close () {
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Return true if mark is supported.
>>>>>>> - */
>>>>>>> - @Override
>>>>>> < blockquote type="cite">- public boolean markSupported() {
>>>>>> - return false;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Read the first byte from the wrapped {_at_link ByteBuffer}.
>>>>>> - */
>>>>>> - @Override
>>>>>> - public int read() throws IOException {
>>>>>> - if (!byteBuffer.hasRemaining()){
>>>>>> - byteBuffer.clear();
>>>>>> - int eof = doRead();
>>>>>> -
>>>>>> - if (eof <= 0){
>>>>>> - return -1;
>>>>>> - }
>>>>>> - }
>>>>>> - return (byteBuffer.hasRemaining() ? (byteBuffer.get () &
>>>>>> 0xff): -1);
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Read the bytes from the wrapped {_at_link ByteBuffer}.
>>>>>> - */
>>>>>> - @Override
>>>>>> - public int read(byte[] b) throws IOException {
>>>>>> - return (read (b, 0, b.length));
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Read the first byte of the wrapped {_at_link ByteBuffer}.
>>>>>> - * @param offset
>>>>>> - * @param length
>>>>>> - */
>>>>>> - @Override
>>>>>> - public int read(byte[] b, int offset, int length) throws
>>>>>> IOException {
>>>>>> - if (!byteBuffer.hasRemaining()) {
>>>>>> - byteBuffer.clear();
>>>>>> - int eof = doRead();
>>>>>> -
>>>>>> - if (eof <= 0){
>>>>>> - return -1;
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - if (length > byteBuffer.remaining()) {
>>>>>> - length = byteBuffer.remaining();
>>>>>> - }
>>>>>> - byteBuffer.get(b, offset, length);
>>>>>> -
>>>>>> - return (length);
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Read the bytes of the wrapped {_at_link ByteBuffer}.
>>>>>> - * @param bb {_at_link ByteBuffer}
>>>>>> - * @return - number of bytes read
>>>>>> - * @throws java.io.IOException
>>>>>> - */
>>>>>> - public int read(ByteBuffer bb) throws IOException {
>>>>>> - //Switch Buffer
>>>>>> - ByteBuffer oldBB = byteBuffer;
>>>>>> - byteBuffer = bb;
>>>>>> - int initialPosition = bb.position();
>>>>>> - int eof = doRead();
>>>>>> -
>>>>>> - if (eof <= 0){
>>>>>> - return -1;
>>>>>> - }
>>>>>> - // Back to the default one.
>>>>>> - byteBuffer = oldBB;
>>>>>> -
>>>>>> - // Calculate the number of bytes were read
>>>>>> - int bytesRead = bb.limit() - initialPosition;
>>>>>> - return bytesRead;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Recycle this object.
>>>>>> - */
>>>>>> - public void recycle(){
>>>>>> - byteBuffer = null;
>>>>>> - key = null;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the {_at_link SelectionKey} used to reads bytes.
>>>>>> - * @param key {_at_link SelectionKey}
>>>>>> - */
>>>>>> - public void setSelectionKey(SelectionKey key){
>>>>>> - this.key = key;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Read bytes using the read <code>ReadSelector</code>
>>>>>> - * @return - number of bytes read
>>>>>> - * @throws java.io.IOException
>>>>>> - */
>>>>>> - protected int doRead() throws IOException{
>>>>>> - if ( key == null ) return -1;
>>>>>> -
>>>>>> - int nRead = -1;
>>>>>> - try{
>>>>>> - if (secure){
>>>>>> - nRead = doSecureRead();
>>>>>> - } else {
>>>>>> - nRead = doClearRead();
>>>>>> - }
>>>>>> - } catch (IOException ex){
>>>>>> - nRead = -1;
>>>>>> - throw ex;
>>>>>> - } finally {
>>>>>> - if (nRead == -1){
>>>>>> - if (Thread.currentThread() instanceof WorkerThread){
>>>>>> - ConnectionCloseHandler cch =
>>>>>> (ConnectionCloseHandler)
>>>>>> - ((WorkerThread)Thread.currentThread())
>>>>>> -
>>>>>> .getAttachment().getAttribute("ConnectionCloseHandler");
>>>>>> - if (cch != null){
>>>>>> - cch.remotlyClosed(key);
>>>>>> - }
>>>>>> - }
>>>>>> - }
>>>>>> - return nRead;
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Read and decrypt bytes from the underlying SSL
>>>>>> connections. All
>>>>>> - * the SSLEngine operations are delegated to class {_at_link
>>>>>> SSLUtils}.
>>>>>> - * @return number of bytes read
>>>>>> - * @throws java.io.IOException
>>>>>> - */
>>>>>> - protected int doSecureRead() throws IOException{
>>>>>> - final WorkerThread workerThread =
>>>>>> - (WorkerThread)Thread.currentThread();
>>>>>> -
>>>>>> - int bytesRead = SSLUtils.doSecureRead((SocketChannel)
>>>>>> key.channel(),
>>>>>> - workerThread.getSSLEngine(), byteBuffer,
>>>>>> - workerThread.getInputBB());
>>>>>> - byteBuffer.flip();
>>>>>> -
>>>>>> - return bytesRead;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - protected int doClearRead() throws IOException{
>>>>>> - int bytesRead =
>>>>>> Utils.readWithTemporarySelector(key.channel(),
>>>>>> - byteBuffer, readTimeout);
>>>>>> - byteBuffer.flip();
>>>>>> -
>>>>>> - return bytesRead;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the timeout between two consecutives
>>>>>> Selector.select() when a
>>>>>> - * temporary Selector is used.
>>>>>> - * @return read timeout being used
>>>>>> - */
>>>>>> - public int getReadTimeout() {
>>>>>> - return readTimeout;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the timeout between two consecutives Selector.select()
>>>>>> when a
>>>>>> - * temporary Selector is used.
>>>>>> - * @param rt - read timeout
>>>>>> - */
>>>>>> - public void setReadTimeout(int rt) {
>>>>>> - readTimeout = rt;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the Selector.select() default time out.
>>>>>> - * @return default time out
>>>>>> - */
>>>>>> - public static int getDefaultReadTimeout() {
>>>>>> - return defaultReadTimeout;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the default Selector.select() time out.
>>>>>> - * @param aDefaultReadTimeout time out value
>>>>>> - */
>>>>>> - public static void setDefaultReadTimeout(int
>>>>>> aDefaultReadTimeout) {
>>>>>> - defaultReadTimeout = aDefaultReadTimeout;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Return the {_at_link Channel} type. The return value is
>>>>>> SocketChannel
>>>>>> - * or DatagramChannel.
>>>>>> - * @return {_at_link Channel} being used
>>>>>> - */
>>>>>> - public ChannelType getChannelType() {
>>>>>> - return defaultChannelType;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set the {_at_link Channel} type, which is ocketChannel
>>>>>> - * or DatagramChannel.
>>>>>> - * @param channelType {_at_link Channel} to use
>>>>>> - */
>>>>>> - public void setChannelType(ChannelType channelType) {
>>>>>> - this.defaultChannelType = channelType;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Is this Stream secure.
>>>>>> - * @return true is stream is secure, otherwise false
>>>>>> - */
>>>>>> - public boolean isSecure() {
>>>>>> - return secure;
>>>>>> - }
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Set this stream secure.
>>>>>> - * @param secure true to set stream secure, otherwise false
>>>>>> - */
>>>>>> - public void setSecure(boolean secure) {
>>>>>> - this.secure = secure;
>>>>>> - }
>>>>>> -}
>>>>>> -
>>>>>> Index: modules/grizzly/src/main/java/com/sun/grizzly/util/Cloner.java
>>>>>> ===================================================================
>>>>>> --- modules/grizzly/src/main/java/com/sun/grizzly/util/Cloner.java
>>>>>> (revision 2047)
>>>>>> +++ modules/grizzly/src/main/java/com/sun/grizzly/util/Cloner.java
>>>>>> (working copy)
>>>>>> @@ -1,101 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import com.sun.grizzly.Controller;
>>>>>> -import java.lang.reflect.Constructor;
>>>>>> -import java.util.logging.Level;
>>>>>> -
>>>>>> -/**
>>>>>> - * Class Cloner creates a clone of given object,
>>>>>> - * which should implement interface <code>Copyable</code>
>>>>>> - *
>>>>>> - * @author Alexey Stashok
>>>>>> - */
>>>>>> -public class Cloner {
>>>>>> - /**
>>>>>> - * Method creates a clone of given object pattern
>>>>>> - * Pattern parameter should implement <class>Copyable</class>
>>>>>> interface
>>>>>> - *
>>>>>> - * @param pattern represents object, which will be cloned.
>>>>>> Should implement <code>Copyable</code>
>>>>>> - * @return clone
>>>>>> - */
>>>>>> - public static <T extends Copyable> T clone(T pattern) {
>>>>>> - try {
>>>>>> - T copy = null;
>>>>>> -
>>>>>> - try {
>>>>>> - // Try default Constructor
>>>>>> - copy = (T) pattern.getClass().newInstance();
>>>>>> - } catch(InstantiationException e) {
>>>>>> - // If didn't succeed with default - try other
>>>>>> public constructors
>>>>>> - Constructor[] constructors =
>>>>>> pattern.getClass().getConstructors();
>>>>>> - if (constructors.length == 0) {
>>>>>> - // if there are no public constructors - try
>>>>>> others
>>>>>> - constructors =
>>>>>> pattern.getClass().getDeclaredConstructors();
>>>>>> - }
>>>>>> -
>>>>>> - for(Constructor constructor : constructors) {
>>>>>> - constructor.setAccessible(true);
>>>>>> - Object[] params =
>>>>>> - new
>>>>>> Object[constructor.getParameterTypes().length];
>>>>>> -
>>>>>> - try {
>>>>>> - copy = (T) constructor.newInstance(params);
>>>>>> - break;
>>>>>> - } catch(InstantiationException ee) {
>>>>>> - }
>>>>>> - }
>>>>>> - }
>>>>>> -
>>>>>> - if (copy == null) {
>>>>>> - throw new InstantiationException("Could not
>>>>>> create " +
>>>>>> - "an instance of class: " +
>>>>>> pattern.getClass().getName());
>>>>>> - }
>>>>>> -
>>>>>> - pattern.copyTo(copy);
>>>>>> - return copy;
>>>>>> - } catch (Exception e) {
>>>>>> - if (Controller.logger().isLoggable(Level.WARNING)) {
>>>>>> - Controller.logger().log(Level.WARNING, "Error
>>>>>> copying objects!", e);
>>>>>> - }
>>>>>> - throw new RuntimeException("Error copying objects! "
>>>>>> + e.getClass().getName() + ": " + e.getMessage());
>>>>>> - }
>>>>>> - }
>>>>>> -}
>>>>>> Index:
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/WorkerThreadImpl.java
>>>>>>
>>>>>> ===================================================================
>>>>>> ---
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/WorkerThreadImpl.java
>>>>>> (revision 2047)
>>>>>> +++
>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/WorkerThreadImpl.java
>>>>>> (working copy)
>>>>>> @@ -1,296 +0,0 @@
>>>>>> -/*
>>>>>> - *
>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>> - *
>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>> - *
>>>>>> - * The contents of this file are subject to the terms of either
>>>>>> the GNU
>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>> Development
>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>> "License"). You
>>>>>> - * may not use this file except in compliance with the License.
>>>>>> You can obtain
>>>>>> - * a copy of the License at
>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License for
>>>>>> the specific
>>>>>> - * language governing permissions and limitations under the License.
>>>>>> - *
>>>>>> - * When distributing the software, include this License Header
>>>>>> Notice in each
>>>>>> - * file and include the License file at
>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>> - * Sun designates this particular file as subject to the
>>>>>> "Classpath" exception
>>>>>> - * as provided by Sun in the GPL Version 2 section of the License
>>>>>> file that
>>>>>> - * accompanied this code. If applicable, add the following below
>>>>>> the License
>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>> your own
>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>> - * [name of copyright owner]"
>>>>>> - *
>>>>>> - * Contributor(s):
>>>>>> - *
>>>>>> - * If you wish your version of this file to be governed by only
>>>>>> the CDDL or
>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>> "[Contributor]
>>>>>> - * elects to include this software in this distribution under the
>>>>>> [CDDL or GPL
>>>>>> - * Version 2] license." If you don't indicate a single choice of
>>>>>> license, a
>>>>>> - * recipient has the option to distribute your version of this
>>>>>> file under
>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>> license to
>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>> Version 2 code
>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>> option applies
>>>>>> - * only if the new code is made subject to such option by the
>>>>>> copyright
>>>>>> - * holder.
>>>>>> - *
>>>>>> - */
>>>>>> -package com.sun.grizzly.util;
>>>>>> -
>>>>>> -import java.util.concurrent.Callable;
>>>>>> -import com.sun.grizzly.util.ByteBufferFactory.ByteBufferType;
>>>>>> -import com.sun.grizzly.util.ThreadAttachment.Mode;
>>>>>> -
>>>>>> -/**
>>>>>> - * Simple worker thread used for processing HTTP requests. All
>>>>>> threads are
>>>>>> - * synchronized using a {_at_link DefaultThreadPool} object
>>>>>> - *
>>>>>> - * @author Jean-Francois Arcand
>>>>>> - */
>>>>>> -public class WorkerThreadImpl extends WorkerThread {
>>>>>> -
>>>>>> - private static final int DEFAULT_BYTE_BUFFER_SIZE = 8192;
>>>>>> -
>>>>>> - /**
>>>>>> - * The {_at_link DefaultThreadPool} on which this thread
>>>>>> synchronize.
>>>>>> - */
>>>>>> - protected DefaultThreadPool threadPool;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The <code>ThreadGroup</code> used.
>>>>>> - */
>>>>>> - protected final static ThreadGroup threadGroup = new
>>>>>> ThreadGroup("Grizzly");
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The state/attributes on this WorkerThread.
>>>>>> - */
>>>>>> - private ThreadAttachment threadAttachment;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The ByteBufferType used when creating the ByteBuffer
>>>>>> attached to this object.
>>>>>> - */
>>>>>> - private ByteBufferType byteBufferType =
>>>>>> ByteBufferType.HEAP_VIEW;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * The size of the ByteBuffer attached to this object.
>>>>>> - */
>>>>>> - private int initialByteBufferSize;
>>>>>> -
>>>>>> -
>>>>>> - /**
>>>>>> - * Create a Thread that will synchronizes/block on
>>>>>> - * {_at_link DefaultThreadPool} instance.
>>>>>> - * @param threadGroup <code>ThreadGroup</code>
>>>>>> - * @param runnable <code>Runnable</code>
>>>>>> - */
>>>>>> - public WorkerThreadImpl(ThreadGroup threadGroup, Runnable
>>>>>> runnable){
>>>>>> - this(threadGroup, runnable, DEFAULT_BYTE_BUFFER_SIZE);
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Create a Thread that will synchronizes/block on
>>>>>> - * {_at_link DefaultThreadPool} instance.
>>>>>> - * @param threadGroup <code>ThreadGroup</code>
>>>>>> - * @param runnable <code>Runnable</code>
>>>>>> - * @param initialByteBufferSize initial {_at_link ByteBuffer} size
>>>>>> - */
>>>>>> - public WorkerThreadImpl(ThreadGroup threadGroup, Runnable
>>>>>> runnable,
>>>>>> - int initialByteBufferSize){
>>>>>> - super(threadGroup, runnable);
>>>>>> - setDaemon(true);
>>>>>> - this.initialByteBufferSize = initialByteBufferSize;
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Create a Thread that will synchronizes/block on
>>>>>> - * {_at_link DefaultThreadPool} instance.
>>>>>> - * @param threadPool {_at_link DefaultThreadPool}
>>>>>> - * @param name <code>String</code>
>>>>>> - */
>>>>>> - public WorkerThreadImpl(DefaultThreadPool threadPool, String
>>>>>> name){
>>>>>> - this(threadPool, name, DEFAULT_BYTE_BUFFER_SIZE);
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Create a Thread that will synchronizes/block on
>>>>>> - * {_at_link DefaultThreadPool} instance.
>>>>>> - * @param threadPool {_at_link DefaultThreadPool}
>>>>>> - * @param name <code>String</code>
>>>>>> - * @param initialByteBufferSize initial {_at_link ByteBuffer} size
>>>>>> - */
>>>>>> - public WorkerThreadImpl(DefaultThreadPool threadPool, String
>>>>>> name,
>>>>>> - int initialByteBufferSize){
>>>>>> - super(threadGroup, name);
>>>>>> - this.threadPool = threadPool;
>>>>>> - setDaemon(true);
>>>>>> - this.initialByteBufferSize = initialByteBufferSize;
>>>>>> - }
>>>>>> -
>>>>>> - /**
>>>>>> - * Create a Thread that will synchronizes/block on
>>>>>> - * {_at_link DefaultThreadPool} instance.
>>>>>> - * @param threadPool {_at_link DefaultThreadPool}
>>>>>> - * @param name <code>String</code>
>>>>>> - * @param initialByteBufferSize initial {_at_link ByteBuffer} size
>>>>>> - */
>>>>>> - public WorkerThreadImpl(DefaultThreadPool threadPool, String
>>>>>> name,
>>>>>> - Runnable runnable, int initialByteBufferSize){
>>>>>> - super(threadGroup, runnable, name);
>>>>>> - this.threadPool = threadPool;
>>>>>> - setDaemon(true);
>>>>>> - this.initialByteBufferSize = initialByteBufferSize;
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Allocate a {_at_link ByteBuffer} if the current instance is
>>>>>>> null;
>>>>>>> - */
>>>>>>> - protected void createByteBuffer(boolean force){
>>>>>>> - if (force || byteBuffer == null){
>>>>>>> - byteBuffer = ByteBufferFactory.allocate(byteBufferType,
>>>>>>> - initialByteBufferSize);
>>>>>>> - }
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - public ThreadAttachment updateAttachment(int mode) {
>>>>>>> - ThreadAttachment currentAttachment = getAttachment();
>>>>>>> - currentAttachment.reset();
>>>>>>> -
>>>>>>> - if ((mode & Mode.BYTE_BUFFER) != 0) {
>>>>>>> - currentAttachment.setByteBuffer(byteBuffer);
>>>>>>> - }
>>>>>>> -
>>>>>>> - if ((mode & Mode.SSL_ENGINE) != 0) {
>>>>>>> - currentAttachment.setSSLEngine(sslEngine);
>>>>>>> - }
>>>>>>> -
>>>>>>> - if ((mode & Mode.INPUT_BB) != 0) {
>>>>>>> - currentAttachment.setInputBB(inputBB);
>>>>>>> - }
>>>>>>> -
>>>>>>> - if ((mode & Mode.OUTPUT_BB) != 0) {
>>>>>>> - currentAttachment.setOutputBB(outputBB);
>>>>>>> - }
>>>>>>> -
>>>>>>> - currentAttachment.setMode(mode);
>>>>>>> -
>>>>>>> - return currentAttachment;
>>>>>>> - }
>>>>>>> -
>>>>>>> - public ThreadAttachment getAttachment() {
>>>>>>> - if (threadAttachment == null) {
>>>>>>> - threadAttachment = new ThreadAttachment();
>>>>>>> - threadAttachment.associate();
>>>>>>> - }
>>>>>>> -
>>>>>>> - return threadAttachment;
>>>>>>> - }
>>>>>>> -
>>>>>>> - public ThreadAttachment detach() {
>>>>>>> - ThreadAttachment currentAttachment = getAttachment();
>>>>>>> - int mode = currentAttachment.getMode();
>>>>>>> - updateAttachment(mode);
>>>>>>> -
>>>>>>> - // Re-create a new ByteBuffer
>>>>>>> - if ((mode & Mode.BYTE_BUFFER) != 0) {
>>>>>>> - createByteBuffer(true);
>>>>>>> - }
>>>>>>> -
>>>>>>> - if ((mode & Mode.SSL_ENGINE) != 0) {
>>>>>>> - sslEngine = null;
>>>>>>> - }
>>>>>>> -
>>>>>>> - if ((mode & Mode.INPUT_BB) != 0) {
>>>>>>> - inputBB = null;
>>>>>>> - }
>>>>>>> -
>>>>>>> - if ((mode & Mode.OUTPUT_BB) != 0) {
>>>>>>> - outputBB = null;
>>>>>>> - }
>>>>>>> -
>>>>>>> - // Switch to the new ThreadAttachment.
>>>>>>> - this.threadAttachment = null;
>>>>>>> -
>>>>>>> - currentAttachment.deassociate();
>>>>>>> - return currentAttachment;
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - public void attach(ThreadAttachment threadAttachment) {
>>>>>>> - threadAttachment.associate();
>>>>>>> - int mode = threadAttachment.getMode();
>>>>>>> -
>>>>>>> - if ((mode & Mode.BYTE_BUFFER) != 0) {
>>>>>>> - byteBuffer = threadAttachment.getByteBuffer();
>>>>>>> - }
>>>>>>> -
>>>>>>> - if ((mode & Mode.SSL_ENGINE) != 0) {
>>>>>>> - sslEngine = threadAttachment.getSSLEngine();
>>>>>>> - }
>>>>>>> -
>>>>>>> - if ((mode & Mode.INPUT_BB) != 0) {
>>>>>>> - inputBB = threadAttachment.getInputBB();
>>>>>>> - }
>>>>>>> -
>>>>>>> - if ((mode & Mode.OUTPUT_BB) != 0) {
>>>>>>> - outputBB = threadAttachment.getOutputBB();
>>>>>>> - }
>>>>>>> -
>>>>>>> - this.threadAttachment = threadAttachment;
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * The <code>ByteBufferType</code> used to create the {_at_link
>>>>>>> ByteBuffer}
>>>>>>> - * associated with this object.
>>>>>>> - * @return The <code>ByteBufferType</code> used to create
>>>>>>> the {_at_link ByteBuffer}
>>>>>>> - * associated with this object.
>>>>>>> - */
>>>>>>> - public ByteBufferType getByteBufferType() {
>>>>>>> - return byteBufferType;
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Set the <code>ByteBufferType</code> to use when creating the
>>>>>>> - * {_at_link ByteBuffer} associated with this object.
>>>>>>> - * @param byteBufferType The ByteBuffer type.
>>>>>>> - */
>>>>>>> - public void setByteBufferType(ByteBufferType byteBufferType) {
>>>>>>> - this.byteBufferType = byteBufferType;
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Processes the given task.
>>>>>>> - *
>>>>>>> - * @param t the task to process
>>>>>>> - */
>>>>>>> - protected void processTask(Callable t) throws Exception {
>>>>>>> - if (t != null){
>>>>>>> - t.call();
>>>>>>> - }
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - @Override
>>>>>>> - protected void reset() {
>>>>>>> - if (threadAttachment != null) {
>>>>>>> - /**
>>>>>>> - * ThreadAttachment was created during prev.
>>>>>>> processing and wasn't
>>>>>>> - * detached. It could happen due to some error - we
>>>>>>> need to release
>>>>>>> - * the ThreadAttachment association with the current
>>>>>>> thread
>>>>>>> - */
>>>>>>> - threadAttachment.deassociate();
>>>>>>> - }
>>>>>>> -
>>>>>>> - threadAttachment = null;
>>>>>>> - super.reset();
>>>>>>> - }
>>>>>>> -}
>>>>>>> -
>>>>>>> Index:
>>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/WorkerThreadFactory.java
>>>>>>>
>>>>>>> ===================================================================
>>>>>>> ---
>>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/WorkerThreadFactory.java
>>>>>>> (revision 2047)
>>>>>>> +++
>>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/WorkerThreadFactory.java
>>>>>>> (working copy)
>>>>>>> @@ -1,51 +0,0 @@
>>>>>>> -/*
>>>>>>> - * The contents of this file are subject to the terms
>>>>>>> - * of the Common Development and Distribution License
>>>>>>> - * (the License). You may not use this file except in
>>>>>>> - * compliance with the License.
>>>>>>> - *
>>>>>>> - * You can obtain a copy of the license at
>>>>>>> - * https://glassfish.dev.java.net/public/CDDLv1.0.html or
>>>>>>> - * glassfish/bootstrap/legal/CDDLv1.0.txt.
>>>>>>> - * See the License for the specific language governing
>>>>>>> - * permissions and limitations under the License.
>>>>>>> - *
>>>>>>> - * When distributing Covered Code, include this CDDL
>>>>>>> - * Header Notice in each file and include the License file
>>>>>>> - * at glassfish/bootstrap/legal/CDDLv1.0.txt.
>>>>>>> - * If applicable, add the following below the CDDL Header,
>>>>>>> - * with the fields enclosed by brackets [] replaced by
>>>>>>> - * you own identifying information:
>>>>>>> - * "Portions Copyrighted [year] [name of copyright owner]"
>>>>>>> - *
>>>>>>> - * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
>>>>>>> - */
>>>>>>> -
>>>>>>> -package com.sun.grizzly.util;
>>>>>>> -
>>>>>>> -import java.util.concurrent.ThreadFactory;
>>>>>>> -
>>>>>>> -/**
>>>>>>> - * Simple utility class to create {_at_link WorkerThread}
>>>>>>> - * @author Jeanfrancois Arcand
>>>>>>> - */
>>>>>>> -public class WorkerThreadFactory implements ThreadFactory{
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * The {_at_link ThreadGroup}
>>>>>>> - */
>>>>>>> - private final static ThreadGroup threadGroup = new
>>>>>>> ThreadGroup("Grizzly");
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Create a new {_at_link WorkerThread}.
>>>>>>> - * @param r a Runabble
>>>>>>> - * @return
>>>>>>> - */
>>>>>>> - public Thread newThread(Runnable r){
>>>>>>> - WorkerThreadImpl t = new WorkerThreadImpl(threadGroup,r);
>>>>>>> - t.setDaemon(true);
>>>>>>> - return t;
>>>>>>> - }
>>>>>>> -
>>>>>>> -}
>>>>>>> Index:
>>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ByteBufferInputStream.java
>>>>>>>
>>>>>>> ===================================================================
>>>>>>> ---
>>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ByteBufferInputStream.java
>>>>>>> (revision 2047)
>>>>>>> +++
>>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/ByteBufferInputStream.java
>>>>>>> (working copy)
>>>>>>> @@ -1,51 +0,0 @@
>>>>>>> -/*
>>>>>>> - *
>>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>>> - *
>>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>>> - *
>>>>>>> - * The contents of this file are subject to the terms of either
>>>>>>> the GNU
>>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>>> Development
>>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>>> "License"). You
>>>>>>> - * may not use this file except in compliance with the License.
>>>>>>> You can obtain
>>>>>>> - * a copy of the License at
>>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License
>>>>>>> for the specific
>>>>>>> - * language governing permissions and limitations under the
>>>>>>> License.
>>>>>>> - *
>>>>>>> - * When distributing the software, include this License Header
>>>>>>> Notice in each
>>>>>>> - * file and include the License file at
>>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>>> - * Sun designates this particular file as subject to the
>>>>>>> "Classpath" exception
>>>>>>> - * as provided by Sun in the GPL Version 2 section of the
>>>>>>> License file that
>>>>>>> - * accompanied this code. If applicable, add the following
>>>>>>> below the License
>>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>>> your own
>>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>>> - * [name of copyright owner]"
>>>>>>> - *
>>>>>>> - * Contributor(s):
>>>>>>> - *
>>>>>>> - * If you wish your version of this file to be governed by only
>>>>>>> the CDDL or
>>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>>> "[Contributor]
>>>>>>> - * elects to include this software in this distribution under
>>>>>>> the [CDDL or GPL
>>>>>>> - * Version 2] license." If you don't indicate a single choice
>>>>>>> of license, a
>>>>>>> - * recipient has the option to distribute your version of this
>>>>>>> file under
>>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>>> license to
>>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>>> Version 2 code
>>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>>> option applies
>>>>>>> - * only if the new code is made subject to such option by the
>>>>>>> copyright
>>>>>>> - * holder.
>>>>>>> - *
>>>>>>> - */
>>>>>>> -package com.sun.grizzly.util;
>>>>>>> -
>>>>>>> -/**
>>>>>>> - * This class implement IO stream operations on top of a {_at_link
>>>>>>> ByteBuffer}.
>>>>>>> - * Under the hood, this class use a temporary Selector pool for
>>>>>>> reading
>>>>>>> - * bytes when the client ask for more and the current Selector
>>>>>>> is not yet ready.
>>>>>>> - *
>>>>>>> - * @author Jeanfrancois Arcand
>>>>>>> - * @deprecated - Use {_at_link InputReader} instead
>>>>>>> - */
>>>>>>> -public class ByteBufferInputStream extends InputReader {
>>>>>>> -
>>>>>>> -}
>>>>>>> -
>>>>>>> Index:
>>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/OutputWriter.java
>>>>>>> ===================================================================
>>>>>>> ---
>>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/OutputWriter.java
>>>>>>> (revision 2047)
>>>>>>> +++
>>>>>>> modules/grizzly/src/main/java/com/sun/grizzly/util/OutputWriter.java
>>>>>>> (working copy)
>>>>>>> @@ -1,350 +0,0 @@
>>>>>>> -/*
>>>>>>> - *
>>>>>>> - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER.
>>>>>>> - *
>>>>>>> - * Copyright 2007-2008 Sun Microsystems, Inc. All rights reserved.
>>>>>>> - *
>>>>>>> - * The contents of this file are subject to the terms of either
>>>>>>> the GNU
>>>>>>> - * General Public License Version 2 only ("GPL") or the Common
>>>>>>> Development
>>>>>>> - * and Distribution License("CDDL") (collectively, the
>>>>>>> "License"). You
>>>>>>> - * may not use this file except in compliance with the License.
>>>>>>> You can obtain
>>>>>>> - * a copy of the License at
>>>>>>> https://glassfish.dev.java.net/public/CDDL+GPL.html
>>>>>>> - * or glassfish/bootstrap/legal/LICENSE.txt. See the License
>>>>>>> for the specific
>>>>>>> - * language governing permissions and limitations under the
>>>>>>> License.
>>>>>>> - *
>>>>>>> - * When distributing the software, include this License Header
>>>>>>> Notice in each
>>>>>>> - * file and include the License file at
>>>>>>> glassfish/bootstrap/legal/LICENSE.txt.
>>>>>>> - * Sun designates this particular file as subject to the
>>>>>>> "Classpath" exception
>>>>>>> - * as provided by Sun in the GPL Version 2 section of the
>>>>>>> License file that
>>>>>>> - * accompanied this code. If applicable, add the following
>>>>>>> below the License
>>>>>>> - * Header, with the fields enclosed by brackets [] replaced by
>>>>>>> your own
>>>>>>> - * identifying information: "Portions Copyrighted [year]
>>>>>>> - * [name of copyright owner]"
>>>>>>> - *
>>>>>>> - * Contributor(s):
>>>>>>> - *
>>>>>>> - * If you wish your version of this file to be governed by only
>>>>>>> the CDDL or
>>>>>>> - * only the GPL Version 2, indicate your decision by adding
>>>>>>> "[Contributor]
>>>>>>> - * elects to include this software in this distribution under
>>>>>>> the [CDDL or GPL
>>>>>>> - * Version 2] license." If you don't indicate a single choice
>>>>>>> of license, a
>>>>>>> - * recipient has the option to distribute your version of this
>>>>>>> file under
>>>>>>> - * either the CDDL, the GPL Version 2 or to extend the choice of
>>>>>>> license to
>>>>>>> - * its licensees as provided above. However, if you add GPL
>>>>>>> Version 2 code
>>>>>>> - * and therefore, elected the GPL Version 2 license, then the
>>>>>>> option applies
>>>>>>> - * only if the new code is made subject to such option by the
>>>>>>> copyright
>>>>>>> - * holder.
>>>>>>> - *
>>>>>>> - */
>>>>>>> -
>>>>>>> -package com.sun.grizzly.util;
>>>>>>> -
>>>>>>> -import java.io.IOException;
>>>>>>> -import java.net.SocketAddress;
>>>>>>> -import java.nio.ByteBuffer;
>>>>>>> -import java.nio.channels.DatagramChannel;
>>>>>>> -import java.nio.channels.SelectableChannel;
>>>>>>> -import java.nio.channels.SelectionKey;
>>>>>>> -import java.nio.channels.Selector;
>>>>>>> -import java.nio.channels.SocketChannel;
>>>>>>> -import java.nio.channels.WritableByteChannel;
>>>>>>> -
>>>>>>> -/**
>>>>>>> - * NIO utility to flush {_at_link ByteBuffer}
>>>>>>> - *
>>>>>>> - * @author Scott Oaks
>>>>>>> - */
>>>>>>> -public class OutputWriter {
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * The default rime out before closing the connection
>>>>>>> - */
>>>>>>> - private static int defaultWriteTimeout = 30000;
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Flush the buffer by looping until the {_at_link ByteBuffer}
>>>>>>> is empty
>>>>>>> - * @param channel {_at_link SelectableChannel}
>>>>>>> - * @param bb the ByteBuffer to write.
>>>>>>> - * @return
>>>>>>> - * @throws java.io.IOException
>>>>>>> - */
>>>>>>> - public static long flushChannel(SelectableChannel channel,
>>>>>>> ByteBuffer bb)
>>>>>>> - throws IOException{
>>>>>>> - return flushChannel(channel,bb,defaultWriteTimeout);
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Flush the buffer by looping until the {_at_link ByteBuffer}
>>>>>>> is empty
>>>>>>> - * @param channel {_at_link SelectableChannel}
>>>>>>> - * @param bb the ByteBuffer to write.
>>>>>>> - * @param writeTimeout
>>>>>>> - * @return
>>>>>>> - * @throws java.io.IOException
>>>>>>> - */
>>>>>>> - public static long flushChannel(SelectableChannel channel,
>>>>>>> - ByteBuffer bb, long writeTimeout) throws IOException{
>>>>>>> -
>>>>>>> - if (bb == null){
>>>>>>> - throw new IllegalStateException("Invalid Response
>>>>>>> State. ByteBuffer"
>>>>>>> - + " cannot be null.");
>>>>>>> - }
>>>>>>> -
>>>>>>> - if (channel == null){
>>>>>>> - throw new IllegalStateException("Invalid Response
>>>>>>> State. " +
>>>>>>> - "SocketChannel cannot be null.");
>>>>>>> - }
>>>>>>> -
>>>>>>> - SelectionKey key = null;
>>>>>>> - Selector writeSelector = null;
>>>>>>> - int attempts = 0;
>>>>>>> - int nWrite = 0;
>>>>>>> - int len = -1;
>>>>>>> - try {
>>>>>>> - WritableByteChannel writableChannel =
>>>>>>> (WritableByteChannel) channel;
>>>>>>> - while ( bb.hasRemaining() ) {
>>>>>>> - len = writableChannel.write(bb);
>>>>>>> - if (len > 0){
>>>>>>> - attempts = 0;
>>>>>>> - nWrite += len;
>>>>>>> - } else {
>>>>>>> - attempts++;
>>>>>>> - if ( writeSelector == null ){
>>>>>>> - writeSelector =
>>>>>>> SelectorFactory.getSelector();
>>>>>>> - if ( writeSelector == null){
>>>>>>> - // Continue using the main one.
>>>>>>> - continue;
>>>>>>> - }
>>>>>>> - key = channel.register(writeSelector,
>>>>>>> - SelectionKey.OP_WRITE);
>>>>>>> - }
>>>>>>> -
>>>>>>> - if (writeSelector.select(writeTimeout) == 0) {
>>>>>>> - if (attempts > 2)
>>>>>>> - throw new IOException("Client
>>>>>>> disconnected");
>>>>>>> - }
>>>>>>> - }
>>>>>>> - }
>>>>>>> - } catch (IOException ex){
>>>>>>> - len = -1;
>>>>>>> - throw ex;
>>>>>>> - } finally {
>>>>>>> - if (key != null) {
>>>>>>> - key.cancel();
>>>>>>> - key = null;
>>>>>>> - }
>>>>>>> -
>>>>>>> - if ( writeSelector != null ) {
>>>>>>> - // Cancel the key.
>>>>>>> -
>>>>>>> SelectorFactory.selectNowAndReturnSelector(writeSelector);
>>>>>>> - }
>>>>>>> -
>>>>>>> - if (len == -1){
>>>>>>> - if (Thread.currentThread() instanceof
>>>>>>> WorkerThread){
>>>>>>> - ConnectionCloseHandler cch =
>>>>>>> (ConnectionCloseHandler)
>>>>>>> - ((WorkerThread)Thread.currentThread())
>>>>>>> -
>>>>>>> .getAttachment().getAttribute("ConnectionCloseHandler");
>>>>>>> - if (cch != null){
>>>>>>> - cch.remotlyClosed(key);
>>>>>>> - }
>>>>>>> - }
>>>>>>> - }
>>>>>>> - }
>>>>>>> - return nWrite;
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Flush the buffer by looping until the {_at_link ByteBuffer}
>>>>>>> is empty
>>>>>>> - * @param socketChannel {_at_link SocketChannel}
>>>>>>> - * @param bb the ByteBuffer to write.
>>>>>>> - * @return
>>>>>>> - * @throws java.io.IOException
>>>>>>> - */
>>>>>>> - public static long flushChannel(SocketChannel socketChannel,
>>>>>>> ByteBuffer[] bb)
>>>>>>> - throws IOException{
>>>>>>> - return flushChannel(socketChannel,bb,defaultWriteTimeout);
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Flush the buffer by looping until the {_at_link ByteBuffer}
>>>>>>> is empty
>>>>>>> - * @param socketChannel {_at_link SocketChannel}
>>>>>>> - * @param bb the ByteBuffer to write.
>>>>>>> - * @param writeTimeout
>>>>>>> - * @return
>>>>>>> - * @throws java.io.IOException
>>>>>>> - */
>>>>>>> - public static long flushChannel(SocketChannel socketChannel,
>>>>>>> - ByteBuffer[] bb, long writeTimeout) throws IOException{
>>>>>>> -
>>>>>>> - if (bb == null){
>>>>>>> - throw new IllegalStateException("Invalid Response
>>>>>>> State. ByteBuffer"
>>>>>>> - + " cannot be null.");
>>>>>>> - }
>>>>>>> -
>>>>>>> - if (socketChannel == null){
>>>>>>> - throw new IllegalStateException("Invalid Response
>>>>>>> State. " +
>>>>>>> - "SocketChannel cannot be null.");
>>>>>>> - }
>>>>>>> -
>>>>>>> - SelectionKey key = null;
>>>>>>> - Selector writeSelector = null;
>>>>>>> - int attempts = 0;
>>>>>>> - long totalBytes = 0;
>>>>>>> - for (ByteBuffer aBb : bb) {
>>>>>>> - totalBytes += aBb.remaining();
>>>>>>> - }
>>>>>>> -
>>>>>>> - long nWrite = 0;
>>>>>>> - long len = -1;
>>>>>>> - try {
>>>>>>> - while (nWrite < totalBytes ) {
>>>>>>> - len = socketChannel.write(bb);
>>>>>>> - if (len > 0){
>>>>>>> - attempts = 0;
>>>>>>> - nWrite += len;
>>>>>>> - } else {
>>>>>>> - if ( writeSelector == null ){
>>>>>>> - writeSelector =
>>>>>>> SelectorFactory.getSelector();
>>>>>>> - if ( writeSelector == null){
>>>>>>> - ; // Continue using the main one.
>>>>>>> - continue;
>>>>>>> - }
>>>>>>> - }
>>>>>>> -
>>>>>>> - key = socketChannel.register(writeSelector,
>>>>>>> -
>>>>>>> SelectionKey.OP_WRITE);
>>>>>>> -
>>>>>>> - if (writeSelector.select(writeTimeout) == 0) {
>>>>>>> - if (attempts > 2)
>>>>>>> - throw new IOException("Client
>>>>>>> disconnected");
>>>>>>> - }
>>>>>>> - }
>>>>>>> - }
>>>>>>> - } catch (IOException ex){
>>>>>>> - len = -1;
>>>>>>> - throw ex;
>>>>>>> - } finally {
>>>>>>> - if (key != null) {
>>>>>>> - key.cancel();
>>>>>>> - key = null;
>>>>>>> - }
>>>>>>> -
>>>>>>> - if ( writeSelector != null ) {
>>>>>>> - // Cancel the key.
>>>>>>> -
>>>>>>> SelectorFactory.selectNowAndReturnSelector(writeSelector);
>>>>>>> - }
>>>>>>> -
>>>>>>> - if (len == -1){
>>>>>>> - if (Thread.currentThread() instanceof
>>>>>>> WorkerThread){
>>>>>>> - ConnectionCloseHandler cch =
>>>>>>> (ConnectionCloseHandler)
>>>>>>> - ((WorkerThread)Thread.currentThread())
>>>>>>> -
>>>>>>> .getAttachment().getAttribute("ConnectionCloseHandler");
>>>>>>> - if (cch != null){
>>>>>>> - cch.remotlyClosed(key);
>>>>>>> - }
>>>>>>> - }
>>>>>>> - }
>>>>>>> - }
>>>>>>> - return nWrite;
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Flush the buffer by looping until the {_at_link ByteBuffer}
>>>>>>> is empty
>>>>>>> - * @param datagramChannel
>>>>>>> - * @param socketAddress
>>>>>>> - * @param bb the ByteBuffer to write.
>>>>>>> - * @return
>>>>>>> - * @throws java.io.IOException
>>>>>>> - */
>>>>>>> - public static long flushChannel(DatagramChannel
>>>>>>> datagramChannel,
>>>>>>> - SocketAddress socketAddress, ByteBuffer bb)
>>>>>>> - throws IOException{
>>>>>>> - return
>>>>>>> flushChannel(datagramChannel,socketAddress,bb,defaultWriteTimeout);
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - /**
>>>>>>> - * Flush the buffer by looping until the {_at_link ByteBuffer}
>>>>>>> is empty
>>>>>>> - * @param datagramChannel
>>>>>>> - * @param socketAddress
>>>>>>> - * @param bb the ByteBuffer to write.
>>>>>>> - * @param writeTimeout
>>>>>>> - * @return
>>>>>>> - * @throws java.io.IOException
>>>>>>> - */
>>>>>>> - public static long flushChannel(DatagramChannel
>>>>>>> datagramChannel,
>>>>>>> - SocketAddress socketAddress, ByteBuffer bb, long
>>>>>>> writeTimeout)
>>>>>>> - throws IOException{
>>>>>>> -
>>>>>>> - if (bb == null){
>>>>>>> - throw new IllegalStateException("Invalid Response
>>>>>>> State. ByteBuffer"
>>>>>>> - + " cannot be null.");
>>>>>>> - }
>>>>>>> -
>>>>>>> - if (datagramChannel == null){
>>>>>>> - throw new IllegalStateException("Invalid Response
>>>>>>> State. " +
>>>>>>> - "DatagramChannel cannot be null.");
>>>>>>> - }
>>>>>>> -
>>>>>>> - if (socketAddress == null){
>>>>>>> - throw new IllegalStateException("Invalid Response
>>>>>>> State. " +
>>>>>>> - "SocketAddress cannot be null.");
>>>>>>> - }
>>>>>>> -
>>>>>>> - SelectionKey key = null;
>>>>>>> - Selector writeSelector = null;
>>>>>>> - int attempts = 0;
>>>>>>> - int nWrite = 0;
>>>>>>> - try {
>>>>>>> - while ( bb.hasRemaining() ) {
>>>>>>> - int len = datagramChannel.send(bb,socketAddress);
>>>>>>> - if (len > 0){
>>>>>>> - attempts = 0;
>>>>>>> - nWrite += len;
>>>>>>> - } else {
>>>>>>> - if ( writeSelector == null ){
>>>>>>> - writeSelector =
>>>>>>> SelectorFactory.getSelector();
>>>>>>> - if ( writeSelector == null){
>>>>>>> - // Continue using the main one.
>>>>>>> - continue;
>>>>>>> - }
>>>>>>> - }
>>>>>>> -
>>>>>>> - key = datagramChannel.register(writeSelector,
>>>>>>> -
>>>>>>> SelectionKey.OP_WRITE);
>>>>>>> -
>>>>>>> - if (writeSelector.select(writeTimeout) == 0) {
>>>>>>> - if (attempts > 2)
>>>>>>> - throw new IOException("Client
>>>>>>> disconnected");
>>>>>>> - } else {
>>>>>>> - attempts--;
>>>>>>> - }
>>>>>>> - }
>>>>>>> - }
>>>>>>> - } finally {
>>>>>>> - if (key != null) {
>>>>>>> - key.cancel();
>>>>>>> - key = null;
>>>>>>> - }
>>>>>>> -
>>>>>>> - if ( writeSelector != null ) {
>>>>>>> - // Cancel the key.
>>>>>>> -
>>>>>>> SelectorFactory.selectNowAndReturnSelector(writeSelector);
>>>>>>> - }
>>>>>>> - }
>>>>>>> - return nWrite;
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - public static int getDefaultWriteTimeout() {
>>>>>>> - return defaultWriteTimeout;
>>>>>>> - }
>>>>>>> -
>>>>>>> -
>>>>>>> - public static void setDefaultWriteTimeout(int
>>>>>>> aDefaultWriteTimeout) {
>>>>>>> - defaultWriteTimeout = aDefaultWriteTimeout;
>>>>>>> - }
>>>>>>> -}
>>>>>>>
>>>>>>> ---------------------------------------------------------------------
>>>>>>>
>>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_grizzly.dev.java.net
>>>>>>> <mailto:dev-unsubscribe_at_grizzly.dev.java.net>
>>>>>>> For additional commands, e-mail: dev-help_at_grizzly.dev.java.net
>>>>>>> <mailto:dev-help_at_grizzly.dev.java.net>
>>>>>> ---------------------------------------------------------------------
>>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_grizzly.dev.java.net
>>>>>> <mailto:dev-unsubscribe_at_grizzly.dev.java.net>
>>>>>> For additional commands, e-mail: dev-help_at_grizzly.dev.java.net
>>>>>> <mailto:dev-help_at_grizzly.dev.java.net>
>>>>>
>>>>> ---------------------------------------------------------------------
>>>>> To unsubscribe, e-mail: dev-unsubscribe_at_grizzly.dev.java.net
>>>>> <mailto:dev-unsubscribe_at_grizzly.dev.java.net>
>>>>> For additional commands, e-mail: dev-help_at_grizzly.dev.java.net
>>>>> <mailto:dev-help_at_grizzly.dev.java.net>
>>>>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscribe_at_grizzly.dev.java.net
> For additional commands, e-mail: dev-help_at_grizzly.dev.java.net
>