Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarkus Alexander Kuppe2013-10-22 15:36:52 +0000
committerMarkus Alexander Kuppe2013-10-22 15:37:14 +0000
commitd99dcbbc354f9230dc97eb1ff97185edee8ae67e (patch)
treefdd07a290bbb7ef53d5aca49ca3ebae885b39abe /protocols
parente5f99f6f44ed584b3001f3f916ac58c96c73eb69 (diff)
downloadorg.eclipse.ecf-d99dcbbc354f9230dc97eb1ff97185edee8ae67e.tar.gz
org.eclipse.ecf-d99dcbbc354f9230dc97eb1ff97185edee8ae67e.tar.xz
org.eclipse.ecf-d99dcbbc354f9230dc97eb1ff97185edee8ae67e.zip
[TCK][r-OSGi] NonSerializableException when running
remoteserviceadmin ct - Safeguard against older implementations speaking a broken wire protokol by sending an ArrayList instead of String[]
Diffstat (limited to 'protocols')
-rw-r--r--protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java13
1 files changed, 8 insertions, 5 deletions
diff --git a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java
index 6e1dfffb9..933184a19 100644
--- a/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java
+++ b/protocols/bundles/ch.ethz.iks.r_osgi.remote/src/main/java/ch/ethz/iks/r_osgi/impl/ChannelEndpointImpl.java
@@ -1055,12 +1055,15 @@ public final class ChannelEndpointImpl implements ChannelEndpoint {
case LeaseUpdateMessage.TOPIC_UPDATE: {
// There is an older r-OSGi version that incorrectly sends an ArrayList
// (1.0.0.RC4_v20131016-1848)
- Object object = suMsg.getPayload()[0];
- if (object instanceof List) {
- object = ((List) object).toArray(new String[0]);
+ Object topicsAdded = suMsg.getPayload()[0];
+ if (topicsAdded instanceof List) {
+ topicsAdded = ((List) topicsAdded).toArray(new String[0]);
}
- updateTopics((String[]) suMsg.getPayload()[0], (String[]) suMsg
- .getPayload()[1]);
+ Object topicsRemoved = suMsg.getPayload()[1];
+ if (topicsRemoved instanceof List) {
+ topicsRemoved = ((List) topicsRemoved).toArray(new String[0]);
+ }
+ updateTopics((String[]) topicsAdded, (String[]) topicsRemoved);
return null;
}
case LeaseUpdateMessage.SERVICE_ADDED: {

Back to the top