You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucene.apache.org by sh...@apache.org on 2017/06/21 07:10:42 UTC
[16/50] [abbrv] lucene-solr:feature/autoscaling: SOLR:10779:
JavaBinCodec should use close consistently rather than having marshal() and
close() call finish() (which closes the underlying stream)
SOLR:10779: JavaBinCodec should use close consistently rather than having marshal() and close() call finish() (which closes the underlying stream)
commit b31178e0c33dbfe81fbc1aec705b3dae3cc895ad
Author: Erick <er...@apache.org>
Date: Sun Jun 18 22:34:21 2017 -0700
SOLR-10779: JavaBinCodec should use close consistently rather than having marshal() and close() call finish() (which closes the underlying stream)
Project: http://git-wip-us.apache.org/repos/asf/lucene-solr/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucene-solr/commit/64093d6d
Tree: http://git-wip-us.apache.org/repos/asf/lucene-solr/tree/64093d6d
Diff: http://git-wip-us.apache.org/repos/asf/lucene-solr/diff/64093d6d
Branch: refs/heads/feature/autoscaling
Commit: 64093d6df10a426551a0aeb4c157f9e05e5bf7bf
Parents: 943bf5a
Author: Erick <er...@apache.org>
Authored: Sun Jun 18 22:35:57 2017 -0700
Committer: Erick <er...@apache.org>
Committed: Sun Jun 18 22:35:57 2017 -0700
----------------------------------------------------------------------
solr/CHANGES.txt | 3 +
.../solr/response/BinaryResponseWriter.java | 12 ++-
.../java/org/apache/solr/search/CursorMark.java | 21 ++---
.../solr/response/TestBinaryResponseWriter.java | 5 +-
.../response/TestJavabinTupleStreamParser.java | 20 +++--
.../apache/solr/response/TestPushWriter.java | 8 +-
.../transform/TestSubQueryTransformer.java | 28 +++---
.../apache/solr/update/AddBlockUpdateTest.java | 10 ++-
.../impl/StreamingBinaryResponseParser.java | 5 +-
.../request/JavaBinUpdateRequestCodec.java | 12 +--
.../apache/solr/common/util/JavaBinCodec.java | 17 ++--
.../solr/common/util/TestJavaBinCodec.java | 95 ++++++++++----------
.../solr/common/util/TestNamedListCodec.java | 57 +++++++-----
13 files changed, 160 insertions(+), 133 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/64093d6d/solr/CHANGES.txt
----------------------------------------------------------------------
diff --git a/solr/CHANGES.txt b/solr/CHANGES.txt
index 82e2033..c65db37 100644
--- a/solr/CHANGES.txt
+++ b/solr/CHANGES.txt
@@ -277,6 +277,9 @@ Other Changes
* SOLR-10800: Factor out HttpShardHandler.transformReplicasToShardUrls from HttpShardHandler.prepDistributed.
(Domenico Fabio Marino, Christine Poerschke)
+* SOLR-10779: JavaBinCodec should use close consistently rather than having marshal() and close() call finish()
+ (which closes the underlying stream). (Erick Erickson)
+
================== 6.7.0 ==================
Consult the LUCENE_CHANGES.txt file for additional, low level, changes in this release.
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/64093d6d/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java b/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java
index 11c6074..b841a03 100644
--- a/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java
+++ b/solr/core/src/java/org/apache/solr/response/BinaryResponseWriter.java
@@ -48,7 +48,9 @@ public class BinaryResponseWriter implements BinaryQueryResponseWriter {
public void write(OutputStream out, SolrQueryRequest req, SolrQueryResponse response) throws IOException {
Resolver resolver = new Resolver(req, response.getReturnFields());
if (req.getParams().getBool(CommonParams.OMIT_HEADER, false)) response.removeResponseHeader();
- new JavaBinCodec(resolver).setWritableDocFields(resolver).marshal(response.getValues(), out);
+ try (JavaBinCodec jbc = new JavaBinCodec(resolver)) {
+ jbc.setWritableDocFields(resolver).marshal(response.getValues(), out);
+ }
}
@Override
@@ -160,10 +162,14 @@ public class BinaryResponseWriter implements BinaryQueryResponseWriter {
Resolver resolver = new Resolver(req, rsp.getReturnFields());
ByteArrayOutputStream out = new ByteArrayOutputStream();
- new JavaBinCodec(resolver).setWritableDocFields(resolver).marshal(rsp.getValues(), out);
+ try (JavaBinCodec jbc = new JavaBinCodec(resolver)) {
+ jbc.setWritableDocFields(resolver).marshal(rsp.getValues(), out);
+ }
InputStream in = out.toInputStream();
- return (NamedList<Object>) new JavaBinCodec(resolver).unmarshal(in);
+ try (JavaBinCodec jbc = new JavaBinCodec(resolver)) {
+ return (NamedList<Object>) jbc.unmarshal(in);
+ }
}
catch (Exception ex) {
throw new RuntimeException(ex);
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/64093d6d/solr/core/src/java/org/apache/solr/search/CursorMark.java
----------------------------------------------------------------------
diff --git a/solr/core/src/java/org/apache/solr/search/CursorMark.java b/solr/core/src/java/org/apache/solr/search/CursorMark.java
index 38fced5..2a63da5 100644
--- a/solr/core/src/java/org/apache/solr/search/CursorMark.java
+++ b/solr/core/src/java/org/apache/solr/search/CursorMark.java
@@ -183,9 +183,8 @@ public final class CursorMark {
List<Object> pieces = null;
try {
final byte[] rawData = Base64.base64ToByteArray(serialized);
- ByteArrayInputStream in = new ByteArrayInputStream(rawData);
- try {
- pieces = (List<Object>) new JavaBinCodec().unmarshal(in);
+ try (JavaBinCodec jbc = new JavaBinCodec(); ByteArrayInputStream in = new ByteArrayInputStream(rawData)){
+ pieces = (List<Object>) jbc.unmarshal(in);
boolean b = false;
for (Object o : pieces) {
if (o instanceof BytesRefBuilder || o instanceof BytesRef || o instanceof String) {
@@ -196,8 +195,6 @@ public final class CursorMark {
in.reset();
pieces = (List<Object>) new JavaBinCodec().unmarshal(in);
}
- } finally {
- in.close();
}
} catch (Exception ex) {
throw new SolrException(ErrorCode.BAD_REQUEST,
@@ -259,19 +256,13 @@ public final class CursorMark {
// the type/name/dir from the SortFields (or a hashCode to act as a checksum)
// could help provide more validation beyond just the number of clauses.
- try {
- ByteArrayOutputStream out = new ByteArrayOutputStream(256);
- try {
- new JavaBinCodec().marshal(marshalledValues, out);
- byte[] rawData = out.toByteArray();
- return Base64.byteArrayToBase64(rawData, 0, rawData.length);
- } finally {
- out.close();
- }
+ try (JavaBinCodec jbc = new JavaBinCodec(); ByteArrayOutputStream out = new ByteArrayOutputStream(256)) {
+ jbc.marshal(marshalledValues, out);
+ byte[] rawData = out.toByteArray();
+ return Base64.byteArrayToBase64(rawData, 0, rawData.length);
} catch (Exception ex) {
throw new SolrException(ErrorCode.SERVER_ERROR,
"Unable to format search after totem", ex);
-
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/64093d6d/solr/core/src/test/org/apache/solr/response/TestBinaryResponseWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/response/TestBinaryResponseWriter.java b/solr/core/src/test/org/apache/solr/response/TestBinaryResponseWriter.java
index 05bf153..ae85d52 100644
--- a/solr/core/src/test/org/apache/solr/response/TestBinaryResponseWriter.java
+++ b/solr/core/src/test/org/apache/solr/response/TestBinaryResponseWriter.java
@@ -60,7 +60,10 @@ public class TestBinaryResponseWriter extends AbstractSolrTestCase {
BinaryQueryResponseWriter writer = (BinaryQueryResponseWriter) h.getCore().getQueryResponseWriter("javabin");
ByteArrayOutputStream baos = new ByteArrayOutputStream();
writer.write(baos, req, rsp);
- NamedList res = (NamedList) new JavaBinCodec().unmarshal(new ByteArrayInputStream(baos.toByteArray()));
+ NamedList res;
+ try (JavaBinCodec jbc = new JavaBinCodec()) {
+ res = (NamedList) jbc.unmarshal(new ByteArrayInputStream(baos.toByteArray()));
+ }
SolrDocumentList docs = (SolrDocumentList) res.get("response");
for (Object doc : docs) {
SolrDocument document = (SolrDocument) doc;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/64093d6d/solr/core/src/test/org/apache/solr/response/TestJavabinTupleStreamParser.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/response/TestJavabinTupleStreamParser.java b/solr/core/src/test/org/apache/solr/response/TestJavabinTupleStreamParser.java
index d710446..2652314 100644
--- a/solr/core/src/test/org/apache/solr/response/TestJavabinTupleStreamParser.java
+++ b/solr/core/src/test/org/apache/solr/response/TestJavabinTupleStreamParser.java
@@ -169,15 +169,19 @@ public class TestJavabinTupleStreamParser extends SolrTestCaseJ4 {
public void testSolrDocumentList() throws IOException {
SolrQueryResponse response = new SolrQueryResponse();
SolrDocumentList l = constructSolrDocList(response);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- new JavaBinCodec().marshal(response.getValues(), baos);
+ try (JavaBinCodec jbc = new JavaBinCodec(); ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+ jbc.marshal(response.getValues(), baos);
+ }
byte[] bytes = serialize(response.getValues());
- Object o = new JavaBinCodec().unmarshal(new ByteArrayInputStream(bytes));
+ try (JavaBinCodec jbc = new JavaBinCodec()) {
+ jbc.unmarshal(new ByteArrayInputStream(bytes));
+ }
List list = new ArrayList<>();
Map m = null;
- JavabinTupleStreamParser parser = new JavabinTupleStreamParser(new ByteArrayInputStream(bytes), false);
- while ((m = parser.next()) != null) {
- list.add(m);
+ try (JavabinTupleStreamParser parser = new JavabinTupleStreamParser(new ByteArrayInputStream(bytes), false)) {
+ while ((m = parser.next()) != null) {
+ list.add(m);
+ }
}
assertEquals(l.size(), list.size());
for(int i =0;i<list.size();i++){
@@ -189,7 +193,9 @@ public class TestJavabinTupleStreamParser extends SolrTestCaseJ4 {
SolrQueryResponse response = new SolrQueryResponse();
response.getValues().add("results", o);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
- new JavaBinCodec().marshal(response.getValues(), baos);
+ try (JavaBinCodec jbc = new JavaBinCodec()) {
+ jbc.marshal(response.getValues(), baos);
+ }
return baos.toByteArray();
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/64093d6d/solr/core/src/test/org/apache/solr/response/TestPushWriter.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/response/TestPushWriter.java b/solr/core/src/test/org/apache/solr/response/TestPushWriter.java
index 043fe92..9a02ee9 100644
--- a/solr/core/src/test/org/apache/solr/response/TestPushWriter.java
+++ b/solr/core/src/test/org/apache/solr/response/TestPushWriter.java
@@ -53,8 +53,12 @@ public class TestPushWriter extends SolrTestCaseJ4 {
log.info(new String(baos.toByteArray(), "UTF-8"));
Map m = (Map) Utils.fromJSON(baos.toByteArray());
checkValues(m);
- writeData(new JavaBinCodec(baos= new ByteArrayOutputStream(), null));
- m = (Map) new JavaBinCodec().unmarshal(new ByteArrayInputStream(baos.toByteArray()));
+ try (JavaBinCodec jbc = new JavaBinCodec(baos= new ByteArrayOutputStream(), null)) {
+ writeData(jbc);
+ try (JavaBinCodec jbcUn = new JavaBinCodec()) {
+ m = (Map) jbcUn.unmarshal(new ByteArrayInputStream(baos.toByteArray()));
+ }
+ }
checkValues(m);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/64093d6d/solr/core/src/test/org/apache/solr/response/transform/TestSubQueryTransformer.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/response/transform/TestSubQueryTransformer.java b/solr/core/src/test/org/apache/solr/response/transform/TestSubQueryTransformer.java
index e9af1cf..a9e5fa9 100644
--- a/solr/core/src/test/org/apache/solr/response/transform/TestSubQueryTransformer.java
+++ b/solr/core/src/test/org/apache/solr/response/transform/TestSubQueryTransformer.java
@@ -372,28 +372,27 @@ public class TestSubQueryTransformer extends SolrTestCaseJ4 {
johnTwoFL.setParams(params);
final NamedList<Object> unmarshalled;
- {
- SolrCore core = johnTwoFL.getCore();
- SolrQueryResponse rsp = new SolrQueryResponse();
- SolrRequestInfo.setRequestInfo(new SolrRequestInfo(johnTwoFL, rsp));
-
+ SolrCore core = johnTwoFL.getCore();
+ SolrQueryResponse rsp = new SolrQueryResponse();
+ SolrRequestInfo.setRequestInfo(new SolrRequestInfo(johnTwoFL, rsp));
+
SolrQueryResponse response = h.queryAndResponse(
johnTwoFL.getParams().get(CommonParams.QT), johnTwoFL);
-
+
BinaryQueryResponseWriter responseWriter = (BinaryQueryResponseWriter) core.getQueryResponseWriter(johnTwoFL);
ByteArrayOutputStream bytes = new ByteArrayOutputStream();
- responseWriter.write(bytes,johnTwoFL,response);
-
- unmarshalled = (NamedList<Object>) new JavaBinCodec().unmarshal(
- new ByteArrayInputStream(bytes.toByteArray()));
-
- johnTwoFL.close();
- SolrRequestInfo.clearRequestInfo();
+ responseWriter.write(bytes, johnTwoFL, response);
+
+ try (JavaBinCodec jbc = new JavaBinCodec()) {
+ unmarshalled = (NamedList<Object>) jbc.unmarshal(
+ new ByteArrayInputStream(bytes.toByteArray()));
}
+
+ johnTwoFL.close();
+ SolrRequestInfo.clearRequestInfo();
SolrDocumentList resultDocs = (SolrDocumentList)(unmarshalled.get("response"));
- {
Map<String,String> engText = new HashMap<>();
engText.put("text_t", "These guys develop stuff");
@@ -415,7 +414,6 @@ public class TestSubQueryTransformer extends SolrTestCaseJ4 {
}
}
}
- }
}
@Test
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/64093d6d/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java
----------------------------------------------------------------------
diff --git a/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java b/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java
index 9c791c2..cbd91c6 100644
--- a/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java
+++ b/solr/core/src/test/org/apache/solr/update/AddBlockUpdateTest.java
@@ -412,11 +412,15 @@ public class AddBlockUpdateTest extends SolrTestCaseJ4 {
}
ByteArrayOutputStream os = new ByteArrayOutputStream();
- new JavaBinCodec().marshal(topDocument, os);
+ try (JavaBinCodec jbc = new JavaBinCodec()) {
+ jbc.marshal(topDocument, os);
+ }
byte[] buffer = os.toByteArray();
//now read the Object back
- InputStream is = new ByteArrayInputStream(buffer);
- SolrInputDocument result = (SolrInputDocument) new JavaBinCodec().unmarshal(is);
+ SolrInputDocument result;
+ try (JavaBinCodec jbc = new JavaBinCodec(); InputStream is = new ByteArrayInputStream(buffer)) {
+ result = (SolrInputDocument) jbc.unmarshal(is);
+ }
assertEquals(2, result.size());
assertEquals("v1", result.getFieldValue("parent_f1"));
assertEquals("v2", result.getFieldValue("parent_f2"));
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/64093d6d/solr/solrj/src/java/org/apache/solr/client/solrj/impl/StreamingBinaryResponseParser.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/StreamingBinaryResponseParser.java b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/StreamingBinaryResponseParser.java
index 14be1f3..5f88672 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/impl/StreamingBinaryResponseParser.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/impl/StreamingBinaryResponseParser.java
@@ -45,8 +45,7 @@ public class StreamingBinaryResponseParser extends BinaryResponseParser {
@Override
public NamedList<Object> processResponse(InputStream body, String encoding) {
- try {
- JavaBinCodec codec = new JavaBinCodec() {
+ try (JavaBinCodec codec = new JavaBinCodec() {
@Override
public SolrDocument readSolrDocument(DataInputInputStream dis) throws IOException {
@@ -80,7 +79,7 @@ public class StreamingBinaryResponseParser extends BinaryResponseParser {
}
return solrDocs;
}
- };
+ };) {
return (NamedList<Object>) codec.unmarshal(body);
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/64093d6d/solr/solrj/src/java/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java b/solr/solrj/src/java/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java
index afa746e..5759a6c 100644
--- a/solr/solrj/src/java/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java
+++ b/solr/solrj/src/java/org/apache/solr/client/solrj/request/JavaBinUpdateRequestCodec.java
@@ -87,8 +87,9 @@ public class JavaBinUpdateRequestCodec {
}
nl.add("docs", docIter);
}
- JavaBinCodec codec = new JavaBinCodec();
- codec.marshal(nl, os);
+ try (JavaBinCodec codec = new JavaBinCodec()) {
+ codec.marshal(nl, os);
+ }
}
/**
@@ -110,7 +111,7 @@ public class JavaBinUpdateRequestCodec {
Map<String,Map<String,Object>> delByIdMap;
List<String> delByQ;
final NamedList[] namedList = new NamedList[1];
- JavaBinCodec codec = new JavaBinCodec() {
+ try (JavaBinCodec codec = new JavaBinCodec() {
// NOTE: this only works because this is an anonymous inner class
// which will only ever be used on a single stream -- if this class
@@ -189,9 +190,10 @@ public class JavaBinUpdateRequestCodec {
return Collections.EMPTY_LIST;
}
- };
+ };) {
- codec.unmarshal(is);
+ codec.unmarshal(is);
+ }
// NOTE: if the update request contains only delete commands the params
// must be loaded now
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/64093d6d/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java b/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java
index a2400f3..8f86e4c 100644
--- a/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java
+++ b/solr/solrj/src/java/org/apache/solr/common/util/JavaBinCodec.java
@@ -150,11 +150,12 @@ public class JavaBinCodec implements PushWriter {
}
public void marshal(Object nl, OutputStream os) throws IOException {
- initWrite(os);
try {
+ initWrite(os);
writeVal(nl);
} finally {
- finish();
+ alreadyMarshalled = true;
+ daos.flushBuffer();
}
}
@@ -164,11 +165,6 @@ public class JavaBinCodec implements PushWriter {
daos.writeByte(VERSION);
}
- protected void finish() throws IOException {
- closed = true;
- daos.flushBuffer();
- alreadyMarshalled = true;
- }
/** expert: sets a new output stream */
public void init(FastOutputStream os) {
@@ -1199,11 +1195,10 @@ public class JavaBinCodec implements PushWriter {
}
}
- private boolean closed;
-
@Override
public void close() throws IOException {
- if (closed) return;
- finish();
+ if (daos != null) {
+ daos.flushBuffer();
+ }
}
}
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/64093d6d/solr/solrj/src/test/org/apache/solr/common/util/TestJavaBinCodec.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/common/util/TestJavaBinCodec.java b/solr/solrj/src/test/org/apache/solr/common/util/TestJavaBinCodec.java
index 16ace15..e60d8c7 100644
--- a/solr/solrj/src/test/org/apache/solr/common/util/TestJavaBinCodec.java
+++ b/solr/solrj/src/test/org/apache/solr/common/util/TestJavaBinCodec.java
@@ -55,11 +55,13 @@ public class TestJavaBinCodec extends SolrTestCaseJ4 {
public void testStrings() throws Exception {
for (int i = 0; i < 10000 * RANDOM_MULTIPLIER; i++) {
String s = TestUtil.randomUnicodeString(random());
- ByteArrayOutputStream os = new ByteArrayOutputStream();
- new JavaBinCodec().marshal(s, os);
- ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray());
- Object o = new JavaBinCodec().unmarshal(is);
- assertEquals(s, o);
+ try (JavaBinCodec jbcO = new JavaBinCodec(); ByteArrayOutputStream os = new ByteArrayOutputStream()) {
+ jbcO.marshal(s, os);
+ try (JavaBinCodec jbcI = new JavaBinCodec(); ByteArrayInputStream is = new ByteArrayInputStream(os.toByteArray())) {
+ Object o = jbcI.unmarshal(is);
+ assertEquals(s, o);
+ }
+ }
}
}
@@ -165,14 +167,13 @@ public class TestJavaBinCodec extends SolrTestCaseJ4 {
@Test
public void testBackCompat() throws IOException {
- JavaBinCodec javabin = new JavaBinCodec(){
+ try (InputStream is = getClass().getResourceAsStream(SOLRJ_JAVABIN_BACKCOMPAT_BIN); JavaBinCodec javabin = new JavaBinCodec(){
@Override
public List<Object> readIterator(DataInputInputStream fis) throws IOException {
return super.readIterator(fis);
}
- };
- try {
- InputStream is = getClass().getResourceAsStream(SOLRJ_JAVABIN_BACKCOMPAT_BIN);
+ };)
+ {
List<Object> unmarshaledObj = (List<Object>) javabin.unmarshal(is);
List<Object> matchObj = generateAllDataTypes();
compareObjects(unmarshaledObj, matchObj);
@@ -207,13 +208,13 @@ public class TestJavaBinCodec extends SolrTestCaseJ4 {
@Test
public void testBackCompatForSolrDocumentWithChildDocs() throws IOException {
- JavaBinCodec javabin = new JavaBinCodec(){
+ try (JavaBinCodec javabin = new JavaBinCodec(){
@Override
public List<Object> readIterator(DataInputInputStream fis) throws IOException {
return super.readIterator(fis);
}
- };
- try {
+ };)
+ {
InputStream is = getClass().getResourceAsStream(SOLRJ_JAVABIN_BACKCOMPAT_BIN_CHILD_DOCS);
SolrDocument sdoc = (SolrDocument) javabin.unmarshal(is);
SolrDocument matchSolrDoc = generateSolrDocumentWithChildDocs();
@@ -225,34 +226,30 @@ public class TestJavaBinCodec extends SolrTestCaseJ4 {
@Test
public void testForwardCompat() throws IOException {
- JavaBinCodec javabin = new JavaBinCodec();
- ByteArrayOutputStream os = new ByteArrayOutputStream();
+ try (JavaBinCodec javabin = new JavaBinCodec(); ByteArrayOutputStream os = new ByteArrayOutputStream()) {
- Object data = generateAllDataTypes();
- try {
- javabin.marshal(data, os);
- byte[] newFormatBytes = os.toByteArray();
+ Object data = generateAllDataTypes();
+ try {
+ javabin.marshal(data, os);
+ byte[] newFormatBytes = os.toByteArray();
- InputStream is = getClass().getResourceAsStream(SOLRJ_JAVABIN_BACKCOMPAT_BIN);
- byte[] currentFormatBytes = IOUtils.toByteArray(is);
+ InputStream is = getClass().getResourceAsStream(SOLRJ_JAVABIN_BACKCOMPAT_BIN);
+ byte[] currentFormatBytes = IOUtils.toByteArray(is);
- for (int i = 1; i < currentFormatBytes.length; i++) {//ignore the first byte. It is version information
- assertEquals(newFormatBytes[i], currentFormatBytes[i]);
- }
+ for (int i = 1; i < currentFormatBytes.length; i++) {//ignore the first byte. It is version information
+ assertEquals(newFormatBytes[i], currentFormatBytes[i]);
+ }
- } catch (IOException e) {
- throw e;
+ } catch (IOException e) {
+ throw e;
+ }
}
-
}
@Test
public void testForwardCompatForSolrDocumentWithChildDocs() throws IOException {
- JavaBinCodec javabin = new JavaBinCodec();
- ByteArrayOutputStream os = new ByteArrayOutputStream();
-
SolrDocument sdoc = generateSolrDocumentWithChildDocs();
- try {
+ try (JavaBinCodec javabin = new JavaBinCodec(); ByteArrayOutputStream os = new ByteArrayOutputStream()) {
javabin.marshal(sdoc, os);
byte[] newFormatBytes = os.toByteArray();
@@ -262,11 +259,9 @@ public class TestJavaBinCodec extends SolrTestCaseJ4 {
for (int i = 1; i < currentFormatBytes.length; i++) {//ignore the first byte. It is version information
assertEquals(newFormatBytes[i], currentFormatBytes[i]);
}
-
} catch (IOException e) {
throw e;
}
-
}
@Test
@@ -283,14 +278,16 @@ public class TestJavaBinCodec extends SolrTestCaseJ4 {
return getObject(getBytes(o));
}
private static byte[] getBytes(Object o) throws IOException {
- JavaBinCodec javabin = new JavaBinCodec();
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- javabin.marshal(o, baos);
- return baos.toByteArray();
+ try (JavaBinCodec javabin = new JavaBinCodec(); ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+ javabin.marshal(o, baos);
+ return baos.toByteArray();
+ }
}
private static Object getObject(byte[] bytes) throws IOException {
- return new JavaBinCodec().unmarshal(new ByteArrayInputStream(bytes));
+ try (JavaBinCodec jbc = new JavaBinCodec()) {
+ return jbc.unmarshal(new ByteArrayInputStream(bytes));
+ }
}
@@ -343,10 +340,15 @@ public class TestJavaBinCodec extends SolrTestCaseJ4 {
JavaBinCodec.StringCache stringCache = new JavaBinCodec.StringCache(new MapBackedCache<>(new HashMap<>()));
- m1 = (Map) new JavaBinCodec(null, stringCache).unmarshal(new ByteArrayInputStream(b1));
- m2 = (Map) new JavaBinCodec(null, stringCache).unmarshal(new ByteArrayInputStream(b2));
- l1 = new ArrayList<>(m1.keySet());
- l2 = new ArrayList<>(m2.keySet());
+ try (JavaBinCodec c1 = new JavaBinCodec(null, stringCache);
+ JavaBinCodec c2 = new JavaBinCodec(null, stringCache)) {
+
+ m1 = (Map) c1.unmarshal(new ByteArrayInputStream(b1));
+ m2 = (Map) c2.unmarshal(new ByteArrayInputStream(b2));
+
+ l1 = new ArrayList<>(m1.keySet());
+ l2 = new ArrayList<>(m2.keySet());
+ }
assertTrue(l1.get(0).equals(l2.get(0)));
assertTrue(l1.get(0) == l2.get(0));
assertTrue(l1.get(1).equals(l2.get(1)));
@@ -556,11 +558,12 @@ public class TestJavaBinCodec extends SolrTestCaseJ4 {
while (--iter >= 0) {
if (++bufnum >= buffers.length) bufnum = 0;
byte[] buf = buffers[bufnum];
- JavaBinCodec javabin = new JavaBinCodec(null, stringCache);
- FastInputStream in = new FastInputStream(empty, buf, 0, buf.length);
- Object o = javabin.unmarshal( in );
- if (o instanceof SolrDocument) {
- ret += ((SolrDocument) o).size();
+ try (JavaBinCodec javabin = new JavaBinCodec(null, stringCache)) {
+ FastInputStream in = new FastInputStream(empty, buf, 0, buf.length);
+ Object o = javabin.unmarshal(in);
+ if (o instanceof SolrDocument) {
+ ret += ((SolrDocument) o).size();
+ }
}
}
return ret;
http://git-wip-us.apache.org/repos/asf/lucene-solr/blob/64093d6d/solr/solrj/src/test/org/apache/solr/common/util/TestNamedListCodec.java
----------------------------------------------------------------------
diff --git a/solr/solrj/src/test/org/apache/solr/common/util/TestNamedListCodec.java b/solr/solrj/src/test/org/apache/solr/common/util/TestNamedListCodec.java
index ae2a036..5637ec5 100644
--- a/solr/solrj/src/test/org/apache/solr/common/util/TestNamedListCodec.java
+++ b/solr/solrj/src/test/org/apache/solr/common/util/TestNamedListCodec.java
@@ -31,7 +31,7 @@ import java.util.HashMap;
public class TestNamedListCodec extends LuceneTestCase {
public void testSimple() throws Exception{
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
NamedList nl = new NamedList();
Float fval = new Float( 10.01f );
Boolean bval = Boolean.TRUE;
@@ -74,10 +74,14 @@ public class TestNamedListCodec extends LuceneTestCase {
list.add(doc);
nl.add("zzz",doc);
-
- new JavaBinCodec(null).marshal(nl,baos);
- byte[] arr = baos.toByteArray();
- nl = (NamedList) new JavaBinCodec().unmarshal(new ByteArrayInputStream(arr));
+ byte[] arr;
+ try (JavaBinCodec jbc = new JavaBinCodec(null); ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+ jbc.marshal(nl, baos);
+ arr = baos.toByteArray();
+ }
+ try (JavaBinCodec jbc = new JavaBinCodec(); ByteArrayInputStream bais = new ByteArrayInputStream(arr)) {
+ nl = (NamedList) jbc.unmarshal(bais);
+ }
assertEquals(3, nl.size());
@@ -89,7 +93,7 @@ public class TestNamedListCodec extends LuceneTestCase {
}
public void testIterator() throws Exception{
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
NamedList nl = new NamedList();
Float fval = new Float( 10.01f );
Boolean bval = Boolean.TRUE;
@@ -114,17 +118,21 @@ public class TestNamedListCodec extends LuceneTestCase {
list.add(doc);
nl.add("zzz",list.iterator());
-
- new JavaBinCodec(null).marshal(nl,baos);
- byte[] arr = baos.toByteArray();
- nl = (NamedList) new JavaBinCodec().unmarshal(new ByteArrayInputStream(arr));
+ byte[] arr;
+ try (JavaBinCodec jbc = new JavaBinCodec(null); ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+ jbc.marshal(nl, baos);
+ arr = baos.toByteArray();
+ }
+ try (JavaBinCodec jbc = new JavaBinCodec(); ByteArrayInputStream bais = new ByteArrayInputStream(arr)) {
+ nl = (NamedList) jbc.unmarshal(bais);
+ }
List l = (List) nl.get("zzz");
assertEquals(list.size(), l.size());
}
public void testIterable() throws Exception {
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
+
NamedList r = new NamedList();
@@ -137,11 +145,14 @@ public class TestNamedListCodec extends LuceneTestCase {
r.add("more", "less");
r.add("values", map.values());
r.add("finally", "the end");
- new JavaBinCodec(null).marshal(r,baos);
- byte[] arr = baos.toByteArray();
+ byte[] arr;
+ try (JavaBinCodec jbc = new JavaBinCodec(null); ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+ jbc.marshal(r,baos);
+ arr = baos.toByteArray();
+ }
- try {
- NamedList result = (NamedList) new JavaBinCodec().unmarshal(new ByteArrayInputStream(arr));
+ try (JavaBinCodec jbc = new JavaBinCodec(); ByteArrayInputStream bais = new ByteArrayInputStream(arr)) {
+ NamedList result = (NamedList) jbc.unmarshal(bais);
assertTrue("result is null and it shouldn't be", result != null);
List keys = (List) result.get("keys");
assertTrue("keys is null and it shouldn't be", keys != null);
@@ -247,13 +258,16 @@ public class TestNamedListCodec extends LuceneTestCase {
for (int i=0; i<10000; i++) { // pump up the iterations for good stress testing
nl = rNamedList(3);
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- new JavaBinCodec(null).marshal(nl,baos);
- byte[] arr = baos.toByteArray();
+ byte[] arr;
+ try (JavaBinCodec jbc = new JavaBinCodec(); ByteArrayOutputStream baos = new ByteArrayOutputStream()) {
+ jbc.marshal(nl, baos);
+ arr = baos.toByteArray();
+ }
// System.out.println(arr.length);
- res = (NamedList) new JavaBinCodec().unmarshal(new ByteArrayInputStream(arr));
- cmp = BaseDistributedSearchTestCase.compare(nl, res, 0, null);
-
+ try (JavaBinCodec jbc = new JavaBinCodec(); ByteArrayInputStream bais = new ByteArrayInputStream(arr)) {
+ res = (NamedList) jbc.unmarshal(bais);
+ cmp = BaseDistributedSearchTestCase.compare(nl, res, 0, null);
+ }
if (cmp != null) {
System.out.println(nl);
System.out.println(res);
@@ -261,5 +275,4 @@ public class TestNamedListCodec extends LuceneTestCase {
}
}
}
-
}