diff options
9 files changed, 63 insertions, 90 deletions
diff --git a/docproc/src/main/java/com/yahoo/docproc/Call.java b/docproc/src/main/java/com/yahoo/docproc/Call.java index 3840de63e13..40ca4845d63 100644 --- a/docproc/src/main/java/com/yahoo/docproc/Call.java +++ b/docproc/src/main/java/com/yahoo/docproc/Call.java @@ -126,17 +126,11 @@ public class Call implements Cloneable { private void unwrapSchemaMapping(Processing processing) { - final List<DocumentOperation> documentOperations = processing.getDocumentOperations(); - + List<DocumentOperation> documentOperations = processing.getDocumentOperations(); for (int i = 0; i < documentOperations.size(); i++) { - DocumentOperation documentOperation = documentOperations.get(i); - - if (documentOperation instanceof DocumentPut) { - DocumentPut putOperation = (DocumentPut) documentOperation; - - if (putOperation.getDocument() instanceof DocumentOperationWrapper) { - DocumentOperationWrapper proxy = (DocumentOperationWrapper) putOperation.getDocument(); - documentOperations.set(i, new DocumentPut(putOperation, ((DocumentPut)proxy.getWrappedDocumentOperation()).getDocument())); + if (documentOperations.get(i) instanceof DocumentPut putOperation) { + if (putOperation.getDocument() instanceof DocumentOperationWrapper proxy) { + documentOperations.set(i, new DocumentPut(putOperation, ((DocumentPut) proxy.getWrappedDocumentOperation()).getDocument())); } } } diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/MbusRequestContext.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/MbusRequestContext.java index caaff318cdd..e1e6164206f 100644 --- a/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/MbusRequestContext.java +++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/MbusRequestContext.java @@ -32,6 +32,8 @@ import java.util.List; import java.util.concurrent.atomic.AtomicBoolean; import java.util.logging.Logger; +import static java.util.logging.Level.WARNING; + /** * @author Einar M R Rosenvinge */ @@ -68,7 +70,7 @@ public class MbusRequestContext implements RequestContext, ResponseHandler { @Override public List<Processing> getProcessings() { if (deserialized.getAndSet(true)) { - return Collections.emptyList(); + return List.of(); } return processingFactory.fromMessage(requestMsg); } @@ -143,19 +145,17 @@ public class MbusRequestContext implements RequestContext, ResponseHandler { @Override public String getServiceName() { String path = getUri().getPath(); - return path.substring(7, path.length()); + return path.substring(7); } @Override public boolean isProcessable() { - Message msg = requestMsg; - switch (msg.getType()) { - case DocumentProtocol.MESSAGE_PUTDOCUMENT: - case DocumentProtocol.MESSAGE_UPDATEDOCUMENT: - case DocumentProtocol.MESSAGE_REMOVEDOCUMENT: - return true; - } - return false; + return switch (requestMsg.getType()) { + case DocumentProtocol.MESSAGE_PUTDOCUMENT, + DocumentProtocol.MESSAGE_UPDATEDOCUMENT, + DocumentProtocol.MESSAGE_REMOVEDOCUMENT -> true; + default -> false; + }; } @Override @@ -180,14 +180,12 @@ public class MbusRequestContext implements RequestContext, ResponseHandler { private void dispatchRequest(Message msg, String uriPath, ResponseHandler handler) { try { new RequestDispatch() { - @Override protected Request newRequest() { return new MbusRequest(request, uriCache.computeIfAbsent(uriPath, __ -> URI.create("mbus://remotehost" + uriPath)), msg); } - @Override public ContentChannel handleResponse(Response response) { return handler.handleResponse(response); @@ -195,7 +193,7 @@ public class MbusRequestContext implements RequestContext, ResponseHandler { }.dispatch(); } catch (Exception e) { dispatchResponse(Response.Status.INTERNAL_SERVER_ERROR); - e.printStackTrace(); + log.log(WARNING, "Failed to dispatch request", e); } } diff --git a/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/ProcessingFactory.java b/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/ProcessingFactory.java index 0a7836ff6d3..aac22af1d11 100644 --- a/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/ProcessingFactory.java +++ b/docproc/src/main/java/com/yahoo/docproc/jdisc/messagebus/ProcessingFactory.java @@ -1,10 +1,6 @@ // Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. package com.yahoo.docproc.jdisc.messagebus; -import java.time.Instant; -import java.util.ArrayList; -import java.util.List; -import java.util.logging.Logger; import com.yahoo.component.ComponentId; import com.yahoo.component.provider.ComponentRegistry; import com.yahoo.concurrent.SystemTimer; @@ -22,6 +18,10 @@ import com.yahoo.documentapi.messagebus.protocol.RemoveDocumentMessage; import com.yahoo.documentapi.messagebus.protocol.UpdateDocumentMessage; import com.yahoo.messagebus.Message; +import java.util.ArrayList; +import java.util.List; +import java.util.logging.Logger; + /** * @author Simon Thoresen Hult */ @@ -41,32 +41,28 @@ class ProcessingFactory { } public List<Processing> fromMessage(Message message) { - List<Processing> processings = new ArrayList<>(); - switch (message.getType()) { - case DocumentProtocol.MESSAGE_PUTDOCUMENT: { + return switch (message.getType()) { + case DocumentProtocol.MESSAGE_PUTDOCUMENT -> { PutDocumentMessage putMessage = (PutDocumentMessage) message; DocumentPut putOperation = new DocumentPut(createPutDocument(putMessage)); putOperation.setCondition(putMessage.getCondition()); putOperation.setCreateIfNonExistent(putMessage.getCreateIfNonExistent()); - processings.add(createProcessing(putOperation, message)); - break; + yield List.of(createProcessing(putOperation, message)); } - case DocumentProtocol.MESSAGE_UPDATEDOCUMENT: { + case DocumentProtocol.MESSAGE_UPDATEDOCUMENT -> { UpdateDocumentMessage updateMessage = (UpdateDocumentMessage) message; DocumentUpdate updateOperation = updateMessage.getDocumentUpdate(); updateOperation.setCondition(updateMessage.getCondition()); - processings.add(createProcessing(updateOperation, message)); - break; + yield List.of(createProcessing(updateOperation, message)); } - case DocumentProtocol.MESSAGE_REMOVEDOCUMENT: { + case DocumentProtocol.MESSAGE_REMOVEDOCUMENT -> { RemoveDocumentMessage removeMessage = (RemoveDocumentMessage) message; DocumentRemove removeOperation = new DocumentRemove(removeMessage.getDocumentId()); removeOperation.setCondition(removeMessage.getCondition()); - processings.add(createProcessing(removeOperation, message)); - break; + yield List.of(createProcessing(removeOperation, message)); } - } - return processings; + default -> List.of(); + }; } private Document createPutDocument(PutDocumentMessage msg) { diff --git a/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocument.java b/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocument.java index 5ef97afec55..f72fb691852 100644 --- a/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocument.java +++ b/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocument.java @@ -46,7 +46,7 @@ public class ProxyDocument extends Document implements DocumentOperationWrapper private final Map<String, String> fieldMap; private final Set<String> fieldsAllowed = new HashSet<>(); private final String docProcName; - private Document doc; + private final Document doc; public ProxyDocument(DocumentProcessor docProc, Document doc, Map<String, String> fieldMap) { super(doc); diff --git a/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocumentUpdate.java b/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocumentUpdate.java index 642ae216687..56aaf7e3f56 100644 --- a/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocumentUpdate.java +++ b/docproc/src/main/java/com/yahoo/docproc/proxy/ProxyDocumentUpdate.java @@ -20,13 +20,13 @@ import java.util.Map; */ public class ProxyDocumentUpdate extends DocumentUpdate implements DocumentOperationWrapper { - private DocumentUpdate docU; + private final DocumentUpdate docU; /** * The field name map for schema mapping. The key is the field name that the docproc uses. * The value is the actual name of the field in the document. */ - private Map<String, String> fieldMap; + private final Map<String, String> fieldMap; public ProxyDocumentUpdate(DocumentUpdate docUpd, Map<String, String> fieldMap) { super(docUpd.getType(), docUpd.getId().toString()+"-schemamappedupdate"); diff --git a/document/src/main/java/com/yahoo/document/ExtendedField.java b/document/src/main/java/com/yahoo/document/ExtendedField.java index 7b897bd9845..7fc79527448 100644 --- a/document/src/main/java/com/yahoo/document/ExtendedField.java +++ b/document/src/main/java/com/yahoo/document/ExtendedField.java @@ -5,12 +5,12 @@ import com.yahoo.document.datatypes.FieldValue; import com.yahoo.document.datatypes.StructuredFieldValue; /** - * This adds an Extractor to the Field that can be used to get access the backed value + * This adds an Extractor to the Field that can be used to access the backed value * used in the concrete document types. * @author baldersheim */ public class ExtendedField extends Field { - public static interface Extract { + public interface Extract { Object get(StructuredFieldValue doc); void set(StructuredFieldValue doc, Object value); } diff --git a/document/src/main/java/com/yahoo/document/datatypes/LongFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/LongFieldValue.java index 0dedfa72fc4..2f021632aef 100644 --- a/document/src/main/java/com/yahoo/document/datatypes/LongFieldValue.java +++ b/document/src/main/java/com/yahoo/document/datatypes/LongFieldValue.java @@ -26,7 +26,7 @@ public final class LongFieldValue extends NumericFieldValue { private long value; public LongFieldValue() { - this(0l); + this(0L); } public LongFieldValue(long value) { @@ -50,7 +50,7 @@ public final class LongFieldValue extends NumericFieldValue { @Override public void clear() { - value = 0l; + value = 0L; } @Override diff --git a/document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java b/document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java index 01cd092bf57..18041ad1fab 100644 --- a/document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java +++ b/document/src/main/java/com/yahoo/document/datatypes/MapFieldValue.java @@ -22,7 +22,7 @@ import java.util.HashSet; /** - * Vespa map. Backed by and and parametrized by FieldValue + * Vespa map. Backed by and parametrized by FieldValue * * @author vegardh */ diff --git a/document/src/test/java/com/yahoo/document/DocumentTestCase.java b/document/src/test/java/com/yahoo/document/DocumentTestCase.java index e5f6453c581..d63ac7c194e 100644 --- a/document/src/test/java/com/yahoo/document/DocumentTestCase.java +++ b/document/src/test/java/com/yahoo/document/DocumentTestCase.java @@ -30,12 +30,15 @@ import java.io.IOException; import java.nio.ByteBuffer; import java.nio.charset.StandardCharsets; import java.util.Arrays; +import java.util.List; import java.util.Map; +import java.util.Set; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertNull; +import static org.junit.Assert.assertThrows; import static org.junit.Assert.assertTrue; import static org.junit.Assert.fail; @@ -550,8 +553,8 @@ public class DocumentTestCase extends DocumentTestCaseBase { doc.iterateNested(path, 0, handler); FieldValue fv = doc.getRecursiveValue("l1s1.ss.iarray"); - assertTrue(((Array)fv).contains(new IntegerFieldValue(32))); - assertEquals(4, ((Array)fv).size()); + assertTrue(((Array<?>)fv).contains(new IntegerFieldValue(32))); + assertEquals(4, ((Array<?>)fv).size()); } { @@ -561,8 +564,8 @@ public class DocumentTestCase extends DocumentTestCaseBase { FieldValue fv = doc.getRecursiveValue("l1s1.ss.iarray"); - assertFalse(((Array)fv).contains(Integer.valueOf(12))); - assertEquals(3, ((Array)fv).size()); + assertFalse(((Array<?>)fv).contains(12)); + assertEquals(3, ((Array<?>)fv).size()); } { @@ -571,7 +574,7 @@ public class DocumentTestCase extends DocumentTestCaseBase { doc.iterateNested(path, 0, handler); FieldValue fv = doc.getRecursiveValue("l1s1.ss.iarray"); - assertEquals(0, ((Array)fv).size()); + assertEquals(0, ((Array<?>)fv).size()); } { @@ -580,7 +583,7 @@ public class DocumentTestCase extends DocumentTestCaseBase { doc.iterateNested(path, 0, handler); FieldValue fv = doc.getRecursiveValue("l1s1.structmap.value.smap"); - assertFalse(((MapFieldValue)fv).contains(new StringFieldValue("leonardo"))); + assertFalse(((MapFieldValue<?, ?>)fv).contains(new StringFieldValue("leonardo"))); } { @@ -589,7 +592,7 @@ public class DocumentTestCase extends DocumentTestCaseBase { doc.iterateNested(path, 0, handler); FieldValue fv = doc.getRecursiveValue("l1s1.wset"); - assertFalse(((WeightedSet)fv).contains(new StringFieldValue("foo"))); + assertFalse(((WeightedSet<?>)fv).contains(new StringFieldValue("foo"))); } } @@ -648,7 +651,7 @@ public class DocumentTestCase extends DocumentTestCaseBase { public void validateCppDoc(Document doc) { validateCppDocNotMap(doc); - MapFieldValue map = (MapFieldValue)doc.getFieldValue("mapfield"); + MapFieldValue<?, ?> map = (MapFieldValue<?, ?>)doc.getFieldValue("mapfield"); assertEquals(map.get(new StringFieldValue("foo1")), new StringFieldValue("bar1")); assertEquals(map.get(new StringFieldValue("foo2")), new StringFieldValue("bar2")); } @@ -734,7 +737,7 @@ public class DocumentTestCase extends DocumentTestCaseBase { } @Test - public void testSerializeDeserialize() { + public void testSerializeDeserialize() throws IOException { setUpSertestDocType(); Document doc = getSertestDocument(); @@ -746,11 +749,8 @@ public class DocumentTestCase extends DocumentTestCaseBase { data.flip(); - try { - FileOutputStream fos = new FileOutputStream("src/test/files/testser.dat"); + try (FileOutputStream fos = new FileOutputStream("src/test/files/testser.dat")) { fos.write(data.array(), 0, data.remaining()); - fos.close(); - } catch (Exception e) { } Document doc2 = docMan.createDocument(data); @@ -965,12 +965,11 @@ public class DocumentTestCase extends DocumentTestCaseBase { assertEquals(parsed.get("id"), "id:ns:sertest::foobar"); assertTrue(parsed.get("fields") instanceof Map); Object fieldMap = parsed.get("fields"); - if (fieldMap instanceof Map) { - Map<?, ?> fields = (Map<?, ?>) fieldMap; + if (fieldMap instanceof Map<?, ?> fields) { assertEquals(fields.get("mailid"), "emailfromalicetobob"); assertEquals(fields.get("date"), -2013512400); assertTrue(fields.get("docindoc") instanceof Map); - assertTrue(fields.keySet().containsAll(Arrays.asList("mailid", "date", "attachmentcount", "rawfield", "weightedfield", "docindoc", "mapfield", "myboolfield"))); + assertTrue(fields.keySet().containsAll(List.of("mailid", "date", "attachmentcount", "rawfield", "weightedfield", "docindoc", "mapfield", "myboolfield"))); } } @@ -1095,24 +1094,15 @@ public class DocumentTestCase extends DocumentTestCaseBase { @Test public void testRequireThatDocumentWithIdSchemaIdChecksType() { DocumentType docType = new DocumentType("mytype"); - try { - new Document(docType, "id:namespace:mytype::foo"); - } catch (Exception e) { - fail(); - } - - try { - new Document(docType, "id:namespace:wrong-type::foo"); - fail(); - } catch (IllegalArgumentException e) { - } + new Document(docType, "id:namespace:mytype::foo"); + assertThrows(IllegalArgumentException.class, + () -> new Document(docType, "id:namespace:wrong-type::foo")); } - private class MyDocumentReader implements DocumentReader { + private static class MyDocumentReader implements DocumentReader { @Override - public void read(Document document) { - } + public void read(Document document) { } @Override public DocumentId readDocumentId() { @@ -1129,22 +1119,17 @@ public class DocumentTestCase extends DocumentTestCaseBase { @Test public void testRequireThatChangingDocumentTypeChecksId() { MyDocumentReader reader = new MyDocumentReader(); + Document doc = new Document(reader); doc.setId(new DocumentId("id:namespace:mytype::foo")); DocumentType docType = new DocumentType("mytype"); - try { - doc.setDataType(docType); - } catch (Exception e) { - fail(); - } - doc = new Document(reader); - doc.setId(new DocumentId("id:namespace:mytype::foo")); + doc.setDataType(docType); + + Document notOkDoc = new Document(reader); + notOkDoc.setId(new DocumentId("id:namespace:mytype::foo")); DocumentType wrongType = new DocumentType("wrongtype"); - try { - doc.setDataType(wrongType); - fail(); - } catch (IllegalArgumentException e) { - } + assertThrows(IllegalArgumentException.class, + () -> notOkDoc.setDataType(wrongType)); } @Test |