View Javadoc

1   //
2   //  ========================================================================
3   //  Copyright (c) 1995-2016 Mort Bay Consulting Pty. Ltd.
4   //  ------------------------------------------------------------------------
5   //  All rights reserved. This program and the accompanying materials
6   //  are made available under the terms of the Eclipse Public License v1.0
7   //  and Apache License v2.0 which accompanies this distribution.
8   //
9   //      The Eclipse Public License is available at
10  //      http://www.eclipse.org/legal/epl-v10.html
11  //
12  //      The Apache License v2.0 is available at
13  //      http://www.opensource.org/licenses/apache2.0.php
14  //
15  //  You may elect to redistribute this code under either of these licenses.
16  //  ========================================================================
17  //
18  
19  package org.eclipse.jetty.websocket.jsr356.decoders;
20  
21  import java.io.InputStream;
22  import java.io.Reader;
23  import java.nio.ByteBuffer;
24  
25  import javax.websocket.PongMessage;
26  
27  import org.eclipse.jetty.websocket.jsr356.MessageType;
28  import org.eclipse.jetty.websocket.jsr356.metadata.DecoderMetadataSet;
29  
30  public class PrimitiveDecoderMetadataSet extends DecoderMetadataSet
31  {
32      public static final DecoderMetadataSet INSTANCE = new PrimitiveDecoderMetadataSet();
33  
34      public PrimitiveDecoderMetadataSet()
35      {
36          boolean streamed = false;
37          // TEXT based - Classes Based
38          MessageType msgType = MessageType.TEXT;
39          register(Boolean.class,BooleanDecoder.class,msgType,streamed);
40          register(Byte.class,ByteDecoder.class,msgType,streamed);
41          register(Character.class,CharacterDecoder.class,msgType,streamed);
42          register(Double.class,DoubleDecoder.class,msgType,streamed);
43          register(Float.class,FloatDecoder.class,msgType,streamed);
44          register(Integer.class,IntegerDecoder.class,msgType,streamed);
45          register(Long.class,LongDecoder.class,msgType,streamed);
46          register(Short.class,ShortDecoder.class,msgType,streamed);
47          register(String.class,StringDecoder.class,msgType,streamed);
48  
49          // TEXT based - Primitive Types
50          msgType = MessageType.TEXT;
51          register(Boolean.TYPE,BooleanDecoder.class,msgType,streamed);
52          register(Byte.TYPE,ByteDecoder.class,msgType,streamed);
53          register(Character.TYPE,CharacterDecoder.class,msgType,streamed);
54          register(Double.TYPE,DoubleDecoder.class,msgType,streamed);
55          register(Float.TYPE,FloatDecoder.class,msgType,streamed);
56          register(Integer.TYPE,IntegerDecoder.class,msgType,streamed);
57          register(Long.TYPE,LongDecoder.class,msgType,streamed);
58          register(Short.TYPE,ShortDecoder.class,msgType,streamed);
59  
60          // BINARY based
61          msgType = MessageType.BINARY;
62          register(ByteBuffer.class,ByteBufferDecoder.class,msgType,streamed);
63          register(byte[].class,ByteArrayDecoder.class,msgType,streamed);
64          
65          // PONG based
66          msgType = MessageType.PONG;
67          register(PongMessage.class,PongMessageDecoder.class,msgType,streamed);
68  
69          // STREAMING based
70          streamed = true;
71          msgType = MessageType.TEXT;
72          register(Reader.class,ReaderDecoder.class,msgType,streamed);
73          msgType = MessageType.BINARY;
74          register(InputStream.class,InputStreamDecoder.class,msgType,streamed);
75      }
76  }