You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@qpid.apache.org by or...@apache.org on 2018/05/28 12:38:48 UTC
qpid-broker-j git commit: QPID-7830: [Broker-J] Simplify string
caching functionality
Repository: qpid-broker-j
Updated Branches:
refs/heads/7.0.x 21aabcd9c -> a4ade5a37
QPID-7830: [Broker-J] Simplify string caching functionality
(cherry picked from commit 57bda83de7fbe6291aea507b5c1098fda5cf130d)
Project: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/repo
Commit: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/commit/a4ade5a3
Tree: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/tree/a4ade5a3
Diff: http://git-wip-us.apache.org/repos/asf/qpid-broker-j/diff/a4ade5a3
Branch: refs/heads/7.0.x
Commit: a4ade5a371eefdee764a6e13341625a945d67d1b
Parents: 21aabcd
Author: Alex Rudyy <or...@apache.org>
Authored: Fri May 25 15:40:57 2018 +0100
Committer: Alex Rudyy <or...@apache.org>
Committed: Mon May 28 11:07:15 2018 +0100
----------------------------------------------------------------------
.../server/protocol/v0_8/AMQShortString.java | 17 ++++---
.../protocol/v0_8/AMQShortStringTest.java | 25 +++++----
.../server/protocol/v0_8/MessageMetaData.java | 9 ----
.../transport/BasicContentHeaderProperties.java | 24 ---------
.../v0_8/transport/BasicPublishBody.java | 8 ---
.../v1_0/codec/StringTypeConstructor.java | 29 ++++++++++-
.../type/messaging/ApplicationProperties.java | 5 +-
.../messaging/NonEncodingRetainingSection.java | 30 -----------
.../v1_0/type/messaging/Properties.java | 4 +-
.../v1_0/codec/StringTypeConstructorTest.java | 53 ++++++++++++++++++++
.../NonEncodingRetainingSectionTest.java | 50 ------------------
11 files changed, 108 insertions(+), 146 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a4ade5a3/broker-core/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQShortString.java
----------------------------------------------------------------------
diff --git a/broker-core/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQShortString.java b/broker-core/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQShortString.java
index a01c02f..59f96e5 100644
--- a/broker-core/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQShortString.java
+++ b/broker-core/src/main/java/org/apache/qpid/server/protocol/v0_8/AMQShortString.java
@@ -98,8 +98,14 @@ public final class AMQShortString implements Comparable<AMQShortString>
byte[] data = new byte[length];
buffer.get(data);
- final AMQShortString cached = getShortStringCache().getIfPresent(ByteBuffer.wrap(data));
- return cached != null ? cached : new AMQShortString(data);
+ ByteBuffer stringBuffer = ByteBuffer.wrap(data);
+ AMQShortString cached = getShortStringCache().getIfPresent(stringBuffer);
+ if (cached == null)
+ {
+ cached = new AMQShortString(data);
+ getShortStringCache().put(stringBuffer, cached);
+ }
+ return cached;
}
}
@@ -297,11 +303,6 @@ public final class AMQShortString implements Comparable<AMQShortString>
return false;
}
- public void intern()
- {
- getShortStringCache().put(ByteBuffer.wrap(_data), this);
- }
-
public static AMQShortString validValueOf(Object obj)
{
return valueOf(obj,true,true);
@@ -365,7 +366,7 @@ public final class AMQShortString implements Comparable<AMQShortString>
}
/** Unit testing only */
- static void setCache(final Cache<ByteBuffer, AMQShortString> cache)
+ static void setShortStringCache(final Cache<ByteBuffer, AMQShortString> cache)
{
CACHE.set(cache);
}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a4ade5a3/broker-core/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQShortStringTest.java
----------------------------------------------------------------------
diff --git a/broker-core/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQShortStringTest.java b/broker-core/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQShortStringTest.java
index d5ea2de..9aee53f 100644
--- a/broker-core/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQShortStringTest.java
+++ b/broker-core/src/test/java/org/apache/qpid/server/protocol/v0_8/AMQShortStringTest.java
@@ -28,6 +28,8 @@ import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
import org.apache.qpid.test.utils.QpidTestCase;
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
+
public class AMQShortStringTest extends QpidTestCase
{
@@ -135,28 +137,31 @@ public class AMQShortStringTest extends QpidTestCase
assertEquals("Unexpected null string from valueOf", null, shortString);
}
- public void testInterning()
+
+ public void testCaching()
{
Cache<ByteBuffer, AMQShortString> original = AMQShortString.getShortStringCache();
Cache<ByteBuffer, AMQShortString> cache = CacheBuilder.newBuilder().maximumSize(1).build();
- AMQShortString.setCache(cache);
-
+ AMQShortString.setShortStringCache(cache);
try
{
- AMQShortString str1 = AMQShortString.createAMQShortString("hello");
- str1.intern();
- AMQShortString str2 = AMQShortString.createAMQShortString("hello");
- AMQShortString str3 = AMQShortString.createAMQShortString("hello".getBytes(StandardCharsets.UTF_8));
+ AMQShortString string = AMQShortString.createAMQShortString("hello");
+ QpidByteBuffer qpidByteBuffer = QpidByteBuffer.allocate(2 * (string.length() + 1));
+ string.writeToBuffer(qpidByteBuffer);
+ string.writeToBuffer(qpidByteBuffer);
+
+ qpidByteBuffer.flip();
+
+ AMQShortString str1 = AMQShortString.readAMQShortString(qpidByteBuffer);
+ AMQShortString str2 = AMQShortString.readAMQShortString(qpidByteBuffer);
assertEquals(str1, str2);
- assertEquals(str1, str3);
assertSame(str1, str2);
- assertSame(str1, str3);
}
finally
{
cache.cleanUp();
- AMQShortString.setCache(original);
+ AMQShortString.setShortStringCache(original);
}
}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a4ade5a3/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/MessageMetaData.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/MessageMetaData.java b/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/MessageMetaData.java
index 2ad8511..1defedb 100644
--- a/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/MessageMetaData.java
+++ b/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/MessageMetaData.java
@@ -164,16 +164,7 @@ public class MessageMetaData implements StorableMessageMetaData
ContentHeaderBody chb = ContentHeaderBody.createFromBuffer(buf, size);
final AMQShortString exchange = AMQShortString.readAMQShortString(buf);
- if (exchange != null)
- {
- exchange.intern();
- }
final AMQShortString routingKey = AMQShortString.readAMQShortString(buf);
- if (routingKey != null)
- {
- routingKey.intern();
- }
-
final byte flags = buf.get();
long arrivalTime = buf.getLong();
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a4ade5a3/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/transport/BasicContentHeaderProperties.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/transport/BasicContentHeaderProperties.java b/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/transport/BasicContentHeaderProperties.java
index 52183fc..43c26f1 100644
--- a/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/transport/BasicContentHeaderProperties.java
+++ b/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/transport/BasicContentHeaderProperties.java
@@ -374,19 +374,11 @@ public class BasicContentHeaderProperties
if ((_propertyFlags & (CONTENT_TYPE_MASK)) != 0)
{
_contentType = AMQShortString.readAMQShortString(buffer);
- if (_contentType != null)
- {
- _contentType.intern();
- }
}
if ((_propertyFlags & ENCODING_MASK) != 0)
{
_encoding = AMQShortString.readAMQShortString(buffer);
- if (_encoding != null)
- {
- _encoding.intern();
- }
}
if ((_propertyFlags & HEADERS_MASK) != 0)
@@ -418,10 +410,6 @@ public class BasicContentHeaderProperties
if ((_propertyFlags & REPLY_TO_MASK) != 0)
{
_replyTo = AMQShortString.readAMQShortString(buffer);
- if (_replyTo != null)
- {
- _replyTo.intern();
- }
}
if ((_propertyFlags & EXPIRATION_MASK) != 0)
@@ -447,28 +435,16 @@ public class BasicContentHeaderProperties
if ((_propertyFlags & USER_ID_MASK) != 0)
{
_userId = AMQShortString.readAMQShortString(buffer);
- if (_userId != null)
- {
- _userId.intern();
- }
}
if ((_propertyFlags & APPLICATION_ID_MASK) != 0)
{
_appId = AMQShortString.readAMQShortString(buffer);
- if (_appId != null)
- {
- _appId.intern();
- }
}
if ((_propertyFlags & CLUSTER_ID_MASK) != 0)
{
_clusterId = AMQShortString.readAMQShortString(buffer);
- if (_clusterId != null)
- {
- _clusterId.intern();
- }
}
}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a4ade5a3/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/transport/BasicPublishBody.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/transport/BasicPublishBody.java b/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/transport/BasicPublishBody.java
index a8243ea..9821383 100644
--- a/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/transport/BasicPublishBody.java
+++ b/broker-plugins/amqp-0-8-protocol/src/main/java/org/apache/qpid/server/protocol/v0_8/transport/BasicPublishBody.java
@@ -152,15 +152,7 @@ public class BasicPublishBody extends AMQMethodBodyImpl implements EncodableAMQD
int ticket = buffer.getUnsignedShort();
AMQShortString exchange = AMQShortString.readAMQShortString(buffer);
- if (exchange != null)
- {
- exchange.intern();
- }
AMQShortString routingKey = AMQShortString.readAMQShortString(buffer);
- if (routingKey != null)
- {
- routingKey.intern();
- }
byte bitfield = buffer.get();
boolean mandatory = (bitfield & 0x01) != 0;
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a4ade5a3/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/codec/StringTypeConstructor.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/codec/StringTypeConstructor.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/codec/StringTypeConstructor.java
index 946dc4a..ffa708a 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/codec/StringTypeConstructor.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/codec/StringTypeConstructor.java
@@ -22,13 +22,22 @@ package org.apache.qpid.server.protocol.v1_0.codec;
import static java.nio.charset.StandardCharsets.UTF_8;
+import java.nio.ByteBuffer;
+
+import com.google.common.cache.Cache;
+
import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
import org.apache.qpid.server.protocol.v1_0.type.AmqpErrorException;
import org.apache.qpid.server.protocol.v1_0.type.transport.AmqpError;
+import org.apache.qpid.server.virtualhost.CacheFactory;
+import org.apache.qpid.server.virtualhost.NullCache;
public class StringTypeConstructor extends VariableWidthTypeConstructor<String>
{
+ private static final NullCache<ByteBuffer, String> NULL_CACHE = new NullCache<>();
+ private static final ThreadLocal<Cache<ByteBuffer, String>> CACHE =
+ ThreadLocal.withInitial(() -> CacheFactory.getCache("stringCache", NULL_CACHE));
public static StringTypeConstructor getInstance(int i)
{
@@ -67,6 +76,24 @@ public class StringTypeConstructor extends VariableWidthTypeConstructor<String>
byte[] data = new byte[size];
in.get(data);
- return new String(data, UTF_8);
+
+ ByteBuffer buffer = ByteBuffer.wrap(data);
+ String cached = getCache().getIfPresent(buffer);
+ if (cached == null)
+ {
+ cached = new String(data, UTF_8);
+ getCache().put(buffer, cached);
+ }
+ return cached;
+ }
+
+ static Cache<ByteBuffer, String> getCache()
+ {
+ return CACHE.get();
+ }
+
+ static void setCache(final Cache<ByteBuffer, String> cache)
+ {
+ CACHE.set(cache);
}
}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a4ade5a3/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/ApplicationProperties.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/ApplicationProperties.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/ApplicationProperties.java
index f44f960..b2d3954 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/ApplicationProperties.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/ApplicationProperties.java
@@ -42,7 +42,6 @@ public class ApplicationProperties implements NonEncodingRetainingSection<Map<St
{
throw new IllegalArgumentException("Value must not be null");
}
- LinkedHashMap<String,Object> copy = new LinkedHashMap<>();
for(Map.Entry<String,Object> entry: value.entrySet())
{
if (entry.getKey() == null)
@@ -53,10 +52,8 @@ public class ApplicationProperties implements NonEncodingRetainingSection<Map<St
{
throw new IllegalArgumentException("Application properties do not allow non-primitive values");
}
-
- copy.put(NonEncodingRetainingSection.getCached(entry.getKey()), entry.getValue());
}
- _value = copy;
+ _value = value;
}
@Override
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a4ade5a3/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/NonEncodingRetainingSection.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/NonEncodingRetainingSection.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/NonEncodingRetainingSection.java
index b6385c2..fc9a43d 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/NonEncodingRetainingSection.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/NonEncodingRetainingSection.java
@@ -20,39 +20,9 @@
*/
package org.apache.qpid.server.protocol.v1_0.type.messaging;
-import com.google.common.cache.Cache;
-
import org.apache.qpid.server.protocol.v1_0.type.Section;
-import org.apache.qpid.server.virtualhost.CacheFactory;
-import org.apache.qpid.server.virtualhost.NullCache;
public interface NonEncodingRetainingSection<T> extends Section<T>
{
- NullCache<String, String> NULL_CACHE = new NullCache<>();
- ThreadLocal<Cache<String, String>> CACHE =
- ThreadLocal.withInitial(() -> CacheFactory.getCache("stringCache", NULL_CACHE));
-
- static Cache<String, String> getStringCache()
- {
- return CACHE.get();
- }
-
- /** Unit testing only */
- static void setCache(final Cache<String, String> cache)
- {
- CACHE.set(cache);
- }
-
- static String getCached(final String value)
- {
- String cached = getStringCache().getIfPresent(value);
- if (cached == null)
- {
- cached = value;
- getStringCache().put(cached, cached);
- }
- return cached;
- }
-
EncodingRetainingSection<T> createEncodingRetainingSection();
}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a4ade5a3/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/Properties.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/Properties.java b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/Properties.java
index 2fcc9ca..9c10cee 100644
--- a/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/Properties.java
+++ b/broker-plugins/amqp-1-0-protocol/src/main/java/org/apache/qpid/server/protocol/v1_0/type/messaging/Properties.java
@@ -98,7 +98,7 @@ public class Properties implements NonEncodingRetainingSection<Properties>
public void setTo(String to)
{
- _to = (to == null ? null : NonEncodingRetainingSection.getCached(to));
+ _to = to;
}
public String getSubject()
@@ -108,7 +108,7 @@ public class Properties implements NonEncodingRetainingSection<Properties>
public void setSubject(String subject)
{
- _subject = (subject == null ? null : NonEncodingRetainingSection.getCached(subject));
+ _subject = subject;
}
public String getReplyTo()
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a4ade5a3/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/codec/StringTypeConstructorTest.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/codec/StringTypeConstructorTest.java b/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/codec/StringTypeConstructorTest.java
new file mode 100644
index 0000000..a5994a6
--- /dev/null
+++ b/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/codec/StringTypeConstructorTest.java
@@ -0,0 +1,53 @@
+/*
+ *
+ * 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.server.protocol.v1_0.codec;
+
+import java.nio.ByteBuffer;
+
+import com.google.common.cache.Cache;
+import com.google.common.cache.CacheBuilder;
+
+import org.apache.qpid.server.bytebuffer.QpidByteBuffer;
+import org.apache.qpid.test.utils.QpidTestCase;
+
+public class StringTypeConstructorTest extends QpidTestCase
+{
+
+ public void testCachingInConstruct() throws Exception
+ {
+ StringTypeConstructor constructor = StringTypeConstructor.getInstance(1);
+ Cache<ByteBuffer, String> original = StringTypeConstructor.getCache();
+ Cache<ByteBuffer, String> cache = CacheBuilder.newBuilder().maximumSize(2).build();
+ StringTypeConstructor.setCache(cache);
+ try
+ {
+ String string1 = constructor.construct(QpidByteBuffer.wrap(new byte[]{4, 't', 'e', 's', 't'}), null);
+ String string2 = constructor.construct(QpidByteBuffer.wrap(new byte[]{4, 't', 'e', 's', 't'}), null);
+ assertEquals(string1, string2);
+ assertSame(string1, string2);
+ }
+ finally
+ {
+ cache.cleanUp();
+ StringTypeConstructor.setCache(original);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/qpid-broker-j/blob/a4ade5a3/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/type/messaging/NonEncodingRetainingSectionTest.java
----------------------------------------------------------------------
diff --git a/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/type/messaging/NonEncodingRetainingSectionTest.java b/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/type/messaging/NonEncodingRetainingSectionTest.java
deleted file mode 100644
index 5ec08ab..0000000
--- a/broker-plugins/amqp-1-0-protocol/src/test/java/org/apache/qpid/server/protocol/v1_0/type/messaging/NonEncodingRetainingSectionTest.java
+++ /dev/null
@@ -1,50 +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.server.protocol.v1_0.type.messaging;
-
-import com.google.common.cache.Cache;
-import com.google.common.cache.CacheBuilder;
-
-import org.apache.qpid.test.utils.QpidTestCase;
-
-public class NonEncodingRetainingSectionTest extends QpidTestCase
-{
- public void testGetCached()
- {
- Cache<String, String> original = NonEncodingRetainingSection.getStringCache();
- Cache<String, String> cache = CacheBuilder.newBuilder().maximumSize(1).build();
- NonEncodingRetainingSection.setCache(cache);
-
- try
- {
- String string1 = NonEncodingRetainingSection.getCached(new String(new char[]{'t', 'e', 's', 't'}));
- String string2 = NonEncodingRetainingSection.getCached(new String(new char[]{'t', 'e', 's', 't'}));
-
- assertEquals(string1, string2);
- assertSame(string1, string2);
- }
- finally
- {
- cache.cleanUp();
- NonEncodingRetainingSection.setCache(original);
- }
- }
-}
---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscribe@qpid.apache.org
For additional commands, e-mail: commits-help@qpid.apache.org