resolve https://issues.apache.org/activemq/browse/AMQ-2840 - revert to 5.3 behaviour for tck compliance, add new getAllPropertyNames method that returns all props, including JMS standard props and JMSX extnsion props

git-svn-id: https://svn.apache.org/repos/asf/activemq/trunk@987443 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Gary Tully 2010-08-20 09:48:45 +00:00
parent cf3db575a5
commit e121ccc990
2 changed files with 43 additions and 6 deletions

View File

@ -282,12 +282,21 @@ public class ActiveMQMessage extends Message implements org.apache.activemq.Mess
public Enumeration getPropertyNames() throws JMSException {
try {
Vector<String> result = new Vector<String>(this.getProperties().keySet());
// omit standard jms props as per spec
for (String propName : JMS_PROPERTY_SETERS.keySet()) {
if (propName.startsWith("JMSX")) {
result.add(propName);
return result.elements();
} catch (IOException e) {
throw JMSExceptionSupport.create(e);
}
}
/**
* return all property names, including standard JMS properties and JMSX properties
* @return Enumeration of all property names on this message
* @throws JMSException
*/
public Enumeration getAllPropertyNames() throws JMSException {
try {
Vector<String> result = new Vector<String>(this.getProperties().keySet());
result.addAll(JMS_PROPERTY_SETERS.keySet());
return result.elements();
} catch (IOException e) {
throw JMSExceptionSupport.create(e);

View File

@ -356,15 +356,43 @@ public class ActiveMQMessageTest extends TestCase {
msg.setFloatProperty(name1, 1.3f);
String name2 = "JMSXDeliveryCount";
msg.setIntProperty(name2, 1);
String name3 = "JMSRedelivered";
msg.setBooleanProperty(name3, false);
boolean found1 = false;
boolean found2 = false;
boolean found3 = false;
for (Enumeration iter = msg.getPropertyNames(); iter.hasMoreElements();) {
Object element = iter.nextElement();
found1 |= element.equals(name1);
found2 |= element.equals(name2);
found3 |= element.equals(name3);
}
assertTrue("prop name1 found", found1);
// spec compliance, only non JMS (and JMSX) props returned
assertFalse("prop name2 not found", found2);
assertFalse("prop name4 not found", found3);
}
public void testGetAllPropertyNames() throws JMSException {
ActiveMQMessage msg = new ActiveMQMessage();
String name1 = "floatProperty";
msg.setFloatProperty(name1, 1.3f);
String name2 = "JMSXDeliveryCount";
msg.setIntProperty(name2, 1);
String name3 = "JMSRedelivered";
msg.setBooleanProperty(name3, false);
boolean found1 = false;
boolean found2 = false;
boolean found3 = false;
for (Enumeration iter = msg.getAllPropertyNames(); iter.hasMoreElements();) {
Object element = iter.nextElement();
found1 |= element.equals(name1);
found2 |= element.equals(name2);
found3 |= element.equals(name3);
}
assertTrue("prop name1 found", found1);
assertTrue("prop name2 found", found2);
assertTrue("prop name4 found", found3);
}
public void testSetObjectProperty() throws JMSException {