Java 类io.netty.handler.codec.json.JsonObjectDecoder 实例源码

项目:reactor-netty    文件:HttpClientOperationsTest.java   
@Test
public void addDecoderReplaysLastHttp() throws Exception {
    ByteBuf buf = Unpooled.copiedBuffer("{\"foo\":1}", CharsetUtil.UTF_8);
    EmbeddedChannel channel = new EmbeddedChannel();
    HttpClientOperations ops = new HttpClientOperations(channel,
            (response, request) -> null, handler);

    ops.addHandler(new JsonObjectDecoder());
    channel.writeInbound(new DefaultLastHttpContent(buf));

    assertThat(channel.pipeline().names().iterator().next(), is("JsonObjectDecoder$extractor"));

    Object content = channel.readInbound();
    assertThat(content, instanceOf(ByteBuf.class));
    ((ByteBuf) content).release();

    content = channel.readInbound();
    assertThat(content, instanceOf(LastHttpContent.class));
    ((LastHttpContent) content).release();

    assertThat(channel.readInbound(), nullValue());
}
项目:reactor-netty    文件:HttpClientOperationsTest.java   
@Test
public void addNamedDecoderReplaysLastHttp() throws Exception {
    ByteBuf buf = Unpooled.copiedBuffer("{\"foo\":1}", CharsetUtil.UTF_8);
    EmbeddedChannel channel = new EmbeddedChannel();
    HttpClientOperations ops = new HttpClientOperations(channel,
            (response, request) -> null, handler);

    ops.addHandler("json", new JsonObjectDecoder());
    channel.writeInbound(new DefaultLastHttpContent(buf));

    assertThat(channel.pipeline().names().iterator().next(), is("json$extractor"));

    Object content = channel.readInbound();
    assertThat(content, instanceOf(ByteBuf.class));
    ((ByteBuf) content).release();

    content = channel.readInbound();
    assertThat(content, instanceOf(LastHttpContent.class));
    ((LastHttpContent) content).release();

    assertThat(channel.readInbound(), nullValue());
}
项目:reactor-netty    文件:HttpClientOperationsTest.java   
@Test
public void addEncoderReplaysLastHttp() throws Exception {
    ByteBuf buf = Unpooled.copiedBuffer("{\"foo\":1}", CharsetUtil.UTF_8);
    EmbeddedChannel channel = new EmbeddedChannel();
    HttpClientOperations ops = new HttpClientOperations(channel,
            (response, request) -> null, handler);

    ops.addHandler(new JsonObjectDecoder());
    channel.writeInbound(new DefaultLastHttpContent(buf));

    assertThat(channel.pipeline().names().iterator().next(), is("JsonObjectDecoder$extractor"));

    Object content = channel.readInbound();
    assertThat(content, instanceOf(ByteBuf.class));
    ((ByteBuf) content).release();

    content = channel.readInbound();
    assertThat(content, instanceOf(LastHttpContent.class));
    ((LastHttpContent) content).release();

    assertThat(channel.readInbound(), nullValue());
}
项目:reactor-netty    文件:HttpClientOperationsTest.java   
@Test
public void addNamedEncoderReplaysLastHttp() throws Exception {
    ByteBuf buf = Unpooled.copiedBuffer("{\"foo\":1}", CharsetUtil.UTF_8);
    EmbeddedChannel channel = new EmbeddedChannel();
    HttpClientOperations ops = new HttpClientOperations(channel,
            (response, request) -> null, handler);

    ops.addHandler("json", new JsonObjectDecoder());
    channel.writeInbound(new DefaultLastHttpContent(buf));

    assertThat(channel.pipeline().names().iterator().next(), is("json$extractor"));

    Object content = channel.readInbound();
    assertThat(content, instanceOf(ByteBuf.class));
    ((ByteBuf) content).release();

    content = channel.readInbound();
    assertThat(content, instanceOf(LastHttpContent.class));
    ((LastHttpContent) content).release();

    assertThat(channel.readInbound(), nullValue());
}
项目:reactive-ipc-jvm    文件:CodecSample.java   
private static void echoJsonStreamDecoding() {

        TcpServer<Person, Person> transport = Netty4TcpServer.<Person, Person>create(
                0,
                new ChannelInitializer<Channel>() {
                    @Override
                    protected void initChannel(Channel channel) throws Exception {
                        channel.pipeline().addFirst(
                                new JsonObjectDecoder(),
                                new JacksonJsonCodec());
                    }
                });

        ReactorTcpServer.create(transport)
                .start(connection -> {
                    connection.log("input")
                            .observeComplete(v -> LOG.info("Connection input complete"))
                            .capacity(1)
                            .consume(person -> {
                                person = new Person(person.getLastName(), person.getFirstName());
                                Streams.wrap(connection.writeWith(Streams.just(person))).consume();
                            });
                    return Streams.never();
                });

    }
