diff options
author | Markus Alexander Kuppe | 2013-10-22 15:36:52 +0000 |
---|---|---|
committer | Markus Alexander Kuppe | 2013-10-22 15:37:14 +0000 |
commit | d99dcbbc354f9230dc97eb1ff97185edee8ae67e (patch) | |
tree | fdd07a290bbb7ef53d5aca49ca3ebae885b39abe /protocols | |
parent | e5f99f6f44ed584b3001f3f916ac58c96c73eb69 (diff) | |
download | org.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.java | 13 |
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: { |