Hi all,
Attached the patch for RIVER-17 and RIVER-18, I'm sorry for the grouping
but due to historical reasons this is the easiest way with the smallest
risk of failure to create the patch for me.
--
Mark
Index: ../src/com/sun/jini/discovery/DiscoveryV2.java
===================================================================
--- ../src/com/sun/jini/discovery/DiscoveryV2.java (revision 615657)
+++ ../src/com/sun/jini/discovery/DiscoveryV2.java Wed Jan 30 22:00:18 CET
2008
@@ -24,8 +24,8 @@
import java.io.DataInputStream;
import java.io.IOException;
import java.io.OutputStream;
-import java.lang.ref.SoftReference;
import java.lang.ref.Reference;
+import java.lang.ref.SoftReference;
import java.net.DatagramPacket;
import java.net.InetAddress;
import java.net.Socket;
@@ -37,9 +37,9 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
@@ -112,7 +112,8 @@
}
}
if (logger.isLoggable(Level.FINEST)) {
- logger.log(Level.FINEST, "returning {0}", new Object[]{ disco });
+ logger.log(Level.FINEST, "returning {0} for class loader {1}",
+ new Object[]{ disco, loader });
}
return disco;
}
@@ -235,18 +236,27 @@
// decode payload
MulticastRequest req;
+ boolean delayed = false;
- if (mrd instanceof DelayedMulticastRequestDecoder) {
+ if (mrd instanceof DelayedMulticastRequestDecoder) {
DelayedMulticastRequestDecoder dmrd =
(DelayedMulticastRequestDecoder) mrd;
req = dmrd.decodeMulticastRequest(buf, constraints, checker,
delayConstraintCheck);
+ delayed = delayConstraintCheck;
- } else {
+ } else {
req = mrd.decodeMulticastRequest(buf, constraints, checker);
- }
+ }
if (logger.isLoggable(Level.FINEST)) {
+ if (delayed) {
+ logger.log(Level.FINEST, "decoded {0} using {1}, {2}, {3}, " +
+ "full constraints checking has been delayed",
+ new Object[]{ req, mrd, constraints, checker });
+ }
+ else {
- logger.log(Level.FINEST, "decoded {0} using {1}, {2}, {3}",
- new Object[]{ req, mrd, constraints, checker });
- }
+ logger.log(Level.FINEST, "decoded {0} using {1}, {2}, {3}",
+ new Object[]{ req, mrd, constraints, checker });
+ }
+ }
return req;
}
@@ -346,18 +356,27 @@
MulticastAnnouncement ann;
// decode payload
+ boolean delayed = false;
- if (mad instanceof DelayedMulticastAnnouncementDecoder) {
+ if (mad instanceof DelayedMulticastAnnouncementDecoder) {
DelayedMulticastAnnouncementDecoder dmad =
(DelayedMulticastAnnouncementDecoder) mad;
ann = dmad.decodeMulticastAnnouncement(buf, constraints,
delayConstraintCheck);
+ delayed = delayConstraintCheck;
- } else {
+ } else {
ann = mad.decodeMulticastAnnouncement(buf, constraints);
}
if (logger.isLoggable(Level.FINEST)) {
+ if (delayed) {
+ logger.log(Level.FINEST, "decoded {0} using {1}, {2}, " +
+ "full constraints checking has been delayed",
+ new Object[]{ ann, mad, constraints });
+ }
+ else {
- logger.log(Level.FINEST, "decoded {0} using {1}, {2}",
- new Object[]{ ann, mad, constraints });
- }
+ logger.log(Level.FINEST, "decoded {0} using {1}, {2}",
+ new Object[]{ ann, mad, constraints });
+ }
+ }
return ann;
}
@@ -386,7 +405,7 @@
// determine set of acceptable formats to propose
Map udcMap = formatIdMaps[UNICAST_DISCOVERY_CLIENT];
- Set fids = new HashSet();
+ Set fids = new LinkedHashSet();
Exception ex = null;
for (Iterator i = udcMap.entrySet().iterator(); i.hasNext(); ) {
Map.Entry ent = (Map.Entry) i.next();
@@ -404,7 +423,8 @@
e instanceof SecurityException)
{
ex = e;
- logger.log(Levels.HANDLED, "constraint check failed", e);
+ logger.log(Levels.HANDLED,
+ "constraint check failed for " + udc, e);
} else {
throw (RuntimeException) e;
}
@@ -513,7 +533,8 @@
uds = s;
break;
} catch (Exception e) {
- logger.log(Levels.HANDLED, "constraint check failed", e);
+ logger.log(Levels.HANDLED,
+ "constraint check failed for " + uds, e);
}
}
}
@@ -592,7 +613,7 @@
}
private static Map makeFormatIdMap(List providers) {
- Map map = new HashMap();
+ Map map = new LinkedHashMap();
for (Iterator i = providers.iterator(); i.hasNext(); ) {
DiscoveryFormatProvider p = (DiscoveryFormatProvider) i.next();
Long fid = new Long(computeFormatID(p.getFormatName()));