From 99a7f5916b38113f7e80997cd6b576c624b6efcd Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Sun, 15 Oct 2017 07:24:15 +0200 Subject: [PATCH 1/3] createAndSet never returns null based on pytch by Kui Liu --- .../apache/tools/ant/AntTypeDefinition.java | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/src/main/org/apache/tools/ant/AntTypeDefinition.java b/src/main/org/apache/tools/ant/AntTypeDefinition.java index 104820f17..c7b223cef 100644 --- a/src/main/org/apache/tools/ant/AntTypeDefinition.java +++ b/src/main/org/apache/tools/ant/AntTypeDefinition.java @@ -217,19 +217,12 @@ public class AntTypeDefinition { return null; } Object o = createAndSet(project, c); - if (o == null || adapterClass == null) { + if (adapterClass == null + || (adaptToClass != null && adaptToClass.isAssignableFrom(o.getClass()))) { return o; } - if (adaptToClass != null) { - if (adaptToClass.isAssignableFrom(o.getClass())) { - return o; - } - } TypeAdapter adapterObject = (TypeAdapter) createAndSet( project, adapterClass); - if (adapterObject == null) { - return null; - } adapterObject.setProxy(o); return adapterObject; } @@ -257,9 +250,6 @@ public class AntTypeDefinition { || !adaptToClass.isAssignableFrom(clazz))) { TypeAdapter adapter = (TypeAdapter) createAndSet( project, adapterClass); - if (adapter == null) { - throw new BuildException("Unable to create adapter object"); - } adapter.checkProxyClass(clazz); } } @@ -267,12 +257,11 @@ public class AntTypeDefinition { /** * Get the constructor of the definition * and invoke it. - * @return the instantiated Object. + * @return the instantiated Object, will never be null. */ private Object createAndSet(Project project, Class c) { try { - Object o = innerCreateAndSet(c, project); - return o; + return innerCreateAndSet(c, project); } catch (InvocationTargetException ex) { Throwable t = ex.getTargetException(); throw new BuildException( From 20fe0ffaf6c8965beccad519c644df2321f5006c Mon Sep 17 00:00:00 2001 From: Stefan Bodewig Date: Sun, 15 Oct 2017 07:24:40 +0200 Subject: [PATCH 2/3] properly handle factory configuration exception based on patch by Kui Liu --- src/main/org/apache/tools/ant/Diagnostics.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/main/org/apache/tools/ant/Diagnostics.java b/src/main/org/apache/tools/ant/Diagnostics.java index 4ad57a063..e4a243bb2 100644 --- a/src/main/org/apache/tools/ant/Diagnostics.java +++ b/src/main/org/apache/tools/ant/Diagnostics.java @@ -195,8 +195,12 @@ public final class Diagnostics { * @return parser or null for trouble */ private static SAXParser getSAXParser() { - SAXParserFactory saxParserFactory = SAXParserFactory.newInstance(); - if (saxParserFactory == null) { + SAXParserFactory saxParserFactory = null; + try { + saxParserFactory = SAXParserFactory.newInstance(); + } catch (Exception e) { + // ignore + ignoreThrowable(e); return null; } SAXParser saxParser = null; From 9ec11ae3b04d5a8389a6f90b70463f16ecd541a2 Mon Sep 17 00:00:00 2001 From: Kui LIU Date: Sat, 14 Oct 2017 17:20:29 +0200 Subject: [PATCH 3/3] Remove the redundant nullcheck of value known to be non-null. This statement contains a redundant check of a known non-null s against the constant null. http://findbugs.sourceforge.net/bugDescriptions.html#RCN_REDUNDANT_NULLCHECK_OF_NONNULL_VALUE --- src/main/org/apache/tools/ant/dispatch/DispatchUtils.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/org/apache/tools/ant/dispatch/DispatchUtils.java b/src/main/org/apache/tools/ant/dispatch/DispatchUtils.java index 1a7c1f98a..62dd88fd0 100644 --- a/src/main/org/apache/tools/ant/dispatch/DispatchUtils.java +++ b/src/main/org/apache/tools/ant/dispatch/DispatchUtils.java @@ -64,7 +64,7 @@ public class DispatchUtils { final Object o = actionM.invoke(dispatchable, (Object[]) null); if (o != null) { final String s = o.toString(); - if (s != null && s.trim().length() > 0) { + if (s.trim().length() > 0) { methodName = s.trim(); Method executeM = null; executeM = dispatchable.getClass().getMethod(