Merge branch 'master' of ssh://gerrit.onlab.us:29418/onos-next
diff --git a/of/drivers/pom.xml b/of/drivers/pom.xml
new file mode 100644
index 0000000..7538f10
--- /dev/null
+++ b/of/drivers/pom.xml
@@ -0,0 +1,36 @@
+<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/maven-v4_0_0.xsd">
+    <modelVersion>4.0.0</modelVersion>
+
+    <parent>
+        <groupId>org.onlab.onos</groupId>
+        <artifactId>onos-of</artifactId>
+        <version>1.0.0-SNAPSHOT</version>
+        <relativePath>../pom.xml</relativePath>
+    </parent>
+
+    <artifactId>onos-of-drivers</artifactId>
+    <packaging>bundle</packaging>
+
+    <description>ONOS OpenFlow switch drivers &amp; factory</description>
+
+    <dependencies>
+        <dependency>
+            <groupId>org.onlab.onos</groupId>
+            <artifactId>onos-of-api</artifactId>
+        </dependency>
+    </dependencies>
+
+    <build>
+<!--
+        <plugins>
+            <plugin>
+                <groupId>org.apache.felix</groupId>
+                <artifactId>maven-scr-plugin</artifactId>
+            </plugin>
+        </plugins>
+-->
+    </build>
+
+</project>
diff --git a/of/drivers/src/main/java/org/onlab/onos/of/drivers/DeleteMe.java b/of/drivers/src/main/java/org/onlab/onos/of/drivers/DeleteMe.java
new file mode 100644
index 0000000..6b9c662
--- /dev/null
+++ b/of/drivers/src/main/java/org/onlab/onos/of/drivers/DeleteMe.java
@@ -0,0 +1,7 @@
+package org.onlab.onos.of.drivers;
+
+/**
+ * Created by tom on 9/2/14.
+ */
+public class DeleteMe {
+}
diff --git a/of/pom.xml b/of/pom.xml
index 465440d..5a030f4 100644
--- a/of/pom.xml
+++ b/of/pom.xml
@@ -19,6 +19,7 @@
     <modules>
         <module>api</module>
         <module>ctl</module>
+        <module>drivers</module>
     </modules>
 
     <build>
diff --git a/pom.xml b/pom.xml
index ca10782..4f0dd3c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -256,6 +256,32 @@
             </plugin>
 
             <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-pmd-plugin</artifactId>
+                <version>3.2</version>
+                <configuration>
+                    <excludes>
+                        <exclude>**/datastore/serializers/**</exclude>
+                        <exclude>**/edu/stanford/**</exclude>
+                        <exclude>**/net/floodlightcontroller/**</exclude>
+                    </excludes>
+                    <rulesets>
+                        <ruleset>onos/pmd.xml</ruleset>
+                    </rulesets>
+                </configuration>
+                <executions>
+                    <execution>
+                        <id>validate-pmd</id>
+                        <phase>verify</phase>
+                        <goals>
+                            <!--  Uncomment this goal to make the build fail on pmd errors -->
+                            <!--<goal>check</goal>-->
+                        </goals>
+                    </execution>
+                </executions>
+            </plugin>
+
+            <plugin>
                 <groupId>org.jacoco</groupId>
                 <artifactId>jacoco-maven-plugin</artifactId>
                 <version>0.7.1.201405082137</version>
@@ -332,6 +358,23 @@
                     <configLocation>onos/checkstyle.xml</configLocation>
                 </configuration>
             </plugin>
+
+            <plugin>
+                <groupId>org.apache.maven.plugins</groupId>
+                <artifactId>maven-pmd-plugin</artifactId>
+                <version>3.2</version>
+                <configuration>
+                    <excludes>
+                        <exclude>**/datastore/serializers/**</exclude>
+                        <exclude>**/edu/stanford/**</exclude>
+                        <exclude>**/net/floodlightcontroller/**</exclude>
+                    </excludes>
+                    <rulesets>
+                        <ruleset>onos/pmd.xml</ruleset>
+                    </rulesets>
+                </configuration>
+            </plugin>
+
         </plugins>
 
     </reporting>
diff --git a/tools/build/conf/src/main/resources/onos/pmd.xml b/tools/build/conf/src/main/resources/onos/pmd.xml
new file mode 100644
index 0000000..7c862a3
--- /dev/null
+++ b/tools/build/conf/src/main/resources/onos/pmd.xml
@@ -0,0 +1,62 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<ruleset xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    name="ONOS Rules"
+    xmlns="http://pmd.sf.net/ruleset/1.0.0"
+    xsi:noNamespaceSchemaLocation="http://pmd.sf.net/ruleset_xml_schema.xsd"
+    xsi:schemaLocation="http://pmd.sf.net/ruleset/1.0.0 http://pmd.sf.net/ruleset_xml_schema.xsd" >
+
+    <description>ONOS PMD rules</description>
+
+    <rule ref="rulesets/java/unnecessary.xml" >
+        <exclude name="UselessParentheses" />
+    </rule>
+    <rule ref="rulesets/java/basic.xml">
+      <exclude name="EmptyCatchBlock"/>
+    </rule>
+    <rule ref="rulesets/java/basic.xml/EmptyCatchBlock">
+      <properties>
+	<property name="allowCommentedBlocks" value="true"/>
+      </properties>
+    </rule>
+    <rule ref="rulesets/java/unusedcode.xml">
+      <!-- Explicit public keyword in interface methods is acceptable -->
+      <exclude name="UnusedModifier" />
+    </rule>
+    <rule ref="rulesets/java/imports.xml"/>
+    <rule ref="rulesets/java/optimizations.xml">
+      <exclude name="LocalVariableCouldBeFinal" />
+      <exclude name="MethodArgumentCouldBeFinal" />
+      <exclude name="AvoidInstantiatingObjectsInLoops" />
+    </rule>
+
+    <rule ref="rulesets/java/strings.xml">
+      <exclude name="AvoidDuplicateLiterals" />
+    </rule>
+    <rule ref="rulesets/java/braces.xml"/>
+    <rule ref="rulesets/java/naming.xml">
+      <exclude name="AvoidInstantiatingObjectsInLoops" />
+      <exclude name="ShortClassName" />
+      <exclude name="ShortMethodName" />
+      <exclude name="ShortVariable" />
+      <exclude name="LongVariable" />
+    </rule>
+    <rule ref="rulesets/java/naming.xml/VariableNamingConventions">
+      <properties>
+	<!--  ONOS allows the name "log" for static final Loggers -->
+	<property name="violationSuppressRegex" value=".*'log'.*"/>
+      </properties>
+    </rule>
+
+    <rule ref="rulesets/java/clone.xml"/>
+    <rule ref="rulesets/java/strictexception.xml"/>
+    <rule ref="rulesets/java/design.xml">
+      <exclude name="GodClass" />
+    </rule>
+    <rule ref="rulesets/java/coupling.xml">
+      <exclude name="LawOfDemeter" />
+      <exclude name="ExcessiveImports" />
+      <!-- Suppress Removed misconfigured rule warning -->
+      <exclude name="LoosePackageCoupling" />
+    </rule>
+</ruleset>
+