value="GenericWhitespace ''{0}'' is not preceded with whitespace."/>
</module>
<module name="Indentation">
- <property name="basicOffset" value="2"/>
+ <property name="basicOffset" value="4"/>
<property name="braceAdjustment" value="0"/>
- <property name="caseIndent" value="2"/>
+ <property name="caseIndent" value="4"/>
<property name="throwsIndent" value="4"/>
<!-- Not yet supported https://jira.codehaus.org/browse/MCHECKSTYLE-261
<property name="lineWrappingIndentation" value="4"/>
<artifactId>maven-checkstyle-plugin</artifactId>
<configuration>
<configLocation>
- ${project.basedir}/../../commons/src/main/resources/odl_checks.xml
+ ${project.basedir}/../../commons/src/main/resources/vpns_checks.xml
</configLocation>
<failsOnError>true</failsOnError>
<includes>**/*.java,**/*.xml,**/*.ini,**/*.sh,**/*.bat</includes>
<scope>test</scope>\r
</dependency>\r
</dependencies>\r
+ <build>\r
+ <plugins>\r
+ <plugin>\r
+ <groupId>org.apache.maven.plugins</groupId>\r
+ <artifactId>maven-checkstyle-plugin</artifactId>\r
+ <configuration>\r
+ <configLocation>\r
+ ${project.basedir}/../commons/src/main/resources/vpns_checks.xml\r
+ </configLocation>\r
+ <failsOnError>true</failsOnError>\r
+ <includes>**/*.java,**/*.xml,**/*.ini</includes>\r
+ <excludes>**/yang/</excludes>\r
+ </configuration>\r
+ </plugin>\r
+ </plugins>\r
+ </build>\r
\r
</project>\r
* AbstractDataChangeListener implemented basic {@link DataChangeListener} processing for\r
* VPN related Data Objects.\r
*/\r
-public abstract class AbstractDataChangeListener <T extends DataObject> implements DataChangeListener {\r
+public abstract class AbstractDataChangeListener<T extends DataObject> implements DataChangeListener {\r
\r
protected final Class<T> clazz;\r
\r
+ /**\r
+ * \r
+ * @param clazz - for which the data change event is received\r
+ */\r
public AbstractDataChangeListener(Class<T> clazz) {\r
this.clazz = Preconditions.checkNotNull(clazz, "Class can not be null!");\r
}\r
\r
/* All DataObjects for create */\r
final Map<InstanceIdentifier<?>, DataObject> createdData = changeEvent.getCreatedData() != null\r
- ? changeEvent.getCreatedData() : Collections.<InstanceIdentifier<?>, DataObject> emptyMap();\r
+ ? changeEvent.getCreatedData() : Collections.<InstanceIdentifier<?>, DataObject>emptyMap();\r
/* All DataObjects for remove */\r
final Set<InstanceIdentifier<?>> removeData = changeEvent.getRemovedPaths() != null\r
- ? changeEvent.getRemovedPaths() : Collections.<InstanceIdentifier<?>> emptySet();\r
+ ? changeEvent.getRemovedPaths() : Collections.<InstanceIdentifier<?>>emptySet();\r
/* All DataObjects for updates */\r
final Map<InstanceIdentifier<?>, DataObject> updateData = changeEvent.getUpdatedData() != null\r
- ? changeEvent.getUpdatedData() : Collections.<InstanceIdentifier<?>, DataObject> emptyMap();\r
+ ? changeEvent.getUpdatedData() : Collections.<InstanceIdentifier<?>, DataObject>emptyMap();\r
/* All Original DataObjects */\r
final Map<InstanceIdentifier<?>, DataObject> originalData = changeEvent.getOriginalData() != null\r
- ? changeEvent.getOriginalData() : Collections.<InstanceIdentifier<?>, DataObject> emptyMap();\r
+ ? changeEvent.getOriginalData() : Collections.<InstanceIdentifier<?>, DataObject>emptyMap();\r
\r
this.createData(createdData);\r
this.updateData(updateData, originalData);\r
@SuppressWarnings("unchecked")\r
private void createData(final Map<InstanceIdentifier<?>, DataObject> createdData) {\r
final Set<InstanceIdentifier<?>> keys = createdData.keySet() != null\r
- ? createdData.keySet() : Collections.<InstanceIdentifier<?>> emptySet();\r
+ ? createdData.keySet() : Collections.<InstanceIdentifier<?>>emptySet();\r
for (InstanceIdentifier<?> key : keys) {\r
if (clazz.equals(key.getTargetType())) {\r
- InstanceIdentifier<T> createKeyIdent = key.firstIdentifierOf(clazz);\r
- final Optional<DataObject> value = Optional.of(createdData.get(key));\r
- if (value.isPresent()) {\r
- this.add(createKeyIdent, (T)value.get());\r
- }\r
+ InstanceIdentifier<T> createKeyIdent = key.firstIdentifierOf(clazz);\r
+ final Optional<DataObject> value = Optional.of(createdData.get(key));\r
+ if (value.isPresent()) {\r
+ this.add(createKeyIdent, (T)value.get());\r
+ }\r
}\r
}\r
}\r
final Map<InstanceIdentifier<?>, DataObject> originalData) {\r
\r
final Set<InstanceIdentifier<?>> keys = updateData.keySet() != null\r
- ? updateData.keySet() : Collections.<InstanceIdentifier<?>> emptySet();\r
+ ? updateData.keySet() : Collections.<InstanceIdentifier<?>>emptySet();\r
for (InstanceIdentifier<?> key : keys) {\r
- if (clazz.equals(key.getTargetType())) {\r
- InstanceIdentifier<T> updateKeyIdent = key.firstIdentifierOf(clazz);\r
- final Optional<DataObject> value = Optional.of(updateData.get(key));\r
- final Optional<DataObject> original = Optional.of(originalData.get(key));\r
- if (value.isPresent() && original.isPresent()) {\r
- this.update(updateKeyIdent, (T)original.get(), (T)value.get());\r
- }\r
- }\r
+ if (clazz.equals(key.getTargetType())) {\r
+ InstanceIdentifier<T> updateKeyIdent = key.firstIdentifierOf(clazz);\r
+ final Optional<DataObject> value = Optional.of(updateData.get(key));\r
+ final Optional<DataObject> original = Optional.of(originalData.get(key));\r
+ if (value.isPresent() && original.isPresent()) {\r
+ this.update(updateKeyIdent, (T)original.get(), (T)value.get());\r
+ }\r
+ }\r
}\r
}\r
\r
\r
for (InstanceIdentifier<?> key : removeData) {\r
if (clazz.equals(key.getTargetType())) {\r
- final InstanceIdentifier<T> ident = key.firstIdentifierOf(clazz);\r
- final DataObject removeValue = originalData.get(key);\r
- this.remove(ident, (T)removeValue);\r
+ final InstanceIdentifier<T> ident = key.firstIdentifierOf(clazz);\r
+ final DataObject removeValue = originalData.get(key);\r
+ this.remove(ident, (T)removeValue);\r
}\r
}\r
}\r
*/\r
package org.opendaylight.vpnservice;\r
\r
-import java.util.Collections;\r
+\r
import java.util.List;\r
-import java.util.Map;\r
-import java.util.Set;\r
-import java.util.concurrent.Future;\r
\r
import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;\r
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier.InstanceIdentifierBuilder;\r
import org.opendaylight.controller.md.sal.binding.api.ReadOnlyTransaction;\r
-import org.opendaylight.controller.md.sal.common.api.data.AsyncDataChangeEvent;\r
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.Interfaces;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.Interface;\r
import org.opendaylight.yang.gen.v1.urn.ietf.params.xml.ns.yang.ietf.interfaces.rev140508.interfaces.InterfaceKey;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.NextHopList;\r
-import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.next.hop.list.*;\r
+import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.next.hop.list.L3NextHops;\r
import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInterfaces;\r
import org.opendaylight.yang.gen.v1.urn.opendaylight.l3vpn.rev130911.VpnInterface1;\r
import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.interfaces.VpnInterface;\r
import com.google.common.base.Optional;\r
import com.google.common.collect.FluentIterable;\r
\r
-public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface> implements AutoCloseable{\r
+public class VpnInterfaceManager extends AbstractDataChangeListener<VpnInterface> implements AutoCloseable {\r
private static final Logger LOG = LoggerFactory.getLogger(VpnInterfaceManager.class);\r
private ListenerRegistration<DataChangeListener> listenerRegistration;\r
private final DataBroker broker;\r
- \r
+\r
+ /**\r
+ * Responsible for listening to data change related to VPN Interface\r
+ * Bind VPN Service on the interface and informs the BGP service\r
+ * \r
+ * @param db - dataBroker service reference\r
+ */\r
public VpnInterfaceManager(final DataBroker db) {\r
super(VpnInterface.class);\r
broker = db;\r
}\r
LOG.info("VPN Interface Manager Closed");\r
}\r
- \r
+\r
private void registerListener(final DataBroker db) {\r
try {\r
listenerRegistration = db.registerDataChangeListener(LogicalDatastoreType.CONFIGURATION,\r
InstanceIdentifier.builder(Interfaces.class).child(Interface.class, new InterfaceKey(interfaceName));\r
InstanceIdentifier<Interface> id = idBuilder.build();\r
Optional<Interface> port = read(LogicalDatastoreType.CONFIGURATION, id);\r
- if(port.isPresent()) {\r
+ if (port.isPresent()) {\r
Interface interf = port.get();\r
bindServiceOnInterface(interf);\r
updateNextHops(identifier);\r
//Read NextHops\r
InstanceIdentifier<VpnInterface1> path = identifier.augmentation(VpnInterface1.class);\r
Optional<VpnInterface1> nextHopList = read(LogicalDatastoreType.CONFIGURATION, path);\r
- \r
- if(nextHopList.isPresent()) {\r
+\r
+ if (nextHopList.isPresent()) {\r
List<L3NextHops> nextHops = nextHopList.get().getL3NextHops();\r
- \r
- if(!nextHops.isEmpty()) {\r
- LOG.info("NextHops are "+ nextHops);\r
- for(L3NextHops nextHop : nextHops) {\r
+\r
+ if (!nextHops.isEmpty()) {\r
+ LOG.info("NextHops are " + nextHops);\r
+ for (L3NextHops nextHop : nextHops) {\r
//TODO: Generate label for the prefix and store it in the next hop model\r
- \r
+\r
//TODO: Update BGP\r
updatePrefixToBGP(nextHop);\r
}\r
*/\r
package org.opendaylight.vpnservice;\r
\r
-import java.util.Collections;\r
-import java.util.Map;\r
-import java.util.Set;\r
-\r
import org.opendaylight.controller.md.sal.binding.api.DataBroker;\r
import org.opendaylight.controller.md.sal.binding.api.DataChangeListener;\r
import org.opendaylight.controller.md.sal.common.api.data.LogicalDatastoreType;\r
import org.opendaylight.controller.md.sal.common.api.data.AsyncDataBroker.DataChangeScope;\r
import org.opendaylight.yangtools.concepts.ListenerRegistration;\r
-import org.opendaylight.yangtools.yang.binding.DataObject;\r
import org.opendaylight.yangtools.yang.binding.InstanceIdentifier;\r
import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.vpn.instances.VpnInstance;\r
import org.opendaylight.yang.gen.v1.urn.huawei.params.xml.ns.yang.l3vpn.rev140815.VpnInstances;\r
import org.slf4j.Logger;\r
import org.slf4j.LoggerFactory;\r
\r
-import com.google.common.base.Optional;\r
-import com.google.common.base.Preconditions;\r
-\r
-public class VpnManager extends AbstractDataChangeListener<VpnInstance> implements AutoCloseable{\r
+public class VpnManager extends AbstractDataChangeListener<VpnInstance> implements AutoCloseable {\r
private static final Logger LOG = LoggerFactory.getLogger(VpnManager.class);\r
private ListenerRegistration<DataChangeListener> listenerRegistration;\r
private final DataBroker broker;\r
\r
+ /**\r
+ * Listens for data change related to VPN Instance\r
+ * Informs the BGP about VRF information\r
+ * \r
+ * @param db - dataBroker reference\r
+ */\r
public VpnManager(final DataBroker db) {\r
super(VpnInstance.class);\r
broker = db;\r
final DataBroker dataBroker = session.getSALService(DataBroker.class);\r
vpnManager = new VpnManager(dataBroker);\r
vpnInterfaceManager = new VpnInterfaceManager(dataBroker);\r
- } catch(Exception e) {\r
+ } catch (Exception e) {\r
LOG.error("Error initializing services", e);\r
}\r
}\r