From c0f6f71924fb9795ebdeb717d431457e5366e204 Mon Sep 17 00:00:00 2001 From: justinjleet Date: Thu, 8 Dec 2016 14:23:35 -0500 Subject: [PATCH] Eliminating warnings from the analytics package --- .../apache/metron/maas/config/MaaSConfig.java | 2 +- .../metron/maas/queue/QueueHandler.java | 2 +- .../maas/service/ApplicationMaster.java | 8 ++--- .../apache/metron/maas/service/Client.java | 4 +-- .../callback/ContainerRequestListener.java | 4 +-- .../metron/maas/service/runner/Runner.java | 5 +-- .../metron/maas/service/yarn/Resources.java | 3 +- .../metron/maas/submit/ModelSubmission.java | 5 +-- .../org/apache/metron/maas/util/Utils.java | 32 ------------------- .../profiler/client/stellar/GetProfile.java | 2 ++ .../profiler/client/GetProfileTest.java | 4 +++ .../metron/profiler/ProfileBuilder.java | 2 ++ .../stellar/DefaultStellarExecutorTest.java | 3 ++ .../profiler/bolt/ProfileHBaseMapper.java | 4 +-- .../profiler/bolt/ProfileSplitterBolt.java | 6 ++-- .../MedianAbsoluteDeviationFunctions.java | 5 ++- 16 files changed, 39 insertions(+), 52 deletions(-) delete mode 100644 metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/util/Utils.java diff --git a/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/config/MaaSConfig.java b/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/config/MaaSConfig.java index b195478371..6ed7c2f45b 100644 --- a/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/config/MaaSConfig.java +++ b/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/config/MaaSConfig.java @@ -67,7 +67,7 @@ public Map getQueueConfig() { public void setQueueConfig(Map queueConfig) { this.queueConfig = queueConfig; } - public Queue createQueue(Map additionalConfig) { + public Queue createQueue(Map additionalConfig) { Map configs = new HashMap<>(getQueueConfig()); configs.putAll(additionalConfig); return getQueue().create(configs); diff --git a/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/queue/QueueHandler.java b/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/queue/QueueHandler.java index 9e803b8c83..bebef9bd8c 100644 --- a/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/queue/QueueHandler.java +++ b/metron-analytics/metron-maas-common/src/main/java/org/apache/metron/maas/queue/QueueHandler.java @@ -44,7 +44,7 @@ public enum QueueHandler { * @param config * @return */ - public Queue create(Map config) { + public Queue create(Map config) { return queueCreator.apply(config); } } diff --git a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/ApplicationMaster.java b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/ApplicationMaster.java index bb3c44110d..dbab00fad6 100644 --- a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/ApplicationMaster.java +++ b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/ApplicationMaster.java @@ -58,6 +58,7 @@ import org.apache.hadoop.yarn.api.records.ContainerLaunchContext; import org.apache.hadoop.yarn.api.records.Resource; import org.apache.hadoop.yarn.api.records.ResourceRequest; +import org.apache.hadoop.yarn.client.api.AMRMClient; import org.apache.hadoop.yarn.client.api.TimelineClient; import org.apache.hadoop.yarn.client.api.async.AMRMClientAsync; import org.apache.hadoop.yarn.client.api.async.NMClientAsync; @@ -77,7 +78,6 @@ import org.apache.metron.maas.service.runner.MaaSHandler; import org.apache.metron.maas.service.yarn.Resources; import org.apache.metron.maas.service.yarn.YarnUtils; -import org.apache.metron.maas.util.Utils; /** * An ApplicationMaster for executing shell commands on a set of launched @@ -156,8 +156,7 @@ public static enum DSEntity { private Configuration conf; // Handle to communicate with the Resource Manager - @SuppressWarnings("rawtypes") - private AMRMClientAsync amRMClient; + private AMRMClientAsync amRMClient; // In both secure and non-secure modes, this points to the job-submitter. @VisibleForTesting @@ -258,9 +257,10 @@ public Map.Entry of(String value) { return new AbstractMap.SimpleEntry<>(this, null); } + @SafeVarargs public static String toArgs(Map.Entry ... arg) { return - Joiner.on(" ").join(Iterables.transform(Utils.INSTANCE.toList(arg) + Joiner.on(" ").join(Iterables.transform(Arrays.asList(arg) , a -> "-" + a.getKey().shortCode + (a.getValue() == null?"":(" " + a.getValue())) ) diff --git a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/Client.java b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/Client.java index 2a5032d9b3..601f21df51 100644 --- a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/Client.java +++ b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/Client.java @@ -73,7 +73,6 @@ import org.apache.hadoop.yarn.exceptions.YarnException; import org.apache.hadoop.yarn.util.ConverterUtils; import org.apache.hadoop.yarn.util.timeline.TimelineUtils; -import org.apache.metron.maas.util.Utils; import static org.apache.metron.maas.service.Client.ClientOptions.*; @@ -318,9 +317,10 @@ public Map.Entry of(String value) { return new AbstractMap.SimpleEntry<>(this, null); } + @SafeVarargs public static String toArgs(Map.Entry ... arg) { return - Joiner.on(" ").join(Iterables.transform(Utils.INSTANCE.toList(arg) + Joiner.on(" ").join(Iterables.transform(Arrays.asList(arg) , a -> "-" + a.getKey().shortCode + (a.getValue() == null?"":(" " + a.getValue())) ) diff --git a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/callback/ContainerRequestListener.java b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/callback/ContainerRequestListener.java index e9d2d12d22..0a957e3c3a 100644 --- a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/callback/ContainerRequestListener.java +++ b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/callback/ContainerRequestListener.java @@ -40,7 +40,7 @@ public class ContainerRequestListener implements AMRMClientAsync.CallbackHandler private static final Log LOG = LogFactory.getLog(ContainerRequestListener.class); private ContainerTracker state; - private AMRMClientAsync amRMClient; + private AMRMClientAsync amRMClient; @VisibleForTesting private UserGroupInformation appSubmitterUgi; private String domainId = null; @@ -61,7 +61,7 @@ public ContainerRequestListener( TimelineClient timelineClient state = new ContainerTracker(minMemorySize); } - public void initialize(AMRMClientAsync amRMClient + public void initialize(AMRMClientAsync amRMClient , NMClientAsync nmClient , ServiceDiscoverer serviceDiscoverer ) diff --git a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/runner/Runner.java b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/runner/Runner.java index e035566f17..cc297d26f5 100644 --- a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/runner/Runner.java +++ b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/runner/Runner.java @@ -36,12 +36,12 @@ import org.apache.metron.maas.util.ConfigUtil; import org.apache.metron.maas.config.MaaSConfig; import org.apache.metron.maas.config.ModelEndpoint; -import org.apache.metron.maas.util.Utils; import java.io.File; import java.io.IOException; import java.net.MalformedURLException; import java.net.URL; +import java.util.Arrays; import java.util.AbstractMap; import java.util.HashSet; import java.util.Map; @@ -110,9 +110,10 @@ public Map.Entry of(String value) { return new AbstractMap.SimpleEntry<>(this, null); } + @SafeVarargs public static String toArgs(Map.Entry ... arg) { return - Joiner.on(" ").join(Iterables.transform(Utils.INSTANCE.toList(arg) + Joiner.on(" ").join(Iterables.transform(Arrays.asList(arg) , a -> "-" + a.getKey().shortCode + (a.getValue() == null?"":(" " + a.getValue())) ) diff --git a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/yarn/Resources.java b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/yarn/Resources.java index a133853dd1..4c3a6d79ec 100644 --- a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/yarn/Resources.java +++ b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/service/yarn/Resources.java @@ -52,8 +52,9 @@ public static EnumMap getRealisticResourceRequest( EnumMap of(int n) { - return new AbstractMap.SimpleEntry(this, n); + return new AbstractMap.SimpleEntry<>(this, n); } + @SafeVarargs public static EnumMap toResourceMap( Map.Entry... entry ) { EnumMap ret = new EnumMap<>(Resources.class); for(Map.Entry kv : entry) { diff --git a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/submit/ModelSubmission.java b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/submit/ModelSubmission.java index 050f520e0b..885ca0f15d 100644 --- a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/submit/ModelSubmission.java +++ b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/submit/ModelSubmission.java @@ -126,11 +126,12 @@ public Map.Entry of(String value) { return new AbstractMap.SimpleEntry<>(this, null); } + @SafeVarargs public static String toArgs(Map.Entry ... arg) { return Joiner.on(" ").join(Iterables.transform(Arrays.asList(arg) , a -> "-" + a.getKey().option.getOpt() - + a.getValue() == null?"":(" " + a.getValue()) + + (a.getValue() == null?"":(" " + a.getValue())) ) ); @@ -214,7 +215,7 @@ else if(mode.equalsIgnoreCase("LIST")) { Path hdfsPath = new Path(ModelSubmissionOptions.HDFS_MODEL_PATH.get(cli)); updateHDFS(fs, localDir, hdfsPath); } - Queue queue = config.createQueue(ImmutableMap.of(ZKQueue.ZK_CLIENT, client)); + Queue queue = config.createQueue(ImmutableMap.of(ZKQueue.ZK_CLIENT, client)); queue.enqueue(request); } finally { if (client != null) { diff --git a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/util/Utils.java b/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/util/Utils.java deleted file mode 100644 index eec3f672d1..0000000000 --- a/metron-analytics/metron-maas-service/src/main/java/org/apache/metron/maas/util/Utils.java +++ /dev/null @@ -1,32 +0,0 @@ -/** - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ -package org.apache.metron.maas.util; - -import java.util.ArrayList; -import java.util.List; - -public enum Utils { - INSTANCE; - public List toList(T[] arr) { - List ret = new ArrayList(arr.length); - for(T o : arr) { - ret.add(o); - } - return ret; - } -} diff --git a/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/stellar/GetProfile.java b/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/stellar/GetProfile.java index 57472c3c8d..9d4aa549ef 100644 --- a/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/stellar/GetProfile.java +++ b/metron-analytics/metron-profiler-client/src/main/java/org/apache/metron/profiler/client/stellar/GetProfile.java @@ -146,6 +146,7 @@ public void initialize(Context context) { // ensure the required capabilities are defined Context.Capabilities[] required = { GLOBAL_CONFIG }; validateCapabilities(context, required); + @SuppressWarnings("unchecked") Map global = (Map) context.getCapability(GLOBAL_CONFIG).get(); // create the profiler client @@ -308,6 +309,7 @@ private TableProvider getTableProvider(Map global) { TableProvider provider; try { + @SuppressWarnings("unchecked") Class clazz = (Class) Class.forName(clazzName); provider = clazz.getConstructor().newInstance(); diff --git a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/GetProfileTest.java b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/GetProfileTest.java index 95582e7c6f..4bb34200a4 100644 --- a/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/GetProfileTest.java +++ b/metron-analytics/metron-profiler-client/src/test/java/org/apache/metron/profiler/client/GetProfileTest.java @@ -138,6 +138,7 @@ public void testWithNoGroups() { // execute - read the profile values - no groups String expr = "PROFILE_GET('profile1', 'entity1', 4, 'HOURS')"; + @SuppressWarnings("unchecked") List result = run(expr, List.class); // validate - expect to read all values from the past 4 hours @@ -168,6 +169,7 @@ public void testWithOneGroup() { // execute - read the profile values String expr = "PROFILE_GET('profile1', 'entity1', 4, 'HOURS', 'weekends')"; + @SuppressWarnings("unchecked") List result = run(expr, List.class); // validate - expect to read all values from the past 4 hours @@ -198,6 +200,7 @@ public void testWithTwoGroups() { // execute - read the profile values String expr = "PROFILE_GET('profile1', 'entity1', 4, 'HOURS', 'weekdays', 'tuesday')"; + @SuppressWarnings("unchecked") List result = run(expr, List.class); // validate - expect to read all values from the past 4 hours @@ -245,6 +248,7 @@ public void testOutsideTimeHorizon() { // execute - read the profile values String expr = "PROFILE_GET('profile1', 'entity1', 4, 'SECONDS')"; + @SuppressWarnings("unchecked") List result = run(expr, List.class); // validate - there should be no values from only 4 seconds ago diff --git a/metron-analytics/metron-profiler-common/src/main/java/org/apache/metron/profiler/ProfileBuilder.java b/metron-analytics/metron-profiler-common/src/main/java/org/apache/metron/profiler/ProfileBuilder.java index 2f1bc93d45..f9beaeb6ba 100644 --- a/metron-analytics/metron-profiler-common/src/main/java/org/apache/metron/profiler/ProfileBuilder.java +++ b/metron-analytics/metron-profiler-common/src/main/java/org/apache/metron/profiler/ProfileBuilder.java @@ -124,6 +124,7 @@ private ProfileBuilder(ProfileConfig definition, * Apply a message to the profile. * @param message The message to apply. */ + @SuppressWarnings("unchecked") public void apply(JSONObject message) { if(!isInitialized()) { @@ -145,6 +146,7 @@ public ProfileMeasurement flush() { LOG.debug("Flushing profile: profile={}, entity={}", profileName, entity); // execute the 'result' expression + @SuppressWarnings("unchecked") Object value = execute(definition.getResult(), new JSONObject(), "result"); // execute the 'groupBy' expression(s) - can refer to value of 'result' expression diff --git a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/stellar/DefaultStellarExecutorTest.java b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/stellar/DefaultStellarExecutorTest.java index 3110329a8a..b91655271b 100644 --- a/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/stellar/DefaultStellarExecutorTest.java +++ b/metron-analytics/metron-profiler-common/src/test/java/org/apache/metron/profiler/stellar/DefaultStellarExecutorTest.java @@ -47,6 +47,9 @@ /** * Tests the DefaultStellarExecutor. */ +@SuppressWarnings("unchecked") +// This test class passes raw JSONObject to the the executor, which gives unchecked cast warnings. +// Suppressing on the class level, given that every test is a typical example of use pattern. public class DefaultStellarExecutorTest { /** diff --git a/metron-analytics/metron-profiler/src/main/java/org/apache/metron/profiler/bolt/ProfileHBaseMapper.java b/metron-analytics/metron-profiler/src/main/java/org/apache/metron/profiler/bolt/ProfileHBaseMapper.java index 3e7b4d43a3..cdde001683 100644 --- a/metron-analytics/metron-profiler/src/main/java/org/apache/metron/profiler/bolt/ProfileHBaseMapper.java +++ b/metron-analytics/metron-profiler/src/main/java/org/apache/metron/profiler/bolt/ProfileHBaseMapper.java @@ -91,11 +91,11 @@ public ColumnList columns(Tuple tuple) { */ @Override public Optional getTTL(Tuple tuple) { - Optional result = Optional.empty(); + Optional result = Optional.empty(); ProfileConfig profileConfig = (ProfileConfig) tuple.getValueByField("profile"); if(profileConfig.getExpires() != null) { - result = result.of(profileConfig.getExpires()); + result = Optional.of(profileConfig.getExpires()); } return result; diff --git a/metron-analytics/metron-profiler/src/main/java/org/apache/metron/profiler/bolt/ProfileSplitterBolt.java b/metron-analytics/metron-profiler/src/main/java/org/apache/metron/profiler/bolt/ProfileSplitterBolt.java index 57a54f305b..8f2ab2b8d2 100644 --- a/metron-analytics/metron-profiler/src/main/java/org/apache/metron/profiler/bolt/ProfileSplitterBolt.java +++ b/metron-analytics/metron-profiler/src/main/java/org/apache/metron/profiler/bolt/ProfileSplitterBolt.java @@ -130,13 +130,15 @@ private void doExecute(Tuple input) throws ParseException, UnsupportedEncodingEx * @param message The message that may be needed by the profile. */ private void applyProfile(ProfileConfig profile, Tuple input, JSONObject message) throws ParseException, UnsupportedEncodingException { + @SuppressWarnings("unchecked") + Map state = (Map)message; // is this message needed by this profile? String onlyIf = profile.getOnlyif(); - if (StringUtils.isBlank(onlyIf) || executor.execute(onlyIf, message, Boolean.class)) { + if (StringUtils.isBlank(onlyIf) || executor.execute(onlyIf, state, Boolean.class)) { // what is the name of the entity in this message? - String entity = executor.execute(profile.getForeach(), message, String.class); + String entity = executor.execute(profile.getForeach(), state, String.class); // emit a message for the bolt responsible for building this profile collector.emit(input, new Values(entity, profile, message)); diff --git a/metron-analytics/metron-statistics/src/main/java/org/apache/metron/statistics/outlier/MedianAbsoluteDeviationFunctions.java b/metron-analytics/metron-statistics/src/main/java/org/apache/metron/statistics/outlier/MedianAbsoluteDeviationFunctions.java index 4c3fe8eab1..fdb4b33377 100644 --- a/metron-analytics/metron-statistics/src/main/java/org/apache/metron/statistics/outlier/MedianAbsoluteDeviationFunctions.java +++ b/metron-analytics/metron-statistics/src/main/java/org/apache/metron/statistics/outlier/MedianAbsoluteDeviationFunctions.java @@ -82,6 +82,7 @@ public static class StateUpdate implements StellarFunction{ @Override public Object apply(List args, Context context) throws ParseException { State state = null; + @SuppressWarnings("unchecked") List states = (List) args.get(0); State currentState = null; if(args.size() > 1) { @@ -120,7 +121,9 @@ public Object apply(List args, Context context) throws ParseException { List data = new ArrayList<>(); if(o != null) { if (o instanceof List) { - for (Object datum : (List) o) { + @SuppressWarnings("unchecked") + List oList = (List) o; + for (Object datum : oList) { Number n = (Number) datum; data.add(n.doubleValue()); }