From: Robert Varga Date: Sat, 15 Feb 2014 02:39:22 +0000 (+0100) Subject: Fix IPluginInBridgeDomainConfigService API X-Git-Tag: autorelease-tag-v20140601202136_82eb3f9~306 X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?p=controller.git;a=commitdiff_plain;h=a8ae568a4a5cd190c71a12f115fcaa27588c4155 Fix IPluginInBridgeDomainConfigService API IPluginInBridgeDomainConfigService protomoted Throwable into a checked-exception status. This also includes Errors, which is not a good thing, as Errors are not something we can handle gracefully. Introduce a dedicated exception which implementations can use to report instantiation problems. Change-Id: Ib16d792acfcf77c68b92b35526ed7471e2172cbe Signed-off-by: Robert Varga --- diff --git a/opendaylight/northbound/networkconfiguration/bridgedomain/src/main/java/org/opendaylight/controller/networkconfig/bridgedomain/northbound/BridgeDomainNorthbound.java b/opendaylight/northbound/networkconfiguration/bridgedomain/src/main/java/org/opendaylight/controller/networkconfig/bridgedomain/northbound/BridgeDomainNorthbound.java index 9ef56e5dc4..9ddba67e25 100644 --- a/opendaylight/northbound/networkconfiguration/bridgedomain/src/main/java/org/opendaylight/controller/networkconfig/bridgedomain/northbound/BridgeDomainNorthbound.java +++ b/opendaylight/northbound/networkconfiguration/bridgedomain/src/main/java/org/opendaylight/controller/networkconfig/bridgedomain/northbound/BridgeDomainNorthbound.java @@ -29,6 +29,7 @@ import org.opendaylight.controller.northbound.commons.exception.NotAcceptableExc import org.opendaylight.controller.northbound.commons.exception.ResourceNotFoundException; import org.opendaylight.controller.northbound.commons.exception.ServiceUnavailableException; import org.opendaylight.controller.sal.core.Node; +import org.opendaylight.controller.sal.networkconfig.bridgedomain.BridgeDomainConfigServiceException; import org.opendaylight.controller.sal.networkconfig.bridgedomain.ConfigConstants; import org.opendaylight.controller.sal.networkconfig.bridgedomain.IBridgeDomainConfigService; import org.opendaylight.controller.sal.utils.ServiceHelper; @@ -114,9 +115,7 @@ public class BridgeDomainNorthbound { if (status.getCode().equals(StatusCode.SUCCESS)) { return Response.status(Response.Status.CREATED).build(); } - } catch (Error e) { - throw e; - } catch (Throwable t) { + } catch (BridgeDomainConfigServiceException e) { return Response.status(Response.Status.PRECONDITION_FAILED).build(); } throw new ResourceNotFoundException(status.getDescription()); diff --git a/opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/BridgeDomainConfigServiceException.java b/opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/BridgeDomainConfigServiceException.java new file mode 100644 index 0000000000..19f467ea55 --- /dev/null +++ b/opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/BridgeDomainConfigServiceException.java @@ -0,0 +1,24 @@ +/* + * Copyright (c) 2014 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.sal.networkconfig.bridgedomain; + +/** + * Exception thrown by IPluginInBridgeDomainConfigService implementations. + */ +public class BridgeDomainConfigServiceException extends Exception { + private static final long serialVersionUID = 1L; + + public BridgeDomainConfigServiceException(String message) { + super(message); + } + + public BridgeDomainConfigServiceException(String message, Throwable cause) { + super(message, cause); + } +} + diff --git a/opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/IPluginInBridgeDomainConfigService.java b/opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/IPluginInBridgeDomainConfigService.java index f8696b1cec..c84136115c 100644 --- a/opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/IPluginInBridgeDomainConfigService.java +++ b/opendaylight/sal/networkconfiguration/api/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/IPluginInBridgeDomainConfigService.java @@ -29,7 +29,7 @@ public interface IPluginInBridgeDomainConfigService { * @note This method will return false if one or more of the supplied params is not supported by the * protocol plugin that serves the Node. */ - public Status createBridgeDomain(Node node, String bridgeIdentifier, Map params) throws Throwable; + public Status createBridgeDomain(Node node, String bridgeIdentifier, Map params) throws BridgeDomainConfigServiceException; /** * Delete a Bridge Domain diff --git a/opendaylight/sal/networkconfiguration/implementation/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/internal/BridgeDomainConfigService.java b/opendaylight/sal/networkconfiguration/implementation/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/internal/BridgeDomainConfigService.java index 64c72115f6..14c5e0d9e7 100644 --- a/opendaylight/sal/networkconfiguration/implementation/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/internal/BridgeDomainConfigService.java +++ b/opendaylight/sal/networkconfiguration/implementation/src/main/java/org/opendaylight/controller/sal/networkconfig/bridgedomain/internal/BridgeDomainConfigService.java @@ -14,6 +14,7 @@ import java.util.concurrent.ConcurrentMap; import org.opendaylight.controller.sal.core.Node; import org.opendaylight.controller.sal.core.NodeConnector; +import org.opendaylight.controller.sal.networkconfig.bridgedomain.BridgeDomainConfigServiceException; import org.opendaylight.controller.sal.networkconfig.bridgedomain.ConfigConstants; import org.opendaylight.controller.sal.networkconfig.bridgedomain.IBridgeDomainConfigService; import org.opendaylight.controller.sal.networkconfig.bridgedomain.IPluginInBridgeDomainConfigService; @@ -26,7 +27,7 @@ import org.slf4j.LoggerFactory; public class BridgeDomainConfigService implements IBridgeDomainConfigService { protected static final Logger logger = LoggerFactory .getLogger(BridgeDomainConfigService.class); - private ConcurrentMap pluginService = + private final ConcurrentMap pluginService = new ConcurrentHashMap(); void setPluginInService (Map props, IPluginInBridgeDomainConfigService s) { @@ -80,7 +81,7 @@ public class BridgeDomainConfigService implements IBridgeDomainConfigService { @Override public Status createBridgeDomain(Node node, String bridgeIdentifier, Map params) - throws Throwable { + throws BridgeDomainConfigServiceException { if (pluginService != null) { IPluginInBridgeDomainConfigService plugin = this.pluginService.get(node.getType()); if (plugin != null) {