|
ActiveMQ example source code file (LegacyFrameTranslator.java)
The ActiveMQ LegacyFrameTranslator.java source code/** * 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.activemq.transport.stomp; import java.io.IOException; import java.util.HashMap; import java.util.Map; import javax.jms.Destination; import javax.jms.JMSException; import com.thoughtworks.xstream.XStream; import com.thoughtworks.xstream.io.json.JsonHierarchicalStreamDriver; import org.apache.activemq.advisory.AdvisorySupport; import org.apache.activemq.command.*; /** * Implements ActiveMQ 4.0 translations */ public class LegacyFrameTranslator implements FrameTranslator { public ActiveMQMessage convertFrame(ProtocolConverter converter, StompFrame command) throws JMSException, ProtocolException { final Map headers = command.getHeaders(); final ActiveMQMessage msg; /* * To reduce the complexity of this method perhaps a Chain of Responsibility * would be a better implementation */ if (headers.containsKey(Stomp.Headers.AMQ_MESSAGE_TYPE)) { String intendedType = (String)headers.get(Stomp.Headers.AMQ_MESSAGE_TYPE); if(intendedType.equalsIgnoreCase("text")){ ActiveMQTextMessage text = new ActiveMQTextMessage(); try { text.setText(new String(command.getContent(), "UTF-8")); } catch (Throwable e) { throw new ProtocolException("Text could not bet set: " + e, false, e); } msg = text; } else if(intendedType.equalsIgnoreCase("bytes")) { ActiveMQBytesMessage byteMessage = new ActiveMQBytesMessage(); byteMessage.writeBytes(command.getContent()); msg = byteMessage; } else { throw new ProtocolException("Unsupported message type '"+intendedType+"'",false); } }else if (headers.containsKey(Stomp.Headers.CONTENT_LENGTH)) { headers.remove(Stomp.Headers.CONTENT_LENGTH); ActiveMQBytesMessage bm = new ActiveMQBytesMessage(); bm.writeBytes(command.getContent()); msg = bm; } else { ActiveMQTextMessage text = new ActiveMQTextMessage(); try { text.setText(new String(command.getContent(), "UTF-8")); } catch (Throwable e) { throw new ProtocolException("Text could not bet set: " + e, false, e); } msg = text; } FrameTranslator.Helper.copyStandardHeadersFromFrameToMessage(converter, command, msg, this); return msg; } public StompFrame convertMessage(ProtocolConverter converter, ActiveMQMessage message) throws IOException, JMSException { StompFrame command = new StompFrame(); command.setAction(Stomp.Responses.MESSAGE); Map<String, String> headers = new HashMap Other ActiveMQ examples (source code examples)Here is a short list of links related to this ActiveMQ LegacyFrameTranslator.java source code file: |
... this post is sponsored by my books ... | |
#1 New Release! |
FP Best Seller |
Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.
A percentage of advertising revenue from
pages under the /java/jwarehouse
URI on this website is
paid back to open source projects.