Author: rajith
Date: Fri Jun 15 17:19:30 2012
New Revision: 1350698
URL: http://svn.apache.org/viewvc?rev=1350698&view=rev
Log:
QPID-4027 Added MessageEncoding, MessageNotWritable exception classes to
mnotify encoding/decoding related errors and write operations on Immutable
messages.
Modified the API classes to include exceptions.
Added an Adapter to make a message immutable.
Added:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/MessageEncodingException.java
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/MessageNotWritableException.java
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/ReadOnlyMessageAdapter.java
Modified:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Connection.java
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Message.java
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Receiver.java
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Sender.java
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Session.java
Modified:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Connection.java
URL:
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Connection.java?rev=1350698&r1=1350697&r2=1350698&view=diff
==============================================================================
---
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Connection.java
(original)
+++
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Connection.java
Fri Jun 15 17:19:30 2012
@@ -26,17 +26,17 @@ public interface Connection
* Creates a network connection to the peer and negotiates with the peer
to establish a protocol level connection.
* When this method returns the connection is ready to be used.
*/
- public void open();
+ public void open() throws ConnectionException;
/**
* Returns true if the connection is open.
*/
- public boolean isOpen();
+ public boolean isOpen() throws ConnectionException;
/**
* Close the connection and any sessions associated with this connection.
*/
- public void close();
+ public void close() throws ConnectionException;
/**
* Creates a session with the given name.The name should be unique.
@@ -44,7 +44,7 @@ public interface Connection
* @param name Unique identifier for the session.
* @return Session
*/
- public Session createSession(String name);
+ public Session createSession(String name)throws ConnectionException;
/**
* Creates a transactional session with the given name.
@@ -53,13 +53,13 @@ public interface Connection
* @param name Unique identifier for the session.
* @return Session
*/
- public Session createTransactionalSession(String name);
+ public Session createTransactionalSession(String name)throws
ConnectionException;
/**
* Returns the authenticated username for this connection.
* For the simple username/password case, this just returns the same
username.
* For EXTERNAL The username will be constructed from the subject
distinguished name.
- * For KERBEROR the username will be the kerberos username.
+ * For KERBEROS the username will be the kerberos username.
* @return The authenticated username.
*/
public String getAuthenticatedUsername();
Modified:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Message.java
URL:
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Message.java?rev=1350698&r1=1350697&r2=1350698&view=diff
==============================================================================
---
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Message.java
(original)
+++
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Message.java
Fri Jun 15 17:19:30 2012
@@ -24,53 +24,53 @@ import java.util.Map;
*/
public interface Message
{
- public Object getContent();
+ public Object getContent() throws MessagingException;
- public String getMessageId();
+ public String getMessageId() throws MessagingException;
- public void setMessageId(String messageId);
+ public void setMessageId(String messageId)throws MessagingException;
- public String getSubject();
+ public String getSubject()throws MessagingException;
- public void setSubject(String subject);
+ public void setSubject(String subject)throws MessagingException;
- public String getContentType();
+ public String getContentType()throws MessagingException;
- public void setContentType(String contentType);
+ public void setContentType(String contentType)throws MessagingException;
- public String getCorrelationId();
+ public String getCorrelationId()throws MessagingException;
- public void setCorrelationId(String correlationId);
+ public void setCorrelationId(String correlationId)throws
MessagingException;
- public String getReplyTo();
+ public String getReplyTo()throws MessagingException;
- public void setReplyTo(String replyTo);
+ public void setReplyTo(String replyTo)throws MessagingException;
- public String getUserId();
+ public String getUserId()throws MessagingException;
- public void setUserId(String userId);
+ public void setUserId(String userId)throws MessagingException;
- public boolean isDurable();
+ public boolean isDurable()throws MessagingException;
- public void setDurable(boolean durable);
+ public void setDurable(boolean durable)throws MessagingException;
- public boolean isRedelivered();
+ public boolean isRedelivered()throws MessagingException;
- public void setRedelivered(boolean redelivered);
+ public void setRedelivered(boolean redelivered)throws MessagingException;
- public int getPriority();
+ public int getPriority()throws MessagingException;
- public void setPriority(int priority);
+ public void setPriority(int priority)throws MessagingException;
- public long getTtl();
+ public long getTtl()throws MessagingException;
- public void setTtl(long ttl);
+ public void setTtl(long ttl)throws MessagingException;
- public long getTimestamp();
+ public long getTimestamp()throws MessagingException;
- public void setTimestamp(long timestamp);
+ public void setTimestamp(long timestamp)throws MessagingException;
- public Map<String, Object> getProperties();
+ public Map<String, Object> getProperties()throws MessagingException;
- public void setProperty(String key, Object value);
+ public void setProperty(String key, Object value)throws MessagingException;
}
Added:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/MessageEncodingException.java
URL:
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/MessageEncodingException.java?rev=1350698&view=auto
==============================================================================
---
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/MessageEncodingException.java
(added)
+++
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/MessageEncodingException.java
Fri Jun 15 17:19:30 2012
@@ -0,0 +1,37 @@
+/* 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.messaging;
+
+/**
+ * Notifies if an unsupported content type is used,
+ * or if there is an error when encoding/decoding a message.
+ */
+public class MessageEncodingException extends MessagingException
+{
+
+ public MessageEncodingException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
+
+ public MessageEncodingException(String message)
+ {
+ super(message);
+ }
+
+}
Added:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/MessageNotWritableException.java
URL:
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/MessageNotWritableException.java?rev=1350698&view=auto
==============================================================================
---
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/MessageNotWritableException.java
(added)
+++
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/MessageNotWritableException.java
Fri Jun 15 17:19:30 2012
@@ -0,0 +1,36 @@
+/* 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.messaging;
+
+/**
+ * When trying to modify a read-only message.
+ */
+public class MessageNotWritableException extends MessagingException
+{
+
+ public MessageNotWritableException(String message, Throwable cause)
+ {
+ super(message, cause);
+ }
+
+ public MessageNotWritableException(String message)
+ {
+ super(message);
+ }
+
+}
Added:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/ReadOnlyMessageAdapter.java
URL:
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/ReadOnlyMessageAdapter.java?rev=1350698&view=auto
==============================================================================
---
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/ReadOnlyMessageAdapter.java
(added)
+++
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/ReadOnlyMessageAdapter.java
Fri Jun 15 17:19:30 2012
@@ -0,0 +1,191 @@
+/* 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.messaging;
+
+import java.util.Collections;
+import java.util.Map;
+
+/**
+ * Ensures the message is read only by blocking the delegates
+ * setter methods.
+ */
+public class ReadOnlyMessageAdapter implements Message
+{
+ private Message _delegate;
+
+ ReadOnlyMessageAdapter(Message delegate)
+ {
+ _delegate = delegate;
+ }
+
+ @Override
+ public Object getContent() throws MessagingException
+ {
+ return _delegate.getContent();
+ }
+
+ @Override
+ public String getMessageId() throws MessagingException
+ {
+ return _delegate.getMessageId();
+ }
+
+ @Override
+ public void setMessageId(String messageId) throws MessagingException
+ {
+ throwMessageNotWritableException();
+ }
+
+ @Override
+ public String getSubject() throws MessagingException
+ {
+ return _delegate.getSubject();
+ }
+
+ @Override
+ public void setSubject(String subject) throws MessagingException
+ {
+ throwMessageNotWritableException();
+ }
+
+ @Override
+ public String getContentType() throws MessagingException
+ {
+ return _delegate.getContentType();
+ }
+
+ @Override
+ public void setContentType(String contentType) throws MessagingException
+ {
+ throwMessageNotWritableException();
+ }
+
+ @Override
+ public String getCorrelationId() throws MessagingException
+ {
+ return _delegate.getCorrelationId();
+ }
+
+ @Override
+ public void setCorrelationId(String correlationId) throws
MessagingException
+ {
+ throwMessageNotWritableException();
+ }
+
+ @Override
+ public String getReplyTo() throws MessagingException
+ {
+ return _delegate.getReplyTo();
+ }
+
+ @Override
+ public void setReplyTo(String replyTo) throws MessagingException
+ {
+ throwMessageNotWritableException();
+ }
+
+ @Override
+ public String getUserId() throws MessagingException
+ {
+ return _delegate.getUserId();
+ }
+
+ @Override
+ public void setUserId(String userId) throws MessagingException
+ {
+ throwMessageNotWritableException();
+ }
+
+ @Override
+ public boolean isDurable() throws MessagingException
+ {
+ return _delegate.isDurable();
+ }
+
+ @Override
+ public void setDurable(boolean durable) throws MessagingException
+ {
+ throwMessageNotWritableException();
+ }
+
+ @Override
+ public boolean isRedelivered() throws MessagingException
+ {
+ return _delegate.isRedelivered();
+ }
+
+ @Override
+ public void setRedelivered(boolean redelivered) throws MessagingException
+ {
+ throwMessageNotWritableException();
+ }
+
+ @Override
+ public int getPriority() throws MessagingException
+ {
+ return _delegate.getPriority();
+ }
+
+ @Override
+ public void setPriority(int priority) throws MessagingException
+ {
+ throwMessageNotWritableException();
+ }
+
+ @Override
+ public long getTtl() throws MessagingException
+ {
+ return _delegate.getTtl();
+ }
+
+ @Override
+ public void setTtl(long ttl) throws MessagingException
+ {
+ throwMessageNotWritableException();
+ }
+
+ @Override
+ public long getTimestamp() throws MessagingException
+ {
+ return _delegate.getTimestamp();
+ }
+
+ @Override
+ public void setTimestamp(long timestamp) throws MessagingException
+ {
+ throwMessageNotWritableException();
+ }
+
+ @Override
+ public Map<String, Object> getProperties() throws MessagingException
+ {
+ return Collections.unmodifiableMap(_delegate.getProperties());
+ }
+
+ @Override
+ public void setProperty(String key, Object value) throws MessagingException
+ {
+ throwMessageNotWritableException();
+ }
+
+ private void throwMessageNotWritableException() throws
MessageNotWritableException
+ {
+ throw new MessageNotWritableException("Message is read-only");
+ }
+
+}
Modified:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Receiver.java
URL:
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Receiver.java?rev=1350698&r1=1350697&r2=1350698&view=diff
==============================================================================
---
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Receiver.java
(original)
+++
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Receiver.java
Fri Jun 15 17:19:30 2012
@@ -28,7 +28,7 @@ public interface Receiver
* @param timeout Timeout in milliseconds.
* @return The message received and null if not.
*/
- public Message get(long timeout);
+ public Message get(long timeout) throws MessagingException;
/**
* Retrieves a message for this receivers subscription or waits for up to
the specified timeout for one to become available.
@@ -36,51 +36,51 @@ public interface Receiver
* @param timeout Timeout in milliseconds.
* @return The message received and null if not.
*/
- public Message fetch(long timeout);
+ public Message fetch(long timeout) throws MessagingException;
/**
* Sets the capacity for the receiver.
* @param capacity Number of messages
*/
- public void setCapacity (int capacity);
+ public void setCapacity (int capacity) throws MessagingException;
/**
* Returns the capacity of this receiver
* @return capacity
*/
- public int getCapacity();
+ public int getCapacity() throws MessagingException;
/**
* Returns the number of messages for which there is available capacity.
* @return available capacity
*/
- public int getAvailable();
+ public int getAvailable() throws MessagingException;
/**
* Returns The number of messages received (by this receiver) that have
been acknowledged, but for which that acknowledgment has not yet been confirmed
by the peer.
* @return unsettled message count.
*/
- public int getUnsettled();
+ public int getUnsettled() throws MessagingException;
/**
* Cancels this receiver.
*/
- public void close();
+ public void close() throws MessagingException;
/**
* Returns true if the receiver was closed by a call to close()
*/
- public boolean isClosed();
+ public boolean isClosed() throws MessagingException;
/**
* Returns the name that uniquely identifies this receiver within the
given session.
* @return Identifier for this Receiver.
*/
- public String getName();
+ public String getName() throws MessagingException;
/**
* Returns the session associated with this receiver.
*/
- public Session getSession();
+ public Session getSession() throws MessagingException;
}
Modified:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Sender.java
URL:
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Sender.java?rev=1350698&r1=1350697&r2=1350698&view=diff
==============================================================================
---
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Sender.java
(original)
+++
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Sender.java
Fri Jun 15 17:19:30 2012
@@ -27,50 +27,50 @@ public interface Sender
* @param message The message to be sent.
* @param sync Blocks until the peer confirms the message received.
*/
- public void send (Message message, boolean sync);
+ public void send (Message message, boolean sync) throws MessagingException;
/**
* Cancels the receiver.
*/
- public void close();
+ public void close() throws MessagingException;
/**
* Sets the capacity for the sender.
* @param capacity Number of messages
*/
- public void setCapacity (int capacity);
+ public void setCapacity (int capacity) throws MessagingException;
/**
* Returns the capacity of this sender.
* @return capacity
*/
- public int getCapacity();
+ public int getCapacity() throws MessagingException;
/**
* Returns the number of messages for which there is available capacity.
* @return available capacity
*/
- public int getAvailable();
+ public int getAvailable() throws MessagingException;
/**
* Returns the number of sent messages pending confirmation of receipt by
the broker.
* @return unsettled message count.
*/
- public int getUnsettled();
+ public int getUnsettled() throws MessagingException;
/**
* Returns true if the sender was closed by a call to close()
*/
- public boolean isClosed();
+ public boolean isClosed() throws MessagingException;
/**
* Returns the name that uniquely identifies this sender within the given
session.
* @return Identifier for this Receiver.
*/
- public String getName();
+ public String getName() throws MessagingException;
/**
* Returns the session associated with this sender.
*/
- public Session getSession();
+ public Session getSession() throws MessagingException;
}
Modified:
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Session.java
URL:
http://svn.apache.org/viewvc/qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Session.java?rev=1350698&r1=1350697&r2=1350698&view=diff
==============================================================================
---
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Session.java
(original)
+++
qpid/branches/address-refactor2/qpid/java/client-api/src/main/java/org/apache/qpid/messaging/Session.java
Fri Jun 15 17:19:30 2012
@@ -25,63 +25,63 @@ public interface Session
/**
* Returns true if the session is closed.
*/
- public boolean isClosed();
+ public boolean isClosed() throws MessagingException;
/**
* Closes a session and all associated senders and receivers.
*/
- public void close();
+ public void close() throws MessagingException;
/**
* Commits all messages sent or received during the current transaction.
*/
- public void commit();
+ public void commit() throws MessagingException;
/**
* Rolls back all messages sent or received during the current transaction.
*/
- public void rollback();
+ public void rollback() throws MessagingException;
/**
* Acknowledges all outstanding messages that have been received by the
application on this session.
* @param sync If true, request synchronization with the peer.
*/
- public void acknowledge(boolean sync);
+ public void acknowledge(boolean sync) throws MessagingException;
/**
* Acknowledges the specified message.
* @param message The message to be acknowledged
* @param sync If true, request synchronization with the peer.
*/
- public <T> void acknowledge (Message message, boolean sync);
+ public void acknowledge (Message message, boolean sync) throws
MessagingException;
/**
* Rejects the specified message.
* @param message The message to be rejected.
*/
- public <T> void reject(Message message);
+ public void reject(Message message) throws MessagingException;
/**
* Releases the specified message.
* @param message The message to be released.
*/
- public <T> void release(Message message);
+ public void release(Message message) throws MessagingException;
/**
* Request synchronization with the peer.
* @param block If true, block until synchronization is complete.
*/
- public void sync(boolean block);
+ public void sync(boolean block) throws MessagingException;
/**
* Returns the total number of messages received and waiting to be fetched
by all Receivers belonging to this session.
*/
- public int getReceivable();
+ public int getReceivable() throws MessagingException;
/**
* Returns The number of messages received by this session that have been
acknowledged, but for which that acknowledgment has not yet been confirmed by
the peer.
*/
- public int getUnsettledAcks();
+ public int getUnsettledAcks() throws MessagingException;
/**
* Returns the receiver for the next available message.
@@ -90,35 +90,35 @@ public interface Session
* @param timeout The timeout value in milliseconds.
* @return The receiver for the next available message.
*/
- public Receiver nextReceiver(long timeout);
+ public Receiver nextReceiver(long timeout) throws MessagingException;
/**
* Create a new sender through which messages can be sent to the specified
address.
* @param address @see Address
*/
- public Sender createSender(Address address);
+ public Sender createSender(Address address) throws MessagingException;
/**
* Create a new sender through which messages can be sent to the specified
address.
* @param address The string containing a valid address @see Address for
the format.
*/
- public Sender createSender (String address);
+ public Sender createSender (String address) throws MessagingException;
/**
* Create a new receiver through which messages can be received from the
specified address.
* @param address @see Address
*/
- public Receiver createReceiver (Address address);
+ public Receiver createReceiver (Address address) throws MessagingException;
/**
* Create a new receiver through which messages can be received from the
specified address.
* @param address The string containing a valid address @see Address for
the format.
*/
- public Receiver createReceiver (String address);
+ public Receiver createReceiver (String address) throws MessagingException;
/**
* Returns the connection this session is associated with.
* @return
*/
- public Connection getConnection();
+ public Connection getConnection() throws MessagingException;
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]