Merge branch 'sprint49'
diff --git a/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessage.java b/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessage.java
index 6336cad..0ebdf09 100644
--- a/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessage.java
+++ b/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/OteByteMessage.java
@@ -47,6 +47,7 @@
       ByteArrayOutputStream bos = new ByteArrayOutputStream();
       ObjectOutputStream oos = new ObjectOutputStream(bos);
       oos.writeObject(obj);
+      oos.flush();
       return bos.toByteArray();
    }
    
diff --git a/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/SerializedClassMessage.java b/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/SerializedClassMessage.java
new file mode 100644
index 0000000..b471189
--- /dev/null
+++ b/org.eclipse.ote.bytemessage/src/org/eclipse/ote/bytemessage/SerializedClassMessage.java
@@ -0,0 +1,76 @@
+package org.eclipse.ote.bytemessage;
+
+import java.io.ByteArrayInputStream;
+import java.io.IOException;
+import java.io.ObjectInputStream;
+import java.io.ObjectStreamClass;
+import java.io.Serializable;
+
+import org.eclipse.osee.ote.message.elements.ArrayElement;
+
+public class SerializedClassMessage<T> extends OteByteMessage {
+
+	public static final int _BYTE_SIZE = 0;
+
+	public ArrayElement OBJECT;
+
+	public SerializedClassMessage(String topic) {
+		super(SerializedClassMessage.class.getSimpleName(), topic, 1, _BYTE_SIZE);
+		OBJECT = new ArrayElement(this, "CLAZZ", getDefaultMessageData(), 0, 0, 0);
+		addElements(OBJECT);
+	}
+	
+
+	public SerializedClassMessage(String topic, Serializable object) throws IOException {
+		this(topic);
+		setObject(object);
+	}
+	
+	public SerializedClassMessage(byte[] bytes) {
+		super(bytes);
+		OBJECT = new ArrayElement(this, "CLAZZ", getDefaultMessageData(), 0, 0, 0);
+		addElements(OBJECT);
+	}
+
+	public void setObject(Serializable obj) throws IOException{
+		byte[] data = serializeObject(obj);
+		int offset = OBJECT.getByteOffset() + getHeaderSize();
+		byte[] newData = new byte[data.length + offset];
+		System.arraycopy(getData(), 0, newData, 0, offset);
+		System.arraycopy(data, 0, newData, offset, data.length);
+		getDefaultMessageData().setNewBackingBuffer(newData);
+	}
+	
+	public T getObject() throws IOException, ClassNotFoundException{
+		int offset = OBJECT.getByteOffset() + getHeaderSize();
+		ByteArrayInputStream bis = new ByteArrayInputStream(getData(), offset, getData().length - offset);
+		ObjectInputStream ois = new ObjectInputStream(bis);
+		return (T)ois.readObject();
+	}
+	
+	public T getObject(final Class<T> clazz) throws IOException, ClassNotFoundException{
+		return getObject(clazz, clazz.getClassLoader());
+	}
+	
+	public T getObject(final Class<T> clazz, final ClassLoader loader) throws IOException, ClassNotFoundException{
+		int offset = OBJECT.getByteOffset() + getHeaderSize();
+		ByteArrayInputStream bis = new ByteArrayInputStream(getData(), offset, getData().length - offset);
+		ObjectInputStream ois = new ObjectInputStream(bis) {
+
+			@Override
+			protected Class<?> resolveClass(ObjectStreamClass desc)
+					throws IOException, ClassNotFoundException {
+				try {
+					return loader.loadClass(desc.getName());
+				} catch (ClassNotFoundException e) {
+					try {
+						return Thread.currentThread().getContextClassLoader().loadClass(desc.getName());
+					} catch (ClassNotFoundException e1) {
+						return super.resolveClass(desc);
+					}
+				}
+			}};
+		return clazz.cast(ois.readObject());
+	}
+	
+}  
diff --git a/org.eclipse.ote.event.bridge.jms/META-INF/MANIFEST.MF b/org.eclipse.ote.event.bridge.jms/META-INF/MANIFEST.MF
index 8a34aa1..aa682d1 100644
--- a/org.eclipse.ote.event.bridge.jms/META-INF/MANIFEST.MF
+++ b/org.eclipse.ote.event.bridge.jms/META-INF/MANIFEST.MF
@@ -8,6 +8,7 @@
 Import-Package: org.eclipse.core.runtime;version="3.4.0",
  org.eclipse.osee.framework.core.data,
  org.eclipse.osee.framework.core.exception,
