<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>switchmanager</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>switchmanager</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
@RunWith(PaxExam.class)
public class ConfigurationIT {
- private Logger logger = LoggerFactory
+ private final Logger logger = LoggerFactory
.getLogger(ConfigurationIT.class);
// get the OSGI bundle context
@Inject
mavenBundle("org.opendaylight.controller",
"containermanager.implementation", "0.4.0-SNAPSHOT"),
mavenBundle("org.opendaylight.controller", "switchmanager",
- "0.4.0-SNAPSHOT"),
+ "0.5.0-SNAPSHOT"),
mavenBundle("org.opendaylight.controller",
"switchmanager.implementation", "0.4.0-SNAPSHOT"),
// needed bundles by configuration
<!-- SAL Extension bundles -->
<module>../../sal/connection/api</module>
<module>../../sal/connection/implementation</module>
+ <module>../../sal/networkconfiguration/api</module>
+ <module>../../sal/networkconfiguration/implementation</module>
<!-- Web bundles -->
<module>../../web/root</module>
</root>
<!-- Base log level -->
- <logger name="org.opendaylight.controller" level="INFO"/>
+ <logger name="org.opendaylight" level="INFO"/>
<!-- OSGi logging bridge -->
<logger name="org.opendaylight.controller.logging.bridge" level="WARN"/>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>switchmanager</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>switchmanager</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>switchmanager</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<dependency>\r
<groupId>org.opendaylight.controller</groupId>\r
<artifactId>switchmanager</artifactId>\r
- <version>0.4.0-SNAPSHOT</version>\r
+ <version>0.5.0-SNAPSHOT</version>\r
</dependency>\r
<dependency>\r
<groupId>org.opendaylight.controller</groupId>\r
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>switchmanager</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<dependency>\r
<groupId>org.opendaylight.controller</groupId>\r
<artifactId>switchmanager</artifactId>\r
- <version>0.4.0-SNAPSHOT</version>\r
+ <version>0.5.0-SNAPSHOT</version>\r
</dependency>\r
<dependency>\r
<groupId>org.opendaylight.controller</groupId>\r
<dependency>\r
<groupId>org.opendaylight.controller</groupId>\r
<artifactId>switchmanager</artifactId>\r
- <version>0.4.0-SNAPSHOT</version>\r
+ <version>0.5.0-SNAPSHOT</version>\r
</dependency>\r
<dependency>\r
<groupId>org.opendaylight.controller</groupId>\r
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>switchmanager</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>switchmanager</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>switchmanager</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>switchmanager</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
@RunWith(PaxExam.class)
public class NorthboundIT {
- private Logger log = LoggerFactory.getLogger(NorthboundIT.class);
+ private final Logger log = LoggerFactory.getLogger(NorthboundIT.class);
// get the OSGI bundle context
@Inject
private BundleContext bc;
private IInventoryListener invtoryListener = null;
private IListenTopoUpdates topoUpdates = null;
- private Boolean debugMsg = false;
+ private final Boolean debugMsg = false;
private String stateToString(int state) {
switch (state) {
mavenBundle("org.opendaylight.controller", "security", "0.4.0-SNAPSHOT").noStart(),
mavenBundle("org.opendaylight.controller", "sal", "0.5.0-SNAPSHOT"),
mavenBundle("org.opendaylight.controller", "sal.implementation", "0.4.0-SNAPSHOT"),
- mavenBundle("org.opendaylight.controller", "switchmanager", "0.4.0-SNAPSHOT"),
+ mavenBundle("org.opendaylight.controller", "switchmanager", "0.5.0-SNAPSHOT"),
mavenBundle("org.opendaylight.controller", "switchmanager.implementation", "0.4.0-SNAPSHOT"),
mavenBundle("org.opendaylight.controller", "forwardingrulesmanager", "0.4.0-SNAPSHOT"),
mavenBundle("org.opendaylight.controller", "forwardingrulesmanager.implementation", "0.4.0-SNAPSHOT"),
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>switchmanager</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.5.0-SNAPSHOT</version>
</dependency>
</dependencies>
</plugin>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>switchmanager</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller.thirdparty</groupId>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>switchmanager</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>switchmanager</artifactId>
- <version>0.4.0-SNAPSHOT</version>
+ <version>0.5.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
--- /dev/null
+package org.opendaylight.controller.sal.core;
+
+import javax.xml.bind.annotation.XmlElement;
+import javax.xml.bind.annotation.XmlRootElement;
+
+/**
+ * The class represents the forwarding mode property of a node.
+ */
+@XmlRootElement
+@SuppressWarnings("serial")
+public class ForwardingMode extends Property {
+ @XmlElement
+ private final int modeValue;
+ public static final int REACTIVE_FORWARDING = 0;
+ public static final int PROACTIVE_FORWARDING = 1;
+ public static final String name = "mode";
+
+ /*
+ * Private constructor used for JAXB mapping
+ */
+ private ForwardingMode() {
+ super(name);
+ this.modeValue = REACTIVE_FORWARDING;
+ }
+
+ public ForwardingMode(int mode) {
+ super(name);
+ this.modeValue = mode;
+ }
+
+ public int getValue() {
+ return this.modeValue;
+ }
+
+ public boolean isProactive() {
+ return (modeValue == ForwardingMode.PROACTIVE_FORWARDING);
+ }
+
+ public boolean isValid() {
+ return ((modeValue >= 0) && (modeValue <= 1));
+ }
+
+ @Override
+ public ForwardingMode clone() {
+ return new ForwardingMode(this.modeValue);
+ }
+
+ @Override
+ public int hashCode() {
+ final int prime = 31;
+ int result = super.hashCode();
+ result = prime * result + modeValue;
+ return result;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ if (this == obj)
+ return true;
+ if (!super.equals(obj))
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ ForwardingMode other = (ForwardingMode) obj;
+ if (modeValue != other.modeValue)
+ return false;
+ return true;
+ }
+
+ @Override
+ public String toString() {
+ return "Mode[" + modeValue + "]";
+ }
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
+ <modelVersion>4.0.0</modelVersion>\r
+ <parent>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>commons.opendaylight</artifactId>\r
+ <version>1.4.0-SNAPSHOT</version>\r
+ <relativePath>../../../commons/opendaylight</relativePath>\r
+ </parent>\r
+\r
+ <artifactId>sal.networkconfiguration</artifactId>\r
+ <version>0.0.1-SNAPSHOT</version>\r
+ <packaging>bundle</packaging>\r
+\r
+ <build>\r
+ <plugins>\r
+ <plugin>\r
+ <groupId>org.apache.felix</groupId>\r
+ <artifactId>maven-bundle-plugin</artifactId>\r
+ <version>2.3.6</version>\r
+ <extensions>true</extensions>\r
+ <configuration>\r
+ <instructions>\r
+ <Import-Package>\r
+ org.slf4j,\r
+ org.osgi.framework,\r
+ org.apache.felix.dm,\r
+ org.opendaylight.controller.sal.core,\r
+ org.opendaylight.controller.sal.utils\r
+ </Import-Package>\r
+ <Export-Package>\r
+ org.opendaylight.controller.sal.networkconfig.bridgedomain\r
+ </Export-Package>\r
+ </instructions>\r
+ <manifestLocation>${project.basedir}/META-INF</manifestLocation>\r
+ </configuration>\r
+ </plugin>\r
+ </plugins>\r
+ </build>\r
+ <dependencies>\r
+ <dependency>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>sal</artifactId>\r
+ <version>0.5.0-SNAPSHOT</version>\r
+ </dependency>\r
+ </dependencies>\r
+</project>\r
--- /dev/null
+package org.opendaylight.controller.sal.networkconfig.bridgedomain;
+
+/**
+ * Enum constant that is used as a key for the configuration parameters for BridgeDomains and Ports.
+ * The main intention of having a constant type is to avoid fragmentation and find common grounds for
+ * applications to rely on.
+ *
+ * This is set to expand based on various capabilities south-bound protocol might expose.
+ * Not all of them be supported by all the plugins. But this gives a consolidated view of
+ * all the supported feature configs and avoid config fragmentation.
+ */
+public enum ConfigConstants {
+ TYPE("type"),
+ VLAN("Vlan"),
+ VLAN_MODE("vlan_mode"),
+ TUNNEL_TYPE("Tunnel Type"),
+ SOURCE_IP("Source IP"),
+ DEST_IP("Destination IP"),
+ MACADDRESS("MAC Address"),
+ INTERFACE_IDENTIFIER("Interface Identifier"),
+ MGMT("Management"),
+ CUSTOM("Custom Configurations");
+
+ private ConfigConstants(String name) {
+ this.name = name;
+ }
+
+ private String name;
+
+ public String toString() {
+ return name;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.opendaylight.controller.sal.networkconfig.bridgedomain;
+
+public interface IBridgeDomainConfigService extends IPluginInBridgeDomainConfigService {
+}
\ No newline at end of file
--- /dev/null
+package org.opendaylight.controller.sal.networkconfig.bridgedomain;
+
+import java.util.List;
+import java.util.Map;
+
+import org.opendaylight.controller.sal.core.Node;
+import org.opendaylight.controller.sal.core.NodeConnector;
+import org.opendaylight.controller.sal.utils.Status;
+
+/**
+ * @file IPluginInConfigurationService.java
+ *
+ */
+public interface IPluginInBridgeDomainConfigService {
+ /**
+ * Create a Bridge Domain
+ *
+ * @param node Node serving this configuration service
+ * @param bridgeIdentifier String representation of a Bridge Domain
+ * @param params Map representation of config name (ConfigConstants) and Parameter value (represented as Object).
+ * @return Status.StatusCode.SUCCESS if bridge domain is created successfully. Failure Status otherwise.
+ * @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<ConfigConstants, Object> params) throws Throwable;
+
+ /**
+ * Delete a Bridge Domain
+ *
+ * @param node Node serving this configuration service
+ * @param bridgeIdentifier String representation of a Bridge Domain
+ * @return Status.StatusCode.SUCCESS if bridge domain is deleted successfully. Failure Status otherwise.
+ */
+ public Status deleteBridgeDomain(Node node, String bridgeIdentifier);
+
+ /**
+ * Returns the configured Bridge Domains
+ *
+ * @param node Node serving this configuration service
+ * @return List of Bridge Domain Identifiers
+ */
+ public List<String> getBridgeDomains(Node node);
+
+ /**
+ * add Bridge Domain Configuration
+ *
+ * @param node Node serving this configuration service
+ * @param bridgeIdentifier String representation of a Bridge Domain
+ * @param params Map representation of config Name (ConfigConstants) and config value(represented as Object).
+ * @return Status.StatusCode.SUCCESS if bridge domain configuration is added successfully. Failure Status otherwise.
+ * @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 addBridgeDomainConfig(Node node, String bridgeIdentifier, Map<ConfigConstants, Object> params);
+
+ /**
+ * Delete Bridge Domain Configuration
+ *
+ * @param node Node serving this configuration service
+ * @param bridgeIdentifier String representation of a Bridge Domain
+ * @param params Map representation of config name (ConfigConstants) and Parameter value (represented as Object).
+ * @return Status.StatusCode.SUCCESS if bridge domain configuration is deleted successfully. Failure Status otherwise.
+ * @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 removeBridgeDomainConfig(Node node, String bridgeIdentifier, Map<ConfigConstants, Object> params);
+
+ /**
+ * Returns Bridge Domain Configurations
+ *
+ * @param node Node serving this configuration service
+ * @param bridgeIdentifier String representation of a Bridge Domain
+ * @return Map representation of config Name (ConfigConstants) and config value(represented as Object).
+ */
+
+ public Map<ConfigConstants, Object> getBridgeDomainConfigs(Node node, String bridgeIdentifier);
+
+ /**
+ * Returns a Node dedicated to a Bridge Domain (if available) that is created using createBridgeDomain.
+ * @param configNode Node serving this configuration service.
+ * @param bridgeIdentifier Name of the bridge domain that would map to a dedicated Node
+ * @return Node dedicated to a bridge domain that is created using createBridgeDomain.
+ * returns null if there is no such dedicated node is available or represented.
+ */
+ public Node getBridgeDomainNode(Node configNode, String bridgeIdentifier);
+
+ /**
+ * Add a port to a bridge domain
+ *
+ * @param node Node serving this configuration service
+ * @param bridgeIdentifier String representation of a Bridge Domain
+ * @param portIdentifier String representation of a Port.
+ * @param params Map representation of config name (ConfigConstants) and Parameter value (represented as Object).
+ * @return Status.StatusCode.SUCCESS if a port is added successfully. Failure Status otherwise.
+ * @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 addPort(Node node, String bridgeIdentifier, String portIdentifier,
+ Map<ConfigConstants, Object> params);
+
+ /**
+ * Delete a Port from a bridge domain
+ *
+ * @param node Node serving this configuration service
+ * @param bridgeIdentifier String representation of a Bridge Domain
+ * @param portIdentifier String representation of a Port.
+ * @return Status.StatusCode.SUCCESS if a port is added successfully. Failure Status otherwise.
+ */
+ public Status deletePort(Node node, String bridgeIdentifier, String portIdentifier);
+
+ /**
+ * add Port Configuration
+ *
+ * @param node Node serving this configuration service
+ * @param bridgeIdentifier String representation of a Bridge Domain
+ * @param portIdentifier String representation of a Port.
+ * @param params Map representation of config name (ConfigConstants) and Parameter value (represented as Object).
+ * @return Status.StatusCode.SUCCESS if a port configuration is added successfully. Failure Status otherwise.
+ * @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 addPortConfig(Node node, String bridgeIdentifier, String portIdentifier,
+ Map<ConfigConstants, Object> params);
+
+ /**
+ * Delete Port Configuration
+ *
+ * @param node Node serving this configuration service
+ * @param portIdentifier String representation of a Port.
+ * @param config Map representation of ConfigName and Configuration Value in Strings.
+ * @return Status.StatusCode.SUCCESS if a port configuration is removed successfully. Failure Status otherwise.
+ * @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 removePortConfig(Node node, String bridgeIdentifier, String portIdentifier, Map<ConfigConstants, Object> params);
+
+ /**
+ * Returns Port Configurations
+ *
+ * @param node Node serving this configuration service
+ * @param bridgeIdentifier String representation of a Bridge Domain
+ * @param portIdentifier String representation of a Port.
+ * @return Map representation of Configuration Name (ConfigConstants) and Configuration value (represented as Object).
+ */
+ public Map<ConfigConstants, Object> getPortConfigs(Node node, String bridgeIdentifier, String portIdentifier);
+
+
+ /**
+ * Returns a NodeConnector mapped to a Port (if available) that is created using addPort.
+ * @param configNode Node serving this configuration service.
+ * @param bridgeIdentifier Name of the bridge domain that would map to a dedicated Node
+ * @param portIdentifier String representation of a Port.
+ * @return NodeConnector that is mapped to a port created using addPort.
+ * returns null if there is no such nodeConnector is available or mapped.
+ */
+ public NodeConnector getNodeConnector(Node configNode, String bridgeIdentifier, String portIdentifier);
+}
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8"?>\r
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
+ <modelVersion>4.0.0</modelVersion>\r
+ <parent>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>commons.opendaylight</artifactId>\r
+ <version>1.4.0-SNAPSHOT</version>\r
+ <relativePath>../../../commons/opendaylight</relativePath>\r
+ </parent>\r
+\r
+ <artifactId>sal.networkconfiguration.implementation</artifactId>\r
+ <version>0.0.1-SNAPSHOT</version>\r
+ <packaging>bundle</packaging>\r
+\r
+ <build>\r
+ <plugins>\r
+ <plugin>\r
+ <groupId>org.apache.felix</groupId>\r
+ <artifactId>maven-bundle-plugin</artifactId>\r
+ <version>2.3.6</version>\r
+ <extensions>true</extensions>\r
+ <configuration>\r
+ <instructions>\r
+ <Import-Package>\r
+ org.slf4j,\r
+ org.opendaylight.controller.sal.core,\r
+ org.opendaylight.controller.sal.utils,\r
+ org.opendaylight.controller.sal.networkconfig.bridgedomain,\r
+ org.apache.felix.dm,\r
+ org.osgi.framework\r
+ </Import-Package>\r
+ <Export-Package>\r
+ </Export-Package>\r
+ <Bundle-Activator>\r
+ org.opendaylight.controller.sal.networkconfig.internal.Activator\r
+ </Bundle-Activator>\r
+ </instructions>\r
+ <manifestLocation>${project.basedir}/META-INF</manifestLocation>\r
+ </configuration>\r
+ </plugin>\r
+ </plugins>\r
+ </build>\r
+ <dependencies>\r
+ <dependency>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>sal</artifactId>\r
+ <version>0.5.0-SNAPSHOT</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>sal.networkconfiguration</artifactId>\r
+ <version>0.0.1-SNAPSHOT</version>\r
+ </dependency>\r
+ </dependencies>\r
+</project>\r
--- /dev/null
+package org.opendaylight.controller.sal.networkconfig.bridgedomain.internal;
+
+import java.util.List;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
+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.ConfigConstants;
+import org.opendaylight.controller.sal.networkconfig.bridgedomain.IBridgeDomainConfigService;
+import org.opendaylight.controller.sal.networkconfig.bridgedomain.IPluginInBridgeDomainConfigService;
+import org.opendaylight.controller.sal.utils.GlobalConstants;
+import org.opendaylight.controller.sal.utils.Status;
+import org.opendaylight.controller.sal.utils.StatusCode;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class BridgeDomainConfigService implements IBridgeDomainConfigService {
+ protected static final Logger logger = LoggerFactory
+ .getLogger(BridgeDomainConfigService.class);
+ private ConcurrentMap<String, IPluginInBridgeDomainConfigService> pluginService =
+ new ConcurrentHashMap<String, IPluginInBridgeDomainConfigService>();
+
+ void setPluginInService (Map props, IPluginInBridgeDomainConfigService s) {
+ String type = null;
+ Object value = props.get(GlobalConstants.PROTOCOLPLUGINTYPE.toString());
+ if (value instanceof String) {
+ type = (String) value;
+ }
+ if (type == null) {
+ logger.error("Received a PluginInConnectionService without any "
+ + "protocolPluginType provided");
+ } else {
+ this.pluginService.put(type, s);
+ }
+ }
+
+ void unsetPluginInService(Map props, IPluginInBridgeDomainConfigService s) {
+ String type = null;
+
+ Object value = props.get(GlobalConstants.PROTOCOLPLUGINTYPE.toString());
+ if (value instanceof String) {
+ type = (String) value;
+ }
+ if (type == null) {
+ logger.error("Received a PluginInConnectionService without any "
+ + "protocolPluginType provided");
+ } else if (this.pluginService.get(type).equals(s)) {
+ this.pluginService.remove(type);
+ }
+ }
+
+ /**
+ * Function called by the dependency manager when all the required
+ * dependencies are satisfied
+ *
+ */
+ void init() {
+ }
+
+ /**
+ * Function called by the dependency manager when at least one dependency
+ * become unsatisfied or when the component is shutting down because for
+ * example bundle is being stopped.
+ *
+ */
+ void destroy() {
+ if (this.pluginService != null) {
+ this.pluginService.clear();
+ }
+ }
+
+ @Override
+ public Status createBridgeDomain(Node node, String bridgeIdentifier, Map<ConfigConstants, Object> params)
+ throws Throwable {
+ if (pluginService != null) {
+ IPluginInBridgeDomainConfigService plugin = this.pluginService.get(node.getType());
+ if (plugin != null) {
+ return plugin.createBridgeDomain(node, bridgeIdentifier, params);
+ }
+ }
+ return new Status(StatusCode.NOSERVICE, "Requested Plugin Service Not available");
+ }
+
+ @Override
+ public Status deleteBridgeDomain(Node node, String bridgeIdentifier) {
+ if (pluginService != null) {
+ IPluginInBridgeDomainConfigService plugin = this.pluginService.get(node.getType());
+ if (plugin != null) {
+ return plugin.deleteBridgeDomain(node, bridgeIdentifier);
+ }
+ }
+ return new Status(StatusCode.NOSERVICE, "Requested Plugin Service Not available");
+ }
+
+ @Override
+ public List<String> getBridgeDomains(Node node) {
+ if (pluginService != null) {
+ IPluginInBridgeDomainConfigService plugin = this.pluginService.get(node.getType());
+ if (plugin != null) {
+ return plugin.getBridgeDomains(node);
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public Status addBridgeDomainConfig(Node node, String bridgeIdentifier, Map<ConfigConstants, Object> params) {
+ if (pluginService != null) {
+ IPluginInBridgeDomainConfigService plugin = this.pluginService.get(node.getType());
+ if (plugin != null) {
+ return plugin.addBridgeDomainConfig(node, bridgeIdentifier, params);
+ }
+ }
+ return new Status(StatusCode.NOSERVICE, "Requested Plugin Service Not available");
+ }
+
+ @Override
+ public Status removeBridgeDomainConfig(Node node, String bridgeIdentifier, Map<ConfigConstants, Object> params) {
+ if (pluginService != null) {
+ IPluginInBridgeDomainConfigService plugin = this.pluginService.get(node.getType());
+ if (plugin != null) {
+ return plugin.removeBridgeDomainConfig(node, bridgeIdentifier, params);
+ }
+ }
+ return new Status(StatusCode.NOSERVICE, "Requested Plugin Service Not available");
+ }
+
+ @Override
+ public Map<ConfigConstants, Object> getBridgeDomainConfigs(Node node, String bridgeIdentifier) {
+ if (pluginService != null) {
+ IPluginInBridgeDomainConfigService plugin = this.pluginService.get(node.getType());
+ if (plugin != null) {
+ return plugin.getBridgeDomainConfigs(node, bridgeIdentifier);
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public Node getBridgeDomainNode(Node configNode, String bridgeIdentifier) {
+ if (pluginService != null) {
+ IPluginInBridgeDomainConfigService plugin = this.pluginService.get(configNode.getType());
+ if (plugin != null) {
+ return plugin.getBridgeDomainNode(configNode, bridgeIdentifier);
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public Status addPort(Node node, String bridgeIdentifier, String portIdentifier, Map<ConfigConstants, Object> params) {
+ if (pluginService != null) {
+ IPluginInBridgeDomainConfigService plugin = this.pluginService.get(node.getType());
+ if (plugin != null) {
+ return plugin.addPort(node, bridgeIdentifier, portIdentifier, params);
+ }
+ }
+ return new Status(StatusCode.NOSERVICE, "Requested Plugin Service Not available");
+ }
+
+ @Override
+ public Status deletePort(Node node, String bridgeIdentifier, String portIdentifier) {
+ if (pluginService != null) {
+ IPluginInBridgeDomainConfigService plugin = this.pluginService.get(node.getType());
+ if (plugin != null) {
+ return plugin.deletePort(node, bridgeIdentifier, portIdentifier);
+ }
+ }
+ return new Status(StatusCode.NOSERVICE, "Requested Plugin Service Not available");
+ }
+
+ @Override
+ public Status addPortConfig(Node node, String bridgeIdentifier, String portIdentifier,
+ Map<ConfigConstants, Object> params) {
+ if (pluginService != null) {
+ IPluginInBridgeDomainConfigService plugin = this.pluginService.get(node.getType());
+ if (plugin != null) {
+ return plugin.addPortConfig(node, bridgeIdentifier, portIdentifier, params);
+ }
+ }
+ return new Status(StatusCode.NOSERVICE, "Requested Plugin Service Not available");
+ }
+
+ @Override
+ public Status removePortConfig(Node node, String bridgeIdentifier, String portIdentifier,
+ Map<ConfigConstants, Object> params) {
+ if (pluginService != null) {
+ IPluginInBridgeDomainConfigService plugin = this.pluginService.get(node.getType());
+ if (plugin != null) {
+ return plugin.removePortConfig(node, bridgeIdentifier, portIdentifier, params);
+ }
+ }
+ return new Status(StatusCode.NOSERVICE, "Requested Plugin Service Not available");
+ }
+
+ @Override
+ public Map<ConfigConstants, Object> getPortConfigs(Node node, String bridgeIdentifier, String portIdentifier) {
+ if (pluginService != null) {
+ IPluginInBridgeDomainConfigService plugin = this.pluginService.get(node.getType());
+ if (plugin != null) {
+ return plugin.getPortConfigs(node, bridgeIdentifier, portIdentifier);
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public NodeConnector getNodeConnector(Node configNode, String bridgeIdentifier, String portIdentifier) {
+ if (pluginService != null) {
+ IPluginInBridgeDomainConfigService plugin = this.pluginService.get(configNode.getType());
+ if (plugin != null) {
+ return plugin.getNodeConnector(configNode, bridgeIdentifier, portIdentifier);
+ }
+ }
+ return null;
+ }
+}
\ No newline at end of file
--- /dev/null
+package org.opendaylight.controller.sal.networkconfig.internal;
+
+import org.apache.felix.dm.Component;
+import org.opendaylight.controller.sal.core.ComponentActivatorAbstractBase;
+import org.opendaylight.controller.sal.networkconfig.bridgedomain.IBridgeDomainConfigService;
+import org.opendaylight.controller.sal.networkconfig.bridgedomain.IPluginInBridgeDomainConfigService;
+import org.opendaylight.controller.sal.networkconfig.bridgedomain.internal.BridgeDomainConfigService;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class Activator extends ComponentActivatorAbstractBase {
+ protected static final Logger logger = LoggerFactory
+ .getLogger(Activator.class);
+
+ /**
+ * Function called when the activator starts just after some initializations
+ * are done by the ComponentActivatorAbstractBase.
+ *
+ */
+ @Override
+ public void init() {
+
+ }
+
+ /**
+ * Function called when the activator stops just before the cleanup done by
+ * ComponentActivatorAbstractBase
+ *
+ */
+ @Override
+ public void destroy() {
+
+ }
+
+ /**
+ * Function that is used to communicate to dependency manager the list of
+ * known Global implementations
+ *
+ *
+ * @return An array containing all the CLASS objects that will be
+ * instantiated in order to get an fully working implementation
+ * Object
+ */
+ public Object[] getGlobalImplementations() {
+ Object[] res = { BridgeDomainConfigService.class};
+ return res;
+ }
+
+ /**
+ * Function that is called when configuration of the dependencies is required.
+ *
+ * @param c
+ * dependency manager Component object, used for configuring the
+ * dependencies exported and imported
+ * @param imp
+ * Implementation class that is being configured, needed as long
+ * as the same routine can configure multiple implementations
+ */
+ public void configureGlobalInstance(Component c, Object imp) {
+ if (imp.equals(BridgeDomainConfigService.class)) {
+ c.setInterface(
+ new String[] { IBridgeDomainConfigService.class.getName()},
+ null);
+
+ c.add(createServiceDependency()
+ .setService(IPluginInBridgeDomainConfigService.class)
+ .setCallbacks("setPluginInService", "unsetPluginInService")
+ .setRequired(false));
+ }
+ }
+}
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
- <modelVersion>4.0.0</modelVersion>\r
- <parent>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>binding-generator</artifactId>\r
- <version>0.5.4-SNAPSHOT</version>\r
- </parent>\r
- <artifactId>binding-generator-api</artifactId>\r
- <dependencies>\r
- <dependency>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>binding-model-api</artifactId>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>yang-model-api</artifactId>\r
- </dependency>\r
- </dependencies>\r
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
+\r
+ <parent>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>binding-generator</artifactId>\r
+ <version>0.5.5-SNAPSHOT</version>\r
+ </parent>\r
+\r
+ <modelVersion>4.0.0</modelVersion>\r
+ <artifactId>binding-generator-api</artifactId>\r
+\r
+ <dependencies>\r
+ <dependency>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>binding-model-api</artifactId>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.opendaylight.yangtools</groupId>\r
+ <artifactId>yang-model-api</artifactId>\r
+ </dependency>\r
+ </dependencies>\r
+\r
</project>\r
*/\r
package org.opendaylight.controller.sal.binding.generator.api;\r
\r
-import org.opendaylight.controller.sal.binding.model.api.Type;\r
-import org.opendaylight.controller.yang.model.api.Module;\r
-import org.opendaylight.controller.yang.model.api.SchemaContext;\r
-\r
import java.util.List;\r
import java.util.Set;\r
\r
+import org.opendaylight.controller.sal.binding.model.api.Type;\r
+import org.opendaylight.yangtools.yang.model.api.Module;\r
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;\r
+\r
/**\r
*\r
*\r
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
- <modelVersion>4.0.0</modelVersion>\r
- <parent>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>binding-generator</artifactId>\r
- <version>0.5.4-SNAPSHOT</version>\r
- </parent>\r
- <artifactId>binding-generator-impl</artifactId>\r
- <dependencies>\r
- <dependency>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>binding-generator-util</artifactId>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>yang-model-parser-impl</artifactId>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>binding-generator-api</artifactId>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>binding-generator-spi</artifactId>\r
- </dependency>\r
- <dependency>\r
- <groupId>junit</groupId>\r
- <artifactId>junit</artifactId>\r
- </dependency>\r
- <dependency>\r
- <groupId>commons-lang</groupId>\r
- <artifactId>commons-lang</artifactId>\r
- <version>2.1</version>\r
- </dependency>\r
- </dependencies>\r
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
+\r
+ <parent>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>binding-generator</artifactId>\r
+ <version>0.5.5-SNAPSHOT</version>\r
+ </parent>\r
+\r
+ <modelVersion>4.0.0</modelVersion>\r
+ <artifactId>binding-generator-impl</artifactId>\r
+\r
+ <dependencies>\r
+ <dependency>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>binding-generator-util</artifactId>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.opendaylight.yangtools</groupId>\r
+ <artifactId>yang-parser-impl</artifactId>\r
+ <version>${yangtools.version}</version>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>binding-generator-api</artifactId>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>binding-generator-spi</artifactId>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>junit</groupId>\r
+ <artifactId>junit</artifactId>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>commons-lang</groupId>\r
+ <artifactId>commons-lang</artifactId>\r
+ <version>2.1</version>\r
+ </dependency>\r
+ </dependencies>\r
+\r
</project>\r
*/
package org.opendaylight.controller.sal.binding.generator.impl;
-import static org.opendaylight.controller.binding.generator.util.BindingGeneratorUtil.moduleNamespaceToPackageName;
-import static org.opendaylight.controller.binding.generator.util.BindingGeneratorUtil.packageNameForGeneratedType;
-import static org.opendaylight.controller.binding.generator.util.BindingGeneratorUtil.parseToClassName;
-import static org.opendaylight.controller.binding.generator.util.BindingGeneratorUtil.parseToValidParamName;
-import static org.opendaylight.controller.binding.generator.util.BindingGeneratorUtil.schemaNodeToTransferObjectBuilder;
-import static org.opendaylight.controller.yang.model.util.SchemaContextUtil.findDataSchemaNode;
-import static org.opendaylight.controller.yang.model.util.SchemaContextUtil.findParentModule;
+import static org.opendaylight.controller.binding.generator.util.BindingGeneratorUtil.*;
+import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.*;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Set;
import java.util.concurrent.Future;
+import javax.management.Notification;
+
import org.opendaylight.controller.binding.generator.util.ReferencedTypeImpl;
import org.opendaylight.controller.binding.generator.util.Types;
import org.opendaylight.controller.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl;
import org.opendaylight.controller.sal.binding.model.api.type.builder.MethodSignatureBuilder;
import org.opendaylight.controller.sal.binding.yang.types.GroupingDefinitionDependencySort;
import org.opendaylight.controller.sal.binding.yang.types.TypeProviderImpl;
-import org.opendaylight.controller.yang.binding.Notification;
-import org.opendaylight.controller.yang.common.QName;
-import org.opendaylight.controller.yang.common.RpcResult;
-import org.opendaylight.controller.yang.model.api.AugmentationSchema;
-import org.opendaylight.controller.yang.model.api.ChoiceCaseNode;
-import org.opendaylight.controller.yang.model.api.ChoiceNode;
-import org.opendaylight.controller.yang.model.api.ContainerSchemaNode;
-import org.opendaylight.controller.yang.model.api.DataNodeContainer;
-import org.opendaylight.controller.yang.model.api.DataSchemaNode;
-import org.opendaylight.controller.yang.model.api.GroupingDefinition;
-import org.opendaylight.controller.yang.model.api.IdentitySchemaNode;
-import org.opendaylight.controller.yang.model.api.LeafListSchemaNode;
-import org.opendaylight.controller.yang.model.api.LeafSchemaNode;
-import org.opendaylight.controller.yang.model.api.ListSchemaNode;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.NotificationDefinition;
-import org.opendaylight.controller.yang.model.api.RpcDefinition;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.api.SchemaNode;
-import org.opendaylight.controller.yang.model.api.SchemaPath;
-import org.opendaylight.controller.yang.model.api.TypeDefinition;
-import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.api.type.BitsTypeDefinition;
-import org.opendaylight.controller.yang.model.api.type.EnumTypeDefinition;
-import org.opendaylight.controller.yang.model.api.type.EnumTypeDefinition.EnumPair;
-import org.opendaylight.controller.yang.model.util.DataNodeIterator;
-import org.opendaylight.controller.yang.model.util.ExtendedType;
-import org.opendaylight.controller.yang.model.util.SchemaContextUtil;
-import org.opendaylight.controller.yang.model.util.UnionType;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.common.RpcResult;
+import org.opendaylight.yangtools.yang.model.api.AugmentationSchema;
+import org.opendaylight.yangtools.yang.model.api.ChoiceCaseNode;
+import org.opendaylight.yangtools.yang.model.api.ChoiceNode;
+import org.opendaylight.yangtools.yang.model.api.ContainerSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.DataNodeContainer;
+import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.ListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.NotificationDefinition;
+import org.opendaylight.yangtools.yang.model.api.RpcDefinition;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaNode;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.UsesNode;
+import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair;
+import org.opendaylight.yangtools.yang.model.util.DataNodeIterator;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.model.util.SchemaContextUtil;
+import org.opendaylight.yangtools.yang.model.util.UnionType;
public final class BindingGeneratorImpl implements BindingGenerator {
/**
* Method instantiates new Generated Type Builder and sets the implements
* definitions of Data Object and Augmentable.
- *
+ *
* @param packageName
* Generated Type Package Name
* @param schemaNode
}
/**
- *
+ *
* @param packageName
* @param schemaNode
* @return
* Adds the implemented types to type builder. The method passes through the
* list of elements which contains {@code dataNodeContainer} and adds them
* as <i>implements type</i> to <code>builder</code>
- *
+ *
* @param dataNodeContainer
* element which contains the list of used YANG groupings
* @param builder
import org.opendaylight.controller.binding.generator.util.Types;
import org.opendaylight.controller.sal.binding.generator.spi.TypeProvider;
import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
public final class BaseYangTypes {
import java.util.Map;
import java.util.Set;
-import org.opendaylight.controller.yang.model.api.GroupingDefinition;
-import org.opendaylight.controller.yang.model.api.SchemaPath;
-import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.parser.util.TopologicalSort;
-import org.opendaylight.controller.yang.parser.util.TopologicalSort.Node;
-import org.opendaylight.controller.yang.parser.util.TopologicalSort.NodeImpl;
+import org.opendaylight.yangtools.yang.model.api.GroupingDefinition;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.UsesNode;
+import org.opendaylight.yangtools.yang.parser.util.TopologicalSort;
+import org.opendaylight.yangtools.yang.parser.util.TopologicalSort.Node;
+import org.opendaylight.yangtools.yang.parser.util.TopologicalSort.NodeImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
*/
package org.opendaylight.controller.sal.binding.yang.types;
+import static org.opendaylight.controller.binding.generator.util.BindingGeneratorUtil.*;
+import static org.opendaylight.yangtools.yang.model.util.SchemaContextUtil.*;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.TreeMap;
+
import org.apache.commons.lang.StringEscapeUtils;
import org.opendaylight.controller.binding.generator.util.ReferencedTypeImpl;
import org.opendaylight.controller.binding.generator.util.TypeConstants;
import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;
import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedTOBuilder;
import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedTypeBuilder;
-import org.opendaylight.controller.yang.common.QName;
-import org.opendaylight.controller.yang.model.api.*;
-import org.opendaylight.controller.yang.model.api.type.*;
-import org.opendaylight.controller.yang.model.api.type.BitsTypeDefinition.Bit;
-import org.opendaylight.controller.yang.model.api.type.EnumTypeDefinition.EnumPair;
-import org.opendaylight.controller.yang.model.util.ExtendedType;
-
-import org.opendaylight.controller.yang.model.util.StringType;
-import org.opendaylight.controller.yang.model.util.UnionType;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-import java.util.TreeMap;
-
-import static org.opendaylight.controller.binding.generator.util.BindingGeneratorUtil.*;
-import static org.opendaylight.controller.yang.model.util.SchemaContextUtil.*;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.DataSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.IdentitySchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafListSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.LeafSchemaNode;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.RevisionAwareXPath;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.BitsTypeDefinition.Bit;
+import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.EnumTypeDefinition.EnumPair;
+import org.opendaylight.yangtools.yang.model.api.type.IdentityrefTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.LeafrefTypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.PatternConstraint;
+import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.model.util.StringType;
+import org.opendaylight.yangtools.yang.model.util.UnionType;
public final class TypeProviderImpl implements TypeProvider {
/*
* (non-Javadoc)
- *
+ *
* @see org.opendaylight.controller.yang.model.type.provider.TypeProvider#
* javaTypeForYangType(java.lang.String)
*/
* equal depth. In next step are lists from this map concatenated to one
* list in ascending order according to their depth. All type definitions
* are in the list behind all type definitions on which depends.
- *
+ *
* @param unsortedTypeDefinitions
* represents list of type definitions
* @return list of type definitions sorted according their each other
/**
* The method return how many immersion is necessary to get from type
* definition to base type.
- *
+ *
* @param typeDefinition
* is type definition for which is depth looked for.
* @return how many immersion is necessary to get from type definition to
*/
package org.opendaylight.controller.sal.binding.yang.types;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.model.api.type.UnionTypeDefinition;
+import org.opendaylight.yangtools.yang.model.util.ExtendedType;
+import org.opendaylight.yangtools.yang.parser.util.TopologicalSort;
+import org.opendaylight.yangtools.yang.parser.util.TopologicalSort.Node;
+import org.opendaylight.yangtools.yang.parser.util.TopologicalSort.NodeImpl;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
import com.google.common.annotations.VisibleForTesting;
import com.google.common.base.Function;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
-import org.opendaylight.controller.yang.model.api.TypeDefinition;
-import org.opendaylight.controller.yang.model.api.type.UnionTypeDefinition;
-import org.opendaylight.controller.yang.model.util.ExtendedType;
-import org.opendaylight.controller.yang.parser.util.TopologicalSort;
-import org.opendaylight.controller.yang.parser.util.TopologicalSort.Node;
-import org.opendaylight.controller.yang.parser.util.TopologicalSort.NodeImpl;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
public class UnionDependencySort {
private static final Logger logger = LoggerFactory
*/
package org.opendaylight.controller.sal.binding.generator.impl;
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
import org.junit.BeforeClass;
import org.junit.Test;
import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
import org.opendaylight.controller.sal.binding.model.api.GeneratedType;
import org.opendaylight.controller.sal.binding.model.api.MethodSignature;
import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
-
-import java.io.File;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class AugmentRleativeXPathTest {
assertNotNull("genTypes is null", genTypes);
assertFalse("genTypes is empty", genTypes.isEmpty());
-
+
GeneratedTransferObject gtInterfaceKey = null;
GeneratedType gtInterface = null;
GeneratedType gtTunnel = null;
assertTrue("gtTunnelId.getReturnType().getName() must be Uri",
gtTunnelId.getReturnType().getName().equals("Uri"));
}
-
+
}
*/
package org.opendaylight.controller.sal.binding.generator.impl;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
-import org.opendaylight.controller.sal.binding.model.api.*;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
+import static org.junit.Assert.*;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
-import static org.junit.Assert.*;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
+import org.opendaylight.controller.sal.binding.model.api.GeneratedProperty;
+import org.opendaylight.controller.sal.binding.model.api.GeneratedTransferObject;
+import org.opendaylight.controller.sal.binding.model.api.GeneratedType;
+import org.opendaylight.controller.sal.binding.model.api.MethodSignature;
+import org.opendaylight.controller.sal.binding.model.api.Type;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class AugmentedTypeTest {
*/
package org.opendaylight.controller.sal.binding.generator.impl;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
-import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
+import static org.junit.Assert.*;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
+import org.opendaylight.controller.sal.binding.model.api.Type;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class BinaryTypeTest {
private final static List<File> yangModels = new ArrayList<>();
*/
package org.opendaylight.controller.sal.binding.generator.impl;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.*;
import java.io.File;
import java.util.ArrayList;
import org.opendaylight.controller.sal.binding.model.api.GeneratedTransferObject;
import org.opendaylight.controller.sal.binding.model.api.GeneratedType;
import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class BitAndUnionTOEnclosingTest {
*/
package org.opendaylight.controller.sal.binding.generator.impl;
+import static org.junit.Assert.*;
+
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import org.junit.Test;
import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
-
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class ChoiceCaseGenTypesTest {
package org.opendaylight.controller.sal.binding.generator.impl;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
-import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
+import static org.junit.Assert.*;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
+import org.opendaylight.controller.sal.binding.model.api.Type;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class ControllerTest {
package org.opendaylight.controller.sal.binding.generator.impl;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNull;
-import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.*;
import java.io.File;
import java.util.ArrayList;
import org.junit.BeforeClass;
import org.junit.Test;
import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
-import org.opendaylight.controller.sal.binding.generator.impl.BindingGeneratorImpl;
-import org.opendaylight.controller.sal.binding.model.api.Constant;
import org.opendaylight.controller.sal.binding.model.api.GeneratedProperty;
import org.opendaylight.controller.sal.binding.model.api.GeneratedTransferObject;
-import org.opendaylight.controller.sal.binding.model.api.ParameterizedType;
import org.opendaylight.controller.sal.binding.model.api.Type;
import org.opendaylight.controller.sal.binding.yang.types.BaseYangTypes;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class ExtendedTypedefTest {
testModels.add(listModelFile);
}
- @Test
+ @Test
public void constantGenerationTest() {
final YangModelParser parser = new YangParserImpl();
final Set<Module> modules = parser.parseYangModels(testModels);
import org.opendaylight.controller.sal.binding.model.api.GeneratedType;
import org.opendaylight.controller.sal.binding.model.api.MethodSignature;
import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class GenEnumResolvingTest {
*/
package org.opendaylight.controller.sal.binding.generator.impl;
+import static org.junit.Assert.*;
+
+import java.io.File;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
import org.junit.BeforeClass;
import org.junit.Test;
import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
-
-import java.io.File;
-import java.util.*;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class GenTypesSubSetTest {
import org.opendaylight.controller.sal.binding.model.api.MethodSignature;
import org.opendaylight.controller.sal.binding.model.api.MethodSignature.Parameter;
import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class GeneratedTypesBitsTest {
package org.opendaylight.controller.sal.binding.generator.impl;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
import java.io.File;
import java.util.ArrayList;
import org.junit.BeforeClass;
import org.junit.Test;
import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
-import org.opendaylight.controller.sal.binding.generator.impl.BindingGeneratorImpl;
import org.opendaylight.controller.sal.binding.model.api.Constant;
import org.opendaylight.controller.sal.binding.model.api.GeneratedTransferObject;
import org.opendaylight.controller.sal.binding.model.api.ParameterizedType;
import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class GeneratedTypesStringTest {
package org.opendaylight.controller.sal.binding.generator.impl;
import static org.junit.Assert.*;
-import static org.junit.Assert.assertEquals;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
-import org.junit.Ignore;
import org.junit.Test;
import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
import org.opendaylight.controller.sal.binding.model.api.GeneratedProperty;
import org.opendaylight.controller.sal.binding.model.api.GeneratedType;
import org.opendaylight.controller.sal.binding.model.api.MethodSignature;
import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class GeneratedTypesTest {
*/
package org.opendaylight.controller.sal.binding.generator.impl;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
-import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
+import static org.junit.Assert.*;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.opendaylight.controller.sal.binding.generator.api.BindingGenerator;
+import org.opendaylight.controller.sal.binding.model.api.Type;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class UnionTypeDefTest {
private final static List<File> yangModels = new ArrayList<>();
*/
package org.opendaylight.controller.sal.binding.generator.impl;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.*;
import java.io.File;
import java.util.ArrayList;
import org.opendaylight.controller.sal.binding.model.api.MethodSignature;
import org.opendaylight.controller.sal.binding.model.api.ParameterizedType;
import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class UsesTest {
module bit-and-union-in-leaf {
-
+
namespace "urn:bit:union:in:leaf";
prefix "sbd";
contact "http://www.opendaylight.org/";
revision 2013-06-26 {
-
+
}
-
+
typedef union-typedef {
type union {
type string {
pattern "[a-g]";
- };
+ }
type int16;
}
}
-
+
typedef union-typedef2 {
type union {
type string;
type int16;
}
}
-
+
container parent-container {
leaf bit-leaf {
type bits {
bit third-bit;
}
}
-
+
leaf union-leaf {
type union {
type int32;
type string {
pattern "[a-z]";
- };
+ }
type string {
- pattern "[0-9]*"
- };
+ pattern "[0-9]*";
+ }
type string {
pattern "[a-d]*";
pattern "[0-5]*";
- };
+ }
type uint8;
}
}
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
- <modelVersion>4.0.0</modelVersion>\r
- <parent>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>binding-generator</artifactId>\r
- <version>0.5.4-SNAPSHOT</version>\r
- </parent>\r
- <artifactId>binding-generator-spi</artifactId>\r
- <dependencies>\r
- <dependency>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>binding-model-api</artifactId>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>yang-model-api</artifactId>\r
- </dependency>\r
- </dependencies>\r
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
+\r
+ <parent>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>binding-generator</artifactId>\r
+ <version>0.5.5-SNAPSHOT</version>\r
+ </parent>\r
+\r
+ <modelVersion>4.0.0</modelVersion>\r
+ <artifactId>binding-generator-spi</artifactId>\r
+\r
+ <dependencies>\r
+ <dependency>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>binding-model-api</artifactId>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.opendaylight.yangtools</groupId>\r
+ <artifactId>yang-model-api</artifactId>\r
+ </dependency>\r
+ </dependencies>\r
+\r
</project>\r
package org.opendaylight.controller.sal.binding.generator.spi;\r
\r
import org.opendaylight.controller.sal.binding.model.api.Type;\r
-import org.opendaylight.controller.yang.model.api.TypeDefinition;\r
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;\r
\r
public interface TypeProvider {\r
\r
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
- <modelVersion>4.0.0</modelVersion>\r
- <parent>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>binding-generator</artifactId>\r
- <version>0.5.4-SNAPSHOT</version>\r
- </parent>\r
- <artifactId>binding-generator-util</artifactId>\r
- <dependencies>\r
- <dependency>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>binding-model-api</artifactId>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>yang-model-api</artifactId>\r
- </dependency>\r
- <dependency>\r
- <groupId>junit</groupId>\r
- <artifactId>junit</artifactId>\r
- </dependency>\r
- <dependency>\r
- <groupId>org.opendaylight.controller</groupId>\r
- <artifactId>yang-binding</artifactId>\r
- </dependency>\r
- </dependencies>\r
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
+\r
+ <parent>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>binding-generator</artifactId>\r
+ <version>0.5.5-SNAPSHOT</version>\r
+ </parent>\r
+\r
+ <modelVersion>4.0.0</modelVersion>\r
+ <artifactId>binding-generator-util</artifactId>\r
+\r
+ <dependencies>\r
+ <dependency>\r
+ <groupId>org.opendaylight.controller</groupId>\r
+ <artifactId>binding-model-api</artifactId>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.opendaylight.yangtools</groupId>\r
+ <artifactId>yang-model-api</artifactId>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>junit</groupId>\r
+ <artifactId>junit</artifactId>\r
+ </dependency>\r
+ <dependency>\r
+ <groupId>org.opendaylight.yangtools</groupId>\r
+ <artifactId>yang-binding</artifactId>\r
+ </dependency>\r
+ </dependencies>\r
+\r
</project>\r
package org.opendaylight.controller.binding.generator.util;
-import java.util.*;
+import java.util.Arrays;
+import java.util.Calendar;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
import org.opendaylight.controller.binding.generator.util.generated.type.builder.GeneratedTOBuilderImpl;
import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedTOBuilder;
-import org.opendaylight.controller.yang.common.QName;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaNode;
-import org.opendaylight.controller.yang.model.api.SchemaPath;
-import org.opendaylight.controller.yang.model.api.TypeDefinition;
+import org.opendaylight.yangtools.yang.common.QName;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaNode;
+import org.opendaylight.yangtools.yang.model.api.SchemaPath;
+import org.opendaylight.yangtools.yang.model.api.TypeDefinition;
public final class BindingGeneratorUtil {
import org.opendaylight.controller.sal.binding.model.api.ParameterizedType;
import org.opendaylight.controller.sal.binding.model.api.Type;
import org.opendaylight.controller.sal.binding.model.api.WildcardType;
-import org.opendaylight.controller.yang.binding.Augmentable;
-import org.opendaylight.controller.yang.binding.Augmentation;
-import org.opendaylight.controller.yang.binding.BaseIdentity;
-import org.opendaylight.controller.yang.binding.DataObject;
+import org.opendaylight.yangtools.yang.binding.Augmentable;
+import org.opendaylight.yangtools.yang.binding.Augmentation;
+import org.opendaylight.yangtools.yang.binding.BaseIdentity;
+import org.opendaylight.yangtools.yang.binding.DataObject;
public final class Types {
private static final Type SET_TYPE = typeForClass(Set.class);
/**
* Returns an instance of {@link ConcreteType} describing the class
- *
+ *
* @param cls
* Class to describe
* @return Description of class
/**
* Returns an instance of {@link ParameterizedType} describing the typed
* {@link Map}<K,V>
- *
+ *
* @param keyType
* Key Type
* @param valueType
/**
* Returns an instance of {@link ParameterizedType} describing the typed
* {@link Set}<V> with concrete type of value.
- *
+ *
* @param valueType
* Value Type
* @return Description of generic type instance of Set
/**
* Returns an instance of {@link ParameterizedType} describing the typed
* {@link List}<V> with concrete type of value.
- *
+ *
* @param valueType
* Value Type
* @return Description of type instance of List
}
/**
- *
+ *
* @param type
* @param parameters
* @return
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"\r
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">\r
- <modelVersion>4.0.0</modelVersion>\r
+\r
<parent>\r
<groupId>org.opendaylight.controller</groupId>\r
<artifactId>binding-generator</artifactId>\r
- <version>0.5.4-SNAPSHOT</version>\r
+ <version>0.5.5-SNAPSHOT</version>\r
</parent>\r
+\r
+ <modelVersion>4.0.0</modelVersion>\r
<artifactId>binding-java-api-generator</artifactId>\r
+\r
<build>\r
<plugins>\r
<plugin>\r
<goal>compile</goal>\r
</goals>\r
<configuration>\r
- <outputDirectory>${basedir}/src/main/xtend-gen</outputDirectory>\r
+ <outputDirectory>${basedir}/src/main/xtend-gen</outputDirectory>\r
</configuration>\r
</execution>\r
</executions>\r
</plugin>\r
<plugin>\r
- <artifactId>maven-clean-plugin</artifactId>\r
- <version>2.4.1</version>\r
- <configuration>\r
- <filesets>\r
- <fileset>\r
- <directory>${basedir}/src/main/xtend-gen</directory>\r
- <includes>\r
- <include>**</include>\r
- </includes>\r
- </fileset>\r
- </filesets>\r
- </configuration>\r
+ <artifactId>maven-clean-plugin</artifactId>\r
+ <version>2.4.1</version>\r
+ <configuration>\r
+ <filesets>\r
+ <fileset>\r
+ <directory>${basedir}/src/main/xtend-gen</directory>\r
+ <includes>\r
+ <include>**</include>\r
+ </includes>\r
+ </fileset>\r
+ </filesets>\r
+ </configuration>\r
</plugin>\r
</plugins>\r
</build>\r
+\r
<dependencies>\r
<dependency>\r
<groupId>org.opendaylight.controller</groupId>\r
<groupId>junit</groupId>\r
<artifactId>junit</artifactId>\r
</dependency>\r
- <dependency>\r
- <groupId>org.eclipse.xtend</groupId>\r
- <artifactId>org.eclipse.xtend.lib</artifactId>\r
- <version>2.4.2</version>\r
- </dependency>\r
+ <dependency>\r
+ <groupId>org.eclipse.xtend</groupId>\r
+ <artifactId>org.eclipse.xtend.lib</artifactId>\r
+ <version>2.4.2</version>\r
+ </dependency>\r
</dependencies>\r
+\r
</project>\r
import org.opendaylight.controller.sal.binding.model.api.MethodSignature;
import org.opendaylight.controller.sal.binding.model.api.ParameterizedType;
import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.yang.binding.Augmentable;
+import org.opendaylight.yangtools.yang.binding.Augmentable;
public class BuilderClassDescriptor {
import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedPropertyBuilder;
import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedTOBuilder;
import org.opendaylight.controller.sal.java.api.generator.ClassCodeGenerator;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class ClassCodeGeneratorTest {
import static org.junit.Assert.assertTrue;
import java.io.File;
-import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Set;
import org.opendaylight.controller.sal.binding.model.api.GeneratedTransferObject;
import org.opendaylight.controller.sal.binding.model.api.GeneratedType;
import org.opendaylight.controller.sal.binding.model.api.Type;
-import org.opendaylight.controller.sal.java.api.generator.ClassCodeGenerator;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.model.parser.api.YangModelParser;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class GenerateInnerClassForBitsAndUnionInLeavesTest {
import org.opendaylight.controller.sal.binding.model.api.type.builder.GeneratedTypeBuilder;
import org.opendaylight.controller.sal.java.api.generator.GeneratorJavaFile;
import org.opendaylight.controller.sal.java.api.generator.InterfaceGenerator;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang.parser.impl.YangParserImpl;
public class GeneratorJavaFileTest {
private static final String FS = File.separator;
tosToGenerate.add((GeneratedTransferObject) type);
}
if (type instanceof Enumeration) {
- enumerationToGenerate.add((Enumeration) type);
+ enumerationToGenerate.add((Enumeration) type);
}
}
type union {
type string {
pattern "[a-g]";
- };
+ }
type int16;
}
}
type int32;
type string {
pattern "[a-z]";
- };
+ }
type string {
- pattern "[0-9]*"
- };
+ pattern "[0-9]*";
+ }
type string {
pattern "[a-d]*";
pattern "[0-5]*";
- };
+ }
type uint8;
}
}
<parent>\r
<groupId>org.opendaylight.controller</groupId>\r
<artifactId>binding-generator</artifactId>\r
- <version>0.5.4-SNAPSHOT</version>\r
+ <version>0.5.5-SNAPSHOT</version>\r
</parent>\r
\r
<modelVersion>4.0.0</modelVersion>\r
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
+
<parent>
<artifactId>binding-generator</artifactId>
<groupId>org.opendaylight.controller</groupId>
- <version>0.5.4-SNAPSHOT</version>
+ <version>0.5.5-SNAPSHOT</version>
</parent>
+
+ <modelVersion>4.0.0</modelVersion>
<artifactId>maven-sal-api-gen-plugin</artifactId>
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
</dependency>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>binding-generator-api</artifactId>
</dependency>
- <dependency>
+ <dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>binding-generator-impl</artifactId>
</dependency>
- <dependency>
+ <dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>binding-java-api-generator</artifactId>
</dependency>
</dependencies>
+
</project>
import org.opendaylight.controller.sal.binding.model.api.GeneratedType;
import org.opendaylight.controller.sal.binding.model.api.Type;
import org.opendaylight.controller.sal.java.api.generator.GeneratorJavaFile;
-import org.opendaylight.controller.yang.model.api.Module;
-import org.opendaylight.controller.yang.model.api.SchemaContext;
-import org.opendaylight.controller.yang2sources.spi.CodeGenerator;
+import org.opendaylight.yangtools.yang.model.api.Module;
+import org.opendaylight.yangtools.yang.model.api.SchemaContext;
+import org.opendaylight.yangtools.yang2sources.spi.CodeGenerator;
public final class CodeGeneratorImpl implements CodeGenerator {
</parent>
<modelVersion>4.0.0</modelVersion>
- <version>0.5.4-SNAPSHOT</version>
+ <version>0.5.5-SNAPSHOT</version>
<artifactId>binding-generator</artifactId>
<packaging>pom</packaging>
<name>${project.artifactId}</name>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
- <!-- version of YANG tools dependencies -->
- <yang.version>0.5.4-SNAPSHOT</yang.version>
</properties>
<modules>
<version>${project.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-common</artifactId>
- <version>${yang.version}</version>
+ <version>${yangtools.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-data-api</artifactId>
- <version>${yang.version}</version>
+ <version>${yangtools.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-data-util</artifactId>
- <version>${yang.version}</version>
+ <version>${yangtools.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-model-api</artifactId>
- <version>${yang.version}</version>
+ <version>${yangtools.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-model-util</artifactId>
- <version>${yang.version}</version>
+ <version>${yangtools.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-binding</artifactId>
- <version>${yang.version}</version>
+ <version>${yangtools.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-model-parser-api</artifactId>
- <version>${yang.version}</version>
+ <version>${yangtools.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-model-parser-impl
</artifactId>
- <version>${yang.version}</version>
+ <version>${yangtools.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
- <version>${yang.version}</version>
+ <version>${yangtools.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin-spi</artifactId>
- <version>${yang.version}</version>
+ <version>${yangtools.version}</version>
</dependency>
</dependencies>
</dependencyManagement>
<parent>
<artifactId>binding-generator</artifactId>
<groupId>org.opendaylight.controller</groupId>
- <version>0.5.4-SNAPSHOT</version>
+ <version>0.5.5-SNAPSHOT</version>
</parent>
<artifactId>maven-code-gen-sample</artifactId>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
- <version>0.5.4-SNAPSHOT</version>
+ <version>${yangtools.version}</version>
<executions>
<execution>
<goals>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>maven-sal-api-gen-plugin</artifactId>
- <version>0.5.4-SNAPSHOT</version>
+ <version>0.5.5-SNAPSHOT</version>
<type>jar</type>
</dependency>
</dependencies>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
- org.opendaylight.controller
+ org.opendaylight.yangtools
</groupId>
<artifactId>
yang-maven-plugin
</build>
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-binding</artifactId>
- <version>0.5.4-SNAPSHOT</version>
</dependency>
</dependencies>
</project>
module bit-and-union-in-leaf {
-
+
namespace "urn:bit:union:in:leaf";
prefix "sbd";
revision 2013-06-26 {
}
-
+
typedef union-typedef {
type union {
type string {
pattern "[a-g]";
- };
+ }
type int16;
}
}
-
+
typedef union-typedef2 {
type union {
type string;
type int16;
}
}
-
+
container parent-container {
leaf bit-leaf {
type bits {
bit third-bit;
}
}
-
+
leaf union-leaf {
type union {
type int32;
type string {
pattern "[a-z]";
- };
+ }
type string {
pattern "[0-9]*"
- };
+ }
type string {
pattern "[a-d]*";
pattern "[0-5]*";
- };
+ }
type uint8;
}
}
}
-}
\ No newline at end of file
+}
+++ /dev/null
-module grouping_uses {
-
- namespace "urn:uses:of:grouping";
- prefix "sbd";
-
- organization "OPEN DAYLIGHT";
- contact "http://www.opendaylight.org/";
-
- revision 2013-07-18 {
- }
-
- grouping grouping-modul-test {
- leaf leaf-grouping-modul-test {
- type string;
- }
- leaf leaf-grouping-modul-test2 {
- type uint8;
- }
- }
-
-
- grouping grouping-container-test {
- leaf leaf-grouping-container-test1 {
- type string;
- }
- leaf leaf-grouping-container-test2 {
- type uint8;
- }
- }
-
- grouping grouping-case-test {
- leaf leaf-grouping-case-test1 {
- type string;
- }
- }
-
- grouping grouping-choice-test {
- choice choice-grouing-choice-test {
- case case-choice-grouping-choice-test1 {
- leaf leaf-case-choice-grouping-choice-test1 {
- type string;
- }
- }
- case case-choice-grouping-choice-test2 {
- leaf leaf-case-choice-grouping-choice-test2 {
- type uint8;
- }
- }
- }
- }
-
- grouping grouping-list-test {
- leaf leaf-grouping-list-test {
- type string;
- }
- container container-grouping-list-test {
- leaf leaf-container-grouping-list-test {
- type uint8;
- }
- }
- list list-grouping-list-test {
- leaf leaf-list-grouping-list-test {
- type int32;
- }
- }
- leaf-list leaflist-grouping-list-test {
- type string;
- }
- }
-
- grouping grouping-grouping-test {
- leaf leaf-grouping-grouping {
- type string;
- }
- }
-
- grouping grouping-rpc-input-test {
- container container-grouping-rpc-input-test {
- leaf leaf-container-grouping-rpc-input-test {
- type string;
- }
- }
- leaf-list leaflist-grouping-rpc-input-test {
- type uint8;
- }
- }
-
- grouping grouping-rpc-output-test {
- leaf leaf-grouping-rpc-output-test {
- type int8;
- }
- }
-
- grouping grouping-notification-test {
- container container-grouping-notification-test {
- leaf leaf-container-grouping-notification-test {
- type uint32;
- }
- }
- leaf-list leaffllist-grouping-notification-test {
- type string;
- }
- }
-
-//grouping in GROUPING
- grouping grouping-atest {
- leaf leaf-grouping-test {
- type int8;
- }
- uses grouping-grouping-test;
- }
-
-//grouping in MODUL
- uses grouping-modul-test;
-
-//grouping in RPC
- rpc rpc-test {
- input {
- uses grouping-rpc-input-test;
- }
- output {
- uses grouping-rpc-output-test;
- }
- }
-
-//grouping in CONTAINER
- container container-test {
- leaf container-leaf-test {
- type string;
- }
- uses grouping-container-test;
- }
-
-//grouping in CASE
- container container-with-choicetest {
- choice choice-test {
- case a {
- leaf leaf-choice-test1 {
- type string;
- }
- }
- case c {
- uses grouping-case-test;
- }
- }
- }
-
-//grouping in LIST
- list list-test {
- leaf list-leaf-test {
- type string;
- }
- uses grouping-list-test;
- }
-
-//grouping in NOTIFICATION
- notification notification-test {
- leaf leaf-notification-test {
- type string;
- }
- uses grouping-notification-test;
- }
-
- grouping grouping-augment-test1 {
- leaf leaf-grouping-augment-test {
- type string;
- }
- }
-
- container container-augment {
- leaf leaf-container-augment1 {
- type string;
- }
- leaf leaf-container-augment2 {
- type int64;
- }
- }
-
-//grouping AUGMENT
- augment "/container-augment" {
- uses grouping-augment-test1;
- uses grouping-choice-test;
- }
-}
\ No newline at end of file
<parent>
<artifactId>binding-generator</artifactId>
<groupId>org.opendaylight.controller</groupId>
- <version>0.5.4-SNAPSHOT</version>
+ <version>0.5.5-SNAPSHOT</version>
</parent>
<artifactId>modeling-sample</artifactId>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
- <version>0.5.4-SNAPSHOT</version>
+ <version>${yangtools.version}</version>
<executions>
<execution>
<goals>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>maven-sal-api-gen-plugin</artifactId>
- <version>0.5.4-SNAPSHOT</version>
+ <version>0.5.5-SNAPSHOT</version>
<type>jar</type>
</dependency>
</dependencies>
<pluginExecution>
<pluginExecutionFilter>
<groupId>
- org.opendaylight.controller
+ org.opendaylight.yangtools
</groupId>
<artifactId>
yang-maven-plugin
</build>
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-binding</artifactId>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-common</artifactId>
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+</project>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+
<parent>
<artifactId>model-parent</artifactId>
<groupId>org.opendaylight.controller</groupId>
<version>0.5-SNAPSHOT</version>
</parent>
+
+ <modelVersion>4.0.0</modelVersion>
<artifactId>model-topology</artifactId>
<dependencies>
<version>2010.09.24-SNAPSHOT</version>
</dependency>
</dependencies>
-</project>
\ No newline at end of file
+
+</project>
<build>
<plugins>
<plugin>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-maven-plugin</artifactId>
- <version>0.5.4-SNAPSHOT</version>
+ <version>${yangtools.version}</version>
<executions>
<execution>
<goals>
<dependency>
<groupId>org.opendaylight.controller</groupId>
<artifactId>maven-sal-api-gen-plugin</artifactId>
- <version>0.5.4-SNAPSHOT</version>
+ <version>0.5.5-SNAPSHOT</version>
<type>jar</type>
</dependency>
</dependencies>
<dependencies>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-binding</artifactId>
- <version>0.5.4-SNAPSHOT</version>
+ <version>${yangtools.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-common</artifactId>
- <version>0.5.4-SNAPSHOT</version>
+ <version>${yangtools.version}</version>
</dependency>
</dependencies>
<modules>
<module>concepts-lang</module>
- <module>yang</module>
+ <!-- <module>yang</module> -->
<module>code-generator</module>
<module>model</module>
</modules>
<properties>
+ <yangtools.version>0.5.5-SNAPSHOT</yangtools.version>
<sonar.host.url>https://sonar.opendaylight.org/</sonar.host.url>
<nexusproxy>http://nexus.opendaylight.org/content</nexusproxy>
<sitedeploy>dav:http://nexus.opendaylight.org/content/sites/site</sitedeploy>
<name>central2</name>
<url>${nexusproxy}/repositories/central2/</url>
</pluginRepository>
+ <pluginRepository>
+ <id>opendaylight.snapshot</id>
+ <name>opendaylight.snapshot</name>
+ <url>${nexusproxy}/repositories/opendaylight.snapshot/</url>
+ </pluginRepository>
</pluginRepositories>
<url>${nexusproxy}/repositories/opendaylight.snapshot/</url>
</repository>
</repositories>
+
<distributionManagement>
<!-- OpenDayLight Released artifact -->
<repository>
</properties>
</profile>
</profiles>
+
</project>
</modules>
<properties>
- <yang.version>0.5.4-SNAPSHOT</yang.version>
+ <yang.version>0.5.5-SNAPSHOT</yang.version>
</properties>
<dependencyManagement>
<version>4.10</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-binding</artifactId>
<version>${yang.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-common</artifactId>
<version>${yang.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-data-api</artifactId>
<version>${yang.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-model-api</artifactId>
<version>${yang.version}</version>
</dependency>
<dependency>
- <groupId>org.opendaylight.controller</groupId>
+ <groupId>org.opendaylight.yangtools</groupId>
<artifactId>yang-data-util</artifactId>
<version>${yang.version}</version>
</dependency>
+++ /dev/null
-log.txt
-/target
+++ /dev/null
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
- <parent>
- <artifactId>yang</artifactId>
- <groupId>org.opendaylight.controller</groupId>
- <version>0.5.4-SNAPSHOT</version>
- </parent>
- <artifactId>yang-maven-plugin-it</artifactId>
-
- <dependencies>
- <dependency>
- <groupId>org.apache.maven.shared</groupId>
- <artifactId>maven-verifier</artifactId>
- <version>1.4</version>
- <scope>test</scope>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <artifactId>maven-failsafe-plugin</artifactId>
- <version>2.6</version>
- <executions>
- <execution>
- <goals>
- <goal>integration-test</goal>
- <goal>verify</goal>
- </goals>
- </execution>
- </executions>
- </plugin>
- </plugins>
- </build>
-</project>
+++ /dev/null
-/*
- * 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.yang2sources.plugin.it;
-
-import static org.junit.Assert.*;
-import static org.junit.matchers.JUnitMatchers.*;
-
-import java.io.File;
-import java.net.URL;
-
-import org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
-import org.junit.Test;
-
-public class YangToSourcesPluginTestIT {
-
- // TODO Test yang files in transitive dependencies
-
- @Test
- public void testYangRootNotExist() {
- try {
- setUp("YangRootNotExist/", false);
- } catch (VerificationException e) {
- assertVerificationException(e,
- "[ERROR] yang-to-sources: Unable to parse yang files from ");
- assertVerificationException(
- e,
- "Caused by: org.apache.maven.plugin.MojoExecutionException: yang-to-sources: Unable to parse yang files from ");
- return;
- }
-
- fail("Verification exception should have been thrown");
- }
-
- @Test
- public void testCorrect() throws VerificationException {
- Verifier v = setUp("Correct/", false);
- verifyCorrectLog(v);
- }
-
- @Test
- public void testAdditionalConfiguration() throws VerificationException {
- Verifier v = setUp("AdditionalConfig/", false);
- v.verifyTextInLog("[DEBUG] yang-to-sources: Additional configuration picked up for : org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl: {nm1=abcd=a.b.c.d, nm2=abcd2=a.b.c.d.2}");
- v.verifyTextInLog("[DEBUG] yang-to-sources: Additional configuration picked up for : org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl: {c1=config}");
- v.verifyTextInLog(File.separator
- + "files marked as resources: META-INF/yang");
- v.verifyTextInLog("target"
- + File.separator
- + "generated-resources marked as resources for generator: org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl");
- }
-
- @Test
- public void testMissingYangInDep() throws VerificationException {
- try {
- setUp("MissingYangInDep/", false);
- } catch (VerificationException e) {
- assertVerificationException(
- e,
- "org.opendaylight.controller.yang.parser.util.YangValidationException: Not existing module imported:unknownDep:2013-02-27 by:private:2013-02-27");
- return;
- }
-
- fail("Verification exception should have been thrown");
- }
-
- static void verifyCorrectLog(Verifier v) throws VerificationException {
- v.verifyErrorFreeLog();
- v.verifyTextInLog("[INFO] yang-to-sources: YANG files parsed from");
- v.verifyTextInLog("[INFO] yang-to-sources: Code generator instantiated from org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl");
- v.verifyTextInLog("[INFO] yang-to-sources: Sources generated by org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl: null");
- }
-
- @Test
- public void testNoGenerators() throws VerificationException {
- Verifier v = setUp("NoGenerators/", false);
- v.verifyErrorFreeLog();
- v.verifyTextInLog("[WARNING] yang-to-sources: No code generators provided");
- }
-
- @Test
- public void testUnknownGenerator() throws VerificationException {
- Verifier v = setUp("UnknownGenerator/", true);
- v.verifyTextInLog("[ERROR] yang-to-sources: Unable to generate sources with unknown generator");
- v.verifyTextInLog("java.lang.ClassNotFoundException: unknown");
- v.verifyTextInLog("[INFO] yang-to-sources: Code generator instantiated from org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl");
- v.verifyTextInLog("[INFO] yang-to-sources: Sources generated by org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl: null");
- v.verifyTextInLog("[ERROR] yang-to-sources: One or more code generators failed, including failed list(generatorClass=exception) {unknown=java.lang.ClassNotFoundException}");
- }
-
- @Test
- public void testNoYangFiles() throws VerificationException {
- Verifier v = setUp("NoYangFiles/", false);
- v.verifyTextInLog("[INFO] yang-to-sources: YANG files parsed from []");
- v.verifyTextInLog("[INFO] yang-to-sources: Code generator instantiated from org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl");
- v.verifyTextInLog("[INFO] yang-to-sources: Sources generated by org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl: null");
- }
-
- static void assertVerificationException(VerificationException e,
- String string) {
- assertThat(e.getMessage(), containsString(string));
- }
-
- static Verifier setUp(String project, boolean ignoreF)
- throws VerificationException {
- final URL path = YangToSourcesPluginTestIT.class.getResource("/"
- + project + "pom.xml");
- File parent = new File(path.getPath());
- Verifier verifier = new Verifier(parent.getParent());
- if (ignoreF)
- verifier.addCliOption("-fn");
- verifier.setMavenDebug(true);
- verifier.executeGoal("generate-sources");
- return verifier;
- }
-
- @Test
- public void testNoOutputDir() throws VerificationException {
- Verifier v = YangToSourcesPluginTestIT.setUp("NoOutputDir/", false);
- verifyCorrectLog(v);
- }
-
- @Test
- public void testFindResourceOnCp() throws VerificationException {
- Verifier v1 = new Verifier(new File(getClass().getResource(
- "/GenerateTest1/pom.xml").getPath()).getParent());
- v1.executeGoal("clean");
- v1.executeGoal("package");
- v1.assertFilePresent("target/classes/META-INF/yang/testfile1.yang");
- v1.assertFilePresent("target/classes/META-INF/yang/testfile2.yang");
- v1.assertFilePresent("target/classes/META-INF/yang/testfile3.yang");
-
- Verifier v2 = YangToSourcesPluginTestIT.setUp("GenerateTest2/", false);
- v2.executeGoal("clean");
- v2.executeGoal("package");
- v2.assertFilePresent("target/classes/META-INF/yang/private.yang");
- v2.assertFileNotPresent("target/classes/META-INF/yang/testfile1.yang");
- v2.assertFileNotPresent("target/classes/META-INF/yang/testfile2.yang");
- v2.assertFileNotPresent("target/classes/META-INF/yang/testfile3.yang");
- }
-}
+++ /dev/null
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>org.opendaylight.controller</groupId>
- <version>0.5.4-SNAPSHOT</version>
- <artifactId>test</artifactId>
-
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>yang-maven-plugin-spi</artifactId>
- <version>0.5.4-SNAPSHOT</version>
- </dependency>
- </dependencies>
-
- <build>
- <plugins>
- <plugin>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>yang-maven-plugin</artifactId>
- <version>0.5.4-SNAPSHOT</version>
- <executions>
- <execution>
- <goals>
- <goal>generate-sources</goal>
- </goals>
- <configuration>
- <yangFilesRootDir>../files</yangFilesRootDir>
- <inspectDependencies>false</inspectDependencies>
- <codeGenerators>
- <generator>
- <codeGeneratorClass>
- org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
- </codeGeneratorClass>
- <additionalConfiguration>
- <nm1>abcd=a.b.c.d</nm1>
- <nm2>abcd2=a.b.c.d.2</nm2>
- </additionalConfiguration>
- <resourceBaseDir>/target/resourcesGenerated</resourceBaseDir>
- </generator>
- <generator>
- <codeGeneratorClass>
- org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
- </codeGeneratorClass>
- <additionalConfiguration>
- <c1>config</c1>
- </additionalConfiguration>
- </generator>
- </codeGenerators>
- </configuration>
- </execution>
- </executions>
-
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>yang-maven-plugin-spi</artifactId>
- <version>0.5.4-SNAPSHOT</version>
- <type>test-jar</type>
- </dependency>
- </dependencies>
- </plugin>
- </plugins>
- </build>
-</project>
+++ /dev/null
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
-
- <groupId>org.opendaylight.controller</groupId>
- <version>0.5.4-SNAPSHOT</version>