diff options
author | sboshev | 2009-10-13 13:53:59 +0000 |
---|---|---|
committer | sboshev | 2009-10-13 13:53:59 +0000 |
commit | b500566970e32c0ed81245cbf20a9a3a29df722e (patch) | |
tree | bfa5361b89c505a2e152341216e5f9cf760277d5 /bundles | |
parent | d1bc3afb8ccd96de7ca8b9893b6598b14ecbeb8b (diff) | |
download | rt.equinox.bundles-b500566970e32c0ed81245cbf20a9a3a29df722e.tar.gz rt.equinox.bundles-b500566970e32c0ed81245cbf20a9a3a29df722e.tar.xz rt.equinox.bundles-b500566970e32c0ed81245cbf20a9a3a29df722e.zip |
Bug 291037. WireAdmin does not produce unique persistent IDs for Wires
Diffstat (limited to 'bundles')
-rw-r--r-- | bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireAdminImpl.java | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireAdminImpl.java b/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireAdminImpl.java index 4a04869f4..b2b5a9372 100644 --- a/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireAdminImpl.java +++ b/bundles/org.eclipse.equinox.wireadmin/src/org/eclipse/equinox/internal/wireadmin/WireAdminImpl.java @@ -41,6 +41,8 @@ class WireAdminImpl implements WireAdmin, ManagedServiceFactory, ServiceListener private Vector waitForUpdate = new Vector(); + long counter = System.currentTimeMillis(); + /** * Constructs an <code>WireAdminImpl</code> object, which provides * Framework with methods for manipulating a <code>Wire</code> objects. @@ -571,8 +573,12 @@ class WireAdminImpl implements WireAdmin, ManagedServiceFactory, ServiceListener return false; } - private static String getNextPID() { - return PID_PREFIX + System.currentTimeMillis(); + private final String getNextPID() { + String nextPID = PID_PREFIX + counter++; + while (wires.get(nextPID) != null) { + nextPID = PID_PREFIX + counter++; + } + return nextPID; } boolean hasAConnectedWire(boolean isProducer, String pid) { |