+ org.eclipse.osee.framework.jdk.core.type,
  org.eclipse.osee.framework.logging,
  org.eclipse.osee.framework.messaging,
  org.eclipse.osee.ote.message,
diff --git a/org.eclipse.ote.event.bridge.jms/src/org/eclipse/ote/event/bridge/jms/EventToJmsComponent.java b/org.eclipse.ote.event.bridge.jms/src/org/eclipse/ote/event/bridge/jms/EventToJmsComponent.java
index 53a2da7..25adccf 100644
--- a/org.eclipse.ote.event.bridge.jms/src/org/eclipse/ote/event/bridge/jms/EventToJmsComponent.java
+++ b/org.eclipse.ote.event.bridge.jms/src/org/eclipse/ote/event/bridge/jms/EventToJmsComponent.java
@@ -17,7 +17,6 @@
 import java.util.concurrent.CopyOnWriteArrayList;
 import java.util.logging.Level;
 
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
 import org.eclipse.osee.framework.logging.OseeLog;
 import org.eclipse.osee.framework.messaging.OseeMessagingListener;
 import org.eclipse.osee.framework.messaging.ReplyConnection;
@@ -87,7 +86,7 @@
                OteByteMessageUtil.setUUID(msg, MYID);
                connecitonNode.getConnectionNode().send(BridgeMessages.BYTE_MESSAGE, obj);
             }
-         } catch (OseeCoreException e) {
+         } catch (Exception e) {
             e.printStackTrace();
          }
       }
diff --git a/org.eclipse.ote.io/src/org/eclipse/ote/io/DatagramChannelWorker.java b/org.eclipse.ote.io/src/org/eclipse/ote/io/DatagramChannelWorker.java
index ed59bf9..440e59a 100644
--- a/org.eclipse.ote.io/src/org/eclipse/ote/io/DatagramChannelWorker.java
+++ b/org.eclipse.ote.io/src/org/eclipse/ote/io/DatagramChannelWorker.java
@@ -21,6 +21,7 @@
    public void start(){
       Thread th = new Thread(runnable);
       th.setDaemon(true);
+      th.setPriority(Thread.MAX_PRIORITY);
       th.setName(threadName);
       th.start();
    }
diff --git a/org.eclipse.ote.io/src/org/eclipse/ote/io/NanoTime.java b/org.eclipse.ote.io/src/org/eclipse/ote/io/NanoTime.java
new file mode 100644
index 0000000..e6aa27d
--- /dev/null
+++ b/org.eclipse.ote.io/src/org/eclipse/ote/io/NanoTime.java
@@ -0,0 +1,61 @@
+package org.eclipse.ote.io;
+
+/**
+ *  This Class is useful for tooling time critical sections of code to help determine what might be 
+ *  running too slowly.  It keeps track of both the average and the largest difference.  the largest 
+ *  difference is useful for tracking down when we run into GC or thread scheduling issues that can 
+ *  cause poor performance at random times.
+ * 
+ * @author Andrew M. Finkbeiner
+ *
+ */
+public class NanoTime {
+   
+   long startTime;
+   long endTime;
+   long count = 1;
+   long longest = 0;
+   long totalElapsed = 0;
+
+   public void start(){
+      count++;
+      startTime = System.nanoTime();
+   }
+
+   public void stop(){
+      endTime = System.nanoTime();
+      long diff = endTime - startTime;
+      if(diff > 0 ){
+         if(diff > longest){
+            longest = diff;
+         }
+         totalElapsed+=diff;
+         if(totalElapsed < 0){//if addition wrapped reset the average
+            count = 1;
+            totalElapsed = 0;
+         }
+      }
+   }
+
+   public long average(){
+      return totalElapsed/count;
+   }
+
+   public long count(){
+      return count;
+   }
+
+   public long largestElapsed(){
+      return longest;
+   }
+
+   public String summary(){
+      return String.format("Average [%d]us Longest [%d]us count[%d]", average()/1000, largestElapsed()/1000, count());
+   }
+
+   public void print(String title, int interval){
+      if(count() % interval == 0){
+         System.out.println(title + " " + summary());
+      }
+   }
+}
\ No newline at end of file
diff --git a/org.eclipse.ote.jms.node/META-INF/MANIFEST.MF b/org.eclipse.ote.jms.node/META-INF/MANIFEST.MF
index 90c29d3..2b50b7e 100644
--- a/org.eclipse.ote.jms.node/META-INF/MANIFEST.MF
+++ b/org.eclipse.ote.jms.node/META-INF/MANIFEST.MF
@@ -7,6 +7,7 @@
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.osee.connection.service,
  org.eclipse.osee.framework.core.exception,
