Repository: qpid-jms Updated Branches: refs/heads/master c695388b1 -> 9064cc8a5
Move all the default implementations now used only for tests into the tests package. Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/9064cc8a Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/9064cc8a Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/9064cc8a Branch: refs/heads/master Commit: 9064cc8a515f05475f90fbdb2b920dd29b148bfa Parents: c695388 Author: Timothy Bish <tabish...@gmail.com> Authored: Tue Sep 30 18:43:15 2014 -0400 Committer: Timothy Bish <tabish...@gmail.com> Committed: Tue Sep 30 18:43:15 2014 -0400 ---------------------------------------------------------------------- .../jms/message/JmsDefaultMessageFactory.java | 94 ------ .../defaults/JmsDefaultBytesMessageFacade.java | 69 ---- .../defaults/JmsDefaultMapMessageFacade.java | 75 ----- .../defaults/JmsDefaultMessageFacade.java | 328 ------------------- .../defaults/JmsDefaultObjectMessageFacade.java | 105 ------ .../defaults/JmsDefaultStreamMessageFacade.java | 85 ----- .../defaults/JmsDefaultTextMessageFacade.java | 62 ---- .../qpid/jms/message/JmsBytesMessageTest.java | 1 + .../qpid/jms/message/JmsMapMessageTest.java | 2 +- .../apache/qpid/jms/message/JmsMessageTest.java | 2 +- .../qpid/jms/message/JmsObjectMessageTest.java | 2 +- .../qpid/jms/message/JmsStreamMessageTest.java | 2 +- .../qpid/jms/message/JmsTextMessageTest.java | 2 +- .../defaults/JmsDefaultBytesMessageFacade.java | 69 ++++ .../defaults/JmsDefaultMapMessageFacade.java | 75 +++++ .../defaults/JmsDefaultMessageFacade.java | 328 +++++++++++++++++++ .../defaults/JmsDefaultMessageFactory.java | 95 ++++++ .../defaults/JmsDefaultObjectMessageFacade.java | 105 ++++++ .../defaults/JmsDefaultStreamMessageFacade.java | 85 +++++ .../defaults/JmsDefaultTextMessageFacade.java | 62 ++++ 20 files changed, 825 insertions(+), 823 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsDefaultMessageFactory.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsDefaultMessageFactory.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsDefaultMessageFactory.java deleted file mode 100644 index c909f2d..0000000 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/JmsDefaultMessageFactory.java +++ /dev/null @@ -1,94 +0,0 @@ -/** - * 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.qpid.jms.message; - -import java.io.Serializable; - -import javax.jms.JMSException; - -import org.apache.qpid.jms.message.facade.defaults.JmsDefaultBytesMessageFacade; -import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMapMessageFacade; -import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFacade; -import org.apache.qpid.jms.message.facade.defaults.JmsDefaultObjectMessageFacade; -import org.apache.qpid.jms.message.facade.defaults.JmsDefaultStreamMessageFacade; -import org.apache.qpid.jms.message.facade.defaults.JmsDefaultTextMessageFacade; - -/** - * Default implementation of the ProviderMessageFactory that create simple - * generic javax.jms.Message types that can be sent to any Provider instance. - * - * TODO: Once the AMQP Message Facade stuff is done we should move this factory - * and the default JmsMessageFacade implementations into the test package - * since their primary use will be to test the JMS spec compliance of the - * JmsMessage classes. - */ -public class JmsDefaultMessageFactory implements JmsMessageFactory { - - @Override - public JmsMessage createMessage() throws UnsupportedOperationException { - return new JmsMessage(new JmsDefaultMessageFacade()); - } - - @Override - public JmsTextMessage createTextMessage() throws UnsupportedOperationException { - return createTextMessage(null); - } - - @Override - public JmsTextMessage createTextMessage(String payload) throws UnsupportedOperationException { - JmsTextMessage result = new JmsTextMessage(new JmsDefaultTextMessageFacade()); - if (payload != null) { - try { - result.setText(payload); - } catch (JMSException e) { - } - } - return result; - } - - @Override - public JmsBytesMessage createBytesMessage() throws UnsupportedOperationException { - return new JmsBytesMessage(new JmsDefaultBytesMessageFacade()); - } - - @Override - public JmsMapMessage createMapMessage() throws UnsupportedOperationException { - return new JmsMapMessage(new JmsDefaultMapMessageFacade()); - } - - @Override - public JmsStreamMessage createStreamMessage() throws UnsupportedOperationException { - return new JmsStreamMessage(new JmsDefaultStreamMessageFacade()); - } - - @Override - public JmsObjectMessage createObjectMessage() throws UnsupportedOperationException { - return createObjectMessage(null); - } - - @Override - public JmsObjectMessage createObjectMessage(Serializable payload) throws UnsupportedOperationException { - JmsObjectMessage result = new JmsObjectMessage(new JmsDefaultObjectMessageFacade()); - if (payload != null) { - try { - result.setObject(payload); - } catch (Exception e) { - } - } - return result; - } -} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java deleted file mode 100644 index 23f1817..0000000 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java +++ /dev/null @@ -1,69 +0,0 @@ -/** - * 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.qpid.jms.message.facade.defaults; - -import io.netty.buffer.ByteBuf; - -import org.apache.qpid.jms.message.facade.JmsBytesMessageFacade; - -/** - * A default implementation of the JmsBytesMessageFacade that simply holds a raw Buffer - */ -public final class JmsDefaultBytesMessageFacade extends JmsDefaultMessageFacade implements JmsBytesMessageFacade { - - private ByteBuf content; - - @Override - public JmsMsgType getMsgType() { - return JmsMsgType.BYTES; - } - - @Override - public JmsDefaultBytesMessageFacade copy() { - JmsDefaultBytesMessageFacade copy = new JmsDefaultBytesMessageFacade(); - copyInto(copy); - if (this.content != null) { - copy.setContent(this.content.copy()); - } - - return copy; - } - - @Override - public boolean isEmpty() { - if (content == null || content.readableBytes() == 0) { - return true; - } - - return false; - } - - @Override - public void clearBody() { - this.content = null; - } - - @Override - public ByteBuf getContent() { - return content; - } - - @Override - public void setContent(ByteBuf content) { - this.content = content; - } -} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java deleted file mode 100644 index 33da603..0000000 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java +++ /dev/null @@ -1,75 +0,0 @@ -/** - * 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.qpid.jms.message.facade.defaults; - -import java.util.Collections; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.Map; - -import org.apache.qpid.jms.message.facade.JmsMapMessageFacade; - -/** - * Simple implementation of the JmsMapMessageFacade used for testing. - */ -public class JmsDefaultMapMessageFacade extends JmsDefaultMessageFacade implements JmsMapMessageFacade { - - protected final Map<String, Object> map = new HashMap<String, Object>(); - - @Override - public JmsMsgType getMsgType() { - return JmsMsgType.MAP; - } - - @Override - public JmsDefaultMapMessageFacade copy() { - JmsDefaultMapMessageFacade copy = new JmsDefaultMapMessageFacade(); - copyInto(copy); - copy.map.putAll(map); - return copy; - } - - @Override - public Enumeration<String> getMapNames() { - return Collections.enumeration(map.keySet()); - } - - @Override - public boolean itemExists(String key) { - return map.containsKey(key); - } - - @Override - public Object get(String key) { - return map.get(key); - } - - @Override - public void put(String key, Object value) { - map.put(key, value); - } - - @Override - public Object remove(String key) { - return map.remove(key); - } - - @Override - public void clearBody() { - map.clear(); - } -} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java deleted file mode 100644 index eff3ad7..0000000 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java +++ /dev/null @@ -1,328 +0,0 @@ -/** - * 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.qpid.jms.message.facade.defaults; - -import java.nio.charset.Charset; -import java.util.HashMap; -import java.util.Map; - -import javax.jms.JMSException; - -import org.apache.qpid.jms.JmsDestination; -import org.apache.qpid.jms.message.facade.JmsMessageFacade; - -/** - * A default implementation of the JmsMessageFaceade that provides a generic - * message instance which can be used instead of implemented in Provider specific - * version that maps to a Provider message object. - */ -public class JmsDefaultMessageFacade implements JmsMessageFacade { - - private static final Charset UTF8 = Charset.forName("UTF-8"); - - public static enum JmsMsgType { - MESSAGE("jms/message"), - BYTES("jms/bytes-message"), - MAP("jms/map-message"), - OBJECT("jms/object-message"), - STREAM("jms/stream-message"), - TEXT("jms/text-message"), - TEXT_NULL("jms/text-message-null"); - - public final String buffer = new String(this.name()); - public final String mime; - - JmsMsgType(String mime) { - this.mime = mime; - } - } - - protected Map<String, Object> properties = new HashMap<String, Object>(); - - protected byte priority = javax.jms.Message.DEFAULT_PRIORITY; - protected String groupId; - protected int groupSequence; - protected String messageId; - protected long expiration; - protected long timestamp; - protected String correlationId; - protected boolean persistent; - protected int redeliveryCount; - protected String type; - protected JmsDestination destination; - protected JmsDestination replyTo; - protected String userId; - - public JmsMsgType getMsgType() { - return JmsMsgType.MESSAGE; - } - - @Override - public JmsDefaultMessageFacade copy() { - JmsDefaultMessageFacade copy = new JmsDefaultMessageFacade(); - copyInto(copy); - return copy; - } - - protected void copyInto(JmsDefaultMessageFacade target) { - target.priority = this.priority; - target.groupSequence = this.groupSequence; - target.groupId = this.groupId; - target.expiration = this.expiration; - target.timestamp = this.timestamp; - target.correlationId = this.correlationId; - target.persistent = this.persistent; - target.redeliveryCount = this.redeliveryCount; - target.type = this.type; - target.destination = this.destination; - target.replyTo = this.replyTo; - target.userId = this.userId; - target.messageId = this.messageId; - - if (this.properties != null) { - target.properties = new HashMap<String, Object>(this.properties); - } else { - target.properties = null; - } - } - - @Override - public Map<String, Object> getProperties() throws JMSException { - lazyCreateProperties(); - return properties; - } - - @Override - public boolean propertyExists(String key) throws JMSException { - return this.properties.containsKey(key); - } - - @Override - public Object getProperty(String key) throws JMSException { - return this.properties.get(key); - } - - @Override - public void setProperty(String key, Object value) throws JMSException { - this.properties.put(key, value); - } - - @Override - public void onSend() throws JMSException { - } - - @Override - public void onDispatch() throws JMSException { - } - - @Override - public boolean isEmpty() { - return true; - } - - @Override - public void clearBody() { - } - - @Override - public void clearProperties() { - properties.clear(); - } - - @Override - public String getMessageId() { - return messageId; - } - - @Override - public Object getProviderMessageIdObject() { - return messageId; - } - - @Override - public void setMessageId(String messageId) { - this.messageId = messageId; - } - - @Override - public long getTimestamp() { - return this.timestamp; - } - - @Override - public void setTimestamp(long timestamp) { - this.timestamp = timestamp; - } - - @Override - public String getCorrelationId() { - return correlationId; - } - - @Override - public void setCorrelationId(String correlationId) { - this.correlationId = correlationId; - } - - @Override - public byte[] getCorrelationIdBytes() { - return correlationId.getBytes(UTF8); - } - - @Override - public void setCorrelationIdBytes(byte[] correlationId) { - if (correlationId != null && correlationId.length > 0) { - this.correlationId = new String(correlationId, UTF8); - } else { - this.correlationId = null; - } - } - - @Override - public boolean isPersistent() { - return this.persistent; - } - - @Override - public void setPersistent(boolean value) { - this.persistent = value; - } - - @Override - public int getDeliveryCount() { - return this.redeliveryCount + 1; - } - - @Override - public void setDeliveryCount(int deliveryCount) { - this.redeliveryCount = deliveryCount - 1; - } - - @Override - public int getRedeliveryCount() { - return this.redeliveryCount; - } - - @Override - public void setRedeliveryCount(int redeliveryCount) { - this.redeliveryCount = redeliveryCount; - } - - @Override - public boolean isRedelivered() { - return redeliveryCount > 0; - } - - @Override - public void setRedelivered(boolean redelivered) { - if (redelivered) { - if (!isRedelivered()) { - setRedeliveryCount(1); - } - } else { - if (isRedelivered()) { - setRedeliveryCount(0); - } - } - } - - @Override - public String getType() { - return type; - } - - @Override - public void setType(String type) { - this.type = type; - } - - @Override - public byte getPriority() { - return priority; - } - - @Override - public void setPriority(byte priority) { - this.priority = priority; - } - - @Override - public long getExpiration() { - return expiration; - } - - @Override - public void setExpiration(long expiration) { - this.expiration = expiration; - } - - @Override - public JmsDestination getDestination() { - return this.destination; - } - - @Override - public void setDestination(JmsDestination destination) { - this.destination = destination; - } - - @Override - public JmsDestination getReplyTo() { - return this.replyTo; - } - - @Override - public void setReplyTo(JmsDestination replyTo) { - this.replyTo = replyTo; - } - - @Override - public String getUserId() { - return this.userId; - } - - @Override - public void setUserId(String userId) { - this.userId = userId; - } - - @Override - public String getGroupId() { - return this.groupId; - } - - @Override - public void setGroupId(String groupId) { - this.groupId = groupId; - } - - @Override - public int getGroupSequence() { - return this.groupSequence; - } - - @Override - public void setGroupSequence(int groupSequence) { - this.groupSequence = groupSequence; - } - - private void lazyCreateProperties() { - if (properties == null) { - properties = new HashMap<String, Object>(); - } - } -} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java deleted file mode 100644 index f9bf220..0000000 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java +++ /dev/null @@ -1,105 +0,0 @@ -/** - * 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.qpid.jms.message.facade.defaults; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.io.ObjectOutputStream; -import java.io.Serializable; -import java.util.Arrays; - -import org.apache.qpid.jms.message.facade.JmsObjectMessageFacade; -import org.apache.qpid.jms.util.ClassLoadingAwareObjectInputStream; - -/** - * Default implementation for a JMS Object Message Facade. - */ -public class JmsDefaultObjectMessageFacade extends JmsDefaultMessageFacade implements JmsObjectMessageFacade { - - private byte[] object; - - public byte[] getSerializedObject() { - return object; - } - - public void setSerializedObject(byte[] object) { - this.object = object; - } - - @Override - public JmsMsgType getMsgType() { - return JmsMsgType.OBJECT; - } - - @Override - public boolean isEmpty() { - return object == null || object.length == 0; - } - - @Override - public JmsDefaultObjectMessageFacade copy() { - JmsDefaultObjectMessageFacade copy = new JmsDefaultObjectMessageFacade(); - copyInto(copy); - if (!isEmpty()) { - copy.object = Arrays.copyOf(object, object.length); - } - - return copy; - } - - @Override - public void clearBody() { - this.object = null; - } - - @Override - public Serializable getObject() throws IOException, ClassNotFoundException { - - if (isEmpty()) { - return null; - } - - Serializable serialized = null; - - try (ByteArrayInputStream dataIn = new ByteArrayInputStream(object); - ClassLoadingAwareObjectInputStream objIn = new ClassLoadingAwareObjectInputStream(dataIn)) { - - serialized = (Serializable) objIn.readObject(); - } - - return serialized; - } - - @Override - public void setObject(Serializable value) throws IOException { - byte[] serialized = null; - if (value != null) { - try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); - ObjectOutputStream oos = new ObjectOutputStream(baos)) { - - oos.writeObject(value); - oos.flush(); - oos.close(); - - serialized = baos.toByteArray(); - } - } - - this.object = serialized; - } -} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java deleted file mode 100644 index 1a0a17a..0000000 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java +++ /dev/null @@ -1,85 +0,0 @@ -/** - * 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.qpid.jms.message.facade.defaults; - -import java.util.ArrayList; -import java.util.List; - -import javax.jms.MessageEOFException; - -import org.apache.qpid.jms.message.facade.JmsStreamMessageFacade; - -/** - * Default implementation of the JmsStreamMessageFacade - */ -public class JmsDefaultStreamMessageFacade extends JmsDefaultMessageFacade implements JmsStreamMessageFacade { - - private final List<Object> stream = new ArrayList<Object>(); - private int index = -1; - - @Override - public JmsMsgType getMsgType() { - return JmsMsgType.STREAM; - } - - @Override - public JmsDefaultStreamMessageFacade copy() { - JmsDefaultStreamMessageFacade copy = new JmsDefaultStreamMessageFacade(); - copyInto(copy); - copy.stream.addAll(stream); - return copy; - } - - @Override - public boolean hasNext() { - return !stream.isEmpty() && index < stream.size(); - } - - @Override - public Object peek() throws MessageEOFException { - if (stream.isEmpty() || index + 1 >= stream.size()) { - throw new MessageEOFException("Attempted to read past the end of the stream"); - } - - return stream.get(index + 1); - } - - @Override - public void pop() throws MessageEOFException { - if (stream.isEmpty() || index + 1 >= stream.size()) { - throw new MessageEOFException("Attempted to read past the end of the stream"); - } - - index++; - } - - @Override - public void put(Object value) { - stream.add(value); - } - - @Override - public void clearBody() { - stream.clear(); - index = -1; - } - - @Override - public void reset() { - index = -1; - } -} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java deleted file mode 100644 index c21d5c1..0000000 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java +++ /dev/null @@ -1,62 +0,0 @@ -/** - * 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.qpid.jms.message.facade.defaults; - -import org.apache.qpid.jms.message.facade.JmsTextMessageFacade; - -/** - * Default implementation of the JmsTextMessageFacade. - */ -public final class JmsDefaultTextMessageFacade extends JmsDefaultMessageFacade implements JmsTextMessageFacade { - - private String text; - - @Override - public JmsMsgType getMsgType() { - return JmsMsgType.TEXT; - } - - @Override - public boolean isEmpty() { - return text != null && !text.isEmpty(); - } - - @Override - public JmsDefaultTextMessageFacade copy() { - JmsDefaultTextMessageFacade copy = new JmsDefaultTextMessageFacade(); - copyInto(copy); - if (text != null) { - copy.setText(text); - } - return copy; - } - - @Override - public void clearBody() { - this.text = null; - } - - @Override - public String getText() { - return text; - } - - @Override - public void setText(String text) { - this.text = text; - } -} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java index 9314821..e3f1ac5 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsBytesMessageTest.java @@ -34,6 +34,7 @@ import javax.jms.MessageNotReadableException; import javax.jms.MessageNotWriteableException; import org.apache.qpid.jms.message.facade.defaults.JmsDefaultBytesMessageFacade; +import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory; import org.junit.Test; /** http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMapMessageTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMapMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMapMessageTest.java index 9b335af..648ab7d 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMapMessageTest.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMapMessageTest.java @@ -31,11 +31,11 @@ import javax.jms.JMSException; import javax.jms.MessageFormatException; import javax.jms.MessageNotWriteableException; -import org.apache.qpid.jms.message.JmsDefaultMessageFactory; import org.apache.qpid.jms.message.JmsMapMessage; import org.apache.qpid.jms.message.JmsMessageFactory; import org.apache.qpid.jms.message.facade.JmsMapMessageFacade; import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMapMessageFacade; +import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory; import org.junit.Test; /** http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java index 174ba32..a60b676 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsMessageTest.java @@ -34,9 +34,9 @@ import javax.jms.MessageNotWriteableException; import org.apache.qpid.jms.JmsDestination; import org.apache.qpid.jms.JmsTopic; import org.apache.qpid.jms.message.JmsBytesMessage; -import org.apache.qpid.jms.message.JmsDefaultMessageFactory; import org.apache.qpid.jms.message.JmsMessage; import org.apache.qpid.jms.message.JmsMessageFactory; +import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory; import org.junit.Before; import org.junit.Test; import org.slf4j.Logger; http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsObjectMessageTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsObjectMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsObjectMessageTest.java index b5e2e98..7ca6b79 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsObjectMessageTest.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsObjectMessageTest.java @@ -36,10 +36,10 @@ import javax.jms.MessageNotReadableException; import javax.jms.MessageNotWriteableException; import javax.jms.ObjectMessage; -import org.apache.qpid.jms.message.JmsDefaultMessageFactory; import org.apache.qpid.jms.message.JmsMessageFactory; import org.apache.qpid.jms.message.JmsObjectMessage; import org.apache.qpid.jms.message.facade.JmsObjectMessageFacade; +import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory; import org.apache.qpid.jms.message.facade.defaults.JmsDefaultObjectMessageFacade; import org.junit.Test; import org.mockito.Mockito; http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsStreamMessageTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsStreamMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsStreamMessageTest.java index b21068b..ff9c390 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsStreamMessageTest.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsStreamMessageTest.java @@ -34,9 +34,9 @@ import javax.jms.MessageNotReadableException; import javax.jms.MessageNotWriteableException; import javax.jms.StreamMessage; -import org.apache.qpid.jms.message.JmsDefaultMessageFactory; import org.apache.qpid.jms.message.JmsMessageFactory; import org.apache.qpid.jms.message.JmsStreamMessage; +import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory; import org.junit.Ignore; import org.junit.Test; http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsTextMessageTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsTextMessageTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsTextMessageTest.java index 6757ab8..605143a 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsTextMessageTest.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/JmsTextMessageTest.java @@ -28,9 +28,9 @@ import javax.jms.JMSException; import javax.jms.MessageNotReadableException; import javax.jms.MessageNotWriteableException; -import org.apache.qpid.jms.message.JmsDefaultMessageFactory; import org.apache.qpid.jms.message.JmsMessageFactory; import org.apache.qpid.jms.message.JmsTextMessage; +import org.apache.qpid.jms.message.facade.defaults.JmsDefaultMessageFactory; import org.junit.Test; /** http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java new file mode 100644 index 0000000..23f1817 --- /dev/null +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultBytesMessageFacade.java @@ -0,0 +1,69 @@ +/** + * 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.qpid.jms.message.facade.defaults; + +import io.netty.buffer.ByteBuf; + +import org.apache.qpid.jms.message.facade.JmsBytesMessageFacade; + +/** + * A default implementation of the JmsBytesMessageFacade that simply holds a raw Buffer + */ +public final class JmsDefaultBytesMessageFacade extends JmsDefaultMessageFacade implements JmsBytesMessageFacade { + + private ByteBuf content; + + @Override + public JmsMsgType getMsgType() { + return JmsMsgType.BYTES; + } + + @Override + public JmsDefaultBytesMessageFacade copy() { + JmsDefaultBytesMessageFacade copy = new JmsDefaultBytesMessageFacade(); + copyInto(copy); + if (this.content != null) { + copy.setContent(this.content.copy()); + } + + return copy; + } + + @Override + public boolean isEmpty() { + if (content == null || content.readableBytes() == 0) { + return true; + } + + return false; + } + + @Override + public void clearBody() { + this.content = null; + } + + @Override + public ByteBuf getContent() { + return content; + } + + @Override + public void setContent(ByteBuf content) { + this.content = content; + } +} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java new file mode 100644 index 0000000..33da603 --- /dev/null +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMapMessageFacade.java @@ -0,0 +1,75 @@ +/** + * 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.qpid.jms.message.facade.defaults; + +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.Map; + +import org.apache.qpid.jms.message.facade.JmsMapMessageFacade; + +/** + * Simple implementation of the JmsMapMessageFacade used for testing. + */ +public class JmsDefaultMapMessageFacade extends JmsDefaultMessageFacade implements JmsMapMessageFacade { + + protected final Map<String, Object> map = new HashMap<String, Object>(); + + @Override + public JmsMsgType getMsgType() { + return JmsMsgType.MAP; + } + + @Override + public JmsDefaultMapMessageFacade copy() { + JmsDefaultMapMessageFacade copy = new JmsDefaultMapMessageFacade(); + copyInto(copy); + copy.map.putAll(map); + return copy; + } + + @Override + public Enumeration<String> getMapNames() { + return Collections.enumeration(map.keySet()); + } + + @Override + public boolean itemExists(String key) { + return map.containsKey(key); + } + + @Override + public Object get(String key) { + return map.get(key); + } + + @Override + public void put(String key, Object value) { + map.put(key, value); + } + + @Override + public Object remove(String key) { + return map.remove(key); + } + + @Override + public void clearBody() { + map.clear(); + } +} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java new file mode 100644 index 0000000..eff3ad7 --- /dev/null +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFacade.java @@ -0,0 +1,328 @@ +/** + * 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.qpid.jms.message.facade.defaults; + +import java.nio.charset.Charset; +import java.util.HashMap; +import java.util.Map; + +import javax.jms.JMSException; + +import org.apache.qpid.jms.JmsDestination; +import org.apache.qpid.jms.message.facade.JmsMessageFacade; + +/** + * A default implementation of the JmsMessageFaceade that provides a generic + * message instance which can be used instead of implemented in Provider specific + * version that maps to a Provider message object. + */ +public class JmsDefaultMessageFacade implements JmsMessageFacade { + + private static final Charset UTF8 = Charset.forName("UTF-8"); + + public static enum JmsMsgType { + MESSAGE("jms/message"), + BYTES("jms/bytes-message"), + MAP("jms/map-message"), + OBJECT("jms/object-message"), + STREAM("jms/stream-message"), + TEXT("jms/text-message"), + TEXT_NULL("jms/text-message-null"); + + public final String buffer = new String(this.name()); + public final String mime; + + JmsMsgType(String mime) { + this.mime = mime; + } + } + + protected Map<String, Object> properties = new HashMap<String, Object>(); + + protected byte priority = javax.jms.Message.DEFAULT_PRIORITY; + protected String groupId; + protected int groupSequence; + protected String messageId; + protected long expiration; + protected long timestamp; + protected String correlationId; + protected boolean persistent; + protected int redeliveryCount; + protected String type; + protected JmsDestination destination; + protected JmsDestination replyTo; + protected String userId; + + public JmsMsgType getMsgType() { + return JmsMsgType.MESSAGE; + } + + @Override + public JmsDefaultMessageFacade copy() { + JmsDefaultMessageFacade copy = new JmsDefaultMessageFacade(); + copyInto(copy); + return copy; + } + + protected void copyInto(JmsDefaultMessageFacade target) { + target.priority = this.priority; + target.groupSequence = this.groupSequence; + target.groupId = this.groupId; + target.expiration = this.expiration; + target.timestamp = this.timestamp; + target.correlationId = this.correlationId; + target.persistent = this.persistent; + target.redeliveryCount = this.redeliveryCount; + target.type = this.type; + target.destination = this.destination; + target.replyTo = this.replyTo; + target.userId = this.userId; + target.messageId = this.messageId; + + if (this.properties != null) { + target.properties = new HashMap<String, Object>(this.properties); + } else { + target.properties = null; + } + } + + @Override + public Map<String, Object> getProperties() throws JMSException { + lazyCreateProperties(); + return properties; + } + + @Override + public boolean propertyExists(String key) throws JMSException { + return this.properties.containsKey(key); + } + + @Override + public Object getProperty(String key) throws JMSException { + return this.properties.get(key); + } + + @Override + public void setProperty(String key, Object value) throws JMSException { + this.properties.put(key, value); + } + + @Override + public void onSend() throws JMSException { + } + + @Override + public void onDispatch() throws JMSException { + } + + @Override + public boolean isEmpty() { + return true; + } + + @Override + public void clearBody() { + } + + @Override + public void clearProperties() { + properties.clear(); + } + + @Override + public String getMessageId() { + return messageId; + } + + @Override + public Object getProviderMessageIdObject() { + return messageId; + } + + @Override + public void setMessageId(String messageId) { + this.messageId = messageId; + } + + @Override + public long getTimestamp() { + return this.timestamp; + } + + @Override + public void setTimestamp(long timestamp) { + this.timestamp = timestamp; + } + + @Override + public String getCorrelationId() { + return correlationId; + } + + @Override + public void setCorrelationId(String correlationId) { + this.correlationId = correlationId; + } + + @Override + public byte[] getCorrelationIdBytes() { + return correlationId.getBytes(UTF8); + } + + @Override + public void setCorrelationIdBytes(byte[] correlationId) { + if (correlationId != null && correlationId.length > 0) { + this.correlationId = new String(correlationId, UTF8); + } else { + this.correlationId = null; + } + } + + @Override + public boolean isPersistent() { + return this.persistent; + } + + @Override + public void setPersistent(boolean value) { + this.persistent = value; + } + + @Override + public int getDeliveryCount() { + return this.redeliveryCount + 1; + } + + @Override + public void setDeliveryCount(int deliveryCount) { + this.redeliveryCount = deliveryCount - 1; + } + + @Override + public int getRedeliveryCount() { + return this.redeliveryCount; + } + + @Override + public void setRedeliveryCount(int redeliveryCount) { + this.redeliveryCount = redeliveryCount; + } + + @Override + public boolean isRedelivered() { + return redeliveryCount > 0; + } + + @Override + public void setRedelivered(boolean redelivered) { + if (redelivered) { + if (!isRedelivered()) { + setRedeliveryCount(1); + } + } else { + if (isRedelivered()) { + setRedeliveryCount(0); + } + } + } + + @Override + public String getType() { + return type; + } + + @Override + public void setType(String type) { + this.type = type; + } + + @Override + public byte getPriority() { + return priority; + } + + @Override + public void setPriority(byte priority) { + this.priority = priority; + } + + @Override + public long getExpiration() { + return expiration; + } + + @Override + public void setExpiration(long expiration) { + this.expiration = expiration; + } + + @Override + public JmsDestination getDestination() { + return this.destination; + } + + @Override + public void setDestination(JmsDestination destination) { + this.destination = destination; + } + + @Override + public JmsDestination getReplyTo() { + return this.replyTo; + } + + @Override + public void setReplyTo(JmsDestination replyTo) { + this.replyTo = replyTo; + } + + @Override + public String getUserId() { + return this.userId; + } + + @Override + public void setUserId(String userId) { + this.userId = userId; + } + + @Override + public String getGroupId() { + return this.groupId; + } + + @Override + public void setGroupId(String groupId) { + this.groupId = groupId; + } + + @Override + public int getGroupSequence() { + return this.groupSequence; + } + + @Override + public void setGroupSequence(int groupSequence) { + this.groupSequence = groupSequence; + } + + private void lazyCreateProperties() { + if (properties == null) { + properties = new HashMap<String, Object>(); + } + } +} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFactory.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFactory.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFactory.java new file mode 100644 index 0000000..2e8aa0b --- /dev/null +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultMessageFactory.java @@ -0,0 +1,95 @@ +/** + * 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.qpid.jms.message.facade.defaults; + +import java.io.Serializable; + +import javax.jms.JMSException; + +import org.apache.qpid.jms.message.JmsBytesMessage; +import org.apache.qpid.jms.message.JmsMapMessage; +import org.apache.qpid.jms.message.JmsMessage; +import org.apache.qpid.jms.message.JmsMessageFactory; +import org.apache.qpid.jms.message.JmsObjectMessage; +import org.apache.qpid.jms.message.JmsStreamMessage; +import org.apache.qpid.jms.message.JmsTextMessage; + +/** + * Default implementation of the ProviderMessageFactory that create simple + * generic javax.jms.Message types that can be sent to any Provider instance. + * + * TODO: Once the AMQP Message Facade stuff is done we should move this factory + * and the default JmsMessageFacade implementations into the test package + * since their primary use will be to test the JMS spec compliance of the + * JmsMessage classes. + */ +public class JmsDefaultMessageFactory implements JmsMessageFactory { + + @Override + public JmsMessage createMessage() throws UnsupportedOperationException { + return new JmsMessage(new JmsDefaultMessageFacade()); + } + + @Override + public JmsTextMessage createTextMessage() throws UnsupportedOperationException { + return createTextMessage(null); + } + + @Override + public JmsTextMessage createTextMessage(String payload) throws UnsupportedOperationException { + JmsTextMessage result = new JmsTextMessage(new JmsDefaultTextMessageFacade()); + if (payload != null) { + try { + result.setText(payload); + } catch (JMSException e) { + } + } + return result; + } + + @Override + public JmsBytesMessage createBytesMessage() throws UnsupportedOperationException { + return new JmsBytesMessage(new JmsDefaultBytesMessageFacade()); + } + + @Override + public JmsMapMessage createMapMessage() throws UnsupportedOperationException { + return new JmsMapMessage(new JmsDefaultMapMessageFacade()); + } + + @Override + public JmsStreamMessage createStreamMessage() throws UnsupportedOperationException { + return new JmsStreamMessage(new JmsDefaultStreamMessageFacade()); + } + + @Override + public JmsObjectMessage createObjectMessage() throws UnsupportedOperationException { + return createObjectMessage(null); + } + + @Override + public JmsObjectMessage createObjectMessage(Serializable payload) throws UnsupportedOperationException { + JmsObjectMessage result = new JmsObjectMessage(new JmsDefaultObjectMessageFacade()); + if (payload != null) { + try { + result.setObject(payload); + } catch (Exception e) { + } + } + return result; + } +} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java new file mode 100644 index 0000000..f9bf220 --- /dev/null +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultObjectMessageFacade.java @@ -0,0 +1,105 @@ +/** + * 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.qpid.jms.message.facade.defaults; + +import java.io.ByteArrayInputStream; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.io.ObjectOutputStream; +import java.io.Serializable; +import java.util.Arrays; + +import org.apache.qpid.jms.message.facade.JmsObjectMessageFacade; +import org.apache.qpid.jms.util.ClassLoadingAwareObjectInputStream; + +/** + * Default implementation for a JMS Object Message Facade. + */ +public class JmsDefaultObjectMessageFacade extends JmsDefaultMessageFacade implements JmsObjectMessageFacade { + + private byte[] object; + + public byte[] getSerializedObject() { + return object; + } + + public void setSerializedObject(byte[] object) { + this.object = object; + } + + @Override + public JmsMsgType getMsgType() { + return JmsMsgType.OBJECT; + } + + @Override + public boolean isEmpty() { + return object == null || object.length == 0; + } + + @Override + public JmsDefaultObjectMessageFacade copy() { + JmsDefaultObjectMessageFacade copy = new JmsDefaultObjectMessageFacade(); + copyInto(copy); + if (!isEmpty()) { + copy.object = Arrays.copyOf(object, object.length); + } + + return copy; + } + + @Override + public void clearBody() { + this.object = null; + } + + @Override + public Serializable getObject() throws IOException, ClassNotFoundException { + + if (isEmpty()) { + return null; + } + + Serializable serialized = null; + + try (ByteArrayInputStream dataIn = new ByteArrayInputStream(object); + ClassLoadingAwareObjectInputStream objIn = new ClassLoadingAwareObjectInputStream(dataIn)) { + + serialized = (Serializable) objIn.readObject(); + } + + return serialized; + } + + @Override + public void setObject(Serializable value) throws IOException { + byte[] serialized = null; + if (value != null) { + try (ByteArrayOutputStream baos = new ByteArrayOutputStream(); + ObjectOutputStream oos = new ObjectOutputStream(baos)) { + + oos.writeObject(value); + oos.flush(); + oos.close(); + + serialized = baos.toByteArray(); + } + } + + this.object = serialized; + } +} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java new file mode 100644 index 0000000..1a0a17a --- /dev/null +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultStreamMessageFacade.java @@ -0,0 +1,85 @@ +/** + * 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.qpid.jms.message.facade.defaults; + +import java.util.ArrayList; +import java.util.List; + +import javax.jms.MessageEOFException; + +import org.apache.qpid.jms.message.facade.JmsStreamMessageFacade; + +/** + * Default implementation of the JmsStreamMessageFacade + */ +public class JmsDefaultStreamMessageFacade extends JmsDefaultMessageFacade implements JmsStreamMessageFacade { + + private final List<Object> stream = new ArrayList<Object>(); + private int index = -1; + + @Override + public JmsMsgType getMsgType() { + return JmsMsgType.STREAM; + } + + @Override + public JmsDefaultStreamMessageFacade copy() { + JmsDefaultStreamMessageFacade copy = new JmsDefaultStreamMessageFacade(); + copyInto(copy); + copy.stream.addAll(stream); + return copy; + } + + @Override + public boolean hasNext() { + return !stream.isEmpty() && index < stream.size(); + } + + @Override + public Object peek() throws MessageEOFException { + if (stream.isEmpty() || index + 1 >= stream.size()) { + throw new MessageEOFException("Attempted to read past the end of the stream"); + } + + return stream.get(index + 1); + } + + @Override + public void pop() throws MessageEOFException { + if (stream.isEmpty() || index + 1 >= stream.size()) { + throw new MessageEOFException("Attempted to read past the end of the stream"); + } + + index++; + } + + @Override + public void put(Object value) { + stream.add(value); + } + + @Override + public void clearBody() { + stream.clear(); + index = -1; + } + + @Override + public void reset() { + index = -1; + } +} http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/9064cc8a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java new file mode 100644 index 0000000..c21d5c1 --- /dev/null +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/message/facade/defaults/JmsDefaultTextMessageFacade.java @@ -0,0 +1,62 @@ +/** + * 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.qpid.jms.message.facade.defaults; + +import org.apache.qpid.jms.message.facade.JmsTextMessageFacade; + +/** + * Default implementation of the JmsTextMessageFacade. + */ +public final class JmsDefaultTextMessageFacade extends JmsDefaultMessageFacade implements JmsTextMessageFacade { + + private String text; + + @Override + public JmsMsgType getMsgType() { + return JmsMsgType.TEXT; + } + + @Override + public boolean isEmpty() { + return text != null && !text.isEmpty(); + } + + @Override + public JmsDefaultTextMessageFacade copy() { + JmsDefaultTextMessageFacade copy = new JmsDefaultTextMessageFacade(); + copyInto(copy); + if (text != null) { + copy.setText(text); + } + return copy; + } + + @Override + public void clearBody() { + this.text = null; + } + + @Override + public String getText() { + return text; + } + + @Override + public void setText(String text) { + this.text = text; + } +} --------------------------------------------------------------------- To unsubscribe, e-mail: commits-unsubscr...@qpid.apache.org For additional commands, e-mail: commits-h...@qpid.apache.org