Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 5.3

...

Input

...

and

...

Output

...

Stream

...

Adapters

...

The

...

Apache

...

Wink

...

Client

...

provides

...

the

...

ability

...

to

...

manipulate

...

raw

...

Http

...

input

...

and

...

output

...

entity

...

streams

...

through

...

the

...

InputStreamAdapter

...

and

...

the

...

OutputStreamAdapter

...

interfaces.

...

This

...

is

...

useful

...

for

...

modifying

...

the

...

input

...

and

...

output

...

streams,

...

regardless

...

of

...

the

...

actual

...

entity,

...

for

...

example

...

when

...

adding

...

compression

...

capabilities.

...


The

...

adapt()

...

method

...

of

...

the

...

output

...

stream

...

adapter

...

is

...

called

...

before

...

the

...

request

...

headers

...

are

...

committed,

...

in

...

order

...

to

...

allow

...

the

...

adapter

...

to

...

manipulate

...

them.

...

The

...

adapt()

...

method

...

of

...

the

...

input

...

stream

...

adapter

...

is

...

called

...

after

...

the

...

response

...

status

...

code

...

and

...

the

...

headers

...

are

...

received

...

in

...

order

...

to

...

allow

...

the

...

adapter

...

to

...

behave

...

accordingly.

...

Stream

...

Adapters

...

Example

...

The

...

following

...

example

...

demonstrates

...

how

...

to

...

implement

...

input

...

and

...

output adapters.

Gzip Handler

The following code snippet is an example of adding a input and output adapters in the Gzip handler.

Code Block
xml
xml
public  adapters.

h4. Gzip Handlerpublic class GzipHandler implements ClientHandler {
   public ClientResponse handle(ClientRequest request,
                                HandlerContext context) {
        request.getHeaders().add("Accept-Encoding", "gzip");
        context.addInputStreamAdapter(new GzipInputAdapter());
        context.addOutputStreamAdapter(new GzipOutputAdapter());
        return context.doChain(request);
  }}

Explanation

The Gzip handler creates instances of the GzipInputAdapter and the GzipOutputAdapter and adds them to the stream adapters of the current request by invoking the addInputStreamAdapter() method and the addOutputStreamAdapter() method on the HandlerContext instance.

Gzip Input Stream Adapter

The following code snippet is an example of an implementation of a Gzip input stream adapter.

Code Block
xml
xml
class 

h4. Gzip Input Stream Adapterclass GzipInputAdapter implements InputStreamAdapter{
        public InputStream adapt(InputStream is,
                                 ClientResponse response) {
      String header = response.getHeaders().getFirst("Content-Encoding");
      if (header != null && header.equalsIgnoreCase("gzip")) {
        return new GZIPInputStream(is);
      }
      return is;
   }}


h4. Gzip Output

Explanation

The Gzip input stream adapter is responsible for wrapping the input stream with the Gzip input stream.

Gzip Output Stream Adapter

The following code snippet is an example of an implementation of a Gzip output stream adapter.

Code Block
xml
xml
class  Stream Adapterclass GzipOutputAdapter implements OutputStreamAdapter {
    public OutputStream adapt(OutputStream os,
                              ClientRequest request) {
        request.getHeaders().add("Content-Encoding", "gzip");
        return new GZIPOutputStream(os);
    }}


h4. Explanation

The Gzip handler creates instances of the GzipInputAdapter and the GzipOutputAdapter and adds them to the stream adapters of the current request by invoking the addInputStreamAdapter() and addOutputStreamAdapter() on the HandlerContext instance

Explanation

The Gzip output stream adapter is responsible for wrapping the output stream with the Gzip output stream.