+ org.eclipse.osee.framework.jdk.core.type,
  org.eclipse.osee.framework.jdk.core.util;resolution:=optional,
  org.eclipse.osee.framework.logging,
  org.eclipse.osee.framework.messaging,
diff --git a/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ClientSideConnectionNodeLifecycleController.java b/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ClientSideConnectionNodeLifecycleController.java
index 21a7c3b..dd9bef6 100644
--- a/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ClientSideConnectionNodeLifecycleController.java
+++ b/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ClientSideConnectionNodeLifecycleController.java
@@ -15,7 +15,6 @@
 import java.util.logging.Level;
 
 import org.eclipse.osee.connection.service.IServiceConnector;
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
 import org.eclipse.osee.framework.jdk.core.util.EnhancedProperties;
 import org.eclipse.osee.framework.logging.OseeLog;
 import org.eclipse.osee.framework.messaging.ConnectionNode;
@@ -99,7 +98,7 @@
          ConnectionNode node = messageService.get(nodeInfo);
          registration =
                context.registerService(JmsConnectionNodeProvider.class.getName(), new ClientSideConnectionNodeProviderImpl(node), null);
-      } catch (OseeCoreException ex) {
+      } catch (Exception ex) {
          OseeLog.log(getClass(), Level.SEVERE, ex);
       }
    }
diff --git a/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ServerSideConnectionNodeProviderImpl.java b/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ServerSideConnectionNodeProviderImpl.java
index 705331b..5de9eb1 100644
--- a/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ServerSideConnectionNodeProviderImpl.java
+++ b/org.eclipse.ote.jms.node/src/org/eclipse/ote/jms/node/internal/ServerSideConnectionNodeProviderImpl.java
@@ -10,10 +10,8 @@
  *******************************************************************************/
 package org.eclipse.ote.jms.node.internal;
 
-import java.rmi.RemoteException;
 import java.util.logging.Level;
 
-import org.eclipse.osee.framework.core.exception.OseeCoreException;
 import org.eclipse.osee.framework.logging.OseeLog;
 import org.eclipse.osee.framework.messaging.ConnectionNode;
 import org.eclipse.osee.framework.messaging.MessageService;
@@ -65,10 +63,8 @@
          NodeInfo info = testEnv.getBroker();
          ConnectionNode connection = messageService.get(info);
          return connection;
-      } catch (OseeCoreException ex) {
+      } catch (Exception ex) {
          OseeLog.log(this.getClass(), Level.SEVERE, ex);
-      } catch (RemoteException e) {
-         OseeLog.log(this.getClass(), Level.SEVERE, e);
       }
       return null;
    }
diff --git a/org.eclipse.ote.mavenbuild/pom.xml b/org.eclipse.ote.mavenbuild/pom.xml
index 420f78d..8c18e69 100644
--- a/org.eclipse.ote.mavenbuild/pom.xml
+++ b/org.eclipse.ote.mavenbuild/pom.xml
@@ -13,8 +13,8 @@
 		<build-alias>-DEV</build-alias>
 		<tycho-version>0.18.0</tycho-version>
 		<tychoExtrasVersion>0.18.0</tychoExtrasVersion>
