[AAI-14] Force delete tool now uses Tinkerpop 83/5583/1
authorMaharajh, Robby (rx2202) <rx2202@us.att.com>
Tue, 27 Jun 2017 21:07:50 +0000 (17:07 -0400)
committerMaharajh, Robby (rx2202) <rx2202@att.com>
Tue, 27 Jun 2017 21:14:37 +0000 (17:14 -0400)
vertex vs titan vertex
Updates now always add aai-node-type to vertex
Stop using hbase.table.timestamp.format=YYYYMMdd-HH:mm:ss:SSS for date
format
Define new endpoint in ajsc to process the v8 models from Model Loader

Change-Id: I7f6986e12d0f4c74256fe24629e1f1851541d7e4
Signed-off-by: Maharajh, Robby (rx2202) <rx2202@att.com>
12 files changed:
aai-resources/src/main/ajsc/ajsc-aai_v1/ajsc-aai/v1/conf/jaxrsBeans.groovy
aai-resources/src/main/java/org/openecomp/aai/dbgen/ForceDeleteTool.java
aai-resources/src/main/java/org/openecomp/aai/interceptors/AAILogJAXRSInInterceptor.java
aai-resources/src/main/java/org/openecomp/aai/interceptors/AAILogJAXRSOutInterceptor.java
aai-resources/src/main/java/org/openecomp/aai/rest/db/HttpEntry.java
aai-resources/src/main/java/org/openecomp/aai/rest/tools/ModelVersionTransformer.java [new file with mode: 0644]
aai-resources/src/main/java/org/openecomp/aai/util/AAIAppServletContextListener.java
aai-resources/src/main/xjb/bindings.xjb
aai-resources/src/test/java/org/openecomp/aai/util/AAITxnLogTest.java [deleted file]
set-debug-port.bat [deleted file]
start-cassandra-service.bat [deleted file]
stop-cassandra-service.bat [deleted file]

