Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You under the Apache License, Version 2.0
   * (the "License"); you may not use this file except in compliance with
   * the License.  You may obtain a copy of the License at
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
 package org.apache.tomcat.websocket.pojo;
Common implementation code for the POJO message handlers.

<T> The type of message to handle
 public abstract class PojoMessageHandlerBase<T>
         implements WrappedMessageHandler {
     protected final Object pojo;
     protected final Method method;
     protected final Session session;
     protected final Object[] params;
     protected final int indexPayload;
     protected final boolean convert;
     protected final int indexSession;
     protected final long maxMessageSize;
     public PojoMessageHandlerBase(Object pojoMethod method,
             Session sessionObject[] paramsint indexPayloadboolean convert,
             int indexSessionlong maxMessageSize) {
         this. = pojo;
         this. = method;
         // TODO: The method should already be accessible here but the following
         // code seems to be necessary in some as yet not fully understood cases.
         try {
         } catch (Exception e) {
             // It is better to make sure the method is accessible, but
             // ignore exceptions and hope for the best
         this. = session;
         this. = params;
         this. = indexPayload;
         this. = convert;
         this. = indexSession;
         this. = maxMessageSize;
     protected final void processResult(Object result) {
         if (result == null) {
         RemoteEndpoint.Basic remoteEndpoint = .getBasicRemote();
         try {
             if (result instanceof String) {
             } else if (result instanceof ByteBuffer) {
             } else if (result instanceof byte[]) {
                 remoteEndpoint.sendBinary(ByteBuffer.wrap((byte[]) result));
             } else {
         } catch (IOException ioe) {
             throw new IllegalStateException(ioe);
         } catch (EncodeException ee) {
             throw new IllegalStateException(ee);

Expose the POJO if it is a message handler so the Session is able to match requests to remove handlers if the original handler has been wrapped.
    public final MessageHandler getWrappedHandler() {
        if ( instanceof MessageHandler) {
            return (MessageHandler;
        } else {
            return null;
    public final long getMaxMessageSize() {
        return ;
    protected final void handlePojoMethodException(Throwable t) {
        t = ExceptionUtils.unwrapInvocationTargetException(t);
        if (t instanceof RuntimeException) {
            throw (RuntimeExceptiont;
        } else {
            throw new RuntimeException(t);
New to GrepCode? Check out our FAQ X