You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@struts.apache.org by lu...@apache.org on 2014/07/28 21:35:29 UTC
[2/2] git commit: WW-4360 Fixes potential NullPointerExceptions
WW-4360 Fixes potential NullPointerExceptions
Project: http://git-wip-us.apache.org/repos/asf/struts/repo
Commit: http://git-wip-us.apache.org/repos/asf/struts/commit/413d67bd
Tree: http://git-wip-us.apache.org/repos/asf/struts/tree/413d67bd
Diff: http://git-wip-us.apache.org/repos/asf/struts/diff/413d67bd
Branch: refs/heads/develop
Commit: 413d67bd28ea414e586e596a50d68d9d2d0312a2
Parents: 2dd9cb5
Author: Lukasz Lenart <lu...@apache.org>
Authored: Mon Jul 28 21:35:17 2014 +0200
Committer: Lukasz Lenart <lu...@apache.org>
Committed: Mon Jul 28 21:35:17 2014 +0200
----------------------------------------------------------------------
.../providers/XmlConfigurationProvider.java | 4 +++-
.../xwork2/conversion/impl/NumberConverter.java | 2 ++
.../util/NamedVariablePatternMatcher.java | 5 ++++-
.../xwork2/util/finder/ResourceFinder.java | 7 ++-----
.../xwork2/util/location/LocationUtils.java | 12 +++++------
.../util/NamedVariablePatternMatcherTest.java | 22 +++++++++++++++++---
6 files changed, 36 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/struts/blob/413d67bd/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java b/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
index 6f9508b..253048b 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/config/providers/XmlConfigurationProvider.java
@@ -37,11 +37,13 @@ import com.opensymphony.xwork2.util.location.Location;
import com.opensymphony.xwork2.util.location.LocationUtils;
import com.opensymphony.xwork2.util.logging.Logger;
import com.opensymphony.xwork2.util.logging.LoggerFactory;
+
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.InputSource;
+import org.apache.commons.lang3.ObjectUtils;
import org.apache.commons.lang3.StringUtils;
import java.io.IOException;
@@ -426,7 +428,7 @@ public class XmlConfigurationProvider implements ConfigurationProvider {
} else {
if (!verifyAction(className, name, location)) {
if (LOG.isErrorEnabled())
- LOG.error("Unable to verify action [#0] with class [#1], from [#2]", name, className, location.toString());
+ LOG.error("Unable to verify action [#0] with class [#1], from [#2]", name, className, location);
return;
}
}
http://git-wip-us.apache.org/repos/asf/struts/blob/413d67bd/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/NumberConverter.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/NumberConverter.java b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/NumberConverter.java
index dfa1e0e..ab6efc0 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/NumberConverter.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/conversion/impl/NumberConverter.java
@@ -95,6 +95,8 @@ public class NumberConverter extends DefaultTypeConverter {
bigValue = new BigInteger(stringValue);
lowerBound = BigInteger.valueOf(Long.MIN_VALUE);
upperBound = BigInteger.valueOf(Long.MAX_VALUE);
+ } else {
+ throw new IllegalArgumentException("Unexpected numeric type: " + toType.getName());
}
} catch (NumberFormatException e) {
//shoult it fail here? BigInteger doesnt seem to be so nice parsing numbers as NumberFormat
http://git-wip-us.apache.org/repos/asf/struts/blob/413d67bd/xwork-core/src/main/java/com/opensymphony/xwork2/util/NamedVariablePatternMatcher.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/NamedVariablePatternMatcher.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/NamedVariablePatternMatcher.java
index a0bc652..1203a49 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/NamedVariablePatternMatcher.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/NamedVariablePatternMatcher.java
@@ -80,7 +80,10 @@ public class NamedVariablePatternMatcher implements PatternMatcher<NamedVariable
char c = data.charAt(x);
switch (c) {
case '{' : varName = new StringBuilder(); break;
- case '}' : varNames.add(varName.toString());
+ case '}' : if (varName == null) {
+ throw new IllegalArgumentException("Mismatched braces in pattern");
+ }
+ varNames.add(varName.toString());
regex.append("([^/]+)");
varName = null;
break;
http://git-wip-us.apache.org/repos/asf/struts/blob/413d67bd/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java
index c07bb71..47e7642 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/finder/ResourceFinder.java
@@ -1000,9 +1000,8 @@ public class ResourceFinder {
private Properties loadProperties(URL resource) throws IOException {
InputStream in = resource.openStream();
- BufferedInputStream reader = null;
+ BufferedInputStream reader = new BufferedInputStream(in);
try {
- reader = new BufferedInputStream(in);
Properties properties = new Properties();
properties.load(reader);
@@ -1018,12 +1017,10 @@ public class ResourceFinder {
private String readContents(URL resource) throws IOException {
InputStream in = resource.openStream();
- BufferedInputStream reader = null;
StringBuilder sb = new StringBuilder();
+ BufferedInputStream reader = new BufferedInputStream(in);
try {
- reader = new BufferedInputStream(in);
-
int b = reader.read();
while (b != -1) {
sb.append((char) b);
http://git-wip-us.apache.org/repos/asf/struts/blob/413d67bd/xwork-core/src/main/java/com/opensymphony/xwork2/util/location/LocationUtils.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/main/java/com/opensymphony/xwork2/util/location/LocationUtils.java b/xwork-core/src/main/java/com/opensymphony/xwork2/util/location/LocationUtils.java
index 0cbd53c..fd2c55d 100644
--- a/xwork-core/src/main/java/com/opensymphony/xwork2/util/location/LocationUtils.java
+++ b/xwork-core/src/main/java/com/opensymphony/xwork2/util/location/LocationUtils.java
@@ -263,14 +263,14 @@ public class LocationUtils {
newFinders.remove(ref);
finders = newFinders;
}
- }
-
- Location result = finder.getLocation(obj, description);
- if (result != null) {
- return result;
+ } else {
+ Location result = finder.getLocation(obj, description);
+ if (result != null) {
+ return result;
+ }
}
}
-
+
if (obj instanceof Throwable) {
Throwable t = (Throwable) obj;
StackTraceElement[] stack = t.getStackTrace();
http://git-wip-us.apache.org/repos/asf/struts/blob/413d67bd/xwork-core/src/test/java/com/opensymphony/xwork2/util/NamedVariablePatternMatcherTest.java
----------------------------------------------------------------------
diff --git a/xwork-core/src/test/java/com/opensymphony/xwork2/util/NamedVariablePatternMatcherTest.java b/xwork-core/src/test/java/com/opensymphony/xwork2/util/NamedVariablePatternMatcherTest.java
index 6137125..3e284e5 100644
--- a/xwork-core/src/test/java/com/opensymphony/xwork2/util/NamedVariablePatternMatcherTest.java
+++ b/xwork-core/src/test/java/com/opensymphony/xwork2/util/NamedVariablePatternMatcherTest.java
@@ -15,16 +15,23 @@
*/
package com.opensymphony.xwork2.util;
-import com.opensymphony.xwork2.util.NamedVariablePatternMatcher.CompiledPattern;
-import junit.framework.TestCase;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
import java.util.Arrays;
import java.util.HashMap;
import java.util.Map;
import java.util.regex.Pattern;
-public class NamedVariablePatternMatcherTest extends TestCase {
+import org.junit.Test;
+
+import com.opensymphony.xwork2.util.NamedVariablePatternMatcher.CompiledPattern;
+
+public class NamedVariablePatternMatcherTest {
+ @Test
public void testCompile() {
NamedVariablePatternMatcher matcher = new NamedVariablePatternMatcher();
@@ -46,6 +53,14 @@ public class NamedVariablePatternMatcherTest extends TestCase {
assertFalse(pattern.getPattern().matcher("foo/star/jie").matches());
}
+ @Test(expected = IllegalArgumentException.class)
+ public void testCompileWithMismatchedBracketsParses() {
+ NamedVariablePatternMatcher matcher = new NamedVariablePatternMatcher();
+
+ matcher.compilePattern("}");
+ }
+
+ @Test
public void testMatch() {
NamedVariablePatternMatcher matcher = new NamedVariablePatternMatcher();
@@ -56,6 +71,7 @@ public class NamedVariablePatternMatcherTest extends TestCase {
assertEquals("baz", vars.get("bar"));
}
+ @Test
public void testIsLiteral() {
NamedVariablePatternMatcher matcher = new NamedVariablePatternMatcher();