added groupAction in group stats and some other incomplete stuff
diff --git a/cli/cli/c_actions.py b/cli/cli/c_actions.py
index 01dbc50..a5aed26 100755
--- a/cli/cli/c_actions.py
+++ b/cli/cli/c_actions.py
@@ -2177,6 +2177,9 @@
                 outport = '*'
                 if 'OUTPPUT' in groupDescEntry['bucketsActions'][bucketId]:
                     outport = groupDescEntry['bucketsActions'][bucketId]['OUTPPUT']
+                goToGroup = '*'
+                if 'goToGroup' in groupDescEntry['bucketsActions'][bucketId]:
+                    goToGroup = groupDescEntry['bucketsActions'][bucketId]['goToGroup']
                 combResult.append({
                        'groupid'       : groupId,
                        'grouptype'     : groupDescEntry['groupType'],
@@ -2189,6 +2192,7 @@
                        'pushmpls'     : pushmpls,
                        'popmpls'     : popmpls,
                        'outport'     : outport,
+                       'goToGroup'     : goToGroup,
                     })
         entries = combResult
     #
diff --git a/cli/cli/desc/version200/core.py b/cli/cli/desc/version200/core.py
index bb48a7c..20e888b 100755
--- a/cli/cli/desc/version200/core.py
+++ b/cli/cli/desc/version200/core.py
@@ -2336,12 +2336,12 @@
                           'bucketpktcnt', 'bucketbytecnt', 
                           'setsrcmac', 'setdstmac',
                           'pushmpls', 'popmpls',
-                          'outport' ],
+                          'outport','goToGroup'],
             'scoped' : [ 'Idx', 'groupid', 'grouptype', 'totalpktcnt', 'totalbytecnt',
                           'bucketpktcnt', 'bucketbytecnt', 
                           'setsrcmac', 'setdstmac',
                           'pushmpls', 'popmpls',
-                          'outport' ],
+                          'outport','goToGroup' ],
             },
         'fields': {
             'groupid'               : { 'verbose-name' : 'Group Id',
@@ -2370,6 +2370,8 @@
                                      },
             'outport'             : { 'verbose-name' : 'outport',
                                      },
+            'goToGroup'           : { 'verbose-name' : 'goToGroup',
+                                    },
             }
         },
 }
diff --git a/src/main/java/net/floodlightcontroller/core/web/serializers/OFGroupDescStatsEntryModSerializer.java b/src/main/java/net/floodlightcontroller/core/web/serializers/OFGroupDescStatsEntryModSerializer.java
index d4f214a..dadf82f 100644
--- a/src/main/java/net/floodlightcontroller/core/web/serializers/OFGroupDescStatsEntryModSerializer.java
+++ b/src/main/java/net/floodlightcontroller/core/web/serializers/OFGroupDescStatsEntryModSerializer.java
@@ -59,7 +59,9 @@
                 else if(action.getType().compareTo(OFActionType.POP_MPLS) == 0){
                     jGen.writeStringField("POP_MPLS", "True");
                 }
-                
+                else if(action.getType().compareTo(OFActionType.GROUP) == 0){
+                    jGen.writeNumberField("goToGroup", ((OFActionGroup)action).getGroup().getGroupNumber());
+                }
             }
             jGen.writeEndObject();
         }
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/RouterStatisticsResource.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/RouterStatisticsResource.java
index 8e79639..944bf1c 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/RouterStatisticsResource.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/RouterStatisticsResource.java
@@ -1,15 +1,23 @@
 package net.onrc.onos.apps.segmentrouting.web;
 
-import java.util.HashMap;
 
-import net.floodlightcontroller.core.web.ControllerSwitchesResource;
+import java.util.List;
+import java.util.concurrent.Future;
+
+import net.floodlightcontroller.core.IFloodlightProviderService;
+import net.floodlightcontroller.core.IOFSwitch;
 import net.onrc.onos.core.topology.ITopologyService;
 import net.onrc.onos.core.topology.MutableTopology;
+import net.onrc.onos.core.util.Dpid;
 
-import org.restlet.resource.ResourceException;
+import org.apache.commons.codec.binary.Hex;
+import org.projectfloodlight.openflow.util.HexString;
 import org.restlet.resource.ServerResource;
 import org.restlet.representation.Representation;
 import org.restlet.resource.Get;
+
+import com.esotericsoftware.minlog.Log;
+
 import static net.onrc.onos.core.topology.web.TopologyResource.eval;
 /**
  * Base class for return router statistics
@@ -17,25 +25,50 @@
  */
 public class RouterStatisticsResource extends ServerResource {
     /**
-     * Gets the switches and ports information from the network topology.
+     * Gets the switches/routers and ports information from the network topology.
      *
-     * @return a Representation of a Collection of switches from the network
+     * @return a Representation of a Collection of switches/routers from the network
      * topology. Each switch contains the switch ports.
      */
     @Get("json")
     public Representation retrieve() {
+        String routerId = (String) getRequestAttributes().get("routerId");
+        String statsType = (String) getRequestAttributes().get("statsType");
+        //if (routerId == null && statsType == null){
         ITopologyService topologyService =
-            (ITopologyService) getContext().getAttributes()
+                (ITopologyService) getContext().getAttributes()
                 .get(ITopologyService.class.getCanonicalName());
 
         MutableTopology mutableTopology = topologyService.getTopology();
         mutableTopology.acquireReadLock();
         try {
-            return eval(toRepresentation(mutableTopology.getSwitches(), null));
+            if (routerId == null && statsType == null){
+                return eval(toRepresentation(mutableTopology.getSwitches(), null));
+        }
+            else if(routerId != null && statsType == "port"){
+                Log.debug("\n\n\nGot router port stats request\n\n\n");
+                System.out.println("\n\n\nGot router port stats request\n\n\n");
+                Long rId = HexString.toLong(routerId);
+                return eval(toRepresentation(mutableTopology.getSwitch(new Dpid(rId)), null));
+            }
         } finally {
             mutableTopology.releaseReadLock();
         }
+      //  }
+        /*else if(routerId != null && statsType == "port"){
+            Long rId = HexString.toLong(routerId);
+            IFloodlightProviderService floodlightProvider =
+                    (IFloodlightProviderService) getContext().getAttributes().
+                    get(IFloodlightProviderService.class.getCanonicalName());
+            IOFSwitch sw = floodlightProvider.getSwitches().get(rId);
+            Future<List<OFStatsReply>> future;
+            List<OFStatsReply> values = null;
+            
+        }*/
+    return null;
     }
+    
+        
  
     
 
diff --git a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java
index 3e121d6..668a1ca 100644
--- a/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java
+++ b/src/main/java/net/onrc/onos/apps/segmentrouting/web/SegmentRoutingWebRoutable.java
@@ -16,7 +16,9 @@
     @Override
     public Restlet getRestlet(Context context) {
         Router router = new Router(context);
-        router.attach("/routers",  SwitchesResource.class);
+        //TODO: rewrite SwitchesResource for router specific info.
+        router.attach("/routers",  RouterStatisticsResource.class);
+        router.attach("/router/{routerId}/{statsType}",  RouterStatisticsResource.class);
         return router;
     }