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 019import java.util.Locale; 020 021public interface Stomp { 022 String NULL = "\u0000"; 023 String NEWLINE = "\n"; 024 025 byte BREAK = '\n'; 026 byte COLON = ':'; 027 byte ESCAPE = '\\'; 028 byte[] ESCAPE_ESCAPE_SEQ = { 92, 92 }; 029 byte[] COLON_ESCAPE_SEQ = { 92, 99 }; 030 byte[] NEWLINE_ESCAPE_SEQ = { 92, 110 }; 031 032 String COMMA = ","; 033 String V1_0 = "1.0"; 034 String V1_1 = "1.1"; 035 String V1_2 = "1.2"; 036 String DEFAULT_HEART_BEAT = "0,0"; 037 String DEFAULT_VERSION = "1.0"; 038 String EMPTY = ""; 039 040 String[] SUPPORTED_PROTOCOL_VERSIONS = {"1.2", "1.1", "1.0"}; 041 042 String TEXT_PLAIN = "text/plain"; 043 String TRUE = "true"; 044 String FALSE = "false"; 045 String END = "end"; 046 047 public static interface Commands { 048 String STOMP = "STOMP"; 049 String CONNECT = "CONNECT"; 050 String SEND = "SEND"; 051 String DISCONNECT = "DISCONNECT"; 052 String SUBSCRIBE = "SUB"; 053 String UNSUBSCRIBE = "UNSUB"; 054 055 String BEGIN_TRANSACTION = "BEGIN"; 056 String COMMIT_TRANSACTION = "COMMIT"; 057 String ABORT_TRANSACTION = "ABORT"; 058 String BEGIN = "BEGIN"; 059 String COMMIT = "COMMIT"; 060 String ABORT = "ABORT"; 061 String ACK = "ACK"; 062 String NACK = "NACK"; 063 String KEEPALIVE = "KEEPALIVE"; 064 } 065 066 public interface Responses { 067 String CONNECTED = "CONNECTED"; 068 String ERROR = "ERROR"; 069 String MESSAGE = "MESSAGE"; 070 String RECEIPT = "RECEIPT"; 071 } 072 073 public interface Headers { 074 String SEPERATOR = ":"; 075 String RECEIPT_REQUESTED = "receipt"; 076 String TRANSACTION = "transaction"; 077 String CONTENT_LENGTH = "content-length"; 078 String CONTENT_TYPE = "content-type"; 079 String TRANSFORMATION = "transformation"; 080 String TRANSFORMATION_ERROR = "transformation-error"; 081 082 /** 083 * This header is used to instruct ActiveMQ to construct the message 084 * based with a specific type. 085 */ 086 String AMQ_MESSAGE_TYPE = "amq-msg-type"; 087 088 public interface Response { 089 String RECEIPT_ID = "receipt-id"; 090 } 091 092 public interface Send { 093 String DESTINATION = "destination"; 094 String CORRELATION_ID = "correlation-id"; 095 String REPLY_TO = "reply-to"; 096 String EXPIRATION_TIME = "expires"; 097 String PRIORITY = "priority"; 098 String TYPE = "type"; 099 String PERSISTENT = "persistent"; 100 } 101 102 public interface Message { 103 String MESSAGE_ID = "message-id"; 104 String ACK_ID = "ack"; 105 String DESTINATION = "destination"; 106 String CORRELATION_ID = "correlation-id"; 107 String EXPIRATION_TIME = "expires"; 108 String REPLY_TO = "reply-to"; 109 String PRORITY = "priority"; 110 String REDELIVERED = "redelivered"; 111 String TIMESTAMP = "timestamp"; 112 String TYPE = "type"; 113 String SUBSCRIPTION = "subscription"; 114 String BROWSER = "browser"; 115 String USERID = "JMSXUserID"; 116 String ORIGINAL_DESTINATION = "original-destination"; 117 String PERSISTENT = "persistent"; 118 } 119 120 public interface Subscribe { 121 String DESTINATION = "destination"; 122 String ACK_MODE = "ack"; 123 String ID = "id"; 124 String SELECTOR = "selector"; 125 String BROWSER = "browser"; 126 127 public interface AckModeValues { 128 String AUTO = "auto"; 129 String CLIENT = "client"; 130 String INDIVIDUAL = "client-individual"; 131 } 132 } 133 134 public interface Unsubscribe { 135 String DESTINATION = "destination"; 136 String ID = "id"; 137 } 138 139 public interface Connect { 140 String LOGIN = "login"; 141 String PASSCODE = "passcode"; 142 String CLIENT_ID = "client-id"; 143 String REQUEST_ID = "request-id"; 144 String ACCEPT_VERSION = "accept-version"; 145 String HOST = "host"; 146 String HEART_BEAT = "heart-beat"; 147 } 148 149 public interface Error { 150 String MESSAGE = "message"; 151 } 152 153 public interface Connected { 154 String SESSION = "session"; 155 String RESPONSE_ID = "response-id"; 156 String SERVER = "server"; 157 String VERSION = "version"; 158 String HEART_BEAT = "heart-beat"; 159 } 160 161 public interface Ack { 162 String MESSAGE_ID = "message-id"; 163 String SUBSCRIPTION = "subscription"; 164 String ACK_ID = "id"; 165 } 166 } 167 168 public enum Transformations { 169 JMS_BYTE, 170 JMS_XML, 171 JMS_JSON, 172 JMS_OBJECT_XML, 173 JMS_OBJECT_JSON, 174 JMS_MAP_XML, 175 JMS_MAP_JSON, 176 JMS_ADVISORY_XML, 177 JMS_ADVISORY_JSON; 178 179 @Override 180 public String toString() { 181 return name().replaceAll("_", "-").toLowerCase(Locale.ENGLISH); 182 } 183 184 public boolean equals(String value) { 185 return toString().equals(value); 186 } 187 188 public static Transformations getValue(String value) { 189 return valueOf(value.replaceAll("-", "_").toUpperCase(Locale.ENGLISH)); 190 } 191 } 192}