Repository: qpid-jms Updated Branches: refs/heads/master e16ea04a9 -> 4f380e2a5
Return a Map<String, Object> of unapplied values from the given Properties object which contains all the values that could not be applied to the target object. Project: http://git-wip-us.apache.org/repos/asf/qpid-jms/repo Commit: http://git-wip-us.apache.org/repos/asf/qpid-jms/commit/4f380e2a Tree: http://git-wip-us.apache.org/repos/asf/qpid-jms/tree/4f380e2a Diff: http://git-wip-us.apache.org/repos/asf/qpid-jms/diff/4f380e2a Branch: refs/heads/master Commit: 4f380e2a520e593484b89a3cc845d68cab448cd5 Parents: e16ea04 Author: Timothy Bish <[email protected]> Authored: Thu Jan 29 15:08:25 2015 -0500 Committer: Timothy Bish <[email protected]> Committed: Thu Jan 29 15:08:25 2015 -0500 ---------------------------------------------------------------------- .../org/apache/qpid/jms/util/FactoryFinder.java | 2 +- .../org/apache/qpid/jms/util/PropertyUtil.java | 44 +++++++++++++------- .../apache/qpid/jms/util/PropertyUtilTest.java | 7 +++- 3 files changed, 35 insertions(+), 18 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4f380e2a/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/FactoryFinder.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/FactoryFinder.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/FactoryFinder.java index 2678188..3c26559 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/FactoryFinder.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/FactoryFinder.java @@ -169,7 +169,7 @@ public class FactoryFinder<T extends Object> { Object factory = clazz.newInstance(); - if (!PropertyUtil.setProperties(factory, properties)) { + if (!PropertyUtil.setProperties(factory, properties).isEmpty()) { String msg = "" + " Not all provider options could be set on the found factory." + " Check the options are spelled correctly." http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4f380e2a/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/PropertyUtil.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/PropertyUtil.java b/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/PropertyUtil.java index 8cd436c..ecc3fd5 100644 --- a/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/PropertyUtil.java +++ b/qpid-jms-client/src/main/java/org/apache/qpid/jms/util/PropertyUtil.java @@ -310,10 +310,10 @@ public class PropertyUtil { */ public static boolean setProperties(Object target, Map<String, String> props) { if (target == null) { - throw new IllegalArgumentException("target was null."); + throw new IllegalArgumentException("target object cannot be null"); } if (props == null) { - throw new IllegalArgumentException("props was null."); + throw new IllegalArgumentException("Given Properties object cannot be null"); } int setCounter = 0; @@ -338,23 +338,23 @@ public class PropertyUtil { * * @return true if all values in the props map were applied to the target object. */ - public static boolean setProperties(Object target, Properties props) { + public static Map<String, Object> setProperties(Object target, Properties props) { if (target == null) { - throw new IllegalArgumentException("target was null."); + throw new IllegalArgumentException("target object cannot be null"); } if (props == null) { - throw new IllegalArgumentException("props was null."); + throw new IllegalArgumentException("Given Properties object cannot be null"); } - int setCounter = 0; + Map<String, Object> unmatched = new HashMap<String, Object>(); for (Map.Entry<Object, Object> entry : props.entrySet()) { - if (setProperty(target, (String) entry.getKey(), entry.getValue())) { - setCounter++; + if (!setProperty(target, (String) entry.getKey(), entry.getValue())) { + unmatched.put((String) entry.getKey(), entry.getValue()); } } - return setCounter == props.size(); + return Collections.<String, Object>unmodifiableMap(unmatched); } /** @@ -427,12 +427,20 @@ public class PropertyUtil { } /** - * Set a property + * Set a property named property on a given Object. + * <p> + * The object is searched for an set method that would match the given named + * property and if one is found. If necessary an attempt will be made to convert + * the new value to an acceptable type. * * @param target + * The object whose property is to be set. * @param name + * The name of the property to set. * @param value - * @return true if set + * The new value to set for the named property. + * + * @return true if the property was able to be set on the target object. */ public static boolean setProperty(Object target, String name, Object value) { try { @@ -454,7 +462,6 @@ public class PropertyUtil { if (value == null || value.getClass() == setter.getParameterTypes()[0]) { setter.invoke(target, new Object[] { value }); } else { - // We need to convert it setter.invoke(target, new Object[] { convert(value, setter.getParameterTypes()[0]) }); } return true; @@ -482,11 +489,15 @@ public class PropertyUtil { } /** - * Return a String from to a character + * Return a portion of a String value by looking beyond the given + * character. * * @param value + * The string value to split * @param c - * @return stripped + * The character that marks the split point. + * + * @return the sub-string value starting beyond the given character. */ public static String stripUpto(String value, char c) { String result = null; @@ -503,8 +514,11 @@ public class PropertyUtil { * Return a String up to and including character * * @param value + * The string value to split * @param c - * @return stripped + * The character that marks the start of split point. + * + * @return the sub-string value starting from the given character. */ public static String stripBefore(String value, char c) { String result = value; http://git-wip-us.apache.org/repos/asf/qpid-jms/blob/4f380e2a/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PropertyUtilTest.java ---------------------------------------------------------------------- diff --git a/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PropertyUtilTest.java b/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PropertyUtilTest.java index 348d34a..c75914c 100644 --- a/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PropertyUtilTest.java +++ b/qpid-jms-client/src/test/java/org/apache/qpid/jms/util/PropertyUtilTest.java @@ -438,7 +438,7 @@ public class PropertyUtilTest { properties.put("firstName", "foo"); properties.put("lastName", "bar"); - assertTrue(PropertyUtil.setProperties(configObject, properties)); + assertTrue(PropertyUtil.setProperties(configObject, properties).isEmpty()); assertEquals("foo", configObject.getFirstName()); assertEquals("bar", configObject.getLastName()); @@ -468,7 +468,10 @@ public class PropertyUtilTest { properties.put("lastName", "bar"); properties.put("unused", "absent"); - assertFalse(PropertyUtil.setProperties(configObject, properties)); + Map<String, Object> result = PropertyUtil.setProperties(configObject, properties); + + assertFalse(result.isEmpty()); + assertTrue(result.containsKey("unused")); assertEquals("foo", configObject.getFirstName()); assertEquals("bar", configObject.getLastName()); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
