diff options
author | slewis | 2013-05-19 05:48:11 +0000 |
---|---|---|
committer | slewis | 2013-05-19 05:48:11 +0000 |
commit | f37004aae0aba1d5beec2769edecfe352b272313 (patch) | |
tree | bc37e2e88dc1c5c86f567e8d7a7bf66b76875944 | |
parent | 91c3238366b946ed2bfbd0f9115265b328187939 (diff) | |
download | org.eclipse.ecf-f37004aae0aba1d5beec2769edecfe352b272313.tar.gz org.eclipse.ecf-f37004aae0aba1d5beec2769edecfe352b272313.tar.xz org.eclipse.ecf-f37004aae0aba1d5beec2769edecfe352b272313.zip |
Fix for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=408450
-rw-r--r-- | osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java index b8d4f9cfe..fd2d57500 100644 --- a/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java +++ b/osgi/bundles/org.eclipse.ecf.osgi.services.remoteserviceadmin/src/org/eclipse/ecf/osgi/services/remoteserviceadmin/AbstractMetadataFactory.java @@ -48,11 +48,26 @@ public abstract class AbstractMetadataFactory { result.setPropertyString(name, value.toString()); } + private static final Long DEFAULT_LONG = new Long(0); + protected Long decodeLong(IServiceProperties props, String name) { - String longAsString = props.getPropertyString(name); - if (longAsString == null) - return new Long(0); - return new Long(longAsString); + // This is for bug https://bugs.eclipse.org/bugs/show_bug.cgi?id=408450 + Object o = props.getPropertyString(name); + if (o == null) + return DEFAULT_LONG; + if (o instanceof Long) + return (Long) o; + if (o instanceof Integer) + return new Long(((Integer) o).longValue()); + if (o instanceof String) + try { + return new Long((String) o); + } catch (NumberFormatException e) { + LogUtility + .logError( + "decodeLong", DebugOptions.METADATA_FACTORY, this.getClass(), "Exception decoding long with name=" + name + " and value=" + o); //$NON-NLS-1$ //$NON-NLS-2$ //$NON-NLS-3$ + } + return DEFAULT_LONG; } protected void encodeList(IServiceProperties props, String name, |