diff --git a/cave/com.raytheon.uf.viz.collaboration/META-INF/MANIFEST.MF b/cave/com.raytheon.uf.viz.collaboration/META-INF/MANIFEST.MF
index 67c8d86fca..71c04e56c7 100644
--- a/cave/com.raytheon.uf.viz.collaboration/META-INF/MANIFEST.MF
+++ b/cave/com.raytheon.uf.viz.collaboration/META-INF/MANIFEST.MF
@@ -5,12 +5,14 @@ Bundle-SymbolicName: com.raytheon.uf.viz.collaboration
Bundle-Version: 1.0.0.qualifier
Bundle-Activator: com.raytheon.uf.viz.collaboration.Activator
Bundle-Vendor: RAYTHEON
+Eclipse-RegisterBuddy: com.raytheon.uf.viz.core
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.ecf;bundle-version="3.1.300",
org.eclipse.ecf.presence;bundle-version="2.0.0",
org.eclipse.ecf.provider.xmpp;bundle-version="3.2.0",
com.google.guava;bundle-version="1.0.0",
- com.raytheon.uf.common.serialization;bundle-version="1.12.1174"
+ com.raytheon.uf.common.serialization;bundle-version="1.12.1174",
+ com.raytheon.uf.viz.core;bundle-version="1.12.1174"
Bundle-RequiredExecutionEnvironment: JavaSE-1.6
Bundle-ActivationPolicy: lazy
Export-Package: com.raytheon.uf.viz.collaboration,
diff --git a/cave/com.raytheon.uf.viz.collaboration/META-INF/services/com.raytheon.uf.common.serialization.ISerializableObject b/cave/com.raytheon.uf.viz.collaboration/META-INF/services/com.raytheon.uf.common.serialization.ISerializableObject
new file mode 100644
index 0000000000..0f3369e9c6
--- /dev/null
+++ b/cave/com.raytheon.uf.viz.collaboration/META-INF/services/com.raytheon.uf.common.serialization.ISerializableObject
@@ -0,0 +1 @@
+com.raytheon.uf.viz.collaboration.comm.provider.session.TestJAXBObject
diff --git a/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/Tools.java b/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/Tools.java
index 7bfd2b3f1f..75f80fa7a2 100644
--- a/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/Tools.java
+++ b/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/Tools.java
@@ -19,8 +19,7 @@
**/
package com.raytheon.uf.viz.collaboration.comm.provider;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import javax.xml.bind.JAXBException;
import org.eclipse.ecf.core.IContainer;
import org.eclipse.ecf.core.util.Base64;
@@ -34,36 +33,44 @@ import com.raytheon.uf.viz.collaboration.comm.identity.IPresence;
* TODO Add Description
*
*
- *
+ *
* SOFTWARE HISTORY
- *
+ *
* Date Ticket# Engineer Description
* ------------ ---------- ----------- --------------------------
* Mar 7, 2012 jkorman Initial creation
- *
+ *
*
- *
+ *
* @author jkorman
- * @version 1.0
+ * @version 1.0
*/
public abstract class Tools {
- private static final String ENV_THRIFT = "[[COMMAND#" + SerializationMode.THRIFT.name() + "]]";
- private static final String ENV_JAXB = "[[COMMAND#" + SerializationMode.JAXB.name() + "]]";
- private static final String ENV_STRING = "[[COMMAND#" + SerializationMode.STRING.name() + "]]";
- private static final String ENV_JAVA = "[[COMMAND#" + SerializationMode.JAVA.name() + "]]";
- private static final String ENV_NONE = "[[COMMAND#" + SerializationMode.NONE.name() + "]]";
-
+ private static final String ENV_THRIFT = "[[COMMAND#"
+ + SerializationMode.THRIFT.name() + "]]";
+
+ private static final String ENV_JAXB = "[[COMMAND#"
+ + SerializationMode.JAXB.name() + "]]";
+
+ private static final String ENV_STRING = "[[COMMAND#"
+ + SerializationMode.STRING.name() + "]]";
+
+ private static final String ENV_JAVA = "[[COMMAND#"
+ + SerializationMode.JAVA.name() + "]]";
+
+ private static final String ENV_NONE = "[[COMMAND#"
+ + SerializationMode.NONE.name() + "]]";
+
public static final String VENUE_SUBJECT_PROP = "subject";
-
+
public static final String NAME_DELIM = "@";
-
+
public static final String PORT_DELIM = ":";
-
+
public static final String RESOURCE_DELIM = "/";
-
-
+
/**
*
* @param
@@ -72,7 +79,8 @@ public abstract class Tools {
* @return
*/
@SuppressWarnings("unchecked")
- public static T getPresenceContainerAdapter(IContainer container, Class c) {
+ public static T getPresenceContainerAdapter(IContainer container,
+ Class c) {
return (T) container.getAdapter(c);
}
@@ -83,10 +91,10 @@ public abstract class Tools {
*/
public static String parseName(String id) {
String name = null;
- if(id != null) {
+ if (id != null) {
int delimPos = id.indexOf(NAME_DELIM);
- if(delimPos >= 0) {
- name = id.substring(0,delimPos);
+ if (delimPos >= 0) {
+ name = id.substring(0, delimPos);
}
}
return name;
@@ -99,27 +107,27 @@ public abstract class Tools {
*/
public static String parseHost(String id) {
String host = null;
- if(id != null) {
+ if (id != null) {
int delimPos = id.indexOf(NAME_DELIM);
- if(delimPos >= 0) {
+ if (delimPos >= 0) {
// Ok we have the start of the host name
int start = delimPos + 1;
int stop = start;
delimPos = id.indexOf(PORT_DELIM);
- if(delimPos > stop) {
+ if (delimPos > stop) {
// ok we have a port so grab anything in between
stop = delimPos;
} else {
// no port delimiter, so check for the resource
delimPos = id.indexOf(RESOURCE_DELIM);
- if(delimPos > stop) {
+ if (delimPos > stop) {
// we have the resource delimiter
stop = delimPos;
} else {
stop = id.length();
}
}
- host = id.substring(start,stop);
+ host = id.substring(start, stop);
}
}
return host;
@@ -132,29 +140,29 @@ public abstract class Tools {
*/
public static String parsePort(String id) {
String host = null;
- if(id != null) {
+ if (id != null) {
int delimPos = id.indexOf(NAME_DELIM);
- if(delimPos >= 0) {
+ if (delimPos >= 0) {
// Ok we have the start of the host name
int start = delimPos + 1;
int stop = start;
delimPos = id.indexOf(PORT_DELIM);
- if(delimPos > stop) {
+ if (delimPos > stop) {
// ok we have a port so grab anything in between
start = delimPos + 1;
delimPos = id.indexOf(RESOURCE_DELIM);
- if(delimPos > start) {
+ if (delimPos > start) {
stop = delimPos;
} else {
stop = id.length();
}
- host = id.substring(start,stop);
+ host = id.substring(start, stop);
}
}
}
return host;
}
-
+
/**
*
* @param id
@@ -162,15 +170,15 @@ public abstract class Tools {
*/
public static String parseResource(String id) {
String resource = null;
- if(id != null) {
+ if (id != null) {
int delimPos = id.indexOf(NAME_DELIM);
// Ensure that the name delimiter is there first.
- if(delimPos >= 0) {
- int start = delimPos+1;
+ if (delimPos >= 0) {
+ int start = delimPos + 1;
delimPos = id.indexOf(RESOURCE_DELIM);
- if(delimPos > start) {
+ if (delimPos > start) {
delimPos++;
- if(delimPos < id.length()) {
+ if (delimPos < id.length()) {
resource = id.substring(delimPos);
}
}
@@ -178,10 +186,12 @@ public abstract class Tools {
}
return resource;
}
-
+
/**
* Converts from an IPresence.Type to ECF Presence Type.
- * @param type A type to convert.
+ *
+ * @param type
+ * A type to convert.
* @return The converted type.
*/
public static org.eclipse.ecf.presence.Presence.Type convertPresenceType(
@@ -228,26 +238,29 @@ public abstract class Tools {
}
return sType;
- }
+ }
/**
- * Decode Base64 encoded String data into a byte array.
+ * Decode Base64 encoded String data into a byte array.
+ *
* @param message
* @return The decoded byte array data.
*/
- public static byte [] decodeFromBase64(String message) {
+ public static byte[] decodeFromBase64(String message) {
return Base64.decode(message);
}
-
+
/**
* Encode byte array data into a Base64 String for transmission.
- * @param message The message to encode.
+ *
+ * @param message
+ * The message to encode.
* @return The encoded data as a String.
*/
- public static String encodeToBase64(byte [] message) {
+ public static String encodeToBase64(byte[] message) {
return Base64.encode(message);
}
-
+
/**
*
* @param data
@@ -268,11 +281,21 @@ public abstract class Tools {
sb.append(ENV_THRIFT);
} catch (SerializationException e) {
throw new CollaborationException(
- "Could not serialize object");
+ "[THRIFT] Could not serialize object");
}
break;
}
case JAXB: {
+ try {
+ String s = SerializationUtil.marshalToXml(data);
+ if (s != null) {
+ sb.append(ENV_JAXB);
+ sb.append(s);
+ }
+ } catch (JAXBException je) {
+ throw new CollaborationException(
+ "[JAXB] Could not serialize object");
+ }
break;
}
case JAVA: {
@@ -299,36 +322,43 @@ public abstract class Tools {
}
return marshalledData;
}
-
+
/**
*
* @param data
* @return
* @throws CollaborationException
*/
- public static Object unMarshallData(String data) throws CollaborationException {
+ public static Object unMarshallData(String data)
+ throws CollaborationException {
Object unMarshalledData = null;
- if(data != null) {
+ if (data != null) {
// look for the envelope header first
- if(data.startsWith(ENV_THRIFT)) {
+ if (data.startsWith(ENV_THRIFT)) {
String s = data.substring(ENV_THRIFT.length());
try {
- byte [] b = decodeFromBase64(s);
+ byte[] b = decodeFromBase64(s);
unMarshalledData = SerializationUtil.transformFromThrift(b);
} catch (SerializationException e) {
- throw new CollaborationException("Could not deserialize object");
+ throw new CollaborationException(
+ "Could not deserialize object");
}
- } else if(data.startsWith(ENV_JAXB)) {
- throw new CollaborationException("Could not deserialize object");
- } else if(data.startsWith(ENV_STRING)) {
+ } else if (data.startsWith(ENV_JAXB)) {
+ String s = data.substring(ENV_JAXB.length());
+ try {
+ unMarshalledData = SerializationUtil.unmarshalFromXml(s);
+ } catch (JAXBException je) {
+ throw new CollaborationException(
+ "[JAXB] Could not deserialize object");
+ }
+ } else if (data.startsWith(ENV_STRING)) {
unMarshalledData = data.substring(ENV_STRING.length());
- } else if(data.startsWith(ENV_JAVA)) {
+ } else if (data.startsWith(ENV_JAVA)) {
throw new CollaborationException("Could not deserialize object");
- } else if(data.startsWith(ENV_NONE)) {
+ } else if (data.startsWith(ENV_NONE)) {
throw new CollaborationException("Could not deserialize object");
- }
+ }
}
return unMarshalledData;
}
-
}
diff --git a/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/TestJAXBObject.java b/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/TestJAXBObject.java
new file mode 100644
index 0000000000..db551b9d3c
--- /dev/null
+++ b/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/TestJAXBObject.java
@@ -0,0 +1,70 @@
+/**
+ * This software was developed and / or modified by Raytheon Company,
+ * pursuant to Contract DG133W-05-CQ-1067 with the US Government.
+ *
+ * U.S. EXPORT CONTROLLED TECHNICAL DATA
+ * This software product contains export-restricted data whose
+ * export/transfer/disclosure is restricted by U.S. law. Dissemination
+ * to non-U.S. persons whether in the United States or abroad requires
+ * an export license or other authorization.
+ *
+ * Contractor Name: Raytheon Company
+ * Contractor Address: 6825 Pine Street, Suite 340
+ * Mail Stop B8
+ * Omaha, NE 68106
+ * 402.291.0100
+ *
+ * See the AWIPS II Master Rights File ("Master Rights File.pdf") for
+ * further licensing information.
+ **/
+package com.raytheon.uf.viz.collaboration.comm.provider.session;
+
+import javax.xml.bind.annotation.XmlAccessType;
+import javax.xml.bind.annotation.XmlAccessorType;
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+import com.raytheon.uf.common.serialization.ISerializableObject;
+import com.raytheon.uf.viz.collaboration.comm.identity.event.IRenderable;
+
+@XmlRootElement
+@XmlAccessorType(XmlAccessType.NONE)
+public class TestJAXBObject implements IRenderable, ISerializableObject {
+
+ @XmlElement
+ protected String item_1 = null;
+
+ @XmlElement
+ private Integer value = -1;
+
+ public TestJAXBObject() {
+ }
+
+ /**
+ * @return the item_1
+ */
+ public String getItem_1() {
+ return item_1;
+ }
+
+ /**
+ * @param item_1 the item_1 to set
+ */
+ public void setItem_1(String item_1) {
+ this.item_1 = item_1;
+ }
+
+ /**
+ * @return the value
+ */
+ public Integer getValue() {
+ return value;
+ }
+
+ /**
+ * @param value the value to set
+ */
+ public void setValue(Integer value) {
+ this.value = value;
+ }
+}
diff --git a/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/VenueSession.java b/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/VenueSession.java
index 944a6078ca..11e8c7a0c0 100644
--- a/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/VenueSession.java
+++ b/cave/com.raytheon.uf.viz.collaboration/src/com/raytheon/uf/viz/collaboration/comm/provider/session/VenueSession.java
@@ -225,62 +225,46 @@ public class VenueSession extends BaseSession implements IVenueSession,
} finally {
initListeners();
}
-
- Runnable r = new Runnable() {
- @Override
- public void run() {
- for (int i = 0; i < 10; i++) {
-
- IRenderable r = new TestObject("Test1");
- ((TestObject) r).setValue(i);
-
- try {
- System.out.println("Sending renderable " + i);
- sendRenderableObject(r);
- if (i == 5) {
- sendTextMessage(Tools
- .marshallData("This is a text message as a String"));
- }
-
- } catch (CollaborationException ce) {
- ce.printStackTrace();
- }
- try {
- Thread.sleep(10000);
- } catch (InterruptedException ie) {
- }
- }
- }
- };
- Thread t = new Thread(r);
- t.start();
-
- registerEventHandler(this);
- }
-
- @Subscribe
- public void handle(IRenderable renderable) {
- System.out.println("IRenderable " + renderable.getClass().getName()
- + " was received");
- }
-
- @Subscribe
- public void handle(IDisplayEvent event) {
- System.out.println("IDisplayEvent " + event.getClass().getName()
- + " was received");
- }
-
- @Subscribe
- public void handle(String string) {
- System.out.println("String \"" + string + "\" was received");
- }
-
- @Subscribe
- public void handle(IVenueParticipantEvent event) {
- System.out.println("IVenueParticipantEvent " + event.getEventType()
- + " was received");
+// Runnable r = new Runnable() {
+// @Override
+// public void run() {
+// try {
+// Thread.sleep(20000);
+//
+// TestJAXBObject j = new TestJAXBObject();
+// j.setItem_1("This is an object");
+// j.setValue(5);
+// sendRenderableObject(j);
+// } catch (Exception e) {
+// System.out.println("Error sending RenderableObject");
+// }
+// }
+// };
+// Thread t = new Thread(r);
+// t.start();
+// registerEventHandler(this);
}
+// @Subscribe
+// public void handle(IRenderable renderable) {
+// System.out.println("Renderable found");
+// if(renderable instanceof TestJAXBObject) {
+// TestJAXBObject j = (TestJAXBObject) renderable;
+// if(j.getValue() < 100) {
+// System.out.println(String.format("%s %d Renderable", j.getItem_1(), j.getValue()));
+// j.setValue(j.getValue() + 200);
+// j.setItem_1("Now for the return trip");
+// try {
+// sendRenderableObject(j);
+// } catch (CollaborationException ce) {
+// System.out.println("Error sending RenderableObject");
+// }
+// } else {
+// System.out.println(String.format("%s %d Renderable", j.getItem_1(), j.getValue()));
+// }
+// }
+// }
+
/**
*
* @throws ECFException
@@ -628,6 +612,13 @@ public class VenueSession extends BaseSession implements IVenueSession,
// ISharedDisplaySession
// ***************************
+ /**
+ *
+ * @param participant
+ * @param initData
+ * @throws CollaborationException
+ * @see com.raytheon.uf.viz.collaboration.comm.identity.ISharedDisplaySession#sendInitData(com.raytheon.uf.viz.collaboration.comm.identity.user.IChatID, com.raytheon.uf.viz.collaboration.comm.identity.event.IInitData)
+ */
@Override
public void sendInitData(
com.raytheon.uf.viz.collaboration.comm.identity.user.IChatID participant,