Merge remote-tracking branch 'origin/developtest' into developtest

Conflicts:
	src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
	src/main/java/net/onrc/onos/util/GraphDBConnection.java
	src/test/java/net/floodlightcontroller/core/internal/ControllerTest.java
	src/test/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImplTest.java
	start-cassandra.sh
diff --git a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
index 2a4c2b9..81e2ce8 100644
--- a/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
+++ b/src/main/java/net/floodlightcontroller/linkdiscovery/internal/LinkStorageImpl.java
@@ -84,13 +84,55 @@
             	}
 
             	if (currLinks.contains(vportDst)) {
-            		// TODO: update linkinfo
             		if (op.equals(DM_OPERATION.INSERT) || op.equals(DM_OPERATION.CREATE)) {
             			log.debug("addOrUpdateLink(): failed link exists {} {} src {} dst {}", 
             					new Object[]{op, lt, vportSrc, vportDst});
+            		} else if (op.equals(DM_OPERATION.UPDATE)) {
+                		// TODO: update linkinfo
+            			// GraphDB seems to have no KeyIndex for LinkInfo data
+            			
+            			// BEGIN: trial code (update implementation)
+            			if(linkinfo != null) {
+            				vportSrc.setPortState(linkinfo.getSrcPortState());
+            				vportDst.setPortState(linkinfo.getDstPortState());
+            				
+            				Vertex vsrc = vportSrc.asVertex();
+    						vsrc.setProperty("first_seen_time", linkinfo.getFirstSeenTime());
+    						vsrc.setProperty("last_lldp_received_time", linkinfo.getUnicastValidTime());
+    						vsrc.setProperty("last_bddp_received_time", linkinfo.getMulticastValidTime());
+
+//            				for(Edge e: vportSrc.asVertex().getEdges(Direction.OUT)) {
+//            					if(e.getVertex(Direction.OUT).equals(vportDst.asVertex())) {
+//            						e.setProperty("first_seen_time", linkinfo.getFirstSeenTime());
+//            						e.setProperty("last_lldp_received_time", linkinfo.getUnicastValidTime());
+//            						e.setProperty("last_bddp_received_time", linkinfo.getMulticastValidTime());
+//            					}
+//            				}
+            				
+                    		conn.endTx(Transaction.COMMIT);
+                    		log.debug("addOrUpdateLink(): link updated {} {} src {} dst {}", new Object[]{op, lt, vportSrc, vportDst});
+            			}
+            			// END: trial code
             		}
             	} else {
-            		vportSrc.setLinkPort(vportDst);
+            		if (op.equals(DM_OPERATION.UPDATE)) {
+            			log.debug("addOrUpdateLink(): failed link doesn't exist {} {} src {} dst {}", 
+            					new Object[]{op, lt, vportSrc, vportDst});
+            		} else {
+                		vportSrc.setLinkPort(vportDst);
+                		
+            			// BEGIN: trial code (update implementation)
+            			if(linkinfo != null) {
+            				vportSrc.setPortState(linkinfo.getSrcPortState());
+            				vportDst.setPortState(linkinfo.getDstPortState());
+            				
+            				Vertex vsrc = vportSrc.asVertex();
+    						vsrc.setProperty("first_seen_time", linkinfo.getFirstSeenTime());
+    						vsrc.setProperty("last_lldp_received_time", linkinfo.getUnicastValidTime());
+    						vsrc.setProperty("last_bddp_received_time", linkinfo.getMulticastValidTime());
+            			}
+            			// END: trial code
+            		}
 
             		conn.endTx(Transaction.COMMIT);
             		log.debug("updateLink(): link added {} {} src {} dst {}", new Object[]{op, lt, vportSrc, vportDst});
diff --git a/src/main/java/net/onrc/onos/util/GraphDBConnection.java b/src/main/java/net/onrc/onos/util/GraphDBConnection.java
index 478763c..7ba4719 100644
--- a/src/main/java/net/onrc/onos/util/GraphDBConnection.java
+++ b/src/main/java/net/onrc/onos/util/GraphDBConnection.java
@@ -7,6 +7,7 @@
 
 import com.thinkaurelius.titan.core.TitanFactory;
 import com.thinkaurelius.titan.core.TitanGraph;
+import com.tinkerpop.blueprints.Edge;
 import com.tinkerpop.blueprints.TransactionalGraph;
 import com.tinkerpop.blueprints.Vertex;
 import com.tinkerpop.blueprints.util.wrappers.event.EventTransactionalGraph;
@@ -98,7 +99,7 @@
 	   
 	   protected EventTransactionalGraph<TitanGraph> getEventGraph() {
 		   
-		   	if (isValid()) {		   		
+		   	if (isValid()) {
 		   		return eg;
 		   	} else {
 		   		return null;