From: Giovanni Meo Date: Tue, 17 Sep 2013 08:00:14 +0000 (+0000) Subject: Merge "Address @XmlSeeAlso limitation. Provide the ability to inject the JAXB types... X-Git-Tag: releasepom-0.1.0~83 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=33446bc3f844db6d0f4763d7c3080499c6d6543f;hp=feeeee8105b8f8262154d6c7d994fdbdb7eda1e2 Merge "Address @XmlSeeAlso limitation. Provide the ability to inject the JAXB types without having the need to explicitly define the inherited types with @XmlSeelAlso. Introduced BundleScanner service which scans bundle classes for annotations dynamically and provides proper artifacts for NB applications to bootstrap. Eliminate the need for NB application extensions." --- diff --git a/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerCommon.java b/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerCommon.java index fabf3e9f1d..90299e5ac9 100644 --- a/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerCommon.java +++ b/opendaylight/clustering/services_implementation/src/main/java/org/opendaylight/controller/clustering/services_implementation/internal/ClusterManagerCommon.java @@ -39,7 +39,7 @@ import org.opendaylight.controller.clustering.services.ListenRoleChangeAddExcept import org.slf4j.Logger; import org.slf4j.LoggerFactory; -abstract public class ClusterManagerCommon implements IClusterServicesCommon { +public abstract class ClusterManagerCommon implements IClusterServicesCommon { protected String containerName = null; private IClusterServices clusterService = null; protected static final Logger logger = LoggerFactory diff --git a/opendaylight/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterManagerCommon.java b/opendaylight/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterManagerCommon.java index 035b0d3433..975f97c8e5 100644 --- a/opendaylight/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterManagerCommon.java +++ b/opendaylight/clustering/stub/src/main/java/org/opendaylight/controller/clustering/stub/internal/ClusterManagerCommon.java @@ -45,7 +45,7 @@ import org.apache.felix.dm.Component; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -abstract public class ClusterManagerCommon implements IClusterServicesCommon { +public abstract class ClusterManagerCommon implements IClusterServicesCommon { protected String containerName = ""; protected static final Logger logger = LoggerFactory .getLogger(ClusterManagerCommon.class); diff --git a/opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntryInstall.java b/opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntryInstall.java index ee2113db82..1318c97ce2 100644 --- a/opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntryInstall.java +++ b/opendaylight/forwardingrulesmanager/api/src/main/java/org/opendaylight/controller/forwardingrulesmanager/FlowEntryInstall.java @@ -28,8 +28,8 @@ public class FlowEntryInstall implements Serializable { private final FlowEntry original; private final ContainerFlow cFlow; private final FlowEntry install; - transient private long requestId; // async request id - transient private boolean deletePending; + private transient long requestId; // async request id + private transient boolean deletePending; public FlowEntryInstall(FlowEntry original, ContainerFlow cFlow) { this.original = original; diff --git a/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/implementation/data/FlowEntryDistributionOrder.java b/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/implementation/data/FlowEntryDistributionOrder.java index 5220428199..672a290a24 100644 --- a/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/implementation/data/FlowEntryDistributionOrder.java +++ b/opendaylight/forwardingrulesmanager/implementation/src/main/java/org/opendaylight/controller/forwardingrulesmanager/implementation/data/FlowEntryDistributionOrder.java @@ -27,9 +27,9 @@ public final class FlowEntryDistributionOrder implements Serializable { * Serialization UID */ private static final long serialVersionUID = 416280377113255147L; - final private FlowEntryInstall entry; - final private UpdateType upType; - final private InetAddress requestorController; + private final FlowEntryInstall entry; + private final UpdateType upType; + private final InetAddress requestorController; /** * @return the entry diff --git a/opendaylight/web/devices/pom.xml b/opendaylight/web/devices/pom.xml index b322f5845f..ac52095aea 100644 --- a/opendaylight/web/devices/pom.xml +++ b/opendaylight/web/devices/pom.xml @@ -40,6 +40,7 @@ org.opendaylight.controller.usermanager, org.opendaylight.controller.web, com.google.gson, + com.google.gson.reflect, javax.annotation, javax.naming, javax.servlet, diff --git a/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/Devices.java b/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/Devices.java index 4e08f99bfd..6ca60e857d 100644 --- a/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/Devices.java +++ b/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/Devices.java @@ -8,6 +8,7 @@ package org.opendaylight.controller.devices.web; +import java.lang.reflect.Type; import java.util.ArrayList; import java.util.HashMap; import java.util.Iterator; @@ -54,6 +55,7 @@ import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.ResponseBody; import com.google.gson.Gson; +import com.google.gson.reflect.TypeToken; @Controller @RequestMapping("/") @@ -634,6 +636,11 @@ public class Devices implements IDaylightWeb { // Add switch portName value (non-configuration field) config.put("nodeName", getNodeDesc(config_data.get("nodeId"), containerName)); + NodeConnector spanPortNodeConnector = NodeConnector.fromString(config_data.get("spanPort")); + Name ncName = ((Name) switchManager.getNodeConnectorProp(spanPortNodeConnector, + Name.NamePropName)); + String spanPortName = (ncName != null) ? ncName.getValue() : ""; + config.put("spanPortName", spanPortName); } config.put("json", config_json); spanConfigs.add(config); @@ -746,22 +753,21 @@ public class Devices implements IDaylightWeb { Gson gson = new Gson(); ISwitchManager switchManager = (ISwitchManager) ServiceHelper .getInstance(ISwitchManager.class, containerName, this); - String[] spans = spanPortsToDelete.split("###"); - resultBean.setStatus(true); - resultBean.setMessage("SPAN Port(s) deleted successfully"); - for (String span : spans) { - if (!span.isEmpty()) { - SpanConfig cfgObject = gson - .fromJson(span, SpanConfig.class); - Status result = switchManager.removeSpanConfig(cfgObject); - if (!result.isSuccess()) { - resultBean.setStatus(false); - resultBean.setMessage(result.getDescription()); - break; - } - DaylightWebUtil.auditlog("SPAN Port", userName, "removed", cfgObject.getNodeId(), containerName); + Type collectionType = new TypeToken>() {}.getType(); + List jsonBeanList = gson.fromJson(spanPortsToDelete, collectionType); + for (SpanPortJsonBean jsonBean : jsonBeanList) { + SpanConfig cfgObject = gson + .fromJson(gson.toJson(jsonBean), SpanConfig.class); + Status result = switchManager.removeSpanConfig(cfgObject); + if (!result.isSuccess()) { + resultBean.setStatus(false); + resultBean.setMessage(result.getDescription()); + break; } + DaylightWebUtil.auditlog("SPAN Port", userName, "removed", cfgObject.getNodeId(), containerName); } + resultBean.setStatus(true); + resultBean.setMessage("SPAN Port(s) deleted successfully"); } catch (Exception e) { resultBean.setStatus(false); resultBean.setMessage("Error occurred while deleting span port. " diff --git a/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/SpanPortJsonBean.java b/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/SpanPortJsonBean.java new file mode 100644 index 0000000000..b9be40b3d3 --- /dev/null +++ b/opendaylight/web/devices/src/main/java/org/opendaylight/controller/devices/web/SpanPortJsonBean.java @@ -0,0 +1,32 @@ +/* + * Copyright (c) 2013 Cisco Systems, Inc. and others. All rights reserved. + * + * This program and the accompanying materials are made available under the + * terms of the Eclipse Public License v1.0 which accompanies this distribution, + * and is available at http://www.eclipse.org/legal/epl-v10.html + */ + +package org.opendaylight.controller.devices.web; + +public class SpanPortJsonBean { + + private String nodeId; + private String spanPort; + + public String getNodeId() { + return nodeId; + } + + public void setNodeId(String nodeId) { + this.nodeId = nodeId; + } + + public String getSpanPort() { + return spanPort; + } + + public void setSpanPort(String spanPort) { + this.spanPort = spanPort; + } + +} diff --git a/opendaylight/web/devices/src/main/resources/js/page.js b/opendaylight/web/devices/src/main/resources/js/page.js index 813df23f82..2488d06d0c 100644 --- a/opendaylight/web/devices/src/main/resources/js/page.js +++ b/opendaylight/web/devices/src/main/resources/js/page.js @@ -1239,7 +1239,12 @@ one.f.switchmanager.spanPortConfig = { return false; } checkedCheckBoxes.each(function(index, value) { - spanPortsToDelete.push(decodeURIComponent(checkedCheckBoxes[index].getAttribute("spanPort"))); + var spanPortObj = {}; + spanPortObj['spanPortJson'] = decodeURIComponent(checkedCheckBoxes[index].getAttribute("spanPort")); + spanPortObj['spanPortNodeName'] = checkedCheckBoxes[index].getAttribute("spanPortNode"); + spanPortObj['spanPortPortName'] = checkedCheckBoxes[index].getAttribute("spanPortPort"); + + spanPortsToDelete.push(spanPortObj); }); one.f.switchmanager.spanPortConfig.modal.removeMultiple.dialog(spanPortsToDelete); }); @@ -1392,12 +1397,12 @@ one.f.switchmanager.spanPortConfig = { // bind remove rule button $('#'+one.f.switchmanager.spanPortConfig.id.modal.remove, $modal).click(this, function(e) { var requestData = {}; - var spanPorts=""; - $(spanPortsToDelete).each(function(){ - spanPorts = spanPorts + "###" + this.toString(); + var spanPorts = []; + $(spanPortsToDelete).each(function(index, spanPort) { + spanPorts.push(JSON.parse(spanPort.spanPortJson)); }); - requestData["spanPortsToDelete"] = spanPorts.slice(3,spanPorts.length); - + requestData["spanPortsToDelete"] = JSON.stringify(spanPorts); + var url = one.f.switchmanager.rootUrl + "/spanPorts/delete"; one.f.switchmanager.spanPortConfig.ajax.main(url, requestData, function(response) { $modal.modal('hide'); @@ -1429,10 +1434,9 @@ one.f.switchmanager.spanPortConfig = { var p = 'Remove the following Span Port(s)?'; //creata a BS label for each rule and append to list - var spanPortList = JSON.parse("["+spanPortToDelete.toString()+"]"); - $(spanPortList).each(function(){ + $(spanPortToDelete).each(function(index, spanPortItem) { var $span = $(document.createElement('span')); - $span.append(this.nodeId+"-"+this.spanPort); + $span.append(this.spanPortNodeName+"-"+this.spanPortPortName); p += '
' + $span[0].outerHTML; }); $p.append(p); @@ -1457,7 +1461,7 @@ one.f.switchmanager.spanPortConfig = { sortable: true }, { - property: 'spanPort', + property: 'spanPortName', label: 'SPAN Port', sortable: true }, @@ -1465,7 +1469,7 @@ one.f.switchmanager.spanPortConfig = { data: data.nodeData, formatter: function(items) { $.each(items, function(index, item) { - item["selector"] = ''; + item["selector"] = ''; }); }, delay: 0 diff --git a/third-party/openflowj/src/main/java/org/openflow/protocol/OFType.java b/third-party/openflowj/src/main/java/org/openflow/protocol/OFType.java index 92a2e866f0..603f4ccb9e 100644 --- a/third-party/openflowj/src/main/java/org/openflow/protocol/OFType.java +++ b/third-party/openflowj/src/main/java/org/openflow/protocol/OFType.java @@ -158,7 +158,7 @@ public enum OFType { * @param i OpenFlow wire protocol type * @param t type */ - static public void addMapping(byte i, OFType t) { + public static void addMapping(byte i, OFType t) { if (mapping == null) mapping = new OFType[32]; OFType.mapping[i] = t; @@ -169,7 +169,7 @@ public enum OFType { * * @param i OpenFlow wire protocol type */ - static public void removeMapping(byte i) { + public static void removeMapping(byte i) { OFType.mapping[i] = null; } @@ -181,7 +181,7 @@ public enum OFType { * @return OFType enum type */ - static public OFType valueOf(Byte i) { + public static OFType valueOf(Byte i) { return OFType.mapping[i]; }