项目:docker-java    文件:NettyInvocationBuilder.java   
public <T> void post(TypeReference<T> typeReference, ResultCallback<T> resultCallback, InputStream body) {
    HttpRequestProvider requestProvider = httpPostRequestProvider(null);

    Channel channel = getChannel();

    JsonResponseCallbackHandler<T> jsonResponseHandler = new JsonResponseCallbackHandler<T>(typeReference,
            resultCallback);

    HttpResponseHandler responseHandler = new HttpResponseHandler(requestProvider, resultCallback);

    channel.pipeline().addLast(new ChunkedWriteHandler());
    channel.pipeline().addLast(responseHandler);
    channel.pipeline().addLast(new JsonObjectDecoder());
    channel.pipeline().addLast(jsonResponseHandler);

    postChunkedStreamRequest(requestProvider, channel, body);
}
项目:HeliosStreams    文件:PipelineFactory.java   
/**
 * Modifies the pipeline to handle HTTP requests
 * @param ctx The calling channel handler context
 * @param maxRequestSize The maximum request size in bytes
 */
private void switchToHttp(final ChannelHandlerContext ctx, final int maxRequestSize) {
    ChannelPipeline p = ctx.pipeline();         
    p.addLast("httpHandler", new HttpServerCodec());  // TODO: config ?
    p.addLast("decompressor", new HttpContentDecompressor());
    p.addLast("aggregator", new HttpObjectAggregator(maxRequestSize)); 
    p.addLast("jsonDecoder", new JsonObjectDecoder(maxRequestSize, false));
    p.addLast("handler", jsonRpcHandler);
    p.remove(this);
}
项目:tsdblite    文件:HttpSwitch.java   
@Override
    protected void decode(final ChannelHandlerContext ctx, final HttpRequest msg, final List<Object> out) throws Exception {
        final String uri = msg.uri();
        log.info("-----------------------> URI [{}]", uri);
        if(uri.endsWith("/favicon.ico")) {
            final DefaultFullHttpResponse resp = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, favicon);
            resp.headers().set(HttpHeaders.CONTENT_TYPE, "image/x-icon");
            resp.headers().setInt(HttpHeaders.CONTENT_LENGTH, favSize);             
            ctx.writeAndFlush(resp);
            return;
        }           
        ReferenceCountUtil.retain(msg);
        final ChannelPipeline p = ctx.pipeline();

        final int index = uri.indexOf("/api/");
        final String endpoint = index==-1 ? "" : uri.substring(5);
        if(index != -1 && pureJsonEndPoints.contains(endpoint) ) {
            log.info("Switching to PureJSON handler");
            p.addLast(eventExecutorGroup, "httpToJson", httpToJson);
//          p.addLast("jsonLogger", loggingHandler);
            p.addLast("jsonDecoder", new JsonObjectDecoder(true));
//          p.addLast("jsonLogger", loggingHandler);
            p.addLast("traceHandler", traceHandler);
            p.remove(this);
            if(msg instanceof FullHttpMessage) {
                out.add(msg);
            }

        } else {
            log.info("Switching to Http Request Manager");
            out.add(msg);
            p.addLast(eventExecutorGroup, "requestManager", HttpRequestManager.getInstance());
            p.remove(this);         
        }
    }