-		<platform-version-name>juno</platform-version-name>
-		<orbit-version>R20120119162704</orbit-version>
+		<platform-version-name>kepler</platform-version-name>
+		<orbit-version>R20130517111416</orbit-version>
 		<orbit-site>http://download.eclipse.org/tools/orbit/downloads/drops/${orbit-version}/repository</orbit-site>
 		<eclipse-site>http://download.eclipse.org/releases/${platform-version-name}</eclipse-site>
 		<wikitext-site>http://download.eclipse.org/tools/mylyn/update/weekly</wikitext-site>
@@ -39,17 +39,17 @@
 
 	<repositories>
 		<repository>
-			<id>eclipse-site</id>
+			<id>eclipse</id>
 			<layout>p2</layout>
 			<url>${eclipse-site}</url>
 		</repository>
 		<repository>
-			<id>orbit-site</id>
+			<id>orbit</id>
 			<layout>p2</layout>
 			<url>${orbit-site}</url>
 		</repository>
 		<repository>
-			<id>nebula-site</id>
+			<id>nebula</id>
 			<layout>p2</layout>
 			<url>${nebula-site}</url>
 		</repository>
diff --git a/org.eclipse.ote.ui.eviewer/META-INF/MANIFEST.MF b/org.eclipse.ote.ui.eviewer/META-INF/MANIFEST.MF
index 69f2fb2..5f903d9 100644
--- a/org.eclipse.ote.ui.eviewer/META-INF/MANIFEST.MF
+++ b/org.eclipse.ote.ui.eviewer/META-INF/MANIFEST.MF
@@ -10,7 +10,6 @@
  org.eclipse.osee.framework.logging,
  org.eclipse.osee.framework.ui.swt,
  org.eclipse.osee.framework.ui.plugin,
- org.eclipse.osee.ote.message,
  org.eclipse.osee.ote.core,
  org.eclipse.osee.framework.plugin.core
 Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.ote.ui.message.util/META-INF/MANIFEST.MF b/org.eclipse.ote.ui.message.util/META-INF/MANIFEST.MF
index e912856..39d86a9 100644
--- a/org.eclipse.ote.ui.message.util/META-INF/MANIFEST.MF
+++ b/org.eclipse.ote.ui.message.util/META-INF/MANIFEST.MF
@@ -8,7 +8,6 @@
  org.eclipse.core.runtime,
  org.eclipse.osee.framework.logging,
  org.eclipse.osee.ote.client.msg,
- org.eclipse.osee.ote.message,
  org.eclipse.osee.ote.client,
  org.eclipse.osee.ote.core
 Bundle-ActivationPolicy: lazy
diff --git a/org.eclipse.ote.ui.message/META-INF/MANIFEST.MF b/org.eclipse.ote.ui.message/META-INF/MANIFEST.MF
index 6ee2e74..9bb5204 100644
--- a/org.eclipse.ote.ui.message/META-INF/MANIFEST.MF
+++ b/org.eclipse.ote.ui.message/META-INF/MANIFEST.MF
@@ -11,7 +11,6 @@
  org.eclipse.core.resources,
  org.eclipse.osee.framework.plugin.core,
  org.eclipse.osee.ote.core,
- org.eclipse.osee.ote.message;visibility:=reexport,
  org.eclipse.osee.framework.ui.plugin,
  org.eclipse.osee.framework.ui.swt,
  org.eclipse.osee.ote.messaging.dds,
@@ -27,6 +26,7 @@
  org.eclipse.ote.ui.message.watch
 Bundle-RequiredExecutionEnvironment: JavaSE-1.6
 Import-Package: org.eclipse.osee.framework.core.exception,
