From 63f234cd407faa945b709f79adec69ff541921e9 Mon Sep 17 00:00:00 2001 From: Tomas Lazaro Date: Tue, 23 Feb 2016 14:21:47 -0800 Subject: [PATCH] Checkstyle and Java xlint violations will now fail the build. --- build.gradle | 7 ++ config/checkstyle/checkstyle.xml | 2 +- .../datastream/DatastreamRestClient.java | 25 +++---- .../common/DatastreamNotFoundException.java | 2 + .../common/DatastreamRuntimeException.java | 1 + .../DatastreamValidationException.java | 2 + .../SchemaRegistryException.java | 1 + .../api/transport/TransportException.java | 1 + .../datastream/server/Coordinator.java | 10 +-- .../datastream/server/CoordinatorEvent.java | 62 +++++++++--------- .../datastream/server/EventProducer.java | 2 +- .../datastream/server/EventProducerPool.java | 1 - .../server/dms/DatastreamResources.java | 1 + .../datastream/server/KafkaTestUtils.java | 8 +-- .../datastream/server/TestCoordinator.java | 2 + .../server/TestDatastreamServer.java | 5 -- .../datastream/server/TestEventProducer.java | 3 +- .../assignment/TestLoadbalancingStrategy.java | 16 ++--- .../server/MockSchemaRegistryProvider.java | 2 +- .../event/generator/GlobalSettings.java | 1 + .../event/generator/UnknownTypeException.java | 2 +- .../linkedin/datastream/common/JsonUtils.java | 2 +- .../datastream/common/ReflectionUtils.java | 15 +++-- .../common/VerifiableProperties.java | 2 +- gradle.properties | 2 + gradle/wrapper/gradle-wrapper.jar | Bin 50557 -> 53636 bytes gradle/wrapper/gradle-wrapper.properties | 4 +- gradlew | 10 +-- 28 files changed, 102 insertions(+), 89 deletions(-) diff --git a/build.gradle b/build.gradle index 1e134eab1..7ce5e44e3 100644 --- a/build.gradle +++ b/build.gradle @@ -39,6 +39,7 @@ subprojects { configFile = file("${project.rootDir}/config/checkstyle/checkstyle.xml") sourceSets = [ getProject().sourceSets.main, getProject().sourceSets.test ] toolVersion = "6.7" + ignoreFailures = false } spec['product'] = ['pegasus': @@ -92,6 +93,12 @@ subprojects { attributes 'Implementation-Title': 'Datastream' } } + + tasks.withType(JavaCompile) { + // Skipping 'deprecation' since pegasus generates problematic files and 'fallthrough' since it can't be suppressed + // Xlint:all - [deprecation, fallthrough] + options.compilerArgs = ["-Xlint:cast,classfile,dep-ann,divzero,empty,finally,options,overrides,path,processing,rawtypes,serial,static,try,unchecked,varargs", "-Werror"] + } } project(':datastream-common') { diff --git a/config/checkstyle/checkstyle.xml b/config/checkstyle/checkstyle.xml index c0c213a33..220e703ff 100644 --- a/config/checkstyle/checkstyle.xml +++ b/config/checkstyle/checkstyle.xml @@ -7,7 +7,7 @@ LinkedIn Java style. --> - + diff --git a/datastream-client/src/main/java/com/linkedin/datastream/DatastreamRestClient.java b/datastream-client/src/main/java/com/linkedin/datastream/DatastreamRestClient.java index 6968d491b..cd821f091 100644 --- a/datastream-client/src/main/java/com/linkedin/datastream/DatastreamRestClient.java +++ b/datastream-client/src/main/java/com/linkedin/datastream/DatastreamRestClient.java @@ -2,17 +2,16 @@ import com.linkedin.common.callback.FutureCallback; import com.linkedin.datastream.common.Datastream; -import com.linkedin.datastream.common.DatastreamException; import com.linkedin.datastream.common.DatastreamNotFoundException; import com.linkedin.datastream.common.DatastreamRuntimeException; -import com.linkedin.datastream.server.dms.BootstrapBuilders; -import com.linkedin.datastream.server.dms.DatastreamBuilders; +import com.linkedin.datastream.server.dms.BootstrapRequestBuilders; +import com.linkedin.datastream.server.dms.DatastreamRequestBuilders; import com.linkedin.r2.RemoteInvocationException; import com.linkedin.r2.transport.common.Client; import com.linkedin.r2.transport.common.bridge.client.TransportClientAdapter; import com.linkedin.r2.transport.http.client.HttpClientFactory; import com.linkedin.restli.client.ActionRequest; -import com.linkedin.restli.client.CreateRequest; +import com.linkedin.restli.client.CreateIdRequest; import com.linkedin.restli.client.DeleteRequest; import com.linkedin.restli.client.GetAllRequest; import com.linkedin.restli.client.GetRequest; @@ -20,7 +19,9 @@ import com.linkedin.restli.client.RestClient; import com.linkedin.restli.client.RestLiResponseException; import com.linkedin.restli.common.CollectionResponse; +import com.linkedin.restli.common.EmptyRecord; import com.linkedin.restli.common.HttpStatus; +import com.linkedin.restli.common.IdResponse; import java.util.Collections; import java.util.List; @@ -30,14 +31,14 @@ */ public class DatastreamRestClient { - private final DatastreamBuilders _builders; + private final DatastreamRequestBuilders _builders; private final RestClient _restClient; - private final BootstrapBuilders _bootstrapBuilders; + private final BootstrapRequestBuilders _bootstrapBuilders; private final HttpClientFactory _httpClient; public DatastreamRestClient(String dsmUri) { - _builders = new DatastreamBuilders(); - _bootstrapBuilders = new BootstrapBuilders(); + _builders = new DatastreamRequestBuilders(); + _bootstrapBuilders = new BootstrapRequestBuilders(); _httpClient = new HttpClientFactory(); final Client r2Client = new TransportClientAdapter(_httpClient.getClient(Collections.emptyMap())); _restClient = new RestClient(r2Client, dsmUri); @@ -143,8 +144,8 @@ public List getAllDatastreams(int start, int count) { * while sending the request or receiving the response. */ public void createDatastream(Datastream datastream) { - CreateRequest request = _builders.create().input(datastream).build(); - ResponseFuture datastreamResponseFuture = _restClient.sendRequest(request); + CreateIdRequest request = _builders.create().input(datastream).build(); + ResponseFuture> datastreamResponseFuture = _restClient.sendRequest(request); try { datastreamResponseFuture.getResponse(); } catch (RemoteInvocationException e) { @@ -167,7 +168,7 @@ public void createDatastream(Datastream datastream) { * */ public Datastream createBootstrapDatastream(String datastreamName) { - ActionRequest request = _bootstrapBuilders.actionCreate().paramBaseDatastream(datastreamName).build(); + ActionRequest request = _bootstrapBuilders.actionCreate().baseDatastreamParam(datastreamName).build(); ResponseFuture datastreamResponseFuture = _restClient.sendRequest(request); try { return datastreamResponseFuture.getResponse().getEntity(); @@ -193,7 +194,7 @@ public Datastream createBootstrapDatastream(String datastreamName) { */ public void deleteDatastream(String datastreamName) { DeleteRequest request = _builders.delete().id(datastreamName).build(); - ResponseFuture response = _restClient.sendRequest(request); + ResponseFuture response = _restClient.sendRequest(request); try { response.getResponse(); } catch (RemoteInvocationException e) { diff --git a/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamNotFoundException.java b/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamNotFoundException.java index ff649b3f9..660b32ad2 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamNotFoundException.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamNotFoundException.java @@ -4,6 +4,8 @@ * Exception when the datastream is not found. */ public class DatastreamNotFoundException extends DatastreamRuntimeException { + private static final long serialVersionUID = 1; + public DatastreamNotFoundException(String datastreamName, Throwable e) { super(String.format("Datastream %s is not found", datastreamName), e); } diff --git a/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamRuntimeException.java b/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamRuntimeException.java index 232921909..e0bb2dd94 100644 --- a/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamRuntimeException.java +++ b/datastream-common/src/main/java/com/linkedin/datastream/common/DatastreamRuntimeException.java @@ -4,6 +4,7 @@ * Common Datastream exception for all unchecked exceptions */ public class DatastreamRuntimeException extends RuntimeException { + private static final long serialVersionUID = 1; public DatastreamRuntimeException() { super(); diff --git a/datastream-server-api/src/main/java/com/linkedin/datastream/server/api/connector/DatastreamValidationException.java b/datastream-server-api/src/main/java/com/linkedin/datastream/server/api/connector/DatastreamValidationException.java index c4ff253b9..66afc1ef2 100644 --- a/datastream-server-api/src/main/java/com/linkedin/datastream/server/api/connector/DatastreamValidationException.java +++ b/datastream-server-api/src/main/java/com/linkedin/datastream/server/api/connector/DatastreamValidationException.java @@ -4,6 +4,8 @@ public class DatastreamValidationException extends DatastreamException { + private static final long serialVersionUID = 1; + public DatastreamValidationException() { super(); } diff --git a/datastream-server-api/src/main/java/com/linkedin/datastream/server/api/schemaregistry/SchemaRegistryException.java b/datastream-server-api/src/main/java/com/linkedin/datastream/server/api/schemaregistry/SchemaRegistryException.java index 8af3d3fd2..673c81543 100644 --- a/datastream-server-api/src/main/java/com/linkedin/datastream/server/api/schemaregistry/SchemaRegistryException.java +++ b/datastream-server-api/src/main/java/com/linkedin/datastream/server/api/schemaregistry/SchemaRegistryException.java @@ -4,6 +4,7 @@ * Exception class for all the schema registry provider exceptions. */ public class SchemaRegistryException extends Exception { + private static final long serialVersionUID = 1; public SchemaRegistryException() { super(); diff --git a/datastream-server-api/src/main/java/com/linkedin/datastream/server/api/transport/TransportException.java b/datastream-server-api/src/main/java/com/linkedin/datastream/server/api/transport/TransportException.java index 48cae94da..ccc64af37 100644 --- a/datastream-server-api/src/main/java/com/linkedin/datastream/server/api/transport/TransportException.java +++ b/datastream-server-api/src/main/java/com/linkedin/datastream/server/api/transport/TransportException.java @@ -4,6 +4,7 @@ * Exception class for all the transport related exceptions. */ public class TransportException extends Exception { + private static final long serialVersionUID = 1; public TransportException() { super(); diff --git a/datastream-server/src/main/java/com/linkedin/datastream/server/Coordinator.java b/datastream-server/src/main/java/com/linkedin/datastream/server/Coordinator.java index 12892d205..7bba26d5d 100644 --- a/datastream-server/src/main/java/com/linkedin/datastream/server/Coordinator.java +++ b/datastream-server/src/main/java/com/linkedin/datastream/server/Coordinator.java @@ -439,7 +439,7 @@ protected synchronized void handleEvent(CoordinatorEvent event) { break; case HANDLE_INSTANCE_ERROR: - handleInstanceError(event); + handleInstanceError((CoordinatorEvent.HandleInstanceError) event); break; default: throw new Exception(String.format("Unknown event type %s.", event.getType())); @@ -451,11 +451,11 @@ protected synchronized void handleEvent(CoordinatorEvent event) { LOG.info("END: Handle event " + event); } - // when we encouter an error, we need to persist the error message in zookeeper. We only persist the + // when we encounter an error, we need to persist the error message in zookeeper. We only persist the // first 10 messages. Why we put this logic in event loop instead of synchronously handle it? This // is because the same reason that can result in error can also result in the failure of persisting // the error message. - private void handleInstanceError(CoordinatorEvent event) { + private void handleInstanceError(CoordinatorEvent.HandleInstanceError event) { String msg = event.getEventData(); _adapter.zkSaveInstanceError(msg); } @@ -472,7 +472,7 @@ private void handleDatastreamAddOrDelete() { List newDatastreams = _adapter.getAllDatastreams(); // do nothing if there is zero datastreams - if (newDatastreams.size() == 0) { + if (newDatastreams.isEmpty()) { LOG.warn("Received a new datastream event, but there were no datastreams"); return; } @@ -555,7 +555,7 @@ private void handleLeaderDoAssignment() { // Add the tasks for this connector type to the instance tasksByConnectorAndInstance.get(instance).forEach(task -> { // Each task must have a valid zkAdapter - ((DatastreamTaskImpl)task).setZkAdapter(_adapter); + ((DatastreamTaskImpl) task).setZkAdapter(_adapter); assigmentsByInstance.get(instance).add(task); }); } diff --git a/datastream-server/src/main/java/com/linkedin/datastream/server/CoordinatorEvent.java b/datastream-server/src/main/java/com/linkedin/datastream/server/CoordinatorEvent.java index d5d177ff9..7180a44b3 100644 --- a/datastream-server/src/main/java/com/linkedin/datastream/server/CoordinatorEvent.java +++ b/datastream-server/src/main/java/com/linkedin/datastream/server/CoordinatorEvent.java @@ -1,6 +1,6 @@ package com.linkedin.datastream.server; -public class CoordinatorEvent { +public class CoordinatorEvent { public enum EventType { LEADER_DO_ASSIGNMENT, @@ -9,55 +9,57 @@ public enum EventType { HANDLE_INSTANCE_ERROR } - private final EventType _eventType; - private T _eventData; + public static final CoordinatorEvent LEADER_DO_ASSIGNMENT_EVENT = new CoordinatorEvent(EventType.LEADER_DO_ASSIGNMENT); + public static final CoordinatorEvent HANDLE_ASSIGNMENT_CHANGE_EVENT = new CoordinatorEvent(EventType.HANDLE_ASSIGNMENT_CHANGE); + public static final CoordinatorEvent HANDLE_ADD_OR_DELETE_DATASTREAM_EVENT = new CoordinatorEvent(EventType.HANDLE_ADD_OR_DELETE_DATASTREAM); - private CoordinatorEvent(EventType eventName) { - _eventType = eventName; - _eventData = null; + protected final EventType _eventType; + + private CoordinatorEvent(EventType eventType) { + _eventType = eventType; + } + + public EventType getType() { + return _eventType; } - private CoordinatorEvent(EventType eventName, T eventData) { - _eventType = eventName; - _eventData = eventData; + @Override + public String toString() { + return "type:" + _eventType; } public static CoordinatorEvent createLeaderDoAssignmentEvent() { - return new CoordinatorEvent(EventType.LEADER_DO_ASSIGNMENT); + return LEADER_DO_ASSIGNMENT_EVENT; } public static CoordinatorEvent createHandleAssignmentChangeEvent() { - return new CoordinatorEvent(EventType.HANDLE_ASSIGNMENT_CHANGE); + return HANDLE_ASSIGNMENT_CHANGE_EVENT; } public static CoordinatorEvent createHandleDatastreamAddOrDeleteEvent() { - return new CoordinatorEvent(EventType.HANDLE_ADD_OR_DELETE_DATASTREAM); - } - - public static CoordinatorEvent createHandleInstanceErrorEvent(String errorMessage) { - CoordinatorEvent event = new CoordinatorEvent(EventType.HANDLE_INSTANCE_ERROR, errorMessage); - return event; + return HANDLE_ADD_OR_DELETE_DATASTREAM_EVENT; } - public EventType getType() { - return _eventType; + public static HandleInstanceError createHandleInstanceErrorEvent(String errorMessage) { + return new HandleInstanceError(errorMessage); } - public T getEventData() { - return _eventData; - } + public static final class HandleInstanceError extends CoordinatorEvent { + private final String _errorMessage; - @Override - public String toString() { - StringBuilder sb = new StringBuilder(); - sb.append("type:" + _eventType.toString()); + private HandleInstanceError(String errorMessage) { + super(EventType.HANDLE_INSTANCE_ERROR); + _errorMessage = errorMessage; + } - if (_eventData != null) { - sb.append("\n"); - sb.append(_eventData); + public String getEventData() { + return _errorMessage; } - return sb.toString(); + @Override + public String toString() { + return "type:" + _eventType + "\n" + _errorMessage; + } } } diff --git a/datastream-server/src/main/java/com/linkedin/datastream/server/EventProducer.java b/datastream-server/src/main/java/com/linkedin/datastream/server/EventProducer.java index 0e881dfc1..eedcbee6c 100644 --- a/datastream-server/src/main/java/com/linkedin/datastream/server/EventProducer.java +++ b/datastream-server/src/main/java/com/linkedin/datastream/server/EventProducer.java @@ -173,7 +173,7 @@ private void loadCheckpoints(List tasks) { Map committed = _checkpointProvider.getCommitted(tasks); // Instruct jackson to convert string keys to integer - TypeReference typeRef = new TypeReference>() { + TypeReference> typeRef = new TypeReference>() { }; // Load checkpoints only for specified task list diff --git a/datastream-server/src/main/java/com/linkedin/datastream/server/EventProducerPool.java b/datastream-server/src/main/java/com/linkedin/datastream/server/EventProducerPool.java index 09211dbf5..e824dbee6 100644 --- a/datastream-server/src/main/java/com/linkedin/datastream/server/EventProducerPool.java +++ b/datastream-server/src/main/java/com/linkedin/datastream/server/EventProducerPool.java @@ -1,6 +1,5 @@ package com.linkedin.datastream.server; -import com.linkedin.datastream.common.VerifiableProperties; import com.linkedin.datastream.server.api.schemaregistry.SchemaRegistryProvider; import com.linkedin.datastream.server.api.transport.TransportProvider; import com.linkedin.datastream.server.api.transport.TransportProviderFactory; diff --git a/datastream-server/src/main/java/com/linkedin/datastream/server/dms/DatastreamResources.java b/datastream-server/src/main/java/com/linkedin/datastream/server/dms/DatastreamResources.java index 5cc9a3ba0..0441f01d5 100644 --- a/datastream-server/src/main/java/com/linkedin/datastream/server/dms/DatastreamResources.java +++ b/datastream-server/src/main/java/com/linkedin/datastream/server/dms/DatastreamResources.java @@ -54,6 +54,7 @@ public Datastream get(String name) { return _store.getDatastream(name); } + @SuppressWarnings("deprecated") @Override public List getAll(@Context PagingContext pagingContext) { return RestliUtils.withPaging(_store.getAllDatastreams(), pagingContext).map(_store::getDatastream) diff --git a/datastream-server/src/test/java/com/linkedin/datastream/server/KafkaTestUtils.java b/datastream-server/src/test/java/com/linkedin/datastream/server/KafkaTestUtils.java index c5bb946dc..869845702 100644 --- a/datastream-server/src/test/java/com/linkedin/datastream/server/KafkaTestUtils.java +++ b/datastream-server/src/test/java/com/linkedin/datastream/server/KafkaTestUtils.java @@ -17,6 +17,7 @@ * under the License. */ +import java.util.Collections; import org.apache.commons.lang.Validate; import org.apache.kafka.clients.consumer.ConsumerRecord; import org.apache.kafka.clients.consumer.ConsumerRecords; @@ -25,7 +26,6 @@ import org.apache.kafka.common.TopicPartition; import java.io.IOException; -import java.util.ArrayList; import java.util.List; import java.util.Properties; import java.util.concurrent.TimeoutException; @@ -57,11 +57,7 @@ public static void readTopic(String topic, Integer partition, String brokerList, Validate.notNull(callback); TopicPartition subscription = new TopicPartition(topic, partition); - List topicPartitions = new ArrayList() { - { - add(subscription); - } - }; + List topicPartitions = Collections.singletonList(subscription); KafkaConsumer consumer = createConsumer(brokerList); consumer.assign(topicPartitions); consumer.seekToBeginning(subscription); diff --git a/datastream-server/src/test/java/com/linkedin/datastream/server/TestCoordinator.java b/datastream-server/src/test/java/com/linkedin/datastream/server/TestCoordinator.java index b7824366e..e1439a22c 100644 --- a/datastream-server/src/test/java/com/linkedin/datastream/server/TestCoordinator.java +++ b/datastream-server/src/test/java/com/linkedin/datastream/server/TestCoordinator.java @@ -356,6 +356,7 @@ public void testUnassignableStreams() throws Exception { LOG.info("Set destination only for datastream2, leave it unassigned for datastream1"); Mockito.doAnswer(invocation -> { Object[] args = invocation.getArguments(); + @SuppressWarnings("unchecked") List streams = (List) args[0]; for (Datastream stream : streams) { // Populate Destination only for datastream2 @@ -381,6 +382,7 @@ public void testUnassignableStreams() throws Exception { // Stub for populateDatastreamDestination to set destination on all datastreams Mockito.doAnswer(invocation -> { Object[] args = invocation.getArguments(); + @SuppressWarnings("unchecked") List streams = (List) args[0]; for (Datastream stream : streams) { setDatastreamDestination(stream); diff --git a/datastream-server/src/test/java/com/linkedin/datastream/server/TestDatastreamServer.java b/datastream-server/src/test/java/com/linkedin/datastream/server/TestDatastreamServer.java index 3fb0b68b8..d4632ea2a 100644 --- a/datastream-server/src/test/java/com/linkedin/datastream/server/TestDatastreamServer.java +++ b/datastream-server/src/test/java/com/linkedin/datastream/server/TestDatastreamServer.java @@ -10,8 +10,6 @@ import java.util.Properties; import java.util.UUID; -import org.apache.avro.Schema; -import org.apache.avro.util.Utf8; import org.apache.commons.io.FileUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -34,9 +32,6 @@ import com.linkedin.datastream.connectors.file.FileConnectorFactory; import com.linkedin.datastream.kafka.EmbeddedZookeeperKafkaCluster; import com.linkedin.datastream.kafka.KafkaDestination; -import com.linkedin.datastream.server.api.schemaregistry.SchemaRegistryException; -import com.linkedin.datastream.server.api.schemaregistry.SchemaRegistryProvider; -import com.linkedin.datastream.server.api.schemaregistry.SchemaRegistryProviderFactory; import com.linkedin.datastream.server.assignment.BroadcastStrategy; import com.linkedin.datastream.server.assignment.LoadbalancingStrategy; import com.linkedin.datastream.server.zk.KeyBuilder; diff --git a/datastream-server/src/test/java/com/linkedin/datastream/server/TestEventProducer.java b/datastream-server/src/test/java/com/linkedin/datastream/server/TestEventProducer.java index 7214d159e..a1808fd3f 100644 --- a/datastream-server/src/test/java/com/linkedin/datastream/server/TestEventProducer.java +++ b/datastream-server/src/test/java/com/linkedin/datastream/server/TestEventProducer.java @@ -145,6 +145,7 @@ private void setup(boolean customCheckpointing, boolean checkRace) { _producer = new EventProducer(_tasks, _transport, _cpProvider, _config, customCheckpointing); } + @SuppressWarnings("unchecked") @Test public void testSendWithCustomCheckpoint() throws DatastreamException, TransportException, InterruptedException { setup(true); @@ -176,7 +177,7 @@ private boolean validateCheckpoint(CheckpointProvider provider, List>() { + TypeReference> typeRef = new TypeReference>() { }; Map cpMap = JsonUtils.fromJson(cpString, typeRef); if (!cpMap.equals(taskCpMap.get(task))) { diff --git a/datastream-server/src/test/java/com/linkedin/datastream/server/assignment/TestLoadbalancingStrategy.java b/datastream-server/src/test/java/com/linkedin/datastream/server/assignment/TestLoadbalancingStrategy.java index 76ff95eb0..3043b3962 100644 --- a/datastream-server/src/test/java/com/linkedin/datastream/server/assignment/TestLoadbalancingStrategy.java +++ b/datastream-server/src/test/java/com/linkedin/datastream/server/assignment/TestLoadbalancingStrategy.java @@ -29,9 +29,9 @@ private ZkAdapter createMockAdapter() { ZkAdapter adapter = mock(ZkAdapter.class); Map> stateMap = new HashMap<>(); doAnswer((invocation) -> { - DatastreamTask task = (DatastreamTask)invocation.getArguments()[0]; - String key = (String)invocation.getArguments()[1]; - String val = (String)invocation.getArguments()[2]; + DatastreamTask task = (DatastreamTask) invocation.getArguments()[0]; + String key = (String) invocation.getArguments()[1]; + String val = (String) invocation.getArguments()[2]; if (!stateMap.containsKey(task)) { stateMap.put(task, new HashMap<>()); } @@ -39,8 +39,8 @@ private ZkAdapter createMockAdapter() { return null; }).when(adapter).setDatastreamTaskStateForKey(anyObject(), anyString(), anyString()); doAnswer((invocation) -> { - DatastreamTask task = (DatastreamTask)invocation.getArguments()[0]; - String key = (String)invocation.getArguments()[1]; + DatastreamTask task = (DatastreamTask) invocation.getArguments()[0]; + String key = (String) invocation.getArguments()[1]; if (!stateMap.containsKey(task)) { return null; } @@ -91,7 +91,7 @@ public void testLoadbalancingStrategyRedistributesTasksWhenNodeGoesDown() { for (String instance : instances) { Assert.assertEquals(assignment.get(instance).size(), 2); - assignment.get(instance).forEach(t -> ((DatastreamTaskImpl)t).setZkAdapter(adapter)); + assignment.get(instance).forEach(t -> ((DatastreamTaskImpl) t).setZkAdapter(adapter)); } String[] newInstances = new String[] { "instance1", "instance2" }; @@ -195,13 +195,13 @@ public void testFilteringCompleteTasks() { assignment.values().forEach(tasks::addAll); ZkAdapter adapter = createMockAdapter(); - tasks.stream().forEach(t -> ((DatastreamTaskImpl)t).setZkAdapter(adapter)); + tasks.stream().forEach(t -> ((DatastreamTaskImpl) t).setZkAdapter(adapter)); // At least two tasks should be created Assert.assertTrue(tasks.size() >= 2); int numPending = tasks.size(); - for (int i = 0; i < tasks.size(); i+=2, --numPending) { + for (int i = 0; i < tasks.size(); i += 2, numPending--) { tasks.get(i).setStatus(DatastreamTaskStatus.complete()); } diff --git a/datastream-testcommon/src/main/java/com/linkedin/datastream/server/MockSchemaRegistryProvider.java b/datastream-testcommon/src/main/java/com/linkedin/datastream/server/MockSchemaRegistryProvider.java index cbf5acedd..f2181c00d 100644 --- a/datastream-testcommon/src/main/java/com/linkedin/datastream/server/MockSchemaRegistryProvider.java +++ b/datastream-testcommon/src/main/java/com/linkedin/datastream/server/MockSchemaRegistryProvider.java @@ -8,7 +8,7 @@ public class MockSchemaRegistryProvider implements SchemaRegistryProvider { - public static String MOCK_SCHEMA_ID = "mockSchemaId"; + public static final String MOCK_SCHEMA_ID = "mockSchemaId"; @Override public String registerSchema(String schemaName, Schema schema) diff --git a/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/event/generator/GlobalSettings.java b/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/event/generator/GlobalSettings.java index 13b1bc8b8..f3672f54c 100644 --- a/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/event/generator/GlobalSettings.java +++ b/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/event/generator/GlobalSettings.java @@ -68,6 +68,7 @@ public int getErrorCount() { return _numberOfErrors; } + @SuppressWarnings("static") public boolean parseCommandLineParameters(String[] args) { // Create command-line options Options options = new Options(); diff --git a/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/event/generator/UnknownTypeException.java b/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/event/generator/UnknownTypeException.java index a75496ac3..f16eeb5ef 100644 --- a/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/event/generator/UnknownTypeException.java +++ b/datastream-testcommon/src/main/java/com/linkedin/datastream/testutil/event/generator/UnknownTypeException.java @@ -1,5 +1,5 @@ package com.linkedin.datastream.testutil.event.generator; public class UnknownTypeException extends Exception { - + private static final long serialVersionUID = 1L; } diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/JsonUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/JsonUtils.java index 8f0c98972..488e1cac4 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/JsonUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/JsonUtils.java @@ -63,7 +63,7 @@ public static T fromJson(String json, Class clazz) { * @param type of the target object * @return deserialized Java object */ - public static T fromJson(String json, TypeReference typeRef) { + public static T fromJson(String json, TypeReference typeRef) { Validate.notNull(json, "null JSON string"); Validate.notNull(typeRef, "null type reference"); T object; diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/ReflectionUtils.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/ReflectionUtils.java index c0eff819e..d39d1d9dc 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/ReflectionUtils.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/ReflectionUtils.java @@ -25,13 +25,14 @@ public class ReflectionUtils { * @param type fo the class * @return instance of the class, or null if anything went wrong */ + @SuppressWarnings("unchecked") public static T createInstance(String clazz, Object... args) throws ClassNotFoundException, NoSuchMethodException, InvocationTargetException, InstantiationException, IllegalAccessException { Validate.notNull(clazz, "null class name"); try { - Class classObj = Class.forName(clazz); - Class[] argTypes = new Class[args.length]; + Class classObj = (Class) Class.forName(clazz); + Class[] argTypes = new Class[args.length]; IntStream.range(0, args.length).forEach(i -> argTypes[i] = args[i].getClass()); Constructor ctor = classObj.getDeclaredConstructor(argTypes); return ctor.newInstance(args); @@ -71,6 +72,7 @@ public static T setField(Object object, String field, T value) throws Except * @param type of the field * @return the value of the field or null if failed */ + @SuppressWarnings("unchecked") public static T getField(Object object, String field) throws Exception { Validate.notNull(object, "null target object"); Validate.notNull(field, "null field name"); @@ -85,7 +87,7 @@ public static T getField(Object object, String field) throws Exception { } } - private static final Class[][] COMPATIBLE_TYPES = { + private static final Class[][] COMPATIBLE_TYPES = { { Character.TYPE, Character.class }, { Byte.TYPE, Byte.class }, { Boolean.TYPE, Boolean.class }, @@ -96,7 +98,7 @@ public static T getField(Object object, String field) throws Exception { { Double.TYPE, Double.class }, }; - private static boolean isCompatiblePrimitive(Class type1, Class type2) { + private static boolean isCompatiblePrimitive(Class type1, Class type2) { for (int i = 0; i < COMPATIBLE_TYPES.length; i++) { if ((type1.equals(COMPATIBLE_TYPES[i][0]) && type2.equals(COMPATIBLE_TYPES[i][1])) || (type1.equals(COMPATIBLE_TYPES[i][1]) && type2.equals(COMPATIBLE_TYPES[i][0]))) { @@ -117,7 +119,7 @@ private static boolean isCompatiblePrimitive(Class type1, Class type2) { * @param argTypes array of argument types * @return the method */ - public static Method findMatchingMethod(Class clazz, String methodName, Class... argTypes) { + public static Method findMatchingMethod(Class clazz, String methodName, Class... argTypes) { Method[] methods = clazz.getDeclaredMethods(); Method foundMethod = null; for (Method method : methods) { @@ -152,12 +154,13 @@ public static Method findMatchingMethod(Class clazz, String methodName, Class... * @param return type * @return return value of the method, null for void methods */ + @SuppressWarnings("unchecked") public static T callMethod(Object object, String methodName, Object... args) throws Exception { Validate.notNull(object, "null class name"); Method method = null; boolean isAccessible = true; try { - Class[] argTypes = new Class[args.length]; + Class[] argTypes = new Class[args.length]; IntStream.range(0, args.length).forEach(i -> argTypes[i] = args[i].getClass()); method = findMatchingMethod(object.getClass(), methodName, argTypes); if (method == null) { diff --git a/datastream-utils/src/main/java/com/linkedin/datastream/common/VerifiableProperties.java b/datastream-utils/src/main/java/com/linkedin/datastream/common/VerifiableProperties.java index 62f087fc8..71f077ea6 100644 --- a/datastream-utils/src/main/java/com/linkedin/datastream/common/VerifiableProperties.java +++ b/datastream-utils/src/main/java/com/linkedin/datastream/common/VerifiableProperties.java @@ -266,7 +266,7 @@ public String getString(String name) { public void verify() { LOG.info("Verifying properties"); - Enumeration keys = _props.propertyNames(); + Enumeration keys = _props.propertyNames(); while (keys.hasMoreElements()) { Object key = keys.nextElement(); if (!_referenceSet.contains(key)) { diff --git a/gradle.properties b/gradle.properties index 094d42f9d..7af2d5227 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,2 +1,4 @@ version=0.1.0 rest.model.compatibility=ignore +org.gradle.daemon=true +org.gradle.parallel=true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index 5838598129719e795cc5633f411468bdec311016..13372aef5e24af05341d49695ee84e5f9b594659 100644 GIT binary patch delta 41523 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 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 21e9ceb38..b891a1055 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Thu Jan 21 11:41:04 PST 2016 +#Tue Feb 23 11:59:02 PST 2016 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=http\://services.gradle.org/distributions/gradle-2.10-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-bin.zip diff --git a/gradlew b/gradlew index 91a7e269e..9d82f7891 100755 --- a/gradlew +++ b/gradlew @@ -42,11 +42,6 @@ case "`uname`" in ;; esac -# For Cygwin, ensure paths are in UNIX format before anything is touched. -if $cygwin ; then - [ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"` -fi - # Attempt to set APP_HOME # Resolve links: $0 may be a link PRG="$0" @@ -61,9 +56,9 @@ while [ -h "$PRG" ] ; do fi done SAVED="`pwd`" -cd "`dirname \"$PRG\"`/" >&- +cd "`dirname \"$PRG\"`/" >/dev/null APP_HOME="`pwd -P`" -cd "$SAVED" >&- +cd "$SAVED" >/dev/null CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar @@ -114,6 +109,7 @@ fi if $cygwin ; then APP_HOME=`cygpath --path --mixed "$APP_HOME"` CLASSPATH=`cygpath --path --mixed "$CLASSPATH"` + JAVACMD=`cygpath --unix "$JAVACMD"` # We build the pattern for arguments to be converted via cygpath ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`