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
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
  *
  * 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 whole message handlers. All the real work is done in this class and in the superclass.

Parameters:
<T> The type of message to handle
 
 public abstract class PojoMessageHandlerWholeBase<T>
         extends PojoMessageHandlerBase<T> implements MessageHandler.Whole<T> {
 
     public PojoMessageHandlerWholeBase(Object pojoMethod method,
             Session sessionObject[] paramsint indexPayload,
             boolean convertint indexSessionlong maxMessageSize) {
         super(pojomethodsessionparamsindexPayloadconvert,
                 indexSessionmaxMessageSize);
     }
 
 
     @Override
     public final void onMessage(T message) {
 
         if (. == 1 && [0] instanceof DecodeException) {
             ((WsSession).getLocal().onError(,
                     (DecodeException[0]);
             return;
         }
 
         // Can this message be decoded?
         Object payload;
         try {
             payload = decode(message);
         } catch (DecodeException de) {
             ((WsSession).getLocal().onError(de);
             return;
         }
 
         if (payload == null) {
             // Not decoded. Convert if required.
             if () {
                 payload = convert(message);
             } else {
                 payload = message;
             }
         }
 
         Object[] parameters = .clone();
         if ( != -1) {
             parameters[] = ;
         }
         parameters[] = payload;
 
         Object result = null;
         ClassLoader old = Thread.currentThread().getContextClassLoader();
         try {
             Thread.currentThread().setContextClassLoader(((WsSession)).getClassLoader());
             tbl.bind();
             result = .invoke(parameters);
         } catch (IllegalAccessException e) {
             handlePojoMethodException(e);
         } catch (InvocationTargetException e) {
             handlePojoMethodException(e);
         } finally {
             try {
                 tbl.unbind();
             } finally {
                 Thread.currentThread().setContextClassLoader(old);
             }
         }
         processResult(result);
     }
 
    protected Object convert(T message) {
        return message;
    }
    protected abstract Object decode(T messagethrows DecodeException;
    protected abstract void onClose();
New to GrepCode? Check out our FAQ X