项目:reactor-netty    文件:HttpOperationsTest.java   
@Test
public void httpAndJsonDecoders() {

    EmbeddedChannel channel = new EmbeddedChannel();
    NettyContext testContext = () -> channel;

    ChannelHandler handler = new JsonObjectDecoder(true);
    testContext.addHandlerLast("foo", handler);

    HttpOperations.autoAddHttpExtractor(testContext, "foo", handler);

    String json1 = "[{\"some\": 1} , {\"valu";
    String json2 = "e\": true, \"test\": 1}]";

    Object[] content = new Object[3];
    content[0] = new DefaultHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK);
    content[1] =
            new DefaultHttpContent(Unpooled.copiedBuffer(json1, CharsetUtil.UTF_8));
    content[2] = new DefaultLastHttpContent(Unpooled.copiedBuffer(json2,
            CharsetUtil.UTF_8));

    channel.writeInbound(content);

    Object t = channel.readInbound();
    assertThat(t, instanceOf(HttpResponse.class));
    assertThat(t, not(instanceOf(HttpContent.class)));

    t = channel.readInbound();
    assertThat(t, instanceOf(ByteBuf.class));
    assertThat(((ByteBuf) t).toString(CharsetUtil.UTF_8), is("{\"some\": 1}"));
    ((ByteBuf) t).release();

    t = channel.readInbound();
    assertThat(t, instanceOf(ByteBuf.class));
    assertThat(((ByteBuf) t).toString(CharsetUtil.UTF_8),
            is("{\"value\": true, \"test\": 1}"));
    ((ByteBuf) t).release();

    t = channel.readInbound();
    assertThat(t, is(LastHttpContent.EMPTY_LAST_CONTENT));
    ((LastHttpContent) t).release();

    t = channel.readInbound();
    assertThat(t, nullValue());
}
项目:tsdblite    文件:HttpRequestManager.java   
/**
     * {@inheritDoc}
     * @see io.netty.channel.SimpleChannelInboundHandler#channelRead0(io.netty.channel.ChannelHandlerContext, java.lang.Object)
     */
    @Override
    protected void channelRead0(final ChannelHandlerContext ctx, final HttpRequest msg) throws Exception {
        try {
            final String uri = msg.uri();
            final Channel channel = ctx.channel();
            if(uri.endsWith("/favicon.ico")) {
                final DefaultFullHttpResponse resp = new DefaultFullHttpResponse(HttpVersion.HTTP_1_1, HttpResponseStatus.OK, favicon);
                resp.headers().set(HttpHeaders.CONTENT_TYPE, "image/x-icon");
                resp.headers().setInt(HttpHeaders.CONTENT_LENGTH, favSize);             
                ctx.writeAndFlush(resp);
                return;
            } else if(uri.equals("/api/put") || uri.equals("/api/metadata")) {              
                final ChannelPipeline p = ctx.pipeline();
//              p.addLast(loggingHandler, jsonAdapter, new JsonObjectDecoder(true), traceHandler);
                p.addLast(jsonAdapter, new JsonObjectDecoder(true), traceHandler);
//              if(msg instanceof FullHttpRequest) {
//                  ByteBuf b = ((FullHttpRequest)msg).content().copy();
//                  ctx.fireChannelRead(b);
//              }
                ctx.fireChannelRead(msg);
                p.remove("requestManager");
                log.info("Switched to JSON Trace Processor");
                return;
            }
            final TSDBHttpRequest r = new TSDBHttpRequest(msg, ctx.channel(), ctx);
            final HttpRequestHandler handler = requestHandlers.get(r.getRoute());
            if(handler==null) {
                r.send404().addListener(new GenericFutureListener<Future<? super Void>>() {
                    public void operationComplete(Future<? super Void> f) throws Exception {
                        log.info("404 Not Found for {} Complete: success: {}", r.getRoute(), f.isSuccess());
                        if(!f.isSuccess()) {
                            log.error("Error sending 404", f.cause());
                        }
                    };
                });
                return;
            }
            handler.process(r);         
        } catch (Exception ex) {
            log.error("HttpRequest Routing Error", ex);
        }       
    }
项目:docker-java    文件:NettyInvocationBuilder.java   
public <T> void get(TypeReference<T> typeReference, ResultCallback<T> resultCallback) {

        HttpRequestProvider requestProvider = httpGetRequestProvider();

        Channel channel = getChannel();

        JsonResponseCallbackHandler<T> jsonResponseHandler = new JsonResponseCallbackHandler<T>(typeReference,
                resultCallback);

        HttpResponseHandler responseHandler = new HttpResponseHandler(requestProvider, resultCallback);

        channel.pipeline().addLast(responseHandler);
        channel.pipeline().addLast(new JsonObjectDecoder());
        channel.pipeline().addLast(jsonResponseHandler);

        sendRequest(requestProvider, channel);

        return;
    }
项目:docker-java    文件:NettyInvocationBuilder.java   
public <T> void post(final Object entity, TypeReference<T> typeReference, final ResultCallback<T> resultCallback) {

        HttpRequestProvider requestProvider = httpPostRequestProvider(entity);

        Channel channel = getChannel();

        JsonResponseCallbackHandler<T> jsonResponseHandler = new JsonResponseCallbackHandler<T>(typeReference,
                resultCallback);

        HttpResponseHandler responseHandler = new HttpResponseHandler(requestProvider, resultCallback);

        channel.pipeline().addLast(responseHandler);
        channel.pipeline().addLast(new JsonObjectDecoder());
        channel.pipeline().addLast(jsonResponseHandler);

        sendRequest(requestProvider, channel);

        return;
    }