* This is to avoid continuous flooding
*/
if (Arrays.equals(sourceMAC, getControllerMAC())) {
- logger.debug(
+ if (logger.isDebugEnabled()) {
+ logger.debug(
"Receive the self originated packet (srcMAC {}) --> DROP",
HexEncode.bytesToHexString(sourceMAC));
+ }
return;
}
subnet = switchManager.getSubnetByNetworkAddress(sourceIP);
}
if (subnet == null) {
- logger.debug("can't find subnet matching {}, drop packet", sourceIP
- .toString());
+ logger.debug("can't find subnet matching {}, drop packet",sourceIP);
return;
}
- logger.debug("Found {} matching {}", subnet.toString(), sourceIP
- .toString());
+ logger.debug("Found {} matching {}", subnet, sourceIP);
/*
* Make sure that the host is a legitimate member of this subnet
*/
if (!subnet.hasNodeConnector(p)) {
logger.debug("{} showing up on {} does not belong to {}",
- new Object[] { sourceIP.toString(), p, subnet.toString() });
+ new Object[] { sourceIP, p, subnet });
return;
}
}
public void find(InetAddress networkAddress) {
- logger.debug("Received find IP {}", networkAddress.toString());
+ logger.debug("Received find IP {}", networkAddress);
Subnet subnet = null;
if (switchManager != null) {
subnet = switchManager.getSubnetByNetworkAddress(networkAddress);
}
if (subnet == null) {
- logger.debug("can't find subnet matching IP {}", networkAddress
- .toString());
+ logger.debug("can't find subnet matching IP {}", networkAddress);
return;
}
- logger.debug("found subnet {}", subnet.toString());
+ logger.debug("found subnet {}", subnet);
// send a broadcast ARP Request to this interface
sendBcastARPRequest(networkAddress, subnet);
}
if (subnet == null) {
logger.debug("can't find subnet matching {}", host
- .getNetworkAddress().toString());
+ .getNetworkAddress());
return;
}
sendUcastARPRequest(host, subnet);
subnet = switchManager.getSubnetByNetworkAddress(dIP);
}
if (subnet == null) {
- logger.debug("can't find subnet matching {}, drop packet", dIP
- .toString());
+ logger.debug("can't find subnet matching {}, drop packet", dIP);
return;
}
- logger.debug("Found {} matching {}", subnet.toString(), dIP.toString());
+ logger.debug("Found {} matching {}", subnet, dIP);
/*
* unknown destination host, initiate ARP request
*/
arphost.setHostIP(networkAddr);
arphost.setSent_count((short) 1);
ARPPendingList.add(arphost);
- logger.debug("Host Added to ARPPending List, IP: {}",
- networkAddr.toString());
+ logger.debug("Host Added to ARPPending List, IP: {}", networkAddr);
}
private void removePendingARPFromList(int index) {
*/
removePendingARPFromList(i);
logger.debug("Host Removed from ARPPending List, IP: {}",
- networkAddr.toString());
+ networkAddr);
return;
}
}
*/
failedARPReqList.remove(i);
logger.debug("Host Removed from FailedARPReqList List, IP: {}",
- networkAddr.toString());
+ networkAddr);
return;
}
}
for (String switchName : hierarchy) {
buf.append(switchName + "/");
}
- logger.debug("{} -> {}", getContainerName(), buf.toString());
+ logger.debug("{} -> {}", getContainerName(), buf);
num++;
}
}
* Use the services of arphandler to check if host is still
* there
*/
- logger.trace(
- "ARP Probing ({}) for {}({})",
- new Object[] {
- arp_cntdown,
- host.getNetworkAddress().getHostAddress(),
- HexEncode.bytesToHexString(host
- .getDataLayerAddressBytes()) });
+ if (logger.isTraceEnabled()) {
+ logger.trace(
+ "ARP Probing ({}) for {}({})",
+ new Object[] {
+ arp_cntdown,
+ host.getNetworkAddress().getHostAddress(),
+ HexEncode.bytesToHexString(host
+ .getDataLayerAddressBytes()) });
+ }
host.setArpSendCountDown(arp_cntdown);
hostFinder.probe(host);
}
switch (type) {
case REMOVED:
long sid = (Long) node.getID();
- logger.debug("Received removedSwitch for sw id {}",
- HexEncode.longToHexString(sid));
+ if (logger.isDebugEnabled()) {
+ logger.debug("Received removedSwitch for sw id {}",
+ HexEncode.longToHexString(sid));
+ }
for (Entry<InetAddress, HostNodeConnector> entry : hostsDB
.entrySet()) {
HostNodeConnector host = entry.getValue();
ISwitch existingSwitch = switches.get(sid);
if (existingSwitch != null) {
logger.info("Replacing existing {} with New {}",
- existingSwitch.toString(), sw.toString());
+ existingSwitch, sw);
disconnectSwitch(existingSwitch);
}
switches.put(sid, sw);
public void addMessageListener(OFType type, IMessageListener listener) {
IMessageListener currentListener = this.messageListeners.get(type);
if (currentListener != null) {
- logger.warn("{} is already listened by {}", type.toString(),
- currentListener.toString());
+ logger.warn("{} is already listened by {}", type,
+ currentListener);
}
this.messageListeners.put(type, listener);
- logger.debug("{} is now listened by {}", type.toString(),
- listener.toString());
+ logger.debug("{} is now listened by {}", type, listener);
}
@Override
public void removeMessageListener(OFType type, IMessageListener listener) {
IMessageListener currentListener = this.messageListeners.get(type);
if ((currentListener != null) && (currentListener == listener)) {
- logger.debug("{} listener {} is Removed", type.toString(),
- listener.toString());
+ logger.debug("{} listener {} is Removed", type, listener);
this.messageListeners.remove(type);
}
}
public void addSwitchStateListener(ISwitchStateListener listener) {
if (this.switchStateListener != null) {
logger.warn("Switch events are already listened by {}",
- this.switchStateListener.toString());
+ this.switchStateListener);
}
this.switchStateListener = listener;
- logger.debug("Switch events are now listened by {}",
- listener.toString());
+ logger.debug("Switch events are now listened by {}", listener);
}
@Override
public void removeSwitchStateListener(ISwitchStateListener listener) {
if ((this.switchStateListener != null)
&& (this.switchStateListener == listener)) {
- logger.debug("SwitchStateListener {} is Removed",
- listener.toString());
+ logger.debug("SwitchStateListener {} is Removed", listener);
this.switchStateListener = null;
}
}
if (((SwitchHandler) sw).isOperational()) {
Long sid = sw.getId();
if (this.switches.remove(sid, sw)) {
- logger.warn("{} is Disconnected", sw.toString());
+ logger.warn("{} is Disconnected", sw);
notifySwitchDeleted(sw);
}
}
this.clientSelectionKey = this.socket.register(this.selector,
SelectionKey.OP_WRITE, this);
}
- logger.trace("Message sent: {}", msg.toString());
+ logger.trace("Message sent: {}", msg);
}
}
import java.util.concurrent.atomic.AtomicLong;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
import org.apache.commons.lang3.builder.ReflectionToStringBuilder;
import org.openflow.protocol.OFMessage;
@Override
public int hashCode() {
- return HashCodeBuilder.reflectionHashCode(this);
+ final int prime = 31;
+ int result = 1;
+ result = prime * result + ((msg == null) ? 0 : msg.hashCode());
+ result = prime * result + priority;
+ result = prime * result + (int) (seqNum ^ (seqNum >>> 32));
+ result = prime * result + (syncReply ? 1231 : 1237);
+ return result;
}
@Override
public boolean equals(Object obj) {
- return EqualsBuilder.reflectionEquals(this, obj);
+ if (this == obj)
+ return true;
+ if (obj == null)
+ return false;
+ if (getClass() != obj.getClass())
+ return false;
+ PriorityMessage other = (PriorityMessage) obj;
+ if (msg == null) {
+ if (other.msg != null)
+ return false;
+ } else if (!msg.equals(other.msg))
+ return false;
+ if (priority != other.priority)
+ return false;
+ if (seqNum != other.seqNum)
+ return false;
+ if (syncReply != other.syncReply)
+ return false;
+ return true;
}
@Override
public String toString() {
- return "PriorityMessage[" + ReflectionToStringBuilder.toString(this)
- + "]";
+ return "PriorityMessage [msg=" + msg + ", priority=" + priority
+ + ", seqNum=" + seqNum + ", syncReply=" + syncReply + "]";
}
}
SelectionKey.OP_READ, this);
}
- logger.trace("Message sent: {}", msg.toString());
+ logger.trace("Message sent: {}", msg);
}
}
}
if (msgs == null) {
- logger.debug("{} is down", toString());
+ logger.debug("{} is down", this);
// the connection is down, inform core
reportSwitchStateChange(false);
return;
}
for (OFMessage msg : msgs) {
- logger.trace("Message received: {}", msg.toString());
+ logger.trace("Message received: {}", msg);
this.lastMsgReceivedTimeStamp = System.currentTimeMillis();
OFType type = msg.getType();
switch (type) {
// send a probe to see if the switch is still alive
logger.debug(
"Send idle probe (Echo Request) to {}",
- toString());
+ this);
probeSent = true;
OFMessage echo = factory
.getMessage(OFType.ECHO_REQUEST);
|| e instanceof InterruptedException
|| e instanceof SocketException || e instanceof IOException
|| e instanceof ClosedSelectorException) {
- logger.debug("Caught exception {}", e.getMessage());
+ if (logger.isDebugEnabled()) {
+ logger.debug("Caught exception {}", e.getMessage());
+ }
} else {
logger.warn("Caught exception ", e);
}
if (!transmitQ.isEmpty()) {
PriorityMessage pmsg = transmitQ.poll();
msgReadWriteService.asyncSend(pmsg.msg);
- logger.trace("Message sent: {}", pmsg.toString());
+ logger.trace("Message sent: {}", pmsg);
/*
* If syncReply is set to true, wait for the response
* back.
// if result is not null, this means the switch can't handle
// this message
// the result if OFError already
- logger.debug("Send {} failed --> {}", msg.getType().toString(),
- ((OFError) result).toString());
+ if (logger.isDebugEnabled()) {
+ logger.debug("Send {} failed --> {}", msg.getType(),
+ ((OFError) result));
+ }
}
return result;
} catch (Exception e) {
.get(GlobalConstants.DEFAULT.toString());
if (defaultOutService != null) {
defaultOutService.receiveDataPacket(dataPacket);
- logger.trace(
- "Dispatched to apps a frame of size: {} on container: {}: {}",
- new Object[] {
+ if (logger.isTraceEnabled()) {
+ logger.trace(
+ "Dispatched to apps a frame of size: {} on " +
+ "container: {}: {}", new Object[] {
ofPacket.getPacketData().length,
GlobalConstants.DEFAULT.toString(),
HexEncode.bytesToHexString(dataPacket
.getPacketData()) });
+ }
}
// Now check the mapping between nodeConnector and
// Container and later on optimally filter based on
if (s != null) {
// TODO add filtering on a per-flowSpec base
s.receiveDataPacket(dataPacket);
- logger.trace(
- "Dispatched to apps a frame of size: {} on container: {}: {}",
- new Object[] {
+ if (logger.isTraceEnabled()) {
+ logger.trace(
+ "Dispatched to apps a frame of size: {}" +
+ " on container: {}: {}", new Object[] {
ofPacket.getPacketData().length,
- GlobalConstants.DEFAULT.toString(),
- HexEncode
- .bytesToHexString(dataPacket
- .getPacketData()) });
-
+ container,
+ HexEncode.bytesToHexString(dataPacket
+ .getPacketData()) });
+ }
}
}
}
}
if (ethPkt.getPayload() instanceof LLDP) {
NodeConnector dst = inPkt.getIncomingNodeConnector();
- if (!processDiscoveryPacket(dst, ethPkt)) {
- /* Snoop the discovery pkt if not generated from us */
- snoopDiscoveryPacket(dst, ethPkt);
+ if (isEnabled(dst)) {
+ if (!processDiscoveryPacket(dst, ethPkt)) {
+ /* Snoop the discovery pkt if not generated from us */
+ snoopDiscoveryPacket(dst, ethPkt);
+ }
+ return PacketResult.CONSUME;
}
- return PacketResult.CONSUME;
}
return PacketResult.IGNORED;
}
descriptionListeners = new HashSet<IStatisticsListener>();
configStatsPollIntervals();
-
+
// Initialize managed timers
statisticsTimer = new Timer();
statisticsTimerTask = new TimerTask() {
ByteBuffer data = ByteBuffer.allocate(length);
stat.writeTo(data);
data.rewind();
- log.trace("getV6ReplyStatistics: Buffer BYTES ARE {}",
- HexString.toHexString(data.array()));
+ if (log.isTraceEnabled()) {
+ log.trace("getV6ReplyStatistics: Buffer BYTES ARE {}",
+ HexString.toHexString(data.array()));
+ }
int vendor = data.getInt(); // first 4 bytes is vendor id.
if (vendor != V6StatsRequest.NICIRA_VENDOR_ID) {
action.writeTo(data);
}
}
- logger.trace("{}", this.toString());
+ logger.trace("{}", this);
}
/**
data.put(ipv6ext_dstport_msg);
}
}
- logger.trace("{}", this.toString());
+ logger.trace("{}", this);
}
private void readInPort(ByteBuffer data, int nxmLen, boolean hasMask) {
try {
path = mtp.getMaxThroughputPath(src, dst);
} catch (IllegalArgumentException ie) {
- log.debug("A vertex is yet not known between {} {}",
- src.toString(), dst.toString());
+ log.debug("A vertex is yet not known between {} {}", src, dst);
return null;
}
Path res;
try {
res = new Path(path);
} catch (ConstructionException e) {
- log.debug("A vertex is yet not known between {} {}",
- src.toString(), dst.toString());
+ log.debug("A vertex is yet not known between {} {}", src, dst);
return null;
}
return res;
try {
path = spt.getPath(src, dst);
} catch (IllegalArgumentException ie) {
- log.debug("A vertex is yet not known between {} {}",
- src.toString(), dst.toString());
+ log.debug("A vertex is yet not known between {} {}", src, dst);
return null;
}
Path res;
try {
res = new Path(path);
} catch (ConstructionException e) {
- log.debug("A vertex is yet not known between {} {}",
- src.toString(), dst.toString());
+ log.debug("A vertex is yet not known between {} {}", src, dst);
return null;
}
return res;
if (props != null)
props.remove(bw);
- log.debug("edgeUpdate: {} bw: {}", e.toString(), bw.getValue());
+ if (log.isDebugEnabled()) {
+ log.debug("edgeUpdate: {} bw: {}", e, bw.getValue());
+ }
Short baseBW = Short.valueOf((short) 0);
boolean add = (type == UpdateType.ADDED) ? true : false;
int lldpOffset = bitOffset; // LLDP start
int lldpSize = size; // LLDP size
- logger.trace("LLDP: {} (offset {} bitsize {})", new Object[] {
- HexEncode.bytesToHexString(data), lldpOffset, lldpSize });
+ if (logger.isTraceEnabled()) {
+ logger.trace("LLDP: {} (offset {} bitsize {})", new Object[] {
+ HexEncode.bytesToHexString(data), lldpOffset, lldpSize });
+ }
/*
* Deserialize the TLVs until we reach the end of the packet
*/
throw new PacketException(e.getMessage());
}
- logger.trace("LLDP: serialized: {}",
- HexEncode.bytesToHexString(serializedBytes));
+ if (logger.isTraceEnabled()) {
+ logger.trace("LLDP: serialized: {}",
+ HexEncode.bytesToHexString(serializedBytes));
+ }
return serializedBytes;
}
* Store the raw read value, checks the payload type and set the
* payloadClass accordingly
*/
- logger.trace("{}: {}: {} (offset {} bitsize {})",
- new Object[] { this.getClass().getSimpleName(), hdrField,
- HexEncode.bytesToHexString(hdrFieldBytes),
- startOffset, numBits });
+ if (logger.isTraceEnabled()) {
+ logger.trace("{}: {}: {} (offset {} bitsize {})",
+ new Object[] { this.getClass().getSimpleName(), hdrField,
+ HexEncode.bytesToHexString(hdrFieldBytes),
+ startOffset, numBits });
+ }
this.setHeaderField(hdrField, hdrFieldBytes);
}
}
postSerializeCustomOperation(headerBytes);
- logger.trace("{}: {}", this.getClass().getSimpleName(),
- HexEncode.bytesToHexString(headerBytes));
+ if (logger.isTraceEnabled()) {
+ logger.trace("{}: {}", this.getClass().getSimpleName(),
+ HexEncode.bytesToHexString(headerBytes));
+ }
return headerBytes;
}
Edge e2 = new Edge(c2, c3);
Edge e3 = new Edge(c3, c4);
Edge e4 = new Edge(c4, c5);
- edges = new LinkedList(Arrays.asList(e0, e1, e2, e3, e4));
+ // actually need a LinkedList because we're going to .remove()
+ edges = new LinkedList<Edge>(Arrays.asList(e0, e1, e2, e3, e4));
} catch (ConstructionException e) {
// Exception is NOT expected if raised test will fail
Assert.assertTrue(false);
Edge e2 = new Edge(c2, c3);
Edge e3 = new Edge(c3, c4);
Edge e4 = new Edge(c4, c5);
- edges1 = new LinkedList(Arrays.asList(e0, e1, e2, e3, e4));
+ edges1 = Arrays.asList(e0, e1, e2, e3, e4);
} catch (ConstructionException e) {
// Exception is NOT expected if raised test will fail
Assert.assertTrue(false);
Edge e2 = new Edge(c2, c3);
Edge e3 = new Edge(c3, c4);
Edge e4 = new Edge(c4, c5);
- edges2 = new LinkedList(Arrays.asList(e0, e1, e2, e3, e4));
+ edges2 = Arrays.asList(e0, e1, e2, e3, e4);
} catch (ConstructionException e) {
// Exception is NOT expected if raised test will fail
Assert.assertTrue(false);
Edge e2 = new Edge(c2, c3);
Edge e3 = new Edge(c3, c4);
Edge e4 = new Edge(c4, c5);
- edges3 = new LinkedList(Arrays.asList(e0, e1, e2, e3, e4));
+ edges3 = Arrays.asList(e0, e1, e2, e3, e4);
} catch (ConstructionException e) {
// Exception is NOT expected if raised test will fail
Assert.assertTrue(false);
Edge e0 = new Edge(c0, c1);
- Path path = new Path(new LinkedList(Arrays.asList(e0)));
+ Path path = new Path(Arrays.asList(e0));
} catch (ConstructionException e) {
// Exception is NOT expected if raised test will fail
Assert.assertTrue(false);
Edge e2 = new Edge(c2, c3);
Edge e3 = new Edge(c3, c4);
Edge e4 = new Edge(c4, c5);
- List<Edge> edges = new LinkedList(Arrays.asList(e0, e1, e2, e3, e4));
+ List<Edge> edges = Arrays.asList(e0, e1, e2, e3, e4);
Path path = new Path(edges);
// Test start node
(short) 0x1), n1);
Edge e0 = new Edge(c0, c1);
- List<Edge> edges = new LinkedList(Arrays.asList(e0));
+ List<Edge> edges = Arrays.asList(e0);
Path path = new Path(edges);
// Test start node
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.model.parser.impl.YangParserImpl;
+import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
public class GeneratedTypesTest {
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.model.parser.impl.YangParserImpl;
+import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
public class GeneratorJavaFileTest {
private static final String FS = File.separator;
+++ /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 org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
-import org.junit.Test;
-
-public class CombineTest {
-
- @Test
- public void testCorrect() throws VerificationException {
- Verifier v = YangToSourcesPluginTest.setUp("Correct_combined/", false);
- YangToResourcesPluginTest.verifyCorrectLog(v);
- YangToSourcesPluginTest.verifyCorrectLog(v);
- }
-
-}
+++ /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 org.apache.maven.it.VerificationException;
-import org.apache.maven.it.Verifier;
-import org.junit.Test;
-
-public class YangToResourcesPluginTest {
-
- @Test
- public void testCorrect() throws VerificationException {
- Verifier v = YangToSourcesPluginTest.setUp("Correct_resources/", false);
- verifyCorrectLog(v);
- }
-
- static void verifyCorrectLog(Verifier v) throws VerificationException {
- v.verifyErrorFreeLog();
- v.verifyTextInLog("[INFO] yang-to-resources: Resource provider instantiated from org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl");
- v.verifyTextInLog("[INFO] yang-to-resources: Resource provider org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl call successful");
- }
-
- @Test
- public void testNoGenerators() throws VerificationException {
- Verifier v = YangToSourcesPluginTest.setUp("NoGenerators_resources/",
- false);
- v.verifyErrorFreeLog();
- v.verifyTextInLog("[WARNING] yang-to-resources: No resource provider classes provided");
- }
-
- @Test
- public void testUnknownGenerator() throws VerificationException {
- Verifier v = YangToSourcesPluginTest.setUp(
- "UnknownGenerator_resources/", true);
- v.verifyTextInLog("[ERROR] yang-to-resources: Unable to provide resources with unknown resource provider");
- v.verifyTextInLog("java.lang.ClassNotFoundException: unknown");
- v.verifyTextInLog("[INFO] yang-to-resources: Resource provider instantiated from org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl");
- v.verifyTextInLog("[INFO] yang-to-resources: Resource provider org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl call successful");
- v.verifyTextInLog("[ERROR] yang-to-resources: One or more code resource provider failed, including failed list(resourceProviderClass=exception) {unknown=java.lang.ClassNotFoundException}");
- }
-
-}
package org.opendaylight.controller.yang2sources.plugin.it;
import static org.junit.Assert.*;
-import static org.junit.matchers.JUnitMatchers.*;
+import static org.junit.matchers.JUnitMatchers.containsString;
import java.io.File;
public void testCorrect() throws VerificationException {
Verifier v = setUp("Correct/", false);
verifyCorrectLog(v);
+
}
static void verifyCorrectLog(Verifier v) throws VerificationException {
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");
+ v.verifyTextInLog("[INFO] yang-to-sources: Resource provider instantiated from org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl");
+ v.verifyTextInLog("[INFO] yang-to-sources: Resource provider org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl call successful");
}
@Test
+ project).getAbsolutePath());
if (ignoreF)
verifier.addCliOption("-fn");
- verifier.executeGoal("generate-resources");
+ verifier.executeGoal("generate-sources");
return verifier;
}
+ @Test
+ public void testNoGeneratorsResources() throws VerificationException {
+ Verifier v = YangToSourcesPluginTest.setUp("NoGenerators_resources/",
+ false);
+ v.verifyErrorFreeLog();
+ v.verifyTextInLog("[WARNING] yang-to-sources: No resource provider classes provided");
+ }
+
+ @Test
+ public void testUnknownGeneratorResources() throws VerificationException {
+ Verifier v = YangToSourcesPluginTest.setUp(
+ "UnknownGenerator_resources/", true);
+ v.verifyTextInLog("[ERROR] yang-to-sources: Unable to provide resources with unknown resource provider");
+ v.verifyTextInLog("java.lang.ClassNotFoundException: unknown");
+ v.verifyTextInLog("[INFO] yang-to-sources: Resource provider instantiated from org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl");
+ v.verifyTextInLog("[INFO] yang-to-sources: Resource provider org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl call successful");
+ v.verifyTextInLog("[ERROR] yang-to-sources: One or more code resource provider failed, including failed list(resourceProviderClass=exception) {unknown=java.lang.ClassNotFoundException}");
+ }
+
+ @Test
+ public void testNoOutputDir() throws VerificationException {
+ Verifier v = YangToSourcesPluginTest.setUp("NoOutputDir/",
+ false);
+ verifyCorrectLog(v);
+ }
+
}
<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-SNAPSHOT</version>
- </parent>
- <artifactId>test</artifactId>
+ 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-SNAPSHOT</version>
+ </parent>
+ <artifactId>test</artifactId>
- <build>
- <plugins>
- <plugin>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>yang-maven-plugin</artifactId>
- <version>0.5-SNAPSHOT</version>
- <executions>
- <execution>
- <goals>
- <goal>generate-sources</goal>
- </goals>
- <configuration>
- <yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
- <codeGenerators>
- <generator>
- <codeGeneratorClass>
- org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
- </codeGeneratorClass>
- <outputBaseDir>
- outDir/
- </outputBaseDir>
- </generator>
- </codeGenerators>
- </configuration>
- </execution>
- </executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>yang-maven-plugin-spi</artifactId>
+ <version>0.5-SNAPSHOT</version>
+ </dependency>
+ </dependencies>
- <dependencies>
- <dependency>
- <groupId>org.opendaylight.controller</groupId>
- <artifactId>yang-maven-plugin-spi</artifactId>
- <version>0.5-SNAPSHOT</version>
- <type>test-jar</type>
- </dependency>
- </dependencies>
- </plugin>
- </plugins>
- </build>
-</project>
\ No newline at end of file
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>yang-maven-plugin</artifactId>
+ <version>0.5-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate-sources</goal>
+ </goals>
+ <configuration>
+ <yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
+ <codeGenerators>
+ <generator>
+ <codeGeneratorClass>
+ org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ </codeGeneratorClass>
+ <outputBaseDir>
+ outDir/
+ </outputBaseDir>
+ </generator>
+ </codeGenerators>
+ <resourceProviders>
+ <provider>
+ <resourceProviderClass>
+ org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
+ </resourceProviderClass>
+ <outputBaseDir>
+ outDir/
+ </outputBaseDir>
+ </provider>
+ </resourceProviders>
+ </configuration>
+ </execution>
+ </executions>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>yang-maven-plugin-spi</artifactId>
+ <version>0.5-SNAPSHOT</version>
+ <type>test-jar</type>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+</project>
<executions>
<execution>
<goals>
- <goal>generate-resources</goal>
+ <goal>generate-sources</goal>
</goals>
<configuration>
<yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
<execution>
<goals>
<goal>generate-sources</goal>
- <goal>generate-resources</goal>
</goals>
<configuration>
<yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
</codeGeneratorClass>
<outputBaseDir>
- outDir/src
+ outDir/
</outputBaseDir>
</generator>
</codeGenerators>
org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
</resourceProviderClass>
<outputBaseDir>
- outDir/resources
+ outDir/
</outputBaseDir>
</provider>
</resourceProviders>
<yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
<codeGenerators>
</codeGenerators>
+ <resourceProviders>
+ <provider>
+ <resourceProviderClass>
+ org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
+ </resourceProviderClass>
+ <outputBaseDir>
+ outDir/
+ </outputBaseDir>
+ </provider>
+ </resourceProviders>
</configuration>
</execution>
</executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>yang-maven-plugin-spi</artifactId>
+ <version>0.5-SNAPSHOT</version>
+ <type>test-jar</type>
+ </dependency>
+ </dependencies>
</plugin>
</plugins>
</build>
<executions>
<execution>
<goals>
- <goal>generate-resources</goal>
+ <goal>generate-sources</goal>
</goals>
<configuration>
<yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
+ <codeGenerators>
+ <generator>
+ <codeGeneratorClass>
+ org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ </codeGeneratorClass>
+ <outputBaseDir>
+ outDir/
+ </outputBaseDir>
+ </generator>
+ </codeGenerators>
<resourceProviders>
</resourceProviders>
</configuration>
</execution>
</executions>
+ <dependencies>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>yang-maven-plugin-spi</artifactId>
+ <version>0.5-SNAPSHOT</version>
+ <type>test-jar</type>
+ </dependency>
+ </dependencies>
</plugin>
</plugins>
</build>
--- /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>binding-generator</artifactId>
+ <groupId>org.opendaylight.controller</groupId>
+ <version>0.5-SNAPSHOT</version>
+ </parent>
+ <artifactId>test</artifactId>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>yang-maven-plugin</artifactId>
+ <version>0.5-SNAPSHOT</version>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate-sources</goal>
+ </goals>
+ <configuration>
+ <yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
+ <codeGenerators>
+ <generator>
+ <codeGeneratorClass>
+ org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ </codeGeneratorClass>
+ </generator>
+ </codeGenerators>
+ <resourceProviders>
+ <provider>
+ <resourceProviderClass>
+ org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
+ </resourceProviderClass>
+ </provider>
+ </resourceProviders>
+ </configuration>
+ </execution>
+ </executions>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.opendaylight.controller</groupId>
+ <artifactId>yang-maven-plugin-spi</artifactId>
+ <version>0.5-SNAPSHOT</version>
+ <type>test-jar</type>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+</project>
\ No newline at end of file
</outputBaseDir>
</generator>
</codeGenerators>
+ <resourceProviders>
+ <provider>
+ <resourceProviderClass>
+ org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
+ </resourceProviderClass>
+ <outputBaseDir>
+ outDir/
+ </outputBaseDir>
+ </provider>
+ </resourceProviders>
</configuration>
</execution>
</executions>
</outputBaseDir>
</generator>
</codeGenerators>
+ <resourceProviders>
+ <provider>
+ <resourceProviderClass>
+ org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
+ </resourceProviderClass>
+ <outputBaseDir>
+ outDir/
+ </outputBaseDir>
+ </provider>
+ </resourceProviders>
</configuration>
</execution>
</executions>
<executions>
<execution>
<goals>
- <goal>generate-resources</goal>
+ <goal>generate-sources</goal>
</goals>
<configuration>
<yangFilesRootDir>${basedir}/../../../../../yang-model-parser-impl/src/test/resources/model</yangFilesRootDir>
+ <codeGenerators>
+ <generator>
+ <codeGeneratorClass>
+ org.opendaylight.controller.yang2sources.spi.CodeGeneratorTestImpl
+ </codeGeneratorClass>
+ <outputBaseDir>
+ outDir/
+ </outputBaseDir>
+ </generator>
+ </codeGenerators>
<resourceProviders>
<provider>
<resourceProviderClass>
</outputBaseDir>
</generator>
</codeGenerators>
+ <resourceProviders>
+ <provider>
+ <resourceProviderClass>
+ org.opendaylight.controller.yang2sources.spi.ResourceProviderTestImpl
+ </resourceProviderClass>
+ <outputBaseDir>
+ outDir/
+ </outputBaseDir>
+ </provider>
+ </resourceProviders>
</configuration>
</execution>
</executions>
<version>3.2</version>
<scope>provided</scope>
</dependency>
+ <dependency>
+ <groupId>org.apache.maven</groupId>
+ <artifactId>maven-artifact</artifactId>
+ <version>2.0</version>
+ </dependency>
<dependency>
<groupId>${project.groupId}</groupId>
public ResourceProviderArg() {
}
+ public ResourceProviderArg(String resourceProviderClass) {
+ this(resourceProviderClass, new File("outDir/"));
+ }
+
public ResourceProviderArg(String resourceProviderClass,
File outputBaseDir) {
super(outputBaseDir);
Preconditions
.checkNotNull(resourceProviderClass,
"resourceProviderClass for ResourceProvider cannot be null");
- Preconditions.checkNotNull(outputBaseDir,
- "outputBaseDir for ResourceProvider cannot be null, "
- + resourceProviderClass);
}
public String getResourceProviderClass() {
public CodeGeneratorArg() {
}
+ public CodeGeneratorArg(String codeGeneratorClass) {
+ this(codeGeneratorClass, new File("outDir/"));
+ }
+
public CodeGeneratorArg(String codeGeneratorClass, File outputBaseDir) {
super(outputBaseDir);
this.codeGeneratorClass = codeGeneratorClass;
public void check() {
Preconditions.checkNotNull(codeGeneratorClass,
"codeGeneratorClass for CodeGenerator cannot be null");
- Preconditions.checkNotNull(outputBaseDir,
- "outputBaseDir for CodeGenerator cannot be null, "
- + codeGeneratorClass);
}
public String getCodeGeneratorClass() {
package org.opendaylight.controller.yang2sources.plugin;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
import java.util.Collection;
+import java.util.Enumeration;
+import java.util.List;
import java.util.Map;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipException;
+import java.util.zip.ZipFile;
import org.apache.commons.io.FileUtils;
+import org.apache.maven.artifact.DependencyResolutionRequiredException;
+import org.apache.maven.project.MavenProject;
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
+import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
final class Util {
-
static final String YANG_SUFFIX = "yang";
// Cache for listed directories and found yang files. Typically yang files
* List files recursively and return as array of String paths. Use cache of
* size 1.
*/
- static Collection<File> listFiles(String rootDir) {
-
+ static Collection<File> listFiles(String rootDir) throws FileNotFoundException {
if (cache.get(rootDir) != null)
return cache.get(rootDir);
+ File file = new File(rootDir);
+ if(!file.exists()) {
+ throw new FileNotFoundException();
+ }
+
Collection<File> yangFiles = FileUtils.listFiles(new File(rootDir),
new String[] { YANG_SUFFIX }, true);
return yangFiles;
}
- static String[] listFilesAsArrayOfPaths(String rootDir) {
+ static Collection<InputStream> listFilesAsStream(String rootDir) throws FileNotFoundException {
+ Collection<InputStream> is = new ArrayList<InputStream>();
+
+ Collection<File> files = listFiles(rootDir);
+ for(File f : files) {
+ is.add(new FileInputStream(f));
+ }
+
+ return is;
+ }
+
+ static String[] listFilesAsArrayOfPaths(String rootDir) throws FileNotFoundException {
String[] filesArray = new String[] {};
Collection<File> yangFiles = listFiles(rootDir);
String innerMessage = String.format(message, args);
return String.format("%s %s", logPrefix, innerMessage);
}
+
+ public static List<File> getClassPath(MavenProject project)
+ throws DependencyResolutionRequiredException {
+ List<File> dependencies = Lists.newArrayList();
+ try {
+ for (Object element : project.getCompileClasspathElements()) {
+ File asFile = new File((String) element);
+ if (isJar(asFile)) {
+ dependencies.add(asFile);
+ }
+ }
+ } catch (DependencyResolutionRequiredException e) {
+ throw e;
+ }
+ return dependencies;
+ }
+
+ private static final String JAR_SUFFIX = ".jar";
+
+ private static boolean isJar(File element) {
+ return (element.isFile() && element.getName().endsWith(JAR_SUFFIX)) ? true
+ : false;
+ }
+
+ public static Collection<File> getFilesFromClasspath(
+ List<File> jarsOnClasspath, List<String> classPathFilter)
+ throws ZipException, IOException {
+ List<File> yangs = Lists.newArrayList();
+
+ for (File file : jarsOnClasspath) {
+ ZipFile zip = new ZipFile(file);
+ Enumeration<? extends ZipEntry> entries = zip.entries();
+ while (entries.hasMoreElements()) {
+ ZipEntry entry = entries.nextElement();
+ if (entry.getName().endsWith(YANG_SUFFIX)) {
+ InputStream stream = zip.getInputStream(entry);
+ }
+ }
+ }
+
+ return yangs;
+ }
+
+ public static boolean acceptedFilter(String name, List<String> filter) {
+ for(String f : filter) {
+ if(name.endsWith(f)) {
+ return true;
+ }
+ }
+ return false;
+ }
+
}
+++ /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;
-
-import java.io.File;
-import java.util.Collection;
-import java.util.Map;
-
-import org.apache.maven.plugin.AbstractMojo;
-import org.apache.maven.plugin.MojoExecutionException;
-import org.apache.maven.plugin.MojoFailureException;
-import org.apache.maven.plugins.annotations.LifecyclePhase;
-import org.apache.maven.plugins.annotations.Mojo;
-import org.apache.maven.plugins.annotations.Parameter;
-import org.opendaylight.controller.yang2sources.plugin.ConfigArg.ResourceProviderArg;
-import org.opendaylight.controller.yang2sources.spi.ResourceGenerator;
-
-import com.google.common.annotations.VisibleForTesting;
-import com.google.common.collect.Maps;
-
-/**
- * Generate resources from yang files using user provided set of
- * {@link ResourceGenerator}s. Can be used to copy yang files that served as
- * blueprint for code generation into resources directory. Steps of this
- * process:
- * <ol>
- * <li>List yang files from {@link #yangFilesRootDir} (If this goal is in the
- * same execution as generate-sources, the same cached list will be used and the
- * root folder will not be searched for yang files twice)</li>
- * <li>For each {@link ResourceGenerator} from {@link #resourceProviders}:</li>
- * <ol>
- * <li>Instantiate using default constructor</li>
- * <li>Call {@link ResourceGenerator#generateResourceFiles(Collection, File)}</li>
- * </ol>
- * </ol>
- */
-@Mojo(name = "generate-resources", defaultPhase = LifecyclePhase.GENERATE_RESOURCES)
-public final class YangToResourcesMojo extends AbstractMojo {
-
- private static final String LOG_PREFIX = "yang-to-resources:";
-
- /**
- * Classes implementing {@link ResourceGenerator} interface. An instance
- * will be created out of every class using default constructor. Method
- * {@link ResourceGenerator#generateResourceFiles(Collection, File)} will be
- * called on every instance.
- */
- @Parameter(required = true)
- private ResourceProviderArg[] resourceProviders;
-
- /**
- * Source directory that will be recursively searched for yang files (ending
- * with .yang suffix).
- */
- @Parameter(required = true)
- private String yangFilesRootDir;
-
- @VisibleForTesting
- YangToResourcesMojo(ResourceProviderArg[] resourceProviderArgs,
- String yangFilesRootDir) {
- super();
- this.resourceProviders = resourceProviderArgs;
- this.yangFilesRootDir = yangFilesRootDir;
- }
-
- public YangToResourcesMojo() {
- super();
- }
-
- @Override
- public void execute() throws MojoExecutionException, MojoFailureException {
-
- if (resourceProviders.length == 0) {
- getLog().warn(
- Util.message("No resource provider classes provided",
- LOG_PREFIX));
- return;
- }
-
- Map<String, String> thrown = Maps.newHashMap();
- Collection<File> yangFiles = Util.listFiles(yangFilesRootDir);
-
- for (ResourceProviderArg resourceProvider : resourceProviders) {
- try {
-
- provideResourcesWithOneProvider(yangFiles, resourceProvider);
-
- } catch (Exception e) {
- // try other generators, exception will be thrown after
- getLog().error(
- Util.message(
- "Unable to provide resources with %s resource provider",
- LOG_PREFIX,
- resourceProvider.getResourceProviderClass()), e);
- thrown.put(resourceProvider.getResourceProviderClass(), e
- .getClass().getCanonicalName());
- }
- }
-
- if (!thrown.isEmpty()) {
- String message = Util
- .message(
- "One or more code resource provider failed, including failed list(resourceProviderClass=exception) %s",
- LOG_PREFIX, thrown.toString());
- getLog().error(message);
- throw new MojoFailureException(message);
- }
- }
-
- /**
- * Instantiate provider from class and call required method
- */
- private void provideResourcesWithOneProvider(Collection<File> yangFiles,
- ResourceProviderArg resourceProvider)
- throws ClassNotFoundException, InstantiationException,
- IllegalAccessException {
-
- resourceProvider.check();
-
- ResourceGenerator g = Util.getInstance(
- resourceProvider.getResourceProviderClass(),
- ResourceGenerator.class);
- getLog().info(
- Util.message("Resource provider instantiated from %s",
- LOG_PREFIX, resourceProvider.getResourceProviderClass()));
-
- g.generateResourceFiles(yangFiles, resourceProvider.getOutputBaseDir());
- getLog().info(
- Util.message("Resource provider %s call successful",
- LOG_PREFIX, resourceProvider.getResourceProviderClass()));
- }
-}
*/
package org.opendaylight.controller.yang2sources.plugin;
+import java.io.Closeable;
import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileNotFoundException;
+import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.Collection;
+import java.util.Enumeration;
+import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipFile;
+import org.apache.commons.io.IOUtils;
+import org.apache.maven.model.Resource;
import org.apache.maven.plugin.AbstractMojo;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
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.model.parser.impl.YangParserImpl;
+import org.opendaylight.controller.yang.parser.impl.YangParserImpl;
import org.opendaylight.controller.yang2sources.plugin.ConfigArg.CodeGeneratorArg;
+import org.opendaylight.controller.yang2sources.plugin.ConfigArg.ResourceProviderArg;
import org.opendaylight.controller.yang2sources.spi.CodeGenerator;
+import org.opendaylight.controller.yang2sources.spi.ResourceGenerator;
import com.google.common.annotations.VisibleForTesting;
+import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
/**
*/
@Mojo(name = "generate-sources", defaultPhase = LifecyclePhase.GENERATE_SOURCES, requiresDependencyResolution = ResolutionScope.COMPILE, requiresProject = true)
public final class YangToSourcesMojo extends AbstractMojo {
-
private static final String LOG_PREFIX = "yang-to-sources:";
+ private static final String INPUT_RESOURCE_DIR = "META-INF/yangs/";
+ private static final String OUTPUT_RESOURCE_DIR = "/target/external-resources/";
/**
* Classes implementing {@link CodeGenerator} interface. An instance will be
@Parameter(required = true)
private String yangFilesRootDir;
+ /**
+ * Classes implementing {@link ResourceGenerator} interface. An instance
+ * will be created out of every class using default constructor. Method
+ * {@link ResourceGenerator#generateResourceFiles(Collection, File)} will be
+ * called on every instance.
+ */
+ @Parameter(required = true)
+ private ResourceProviderArg[] resourceProviders;
+
@Parameter(property = "project", required = true, readonly = true)
protected MavenProject project;
private transient final YangModelParser parser;
@VisibleForTesting
- YangToSourcesMojo(CodeGeneratorArg[] codeGeneratorArgs,
- YangModelParser parser, String yangFilesRootDir) {
+ YangToSourcesMojo(ResourceProviderArg[] resourceProviderArgs,
+ CodeGeneratorArg[] codeGeneratorArgs, YangModelParser parser,
+ String yangFilesRootDir) {
super();
+ this.resourceProviders = resourceProviderArgs;
this.codeGenerators = codeGeneratorArgs;
this.yangFilesRootDir = yangFilesRootDir;
this.parser = parser;
public void execute() throws MojoExecutionException, MojoFailureException {
SchemaContext context = processYang();
generateSources(context);
+ generateResources();
+
+ closeResources();
}
/**
*/
private SchemaContext processYang() throws MojoExecutionException {
try {
- Collection<File> yangFiles = Util.listFiles(yangFilesRootDir);
+ Collection<InputStream> yangFiles = Util
+ .listFilesAsStream(yangFilesRootDir);
+ yangFiles.addAll(getFilesFromDependenciesAsStream());
if (yangFiles.isEmpty()) {
getLog().warn(
}
Set<Module> parsedYang = parser
- .parseYangModels(new ArrayList<File>(yangFiles));
+ .parseYangModelsFromStreams(new ArrayList<InputStream>(
+ yangFiles));
SchemaContext resolveSchemaContext = parser
.resolveSchemaContext(parsedYang);
getLog().info(
}
}
+ private void generateResources() throws MojoExecutionException,
+ MojoFailureException {
+ if (resourceProviders.length == 0) {
+ getLog().warn(
+ Util.message("No resource provider classes provided",
+ LOG_PREFIX));
+ return;
+ }
+
+ Resource res = new Resource();
+ String baseDirName = project.getBasedir().getAbsolutePath();
+ res.setDirectory(baseDirName + OUTPUT_RESOURCE_DIR);
+ res.setTargetPath(INPUT_RESOURCE_DIR);
+ project.addResource(res);
+
+ Map<String, String> thrown = Maps.newHashMap();
+
+ Collection<File> yangFiles = new ArrayList<File>();
+
+ // load files from yang root
+ yangFiles.addAll(getFilesFromYangRoot());
+
+ // load files from dependencies
+ yangFiles.addAll(getFilesFromDependencies());
+
+
+ for (ResourceProviderArg resourceProvider : resourceProviders) {
+ try {
+ provideResourcesWithOneProvider(yangFiles, resourceProvider);
+ } catch (Exception e) {
+ // try other generators, exception will be thrown after
+ getLog().error(
+ Util.message(
+ "Unable to provide resources with %s resource provider",
+ LOG_PREFIX,
+ resourceProvider.getResourceProviderClass()), e);
+ thrown.put(resourceProvider.getResourceProviderClass(), e
+ .getClass().getCanonicalName());
+ }
+ }
+
+ if (!thrown.isEmpty()) {
+ String message = Util
+ .message(
+ "One or more code resource provider failed, including failed list(resourceProviderClass=exception) %s",
+ LOG_PREFIX, thrown.toString());
+ getLog().error(message);
+ throw new MojoFailureException(message);
+ }
+ }
+
+ private Collection<File> getFilesFromYangRoot() {
+ Collection<File> yangFilesLoaded = null;
+
+ File rootDir = new File(yangFilesRootDir);
+ try {
+ if(!rootDir.isAbsolute()) {
+ yangFilesLoaded = Util.listFiles(project.getBasedir().getAbsolutePath() + yangFilesRootDir);
+ } else {
+ yangFilesLoaded = Util.listFiles(yangFilesRootDir);
+ }
+
+ } catch(FileNotFoundException e) {
+ getLog().warn("Directory '" + yangFilesRootDir + "' does not exists.");
+ yangFilesLoaded = new ArrayList<File>();
+ }
+ Collection<File> yangFiles = new ArrayList<File>(yangFilesLoaded);
+
+ try {
+ for(File yangFile : yangFilesLoaded) {
+ InputStream is = new FileInputStream(yangFile);
+ yangFiles.add(createFileFromStream(is, project.getBasedir().getAbsolutePath() + OUTPUT_RESOURCE_DIR + yangFile.getName()));
+ resources.add(is);
+ }
+ } catch(IOException e) {
+ getLog().warn("Exception while loading yang files.", e);
+ }
+ return yangFiles;
+ }
+
+ private Collection<File> getFilesFromDependencies() {
+ Collection<File> yangFiles = new ArrayList<File>();
+
+ try {
+ List<File> filesOnCp = Util.getClassPath(project);
+ List<String> filter = Lists.newArrayList(".yang");
+ for (File file : filesOnCp) {
+ ZipFile zip = new ZipFile(file);
+ Enumeration<? extends ZipEntry> entries = zip.entries();
+
+ while (entries.hasMoreElements()) {
+ ZipEntry entry = entries.nextElement();
+ String entryName = entry.getName();
+ if (entryName.startsWith(INPUT_RESOURCE_DIR)) {
+ if (entry.isDirectory()) {
+ continue;
+ }
+ if (!Util.acceptedFilter(entryName, filter)) {
+ continue;
+ }
+ InputStream entryStream = zip.getInputStream(entry);
+ String newEntryName = entryName.substring(INPUT_RESOURCE_DIR.length());
+ File f = createFileFromStream(entryStream, project.getBasedir().getAbsolutePath() + OUTPUT_RESOURCE_DIR + newEntryName);
+ yangFiles.add(f);
+
+ resources.add(entryStream);
+ }
+ }
+
+ resources.add(zip);
+ }
+ } catch (Exception e) {
+ getLog().warn("Exception while loading external yang files.", e);
+ }
+ return yangFiles;
+ }
+
+ private File createFileFromStream(InputStream is, String absoluteName) throws IOException {
+ File f = new File(absoluteName);
+ if(!f.exists()) {
+ f.getParentFile().mkdirs();
+ }
+ f.createNewFile();
+
+ FileOutputStream fos = new FileOutputStream(f);
+ IOUtils.copy(is, fos);
+ return f;
+ }
+
+ /**
+ * Instantiate provider from class and call required method
+ */
+ private void provideResourcesWithOneProvider(Collection<File> yangFiles,
+ ResourceProviderArg resourceProvider)
+ throws ClassNotFoundException, InstantiationException,
+ IllegalAccessException {
+
+ resourceProvider.check();
+
+ ResourceGenerator g = Util.getInstance(
+ resourceProvider.getResourceProviderClass(),
+ ResourceGenerator.class);
+ getLog().info(
+ Util.message("Resource provider instantiated from %s",
+ LOG_PREFIX, resourceProvider.getResourceProviderClass()));
+
+ g.generateResourceFiles(yangFiles, resourceProvider.getOutputBaseDir());
+ getLog().info(
+ Util.message("Resource provider %s call successful",
+ LOG_PREFIX, resourceProvider.getResourceProviderClass()));
+ }
+
/**
* Call generate on every generator from plugin configuration
*/
}
Map<String, String> thrown = Maps.newHashMap();
-
for (CodeGeneratorArg codeGenerator : codeGenerators) {
try {
-
generateSourcesWithOneGenerator(context, codeGenerator);
-
} catch (Exception e) {
// try other generators, exception will be thrown after
getLog().error(
codeGeneratorCfg.getCodeGeneratorClass(), generated));
}
+ /**
+ * Collection of resources which should be closed after use.
+ */
+ private final List<Closeable> resources = new ArrayList<Closeable>();
+
+ /**
+ * Search for yang files in dependent projects.
+ *
+ * @return files found as List of InputStream
+ */
+ private List<InputStream> getFilesFromDependenciesAsStream() {
+ final List<InputStream> yangsFromDependencies = new ArrayList<InputStream>();
+ try {
+ List<File> filesOnCp = Util.getClassPath(project);
+
+ List<String> filter = Lists.newArrayList(".yang");
+ for (File file : filesOnCp) {
+ ZipFile zip = new ZipFile(file);
+ Enumeration<? extends ZipEntry> entries = zip.entries();
+ while (entries.hasMoreElements()) {
+ ZipEntry entry = entries.nextElement();
+ String entryName = entry.getName();
+
+ if(entryName.startsWith(INPUT_RESOURCE_DIR)) {
+ if(entry.isDirectory()) {
+ continue;
+ }
+ if (!Util.acceptedFilter(entryName, filter)) {
+ continue;
+ }
+
+ InputStream entryStream = zip.getInputStream(entry);
+ yangsFromDependencies.add(entryStream);
+ resources.add(entryStream);
+ }
+
+ }
+ resources.add(zip);
+ }
+ } catch (Exception e) {
+ getLog().warn("Exception while searching yangs in dependencies", e);
+ }
+ return yangsFromDependencies;
+ }
+
+ /**
+ * Internal utility method for closing open resources.
+ */
+ private void closeResources() {
+ for (Closeable resource : resources) {
+ try {
+ resource.close();
+ } catch (IOException e) {
+ getLog().warn("Failed to close resources: "+ resource, e);
+ }
+ }
+ }
+
}
+++ /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;
-
-import static org.hamcrest.core.Is.*;
-import static org.junit.Assert.*;
-
-import java.io.File;
-import java.util.Collection;
-
-import org.junit.Before;
-import org.junit.Test;
-import org.opendaylight.controller.yang2sources.plugin.ConfigArg.ResourceProviderArg;
-import org.opendaylight.controller.yang2sources.spi.ResourceGenerator;
-
-public class GenerateResourcesTest {
-
- private String yang;
- private YangToResourcesMojo mojo;
- private File outDir;
-
- @Before
- public void setUp() {
- yang = new File(getClass().getResource("/mock.yang").getFile())
- .getParent();
- outDir = new File("outputDir");
- mojo = new YangToResourcesMojo(
- new ResourceProviderArg[] {
- new ResourceProviderArg(ProviderMock.class.getName(),
- outDir),
- new ResourceProviderArg(ProviderMock2.class.getName(),
- outDir) }, yang);
- }
-
- @Test
- public void test() throws Exception {
- mojo.execute();
- assertThat(ProviderMock.called, is(1));
- assertThat(ProviderMock2.called, is(1));
- assertThat(ProviderMock2.baseDir, is(outDir));
- assertThat(ProviderMock.baseDir, is(outDir));
- }
-
- public static class ProviderMock implements ResourceGenerator {
-
- private static int called = 0;
- private static File baseDir;
-
- @Override
- public void generateResourceFiles(Collection<File> resources,
- File outputDir) {
- called++;
- baseDir = outputDir;
- }
- }
-
- public static class ProviderMock2 implements ResourceGenerator {
-
- private static int called = 0;
- private static File baseDir;
-
- @Override
- public void generateResourceFiles(Collection<File> resources,
- File outputDir) {
- called++;
- baseDir = outputDir;
- }
- }
-
-}
*/
package org.opendaylight.controller.yang2sources.plugin;
-import static org.hamcrest.core.Is.*;
-import static org.junit.Assert.*;
-import static org.mockito.Matchers.*;
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertThat;
+import static org.mockito.Matchers.anyListOf;
import static org.mockito.Mockito.*;
import java.io.File;
import java.util.Collection;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
import org.opendaylight.controller.yang.model.api.SchemaContext;
import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
import org.opendaylight.controller.yang2sources.plugin.ConfigArg.CodeGeneratorArg;
+import org.opendaylight.controller.yang2sources.plugin.ConfigArg.ResourceProviderArg;
import org.opendaylight.controller.yang2sources.spi.CodeGenerator;
+import org.opendaylight.controller.yang2sources.spi.ResourceGenerator;
import com.google.common.collect.Lists;
+@Ignore
public class GenerateSourcesTest {
@Mock
.getParent();
outDir = new File("outputDir");
mojo = new YangToSourcesMojo(
+ new ResourceProviderArg[] {
+ new ResourceProviderArg(ProviderMock.class.getName(),
+ outDir),
+ new ResourceProviderArg(ProviderMock2.class.getName(),
+ outDir) },
new CodeGeneratorArg[] { new CodeGeneratorArg(
GeneratorMock.class.getName(), outDir) }, parser, yang);
}
assertThat(GeneratorMock.outputDir, is(outDir));
}
+ @Test
+ public void testRes() throws Exception {
+ mojo.execute();
+ assertThat(ProviderMock.called, is(1));
+ assertThat(ProviderMock2.called, is(1));
+ assertThat(ProviderMock2.baseDir, is(outDir));
+ assertThat(ProviderMock.baseDir, is(outDir));
+ }
+
public static class GeneratorMock implements CodeGenerator {
private static int called = 0;
return Lists.newArrayList();
}
}
+
+ public static class ProviderMock implements ResourceGenerator {
+
+ private static int called = 0;
+ private static File baseDir;
+
+ @Override
+ public void generateResourceFiles(Collection<File> resources,
+ File outputDir) {
+ called++;
+ baseDir = outputDir;
+ }
+ }
+
+ public static class ProviderMock2 implements ResourceGenerator {
+
+ private static int called = 0;
+ private static File baseDir;
+
+ @Override
+ public void generateResourceFiles(Collection<File> resources,
+ File outputDir) {
+ called++;
+ baseDir = outputDir;
+ }
+ }
}
*/
package org.opendaylight.controller.yang2sources.plugin;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertTrue;
import java.io.File;
+import java.io.FileNotFoundException;
import java.util.Collection;
import org.junit.Test;
public class UtilTest {
@Test
- public void testCache() {
+ public void testCache() throws FileNotFoundException {
String yang = new File(getClass().getResource("/mock.yang").getFile())
.getParent();
Collection<File> files = Util.listFiles(yang);
* 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.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
import java.util.HashSet;
import java.util.Set;
* 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.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
import org.opendaylight.controller.yang.model.api.TypeDefinition;
* 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.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
import java.util.Set;
* 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.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
/**
* Interface for builders of those nodes, which can be augmentation targets.
* 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.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
/**
* Parent interface for all builder interfaces.
* 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.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
import java.util.Set;
import org.opendaylight.controller.yang.common.QName;
+import org.opendaylight.controller.yang.model.api.SchemaPath;
/**
* Interface for all yang data-node containers [augment, case, container,
Set<DataSchemaNodeBuilder> getChildNodes();
+ SchemaPath getPath();
+
}
* 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.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
import org.opendaylight.controller.yang.model.api.DataSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ConstraintsBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ConstraintsBuilder;
/**
* Interface for all yang data-schema nodes [anyxml, case, container, grouping,
* 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.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
import org.opendaylight.controller.yang.model.api.GroupingDefinition;
* terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
* and is available at http://www.eclipse.org/legal/epl-v10.html\r
*/\r
-package org.opendaylight.controller.yang.model.parser.builder.api;\r
+package org.opendaylight.controller.yang.parser.builder.api;\r
\r
import org.opendaylight.controller.yang.common.QName;\r
import org.opendaylight.controller.yang.model.api.SchemaNode;\r
import org.opendaylight.controller.yang.model.api.SchemaPath;\r
import org.opendaylight.controller.yang.model.api.Status;\r
-import org.opendaylight.controller.yang.model.parser.builder.impl.UnknownSchemaNodeBuilder;\r
+import org.opendaylight.controller.yang.parser.builder.impl.UnknownSchemaNodeBuilder;\r
\r
/**\r
* Interface for all builders of SchemaNode nodes.\r
* 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.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
import org.opendaylight.controller.yang.model.api.TypeDefinition;
* 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.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
/**
* Builders of all nodes, which can have 'typedef' statement must implement this interface.
* terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
* and is available at http://www.eclipse.org/legal/epl-v10.html\r
*/\r
-package org.opendaylight.controller.yang.model.parser.builder.api;\r
+package org.opendaylight.controller.yang.parser.builder.api;\r
\r
import java.util.List;\r
\r
import org.opendaylight.controller.yang.model.api.type.LengthConstraint;\r
import org.opendaylight.controller.yang.model.api.type.PatternConstraint;\r
import org.opendaylight.controller.yang.model.api.type.RangeConstraint;\r
-import org.opendaylight.controller.yang.model.parser.builder.impl.UnknownSchemaNodeBuilder;\r
+import org.opendaylight.controller.yang.parser.builder.impl.UnknownSchemaNodeBuilder;\r
\r
/**\r
* Interface for builders of 'typedef' statement.\r
* 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.yang.model.parser.builder.api;
+package org.opendaylight.controller.yang.parser.builder.api;
import java.util.List;
import org.opendaylight.controller.yang.model.api.SchemaPath;
import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.util.RefineHolder;
+import org.opendaylight.controller.yang.parser.util.RefineHolder;
/**
* Interface for builders of 'uses' statement.
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.SchemaPath;
import org.opendaylight.controller.yang.model.api.Status;
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
public class AnyXmlBuilder implements DataSchemaNodeBuilder {
private final int line;
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.Collections;
import java.util.HashMap;
import org.opendaylight.controller.yang.model.api.Status;
import org.opendaylight.controller.yang.model.api.TypeDefinition;
import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.util.YangModelBuilderUtil;
import org.opendaylight.controller.yang.model.util.RevisionAwareXPathImpl;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.util.YangModelBuilderUtil;
public class AugmentationSchemaBuilderImpl implements AugmentationSchemaBuilder {
private final AugmentationSchemaImpl instance;
return null;
}
+ /**
+ * Always returns null.
+ */
+ @Override
+ public SchemaPath getPath() {
+ return null;
+ }
+
@Override
public AugmentationSchema build() {
instance.setTargetPath(finalAugmentTarget);
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.SchemaPath;
import org.opendaylight.controller.yang.model.api.Status;
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationTargetBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.ChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationTargetBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.ChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
public class ChoiceBuilder implements DataSchemaNodeBuilder, ChildNodeBuilder,
AugmentationTargetBuilder {
-package org.opendaylight.controller.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.TypeDefinition;
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
public final class ChoiceCaseBuilder extends AbstractChildNodeBuilder implements
DataSchemaNodeBuilder {
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.Collections;
import java.util.HashSet;
import org.opendaylight.controller.yang.model.api.DataSchemaNode;
import org.opendaylight.controller.yang.model.api.MustDefinition;
import org.opendaylight.controller.yang.model.api.RevisionAwareXPath;
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;
import org.opendaylight.controller.yang.model.util.RevisionAwareXPathImpl;
+import org.opendaylight.controller.yang.parser.builder.api.Builder;
public class ConstraintsBuilder implements Builder {
private final ConstraintDefinitionImpl instance;
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.TypeDefinition;
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationTargetBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationTargetBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
public class ContainerSchemaNodeBuilder extends AbstractChildNodeBuilder
implements TypeDefinitionAwareBuilder, AugmentationTargetBuilder,
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import org.opendaylight.controller.yang.model.api.Deviation;
import org.opendaylight.controller.yang.model.api.Deviation.Deviate;
import org.opendaylight.controller.yang.model.api.SchemaPath;
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;
-import org.opendaylight.controller.yang.model.parser.util.YangModelBuilderUtil;
+import org.opendaylight.controller.yang.parser.builder.api.Builder;
+import org.opendaylight.controller.yang.parser.util.YangModelBuilderUtil;
public class DeviationBuilder implements Builder {
private final DeviationImpl instance;
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.SchemaPath;
import org.opendaylight.controller.yang.model.api.Status;
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
public class ExtensionBuilder implements SchemaNodeBuilder {
private final ExtensionDefinitionImpl instance;
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.SchemaPath;
import org.opendaylight.controller.yang.model.api.Status;
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
public class FeatureBuilder implements SchemaNodeBuilder {
private final FeatureDefinitionImpl instance;
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.TypeDefinition;
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
public class GroupingBuilderImpl implements GroupingBuilder {
private final GroupingDefinitionImpl instance;
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.SchemaPath;
import org.opendaylight.controller.yang.model.api.Status;
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
public final class IdentitySchemaNodeBuilder implements SchemaNodeBuilder {
private final IdentitySchemaNodeImpl instance;
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.Collections;
import java.util.List;
import org.opendaylight.controller.yang.model.api.type.LengthConstraint;
import org.opendaylight.controller.yang.model.api.type.PatternConstraint;
import org.opendaylight.controller.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractTypeAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
import org.opendaylight.controller.yang.model.util.IdentityrefType;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.Builder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
/**
* Builder for YANG union type. User can add type to this union as
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.Status;
import org.opendaylight.controller.yang.model.api.TypeDefinition;
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractTypeAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
public class LeafListSchemaNodeBuilder extends AbstractTypeAwareBuilder
implements SchemaNodeBuilder, DataSchemaNodeBuilder {
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.Status;
import org.opendaylight.controller.yang.model.api.TypeDefinition;
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractTypeAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
public class LeafSchemaNodeBuilder extends AbstractTypeAwareBuilder implements
DataSchemaNodeBuilder, SchemaNodeBuilder {
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.TypeDefinition;
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationTargetBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationTargetBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
public class ListSchemaNodeBuilder extends AbstractChildNodeBuilder implements
DataSchemaNodeBuilder, SchemaNodeBuilder, AugmentationTargetBuilder,
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.net.URI;
import java.util.ArrayList;
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.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;
-import org.opendaylight.controller.yang.model.parser.builder.api.ChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.util.RefineHolder;
-import org.opendaylight.controller.yang.model.parser.util.YangParseException;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.Builder;
+import org.opendaylight.controller.yang.parser.builder.api.ChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.util.RefineHolder;
+import org.opendaylight.controller.yang.parser.util.YangParseException;
/**
* This builder builds Module object. If this module is dependent on external
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.TypeDefinition;
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
import org.opendaylight.controller.yang.model.api.UsesNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
public class NotificationBuilder extends AbstractChildNodeBuilder implements
TypeDefinitionAwareBuilder, SchemaNodeBuilder {
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.Status;
import org.opendaylight.controller.yang.model.api.TypeDefinition;
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
public class RpcDefinitionBuilder implements SchemaNodeBuilder,
TypeDefinitionAwareBuilder {
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.type.LengthConstraint;
import org.opendaylight.controller.yang.model.api.type.PatternConstraint;
import org.opendaylight.controller.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractTypeAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.util.YangParseException;
import org.opendaylight.controller.yang.model.util.ExtendedType;
import org.opendaylight.controller.yang.model.util.UnknownType;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.util.YangParseException;
public class TypedefBuilder extends AbstractTypeAwareBuilder implements
TypeDefinitionBuilder {
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.net.URI;
import java.util.ArrayList;
import org.opendaylight.controller.yang.model.api.type.LengthConstraint;
import org.opendaylight.controller.yang.model.api.type.PatternConstraint;
import org.opendaylight.controller.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.parser.builder.api.AbstractTypeAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
import org.opendaylight.controller.yang.model.util.UnionType;
+import org.opendaylight.controller.yang.parser.builder.api.AbstractTypeAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.Builder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
/**
* Builder for YANG union type. User can add type to this union as
* 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.yang.model.parser.builder.impl;
+package org.opendaylight.controller.yang.parser.builder.impl;
import java.util.ArrayList;
import java.util.Collections;
import org.opendaylight.controller.yang.model.api.SchemaPath;
import org.opendaylight.controller.yang.model.api.Status;
import org.opendaylight.controller.yang.model.api.UnknownSchemaNode;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
public class UnknownSchemaNodeBuilder implements SchemaNodeBuilder {
private final UnknownSchemaNodeImpl instance;
* terms of the Eclipse Public License v1.0 which accompanies this distribution,\r
* and is available at http://www.eclipse.org/legal/epl-v10.html\r
*/\r
-package org.opendaylight.controller.yang.model.parser.builder.impl;\r
+package org.opendaylight.controller.yang.parser.builder.impl;\r
\r
import java.util.ArrayList;\r
import java.util.Collections;\r
import org.opendaylight.controller.yang.model.api.SchemaNode;\r
import org.opendaylight.controller.yang.model.api.SchemaPath;\r
import org.opendaylight.controller.yang.model.api.UsesNode;\r
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;\r
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;\r
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;\r
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;\r
-import org.opendaylight.controller.yang.model.parser.util.RefineHolder;\r
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;\r
+import org.opendaylight.controller.yang.parser.builder.api.Builder;\r
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;\r
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;\r
+import org.opendaylight.controller.yang.parser.util.RefineHolder;\r
\r
final class UsesNodeBuilderImpl implements UsesNodeBuilder, Builder {\r
private final UsesNodeImpl instance;\r
* 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.yang.model.parser.impl;
+package org.opendaylight.controller.yang.parser.impl;
import java.io.File;
import java.io.FileInputStream;
import org.opendaylight.controller.yang.model.api.type.RangeConstraint;
import org.opendaylight.controller.yang.model.api.type.StringTypeDefinition;
import org.opendaylight.controller.yang.model.parser.api.YangModelParser;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationTargetBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;
-import org.opendaylight.controller.yang.model.parser.builder.api.ChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeAwareBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.AnyXmlBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ChoiceBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ContainerSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.IdentitySchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.IdentityrefTypeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.LeafListSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.LeafSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ListSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ModuleBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.TypedefBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.UnionTypeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.UnknownSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.util.ModuleDependencySort;
-import org.opendaylight.controller.yang.model.parser.util.ModuleDependencySort.ModuleSimple;
-import org.opendaylight.controller.yang.model.parser.util.ParserUtils;
-import org.opendaylight.controller.yang.model.parser.util.RefineHolder;
-import org.opendaylight.controller.yang.model.parser.util.TypeConstraints;
-import org.opendaylight.controller.yang.model.parser.util.YangParseException;
import org.opendaylight.controller.yang.model.util.ExtendedType;
import org.opendaylight.controller.yang.model.util.IdentityrefType;
import org.opendaylight.controller.yang.model.util.UnknownType;
-import org.opendaylight.controller.yang.model.validator.YangModelBasicValidator;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationTargetBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.Builder;
+import org.opendaylight.controller.yang.parser.builder.api.ChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeAwareBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.AnyXmlBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ChoiceBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ContainerSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.IdentitySchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.IdentityrefTypeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.LeafListSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.LeafSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ListSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ModuleBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.TypedefBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.UnionTypeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.UnknownSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.util.ModuleDependencySort;
+import org.opendaylight.controller.yang.parser.util.ModuleDependencySort.ModuleSimple;
+import org.opendaylight.controller.yang.parser.util.ParserUtils;
+import org.opendaylight.controller.yang.parser.util.RefineHolder;
+import org.opendaylight.controller.yang.parser.util.TypeConstraints;
+import org.opendaylight.controller.yang.parser.util.YangParseException;
+import org.opendaylight.controller.yang.validator.YangModelBasicValidator;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
* 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.yang.model.parser.impl;
+package org.opendaylight.controller.yang.parser.impl;
-import static org.opendaylight.controller.yang.model.parser.util.YangModelBuilderUtil.*;
+import static org.opendaylight.controller.yang.parser.util.YangModelBuilderUtil.*;
import java.net.URI;
import java.text.DateFormat;
import org.opendaylight.controller.yang.model.api.SchemaPath;
import org.opendaylight.controller.yang.model.api.Status;
import org.opendaylight.controller.yang.model.api.TypeDefinition;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.AnyXmlBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ChoiceBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ChoiceCaseBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ContainerSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.DeviationBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ExtensionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.FeatureBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.IdentitySchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.LeafListSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.LeafSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ListSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ModuleBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.NotificationBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.RpcDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.TypedefBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.UnknownSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.util.RefineHolder;
import org.opendaylight.controller.yang.model.util.YangTypesConverter;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.AnyXmlBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ChoiceBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ChoiceCaseBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ContainerSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.DeviationBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ExtensionBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.FeatureBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.IdentitySchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.LeafListSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.LeafSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ListSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ModuleBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.NotificationBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.RpcDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.TypedefBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.UnknownSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.util.RefineHolder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
* 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.yang.model.parser.impl;
+package org.opendaylight.controller.yang.parser.impl;
/**
* Unchecked exception thrown if yang definition is not valid according to
* 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.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
import java.util.Collections;
import java.util.List;
* 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.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
import java.util.Date;
import java.util.List;
import java.util.Set;
import org.opendaylight.controller.yang.model.api.ModuleImport;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ModuleBuilder;
-import org.opendaylight.controller.yang.model.parser.impl.YangParserListenerImpl;
-import org.opendaylight.controller.yang.model.parser.util.TopologicalSort.Node;
-import org.opendaylight.controller.yang.model.parser.util.TopologicalSort.NodeImpl;
+import org.opendaylight.controller.yang.parser.builder.impl.ModuleBuilder;
+import org.opendaylight.controller.yang.parser.impl.YangParserListenerImpl;
+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;
* 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.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
import org.opendaylight.controller.yang.model.api.MustDefinition;
import org.opendaylight.controller.yang.model.api.RevisionAwareXPath;
* 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.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
import java.util.ArrayList;
import java.util.List;
import org.opendaylight.controller.yang.model.api.MustDefinition;
import org.opendaylight.controller.yang.model.api.SchemaPath;
import org.opendaylight.controller.yang.model.api.TypeDefinition;
-import org.opendaylight.controller.yang.model.parser.builder.api.AugmentationSchemaBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.ChildNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.DataSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.GroupingBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.TypeDefinitionBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.api.UsesNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.AnyXmlBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ChoiceBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ChoiceCaseBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ConstraintsBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ContainerSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.LeafListSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.LeafSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ListSchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ModuleBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.UnknownSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.AugmentationSchemaBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.ChildNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.DataSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.GroupingBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.TypeDefinitionBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.UsesNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.AnyXmlBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ChoiceBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ChoiceCaseBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ConstraintsBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ContainerSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.LeafListSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.LeafSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ListSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ModuleBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.UnknownSchemaNodeBuilder;
public final class ParserUtils {
final ChildNodeBuilder target) {
for (DataSchemaNodeBuilder builder : augment.getChildNodes()) {
builder.setAugmenting(true);
+ correctPath(augment, target.getPath());
target.addChildNode(builder);
}
}
+ private static void correctPath(final ChildNodeBuilder node,
+ final SchemaPath parentSchemaPath) {
+ for(DataSchemaNodeBuilder builder : node.getChildNodes()) {
+
+ // add correct path
+ SchemaPath targetNodeSchemaPath = parentSchemaPath;
+ List<QName> targetNodePath = new ArrayList<QName>(targetNodeSchemaPath.getPath());
+ targetNodePath.add(builder.getQName());
+ builder.setPath(new SchemaPath(targetNodePath, true));
+
+ if(builder instanceof ChildNodeBuilder) {
+ ChildNodeBuilder cnb = (ChildNodeBuilder)builder;
+ correctPath(cnb, builder.getPath());
+ }
+ }
+ }
+
public static LeafSchemaNodeBuilder copyLeafBuilder(
final LeafSchemaNodeBuilder old) {
final LeafSchemaNodeBuilder copy = new LeafSchemaNodeBuilder(
* 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.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
import java.util.ArrayList;
import java.util.List;
import org.opendaylight.controller.yang.model.api.MustDefinition;
-import org.opendaylight.controller.yang.model.parser.builder.api.Builder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.UnknownSchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.api.Builder;
+import org.opendaylight.controller.yang.parser.builder.impl.UnknownSchemaNodeBuilder;
public final class RefineHolder implements Builder {
private final String name;
* 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.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
import java.util.List;
import java.util.Set;
* 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.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
import java.util.ArrayList;
import java.util.Collections;
* 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.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
/**
* Marker object representing special 'min' or 'max' values in YANG.
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/eplv10.html
*/
-package org.opendaylight.controller.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
import java.net.URI;
import java.util.ArrayList;
import org.opendaylight.controller.yang.model.api.type.LengthConstraint;
import org.opendaylight.controller.yang.model.api.type.PatternConstraint;
import org.opendaylight.controller.yang.model.api.type.RangeConstraint;
-import org.opendaylight.controller.yang.model.parser.builder.api.SchemaNodeBuilder;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ConstraintsBuilder;
import org.opendaylight.controller.yang.model.util.BaseConstraints;
import org.opendaylight.controller.yang.model.util.BinaryType;
import org.opendaylight.controller.yang.model.util.BitsType;
import org.opendaylight.controller.yang.model.util.Uint64;
import org.opendaylight.controller.yang.model.util.Uint8;
import org.opendaylight.controller.yang.model.util.UnknownType;
+import org.opendaylight.controller.yang.parser.builder.api.SchemaNodeBuilder;
+import org.opendaylight.controller.yang.parser.builder.impl.ConstraintsBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/eplv10.html
*/
-package org.opendaylight.controller.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
public class YangParseException extends RuntimeException {
* 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.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
/**
* Unchecked exception thrown if yang definition is not valid according to
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/eplv10.html
*/
-package org.opendaylight.controller.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
import java.text.DateFormat;
import java.text.ParseException;
import org.antlr.v4.runtime.ParserRuleContext;
import org.antlr.v4.runtime.tree.ParseTree;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Yang_version_stmtContext;
-import org.opendaylight.controller.yang.model.parser.impl.YangParserListenerImpl;
-import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
+import org.opendaylight.controller.yang.parser.impl.YangParserListenerImpl;
+import org.opendaylight.controller.yang.parser.util.YangValidationException;
import com.google.common.collect.Sets;
* terms of the Eclipse Public License v1.0 which accompanies this distribution,
* and is available at http://www.eclipse.org/legal/eplv10.html
*/
-package org.opendaylight.controller.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
import java.util.Arrays;
import java.util.Collection;
import org.antlr.v4.runtime.tree.ParseTree;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Module_stmtContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Submodule_stmtContext;
-import org.opendaylight.controller.yang.model.parser.util.YangModelBuilderUtil;
-import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
+import org.opendaylight.controller.yang.parser.util.YangModelBuilderUtil;
+import org.opendaylight.controller.yang.parser.util.YangValidationException;
/**
* Validation utilities
* 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.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
import java.net.URI;
import java.net.URISyntaxException;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Uses_stmtContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Yin_element_argContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParserBaseListener;
-import org.opendaylight.controller.yang.model.parser.impl.YangParserListenerImpl;
+import org.opendaylight.controller.yang.parser.impl.YangParserListenerImpl;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
* 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.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
import java.util.List;
import org.antlr.v4.runtime.tree.ParseTree;
import org.antlr.v4.runtime.tree.ParseTreeWalker;
-import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
+import org.opendaylight.controller.yang.parser.util.YangValidationException;
/**
* Exposed basic yang validation.
* 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.yang.model.parser.impl;
+package org.opendaylight.controller.yang.parser.impl;
import java.io.File;
import java.net.URI;
* 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.yang.model.parser.impl;
+package org.opendaylight.controller.yang.parser.impl;
import static org.junit.Assert.*;
* 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.yang.model.parser.impl;
+package org.opendaylight.controller.yang.parser.impl;
import static org.junit.Assert.*;
* 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.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
import static org.hamcrest.core.AnyOf.anyOf;
import static org.hamcrest.core.Is.is;
import org.hamcrest.Matcher;
import org.junit.Test;
import org.opendaylight.controller.yang.model.api.ModuleImport;
-import org.opendaylight.controller.yang.model.parser.builder.impl.ModuleBuilder;
-import org.opendaylight.controller.yang.model.parser.impl.YangParserListenerImpl;
-import org.opendaylight.controller.yang.model.parser.util.ModuleDependencySort.ModuleNodeImpl;
-import org.opendaylight.controller.yang.model.parser.util.ModuleDependencySort.ModuleSimple;
-import org.opendaylight.controller.yang.model.parser.util.TopologicalSort.Edge;
+import org.opendaylight.controller.yang.parser.builder.impl.ModuleBuilder;
+import org.opendaylight.controller.yang.parser.impl.YangParserListenerImpl;
+import org.opendaylight.controller.yang.parser.util.ModuleDependencySort.ModuleNodeImpl;
+import org.opendaylight.controller.yang.parser.util.ModuleDependencySort.ModuleSimple;
+import org.opendaylight.controller.yang.parser.util.TopologicalSort.Edge;
import com.google.common.collect.Sets;
* 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.yang.model.parser.util;
+package org.opendaylight.controller.yang.parser.util;
-import static org.hamcrest.core.Is.*;
-import static org.junit.Assert.*;
+import static org.hamcrest.core.Is.is;
+import static org.junit.Assert.assertThat;
import java.util.List;
import java.util.Set;
import org.junit.Test;
-import org.opendaylight.controller.yang.model.parser.util.TopologicalSort.Node;
-import org.opendaylight.controller.yang.model.parser.util.TopologicalSort.NodeImpl;
+import org.opendaylight.controller.yang.parser.util.TopologicalSort.Node;
+import org.opendaylight.controller.yang.parser.util.TopologicalSort.NodeImpl;
import com.google.common.collect.Sets;
* 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.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
-import static org.junit.Assert.*;
-import static org.junit.matchers.JUnitMatchers.*;
+import static org.junit.Assert.assertThat;
+import static org.junit.matchers.JUnitMatchers.containsString;
import org.junit.Before;
import org.junit.Test;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Ordered_by_argContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Type_stmtContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Unique_stmtContext;
-import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
+import org.opendaylight.controller.yang.parser.util.YangValidationException;
public class YangModelValidationListTest {
* 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.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
-import static org.junit.Assert.*;
-import static org.junit.matchers.JUnitMatchers.*;
+import static org.junit.Assert.assertThat;
+import static org.junit.matchers.JUnitMatchers.containsString;
import static org.mockito.Mockito.*;
import org.junit.Before;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Revision_stmtContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Revision_stmtsContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Yang_version_stmtContext;
-import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
+import org.opendaylight.controller.yang.parser.util.YangValidationException;
public class YangModelValidationModuleTest {
* 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.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
-import static org.junit.Assert.*;
-import static org.junit.matchers.JUnitMatchers.*;
-import static org.mockito.Mockito.*;
+import static org.junit.Assert.assertThat;
+import static org.junit.matchers.JUnitMatchers.containsString;
+import static org.mockito.Mockito.mock;
import org.antlr.v4.runtime.tree.ParseTree;
import org.junit.Before;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Belongs_to_stmtContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Submodule_header_stmtsContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Submodule_stmtContext;
-import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
+import org.opendaylight.controller.yang.parser.util.YangValidationException;
public class YangModelValidationSubModuleTest {
* 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.yang.model.validator;
+package org.opendaylight.controller.yang.validator;
import static org.hamcrest.core.Is.is;
import static org.junit.Assert.*;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Revision_date_stmtContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.Status_argContext;
import org.opendaylight.controller.antlrv4.code.gen.YangParser.StringContext;
-import org.opendaylight.controller.yang.model.parser.impl.YangParserListenerImpl;
-import org.opendaylight.controller.yang.model.parser.util.YangValidationException;
+import org.opendaylight.controller.yang.parser.impl.YangParserListenerImpl;
+import org.opendaylight.controller.yang.parser.util.YangValidationException;
import com.google.common.collect.Sets;
//short tag = container.getTag((Long)nextNode.getNodeID());
short tag = 0;
if (tag != 0) {
- log.debug("adding SET_VLAN " + tag
- + " for traffic leaving " + currNode + "/"
- + outPort + "toward switch " + nextNode);
+ log.debug("adding SET_VLAN {} for traffic " +
+ "leaving {}/{} toward switch {}",
+ new Object[] { tag, currNode, outPort,
+ nextNode});
actions.add(new SetVlanId(tag));
} else {
- log.debug("No tag assigned to switch " + nextNode);
+ log.debug("No tag assigned to switch {}", nextNode);
}
}
}
//short tag = container.getTag((Long)currNode.getNodeID());
short tag = 0;
if (tag != 0) {
- log.debug("adding MATCH VLAN " + tag
- + " for traffic entering " + currNode + "/"
- + inPort);
+ log.debug("adding MATCH VLAN {} for traffic entering" +
+ " {}/{}",
+ new Object[] {tag, currNode, inPort});
match.setField(MatchType.DL_VLAN, tag);
} else {
- log.debug("No tag assigned to switch " + currNode);
+ log.debug("No tag assigned to switch {}", currNode);
}
}
}
pos.put(inPort, po);
this.rulesDB.put(key, pos);
if (!inPort.getType().equals(NodeConnectorIDType.ALL)) {
- log.debug("Adding Match(inPort=" + inPort + ",DIP="
- + host.getNetworkAddress().getHostAddress()
- + ") Action(outPort=" + outPort + ") to node "
- + currNode);
+ log.debug("Adding Match(inPort = {} , DIP = {})" +
+ " Action(outPort= {}) to node {}",
+ new Object[] { inPort,
+ host.getNetworkAddress().getHostAddress(),
+ outPort, currNode});
if ((removed_po != null)
&& (!po.getFlow().getMatch().equals(
removed_po.getFlow().getMatch()))) {
}
} else {
- log.debug("Adding policy Match(DIP="
- + host.getNetworkAddress().getHostAddress()
- + ") Action(outPort=" + outPort + ") to node "
- + currNode);
+ log.debug("Adding policyMatch(DIP = {}) Action(outPort= {}) " +
+ "to node {}", new Object[] {
+ host.getNetworkAddress().getHostAddress(), outPort,
+ currNode});
}
}
}
if ((res == null) || ((links = res.getEdges()) == null)) {
// Still the path that connect node to rootNode
// doesn't exists
- log.debug("NO Route/Path between SW[" + node + "] --> SW["
- + rootNode + "] cleaning potentially existing entries");
+ log.debug("NO Route/Path between SW[{}] --> SW[{}] cleaning " +
+ "potentially existing entries", node, rootNode);
key = new HostNodePair(host, node);
pos = this.rulesDB.get(key);
if (pos != null) {
continue;
}
- log.debug("Route between SW[" + node + "] --> SW[" + rootNode
- + "]");
+ log.debug("Route between SW[{}] --> SW[{}]", node, rootNode);
Integer curr;
Node currNode = node;
key = new HostNodePair(host, currNode);
if ((res == null) || ((links = res.getEdges()) == null)) {
// Still the path that connect node to rootNode
// doesn't exists
- log.debug("NO Route/Path between SW[" + node + "] --> SW["
- + rootNode + "] cleaning potentially existing entries");
+ log.debug("NO Route/Path between SW[{}] --> SW[{}] cleaning " +
+ "potentially existing entries", node, rootNode);
key = new HostNodePair(host, node);
pos = this.rulesDB.get(key);
if (pos != null) {
return null;
}
- log.debug("Route between SW[" + node + "] --> SW[" + rootNode + "]");
+ log.debug("Route between SW[{}] --> SW[{}]", node, rootNode);
Integer curr;
Node currNode = node;
key = new HostNodePair(host, currNode);
continue;
}
- log.debug("Link [" + currNode + "/" + link.getHeadNodeConnector()
- + "] --> ["
- + link.getHeadNodeConnector().getNode() + "/"
- + link.getTailNodeConnector() + "]");
+ log.debug("Link [{}/{}] --> [{}/{}]", new Object[] {
+ currNode, link.getHeadNodeConnector(),
+ link.getHeadNodeConnector().getNode(),
+ link.getTailNodeConnector()});
// Index all the switches to be programmed
switchesToProgram.add(currNode);
+ po.toString() + " on switch " + swId);
}
} else {
- log.error("Cannot find a policy for SW:{" + swId
- + "} Host: {" + host + "}");
+ log.error("Cannot find a policy for SW:({}) Host: ({})",
+ swId, host);
/* // Now dump every single rule */
/* for (HostNodePair dumpkey : this.rulesDB.keySet()) { */
/* po = this.rulesDB.get(dumpkey); */
for (HostNodePair key : this.rulesDB.keySet()) {
Node node = key.getNode();
if (targetNode == null || node.equals(targetNode)) {
- log.debug("Work on " + node + " host " + key.getHost());
+ log.debug("Work on {} host {}", node, key.getHost());
pos = this.rulesDB.get(key);
for (Map.Entry<NodeConnector, FlowEntry> e : pos.entrySet()) {
po = e.getValue();
this.frm.uninstallFlowEntry(po);
}
}
- log.debug("Remove " + key);
+ log.debug("Remove {}", key);
this.rulesDB.remove(key);
}
}
}
pl.add(po);
log.debug("Adding Pruned Policy for SwId: {}", swId);
- log.debug("Old Policy: " + po.toString());
- log.debug("New Policy: " + new_po.toString());
+ log.debug("Old Policy: {}", po);
+ log.debug("New Policy: {}", new_po);
}
private void pruneExcessRules(Set<Node> switches) {
switch (type) {
case REMOVED:
- log.debug("Node " + node + " gone, doing a cleanup");
+ log.debug("Node {} gone, doing a cleanup", node);
uninstallPerNodeRules(node);
break;
default:
ci.println("Please enter node id");
return;
}
- Long id = Long.decode(st);
- Node node = NodeCreator.createOFNode(id);
+ Node node = Node.fromString(st);
+ if (node == null) {
+ ci.println("Please enter node id");
+ return;
+ }
+
Set<NodeConnector> nodeConnectorSet = getUpNodeConnectors(node);
if (nodeConnectorSet == null) {
return;
ci.println("Please enter node id");
return;
}
- Long id = Long.decode(st);
+
+ Node node = Node.fromString(st);
+ if (node == null) {
+ ci.println("Please enter node id");
+ return;
+ }
ci.println(" NodeConnector BandWidth(Gbps) Admin State");
- Node node = NodeCreator.createOFNode(id);
Set<NodeConnector> nodeConnectorSet = getNodeConnectors(node);
if (nodeConnectorSet == null) {
return;
ci.println("Please enter node id");
return;
}
- Object id = Long.decode(st);
- Switch sw = getSwitchByNode(NodeCreator.createOFNode((Long) id));
+
+ Node node = Node.fromString(st);
+ if (node == null) {
+ ci.println("Please enter node id");
+ return;
+ }
+
+ Switch sw = getSwitchByNode(node);
ci.println(" NodeConnector Name");
if (sw == null) {
nodeConnectorName = (propMap == null) ? null : ((Name) propMap
.get(Name.NamePropName)).getValue();
if (nodeConnectorName != null) {
- Node node = nodeConnector.getNode();
- if (!node.equals(getNode((Long) id))) {
- log.debug("node not match {} {}", node,
- getNode((Long) id));
+ Node nd = nodeConnector.getNode();
+ if (!nd.equals(node)) {
+ log.debug("node not match {} {}", nd, node);
}
Map<String, NodeConnector> map = nodeConnectorNames
.get(node);
ci.println("Please enter node id");
return;
}
- Long id = Long.decode(st);
- Node node = NodeCreator.createOFNode(id);
+ Node node = Node.fromString(st);
+ if (node == null) {
+ ci.println("Please enter node id");
+ return;
+ }
st = ci.nextArgument();
if (st == null) {
<c:set var="title" value="OpenDaylight login error" scope="application"/>
<%
- if (session != null) session.invalidate();
String filePath = "/WEB-INF/jsp/customerror.jsp";
URL fileURL = pageContext.getServletContext().getResource(filePath);
if(fileURL!=null) {
</div>
</div>
</form>
+ <% if (session != null) session.invalidate(); %>
</body>
</html>
<c:set var="title" value="OpenDaylight login error" scope="application"/>
<%
- if (session != null) session.invalidate();
String filePath = "/WEB-INF/jsp/customerror.jsp";
URL fileURL = pageContext.getServletContext().getResource(filePath);
if(fileURL!=null) {
</div>
</div>
</form>
+ <% if (session != null) session.invalidate(); %>
</body>
</html>
<c:set var="title" value="OpenDaylight login error" scope="application"/>
<%
- if (session != null) session.invalidate();
String filePath = "/WEB-INF/jsp/customerror.jsp";
URL fileURL = pageContext.getServletContext().getResource(filePath);
if(fileURL!=null) {
</div>
</div>
</form>
+ <% if (session != null) session.invalidate(); %>
</body>
</html>
Map<String, String> data = (Map<String, String>) nodeEntry.get("data");
data.put("$desc", description);
nodeEntry.put("data", data);
+ // clear adjacencies since this is now a single node
+ nodeEntry.put("adjacencies", new LinkedList<Map<String, Object>>());
stagedNodes.put(node.id(), nodeEntry);
} else {
newNodes.put(node.id(), node.out());
<c:set var="title" value="OpenDaylight login error" scope="application"/>
<%
- if (session != null) session.invalidate();
String filePath = "/WEB-INF/jsp/customerror.jsp";
URL fileURL = pageContext.getServletContext().getResource(filePath);
if(fileURL!=null) {
</div>
</div>
</form>
+ <% if (session != null) session.invalidate(); %>
</body>
</html>
<c:set var="title" value="OpenDaylight login error" scope="application"/>
<%
- if (session != null) session.invalidate();
String filePath = "/WEB-INF/jsp/customerror.jsp";
URL fileURL = pageContext.getServletContext().getResource(filePath);
if(fileURL!=null) {
</div>
</div>
</form>
+ <% if (session != null) session.invalidate(); %>
</body>
</html>