index a54da81..e371cd7 100644 (file)
@@ -11,7 +11,7 @@ beans{
        ExampleConsumer(org.openecomp.aai.rest.ExampleConsumer)
     V3ThroughV7Consumer(org.openecomp.aai.rest.retired.V3ThroughV7Consumer)
        EchoResponse(org.openecomp.aai.rest.util.EchoResponse)
-
+       ModelVersionTransformer(org.openecomp.aai.rest.tools.ModelVersionTransformer)
 
        util.list(id: 'jaxrsServices') {
                
@@ -22,6 +22,7 @@ beans{
                ref(bean:'BulkAddConsumer')
                ref(bean:'BulkProcessConsumer')
                ref(bean:'V3ThroughV7Consumer')
+               ref(bean:'ModelVersionTransformer')
 
                ref(bean:'EchoResponse')
        }
index 20d5c9f..bced2bc 100644 (file)
@@ -23,15 +23,19 @@ import java.util.ArrayList;
 import java.util.Iterator;
 import java.util.Properties;
 import java.util.Scanner;
+
+import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__;
 import org.apache.tinkerpop.gremlin.structure.Direction;
 import org.apache.tinkerpop.gremlin.structure.Edge;
 import org.apache.tinkerpop.gremlin.structure.Vertex;
 import org.apache.tinkerpop.gremlin.structure.VertexProperty;
-import org.slf4j.MDC;
-
 import org.openecomp.aai.exceptions.AAIException;
+import org.openecomp.aai.serialization.db.EdgeProperties;
+import org.openecomp.aai.serialization.db.EdgeProperty;
 import org.openecomp.aai.util.AAIConfig;
 import org.openecomp.aai.util.AAIConstants;
+import org.slf4j.MDC;
+
 import com.att.eelf.configuration.Configuration;
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
@@ -39,16 +43,11 @@ import com.thinkaurelius.titan.core.TitanEdge;
 import com.thinkaurelius.titan.core.TitanFactory;
 import com.thinkaurelius.titan.core.TitanGraph;
 import com.thinkaurelius.titan.core.TitanGraphQuery;
-import com.thinkaurelius.titan.core.TitanVertex;
 
 
 
 public class ForceDeleteTool {
-
-       
-       private static final int MAXDESCENDENTDEPTH = 15;
-       
-       /**
+       /*
         * The main method.
         *
         * @param args the arguments
@@ -206,7 +205,7 @@ public class ForceDeleteTool {
                System.out.println(msg);
                logger.info(msg);
        
-               
+               ForceDelete fd = new ForceDelete(graph);
        if( actionVal.equals("COLLECT_DATA") ){
                        // When doing COLLECT_DATA, we expect the dataString string to be comma separated
                // name value pairs like this:
@@ -241,13 +240,13 @@ public class ForceDeleteTool {
                                }
                        }
                        if( (tgQ != null) && (tgQ instanceof TitanGraphQuery) ){
-                       Iterable <TitanVertex> verts = (Iterable<TitanVertex>) tgQ.vertices();
-                       Iterator <TitanVertex> vertItor = verts.iterator();
+                       Iterable <Vertex> verts = (Iterable<Vertex>) tgQ.vertices();
+                       Iterator <Vertex> vertItor = verts.iterator();
                        while( vertItor.hasNext() ){
                                resCount++;
-                               TitanVertex v = (TitanVertex)vertItor.next();
-                               showNodeInfo( logger, v, displayAllVidsFlag );
-                               int descendantCount = countDescendants( logger, v, 0 );
+                               Vertex v = vertItor.next();
+                               fd.showNodeInfo( logger, v, displayAllVidsFlag );
+                               int descendantCount = fd.countDescendants( logger, v, 0 );
                                String infMsg = " Found " + descendantCount + " descendant nodes \n";
                                System.out.println( infMsg );
                                logger.info( infMsg );
@@ -268,20 +267,20 @@ public class ForceDeleteTool {
                        Iterator <Vertex> vtxItr = graph.vertices( vertexIdLong );
                        if( vtxItr != null && vtxItr.hasNext() ) {
                                Vertex vtx = vtxItr.next();
-                               showNodeInfo( logger, vtx, displayAllVidsFlag );
-                       int descendantCount = countDescendants( logger, (TitanVertex)vtx, 0 );
+                               fd.showNodeInfo( logger, vtx, displayAllVidsFlag );
+                       int descendantCount = fd.countDescendants( logger, vtx, 0 );
                        String infMsg = " Found " + descendantCount + " descendant nodes.  Note - forceDelete does not cascade to " +
                                        " child nodes, but they may become unreachable after the delete. \n";
                        System.out.println( infMsg );
                        logger.info( infMsg );
                        
-                       int edgeCount = countEdges( logger, vtx );
+                       int edgeCount = fd.countEdges( logger, vtx );
                        
                        infMsg = " Found total of " + edgeCount + " edges incident on this node.  \n";
                        System.out.println( infMsg );
                        logger.info( infMsg );
                        
-                       if( getNodeDelConfirmation(logger, userIdVal, vtx, descendantCount, edgeCount, overRideProtection) ){
+                       if( fd.getNodeDelConfirmation(logger, userIdVal, vtx, descendantCount, edgeCount, overRideProtection) ){
                                        vtx.remove();
                                        graph.tx().commit();
                                        infMsg = ">>>>>>>>>> Removed node with vertexId = " + vertexIdLong;
@@ -314,7 +313,7 @@ public class ForceDeleteTool {
                                System.exit(0);
                        }
                        
-                       if( getEdgeDelConfirmation(logger, userIdVal, thisEdge, overRideProtection) ){
+                       if( fd.getEdgeDelConfirmation(logger, userIdVal, thisEdge, overRideProtection) ){
                                thisEdge.remove();
                                graph.tx().commit();
                                String infMsg = ">>>>>>>>>> Removed edge with edgeId = " + edgeIdStr;
@@ -339,383 +338,389 @@ public class ForceDeleteTool {
     
        }// end of main()
        
-       
-       public static void showNodeInfo(EELFLogger logger, Vertex tVert, Boolean displayAllVidsFlag ){ 
+       public static class ForceDelete {
                
-               try {
-                       Iterator<VertexProperty<Object>> pI = tVert.properties();
-                       String infStr = ">>> Found Vertex with VertexId = " + tVert.id() + ", properties:    ";
-                       System.out.println( infStr );
-                       logger.info(infStr);
-                       while( pI.hasNext() ){
-                               VertexProperty<Object> tp = pI.next();
-                               infStr = " [" + tp.key() + "|" + tp.value() + "] ";
-                               System.out.println( infStr ); 
+               private final int MAXDESCENDENTDEPTH = 15;
+               private final TitanGraph graph;
+               public ForceDelete(TitanGraph graph) {
+                       this.graph = graph;
+               }
+               public void showNodeInfo(EELFLogger logger, Vertex tVert, Boolean displayAllVidsFlag ){ 
+                       
+                       try {
+                               Iterator<VertexProperty<Object>> pI = tVert.properties();
+                               String infStr = ">>> Found Vertex with VertexId = " + tVert.id() + ", properties:    ";
+                               System.out.println( infStr );
                                logger.info(infStr);
+                               while( pI.hasNext() ){
+                                       VertexProperty<Object> tp = pI.next();
+                                       infStr = " [" + tp.key() + "|" + tp.value() + "] ";
+                                       System.out.println( infStr ); 
+                                       logger.info(infStr);
+                               }
+                       
+                               ArrayList <String> retArr = collectEdgeInfoForNode( logger, tVert, displayAllVidsFlag );
+                               for( String infoStr : retArr ){ 
+                                       System.out.println( infoStr ); 
+                                       logger.info(infoStr);
+                               }
                        }
-               
-                       ArrayList <String> retArr = collectEdgeInfoForNode( logger, tVert, displayAllVidsFlag );
-                       for( String infoStr : retArr ){ 
-                               System.out.println( infoStr ); 
-                               logger.info(infoStr);
+                       catch (Exception e){
+                               String warnMsg = " -- Error -- trying to display edge info. [" + e.getMessage() + "]";
+                               System.out.println( warnMsg );
+                               logger.warn(warnMsg);
                        }
-               }
-               catch (Exception e){
-                       String warnMsg = " -- Error -- trying to display edge info. [" + e.getMessage() + "]";
-                       System.out.println( warnMsg );
-                       logger.warn(warnMsg);
-               }
-               
-       }// End of showNodeInfo()
+                       
+               }// End of showNodeInfo()
 
-       
-       public static void showPropertiesForEdge( EELFLogger logger, TitanEdge tEd ){ 
-               String infMsg = "";
-               if( tEd == null ){
-                       infMsg = "null Edge object passed to showPropertiesForEdge()";
-                       System.out.print(infMsg);
-                       logger.info(infMsg);
-                       return;
-               }
                
-               // Try to show the edge properties
-               try {
-                       infMsg =" Label for this Edge = [" + tEd.label() + "] ";
-                       System.out.print(infMsg);
-                       logger.info(infMsg);
+               public void showPropertiesForEdge( EELFLogger logger, TitanEdge tEd ){ 
+                       String infMsg = "";
+                       if( tEd == null ){
+                               infMsg = "null Edge object passed to showPropertiesForEdge()";
+                               System.out.print(infMsg);
+                               logger.info(infMsg);
+                               return;
+                       }
                        
-                       infMsg =" EDGE Properties for edgeId = " + tEd.id() + ": ";
-                       System.out.print(infMsg);
-                       logger.info(infMsg);
-                       Iterator <String> pI = tEd.keys().iterator();
-                       while( pI.hasNext() ){
-                               String propKey = pI.next();
-                               infMsg = "Prop: [" + propKey + "], val = [" 
-                                               + tEd.property(propKey) + "] ";
+                       // Try to show the edge properties
+                       try {
+                               infMsg =" Label for this Edge = [" + tEd.label() + "] ";
                                System.out.print(infMsg);
                                logger.info(infMsg);
+                               
+                               infMsg =" EDGE Properties for edgeId = " + tEd.id() + ": ";
+                               System.out.print(infMsg);
+                               logger.info(infMsg);
+                               Iterator <String> pI = tEd.keys().iterator();
+                               while( pI.hasNext() ){
+                                       String propKey = pI.next();
+                                       infMsg = "Prop: [" + propKey + "], val = [" 
+                                                       + tEd.property(propKey) + "] ";
+                                       System.out.print(infMsg);
+                                       logger.info(infMsg);
+                               }
                        }
-               }
-               catch( Exception ex ){
-                       infMsg = " Could not retrieve properties for this edge. exMsg = [" 
-                                       + ex.getMessage() + "] ";
-                       System.out.println( infMsg ); 
-                       logger.info(infMsg);
-               }
-               
-               // Try to show what's connected to the IN side of this Edge
-               try {
-                       infMsg = " Looking for the Vertex on the IN side of the edge:  ";
-                       System.out.print(infMsg);
-                       logger.info(infMsg);
-                       TitanVertex inVtx = tEd.inVertex();
-                       Iterator<VertexProperty<Object>> pI = inVtx.properties();
-                       String infStr = ">>> Found Vertex with VertexId = " + inVtx.id() 
-                               + ", properties:    ";
-                       System.out.println( infStr );
-                       logger.info(infStr);
-                       while( pI.hasNext() ){
-                               VertexProperty<Object> tp = pI.next();
-                               infStr = " [" + tp.key() + "|" + tp.value() + "] ";
-                               System.out.println( infStr ); 
+                       catch( Exception ex ){
+                               infMsg = " Could not retrieve properties for this edge. exMsg = [" 
+                                               + ex.getMessage() + "] ";
+                               System.out.println( infMsg ); 
+                               logger.info(infMsg);
+                       }
+                       
+                       // Try to show what's connected to the IN side of this Edge
+                       try {
+                               infMsg = " Looking for the Vertex on the IN side of the edge:  ";
+                               System.out.print(infMsg);
+                               logger.info(infMsg);
+                               Vertex inVtx = tEd.inVertex();
+                               Iterator<VertexProperty<Object>> pI = inVtx.properties();
+                               String infStr = ">>> Found Vertex with VertexId = " + inVtx.id() 
+                                       + ", properties:    ";
+                               System.out.println( infStr );
                                logger.info(infStr);
+                               while( pI.hasNext() ){
+                                       VertexProperty<Object> tp = pI.next();
+                                       infStr = " [" + tp.key() + "|" + tp.value() + "] ";
+                                       System.out.println( infStr ); 
+                                       logger.info(infStr);
+                               }
                        }
-               }
-               catch( Exception ex ){
-                       infMsg = " Could not retrieve vertex data for the IN side of "
-                                       + "the edge. exMsg = [" + ex.getMessage() + "] ";
-                       System.out.println( infMsg ); 
-                       logger.info(infMsg);
-               }
-               
-               // Try to show what's connected to the OUT side of this Edge
-               try {
-                       infMsg = " Looking for the Vertex on the OUT side of the edge:  ";
-                       System.out.print(infMsg);
-                       logger.info(infMsg);
-                       TitanVertex outVtx = tEd.outVertex();
-                       Iterator<VertexProperty<Object>> pI = outVtx.properties();
-                       String infStr = ">>> Found Vertex with VertexId = " + outVtx.id() 
-                               + ", properties:    ";
-                       System.out.println( infStr );
-                       logger.info(infStr);
-                       while( pI.hasNext() ){
-                               VertexProperty<Object> tp = pI.next();
-                               infStr = " [" + tp.key() + "|" + tp.value() + "] ";
-                               System.out.println( infStr ); 
+                       catch( Exception ex ){
+                               infMsg = " Could not retrieve vertex data for the IN side of "
+                                               + "the edge. exMsg = [" + ex.getMessage() + "] ";
+                               System.out.println( infMsg ); 
+                               logger.info(infMsg);
+                       }
+                       
+                       // Try to show what's connected to the OUT side of this Edge
+                       try {
+                               infMsg = " Looking for the Vertex on the OUT side of the edge:  ";
+                               System.out.print(infMsg);
+                               logger.info(infMsg);
+                               Vertex outVtx = tEd.outVertex();
+                               Iterator<VertexProperty<Object>> pI = outVtx.properties();
+                               String infStr = ">>> Found Vertex with VertexId = " + outVtx.id() 
+                                       + ", properties:    ";
+                               System.out.println( infStr );
                                logger.info(infStr);
+                               while( pI.hasNext() ){
+                                       VertexProperty<Object> tp = pI.next();
+                                       infStr = " [" + tp.key() + "|" + tp.value() + "] ";
+                                       System.out.println( infStr ); 
+                                       logger.info(infStr);
+                               }
                        }
-               }
-               catch( Exception ex ){
-                       infMsg = " Could not retrieve vertex data for the OUT side of "
-                                       + "the edge. exMsg = [" + ex.getMessage() + "] ";
-                       System.out.println( infMsg ); 
-                       logger.info(infMsg);
-               }
-               
-       }// end showPropertiesForEdge()
+                       catch( Exception ex ){
+                               infMsg = " Could not retrieve vertex data for the OUT side of "
+                                               + "the edge. exMsg = [" + ex.getMessage() + "] ";
+                               System.out.println( infMsg ); 
+                               logger.info(infMsg);
+                       }
+                       
+               }// end showPropertiesForEdge()
 
-       
-       
-       public static ArrayList <String> collectEdgeInfoForNode( EELFLogger logger, Vertex tVert, boolean displayAllVidsFlag ){ 
-               ArrayList <String> retArr = new ArrayList <String> ();
-               Direction dir = Direction.OUT;
-               for ( int i = 0; i <= 1; i++ ){
-                       if( i == 1 ){
-                               // Second time through we'll look at the IN edges.
-                               dir = Direction.IN;
-                       }
-                       Iterator <Edge> eI = tVert.edges(dir);
-                       if( ! eI.hasNext() ){
-                               retArr.add("No " + dir + " edges were found for this vertex. ");
-                       }
-                       while( eI.hasNext() ){
-                               Edge ed =  eI.next();
-                               String lab = ed.label();
-                               Vertex vtx = null;
-                               if( dir == Direction.OUT ){
-                                       // get the vtx on the "other" side
-                                       vtx = ed.inVertex();
-                               }
-                               else {
-                                       // get the vtx on the "other" side
-                                       vtx = ed.outVertex();
+               
+               
+               public ArrayList <String> collectEdgeInfoForNode( EELFLogger logger, Vertex tVert, boolean displayAllVidsFlag ){ 
+                       ArrayList <String> retArr = new ArrayList <String> ();
+                       Direction dir = Direction.OUT;
+                       for ( int i = 0; i <= 1; i++ ){
+                               if( i == 1 ){
+                                       // Second time through we'll look at the IN edges.
+                                       dir = Direction.IN;
                                }
-                               if( vtx == null ){
-                                       retArr.add(" >>> COULD NOT FIND VERTEX on the other side of this edge edgeId = " + ed.id() + " <<< ");
+                               Iterator <Edge> eI = tVert.edges(dir);
+                               if( ! eI.hasNext() ){
+                                       retArr.add("No " + dir + " edges were found for this vertex. ");
                                }
-                               else {
-                                       String nType = vtx.<String>property("aai-node-type").orElse(null);
-                                       if( displayAllVidsFlag ){
-                                               // This should rarely be needed
-                                               String vid = vtx.id().toString();
-                                               retArr.add("Found an " + dir + " edge (" + lab + ") between this vertex and a [" + nType + "] node with VtxId = " + vid );
+                               while( eI.hasNext() ){
+                                       Edge ed =  eI.next();
+                                       String lab = ed.label();
+                                       Vertex vtx = null;
+                                       if( dir == Direction.OUT ){
+                                               // get the vtx on the "other" side
+                                               vtx = ed.inVertex();
                                        }
                                        else {
-                                               // This is the normal case
-                                               retArr.add("Found an " + dir + " edge (" + lab + ") between this vertex and a [" + nType + "] node. ");
+                                               // get the vtx on the "other" side
+                                               vtx = ed.outVertex();
+                                       }
+                                       if( vtx == null ){
+                                               retArr.add(" >>> COULD NOT FIND VERTEX on the other side of this edge edgeId = " + ed.id() + " <<< ");
+                                       }
+                                       else {
+                                               String nType = vtx.<String>property("aai-node-type").orElse(null);
+                                               if( displayAllVidsFlag ){
+                                                       // This should rarely be needed
+                                                       String vid = vtx.id().toString();
+                                                       retArr.add("Found an " + dir + " edge (" + lab + ") between this vertex and a [" + nType + "] node with VtxId = " + vid );
+                                               }
+                                               else {
+                                                       // This is the normal case
+                                                       retArr.add("Found an " + dir + " edge (" + lab + ") between this vertex and a [" + nType + "] node. ");
+                                               }
                                        }
                                }
                        }
-               }
-               return retArr;
-               
-       }// end of collectEdgeInfoForNode()
+                       return retArr;
+                       
+               }// end of collectEdgeInfoForNode()
 
-       
-       public static int countEdges( EELFLogger logger, Vertex vtx ){ 
-               int edgeCount = 0;
-               try {
-                       Iterator<Edge> edgesItr = vtx.edges(Direction.BOTH);
-                       while( edgesItr.hasNext() ){
-                               edgesItr.next();
-                               edgeCount++;
+               
+               public int countEdges( EELFLogger logger, Vertex vtx ){ 
+                       int edgeCount = 0;
+                       try {
+                               Iterator<Edge> edgesItr = vtx.edges(Direction.BOTH);
+                               while( edgesItr.hasNext() ){
+                                       edgesItr.next();
+                                       edgeCount++;
+                               }
                        }
-               }
-               catch (Exception e) {
-                       String wMsg = "-- ERROR -- Stopping the counting of edges because of Exception [" + e.getMessage() + "]";
-                       System.out.println( wMsg );
-                       logger.warn( wMsg );
-               }
-               return edgeCount;
+                       catch (Exception e) {
+                               String wMsg = "-- ERROR -- Stopping the counting of edges because of Exception [" + e.getMessage() + "]";
+                               System.out.println( wMsg );
+                               logger.warn( wMsg );
+                       }
+                       return edgeCount;
+                       
+               }// end of countEdges()
                
-       }// end of countEdges()
-       
 
-       public static int countDescendants(EELFLogger logger, TitanVertex vtx, int levelVal ){ 
-               int totalCount = 0;
-               int thisLevel = levelVal + 1;
-               
-               if( thisLevel > MAXDESCENDENTDEPTH ){
-                       String wMsg = "Warning -- Stopping the counting of descendents because we reached the max depth of " + MAXDESCENDENTDEPTH;
-                       System.out.println( wMsg );
-                       logger.warn( wMsg );
-                       return totalCount;
-               }
-               
-               try {
-                       Iterable <?> verts = vtx.query().direction(Direction.OUT).has("isParent",true).vertices();
-                       Iterator <?> vertI = verts.iterator();
-                       while( vertI != null && vertI.hasNext() ){
-                               totalCount++;
-                               TitanVertex childVtx = (TitanVertex) vertI.next();
-                               totalCount = totalCount + countDescendants( logger, childVtx, thisLevel );
+               public int countDescendants(EELFLogger logger, Vertex vtx, int levelVal ){ 
+                       int totalCount = 0;
+                       int thisLevel = levelVal + 1;
+                       
+                       if( thisLevel > MAXDESCENDENTDEPTH ){
+                               String wMsg = "Warning -- Stopping the counting of descendents because we reached the max depth of " + MAXDESCENDENTDEPTH;
+                               System.out.println( wMsg );
+                               logger.warn( wMsg );
+                               return totalCount;
                        }
-               }
-               catch (Exception e) {
-                       String wMsg = "Error -- Stopping the counting of descendents because of Exception [" + e.getMessage() + "]";
-                       System.out.println( wMsg );
-                       logger.warn( wMsg );
-               }
-               
-               return totalCount;
-       }// end of countDescendants()
+                       
+                       try {
+                               Iterator <Vertex> vertI = graph.traversal().V(vtx).union(__.outE().has(EdgeProperties.out(EdgeProperty.IS_PARENT), true).inV(), __.inE().has(EdgeProperties.in(EdgeProperty.IS_PARENT), true).outV());
+                               while( vertI != null && vertI.hasNext() ){
+                                       totalCount++;
+                                       Vertex childVtx = vertI.next();
+                                       totalCount = totalCount + countDescendants( logger, childVtx, thisLevel );
+                               }
+                       }
+                       catch (Exception e) {
+                               String wMsg = "Error -- Stopping the counting of descendents because of Exception [" + e.getMessage() + "]";
+                               System.out.println( wMsg );
+                               logger.warn( wMsg );
+                       }
+                       
+                       return totalCount;
+               }// end of countDescendants()
 
-       
-       public static boolean getEdgeDelConfirmation( EELFLogger logger, String uid, TitanEdge ed, 
-                       Boolean overRideProtection ) {
-               
-               showPropertiesForEdge( logger, ed );
-               System.out.print("\n Are you sure you want to delete this EDGE? (y/n): ");
-               Scanner s = new Scanner(System.in);
-               s.useDelimiter("");
-               String confirm = s.next();
-               s.close();
                
-               if (!confirm.equalsIgnoreCase("y")) {
-                       String infMsg = " User [" + uid + "] has chosen to abandon this delete request. ";
-                       System.out.println("\n" + infMsg);
-                       logger.info(infMsg);
-                       return false;
-               }
-               else {
-                       String infMsg = " User [" + uid + "] has confirmed this delete request. ";
-                       System.out.println("\n" + infMsg);
-                       logger.info(infMsg);
-                       return true;
-               }
-       
-       } // End of getEdgeDelConfirmation()
+               public boolean getEdgeDelConfirmation( EELFLogger logger, String uid, TitanEdge ed, 
+                               Boolean overRideProtection ) {
+                       
+                       showPropertiesForEdge( logger, ed );
+                       System.out.print("\n Are you sure you want to delete this EDGE? (y/n): ");
+                       Scanner s = new Scanner(System.in);
+                       s.useDelimiter("");
+                       String confirm = s.next();
+                       s.close();
+                       
+                       if (!confirm.equalsIgnoreCase("y")) {
+                               String infMsg = " User [" + uid + "] has chosen to abandon this delete request. ";
+                               System.out.println("\n" + infMsg);
+                               logger.info(infMsg);
+                               return false;
+                       }
+                       else {
+                               String infMsg = " User [" + uid + "] has confirmed this delete request. ";
+                               System.out.println("\n" + infMsg);
+                               logger.info(infMsg);
+                               return true;
+                       }
                
+               } // End of getEdgeDelConfirmation()
+                       
 
-       public static boolean getNodeDelConfirmation( EELFLogger logger, String uid, Vertex vtx, int edgeCount, 
-                       int descendantCount, Boolean overRideProtection ) {
-               String thisNodeType = "";
-               try {
-                       thisNodeType = vtx.<String>property("aai-node-type").orElse(null);
-               }
-               catch ( Exception nfe ){
-                       // Let the user know something is going on - but they can confirm the delete if they want to. 
-                       String infMsg = " -- WARNING -- could not get an aai-node-type for this vertex. -- WARNING -- ";
-                       System.out.println( infMsg );
-                       logger.warn( infMsg );
-               }
-               
-               String ntListString = "";  
-               String maxDescString = "";
-               String maxEdgeString = "";
-               
-               int maxDescCount = 10; // default value
-               int maxEdgeCount = 10; // default value
-               ArrayList <String> protectedNTypes = new ArrayList <String> ();
-               protectedNTypes.add("cloud-region");  // default value
-               
-               try {
-                       ntListString = AAIConfig.get("aai.forceDel.protected.nt.list");
-                       maxDescString = AAIConfig.get("aai.forceDel.protected.descendant.count");
-                       maxEdgeString = AAIConfig.get("aai.forceDel.protected.edge.count");
-               }
-               catch ( Exception nfe ){
-                       // Don't worry, we will use default values 
-                       String infMsg = "-- WARNING -- could not get aai.forceDel.protected values from aaiconfig.properties -- will use default values. ";
-                       System.out.println( infMsg );
-                       logger.warn( infMsg );
-               }
-               
-               if( maxDescString != null && !maxDescString.equals("") ){
+               public boolean getNodeDelConfirmation( EELFLogger logger, String uid, Vertex vtx, int edgeCount, 
+                               int descendantCount, Boolean overRideProtection ) {
+                       String thisNodeType = "";
                        try {
-                               maxDescCount = Integer.parseInt(maxDescString);
+                               thisNodeType = vtx.<String>property("aai-node-type").orElse(null);
                        }
                        catch ( Exception nfe ){
-                               // Don't worry, we will leave "maxDescCount" set to the default value 
+                               // Let the user know something is going on - but they can confirm the delete if they want to. 
+                               String infMsg = " -- WARNING -- could not get an aai-node-type for this vertex. -- WARNING -- ";
+                               System.out.println( infMsg );
+                               logger.warn( infMsg );
                        }
-               }
-               
-               if( maxEdgeString != null &&  !maxEdgeString.equals("") ){
+                       
+                       String ntListString = "";  
+                       String maxDescString = "";
+                       String maxEdgeString = "";
+                       
+                       int maxDescCount = 10; // default value
+                       int maxEdgeCount = 10; // default value
+                       ArrayList <String> protectedNTypes = new ArrayList <String> ();
+                       protectedNTypes.add("cloud-region");  // default value
+                       
                        try {
-                               maxEdgeCount = Integer.parseInt(maxEdgeString);
+                               ntListString = AAIConfig.get("aai.forceDel.protected.nt.list");
+                               maxDescString = AAIConfig.get("aai.forceDel.protected.descendant.count");
+                               maxEdgeString = AAIConfig.get("aai.forceDel.protected.edge.count");
                        }
                        catch ( Exception nfe ){
-                               // Don't worry, we will leave "maxEdgeCount" set to the default value 
+                               // Don't worry, we will use default values 
+                               String infMsg = "-- WARNING -- could not get aai.forceDel.protected values from aaiconfig.properties -- will use default values. ";
+                               System.out.println( infMsg );
+                               logger.warn( infMsg );
                        }
-               }
-               
-               if( ntListString != null && !ntListString.trim().equals("") ){
-                       String [] nodeTypes = ntListString.split("\\|");
-                       for( int i = 0; i < nodeTypes.length; i++ ){
-                               protectedNTypes.add(nodeTypes[i]);
+                       
+                       if( maxDescString != null && !maxDescString.equals("") ){
+                               try {
+                                       maxDescCount = Integer.parseInt(maxDescString);
+                               }
+                               catch ( Exception nfe ){
+                                       // Don't worry, we will leave "maxDescCount" set to the default value 
+                               }
                        }
-               }
-               
-               boolean giveProtOverRideMsg = false;
-               boolean giveProtErrorMsg = false;
-               if( descendantCount > maxDescCount ){
-                       // They are trying to delete a node with a lots of descendants
-                       String infMsg = " >> WARNING >> This node has more descendant edges than the max ProtectedDescendantCount: " + edgeCount + ".  Max = " + 
-                                               maxEdgeCount + ".  It can be DANGEROUS to delete one of these. << WARNING << ";
-                       System.out.println(infMsg);
-                       logger.info(infMsg);
-                       if( ! overRideProtection ){
-                               // They cannot delete this kind of node without using the override option
-                               giveProtErrorMsg = true;
+                       
+                       if( maxEdgeString != null &&  !maxEdgeString.equals("") ){
+                               try {
+                                       maxEdgeCount = Integer.parseInt(maxEdgeString);
+                               }
+                               catch ( Exception nfe ){
+                                       // Don't worry, we will leave "maxEdgeCount" set to the default value 
+                               }
                        }
-                       else {
-                               giveProtOverRideMsg = true;
+                       
+                       if( ntListString != null && !ntListString.trim().equals("") ){
+                               String [] nodeTypes = ntListString.split("\\|");
+                               for( int i = 0; i < nodeTypes.length; i++ ){
+                                       protectedNTypes.add(nodeTypes[i]);
+                               }
                        }
-               }
-               
-               if( edgeCount > maxEdgeCount ){
-                       // They are trying to delete a node with a lot of edges
-                       String infMsg = " >> WARNING >> This node has more edges than the max ProtectedEdgeCount: " + edgeCount + ".  Max = " + 
-                                               maxEdgeCount + ".  It can be DANGEROUS to delete one of these. << WARNING << ";
-                       System.out.println(infMsg);
-                       logger.info(infMsg);
-                       if( ! overRideProtection ){
-                               // They cannot delete this kind of node without using the override option
-                               giveProtErrorMsg = true;
+                       
+                       boolean giveProtOverRideMsg = false;
+                       boolean giveProtErrorMsg = false;
+                       if( descendantCount > maxDescCount ){
+                               // They are trying to delete a node with a lots of descendants
+                               String infMsg = " >> WARNING >> This node has more descendant edges than the max ProtectedDescendantCount: " + edgeCount + ".  Max = " + 
+                                                       maxEdgeCount + ".  It can be DANGEROUS to delete one of these. << WARNING << ";
+                               System.out.println(infMsg);
+                               logger.info(infMsg);
+                               if( ! overRideProtection ){
+                                       // They cannot delete this kind of node without using the override option
+                                       giveProtErrorMsg = true;
+                               }
+                               else {
+                                       giveProtOverRideMsg = true;
+                               }
                        }
-                       else {
-                               giveProtOverRideMsg = true;
+                       
+                       if( edgeCount > maxEdgeCount ){
+                               // They are trying to delete a node with a lot of edges
+                               String infMsg = " >> WARNING >> This node has more edges than the max ProtectedEdgeCount: " + edgeCount + ".  Max = " + 
+                                                       maxEdgeCount + ".  It can be DANGEROUS to delete one of these. << WARNING << ";
+                               System.out.println(infMsg);
+                               logger.info(infMsg);
+                               if( ! overRideProtection ){
+                                       // They cannot delete this kind of node without using the override option
+                                       giveProtErrorMsg = true;
+                               }
+                               else {
+                                       giveProtOverRideMsg = true;
+                               }
                        }
-               }
-               
-               if( thisNodeType != null && !thisNodeType.equals("") && protectedNTypes.contains(thisNodeType) ){
-                       // They are trying to delete a protected Node Type
-                       String infMsg = " >> WARNING >> This node is a PROTECTED NODE-TYPE (" + thisNodeType + "). " +
-                                       " It can be DANGEROUS to delete one of these. << WARNING << ";
-                       System.out.println(infMsg);
-                       logger.info(infMsg);
-                       if( ! overRideProtection ){
-                               // They cannot delete this kind of node without using the override option
-                               giveProtErrorMsg = true;
+                       
+                       if( thisNodeType != null && !thisNodeType.equals("") && protectedNTypes.contains(thisNodeType) ){
+                               // They are trying to delete a protected Node Type
+                               String infMsg = " >> WARNING >> This node is a PROTECTED NODE-TYPE (" + thisNodeType + "). " +
+                                               " It can be DANGEROUS to delete one of these. << WARNING << ";
+                               System.out.println(infMsg);
+                               logger.info(infMsg);
+                               if( ! overRideProtection ){
+                                       // They cannot delete this kind of node without using the override option
+                                       giveProtErrorMsg = true;
+                               }
+                               else {
+                                       giveProtOverRideMsg = true;
+                               }
+                       }
+                       
+                       if( giveProtOverRideMsg ){
+                               String infMsg = " !!>> WARNING >>!! you are using the overRideProtection parameter which will let you do this potentially dangerous delete.";
+                               System.out.println("\n" + infMsg);
+                               logger.info(infMsg);
+                       }
+                       else if( giveProtErrorMsg ) {
+                               String errMsg = " ERROR >> this kind of node can only be deleted if you pass the overRideProtection parameter.";
+                               System.out.println("\n" + errMsg);
+                               logger.error(errMsg);
+                               return false;
+                       }
+                       
+                       System.out.print("\n Are you sure you want to do this delete? (y/n): ");
+                       Scanner s = new Scanner(System.in);
+                       s.useDelimiter("");
+                       String confirm = s.next();
+                       s.close();
+                       
+                       if (!confirm.equalsIgnoreCase("y")) {
+                               String infMsg = " User [" + uid + "] has chosen to abandon this delete request. ";
+                               System.out.println("\n" + infMsg);
+                               logger.info(infMsg);
+                               return false;
                        }
                        else {
-                               giveProtOverRideMsg = true;
+                               String infMsg = " User [" + uid + "] has confirmed this delete request. ";
+                               System.out.println("\n" + infMsg);
+                               logger.info(infMsg);
+                               return true;
                        }
-               }
-               
-               if( giveProtOverRideMsg ){
-                       String infMsg = " !!>> WARNING >>!! you are using the overRideProtection parameter which will let you do this potentially dangerous delete.";
-                       System.out.println("\n" + infMsg);
-                       logger.info(infMsg);
-               }
-               else if( giveProtErrorMsg ) {
-                       String errMsg = " ERROR >> this kind of node can only be deleted if you pass the overRideProtection parameter.";
-                       System.out.println("\n" + errMsg);
-                       logger.error(errMsg);
-                       return false;
-               }
-               
-               System.out.print("\n Are you sure you want to do this delete? (y/n): ");
-               Scanner s = new Scanner(System.in);
-               s.useDelimiter("");
-               String confirm = s.next();
-               s.close();
                
-               if (!confirm.equalsIgnoreCase("y")) {
-                       String infMsg = " User [" + uid + "] has chosen to abandon this delete request. ";
-                       System.out.println("\n" + infMsg);
-                       logger.info(infMsg);
-                       return false;
-               }
-               else {
-                       String infMsg = " User [" + uid + "] has confirmed this delete request. ";
-                       System.out.println("\n" + infMsg);
-                       logger.info(infMsg);
-                       return true;
-               }
-       
-       } // End of getNodeDelConfirmation()
+               } // End of getNodeDelConfirmation()
+       }
        
 }
 
index 7480c05..050283d 100644 (file)
@@ -263,7 +263,7 @@ public class AAILogJAXRSInInterceptor extends JAXRSInInterceptor {
         * @return the string
         */
        protected String genDate() {
-               FormatDate fd = new FormatDate(AAIConfig.get(AAIConstants.HBASE_TABLE_TIMESTAMP_FORMAT, "YYMMdd-HH:mm:ss:SSS"));
+               FormatDate fd = new FormatDate( "YYMMdd-HH:mm:ss:SSS");
                return fd.getDateTime();
        }
 
index 563500e..b1d7ac9 100644 (file)
@@ -267,7 +267,7 @@ public class AAILogJAXRSOutInterceptor extends JAXRSOutInterceptor {
        }
 
        protected String genDate() {
-               FormatDate fd = new FormatDate(AAIConfig.get(AAIConstants.HBASE_TABLE_TIMESTAMP_FORMAT, "YYMMdd-HH:mm:ss:SSS"));
+               FormatDate fd = new FormatDate( "YYMMdd-HH:mm:ss:SSS");
                return fd.getDateTime();
        }
 
index ef305b0..945a6f3 100644 (file)
@@ -271,8 +271,6 @@ public class HttpEntry {
                                                        case PUT: 
                                                                if (isNewVertex) {
                                                                        v = serializer.createNewVertex(obj);
-                                                               } else {
-                                                                       serializer.touchStandardVertexProperties(v, false);
                                                                }
                                                                serializer.serializeToDb(obj, v, query, uri.getRawPath(), requestContext);
                                                                status = Status.OK;
diff --git a/aai-resources/src/main/java/org/openecomp/aai/rest/tools/ModelVersionTransformer.java b/aai-resources/src/main/java/org/openecomp/aai/rest/tools/ModelVersionTransformer.java
new file mode 100644 (file)
index 0000000..956fb41
--- /dev/null
@@ -0,0 +1,412 @@
+/*-
+ * ============LICENSE_START=======================================================
+ * org.openecomp.aai
+ * ================================================================================
+ * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
+ * ================================================================================
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ * ============LICENSE_END=========================================================
+ */
+
+package org.openecomp.aai.rest.tools;
+
+import java.io.UnsupportedEncodingException;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.NoSuchElementException;
+import java.util.Set;
+
+import javax.servlet.http.HttpServletRequest;
+import javax.ws.rs.Consumes;
+import javax.ws.rs.Encoded;
+import javax.ws.rs.POST;
+import javax.ws.rs.Path;
+import javax.ws.rs.PathParam;
+import javax.ws.rs.Produces;
+import javax.ws.rs.core.Context;
+import javax.ws.rs.core.HttpHeaders;
+import javax.ws.rs.core.MediaType;
+import javax.ws.rs.core.MultivaluedMap;
+import javax.ws.rs.core.Response;
+import javax.ws.rs.core.Response.Status;
+import javax.ws.rs.core.UriInfo;
+
+import org.apache.tinkerpop.gremlin.structure.Vertex;
+import org.openecomp.aai.db.props.AAIProperties;
+import org.openecomp.aai.dbmap.DBConnectionType;
+import org.openecomp.aai.exceptions.AAIException;
+import org.openecomp.aai.introspection.Introspector;
+import org.openecomp.aai.introspection.Loader;
+import org.openecomp.aai.introspection.MarshallerProperties;
+import org.openecomp.aai.introspection.ModelType;
+import org.openecomp.aai.introspection.Version;
+import org.openecomp.aai.introspection.exceptions.AAIUnknownObjectException;
+import org.openecomp.aai.logging.ErrorLogHelper;
+import org.openecomp.aai.rest.db.HttpEntry;
+import org.openecomp.aai.rest.exceptions.AAIInvalidXMLNamespace;
+import org.openecomp.aai.rest.util.ValidateEncoding;
+import org.openecomp.aai.restcore.RESTAPI;
+import org.openecomp.aai.serialization.db.EdgeType;
+import org.openecomp.aai.serialization.db.exceptions.NoEdgeRuleFoundException;
+import org.openecomp.aai.serialization.engines.QueryStyle;
+import org.openecomp.aai.serialization.engines.TransactionalGraphEngine;
+import org.radeox.util.logging.Logger;
+
+import com.att.eelf.configuration.EELFLogger;
+import com.att.eelf.configuration.EELFManager;
+import com.google.common.base.Joiner;
+import com.thinkaurelius.titan.core.TitanTransaction;
+
+
+/**
+ * The Class ModelVersionTransformer.
+ */
+@Path("tools")
+public class ModelVersionTransformer extends RESTAPI {
+
+       private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(ModelVersionTransformer.class.getName());
+       protected static String authPolicyFunctionName = "REST";
+       private ModelType introspectorFactoryType = ModelType.MOXY;
+       private QueryStyle queryStyle = QueryStyle.TRAVERSAL;
+
+
+       /**
+        * POST for model transformation.
+        *
+        * @param content the content
+        * @param uri the uri
+        * @param headers the headers
+        * @param info the info
+        * @param req the req
+        * @return the transformed model
+        * @Path("/{uri: modeltransform}")
+        * @throws UnsupportedEncodingException 
+        */
+       @POST
+       @Path("/{uri: modeltransform}")
+       @Consumes({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+       @Produces({ MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML })
+       public Response modelTransform (String content, @PathParam("uri") @Encoded String uri, @Context HttpHeaders headers, @Context UriInfo info, @Context HttpServletRequest req) throws UnsupportedEncodingException {
+               Response response = null;
+               TransactionalGraphEngine dbEngine = null;
+               Loader loader = null;
+               MediaType mediaType = headers.getMediaType();
+               String sourceOfTruth = headers.getRequestHeaders().getFirst("X-FromAppId");
+               String transId = headers.getRequestHeaders().getFirst("X-TransactionId");
+               String realTime = headers.getRequestHeaders().getFirst("Real-Time");
+               TitanTransaction g = null;
+               Boolean success = true;
+               AAIException ex;
+               
+               try {
+                       validateRequest(info);
+
+                       DBConnectionType type = this.determineConnectionType(sourceOfTruth, realTime);
+                       HttpEntry httpEntry = new HttpEntry(Version.v8, introspectorFactoryType, queryStyle, type);
+                       loader = httpEntry.getLoader();
+                       dbEngine = httpEntry.getDbEngine();
+                       if (content.length() == 0) {
+                               if (mediaType.toString().contains(MediaType.APPLICATION_JSON)) {
+                                       content = "{}";
+                               } else {
+                                       content = "<empty/>";
+                               }
+                       }
+
+                       //Unmarshall the received model and store properties and values in a map.
+                       Introspector obj = loader.unmarshal("Model", content, org.openecomp.aai.restcore.MediaType.getEnum(this.getInputMediaType(mediaType)));
+                       if (obj == null) {
+                               throw new AAIException("AAI_3000", "object could not be unmarshalled:" + content);
+                       }
+
+                       if (mediaType.toString().contains(MediaType.APPLICATION_XML) && !content.equals("<empty/>") && isEmptyObject(obj)) {
+                               throw new AAIInvalidXMLNamespace(content);
+                       }
+
+                       Set<String> properties = obj.getProperties();
+                       java.util.Iterator<String> propItr = properties.iterator();
+
+                       Map<String, Object> v8PropMap = new HashMap<String, Object>();
+                       while (propItr.hasNext()){
+                               String property = propItr.next();
+                               Object propertyValue = obj.getValue(property);
+                               if (propertyValue != null) {
+                                       v8PropMap.put(propItr.next(), propertyValue);
+                               }
+                       }
+                       // Get the current models and create a map of model-ver to model keys, this allows us
+                       // to easily figure out and construct the relationships on the supplied v8 model
+                       Map<String,String> modelVersionIdToModelInvariantIdMap = getCurrentModelsFromGraph(headers, transId, info);
+
+                       //              Build the v10 - TODO
+                       HttpEntry newHttpEntry = new HttpEntry(Version.v10, introspectorFactoryType, queryStyle, type);
+                       Loader newLoader = newHttpEntry.getLoader();
+                       Introspector newModelObj = newLoader.introspectorFromName("Model");
+
+                       // pull the attributes we need to apply to the model + model-ver objects
+                       // model specific attrs
+                       String oldModelInvariantId = obj.getValue("model-id");
+                       String oldModelType = obj.getValue("model-type");
+                       // model-ver specific
+                       String oldModelName = obj.getValue("model-name");
+                       String oldModelVersionId = obj.getValue("model-name-version-id");
+                       String oldModelVersion = obj.getValue("model-version");
+
+                       // copy attributes from the v8 model object to the v10 model object
+                       newModelObj.setValue("model-invariant-id", oldModelInvariantId);
+                       newModelObj.setValue("model-type", oldModelType);
+
+                       Introspector modelVersObj = newModelObj.newIntrospectorInstanceOfProperty("model-vers");
+
+                       newModelObj.setValue("model-vers", modelVersObj.getUnderlyingObject());
+
+                       List<Object> modelVerList = (List<Object>)modelVersObj.getValue("model-ver");
+
+                       //create a model-ver object
+                       Introspector modelVerObj = newLoader.introspectorFromName("ModelVer");
+                       // load attributes from the v8 model object into the v10 model-ver object
+                       modelVerObj.setValue("model-version-id", oldModelVersionId);
+                       modelVerObj.setValue("model-name", oldModelName);
+                       modelVerObj.setValue("model-version", oldModelVersion);
+
+
+                       if (obj.hasProperty("model-elements")) { 
+                               Introspector oldModelElements = obj.getWrappedValue("model-elements");
+                               if (oldModelElements != null) {
+                                       Introspector newModelElements = modelVerObj.newIntrospectorInstanceOfProperty("model-elements");
+                                       modelVerObj.setValue("model-elements", newModelElements.getUnderlyingObject());
+                                       repackModelElements(oldModelElements, newModelElements, modelVersionIdToModelInvariantIdMap);
+                               }
+                       }
+
+                       modelVerList.add(modelVerObj.getUnderlyingObject());
+
+                       String outputMediaType = getMediaType(headers.getAcceptableMediaTypes());
+                       MarshallerProperties marshallerProperties = 
+                                       new MarshallerProperties.Builder(org.openecomp.aai.restcore.MediaType.getEnum(outputMediaType)).build();
+
+                       String result = newModelObj.marshal(marshallerProperties);
+                       response = Response.ok(result).build();
+
+               } catch (AAIException e) {
+
+                       ArrayList<String> templateVars = new ArrayList<String>(2);
+                       templateVars.add("POST modeltransform");
+                       templateVars.add("model-ver.model-version-id");
+                       response = Response
+                                       .status(e.getErrorObject().getHTTPResponseCode())
+                                       .entity(ErrorLogHelper.getRESTAPIErrorResponse(
+                                                       headers.getAcceptableMediaTypes(), e,
+                                                       templateVars)).build();
+                       success = false;
+               } catch (Exception e) {
+                       ArrayList<String> templateVars = new ArrayList<String>(2);
+                       templateVars.add("POST modeltransform");
+                       templateVars.add("model-ver.model-version-id");
+                       ex = new AAIException("AAI_4000", e);
+                       response = Response
+                                       .status(Status.INTERNAL_SERVER_ERROR)
+                                       .entity(ErrorLogHelper.getRESTAPIErrorResponse(headers.getAcceptableMediaTypes(), ex, templateVars))
+                                       .build();
+                       e.printStackTrace();
+                       success = false;
+               } finally {
+                       if (dbEngine != null) {
+                               if (success) {
+                                       dbEngine.commit();
+                               } else {
+                                       dbEngine.rollback();
+                               }
+                       }
+               }
+               return response;
+       }
+
+
+       private void repackModelElements(Introspector oldModelElements, Introspector newModelElements, Map<String, String> modelVersionIdToModelInvariantIdMap) 
+                       throws AAIUnknownObjectException, AAIException {
+
+               List<Introspector> oldModelElementList = oldModelElements.getWrappedListValue("model-element");
+               List<Object> newModelElementList = (List<Object>)newModelElements.getValue("model-element");
+
+               for (Introspector oldModelElement : oldModelElementList) { 
+                       Introspector newModelElement = newModelElements.getLoader().introspectorFromName("model-element");
+
+                       ArrayList<String> attrs = new ArrayList<String>();
+
+                       attrs.add("model-element-uuid");
+                       attrs.add("new-data-del-flag");
+                       attrs.add("cardinality");
+                       attrs.add("linkage-points");
+
+                       for (String attr : attrs) { 
+                               if (oldModelElement.hasProperty(attr)) {
+                                       newModelElement.setValue(attr, oldModelElement.getValue(attr));
+                               }
+                       }
+                       
+                       if (oldModelElement.hasProperty("relationship-list")) { 
+                               
+                               Introspector oldRelationshipList = oldModelElement.getWrappedValue("relationship-list");
+                               Introspector newRelationshipList = newModelElements.getLoader().introspectorFromName("relationship-list");
+                               newModelElement.setValue("relationship-list", newRelationshipList.getUnderlyingObject());
+
+                               List<Introspector> oldRelationshipListList = oldRelationshipList.getWrappedListValue("relationship");
+                               List<Object> newRelationshipListList = (List<Object>)newRelationshipList.getValue("relationship");
+
+                               for (Introspector oldRelationship : oldRelationshipListList) { 
+
+                                       Introspector newRelationship = newModelElements.getLoader().introspectorFromName("relationship");
+                                       newRelationshipListList.add(newRelationship.getUnderlyingObject());
+
+                                       List<Introspector> oldRelationshipData = oldRelationship.getWrappedListValue("relationship-data");
+                                       List<Object> newRelationshipData = (List<Object>)newRelationship.getValue("relationship-data");
+
+                                       newRelationship.setValue("related-to", "model-ver");
+
+                                       for (Introspector oldRelationshipDatum : oldRelationshipData) { 
+
+                                               String oldProp = null;
+                                               String oldVal = null;
+
+                                               if (oldRelationshipDatum.hasProperty("relationship-key")) { 
+                                                       oldProp = oldRelationshipDatum.getValue("relationship-key");
+                                               } 
+                                               if (oldRelationshipDatum.hasProperty("relationship-value")) { 
+                                                       oldVal = oldRelationshipDatum.getValue("relationship-value");
+                                               }
+
+                                               if (oldProp.equals("model.model-name-version-id")) { 
+                                                       // make two new relationshipDatum for use w/ the new style model
+
+                                                       // you should have the model in the list of models we collected earlier
+                                                       if (modelVersionIdToModelInvariantIdMap.containsKey(oldVal)) { 
+                                                               Introspector newRelationshipDatum1 = newModelElements.getLoader().introspectorFromName("relationship-data");
+                                                               Introspector newRelationshipDatum2 = newModelElements.getLoader().introspectorFromName("relationship-data");
+
+                                                               String modelId = modelVersionIdToModelInvariantIdMap.get(oldVal);
+
+                                                               // the first one points at the model-invariant-id of found model
+                                                               newRelationshipDatum1.setValue("relationship-key", "model.model-invariant-id");
+                                                               newRelationshipDatum1.setValue("relationship-value", modelId);
+
+                                                               // the second one points at the model-version-id which corresponds to the old model-name-version-id
+                                                               newRelationshipDatum2.setValue("relationship-key", "model-ver.model-version-id");
+                                                               newRelationshipDatum2.setValue("relationship-value", oldVal);
+
+                                                               newRelationshipData.add(newRelationshipDatum1.getUnderlyingObject());
+                                                               newRelationshipData.add(newRelationshipDatum2.getUnderlyingObject());
+                                                       } else { 
+                                                               throw new AAIException("AAI_6114", "No model-ver found using model-ver.model-version-id=" + oldVal);
+                                                       }
+                                               }
+                                       }
+
+                               }
+                       }
+
+                       if (oldModelElement.hasProperty("model-elements")) {
+                               Introspector nextOldModelElements = oldModelElement.getWrappedValue("model-elements");
+                               if (nextOldModelElements != null) {
+                                       Introspector nextNewModelElements = newModelElement.newIntrospectorInstanceOfProperty("model-elements");
+                                       newModelElement.setValue("model-elements", nextNewModelElements.getUnderlyingObject());
+                                       repackModelElements(nextOldModelElements, nextNewModelElements, modelVersionIdToModelInvariantIdMap);
+                               }
+                       }
+                       newModelElementList.add(newModelElement.getUnderlyingObject());
+               }
+               return;
+
+       }
+
+       private Map<String, String> getCurrentModelsFromGraph(HttpHeaders headers, String transactionId, UriInfo info) throws NoEdgeRuleFoundException, AAIException {
+
+               TransactionalGraphEngine dbEngine = null;
+               Map<String, String> modelVerModelMap = new HashMap<String,String>() ;
+               try {
+
+                       Version version = AAIProperties.LATEST;
+                       DBConnectionType type = DBConnectionType.REALTIME;
+
+                       final HttpEntry httpEntry = new HttpEntry(version, introspectorFactoryType, queryStyle, type);
+                       dbEngine = httpEntry.getDbEngine();
+
+                       List<Vertex> modelVertices =  dbEngine.asAdmin().getTraversalSource().V().has(AAIProperties.NODE_TYPE,"model").toList();
+                       for (Vertex modelVtx : modelVertices) { 
+
+                               List<Vertex> modelVerVerts = dbEngine.getQueryBuilder(modelVtx).createEdgeTraversal(EdgeType.TREE, "model", "model-ver").toList();
+                               for (Vertex v : modelVerVerts) { 
+                                       modelVerModelMap.put(v.value("model-version-id"), modelVtx.value("model-invariant-id"));
+                               }
+                       }
+               } catch (NoSuchElementException e) {
+                       // TODO Auto-generated catch block
+                       e.printStackTrace();
+               } catch (Exception e1) { 
+                       e1.printStackTrace();
+               }
+               return modelVerModelMap;
+
+       }
+
+       /**
+        * Validate request.
+        *
+        * @param uri the uri
+        * @param headers the headers
+        * @param req the req
+        * @param action the action
+        * @param info the info
+        * @throws AAIException the AAI exception
+        * @throws UnsupportedEncodingException the unsupported encoding exception
+        */
+       private void validateRequest(UriInfo info) throws AAIException, UnsupportedEncodingException {
+
+               if (!ValidateEncoding.getInstance().validate(info)) {
+                       throw new AAIException("AAI_3008", "uri=" + getPath(info));
+               }
+       }
+
+       /**
+        * Gets the path.
+        *
+        * @param info the info
+        * @return the path
+        */
+       private String getPath(UriInfo info) {
+               String path = info.getPath(false);
+               MultivaluedMap<String, String> map = info.getQueryParameters(false);
+               String params = "?";
+               List<String> parmList = new ArrayList<>();
+               for (String key : map.keySet()) {
+                       for (String value : map.get(key)) {
+                               parmList.add(key + "=" + value);
+                       }
+               }
+               String queryParams = Joiner.on("&").join(parmList);
+               if (map.keySet().size() > 0) {
+                       path += params + queryParams;
+               }
+
+               return path;
+
+       }
+
+       protected boolean isEmptyObject(Introspector obj) {
+               return "{}".equals(obj.marshal(false));
+       }
+
+
+}
index 773b4a6..3184da8 100644 (file)
@@ -25,12 +25,11 @@ import java.io.IOException;
 import javax.servlet.ServletContextEvent;
 import javax.servlet.ServletContextListener;
 
-//import org.apache.activemq.broker.BrokerService;
-
 import org.openecomp.aai.dbmap.AAIGraph;
 import org.openecomp.aai.exceptions.AAIException;
 import org.openecomp.aai.introspection.ModelInjestor;
 import org.openecomp.aai.logging.ErrorLogHelper;
+import org.openecomp.aai.migration.MigrationControllerInternal;
 import com.att.eelf.configuration.EELFLogger;
 import com.att.eelf.configuration.EELFManager;
 
@@ -38,8 +37,6 @@ public class AAIAppServletContextListener implements ServletContextListener {
 
        private static final EELFLogger LOGGER = EELFManager.getInstance().getLogger(AAIAppServletContextListener.class.getName());     
        
-       //private BrokerService broker = new BrokerService();
-
        /**
         * Destroys Context
         * 
@@ -49,13 +46,6 @@ public class AAIAppServletContextListener implements ServletContextListener {
                LOGGER.info("AAIGraph shutting down");
                AAIGraph.getInstance().graphShutdown();
                LOGGER.info("AAIGraph shutdown");
-
-               try {
-//                     broker.stop();
-               } catch (Exception e) {
-                       // TODO Auto-generated catch block
-                       e.printStackTrace();
-               }
        }
 
        /**
@@ -79,17 +69,12 @@ public class AAIAppServletContextListener implements ServletContextListener {
                        AAIGraph.getInstance();
                        ModelInjestor.getInstance();
 
-                       // Jsm internal broker for aai events
-                       //broker = new BrokerService();
-                       //broker.addConnector("tcp://localhost:61447");
-                       //broker.setPersistent(false);
-                       //broker.setUseJmx(false);
-                       //broker.setSchedulerSupport(false);
-                       //broker.start();
-
                        LOGGER.info("A&AI Server initialization succcessful.");
                        System.setProperty("org.openecomp.aai.serverStarted", "true");
-
+                       if ("true".equals(AAIConfig.get("aai.run.migrations", "false"))) {
+                               MigrationControllerInternal migrations = new MigrationControllerInternal();
+                               migrations.run(new String[]{"--commit"});
+                       }
                } catch (AAIException e) {
                        ErrorLogHelper.logException(e);
                        throw new RuntimeException("AAIException caught while initializing A&AI server", e);
index 12fbb6d..4ced5e0 100644 (file)
@@ -43,4 +43,4 @@
             <jaxb:package name="org.openecomp.aai.domain.yang"/>
         </jaxb:schemaBindings>      
     </jaxb:bindings>
-</jaxb:bindings>
+</jaxb:bindings>
\ No newline at end of file
diff --git a/aai-resources/src/test/java/org/openecomp/aai/util/AAITxnLogTest.java b/aai-resources/src/test/java/org/openecomp/aai/util/AAITxnLogTest.java
deleted file mode 100644 (file)
index 57ba3eb..0000000
+++ /dev/null
@@ -1,361 +0,0 @@
-/*-
- * ============LICENSE_START=======================================================
- * org.openecomp.aai
- * ================================================================================
- * Copyright (C) 2017 AT&T Intellectual Property. All rights reserved.
- * ================================================================================
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- * 
- *      http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- * ============LICENSE_END=========================================================
- */
-
-package org.openecomp.aai.util;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.fail;
-
-import java.io.IOException;
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-import java.util.List;
-
-import org.apache.hadoop.conf.Configuration;
-import org.apache.hadoop.hbase.HBaseConfiguration;
-import org.apache.hadoop.hbase.client.Get;
-import org.apache.hadoop.hbase.client.HTable;
-import org.apache.hadoop.hbase.client.Result;
-import org.apache.hadoop.hbase.client.ResultScanner;
-import org.apache.hadoop.hbase.client.Scan;
-import org.apache.hadoop.hbase.util.Bytes;
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Rule;
-import org.junit.Test;
-import org.mockito.Mockito;
-import org.powermock.api.mockito.PowerMockito;
-import org.powermock.core.classloader.annotations.PrepareForTest;
-import org.powermock.modules.agent.PowerMockAgent;
-import org.powermock.modules.junit4.rule.PowerMockRule;
-
-import org.openecomp.aai.domain.notificationEvent.NotificationEvent;
-import org.openecomp.aai.domain.translog.TransactionLogEntries;
-import org.openecomp.aai.domain.translog.TransactionLogEntry;
-import org.openecomp.aai.exceptions.AAIException;
-import com.fasterxml.jackson.core.JsonGenerationException;
-import com.fasterxml.jackson.databind.JsonMappingException;
-
-
-@Ignore
-@PrepareForTest({HBaseConfiguration.class, Configuration.class, 
-       HTable.class, Result.class, ResultScanner.class, Scan.class, 
-       Get.class, NotificationEvent.class, 
-       NotificationEvent.EventHeader.class, PojoUtils.class, AAITxnLog.class}) 
-
-public class AAITxnLogTest {
-       
-       @Rule
-       public PowerMockRule rule = new PowerMockRule();
-       
-       static {
-            PowerMockAgent.initializeIfNeeded();
-        }
-       
-       AAITxnLog aaiTnxLog;
-       Configuration config;
-       HTable htable;
-       Result result;
-       ResultScanner resScanner;
-       Scan scan;
-       Get g;
-       NotificationEvent notif;
-       NotificationEvent.EventHeader ehNotif;
-       PojoUtils pu;
-
-       boolean hasNotifEvent = true;
-       final String notifPayload = "A random payload";
-       final String notifID = "1";
-       final String notifEntityLink = "nLink";
-       final String notifAction = "nAction";
-       final String notifStatus = "nStatus";
-       final String notifTopic = "nTopic";
-       
-       final String tid = "tidVal";
-       final String status = "statusVal";
-       final String rqstTm = "rqstTmVal";
-       final String respTm = "respTmVal";
-       final String srcId = "srcIdVal";
-       final String rsrcId = "rsrcIdVal";
-       final String rsrcType = "rsrcTypeVal";
-       final String rqstBuf = "rqstBufVal";
-       final String respBuf = "respBufVal";
-       
-       
-       /**
-        * Initialize.
-        */
-       @Before
-       public void initialize(){
-               partialSetupForAAIConfig();
-               PowerMockito.mockStatic(HBaseConfiguration.class);
-               config = PowerMockito.mock(Configuration.class);
-               htable = PowerMockito.mock(HTable.class);
-               result = PowerMockito.mock(Result.class);
-               resScanner = PowerMockito.mock(ResultScanner.class);
-               scan = PowerMockito.mock(Scan.class);
-               g = PowerMockito.mock(Get.class);
-               notif = PowerMockito.mock(NotificationEvent.class);
-               ehNotif = PowerMockito.mock(NotificationEvent.EventHeader.class);
-               pu = PowerMockito.mock(PojoUtils.class); 
-       
-               
-               mockNotificationEvent();
-               
-               Mockito.when(HBaseConfiguration.create()).thenReturn(config);
-               aaiTnxLog = new AAITxnLog(tid, srcId);
-
-               try {
-                       PowerMockito.whenNew(HTable.class).withAnyArguments().thenReturn(htable);
-                       PowerMockito.whenNew(Get.class).withAnyArguments().thenReturn(g);
-                       PowerMockito.whenNew(PojoUtils.class).withAnyArguments().thenReturn(pu);
-                       PowerMockito.whenNew(Scan.class).withAnyArguments().thenReturn(scan);
-               } catch (Exception e) {
-                       e.printStackTrace();
-               }
-               
-               mockResult();
-               
-               try {
-                       PowerMockito.when(htable.get(g)).thenReturn(result);
-                       PowerMockito.when(htable.getScanner(scan)).thenReturn(resScanner);
-               } catch (IOException e) {
-                       e.printStackTrace();
-               }
-       }
-
-       /**
-        * Method to test 'put' operation without a notification event.
-        */
-       @Test
-       public void testPut_withoutNotifEvent(){
-               String htid = aaiTnxLog.put(tid, status, rqstTm, respTm, srcId, rsrcId, rsrcType, rqstBuf, respBuf);
-               try {
-                       TransactionLogEntry tle = aaiTnxLog.get(htid);
-                       hasNotifEvent = false;
-                       validateTransactionLogEntry(tle);
-               } catch (AAIException e) {
-                       fail("Cant read back data from htable");
-                       e.printStackTrace();
-               }
-       }
-       
-       /**
-        * Method to test 'put' operation with a notification event.
-        */
-       @Test
-       public void testPut_withNotifEvent(){
-               hasNotifEvent = true;
-               String htid = aaiTnxLog.put(tid, status, rqstTm, respTm, srcId, rsrcId, rsrcType, rqstBuf, respBuf, hasNotifEvent, notif);
-               try {
-                       TransactionLogEntry tle = aaiTnxLog.get(htid);
-                       validateTransactionLogEntry(tle);
-               } catch (AAIException e) {
-                       fail("Cant read back data from htable");
-                       e.printStackTrace();
-               }
-       }
-       
-       /**
-        * Method to test 'scan' over an empty htable.
-        */
-       @Test
-       public void testScan_withEmptyHTable(){
-               String key = tid;
-               List<String> res = aaiTnxLog.scan(key);
-               assertTrue("Scan output should be empty", res.size() == 0 );
-       }
-       
-       /**
-        * Method to test 'scan' operation.
-        */
-       @Test
-       public void testScan(){
-               try {
-                       PowerMockito.when(resScanner.next()).thenReturn(result).thenReturn(null);
-               } catch (IOException e) {
-                       e.printStackTrace();
-               }
-               List<String> res = aaiTnxLog.scan(tid);
-               assertTrue("Scan output should not be empty", res.size()==1);
-               assertTrue("Did not find entry in 'scan'", res.get(0).equals(result.toString()));
-       }
-       
-       /**
-        * Method to test 'scanFiltered' with an empty htable.
-        */
-       @Test 
-       public void testScanFiltered_withEmptyHTable(){
-               aaiTnxLog.put(tid, status, rqstTm, respTm, srcId, rsrcId, rsrcType, rqstBuf, respBuf, true, new NotificationEvent());
-               TransactionLogEntries tles = aaiTnxLog.scanFiltered(0, 100, null, null, null, null, null);
-               assertTrue ("scanFilstered output should be empty", tles.getTransactionLogEntries().size() == 0);
-       }
-       
-       /**
-        * Method to test 'scanFiltered' operation.
-        */
-       @Test 
-       public void testScanFiltered(){
-               try {
-                       PowerMockito.when(resScanner.next()).thenReturn(result).thenReturn(null);
-               } catch (IOException e) {
-                       e.printStackTrace();
-               }
-               aaiTnxLog.put(tid, status, rqstTm, respTm, srcId, rsrcId, rsrcType, rqstBuf, respBuf, true, new NotificationEvent());
-               TransactionLogEntries tles = aaiTnxLog.scanFiltered(0, 100, null, null, null, null, null);
-               assertFalse ("scanFilstered output should not be empty", tles.getTransactionLogEntries().size() == 0);
-               validateTransactionLogEntry(tles.getTransactionLogEntries().get(0));
-       }
-       
-       /**
-        * Helper method to validate the contents of a TransactionalLogEntry.
-        *
-        * @param tle TransactionalLogEntry to compare against
-        */
-       public void validateTransactionLogEntry(TransactionLogEntry tle){
-               String pre = "validateTransactionLogEntry: ";
-               String post = " didn't match";
-               assertEquals(pre + "tid" + post, tle.getTransactionLogEntryId(), tid);
-               assertEquals(pre + "status" + post, tle.getStatus(), status);
-               assertEquals(pre + "rqstDate" + post, tle.getRqstDate(), rqstTm);
-               assertEquals(pre + "respDate" + post, tle.getRespDate(), respTm);
-               assertEquals(pre + "srcId" + post, tle.getSourceId(), srcId);
-               assertEquals(pre + "rsrcId" + post, tle.getResourceId(), rsrcId);
-               assertEquals(pre + "rqstBuf" + post, tle.getRqstBuf(), rqstBuf);
-               assertEquals(pre + "respBuf" + post, tle.getrespBuf(), respBuf);
-               if ( hasNotifEvent){
-                       assertEquals(pre + "notifPayload" + post, tle.getNotificationPayload(), notifPayload);
-                       assertEquals(pre + "notifStatus" + post, tle.getNotificationStatus(), notifStatus);
-                       assertEquals(pre + "notifID" + post, tle.getNotificationId(), notifID);
-                       assertEquals(pre + "notifTopic" + post, tle.getNotificationTopic(), notifTopic);
-                       assertEquals(pre + "notifEntityLink" + post, tle.getNotificationEntityLink(), notifEntityLink);
-                       assertEquals(pre + "notifAction" + post, tle.getNotificationAction(), notifAction);
-               }
-       }
-       
-       
-       
-       /**
-        * Helper method to mock PojoUtils.
-        */
-       public void mockPojoUtils(){
-               
-               try {
-                       PowerMockito.when(pu.getJsonFromObject(notif)).thenReturn(notifPayload);
-               } catch (JsonGenerationException e) {e.printStackTrace();} 
-                 catch (JsonMappingException e) {e.printStackTrace();}
-                 catch (IOException e) {e.printStackTrace();   }
-       }
-       
-
-       
-       /**
-        * Helper method to mock a notification event handler.
-        */
-       public void mockNotifEventHandler(){
-               PowerMockito.when(ehNotif.getId()).thenReturn(notifID);
-               PowerMockito.when(ehNotif.getEntityLink()).thenReturn(notifEntityLink);
-               PowerMockito.when(ehNotif.getAction()).thenReturn(notifAction);
-               PowerMockito.when(ehNotif.getStatus()).thenReturn(notifStatus);
-       }
-       
-       /**
-        * Helper method to mock a notification event.
-        */
-       public void mockNotificationEvent(){
-               mockPojoUtils();
-               mockNotifEventHandler();
-               PowerMockito.when(notif.getEventHeader()).thenReturn(ehNotif);
-               PowerMockito.when(notif.getEventHeader().getEventType()).thenReturn(null);
-               PowerMockito.when(notif.getEventHeader().getStatus()).thenReturn(null);
-       }
-       
-       
-       /**
-        * Helper method to build a mock-Result.
-        */
-       public void mockResult(){
-               PowerMockito.when(result.getValue(Bytes.toBytes("transaction"),Bytes.toBytes("tid"))).thenReturn(Bytes.toBytes(tid));
-               PowerMockito.when(result.getValue(Bytes.toBytes("transaction"),Bytes.toBytes("status"))).thenReturn(Bytes.toBytes(status));
-               PowerMockito.when(result.getValue(Bytes.toBytes("transaction"),Bytes.toBytes("rqstDate"))).thenReturn(Bytes.toBytes(rqstTm));
-               PowerMockito.when(result.getValue(Bytes.toBytes("transaction"),Bytes.toBytes("respDate"))).thenReturn(Bytes.toBytes(respTm));
-               PowerMockito.when(result.getValue(Bytes.toBytes("transaction"),Bytes.toBytes("sourceId"))).thenReturn(Bytes.toBytes(srcId));
-               
-               PowerMockito.when(result.getValue(Bytes.toBytes("resource"),Bytes.toBytes("resourceId"))).thenReturn(Bytes.toBytes(rsrcId));
-               PowerMockito.when(result.getValue(Bytes.toBytes("resource"),Bytes.toBytes("resourceType"))).thenReturn(Bytes.toBytes(rsrcType));
-               
-               PowerMockito.when(result.getValue(Bytes.toBytes("payload"),Bytes.toBytes("rqstBuf"))).thenReturn(Bytes.toBytes(rqstBuf));
-               PowerMockito.when(result.getValue(Bytes.toBytes("payload"),Bytes.toBytes("respBuf"))).thenReturn(Bytes.toBytes(respBuf));
-               
-               PowerMockito.when(result.getValue(Bytes.toBytes("notification"),Bytes.toBytes("notificationPayload"))).thenReturn(Bytes.toBytes(notifPayload));
-               PowerMockito.when(result.getValue(Bytes.toBytes("notification"),Bytes.toBytes("notificationStatus"))).thenReturn(Bytes.toBytes(notifStatus));
-               PowerMockito.when(result.getValue(Bytes.toBytes("notification"),Bytes.toBytes("notificationId"))).thenReturn(Bytes.toBytes(notifID));
-               PowerMockito.when(result.getValue(Bytes.toBytes("notification"),Bytes.toBytes("notificationTopic"))).thenReturn(Bytes.toBytes(notifTopic));
-               PowerMockito.when(result.getValue(Bytes.toBytes("notification"),Bytes.toBytes("notificationEntityLink"))).thenReturn(Bytes.toBytes(notifEntityLink));
-               PowerMockito.when(result.getValue(Bytes.toBytes("notification"),Bytes.toBytes("notificationAction"))).thenReturn(Bytes.toBytes(notifAction));
-       }
-       
-    
-       /**
-        * Helper method to load aai config from test configuration file
-        * This requires that the 'test_aaiconfig.properties' file is available 
-        */
-
-       static void setFinalStatic(Field field, Object newValue) throws Exception {
-         field.setAccessible(true);
-         Field modifiersField = Field.class.getDeclaredField("modifiers");
-         modifiersField.setAccessible(true);
-         modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
-         field.set(null, newValue);
-       }
-       
-       /**
-        * Partial setup for AAI config.
-        */
-       public void partialSetupForAAIConfig(){
-               
-         try {
-                 setFinalStatic(AAIConfig.class.getDeclaredField("GlobalPropFileName"),  "src/test/resources/test_aaiconfig.properties");
-         } 
-         catch (SecurityException e) {fail();}
-         catch (NoSuchFieldException e) {fail();}
-         catch (Exception e) {fail();}
-         
-         AAIConfig.reloadConfig();
-       }
-       
-    /**
-     * Helper method to set the file name of aaiconfig.properties file
-     *
-     * @param field Private static filed for update
-     * @param newValue New value to be used
-     * @throws Exception the exception
-     */
-    public void modifyFinalStatic(Field field, Object newValue) throws Exception {
-        field.setAccessible(true);        
-        Field modifiersField = Field.class.getDeclaredField("modifiers");
-        modifiersField.setAccessible(true);
-        modifiersField.setInt(field, field.getModifiers() & ~Modifier.FINAL);
-        field.set(null, newValue);
-    }
-
-}
diff --git a/set-debug-port.bat b/set-debug-port.bat
deleted file mode 100644 (file)
index b87e8dc..0000000
+++ /dev/null
@@ -1 +0,0 @@
-SET MAVEN_OPTS=-Xms2048m -Xmx2048m -Xdebug -Xnoagent -Djava.compile=NONE -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=9447
\ No newline at end of file
diff --git a/start-cassandra-service.bat b/start-cassandra-service.bat
deleted file mode 100644 (file)
index 8b7b9ea..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-@echo off
-
-:: BatchGotAdmin
-:-------------------------------------
-REM  --> Check for permissions
-    IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
->nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
-) ELSE (
->nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
-)
-
-REM --> If error flag set, we do not have admin.
-if '%errorlevel%' NEQ '0' (
-    echo Requesting administrative privileges...
-    goto UACPrompt
-) else ( goto gotAdmin )
-
-:UACPrompt
-    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
-    set params = %*:"=""
-    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
-
-    "%temp%\getadmin.vbs"
-    del "%temp%\getadmin.vbs"
-    exit /B
-
-:gotAdmin
-    pushd "%CD%"
-    CD /D "%~dp0"
-:--------------------------------------    
-call net start DataStax_Cassandra_Community_Server
-call net start DataStax_OpsCenter_Agent
-call net start DataStax_OpsCenter_Community
\ No newline at end of file
diff --git a/stop-cassandra-service.bat b/stop-cassandra-service.bat
deleted file mode 100644 (file)
index 32335ba..0000000
+++ /dev/null
@@ -1,33 +0,0 @@
-@echo off
-
-:: BatchGotAdmin
-:-------------------------------------
-REM  --> Check for permissions
-    IF "%PROCESSOR_ARCHITECTURE%" EQU "amd64" (
->nul 2>&1 "%SYSTEMROOT%\SysWOW64\cacls.exe" "%SYSTEMROOT%\SysWOW64\config\system"
-) ELSE (
->nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
-)
-
-REM --> If error flag set, we do not have admin.
-if '%errorlevel%' NEQ '0' (
-    echo Requesting administrative privileges...
-    goto UACPrompt
-) else ( goto gotAdmin )
-
-:UACPrompt
-    echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
-    set params = %*:"=""
-    echo UAC.ShellExecute "cmd.exe", "/c ""%~s0"" %params%", "", "runas", 1 >> "%temp%\getadmin.vbs"
-
-    "%temp%\getadmin.vbs"
-    del "%temp%\getadmin.vbs"
-    exit /B
-
-:gotAdmin
-    pushd "%CD%"
-    CD /D "%~dp0"
-:--------------------------------------    
-call net stop DataStax_Cassandra_Community_Server
-call net stop DataStax_OpsCenter_Agent
-call net stop DataStax_OpsCenter_Community
\ No newline at end of file