001/**
002 * Licensed to the Apache Software Foundation (ASF) under one or more
003 * contributor license agreements.  See the NOTICE file distributed with
004 * this work for additional information regarding copyright ownership.
005 * The ASF licenses this file to You under the Apache License, Version 2.0
006 * (the "License"); you may not use this file except in compliance with
007 * the License.  You may obtain a copy of the License at
008 *
009 *      http://www.apache.org/licenses/LICENSE-2.0
010 *
011 * Unless required by applicable law or agreed to in writing, software
012 * distributed under the License is distributed on an "AS IS" BASIS,
013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
014 * See the License for the specific language governing permissions and
015 * limitations under the License.
016 */
017package org.apache.activemq.transport.stomp;
018
019public interface Stomp {
020    String NULL = "\u0000";
021    String NEWLINE = "\n";
022
023    byte BREAK = '\n';
024    byte COLON = ':';
025    byte ESCAPE = '\\';
026    byte[] ESCAPE_ESCAPE_SEQ = { 92, 92 };
027    byte[] COLON_ESCAPE_SEQ = { 92, 99 };
028    byte[] NEWLINE_ESCAPE_SEQ = { 92, 110 };
029
030    String COMMA = ",";
031    String V1_0 = "1.0";
032    String V1_1 = "1.1";
033    String DEFAULT_HEART_BEAT = "0,0";
034    String DEFAULT_VERSION = "1.0";
035    String EMPTY = "";
036
037    String[] SUPPORTED_PROTOCOL_VERSIONS = {"1.1", "1.0"};
038
039    String TEXT_PLAIN = "text/plain";
040    String TRUE = "true";
041    String FALSE = "false";
042    String END = "end";
043
044    public static interface Commands {
045        String STOMP = "STOMP";
046        String CONNECT = "CONNECT";
047        String SEND = "SEND";
048        String DISCONNECT = "DISCONNECT";
049        String SUBSCRIBE = "SUB";
050        String UNSUBSCRIBE = "UNSUB";
051
052        String BEGIN_TRANSACTION = "BEGIN";
053        String COMMIT_TRANSACTION = "COMMIT";
054        String ABORT_TRANSACTION = "ABORT";
055        String BEGIN = "BEGIN";
056        String COMMIT = "COMMIT";
057        String ABORT = "ABORT";
058        String ACK = "ACK";
059        String NACK = "NACK";
060        String KEEPALIVE = "KEEPALIVE";
061    }
062
063    public interface Responses {
064        String CONNECTED = "CONNECTED";
065        String ERROR = "ERROR";
066        String MESSAGE = "MESSAGE";
067        String RECEIPT = "RECEIPT";
068    }
069
070    public interface Headers {
071        String SEPERATOR = ":";
072        String RECEIPT_REQUESTED = "receipt";
073        String TRANSACTION = "transaction";
074        String CONTENT_LENGTH = "content-length";
075        String CONTENT_TYPE = "content-type";
076        String TRANSFORMATION = "transformation";
077        String TRANSFORMATION_ERROR = "transformation-error";
078
079        /**
080         * This header is used to instruct ActiveMQ to construct the message
081         * based with a specific type.
082         */
083        String AMQ_MESSAGE_TYPE = "amq-msg-type";
084
085        public interface Response {
086            String RECEIPT_ID = "receipt-id";
087        }
088
089        public interface Send {
090            String DESTINATION = "destination";
091            String CORRELATION_ID = "correlation-id";
092            String REPLY_TO = "reply-to";
093            String EXPIRATION_TIME = "expires";
094            String PRIORITY = "priority";
095            String TYPE = "type";
096            String PERSISTENT = "persistent";
097        }
098
099        public interface Message {
100            String MESSAGE_ID = "message-id";
101            String DESTINATION = "destination";
102            String CORRELATION_ID = "correlation-id";
103            String EXPIRATION_TIME = "expires";
104            String REPLY_TO = "reply-to";
105            String PRORITY = "priority";
106            String REDELIVERED = "redelivered";
107            String TIMESTAMP = "timestamp";
108            String TYPE = "type";
109            String SUBSCRIPTION = "subscription";
110            String BROWSER = "browser";
111            String USERID = "JMSXUserID";
112            String ORIGINAL_DESTINATION = "original-destination";
113            String PERSISTENT = "persistent";
114        }
115
116        public interface Subscribe {
117            String DESTINATION = "destination";
118            String ACK_MODE = "ack";
119            String ID = "id";
120            String SELECTOR = "selector";
121            String BROWSER = "browser";
122
123            public interface AckModeValues {
124                String AUTO = "auto";
125                String CLIENT = "client";
126                String INDIVIDUAL = "client-individual";
127            }
128        }
129
130        public interface Unsubscribe {
131            String DESTINATION = "destination";
132            String ID = "id";
133        }
134
135        public interface Connect {
136            String LOGIN = "login";
137            String PASSCODE = "passcode";
138            String CLIENT_ID = "client-id";
139            String REQUEST_ID = "request-id";
140            String ACCEPT_VERSION = "accept-version";
141            String HOST = "host";
142            String HEART_BEAT = "heart-beat";
143        }
144
145        public interface Error {
146            String MESSAGE = "message";
147        }
148
149        public interface Connected {
150            String SESSION = "session";
151            String RESPONSE_ID = "response-id";
152            String SERVER = "server";
153            String VERSION = "version";
154            String HEART_BEAT = "heart-beat";
155        }
156
157        public interface Ack {
158            String MESSAGE_ID = "message-id";
159            String SUBSCRIPTION = "subscription";
160        }
161    }
162
163    public enum Transformations {
164        JMS_BYTE,
165        JMS_XML,
166        JMS_JSON,
167        JMS_OBJECT_XML,
168        JMS_OBJECT_JSON,
169        JMS_MAP_XML,
170        JMS_MAP_JSON,
171        JMS_ADVISORY_XML,
172        JMS_ADVISORY_JSON;
173
174        public String toString() {
175            return name().replaceAll("_", "-").toLowerCase();
176        }
177
178        public static Transformations getValue(String value) {
179            return valueOf(value.replaceAll("-", "_").toUpperCase());
180        }
181    }
182}