summaryrefslogtreecommitdiff
path: root/java/common/src
diff options
context:
space:
mode:
authorRobert Godfrey <rgodfrey@apache.org>2007-05-24 09:57:00 +0000
committerRobert Godfrey <rgodfrey@apache.org>2007-05-24 09:57:00 +0000
commit2c5428300dbf8e0025b8e8cb010ff5e818c1a77e (patch)
tree16d48352f7aac669beaa10ec3d750038e15cad6f /java/common/src
parent13a373d975a60d45b2dd6de4c3cc821296330e16 (diff)
downloadqpid-python-2c5428300dbf8e0025b8e8cb010ff5e818c1a77e.tar.gz
QPID-482 : Small performance tweaks
git-svn-id: https://svn.apache.org/repos/asf/incubator/qpid/branches/M2@541247 13f79535-47bb-0310-9956-ffa450edef68
Diffstat (limited to 'java/common/src')
-rw-r--r--java/common/src/main/java/org/apache/qpid/codec/AMQCodecFactory.java4
-rw-r--r--java/common/src/main/java/org/apache/qpid/framing/AMQDataBlock.java10
-rw-r--r--java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockEncoder.java7
-rw-r--r--java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java2
-rw-r--r--java/common/src/main/java/org/apache/qpid/framing/FieldTable.java35
-rw-r--r--java/common/src/main/java/org/apache/qpid/pool/PoolingFilter.java4
-rw-r--r--java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java33
7 files changed, 69 insertions, 26 deletions
diff --git a/java/common/src/main/java/org/apache/qpid/codec/AMQCodecFactory.java b/java/common/src/main/java/org/apache/qpid/codec/AMQCodecFactory.java
index 4e3a46eb90..fa890d0ebb 100644
--- a/java/common/src/main/java/org/apache/qpid/codec/AMQCodecFactory.java
+++ b/java/common/src/main/java/org/apache/qpid/codec/AMQCodecFactory.java
@@ -37,10 +37,10 @@ import org.apache.mina.filter.codec.ProtocolEncoder;
public class AMQCodecFactory implements ProtocolCodecFactory
{
/** Holds the protocol encoder. */
- private AMQEncoder _encoder = new AMQEncoder();
+ private final AMQEncoder _encoder = new AMQEncoder();
/** Holds the protocol decoder. */
- private AMQDecoder _frameDecoder;
+ private final AMQDecoder _frameDecoder;
/**
* Creates a new codec factory, specifiying whether it is expected that the first frame of data should be an
diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlock.java b/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlock.java
index 9155c4024f..903b5bfa7a 100644
--- a/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlock.java
+++ b/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlock.java
@@ -40,4 +40,14 @@ public abstract class AMQDataBlock implements EncodableAMQDataBlock
* @param buffer
*/
public abstract void writePayload(ByteBuffer buffer);
+
+ public ByteBuffer toByteBuffer()
+ {
+ final ByteBuffer buffer = ByteBuffer.allocate((int)getSize());
+
+ writePayload(buffer);
+ buffer.flip();
+ return buffer;
+ }
+
}
diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockEncoder.java b/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockEncoder.java
index aedea6dd89..91814085fc 100644
--- a/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockEncoder.java
+++ b/java/common/src/main/java/org/apache/qpid/framing/AMQDataBlockEncoder.java
@@ -42,17 +42,14 @@ public final class AMQDataBlockEncoder implements MessageEncoder
public void encode(IoSession session, Object message, ProtocolEncoderOutput out) throws Exception
{
final AMQDataBlock frame = (AMQDataBlock) message;
- int frameSize = (int)frame.getSize();
- final ByteBuffer buffer = ByteBuffer.allocate(frameSize);
- //buffer.setAutoExpand(true);
- frame.writePayload(buffer);
+
+ final ByteBuffer buffer = frame.toByteBuffer();
if (_logger.isDebugEnabled())
{
_logger.debug("Encoded frame byte-buffer is '" + EncodingUtils.convertToHexString(buffer) + "'");
}
- buffer.flip();
out.write(buffer);
}
diff --git a/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java b/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
index 3f6ef73781..e4e3222f01 100644
--- a/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
+++ b/java/common/src/main/java/org/apache/qpid/framing/AMQShortString.java
@@ -15,7 +15,7 @@ public final class AMQShortString implements CharSequence, Comparable<AMQShortSt
private final ByteBuffer _data;
private int _hashCode;
- final int _length;
+ private final int _length;
private static final char[] EMPTY_CHAR_ARRAY = new char[0];
public AMQShortString(byte[] data)
diff --git a/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java b/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java
index 631a3ae149..34415777be 100644
--- a/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java
+++ b/java/common/src/main/java/org/apache/qpid/framing/FieldTable.java
@@ -37,6 +37,8 @@ import org.apache.qpid.AMQPInvalidClassException;
public class FieldTable
{
private static final Logger _logger = Logger.getLogger(FieldTable.class);
+ private static final String STRICT_AMQP = "STRICT_AMQP";
+ private final boolean _strictAMQP = Boolean.valueOf(System.getProperty(STRICT_AMQP,"false"));
private ByteBuffer _encodedForm;
private LinkedHashMap<AMQShortString, AMQTypedValue> _properties;
@@ -407,74 +409,74 @@ public class FieldTable
// ************ Setters
- public Object setBoolean(String string, boolean b)
+ public Object setBoolean(String string, Boolean b)
{
return setBoolean(new AMQShortString(string), b);
}
- public Object setBoolean(AMQShortString string, boolean b)
+ public Object setBoolean(AMQShortString string, Boolean b)
{
return setProperty(string, AMQType.BOOLEAN.asTypedValue(b));
}
- public Object setByte(String string, byte b)
+ public Object setByte(String string, Byte b)
{
return setByte(new AMQShortString(string), b);
}
- public Object setByte(AMQShortString string, byte b)
+ public Object setByte(AMQShortString string, Byte b)
{
return setProperty(string, AMQType.BYTE.asTypedValue(b));
}
- public Object setShort(String string, short i)
+ public Object setShort(String string, Short i)
{
return setShort(new AMQShortString(string), i);
}
- public Object setShort(AMQShortString string, short i)
+ public Object setShort(AMQShortString string, Short i)
{
return setProperty(string, AMQType.SHORT.asTypedValue(i));
}
- public Object setInteger(String string, int i)
+ public Object setInteger(String string, Integer i)
{
return setInteger(new AMQShortString(string), i);
}
- public Object setInteger(AMQShortString string, int i)
+ public Object setInteger(AMQShortString string, Integer i)
{
return setProperty(string, AMQType.INT.asTypedValue(i));
}
- public Object setLong(String string, long l)
+ public Object setLong(String string, Long l)
{
return setLong(new AMQShortString(string), l);
}
- public Object setLong(AMQShortString string, long l)
+ public Object setLong(AMQShortString string, Long l)
{
return setProperty(string, AMQType.LONG.asTypedValue(l));
}
- public Object setFloat(String string, float f)
+ public Object setFloat(String string, Float f)
{
return setFloat(new AMQShortString(string), f);
}
- public Object setFloat(AMQShortString string, float v)
+ public Object setFloat(AMQShortString string, Float v)
{
return setProperty(string, AMQType.FLOAT.asTypedValue(v));
}
- public Object setDouble(String string, double d)
+ public Object setDouble(String string, Double d)
{
return setDouble(new AMQShortString(string), d);
}
- public Object setDouble(AMQShortString string, double v)
+ public Object setDouble(AMQShortString string, Double v)
{
return setProperty(string, AMQType.DOUBLE.asTypedValue(v));
}
@@ -668,7 +670,10 @@ public class FieldTable
throw new IllegalArgumentException("Property name must not be the empty string");
}
- checkIdentiferFormat(propertyName);
+ if(_strictAMQP)
+ {
+ checkIdentiferFormat(propertyName);
+ }
}
protected static void checkIdentiferFormat(AMQShortString propertyName)
diff --git a/java/common/src/main/java/org/apache/qpid/pool/PoolingFilter.java b/java/common/src/main/java/org/apache/qpid/pool/PoolingFilter.java
index ffc8f1643a..7d3dfbee81 100644
--- a/java/common/src/main/java/org/apache/qpid/pool/PoolingFilter.java
+++ b/java/common/src/main/java/org/apache/qpid/pool/PoolingFilter.java
@@ -138,7 +138,7 @@ public abstract class PoolingFilter extends IoFilterAdapter implements Job.JobCo
*/
public void init()
{
- _logger.info("Init called on PoolingFilter " + toString());
+ _logger.debug("Init called on PoolingFilter " + toString());
// Called when the filter is initialised in the chain. If the reference count is
// zero this acquire will initialise the pool.
@@ -150,7 +150,7 @@ public abstract class PoolingFilter extends IoFilterAdapter implements Job.JobCo
*/
public void destroy()
{
- _logger.info("Destroy called on PoolingFilter " + toString());
+ _logger.debug("Destroy called on PoolingFilter " + toString());
// When the reference count gets to zero we release the executor service.
_poolReference.releaseExecutorService();
diff --git a/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java b/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java
index 6160dc1843..38a2ae6256 100644
--- a/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java
+++ b/java/common/src/test/java/org/apache/qpid/framing/PropertyFieldTableTest.java
@@ -777,6 +777,8 @@ public class PropertyFieldTableTest extends TestCase
*/
public void testCheckPropertyNamehasMaxLength()
{
+ String oldVal =System.getProperty("STRICT_AMQP");
+ System.setProperty("STRICT_AMQP","true");
FieldTable table = new FieldTable();
StringBuffer longPropertyName = new StringBuffer(129);
@@ -797,6 +799,14 @@ public class PropertyFieldTableTest extends TestCase
}
// so length should be zero
Assert.assertEquals(0, table.getEncodedSize());
+ if(oldVal != null)
+ {
+ System.setProperty("STRICT_AMQP",oldVal);
+ }
+ else
+ {
+ System.clearProperty("STRICT_AMQP");
+ }
}
@@ -805,12 +815,14 @@ public class PropertyFieldTableTest extends TestCase
*/
public void testCheckPropertyNameStartCharacterIsLetter()
{
+ String oldVal =System.getProperty("STRICT_AMQP");
+ System.setProperty("STRICT_AMQP","true");
FieldTable table = new FieldTable();
//Try a name that starts with a number
try
{
- table.setObject("1", "String");
+ table.setObject("1", "String");
fail("property name must start with a letter");
}
catch (IllegalArgumentException iae)
@@ -819,6 +831,14 @@ public class PropertyFieldTableTest extends TestCase
}
// so length should be zero
Assert.assertEquals(0, table.getEncodedSize());
+ if(oldVal != null)
+ {
+ System.setProperty("STRICT_AMQP",oldVal);
+ }
+ else
+ {
+ System.clearProperty("STRICT_AMQP");
+ }
}
@@ -827,6 +847,8 @@ public class PropertyFieldTableTest extends TestCase
*/
public void testCheckPropertyNameStartCharacterIsHashorDollar()
{
+ String oldVal =System.getProperty("STRICT_AMQP");
+ System.setProperty("STRICT_AMQP","true");
FieldTable table = new FieldTable();
//Try a name that starts with a number
@@ -839,9 +861,18 @@ public class PropertyFieldTableTest extends TestCase
{
fail("property name are allowed to start with # and $s");
}
+ if(oldVal != null)
+ {
+ System.setProperty("STRICT_AMQP",oldVal);
+ }
+ else
+ {
+ System.clearProperty("STRICT_AMQP");
+ }
}
+
/**
* Additional test to test the contents of the table
*/