dev@grizzly.java.net

Re: [HEADS UP] OSGi support: mandatory changes

From: Oleksiy Stashok <Oleksiy.Stashok_at_Sun.COM>
Date: Fri, 19 Dec 2008 11:07:14 +0100

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)

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, 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 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/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.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 copy)
> @@ -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;
> - 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
> - 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
> For additional commands, e-mail: dev-help_at_grizzly.dev.java.net