summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--application/pom.xml6
-rw-r--r--application/src/main/java/com/yahoo/application/Application.java5
-rw-r--r--application/src/main/java/com/yahoo/application/container/Search.java2
-rw-r--r--application/src/test/java/com/yahoo/application/ApplicationFacade.java2
-rw-r--r--application/src/test/java/com/yahoo/application/ApplicationTest.java11
-rw-r--r--application/src/test/java/com/yahoo/application/container/processors/Rot13Processor.java1
-rw-r--r--chain/src/main/java/com/yahoo/component/chain/Chain.java3
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java1
-rw-r--r--config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModel.java1
-rw-r--r--container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java5
-rw-r--r--container-core/src/main/java/com/yahoo/container/handler/AccessLogRequestHandler.java2
-rw-r--r--container-core/src/main/java/com/yahoo/processing/handler/ProcessingTestDriver.java2
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/FilterBindingsProviderTest.java2
-rw-r--r--container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviderTest.java2
-rw-r--r--container-search/src/main/java/com/yahoo/prelude/querytransform/IndexCombinatorSearcher.java1
-rw-r--r--container-search/src/main/java/com/yahoo/search/federation/vespa/QueryMarshaller.java1
-rw-r--r--container-search/src/main/java/com/yahoo/search/result/DefaultErrorHit.java1
-rw-r--r--container-search/src/main/java/com/yahoo/search/searchchain/Execution.java8
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/SimpleDocumentProcessor.java1
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/util/JoinerDocumentProcessor.java5
-rw-r--r--docproc/src/main/java/com/yahoo/docproc/util/SplitterDocumentProcessor.java1
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/CallStackTestCase.java1
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java1
-rw-r--r--docproc/src/test/java/com/yahoo/docproc/util/SplitterJoinerTestCase.java1
-rw-r--r--document/pom.xml14
-rw-r--r--document/src/main/java/com/yahoo/document/Document.java1
-rw-r--r--document/src/main/java/com/yahoo/document/datatypes/FieldPathIteratorHandler.java26
-rw-r--r--document/src/main/java/com/yahoo/document/select/OrderingSpecification.java14
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/DocumentDeserializerFactory.java2
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java3
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializerHead.java1
-rw-r--r--document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializerHead.java1
-rw-r--r--document/src/main/java/com/yahoo/document/update/AddValueUpdate.java4
-rw-r--r--document/src/main/java/com/yahoo/document/update/MapValueUpdate.java2
-rw-r--r--document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java3
-rw-r--r--document/src/test/java/com/yahoo/document/DocInDocTestCase.java6
-rw-r--r--document/src/test/java/com/yahoo/document/serialization/SerializationHelperTestCase.java1
-rw-r--r--document/src/test/java/com/yahoo/document/serialization/SerializeAnnotationsTestCase.java1
-rw-r--r--document/src/test/java/com/yahoo/document/serialization/VespaDocumentSerializerTestCase.java1
-rwxr-xr-xdocumentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java1
-rw-r--r--documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java2
-rw-r--r--fileacquirer/src/test/java/MockFileAcquirerTest.java6
-rw-r--r--fsa/src/main/java/com/yahoo/fsa/FSA.java3
-rw-r--r--jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDispatch.java7
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingRepositoryTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerBuilderTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationEnvironmentModuleTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogFormatterTestCase.java4
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogListenerTestCase.java2
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogHandlerTestCase.java5
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerTestCase.java19
-rw-r--r--jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceTestCase.java8
-rw-r--r--jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/MyBundleActivator.java4
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/jdisc/http/HttpRequest.java13
-rw-r--r--jdisc_http_service/src/main/java/com/yahoo/jdisc/http/core/HeaderFieldsUtil.java67
-rw-r--r--jdisc_http_service/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java37
-rw-r--r--processing/src/main/java/com/yahoo/processing/Response.java2
-rw-r--r--processing/src/main/java/com/yahoo/processing/test/ProcessorLibrary.java2
-rw-r--r--processing/src/test/java/com/yahoo/processing/test/documentation/Federator.java3
-rw-r--r--statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java2
-rw-r--r--statistics/src/test/java/com/yahoo/statistics/ValueGroupTestCase.java2
-rw-r--r--statistics/src/test/java/com/yahoo/statistics/ValueTestCase.java2
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/state/ClusterState.java6
-rw-r--r--vdslib/src/main/java/com/yahoo/vdslib/state/DiskState.java7
-rw-r--r--vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java6
-rw-r--r--vespajlib/src/main/java/com/yahoo/javacc/FastCharStream.java6
-rw-r--r--vespajlib/src/test/java/com/yahoo/javacc/FastCharStreamTestCase.java18
-rw-r--r--vespalib/src/tests/net/socket/socket_test.cpp86
-rw-r--r--vespalib/src/vespa/vespalib/net/CMakeLists.txt1
-rw-r--r--vespalib/src/vespa/vespalib/net/socket_options.cpp73
-rw-r--r--vespalib/src/vespa/vespalib/net/socket_options.h20
-rw-r--r--vespalib/src/vespa/vespalib/test/socket_options_verifier.h60
-rw-r--r--yolean/pom.xml2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/chain/ChainBuilder.java2
-rw-r--r--yolean/src/main/java/com/yahoo/yolean/chain/Dependencies.java20
75 files changed, 453 insertions, 197 deletions
diff --git a/application/pom.xml b/application/pom.xml
index 104f27933c9..376a7449afb 100644
--- a/application/pom.xml
+++ b/application/pom.xml
@@ -108,9 +108,9 @@
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<compilerArgs>
- <arg>-Xlint:rawtypes</arg>
- <arg>-Xlint:unchecked</arg>
- <arg>-Xlint:deprecation</arg>
+ <arg>-Xlint:all</arg>
+ <arg>-Xlint:-serial</arg>
+ <arg>-Werror</arg>
</compilerArgs>
</configuration>
</plugin>
diff --git a/application/src/main/java/com/yahoo/application/Application.java b/application/src/main/java/com/yahoo/application/Application.java
index cfcce72487b..5b91c8ff89c 100644
--- a/application/src/main/java/com/yahoo/application/Application.java
+++ b/application/src/main/java/com/yahoo/application/Application.java
@@ -20,7 +20,6 @@ import com.yahoo.search.rendering.Renderer;
import com.yahoo.text.StringUtilities;
import com.yahoo.text.Utf8;
import com.yahoo.vespa.model.VespaModel;
-import org.jboss.netty.channel.ChannelException;
import org.xml.sax.SAXException;
import java.io.File;
@@ -316,7 +315,7 @@ public final class Application implements AutoCloseable {
break;
} catch (Error e) { // the container thinks this is really serious, in this case is it not in the cause is a BindException
// catch bind error and reset container
- if (e.getCause() != null && e.getCause() instanceof ChannelException && e.getCause().getCause() != null && e.getCause().getCause() instanceof BindException) {
+ if (e.getCause() != null && e.getCause().getCause() != null && e.getCause().getCause() instanceof BindException) {
exception = (Exception) e.getCause().getCause();
com.yahoo.container.Container.resetInstance(); // this is needed to be able to recreate the container from config again
} else {
@@ -667,4 +666,4 @@ public final class Application implements AutoCloseable {
}
}
}
-} \ No newline at end of file
+}
diff --git a/application/src/main/java/com/yahoo/application/container/Search.java b/application/src/main/java/com/yahoo/application/container/Search.java
index 14f1405d40a..dbb655926be 100644
--- a/application/src/main/java/com/yahoo/application/container/Search.java
+++ b/application/src/main/java/com/yahoo/application/container/Search.java
@@ -41,6 +41,7 @@ public final class Search extends ProcessingBase<Query, Result, Searcher> {
}
@Override
+ @SuppressWarnings("deprecation")
protected ListenableFuture<Boolean> doProcessAndRender(ComponentSpecification chainSpec,
Query request,
Renderer<Result> renderer,
@@ -51,6 +52,7 @@ public final class Search extends ProcessingBase<Query, Result, Searcher> {
}
@Override
+ @SuppressWarnings("deprecation")
protected Renderer<Result> doGetRenderer(ComponentSpecification spec) {
return handler.getRendererCopy(spec);
}
diff --git a/application/src/test/java/com/yahoo/application/ApplicationFacade.java b/application/src/test/java/com/yahoo/application/ApplicationFacade.java
index 2c8ff05e2cc..41631e67c6d 100644
--- a/application/src/test/java/com/yahoo/application/ApplicationFacade.java
+++ b/application/src/test/java/com/yahoo/application/ApplicationFacade.java
@@ -155,7 +155,7 @@ public class ApplicationFacade implements AutoCloseable {
}
@Override
- public void close() throws Exception {
+ public void close() {
application.close();
}
}
diff --git a/application/src/test/java/com/yahoo/application/ApplicationTest.java b/application/src/test/java/com/yahoo/application/ApplicationTest.java
index 1f90c195065..395151d740f 100644
--- a/application/src/test/java/com/yahoo/application/ApplicationTest.java
+++ b/application/src/test/java/com/yahoo/application/ApplicationTest.java
@@ -27,7 +27,6 @@ import org.apache.commons.io.IOUtils;
import org.apache.http.HttpResponse;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
-import org.apache.http.impl.client.DefaultHttpClient;
import org.junit.Ignore;
import org.junit.Test;
@@ -49,11 +48,13 @@ import static com.yahoo.application.container.JDiscTest.getListenPort;
/**
* @author bratseth
*/
+@SuppressWarnings("deprecation")
public class ApplicationTest {
@Test
public void minimal_application_can_be_constructed() throws Exception {
try (Application application = Application.fromServicesXml("<jdisc version=\"1.0\"/>", Networking.disable)) {
+ Application unused = application;
}
}
@@ -296,6 +297,7 @@ public class ApplicationTest {
public void file_distribution() throws Exception {
try (Application application = Application.fromApplicationPackage(new File("src/test/app-packages/filedistribution/"), Networking.disable)) {
// Deployment succeeded
+ Application unused = application;
}
}
@@ -324,6 +326,7 @@ public class ApplicationTest {
.container("default", new Application.Builder.Container()
.search(true)
))) {
+ Application unused = app;
}
}
@@ -331,9 +334,10 @@ public class ApplicationTest {
public void http_interface_is_off_when_networking_is_disabled() throws Exception {
int httpPort = getFreePort();
try (Application application = Application.fromServicesXml(servicesXmlWithServer(httpPort), Networking.disable)) {
- HttpClient client = new DefaultHttpClient();
+ HttpClient client = new org.apache.http.impl.client.DefaultHttpClient();
int statusCode = client.execute(new HttpGet("http://localhost:" + httpPort)).getStatusLine().getStatusCode();
fail("Networking.disable is specified, but the network interface is enabled! Got status code: " + statusCode);
+ Application unused = application;
}
}
@@ -341,7 +345,7 @@ public class ApplicationTest {
public void http_interface_is_on_when_networking_is_enabled() throws Exception {
int httpPort = getFreePort();
try (Application application = Application.fromServicesXml(servicesXmlWithServer(httpPort), Networking.enable)) {
- HttpClient client = new DefaultHttpClient();
+ HttpClient client = new org.apache.http.impl.client.DefaultHttpClient();
HttpResponse response = client.execute(new HttpGet("http://localhost:" + httpPort));
assertEquals(200, response.getStatusLine().getStatusCode());
BufferedReader r = new BufferedReader(new InputStreamReader(response.getEntity().getContent()));
@@ -351,6 +355,7 @@ public class ApplicationTest {
sb.append(line).append("\n");
}
assertTrue(sb.toString().contains("Handler"));
+ Application unused = application;
}
}
diff --git a/application/src/test/java/com/yahoo/application/container/processors/Rot13Processor.java b/application/src/test/java/com/yahoo/application/container/processors/Rot13Processor.java
index 95765e69d33..3cd1de85475 100644
--- a/application/src/test/java/com/yahoo/application/container/processors/Rot13Processor.java
+++ b/application/src/test/java/com/yahoo/application/container/processors/Rot13Processor.java
@@ -14,6 +14,7 @@ import static com.yahoo.application.container.docprocs.Rot13DocumentProcessor.ro
*/
public class Rot13Processor extends Processor {
+ @SuppressWarnings("unchecked")
@Override
public Response process(Request request, Execution execution) {
Object fooObj = request.properties().get("title");
diff --git a/chain/src/main/java/com/yahoo/component/chain/Chain.java b/chain/src/main/java/com/yahoo/component/chain/Chain.java
index 4e003c3b41f..b1365948d34 100644
--- a/chain/src/main/java/com/yahoo/component/chain/Chain.java
+++ b/chain/src/main/java/com/yahoo/component/chain/Chain.java
@@ -50,6 +50,7 @@ public class Chain<COMPONENT extends ChainedComponent> {
/** Create a chain directly. This will NOT order the chain by the ordering constraints. */
@SafeVarargs
+ @SuppressWarnings("varargs")
public Chain(ComponentId id, COMPONENT... components) {
this(id, Arrays.<COMPONENT>asList(components));
}
@@ -115,7 +116,7 @@ public class Chain<COMPONENT extends ChainedComponent> {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
- Chain chain = (Chain) o;
+ Chain<?> chain = (Chain<?>) o;
if (!componentList.equals(chain.componentList)) return false;
if (!id.equals(chain.id)) return false;
diff --git a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java
index 684a3abe2b2..3eadd381508 100644
--- a/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java
+++ b/config-model/src/main/java/com/yahoo/vespa/documentmodel/SummaryField.java
@@ -131,6 +131,7 @@ public class SummaryField extends Field implements Cloneable, TypedKey {
public void setImplicit(boolean implicit) { this.implicit=implicit; }
@Override // override to make public
+ @Deprecated
public void setDataType(DataType type) {
super.setDataType(type);
}
diff --git a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModel.java b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModel.java
index 29846ded00f..bf80ff5f0bd 100644
--- a/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModel.java
+++ b/config-model/src/main/java/com/yahoo/vespa/model/container/ContainerModel.java
@@ -41,6 +41,7 @@ public class ContainerModel extends ConfigModel {
}
@Override
+ @Deprecated
public void initialize(ConfigModelRepo configModelRepo) {
List<AbstractSearchCluster> searchClusters = Content.getSearchClusters(configModelRepo);
diff --git a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java
index 0f56934c5bc..c88b3967e1c 100644
--- a/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java
+++ b/container-core/src/main/java/com/yahoo/container/core/config/HandlersConfigurerDi.java
@@ -19,7 +19,6 @@ import com.yahoo.container.di.osgi.OsgiUtil;
import com.yahoo.container.handler.observability.OverviewHandler;
import com.yahoo.container.logging.AccessLog;
import com.yahoo.container.logging.AccessLogInterface;
-import com.yahoo.container.protect.FreezeDetector;
import com.yahoo.jdisc.application.OsgiFramework;
import com.yahoo.jdisc.handler.RequestHandler;
import com.yahoo.jdisc.service.ClientProvider;
@@ -166,7 +165,9 @@ public class HandlersConfigurerDi {
bind(com.yahoo.container.Container.class).toInstance(vespaContainer);
bind(com.yahoo.statistics.Statistics.class).toInstance(Statistics.nullImplementation);
bind(Linguistics.class).toInstance(new SimpleLinguistics());
- bind(FreezeDetector.class).toInstance(new FreezeDetector(new DiagnosticsConfig(new DiagnosticsConfig.Builder().disabled(true))));
+ bind(com.yahoo.container.protect.FreezeDetector.class).toInstance(
+ new com.yahoo.container.protect.FreezeDetector(
+ new DiagnosticsConfig(new DiagnosticsConfig.Builder().disabled(true))));
bind(AccessLog.class).toInstance(new AccessLog(new ComponentRegistry<>()));
bind(Executor.class).toInstance(Executors.newCachedThreadPool(ThreadFactoryFactory.getThreadFactory("HandlersConfigurerDI")));
diff --git a/container-core/src/main/java/com/yahoo/container/handler/AccessLogRequestHandler.java b/container-core/src/main/java/com/yahoo/container/handler/AccessLogRequestHandler.java
index cc6ba83711d..11649a06cc6 100644
--- a/container-core/src/main/java/com/yahoo/container/handler/AccessLogRequestHandler.java
+++ b/container-core/src/main/java/com/yahoo/container/handler/AccessLogRequestHandler.java
@@ -35,7 +35,7 @@ public class AccessLogRequestHandler extends ThreadedHttpRequestHandler {
@Override
public void render(OutputStream outputStream) throws IOException {
- JsonGenerator generator = jsonFactory.createJsonGenerator(outputStream);
+ JsonGenerator generator = jsonFactory.createGenerator(outputStream);
generator.writeStartObject();
generator.writeArrayFieldStart("entries");
for (String uri : uris) {
diff --git a/container-core/src/main/java/com/yahoo/processing/handler/ProcessingTestDriver.java b/container-core/src/main/java/com/yahoo/processing/handler/ProcessingTestDriver.java
index 7f656c61db4..89ecf204821 100644
--- a/container-core/src/main/java/com/yahoo/processing/handler/ProcessingTestDriver.java
+++ b/container-core/src/main/java/com/yahoo/processing/handler/ProcessingTestDriver.java
@@ -37,10 +37,12 @@ public class ProcessingTestDriver extends RequestHandlerTestDriver {
this(chains, new ComponentRegistry<Renderer>());
}
@SafeVarargs
+ @SuppressWarnings("varargs")
public ProcessingTestDriver(Chain<Processor> ... chains) {
this(Arrays.asList(chains), new ComponentRegistry<Renderer>());
}
@SafeVarargs
+ @SuppressWarnings("varargs")
public ProcessingTestDriver(String binding, Chain<Processor> ... chains) {
this(binding, Arrays.asList(chains), new ComponentRegistry<Renderer>());
}
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/FilterBindingsProviderTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/FilterBindingsProviderTest.java
index 592240db07a..4fbe89e570e 100644
--- a/container-disc/src/test/java/com/yahoo/container/jdisc/FilterBindingsProviderTest.java
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/FilterBindingsProviderTest.java
@@ -179,6 +179,8 @@ public class FilterBindingsProviderTest {
}
}
+ @SafeVarargs
+ @SuppressWarnings("varargs")
private static <T> Matcher<? super BindingRepository<T>> containsFilters(
final T... requiredInstances) {
return new TypeSafeMatcher<BindingRepository<T>>() {
diff --git a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviderTest.java b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviderTest.java
index a5cb1730089..2397d285166 100644
--- a/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviderTest.java
+++ b/container-disc/src/test/java/com/yahoo/container/jdisc/metric/MetricProviderTest.java
@@ -13,7 +13,7 @@ import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.atomic.AtomicInteger;
-import static junit.framework.Assert.assertNotNull;
+import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertTrue;
diff --git a/container-search/src/main/java/com/yahoo/prelude/querytransform/IndexCombinatorSearcher.java b/container-search/src/main/java/com/yahoo/prelude/querytransform/IndexCombinatorSearcher.java
index e56303e60f8..84ca89694a5 100644
--- a/container-search/src/main/java/com/yahoo/prelude/querytransform/IndexCombinatorSearcher.java
+++ b/container-search/src/main/java/com/yahoo/prelude/querytransform/IndexCombinatorSearcher.java
@@ -188,6 +188,7 @@ public class IndexCombinatorSearcher extends Searcher {
break;
case FLAT:
c = flatTransform(c, session);
+ break;
default:
break;
}
diff --git a/container-search/src/main/java/com/yahoo/search/federation/vespa/QueryMarshaller.java b/container-search/src/main/java/com/yahoo/search/federation/vespa/QueryMarshaller.java
index 554424c267f..c3662102b85 100644
--- a/container-search/src/main/java/com/yahoo/search/federation/vespa/QueryMarshaller.java
+++ b/container-search/src/main/java/com/yahoo/search/federation/vespa/QueryMarshaller.java
@@ -66,6 +66,7 @@ public class QueryMarshaller {
break;
case WEAK_AND:
marshalWeakAnd((WeakAndItem)root, s);
+ break;
default:
break;
}
diff --git a/container-search/src/main/java/com/yahoo/search/result/DefaultErrorHit.java b/container-search/src/main/java/com/yahoo/search/result/DefaultErrorHit.java
index 79b8d55bb07..5fe604dca15 100644
--- a/container-search/src/main/java/com/yahoo/search/result/DefaultErrorHit.java
+++ b/container-search/src/main/java/com/yahoo/search/result/DefaultErrorHit.java
@@ -50,6 +50,7 @@ public class DefaultErrorHit extends Hit implements ErrorHit, Cloneable {
* @deprecated since 5.18, use {@link #errors()}
*/
@Override
+ @Deprecated
public ErrorMessage getMainError() {
return errors.get(0);
}
diff --git a/container-search/src/main/java/com/yahoo/search/searchchain/Execution.java b/container-search/src/main/java/com/yahoo/search/searchchain/Execution.java
index a888ad9b59e..c9176b208a4 100644
--- a/container-search/src/main/java/com/yahoo/search/searchchain/Execution.java
+++ b/container-search/src/main/java/com/yahoo/search/searchchain/Execution.java
@@ -221,6 +221,14 @@ public class Execution extends com.yahoo.processing.execution.Execution {
}
@Override
+ public int hashCode() {
+ return java.util.Objects.hash(indexFacts,
+ rendererRegistry, tokenRegistry, searchChainRegistry,
+ detailedDiagnostics, breakdown,
+ linguistics);
+ }
+
+ @Override
public boolean equals(Object other) {
if (other == null) {
return false;
diff --git a/docproc/src/main/java/com/yahoo/docproc/SimpleDocumentProcessor.java b/docproc/src/main/java/com/yahoo/docproc/SimpleDocumentProcessor.java
index 16a207171cb..1a524ddcefc 100644
--- a/docproc/src/main/java/com/yahoo/docproc/SimpleDocumentProcessor.java
+++ b/docproc/src/main/java/com/yahoo/docproc/SimpleDocumentProcessor.java
@@ -32,6 +32,7 @@ public class SimpleDocumentProcessor extends DocumentProcessor {
*
* @param document the Document to process.
*/
+ @Deprecated
public void process(Document document) {
if (log.isLoggable(LogLevel.DEBUG)) {
log.log(LogLevel.DEBUG, "Ignored " + document);
diff --git a/docproc/src/main/java/com/yahoo/docproc/util/JoinerDocumentProcessor.java b/docproc/src/main/java/com/yahoo/docproc/util/JoinerDocumentProcessor.java
index f934d64736f..c7e0cd2cdf2 100644
--- a/docproc/src/main/java/com/yahoo/docproc/util/JoinerDocumentProcessor.java
+++ b/docproc/src/main/java/com/yahoo/docproc/util/JoinerDocumentProcessor.java
@@ -47,10 +47,13 @@ public class JoinerDocumentProcessor extends DocumentProcessor {
DocumentPut outerDoc = (DocumentPut)processing.getVariable(contextFieldName);
+ @SuppressWarnings("unchecked")
Array<Document> innerDocuments = (Array<Document>) outerDoc.getDocument().getFieldValue(arrayFieldName);
if (innerDocuments == null) {
- innerDocuments = (Array<Document>) outerDoc.getDocument().getDataType().getField(arrayFieldName).getDataType().createFieldValue();
+ @SuppressWarnings("unchecked")
+ Array<Document> empty = (Array<Document>) outerDoc.getDocument().getDataType().getField(arrayFieldName).getDataType().createFieldValue();
+ innerDocuments = empty;
}
for (DocumentOperation op : processing.getDocumentOperations()) {
diff --git a/docproc/src/main/java/com/yahoo/docproc/util/SplitterDocumentProcessor.java b/docproc/src/main/java/com/yahoo/docproc/util/SplitterDocumentProcessor.java
index ed45435d6ef..9377412d1ae 100644
--- a/docproc/src/main/java/com/yahoo/docproc/util/SplitterDocumentProcessor.java
+++ b/docproc/src/main/java/com/yahoo/docproc/util/SplitterDocumentProcessor.java
@@ -53,6 +53,7 @@ public class SplitterDocumentProcessor extends DocumentProcessor {
Document outerDoc = ((DocumentPut)processing.getDocumentOperations().get(0)).getDocument();;
+ @SuppressWarnings("unchecked")
Array<Document> innerDocuments = (Array<Document>) outerDoc.getFieldValue(arrayFieldName);
if (innerDocuments == null) {
//the document does not have the field, return
diff --git a/docproc/src/test/java/com/yahoo/docproc/CallStackTestCase.java b/docproc/src/test/java/com/yahoo/docproc/CallStackTestCase.java
index 42906f062fd..0ed626d5e99 100644
--- a/docproc/src/test/java/com/yahoo/docproc/CallStackTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/CallStackTestCase.java
@@ -8,6 +8,7 @@ import java.util.Iterator;
*
* @author bratseth
*/
+@SuppressWarnings({"unchecked","rawtypes"})
public class CallStackTestCase extends junit.framework.TestCase {
private CallStack callStack, insertStack;
diff --git a/docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java b/docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java
index e5d3a4dc137..d66276428ca 100644
--- a/docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java
+++ b/docproc/src/test/java/com/yahoo/docproc/proxy/SchemaMappingAndAccessesTest.java
@@ -34,6 +34,7 @@ import com.yahoo.document.datatypes.Struct;
import com.yahoo.document.datatypes.StructuredFieldValue;
import com.yahoo.document.update.FieldUpdate;
+@SuppressWarnings("unchecked")
public class SchemaMappingAndAccessesTest extends junit.framework.TestCase {
private Document getDoc() {
diff --git a/docproc/src/test/java/com/yahoo/docproc/util/SplitterJoinerTestCase.java b/docproc/src/test/java/com/yahoo/docproc/util/SplitterJoinerTestCase.java
index 2d5a61fa005..89b6f2451b9 100644
--- a/docproc/src/test/java/com/yahoo/docproc/util/SplitterJoinerTestCase.java
+++ b/docproc/src/test/java/com/yahoo/docproc/util/SplitterJoinerTestCase.java
@@ -22,6 +22,7 @@ import static org.junit.Assert.assertTrue;
/**
* @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
*/
+@SuppressWarnings({"unchecked","rawtypes"})
public class SplitterJoinerTestCase {
@Test
diff --git a/document/pom.xml b/document/pom.xml
index 71713b27050..467a9409510 100644
--- a/document/pom.xml
+++ b/document/pom.xml
@@ -142,6 +142,20 @@
</execution>
</executions>
</plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <compilerArgs>
+ <arg>-Xlint:all</arg>
+ <arg>-Xlint:-serial</arg>
+ <arg>-Xlint:-rawtypes</arg>
+ <arg>-Xlint:-unchecked</arg>
+ <arg>-Xlint:-cast</arg>
+ <arg>-Werror</arg>
+ </compilerArgs>
+ </configuration>
+ </plugin>
</plugins>
</build>
</project>
diff --git a/document/src/main/java/com/yahoo/document/Document.java b/document/src/main/java/com/yahoo/document/Document.java
index 798e6004b04..b71d8d8dac3 100644
--- a/document/src/main/java/com/yahoo/document/Document.java
+++ b/document/src/main/java/com/yahoo/document/Document.java
@@ -311,6 +311,7 @@ public class Document extends StructuredFieldValue {
serialize((DocumentWriter)data);
}
+ @SuppressWarnings("deprecation")
public void serializeHeader(Serializer data) throws SerializationException {
if (data instanceof DocumentWriter) {
if (data instanceof VespaDocumentSerializer42) {
diff --git a/document/src/main/java/com/yahoo/document/datatypes/FieldPathIteratorHandler.java b/document/src/main/java/com/yahoo/document/datatypes/FieldPathIteratorHandler.java
index c8d007037f3..47c7b5b4d94 100644
--- a/document/src/main/java/com/yahoo/document/datatypes/FieldPathIteratorHandler.java
+++ b/document/src/main/java/com/yahoo/document/datatypes/FieldPathIteratorHandler.java
@@ -47,17 +47,27 @@ public abstract class FieldPathIteratorHandler {
}
@Override
- public boolean equals(Object o) {
- IndexValue other = (IndexValue)o;
-
+ public int hashCode() {
+ int hc = index;
if (key != null) {
- if (other.key != null && key.equals(other.key)) {
- return true;
- }
- return false;
+ hc = key.hashCode();
}
+ return hc;
+ }
- return index == other.index;
+ @Override
+ public boolean equals(Object o) {
+ if (!(o instanceof IndexValue)) {
+ return false;
+ }
+ IndexValue other = (IndexValue)o;
+ if (key != null && other.key != null) {
+ return key.equals(other.key);
+ }
+ if (key == null && other.key == null) {
+ return index == other.index;
+ }
+ return false;
}
};
diff --git a/document/src/main/java/com/yahoo/document/select/OrderingSpecification.java b/document/src/main/java/com/yahoo/document/select/OrderingSpecification.java
index 3f5a7a58733..3388c6db23d 100644
--- a/document/src/main/java/com/yahoo/document/select/OrderingSpecification.java
+++ b/document/src/main/java/com/yahoo/document/select/OrderingSpecification.java
@@ -5,10 +5,10 @@ public class OrderingSpecification {
public static int ASCENDING = 0;
public static int DESCENDING = 1;
- public int order;
- public long orderingStart;
- public short widthBits;
- public short divisionBits;
+ public final int order;
+ public final long orderingStart;
+ public final short widthBits;
+ public final short divisionBits;
public OrderingSpecification() {
this(ASCENDING, (long)0, (short)0, (short)0);
@@ -30,6 +30,7 @@ public class OrderingSpecification {
public short getWidthBits() { return widthBits; }
public short getDivisionBits() { return divisionBits; }
+ @Override
public boolean equals(Object other) {
OrderingSpecification o = (OrderingSpecification)other;
if (o == null) return false;
@@ -37,6 +38,11 @@ public class OrderingSpecification {
return (order == o.order && orderingStart == o.orderingStart && widthBits == o.widthBits && divisionBits == o.divisionBits);
}
+ @Override
+ public int hashCode() {
+ return java.util.Objects.hash(order, orderingStart, widthBits, divisionBits);
+ }
+
public String toString() {
return "O: " + order + " S:" + orderingStart + " W:" + widthBits + " D:" + divisionBits;
}
diff --git a/document/src/main/java/com/yahoo/document/serialization/DocumentDeserializerFactory.java b/document/src/main/java/com/yahoo/document/serialization/DocumentDeserializerFactory.java
index e6b5590b073..b32d7bc6369 100644
--- a/document/src/main/java/com/yahoo/document/serialization/DocumentDeserializerFactory.java
+++ b/document/src/main/java/com/yahoo/document/serialization/DocumentDeserializerFactory.java
@@ -22,6 +22,7 @@ public class DocumentDeserializerFactory {
/**
* Creates a de-serializer for the document format that was created on Vespa 4.2.
*/
+ @SuppressWarnings("deprecation")
public static DocumentDeserializer create42(DocumentTypeManager manager, GrowableByteBuffer buf) {
return new VespaDocumentDeserializer42(manager, buf);
}
@@ -29,6 +30,7 @@ public class DocumentDeserializerFactory {
/**
* Creates a de-serializer for the document format that was created on Vespa 4.2.
*/
+ @SuppressWarnings("deprecation")
public static DocumentDeserializer create42(DocumentTypeManager manager, GrowableByteBuffer buf, GrowableByteBuffer body) {
return new VespaDocumentDeserializer42(manager, buf, body);
}
diff --git a/document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java b/document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java
index 760858680a3..827a42c4f81 100644
--- a/document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java
+++ b/document/src/main/java/com/yahoo/document/serialization/DocumentSerializerFactory.java
@@ -21,6 +21,7 @@ public class DocumentSerializerFactory {
/**
* Creates a serializer for the document format that was created on Vespa 4.2.
*/
+ @SuppressWarnings("deprecation")
public static DocumentSerializer create42(GrowableByteBuffer buf) {
return new VespaDocumentSerializer42(buf);
}
@@ -28,6 +29,7 @@ public class DocumentSerializerFactory {
/**
* Creates a serializer for the document format that was created on Vespa 4.2.
*/
+ @SuppressWarnings("deprecation")
public static DocumentSerializer create42(GrowableByteBuffer buf, boolean headerOnly) {
return new VespaDocumentSerializer42(buf, headerOnly);
}
@@ -35,6 +37,7 @@ public class DocumentSerializerFactory {
/**
* Creates a serializer for the document format that was created on Vespa 4.2.
*/
+ @SuppressWarnings("deprecation")
public static DocumentSerializer create42() {
return new VespaDocumentSerializer42();
}
diff --git a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializerHead.java b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializerHead.java
index 1eafd12fc13..fdee3ae506e 100644
--- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializerHead.java
+++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentDeserializerHead.java
@@ -13,6 +13,7 @@ import com.yahoo.io.GrowableByteBuffer;
*
* @author baldersheim
*/
+@SuppressWarnings("deprecation")
public class VespaDocumentDeserializerHead extends VespaDocumentDeserializer42 {
public VespaDocumentDeserializerHead(DocumentTypeManager manager, GrowableByteBuffer buffer) {
diff --git a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializerHead.java b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializerHead.java
index df15c9fda0b..33b58ee2005 100644
--- a/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializerHead.java
+++ b/document/src/main/java/com/yahoo/document/serialization/VespaDocumentSerializerHead.java
@@ -13,6 +13,7 @@ import com.yahoo.io.GrowableByteBuffer;
*
* @author baldersheim
*/
+@SuppressWarnings("deprecation")
public class VespaDocumentSerializerHead extends VespaDocumentSerializer42 {
public VespaDocumentSerializerHead(GrowableByteBuffer buf) {
diff --git a/document/src/main/java/com/yahoo/document/update/AddValueUpdate.java b/document/src/main/java/com/yahoo/document/update/AddValueUpdate.java
index 1ad2941c80c..bae921a7ab7 100644
--- a/document/src/main/java/com/yahoo/document/update/AddValueUpdate.java
+++ b/document/src/main/java/com/yahoo/document/update/AddValueUpdate.java
@@ -56,10 +56,10 @@ public class AddValueUpdate extends ValueUpdate {
public FieldValue applyTo(FieldValue val) {
if (val instanceof WeightedSet) {
WeightedSet wset = (WeightedSet) val;
- wset.put((FieldValue) value, weight);
+ wset.put(value, weight);
} else if (val instanceof CollectionFieldValue) {
CollectionFieldValue fval = (CollectionFieldValue) val;
- fval.add((FieldValue) value);
+ fval.add(value);
} else {
throw new IllegalStateException("Cannot add "+value+" to field of type " + val.getClass().getName());
}
diff --git a/document/src/main/java/com/yahoo/document/update/MapValueUpdate.java b/document/src/main/java/com/yahoo/document/update/MapValueUpdate.java
index edb40c6959b..de2fe1987a9 100644
--- a/document/src/main/java/com/yahoo/document/update/MapValueUpdate.java
+++ b/document/src/main/java/com/yahoo/document/update/MapValueUpdate.java
@@ -70,7 +70,7 @@ public class MapValueUpdate extends ValueUpdate {
}
}
weight = (Integer) update.applyTo(new IntegerFieldValue(weight)).getWrappedValue();
- wset.put((FieldValue) value, weight);
+ wset.put(value, weight);
if (wtype.removeIfZero() && update instanceof ArithmeticValueUpdate && weight == 0) {
wset.remove(value);
}
diff --git a/document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java b/document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java
index e511e4cf378..7df271035f7 100644
--- a/document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java
+++ b/document/src/test/java/com/yahoo/document/BucketIdFactoryTestCase.java
@@ -31,9 +31,12 @@ public class BucketIdFactoryTestCase extends junit.framework.TestCase {
value = val;
}
+ @Override
public boolean equals(Object o) {
return (o instanceof Hex && value == ((Hex) o).value);
}
+ @Override
+ public int hashCode() { return (int)value; }
public String toString() {
return Long.toHexString(value);
diff --git a/document/src/test/java/com/yahoo/document/DocInDocTestCase.java b/document/src/test/java/com/yahoo/document/DocInDocTestCase.java
index ec6e287d105..2fdc605355b 100644
--- a/document/src/test/java/com/yahoo/document/DocInDocTestCase.java
+++ b/document/src/test/java/com/yahoo/document/DocInDocTestCase.java
@@ -8,9 +8,9 @@ import com.yahoo.io.GrowableByteBuffer;
import junit.framework.TestCase;
import org.junit.Test;
-import static junit.framework.Assert.assertEquals;
-import static junit.framework.Assert.assertNotSame;
-import static junit.framework.Assert.assertTrue;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertTrue;
/**
* @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
diff --git a/document/src/test/java/com/yahoo/document/serialization/SerializationHelperTestCase.java b/document/src/test/java/com/yahoo/document/serialization/SerializationHelperTestCase.java
index fbd3ea3afdc..5f8c61c52ec 100644
--- a/document/src/test/java/com/yahoo/document/serialization/SerializationHelperTestCase.java
+++ b/document/src/test/java/com/yahoo/document/serialization/SerializationHelperTestCase.java
@@ -13,6 +13,7 @@ import java.nio.ByteBuffer;
/**
* @author <a href="mailto:einarmr@yahoo-inc.com">Einar M R Rosenvinge</a>
*/
+@SuppressWarnings("deprecation")
public class SerializationHelperTestCase extends junit.framework.TestCase {
public SerializationHelperTestCase(String name) {
super(name);
diff --git a/document/src/test/java/com/yahoo/document/serialization/SerializeAnnotationsTestCase.java b/document/src/test/java/com/yahoo/document/serialization/SerializeAnnotationsTestCase.java
index d8ed160e1c4..feb8a84da41 100644
--- a/document/src/test/java/com/yahoo/document/serialization/SerializeAnnotationsTestCase.java
+++ b/document/src/test/java/com/yahoo/document/serialization/SerializeAnnotationsTestCase.java
@@ -32,6 +32,7 @@ import java.util.ArrayList;
* test to fail, so you will need to update the
* AnnotationDeserialization component to handle the format changes.
*/
+@SuppressWarnings("deprecation")
public class SerializeAnnotationsTestCase extends junit.framework.TestCase {
private static final String PATH = "src/tests/serialization/";
DocumentTypeManager docMan = new DocumentTypeManager();
diff --git a/document/src/test/java/com/yahoo/document/serialization/VespaDocumentSerializerTestCase.java b/document/src/test/java/com/yahoo/document/serialization/VespaDocumentSerializerTestCase.java
index 823bb0b196d..a47b6356a36 100644
--- a/document/src/test/java/com/yahoo/document/serialization/VespaDocumentSerializerTestCase.java
+++ b/document/src/test/java/com/yahoo/document/serialization/VespaDocumentSerializerTestCase.java
@@ -17,6 +17,7 @@ import static org.junit.Assert.assertEquals;
/**
* @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a>
*/
+@SuppressWarnings("deprecation")
public class VespaDocumentSerializerTestCase {
@Test
diff --git a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java
index f3721ff0173..4ca50aae215 100755
--- a/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java
+++ b/documentapi/src/test/java/com/yahoo/documentapi/messagebus/protocol/test/PolicyTestFrame.java
@@ -27,6 +27,7 @@ import java.util.concurrent.atomic.AtomicBoolean;
*
* @author <a href="mailto:simon@yahoo-inc.com">Simon Thoresen</a>
*/
+@SuppressWarnings("deprecation")
public class PolicyTestFrame extends junit.framework.Assert {
private final AtomicBoolean destroyed = new AtomicBoolean(false);
diff --git a/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java b/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java
index 4a29114628c..7e9365a0e6b 100644
--- a/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java
+++ b/documentgen-test/src/test/java/com/yahoo/vespa/config/DocumentGenPluginTest.java
@@ -40,7 +40,7 @@ import static org.junit.Assert.*;
* Testcases for vespa-documentgen-plugin
* @author vegardh
*/
-@SuppressWarnings("unchecked")
+@SuppressWarnings({"unchecked", "rawtypes"})
public class DocumentGenPluginTest {
private static final int NUM_BOOKS = 10000;
diff --git a/fileacquirer/src/test/java/MockFileAcquirerTest.java b/fileacquirer/src/test/java/MockFileAcquirerTest.java
index 04a4c202b24..4438e169c3b 100644
--- a/fileacquirer/src/test/java/MockFileAcquirerTest.java
+++ b/fileacquirer/src/test/java/MockFileAcquirerTest.java
@@ -63,10 +63,10 @@ public class MockFileAcquirerTest {
}
private FileReference createFileReference(String value) {
- Constructor constructors = FileReference.class.getDeclaredConstructors()[0];
- constructors.setAccessible(true);
try {
- return (FileReference)constructors.newInstance(value);
+ Constructor<FileReference> constructors = FileReference.class.getDeclaredConstructor(String.class);
+ constructors.setAccessible(true);
+ return constructors.newInstance(value);
} catch (Exception e) {
throw new RuntimeException(e);
}
diff --git a/fsa/src/main/java/com/yahoo/fsa/FSA.java b/fsa/src/main/java/com/yahoo/fsa/FSA.java
index 6e352f3ddca..da013cc4dce 100644
--- a/fsa/src/main/java/com/yahoo/fsa/FSA.java
+++ b/fsa/src/main/java/com/yahoo/fsa/FSA.java
@@ -377,9 +377,6 @@ public class FSA {
catch (FileNotFoundException e) {
throw new IllegalArgumentException("Could not find FSA file '" + filename + "'",e);
}
- catch (IOException e) {
- throw new IllegalArgumentException("Could not read FSA file '" + filename + "'",e);
- }
}
private void init(FileInputStream file, String charsetname) {
diff --git a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDispatch.java b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDispatch.java
index 02c752ceae9..313be743dd9 100644
--- a/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDispatch.java
+++ b/jdisc_core/src/main/java/com/yahoo/jdisc/handler/RequestDispatch.java
@@ -12,6 +12,8 @@ import com.yahoo.jdisc.References;
import java.nio.ByteBuffer;
import java.util.Collections;
import java.util.concurrent.*;
+import java.util.ArrayList;
+import java.util.List;
/**
* <p>This class provides a convenient way of safely dispatching a {@link Request}. Using this class you do not have to
@@ -116,7 +118,10 @@ public abstract class RequestDispatch implements ListenableFuture<Response>, Res
@Override
public void addListener(Runnable listener, Executor executor) {
- Futures.allAsList(completions, futureResponse).addListener(listener, executor);
+ List<ListenableFuture<?>> combined = new ArrayList<>(2);
+ combined.add(completions);
+ combined.add(futureResponse);
+ Futures.allAsList(combined).addListener(listener, executor);
}
@Override
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingRepositoryTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingRepositoryTestCase.java
index aa9bc783b74..41807513991 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingRepositoryTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/BindingRepositoryTestCase.java
@@ -87,7 +87,7 @@ public class BindingRepositoryTestCase {
bindings.bind(pattern, originallyBoundHandler);
bindings.bind(pattern, new PatternStealingRequestHandler());
- BindingSet bindingSet = bindings.activate();
+ BindingSet<?> bindingSet = bindings.activate();
assertEquals(originallyBoundHandler, bindingSet.resolve(URI.create(pattern)));
}
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerBuilderTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerBuilderTestCase.java
index 811f8fa901b..3591d6dc165 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerBuilderTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/application/ContainerBuilderTestCase.java
@@ -74,7 +74,7 @@ public class ContainerBuilderTestCase {
public void requireThatBindingSetsAreCreatedOnDemand() {
TestDriver driver = TestDriver.newSimpleApplicationInstanceWithoutOsgi();
ContainerBuilder builder = driver.newContainerBuilder();
- BindingRepository repo = builder.serverBindings("foo");
+ BindingRepository<?> repo = builder.serverBindings("foo");
assertNotNull(repo);
assertSame(repo, builder.serverBindings("foo"));
assertNotNull(repo = builder.serverBindings("bar"));
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationEnvironmentModuleTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationEnvironmentModuleTestCase.java
index 77af705cfac..bf3e285e3aa 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationEnvironmentModuleTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ApplicationEnvironmentModuleTestCase.java
@@ -25,7 +25,7 @@ public class ApplicationEnvironmentModuleTestCase {
@Test
public void requireThatBindingsExist() {
- List<Class> expected = new LinkedList<>();
+ List<Class<?>> expected = new LinkedList<>();
expected.add(ContainerActivator.class);
expected.add(ContainerBuilder.class);
expected.add(CurrentContainer.class);
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogFormatterTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogFormatterTestCase.java
index 901817dbd26..7871694c12d 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogFormatterTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogFormatterTestCase.java
@@ -211,7 +211,7 @@ public class ConsoleLogFormatterTestCase {
final int level;
final long time;
Bundle bundle = null;
- ServiceReference serviceReference = null;
+ ServiceReference<?> serviceReference = null;
Throwable exception;
MyEntry(long time, int level, String message) {
@@ -263,7 +263,7 @@ public class ConsoleLogFormatterTestCase {
}
@Override
- public ServiceReference getServiceReference() {
+ public ServiceReference<?> getServiceReference() {
return serviceReference;
}
}
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogListenerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogListenerTestCase.java
index 3ac30f0456e..502b3857024 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogListenerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/ConsoleLogListenerTestCase.java
@@ -108,7 +108,7 @@ public class ConsoleLogListenerTestCase {
}
@Override
- public ServiceReference getServiceReference() {
+ public ServiceReference<?> getServiceReference() {
return null;
}
}
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogHandlerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogHandlerTestCase.java
index eb18e6f8e49..1904c05d135 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogHandlerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogHandlerTestCase.java
@@ -90,7 +90,7 @@ public class OsgiLogHandlerTestCase {
record.setThrown(thrown);
log.log(record);
- ServiceReference ref = logService.lastServiceReference;
+ ServiceReference<?> ref = logService.lastServiceReference;
assertNotNull(ref);
assertTrue(Arrays.equals(new String[] { "LEVEL",
"LOGGER_NAME",
@@ -146,9 +146,10 @@ public class OsgiLogHandlerTestCase {
}
}
+ @SuppressWarnings("rawtypes")
private static class MyLogService implements LogService {
- ServiceReference lastServiceReference;
+ ServiceReference<?> lastServiceReference;
int lastLevel;
String lastMessage;
Throwable lastThrowable;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerTestCase.java
index 32e4b37aca8..ba31a5da118 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogManagerTestCase.java
@@ -41,11 +41,11 @@ public class OsgiLogManagerTestCase {
manager.log(4, "b", t1);
assertLast(service, null, 4, "b", t1);
- ServiceReference ref1 = Mockito.mock(ServiceReference.class);
+ ServiceReference<?> ref1 = Mockito.mock(ServiceReference.class);
manager.log(ref1, 8, "c");
assertLast(service, ref1, 8, "c", null);
- ServiceReference ref2 = Mockito.mock(ServiceReference.class);
+ ServiceReference<?> ref2 = Mockito.mock(ServiceReference.class);
Throwable t2 = new Throwable();
manager.log(ref2, 16, "d", t2);
assertLast(service, ref2, 16, "d", t2);
@@ -66,7 +66,7 @@ public class OsgiLogManagerTestCase {
OsgiLogManager manager = new OsgiLogManager(true);
manager.install(ctx);
- ServiceReference ref1 = Mockito.mock(ServiceReference.class);
+ ServiceReference<?> ref1 = Mockito.mock(ServiceReference.class);
Throwable t1 = new Throwable();
manager.log(ref1, 2, "a", t1);
assertLast(foo, ref1, 2, "a", t1);
@@ -74,7 +74,7 @@ public class OsgiLogManagerTestCase {
MyLogService bar = new MyLogService();
ServiceRegistration<LogService> barReg = ctx.registerService(LogService.class, bar, null);
- ServiceReference ref2 = Mockito.mock(ServiceReference.class);
+ ServiceReference<?> ref2 = Mockito.mock(ServiceReference.class);
Throwable t2 = new Throwable();
manager.log(ref2, 4, "b", t2);
assertLast(foo, ref2, 4, "b", t2);
@@ -83,7 +83,7 @@ public class OsgiLogManagerTestCase {
MyLogService baz = new MyLogService();
ServiceRegistration<LogService> bazReg = ctx.registerService(LogService.class, baz, null);
- ServiceReference ref3 = Mockito.mock(ServiceReference.class);
+ ServiceReference<?> ref3 = Mockito.mock(ServiceReference.class);
Throwable t3 = new Throwable();
manager.log(ref3, 8, "c", t3);
assertLast(foo, ref3, 8, "c", t3);
@@ -92,7 +92,7 @@ public class OsgiLogManagerTestCase {
fooReg.unregister();
- ServiceReference ref4 = Mockito.mock(ServiceReference.class);
+ ServiceReference<?> ref4 = Mockito.mock(ServiceReference.class);
Throwable t4 = new Throwable();
manager.log(ref4, 16, "d", t4);
assertLast(foo, ref3, 8, "c", t3);
@@ -101,7 +101,7 @@ public class OsgiLogManagerTestCase {
barReg.unregister();
- ServiceReference ref5 = Mockito.mock(ServiceReference.class);
+ ServiceReference<?> ref5 = Mockito.mock(ServiceReference.class);
Throwable t5 = new Throwable();
manager.log(ref5, 32, "e", t5);
assertLast(foo, ref3, 8, "c", t3);
@@ -110,7 +110,7 @@ public class OsgiLogManagerTestCase {
bazReg.unregister();
- ServiceReference ref6 = Mockito.mock(ServiceReference.class);
+ ServiceReference<?> ref6 = Mockito.mock(ServiceReference.class);
Throwable t6 = new Throwable();
manager.log(ref6, 64, "f", t6);
assertLast(foo, ref3, 8, "c", t3);
@@ -144,13 +144,14 @@ public class OsgiLogManagerTestCase {
assertEquals(Level.ALL, logger.getLevel());
}
- private static void assertLast(MyLogService service, ServiceReference ref, int level, String message, Throwable t) {
+ private static void assertLast(MyLogService service, ServiceReference<?> ref, int level, String message, Throwable t) {
assertSame(ref, service.lastServiceReference);
assertEquals(level, service.lastLevel);
assertEquals(message, service.lastMessage);
assertSame(t, service.lastThrowable);
}
+ @SuppressWarnings("rawtypes")
private static class MyLogService implements LogService {
ServiceReference lastServiceReference;
diff --git a/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceTestCase.java b/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceTestCase.java
index fbd6f5a3f88..ad2d7826c43 100644
--- a/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceTestCase.java
+++ b/jdisc_core/src/test/java/com/yahoo/jdisc/core/OsgiLogServiceTestCase.java
@@ -24,8 +24,8 @@ public class OsgiLogServiceTestCase {
OsgiFramework osgi = TestDriver.newOsgiFramework();
osgi.start();
- ServiceTracker logs = newTracker(osgi, LogService.class);
- ServiceTracker logReaders = newTracker(osgi, LogReaderService.class);
+ ServiceTracker<?,?> logs = newTracker(osgi, LogService.class);
+ ServiceTracker<?,?> logReaders = newTracker(osgi, LogReaderService.class);
assertEquals(1, logs.getTrackingCount());
assertEquals(1, logReaders.getTrackingCount());
@@ -97,8 +97,8 @@ public class OsgiLogServiceTestCase {
}
@SuppressWarnings("unchecked")
- private static ServiceTracker newTracker(OsgiFramework osgi, Class trackedClass) {
- ServiceTracker tracker = new ServiceTracker(osgi.bundleContext(), trackedClass, null);
+ private static ServiceTracker<?,?> newTracker(OsgiFramework osgi, Class<?> trackedClass) {
+ ServiceTracker<?,?> tracker = new ServiceTracker<>(osgi.bundleContext(), trackedClass, null);
tracker.open();
return tracker;
}
diff --git a/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/MyBundleActivator.java b/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/MyBundleActivator.java
index 29ce713f606..13828aed324 100644
--- a/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/MyBundleActivator.java
+++ b/jdisc_core_test/test_bundles/app-g-act/src/main/java/com/yahoo/jdisc/bundle/MyBundleActivator.java
@@ -13,11 +13,11 @@ import org.osgi.framework.ServiceRegistration;
public class MyBundleActivator implements BundleActivator {
private MyService service;
- private ServiceRegistration registration;
+ private ServiceRegistration<?> registration;
@Override
public void start(BundleContext ctx) throws Exception {
- ServiceReference containerRef = ctx.getServiceReference(CurrentContainer.class.getName());
+ ServiceReference<?> containerRef = ctx.getServiceReference(CurrentContainer.class.getName());
service = new MyService((CurrentContainer)ctx.getService(containerRef));
registration = ctx.registerService(MyService.class.getName(), service, null);
}
diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/HttpRequest.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/HttpRequest.java
index ff80a8a845d..50806cc655d 100644
--- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/HttpRequest.java
+++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/HttpRequest.java
@@ -9,7 +9,8 @@ import com.yahoo.jdisc.handler.RequestHandler;
import com.yahoo.jdisc.handler.ResponseHandler;
import com.yahoo.jdisc.http.servlet.ServletOrJdiscHttpRequest;
import com.yahoo.jdisc.service.CurrentContainer;
-import org.jboss.netty.handler.codec.http.QueryStringDecoder;
+import org.eclipse.jetty.http.HttpURI;
+import org.eclipse.jetty.util.MultiMap;
import java.net.InetAddress;
import java.net.InetSocketAddress;
@@ -84,7 +85,7 @@ public class HttpRequest extends Request implements ServletOrJdiscHttpRequest {
this.method = method;
this.version = version;
this.remoteAddress = remoteAddress;
- this.parameters.putAll(new QueryStringDecoder(uri.toString(), true).getParameters());
+ this.parameters.putAll(getUriQueryParameters(uri));
if (connectedAtMillis != null) {
this.connectedAt = connectedAtMillis;
} else {
@@ -102,7 +103,7 @@ public class HttpRequest extends Request implements ServletOrJdiscHttpRequest {
this.method = method;
this.version = version;
this.remoteAddress = null;
- this.parameters.putAll(new QueryStringDecoder(uri.toString(), true).getParameters());
+ this.parameters.putAll(getUriQueryParameters(uri));
this.connectedAt = creationTime(TimeUnit.MILLISECONDS);
} catch (RuntimeException e) {
release();
@@ -110,6 +111,12 @@ public class HttpRequest extends Request implements ServletOrJdiscHttpRequest {
}
}
+ private static Map<String, List<String>> getUriQueryParameters(URI uri) {
+ MultiMap<String> queryParameters = new MultiMap<>();
+ new HttpURI(uri).decodeQueryTo(queryParameters);
+ return queryParameters;
+ }
+
public Method getMethod() {
return method;
}
diff --git a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/core/HeaderFieldsUtil.java b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/core/HeaderFieldsUtil.java
index 065276962f7..710820e7259 100644
--- a/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/core/HeaderFieldsUtil.java
+++ b/jdisc_http_service/src/main/java/com/yahoo/jdisc/http/core/HeaderFieldsUtil.java
@@ -3,10 +3,7 @@ package com.yahoo.jdisc.http.core;
import com.ning.http.client.RequestBuilder;
import com.yahoo.jdisc.HeaderFields;
-import org.jboss.netty.handler.codec.http.HttpChunkTrailer;
-import org.jboss.netty.handler.codec.http.HttpHeaders;
-import org.jboss.netty.handler.codec.http.HttpMessage;
-import org.jboss.netty.handler.codec.http.HttpResponse;
+import com.yahoo.jdisc.http.HttpHeaders;
import java.io.ByteArrayOutputStream;
import java.nio.charset.StandardCharsets;
@@ -27,24 +24,12 @@ public class HeaderFieldsUtil {
HttpHeaders.Names.CONTENT_LENGTH,
HttpHeaders.Names.TRANSFER_ENCODING));
- public static void copyHeaders(com.yahoo.jdisc.Response src, HttpResponse dst) {
- copyHeaderFields(src.headers(), newSimpleHeaders(dst));
- }
-
public static void copyHeaders(com.yahoo.jdisc.Request src, RequestBuilder dst) {
- copyHeaderFields(src.headers(), newSimpleHeaders(dst));
- }
-
- public static void copyTrailers(com.yahoo.jdisc.Response src, HttpResponse dst) {
- copyTrailers(src, newSimpleHeaders(dst));
- }
-
- public static void copyTrailers(com.yahoo.jdisc.Response src, HttpChunkTrailer dst) {
- copyTrailers(src, newSimpleHeaders(dst));
+ copyHeaderFields(src.headers(), dst::addHeader);
}
public static void copyTrailers(com.yahoo.jdisc.Request src, RequestBuilder dst) {
- copyTrailers(src, newSimpleHeaders(dst));
+ copyTrailers(src, dst::addHeader);
}
public static void copyTrailers(com.yahoo.jdisc.Request src, ByteArrayOutputStream dst) {
@@ -62,17 +47,6 @@ public class HeaderFieldsUtil {
}
}
- @SuppressWarnings("SynchronizationOnLocalVariableOrMethodParameter")
- public static void copyTrailers(com.yahoo.jdisc.Response src, SimpleHeaders dst) {
- if (!(src instanceof com.yahoo.jdisc.http.HttpResponse)) {
- return;
- }
- final HeaderFields trailers = ((com.yahoo.jdisc.http.HttpResponse)src).trailers();
- synchronized (trailers) {
- copyHeaderFields(trailers, dst);
- }
- }
-
private static void copyHeaderFields(HeaderFields src, SimpleHeaders dst) {
for (Map.Entry<String, List<String>> entry : src.entrySet()) {
String key = entry.getKey();
@@ -88,16 +62,6 @@ public class HeaderFieldsUtil {
}
}
- private static SimpleHeaders newSimpleHeaders(final RequestBuilder dst) {
- return new SimpleHeaders() {
-
- @Override
- public void addHeader(String name, String value) {
- dst.addHeader(name, value);
- }
- };
- }
-
private static SimpleHeaders newSimpleHeaders(final ByteArrayOutputStream dst) {
return new SimpleHeaders() {
@@ -115,28 +79,7 @@ public class HeaderFieldsUtil {
};
}
- private static SimpleHeaders newSimpleHeaders(final HttpMessage dst) {
- return new SimpleHeaders() {
-
- @Override
- public void addHeader(String name, String value) {
- dst.addHeader(name, value);
- }
- };
- }
-
- private static SimpleHeaders newSimpleHeaders(final HttpChunkTrailer dst) {
- return new SimpleHeaders() {
-
- @Override
- public void addHeader(String name, String value) {
- dst.addHeader(name, value);
- }
- };
- }
-
- private static interface SimpleHeaders {
-
- public void addHeader(String name, String value);
+ private interface SimpleHeaders {
+ void addHeader(String name, String value);
}
}
diff --git a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java
index 021a14b2ae7..cd106778129 100644
--- a/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java
+++ b/jdisc_http_service/src/test/java/com/yahoo/jdisc/http/HttpRequestTestCase.java
@@ -4,10 +4,6 @@ package com.yahoo.jdisc.http;
import com.yahoo.jdisc.Container;
import com.yahoo.jdisc.Request;
import com.yahoo.jdisc.service.CurrentContainer;
-import com.yahoo.jdisc.test.TestDriver;
-import org.jboss.netty.handler.codec.http.HttpHeaders;
-import org.jboss.netty.handler.codec.http.HttpMethod;
-import org.jboss.netty.handler.codec.http.HttpVersion;
import org.testng.annotations.Test;
import java.net.InetSocketAddress;
@@ -31,27 +27,6 @@ import static org.testng.AssertJUnit.assertTrue;
public class HttpRequestTestCase {
@Test
- public void requireThatMethodIsCompatibleWithNetty() {
- assertMethod(HttpRequest.Method.OPTIONS, HttpMethod.OPTIONS);
- assertMethod(HttpRequest.Method.GET, HttpMethod.GET);
- assertMethod(HttpRequest.Method.HEAD, HttpMethod.HEAD);
- assertMethod(HttpRequest.Method.POST, HttpMethod.POST);
- assertMethod(HttpRequest.Method.PUT, HttpMethod.PUT);
- assertMethod(HttpRequest.Method.PATCH, HttpMethod.PATCH);
- assertMethod(HttpRequest.Method.DELETE, HttpMethod.DELETE);
- assertMethod(HttpRequest.Method.TRACE, HttpMethod.TRACE);
- assertMethod(HttpRequest.Method.CONNECT, HttpMethod.CONNECT);
- assertEquals(9, HttpRequest.Method.values().length);
- }
-
- @Test
- public void requireThatVersionIsCompatibleWithNetty() {
- assertVersion(HttpRequest.Version.HTTP_1_0, HttpVersion.HTTP_1_0);
- assertVersion(HttpRequest.Version.HTTP_1_1, HttpVersion.HTTP_1_1);
- assertEquals(2, HttpRequest.Version.values().length);
- }
-
- @Test
public void requireThatSimpleServerConstructorsUseReasonableDefaults() {
final URI uri = URI.create("http://localhost/");
HttpRequest request = HttpRequest.newServerRequest(mockContainer(), uri);
@@ -221,18 +196,6 @@ public class HttpRequestTestCase {
assertEquals(cookies, request.decodeCookieHeader());
}
- private static void assertMethod(final HttpRequest.Method discMethod, final HttpMethod nettyMethod) {
- assertEquals(discMethod, HttpRequest.Method.valueOf(nettyMethod.getName()));
- assertEquals(discMethod, HttpRequest.Method.valueOf(nettyMethod.toString()));
- assertEquals(nettyMethod, HttpMethod.valueOf(discMethod.toString()));
- }
-
- private static void assertVersion(final HttpRequest.Version discVersion, final HttpVersion nettyVersion) {
- assertEquals(discVersion, HttpRequest.Version.fromString(nettyVersion.getText()));
- assertEquals(discVersion, HttpRequest.Version.fromString(nettyVersion.toString()));
- assertEquals(nettyVersion, HttpVersion.valueOf(discVersion.toString()));
- }
-
private static HttpRequest newRequest(final HttpRequest.Version version) throws Exception {
return HttpRequest.newServerRequest(
mockContainer(),
diff --git a/processing/src/main/java/com/yahoo/processing/Response.java b/processing/src/main/java/com/yahoo/processing/Response.java
index 44fbc7678fd..dc6a210142f 100644
--- a/processing/src/main/java/com/yahoo/processing/Response.java
+++ b/processing/src/main/java/com/yahoo/processing/Response.java
@@ -106,7 +106,7 @@ public class Response extends ListenableFreezableClass {
@SuppressWarnings("unchecked")
private static <D extends Data> void collectCompletionFutures(DataList<D> dataList, List<ListenableFuture<DataList<D>>> futures) {
- futures.add((ListenableFuture<DataList<D>>) dataList.complete());
+ futures.add(dataList.complete());
for (D data : dataList.asList()) {
if (data instanceof DataList)
collectCompletionFutures((DataList<D>) data, futures);
diff --git a/processing/src/main/java/com/yahoo/processing/test/ProcessorLibrary.java b/processing/src/main/java/com/yahoo/processing/test/ProcessorLibrary.java
index ea6f451b41b..ed0a47c0571 100644
--- a/processing/src/main/java/com/yahoo/processing/test/ProcessorLibrary.java
+++ b/processing/src/main/java/com/yahoo/processing/test/ProcessorLibrary.java
@@ -156,6 +156,7 @@ public class ProcessorLibrary {
* to render the datalist from each federated source in the order it completes.
*/
@SafeVarargs
+ @SuppressWarnings("varargs")
public Federator(boolean ordered, Chain<? extends Processor>... chains) {
this.chains = Arrays.asList(chains);
this.ordered = ordered;
@@ -205,6 +206,7 @@ public class ProcessorLibrary {
* to render the datalist from each federated source in the order it completes.
*/
@SafeVarargs
+ @SuppressWarnings("varargs")
public EagerReturnFederator(boolean ordered, Chain<? extends Processor>... chains) {
this.chains = Arrays.asList(chains);
this.ordered = ordered;
diff --git a/processing/src/test/java/com/yahoo/processing/test/documentation/Federator.java b/processing/src/test/java/com/yahoo/processing/test/documentation/Federator.java
index c69bdf0c85c..841b76d2a6b 100644
--- a/processing/src/test/java/com/yahoo/processing/test/documentation/Federator.java
+++ b/processing/src/test/java/com/yahoo/processing/test/documentation/Federator.java
@@ -21,8 +21,9 @@ public class Federator extends Processor {
private final List<Chain<? extends Processor>> chains;
@SafeVarargs
+ @SuppressWarnings("varargs")
public Federator(Chain<? extends Processor> ... chains) {
- this.chains= Arrays.asList(chains);
+ this.chains = Arrays.asList(chains);
}
@SuppressWarnings("unchecked")
diff --git a/statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java b/statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java
index 5e51c3b4754..698fc8a587d 100644
--- a/statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java
+++ b/statistics/src/test/java/com/yahoo/statistics/CounterGroupTestCase.java
@@ -21,7 +21,7 @@ public class CounterGroupTestCase extends junit.framework.TestCase {
// This is for testing CounterProxy
@Override
public void publish(LogRecord record) {
- com.yahoo.log.event.CountGroup msg = (com.yahoo.log.event.CountGroup) ((Object[]) record.getParameters())[0];
+ com.yahoo.log.event.CountGroup msg = (com.yahoo.log.event.CountGroup) record.getParameters()[0];
assertEquals("test", msg.getValue("name"));
String values = msg.getValue("values");
assertFalse("Unexpected value for a.", values.indexOf("a=500") == -1);
diff --git a/statistics/src/test/java/com/yahoo/statistics/ValueGroupTestCase.java b/statistics/src/test/java/com/yahoo/statistics/ValueGroupTestCase.java
index 1491575626f..fa2b56a6d38 100644
--- a/statistics/src/test/java/com/yahoo/statistics/ValueGroupTestCase.java
+++ b/statistics/src/test/java/com/yahoo/statistics/ValueGroupTestCase.java
@@ -21,7 +21,7 @@ public class ValueGroupTestCase extends junit.framework.TestCase {
@Override
public void publish(LogRecord record) {
- com.yahoo.log.event.ValueGroup msg = (com.yahoo.log.event.ValueGroup) ((Object[]) record.getParameters())[0];
+ com.yahoo.log.event.ValueGroup msg = (com.yahoo.log.event.ValueGroup) record.getParameters()[0];
assertEquals("test", msg.getValue("name"));
String values = msg.getValue("values");
assertFalse("Unexpected value for a.", values.indexOf("a=-50.0") == -1);
diff --git a/statistics/src/test/java/com/yahoo/statistics/ValueTestCase.java b/statistics/src/test/java/com/yahoo/statistics/ValueTestCase.java
index b837b775040..88c65b5b283 100644
--- a/statistics/src/test/java/com/yahoo/statistics/ValueTestCase.java
+++ b/statistics/src/test/java/com/yahoo/statistics/ValueTestCase.java
@@ -132,7 +132,7 @@ public class ValueTestCase extends junit.framework.TestCase {
if (!(record.getParameters()[0] instanceof com.yahoo.log.event.Histogram)) {
return;
}
- com.yahoo.log.event.Histogram msg = (com.yahoo.log.event.Histogram) ((Object[]) record.getParameters())[0];
+ com.yahoo.log.event.Histogram msg = (com.yahoo.log.event.Histogram) record.getParameters()[0];
assertEquals(NALLE, msg.getValue("name"));
assertEquals(histogram, msg.getValue("counts"));
assertEquals(representation, msg.getValue("representation"));
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/state/ClusterState.java b/vdslib/src/main/java/com/yahoo/vdslib/state/ClusterState.java
index a54f1971d21..0b8a7457e51 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/state/ClusterState.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/state/ClusterState.java
@@ -66,6 +66,7 @@ public class ClusterState implements Cloneable {
}
}
+ @Override
public boolean equals(Object o) {
if (!(o instanceof ClusterState)) { return false; }
ClusterState other = (ClusterState) o;
@@ -80,6 +81,11 @@ public class ClusterState implements Cloneable {
return true;
}
+ @Override
+ public int hashCode() {
+ return java.util.Objects.hash(version, state, distributionBits, nodeCount, nodeStates);
+ }
+
@FunctionalInterface
private interface NodeStateCmp {
boolean similar(NodeType nodeType, NodeState lhs, NodeState rhs);
diff --git a/vdslib/src/main/java/com/yahoo/vdslib/state/DiskState.java b/vdslib/src/main/java/com/yahoo/vdslib/state/DiskState.java
index fb91af14f90..e0d9ad533f4 100644
--- a/vdslib/src/main/java/com/yahoo/vdslib/state/DiskState.java
+++ b/vdslib/src/main/java/com/yahoo/vdslib/state/DiskState.java
@@ -115,6 +115,7 @@ public class DiskState implements Cloneable {
return sb.toString();
}
+ @Override
public boolean equals(Object o) {
if (!(o instanceof DiskState)) { return false; }
DiskState other = (DiskState) o;
@@ -125,4 +126,10 @@ public class DiskState implements Cloneable {
}
return false;
}
+
+ @Override
+ public int hashCode() {
+ // NOTE: capacity cannot be part of the hashCode
+ return state.hashCode();
+ }
}
diff --git a/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java b/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java
index abd6ef70d35..804480569d6 100644
--- a/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java
+++ b/vdslib/src/test/java/com/yahoo/vdslib/distribution/DistributionTestFactory.java
@@ -43,6 +43,7 @@ public class DistributionTestFactory extends CrossPlatformTestFactory {
failure = Failure.NONE;
}
+ @Override
public boolean equals(Object other) {
if (!(other instanceof Test)) return false;
Test t = (Test) other;
@@ -51,6 +52,11 @@ public class DistributionTestFactory extends CrossPlatformTestFactory {
&& failure.equals(t.failure));
}
+ @Override
+ public int hashCode() {
+ return java.util.Objects.hash(bucket, nodes, disks);
+ }
+
public String toString() {
StringBuilder sb = new StringBuilder().append(bucket.toString());
if (failure == Failure.NONE) {
diff --git a/vespajlib/src/main/java/com/yahoo/javacc/FastCharStream.java b/vespajlib/src/main/java/com/yahoo/javacc/FastCharStream.java
index 892240ce253..5468ba915fc 100644
--- a/vespajlib/src/main/java/com/yahoo/javacc/FastCharStream.java
+++ b/vespajlib/src/main/java/com/yahoo/javacc/FastCharStream.java
@@ -27,12 +27,12 @@ public class FastCharStream {
return inputArr[readPos++];
}
- @SuppressWarnings("deprecation")
+ @Deprecated
public int getColumn() {
return getEndColumn();
}
- @SuppressWarnings("deprecation")
+ @Deprecated
public int getLine() {
return getEndLine();
}
@@ -128,4 +128,4 @@ public class FastCharStream {
return Integer.valueOf(str.substring(from, to));
}
-} \ No newline at end of file
+}
diff --git a/vespajlib/src/test/java/com/yahoo/javacc/FastCharStreamTestCase.java b/vespajlib/src/test/java/com/yahoo/javacc/FastCharStreamTestCase.java
index a73fffc6c5c..ab444b29486 100644
--- a/vespajlib/src/test/java/com/yahoo/javacc/FastCharStreamTestCase.java
+++ b/vespajlib/src/test/java/com/yahoo/javacc/FastCharStreamTestCase.java
@@ -30,25 +30,27 @@ public class FastCharStreamTestCase {
@Test
public void requireThatColumnIsTracked() throws IOException {
FastCharStream input = new FastCharStream("foo");
- assertEquals(1, input.getColumn());
+ assertEquals(1, input.getEndColumn());
input.readChar();
- assertEquals(2, input.getColumn());
+ assertEquals(2, input.getEndColumn());
input.readChar();
- assertEquals(3, input.getColumn());
+ assertEquals(3, input.getEndColumn());
input.readChar();
- assertEquals(4, input.getColumn());
+ assertEquals(4, input.getEndColumn());
}
@Test
public void requireThatLineIsNotTracked() throws IOException {
FastCharStream input = new FastCharStream("f\no");
- assertEquals(-1, input.getLine());
+ assertEquals(-1, input.getEndLine());
+ assertEquals(-1, input.getBeginLine());
input.readChar();
- assertEquals(-1, input.getLine());
+ assertEquals(-1, input.getBeginLine());
input.readChar();
- assertEquals(-1, input.getLine());
+ assertEquals(-1, input.getBeginLine());
input.readChar();
- assertEquals(-1, input.getLine());
+ assertEquals(-1, input.getBeginLine());
+ assertEquals(-1, input.getEndLine());
}
diff --git a/vespalib/src/tests/net/socket/socket_test.cpp b/vespalib/src/tests/net/socket/socket_test.cpp
index 1c6b027a2b3..bf0a5a2f273 100644
--- a/vespalib/src/tests/net/socket/socket_test.cpp
+++ b/vespalib/src/tests/net/socket/socket_test.cpp
@@ -2,14 +2,30 @@
#include <vespa/vespalib/testkit/test_kit.h>
#include <vespa/vespalib/net/socket_spec.h>
#include <vespa/vespalib/net/server_socket.h>
+#include <vespa/vespalib/net/socket_options.h>
#include <vespa/vespalib/net/socket.h>
#include <vespa/vespalib/util/stringfmt.h>
+#include <vespa/vespalib/test/socket_options_verifier.h>
#include <thread>
#include <functional>
#include <chrono>
using namespace vespalib;
+bool ipv4_enabled = false;
+bool ipv6_enabled = false;
+
+int my_inet() {
+ if (ipv6_enabled) {
+ return AF_INET6;
+ }
+ if (ipv4_enabled) {
+ return AF_INET;
+ }
+ TEST_ERROR("tcp/ip support not detected");
+ return AF_UNIX;
+}
+
bool is_socket(const vespalib::string &path) {
struct stat info;
if (path.empty() || (lstat(path.c_str(), &info) != 0)) {
@@ -109,6 +125,8 @@ TEST("my local address") {
for (const auto &addr: list) {
EXPECT_TRUE(addr.is_wildcard());
EXPECT_TRUE(addr.is_ipv4() || addr.is_ipv6());
+ ipv4_enabled |= addr.is_ipv4();
+ ipv6_enabled |= addr.is_ipv6();
EXPECT_TRUE(!addr.is_ipc());
EXPECT_TRUE(!addr.is_abstract());
EXPECT_EQUAL(addr.port(), 4080);
@@ -299,4 +317,72 @@ TEST_MT_FFF("require that abstract and file-based unix domain sockets are not in
TEST_DO(verify_socket_io(is_server, *socket));
}
+TEST("require that sockets can be set blocking and non-blocking") {
+ SocketHandle handle(socket(my_inet(), SOCK_STREAM, 0));
+ test::SocketOptionsVerifier verifier(handle.get());
+ EXPECT_TRUE(!SocketOptions::set_blocking(-1, true));
+ EXPECT_TRUE(SocketOptions::set_blocking(handle.get(), true));
+ TEST_DO(verifier.verify_blocking(true));
+ EXPECT_TRUE(SocketOptions::set_blocking(handle.get(), false));
+ TEST_DO(verifier.verify_blocking(false));
+}
+
+TEST("require that tcp nodelay can be enabled and disabled") {
+ SocketHandle handle(socket(my_inet(), SOCK_STREAM, 0));
+ test::SocketOptionsVerifier verifier(handle.get());
+ EXPECT_TRUE(!SocketOptions::set_nodelay(-1, true));
+ EXPECT_TRUE(SocketOptions::set_nodelay(handle.get(), true));
+ TEST_DO(verifier.verify_nodelay(true));
+ EXPECT_TRUE(SocketOptions::set_nodelay(handle.get(), false));
+ TEST_DO(verifier.verify_nodelay(false));
+}
+
+TEST("require that reuse addr can be set and cleared") {
+ SocketHandle handle(socket(my_inet(), SOCK_STREAM, 0));
+ test::SocketOptionsVerifier verifier(handle.get());
+ EXPECT_TRUE(!SocketOptions::set_reuse_addr(-1, true));
+ EXPECT_TRUE(SocketOptions::set_reuse_addr(handle.get(), true));
+ TEST_DO(verifier.verify_reuse_addr(true));
+ EXPECT_TRUE(SocketOptions::set_reuse_addr(handle.get(), false));
+ TEST_DO(verifier.verify_reuse_addr(false));
+}
+
+TEST("require that ipv6_only can be set and cleared") {
+ if (ipv6_enabled) {
+ SocketHandle handle(socket(my_inet(), SOCK_STREAM, 0));
+ test::SocketOptionsVerifier verifier(handle.get());
+ EXPECT_TRUE(!SocketOptions::set_ipv6_only(-1, true));
+ EXPECT_TRUE(SocketOptions::set_ipv6_only(handle.get(), true));
+ TEST_DO(verifier.verify_ipv6_only(true));
+ EXPECT_TRUE(SocketOptions::set_ipv6_only(handle.get(), false));
+ TEST_DO(verifier.verify_ipv6_only(false));
+ } else {
+ fprintf(stderr, "WARNING: skipping ipv6_only test since ipv6 is disabled");
+ }
+}
+
+TEST("require that tcp keepalive can be set and cleared") {
+ SocketHandle handle(socket(my_inet(), SOCK_STREAM, 0));
+ test::SocketOptionsVerifier verifier(handle.get());
+ EXPECT_TRUE(!SocketOptions::set_keepalive(-1, true));
+ EXPECT_TRUE(SocketOptions::set_keepalive(handle.get(), true));
+ TEST_DO(verifier.verify_keepalive(true));
+ EXPECT_TRUE(SocketOptions::set_keepalive(handle.get(), false));
+ TEST_DO(verifier.verify_keepalive(false));
+}
+
+TEST("require that tcp lingering can be adjusted") {
+ SocketHandle handle(socket(my_inet(), SOCK_STREAM, 0));
+ test::SocketOptionsVerifier verifier(handle.get());
+ EXPECT_TRUE(!SocketOptions::set_linger(-1, true, 0));
+ EXPECT_TRUE(SocketOptions::set_linger(handle.get(), true, 0));
+ TEST_DO(verifier.verify_linger(true, 0));
+ EXPECT_TRUE(SocketOptions::set_linger(handle.get(), true, 10));
+ TEST_DO(verifier.verify_linger(true, 10));
+ EXPECT_TRUE(SocketOptions::set_linger(handle.get(), false, 0));
+ TEST_DO(verifier.verify_linger(false, 0));
+ EXPECT_TRUE(SocketOptions::set_linger(handle.get(), false, 10));
+ TEST_DO(verifier.verify_linger(false, 0));
+}
+
TEST_MAIN() { TEST_RUN_ALL(); }
diff --git a/vespalib/src/vespa/vespalib/net/CMakeLists.txt b/vespalib/src/vespa/vespalib/net/CMakeLists.txt
index 303d16db41e..4350cd49fed 100644
--- a/vespalib/src/vespa/vespalib/net/CMakeLists.txt
+++ b/vespalib/src/vespa/vespalib/net/CMakeLists.txt
@@ -6,6 +6,7 @@ vespa_add_library(vespalib_vespalib_net OBJECT
socket.cpp
socket_address.cpp
socket_handle.cpp
+ socket_options.cpp
socket_spec.cpp
DEPENDS
)
diff --git a/vespalib/src/vespa/vespalib/net/socket_options.cpp b/vespalib/src/vespa/vespalib/net/socket_options.cpp
new file mode 100644
index 00000000000..6a29dbbf16d
--- /dev/null
+++ b/vespalib/src/vespa/vespalib/net/socket_options.cpp
@@ -0,0 +1,73 @@
+// Copyright 2017 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#include "socket_options.h"
+
+#include <fcntl.h>
+#include <netinet/in.h>
+#include <netinet/tcp.h>
+#include <string.h>
+#include <sys/socket.h>
+#include <sys/types.h>
+#include <unistd.h>
+
+namespace vespalib {
+
+namespace {
+
+bool set_bool_opt(int fd, int level, int name, bool value) {
+ int data = value;
+ return (setsockopt(fd, level, name, &data, sizeof(data)) == 0);
+}
+
+} // namespace vespalib::<unnamed>
+
+bool
+SocketOptions::set_blocking(int fd, bool value)
+{
+ int flags = fcntl(fd, F_GETFL, NULL);
+ if (flags != -1) {
+ if (value) {
+ flags &= ~O_NONBLOCK; // clear non-blocking flag
+ } else {
+ flags |= O_NONBLOCK; // set non-blocking flag
+ }
+ return (fcntl(fd, F_SETFL, flags) == 0);
+ }
+ return false;
+}
+
+bool
+SocketOptions::set_nodelay(int fd, bool value)
+{
+ return set_bool_opt(fd, IPPROTO_TCP, TCP_NODELAY, value);
+}
+
+bool
+SocketOptions::set_reuse_addr(int fd, bool value)
+{
+ return set_bool_opt(fd, SOL_SOCKET, SO_REUSEADDR, value);
+}
+
+bool
+SocketOptions::set_ipv6_only(int fd, bool value)
+{
+ return set_bool_opt(fd, IPPROTO_IPV6, IPV6_V6ONLY, value);
+}
+
+bool
+SocketOptions::set_keepalive(int fd, bool value)
+{
+ return set_bool_opt(fd, SOL_SOCKET, SO_KEEPALIVE, value);
+}
+
+bool
+SocketOptions::set_linger(int fd, bool enable, int value)
+{
+ struct linger data;
+ memset(&data, 0, sizeof(data));
+ data.l_onoff = enable;
+ data.l_linger = value;
+ return (setsockopt(fd, SOL_SOCKET, SO_LINGER, &data, sizeof(data)) == 0);
+}
+
+} // namespace vespalib
diff --git a/vespalib/src/vespa/vespalib/net/socket_options.h b/vespalib/src/vespa/vespalib/net/socket_options.h
new file mode 100644
index 00000000000..fe9b5da7325
--- /dev/null
+++ b/vespalib/src/vespa/vespalib/net/socket_options.h
@@ -0,0 +1,20 @@
+// Copyright 2017 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+namespace vespalib {
+
+/**
+ * Low-level functions used to adjust various socket related
+ * options. Return values indicate success/failure.
+ **/
+struct SocketOptions {
+ static bool set_blocking(int fd, bool value);
+ static bool set_nodelay(int fd, bool value);
+ static bool set_reuse_addr(int fd, bool value);
+ static bool set_ipv6_only(int fd, bool value);
+ static bool set_keepalive(int fd, bool value);
+ static bool set_linger(int fd, bool enable, int value);
+};
+
+} // namespace vespalib
diff --git a/vespalib/src/vespa/vespalib/test/socket_options_verifier.h b/vespalib/src/vespa/vespalib/test/socket_options_verifier.h
new file mode 100644
index 00000000000..e5623288f6f
--- /dev/null
+++ b/vespalib/src/vespa/vespalib/test/socket_options_verifier.h
@@ -0,0 +1,60 @@
+// Copyright 2017 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
+
+#pragma once
+
+#include <vespa/vespalib/testkit/test_kit.h>
+
+namespace vespalib {
+namespace test {
+
+namespace {
+
+void verify_bool_opt(int fd, int level, int name, bool expect) {
+ int data = 0;
+ socklen_t size = sizeof(data);
+ EXPECT_EQUAL(getsockopt(fd, level, name, &data, &size), 0);
+ EXPECT_EQUAL(size, sizeof(data));
+ EXPECT_EQUAL(data, int(expect));
+}
+
+} // namespace vespalib::test::<unnamed>
+
+/**
+ * Verifier of socket options for testing purposes
+ **/
+struct SocketOptionsVerifier {
+ int fd;
+ SocketOptionsVerifier(int fd_in) : fd(fd_in) {}
+ void verify_blocking(bool value) {
+ int flags = fcntl(fd, F_GETFL, NULL);
+ EXPECT_NOT_EQUAL(flags, -1);
+ EXPECT_EQUAL(((flags & O_NONBLOCK) == 0), value);
+ }
+ void verify_nodelay(bool value) {
+ TEST_DO(verify_bool_opt(fd, IPPROTO_TCP, TCP_NODELAY, value));
+ }
+ void verify_reuse_addr(bool value) {
+ TEST_DO(verify_bool_opt(fd, SOL_SOCKET, SO_REUSEADDR, value));
+ }
+ void verify_ipv6_only(bool value) {
+ TEST_DO(verify_bool_opt(fd, IPPROTO_IPV6, IPV6_V6ONLY, value));
+ }
+ void verify_keepalive(bool value) {
+ TEST_DO(verify_bool_opt(fd, SOL_SOCKET, SO_KEEPALIVE, value));
+ }
+ void verify_linger(bool enable, int value)
+ {
+ struct linger data;
+ socklen_t size = sizeof(data);
+ memset(&data, 0, sizeof(data));
+ EXPECT_EQUAL(getsockopt(fd, SOL_SOCKET, SO_LINGER, &data, &size), 0);
+ EXPECT_EQUAL(size, sizeof(data));
+ EXPECT_EQUAL(enable, data.l_onoff);
+ if (enable) {
+ EXPECT_EQUAL(value, data.l_linger);
+ }
+ }
+};
+
+} // namespace vespalib::test
+} // namespace vespalib
diff --git a/yolean/pom.xml b/yolean/pom.xml
index 75809187eba..9d750062135 100644
--- a/yolean/pom.xml
+++ b/yolean/pom.xml
@@ -53,6 +53,8 @@
<compilerArgs>
<arg>-Xlint:all</arg>
<arg>-Xlint:-serial</arg>
+ <arg>-Xlint:-varargs</arg>
+ <arg>-Werror</arg>
</compilerArgs>
</configuration>
</plugin>
diff --git a/yolean/src/main/java/com/yahoo/yolean/chain/ChainBuilder.java b/yolean/src/main/java/com/yahoo/yolean/chain/ChainBuilder.java
index ad44f2416d4..7942297f8c5 100644
--- a/yolean/src/main/java/com/yahoo/yolean/chain/ChainBuilder.java
+++ b/yolean/src/main/java/com/yahoo/yolean/chain/ChainBuilder.java
@@ -216,7 +216,7 @@ public final class ChainBuilder<T> {
return result;
}
- private static void addClassName(Map<String, Set<Vertex>> providedNamesToVertex, ComponentVertex vertex) {
+ private static void addClassName(Map<String, Set<Vertex>> providedNamesToVertex, ComponentVertex<?> vertex) {
String className = vertex.component.getClass().getName();
getIdentitySet(providedNamesToVertex, className).add(vertex);
}
diff --git a/yolean/src/main/java/com/yahoo/yolean/chain/Dependencies.java b/yolean/src/main/java/com/yahoo/yolean/chain/Dependencies.java
index ca59c373351..52e45d236c1 100644
--- a/yolean/src/main/java/com/yahoo/yolean/chain/Dependencies.java
+++ b/yolean/src/main/java/com/yahoo/yolean/chain/Dependencies.java
@@ -35,10 +35,8 @@ public class Dependencies<T> {
return new Dependencies<>(new Order<>(null, classes, null), Order.<T>emptyOrder(), null);
}
- @SuppressWarnings("unchecked")
- public static Dependencies before(String... providedNames) {
- // Does not use type parameters due to Javas limited type inference.
- return new Dependencies(new Order(null, null, providedNames), Order.emptyOrder(), null);
+ public static <T> Dependencies<T> before(String... providedNames) {
+ return new Dependencies<>(new Order<T>(null, null, providedNames), Order.<T>emptyOrder(), null);
}
@SafeVarargs
@@ -51,16 +49,12 @@ public class Dependencies<T> {
return new Dependencies<>(Order.<T>emptyOrder(), new Order<>(null, classes, null), null);
}
- @SuppressWarnings("unchecked")
- public static Dependencies after(String... providedNames) {
- // Does not use type parameters due to Javas limited type inference.
- return new Dependencies(Order.emptyOrder(), new Order(null, null, providedNames), null);
+ public static <T> Dependencies<T> after(String... providedNames) {
+ return new Dependencies<>(Order.<T>emptyOrder(), new Order<T>(null, null, providedNames), null);
}
- @SuppressWarnings("unchecked")
- public static Dependencies provides(String... names) {
- // Does not use type parameters due to Javas limited type inference.
- return new Dependencies(Order.emptyOrder(), Order.emptyOrder(), names);
+ public static <T> Dependencies<T> provides(String... names) {
+ return new Dependencies<>(Order.<T>emptyOrder(), Order.<T>emptyOrder(), names);
}
public static <T> Dependencies<T> emptyDependencies() {
@@ -131,7 +125,7 @@ public class Dependencies<T> {
try {
List<String> values = new ArrayList<>();
- Class clazz = component.getClass();
+ Class<?> clazz = component.getClass();
while (clazz != null) {
Annotation annotation = clazz.getAnnotation(annotationClass);
if (annotation != null) {