+ org.eclipse.osee.framework.jdk.core.type,
  org.eclipse.osee.framework.core.operation,
  org.eclipse.ote.bytemessage,
  org.eclipse.ote.message.lookup,
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchedMessageNode.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchedMessageNode.java
index 2146de9..819ab99 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchedMessageNode.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/tree/WatchedMessageNode.java
@@ -237,7 +237,7 @@
       setMessageIcon(WatchImages.PART_TYPE_P.getImage(),  WatchImages.PART_OUTLINE_PINK.getImage(), read, write, mark, bgc, new String[] {"PUB_SUB"});
       setMessageIcon(WatchImages.PART_TYPE_PA.getImage(),  WatchImages.PART_OUTLINE_PEACH.getImage(), read, write, mark, bgc, new String[] {"PATS_MUX", "WIRE_PATS"});
       setMessageIcon(WatchImages.PART_TYPE_S.getImage(),  WatchImages.PART_OUTLINE_PURPLE.getImage(), read, write, mark, bgc, new String[] {"SERIAL"});
-      setMessageIcon(WatchImages.PART_TYPE_W.getImage(),  WatchImages.PART_OUTLINE_YELLOW.getImage(), read, write, mark, bgc, new String[] {"WIRE_MP_DIRECT", "WIRE_DIO"});
+      setMessageIcon(WatchImages.PART_TYPE_W.getImage(),  WatchImages.PART_OUTLINE_YELLOW.getImage(), read, write, mark, bgc, new String[] {"WIRE_MP_DIRECT", "WIRE_DIO", "WIRE_ESDS"});
       setMessageIcon(WatchImages.PART_TYPE_UNK.getImage(), WatchImages.PART_OUTLINE_RED.getImage(), read, write, mark, bgc, new String[] {DEFAULT_ICON_TYPE});
    }
 
diff --git a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchView.java b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchView.java
index 314d3ac..79c2e2f 100644
--- a/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchView.java
+++ b/org.eclipse.ote.ui.message/src/org/eclipse/ote/ui/message/watch/WatchView.java
@@ -49,7 +49,6 @@
 import org.eclipse.jface.wizard.WizardDialog;
 import org.eclipse.nebula.widgets.xviewer.XViewer;
 import org.eclipse.osee.connection.service.IServiceConnector;
-import org.eclipse.osee.framework.core.exception.OseeArgumentException;
 import org.eclipse.osee.framework.jdk.core.util.Lib;
 import org.eclipse.osee.framework.jdk.core.util.benchmark.Benchmark;
 import org.eclipse.osee.framework.logging.OseeLog;
@@ -306,14 +305,14 @@
                   if (icon != null) {
                      URL url = bundle.getEntry(icon);
                      if (url == null) {
-                        throw new OseeArgumentException("Invalid icon path [{%s}/%s]", el.getContributor().getName(),
-                              icon);
+                        throw new IllegalArgumentException(String.format("Invalid icon path [{%s}/%s]", el.getContributor().getName(),
+                              icon));
                      } else {
                         ImageDescriptor desc = ImageDescriptor.createFromURL(url);
                         Image img = desc.createImage();
                         if (img == null) {
-                           throw new OseeArgumentException("Unable to create Image from [{%s}/%s]",
-                                 el.getContributor().getName(), icon);
+                           throw new IllegalArgumentException(String.format("Unable to create Image from [{%s}/%s]",
+                                 el.getContributor().getName(), icon));
                         } else {
                            btn.setImage(img);
                         }
diff --git a/org.eclipse.ote.ui.mux/META-INF/MANIFEST.MF b/org.eclipse.ote.ui.mux/META-INF/MANIFEST.MF
index c366f62..ba1b190 100644
--- a/org.eclipse.ote.ui.mux/META-INF/MANIFEST.MF
+++ b/org.eclipse.ote.ui.mux/META-INF/MANIFEST.MF
@@ -6,7 +6,6 @@
 Bundle-Activator: org.eclipse.ote.ui.mux.MuxToolPlugin
 Require-Bundle: org.eclipse.ui,
  org.eclipse.core.runtime,
- org.eclipse.osee.ote.message,
  org.eclipse.osee.framework.plugin.core,
  org.eclipse.osee.framework.jdk.core,
  org.eclipse.osee.framework.ui.swt,