Migrate aaa-shiro to utilize archetype setup 77/50077/7
authorRyan Goulding <ryandgoulding@gmail.com>
Thu, 5 Jan 2017 20:52:47 +0000 (15:52 -0500)
committerRyan Goulding <ryandgoulding@gmail.com>
Tue, 17 Jan 2017 19:22:02 +0000 (14:22 -0500)
This change addresses the fact that the archetype was not used to
create the aaa-shiro module.  This is due to the fact that it was
much heavier weight than what was needed at the time.  However,
utilization of the archetype does allow for many advantages including:

1) Explicit separation of api and impl into two separate locations.
   Since prior to this change mostly Apache Shiro abstractions were used
   instead of homegrown ones, this wasn't particularly useful.  However,
   with aaa-shiro growing, this is becoming increasingly necessary.

2) Dependence on config-parent for bundles.  This gets us a lot for
   free, including genericizising on best practices.

3) The possibility to create aaa-shiro features/karaf/IT/commands more
   easily.  For now, this patch comments out the features & karaf
   section as they are pretty much duplicates of the existing top-level
   odl-aaa-shiro feature which is already defined.  In the future, it
   would be nice to enumerate some of the archetype-oriented features:
   - ui
   - rest
   - api

This change is mostly cleaning up and preparing for expansion of the
aaa-shiro bundle.  Existing functionality was stuck in the aaa-shiro module,
but the package names were not updated to utilize impl.  Likewise, the module
is called "aaa-shiro" and not "aaa-shiro-impl" since other projects already depend
on the former name.  The package names were not updated to utilize impl
as the names are used in configuration of the module itself, and
changing them would cause forwards/backwards compatibility issues.  In the future,
we may want to move them but provide existing classes that extend the impl ones.

Change-Id: I16f1efed8b83e764362ae6d19b0a69d1b1c6cbec
Signed-off-by: Ryan Goulding <ryandgoulding@gmail.com>
44 files changed:
aaa-shiro/api/pom.xml [new file with mode: 0644]
aaa-shiro/api/src/main/yang/aaa-shiro.yang [new file with mode: 0644]
aaa-shiro/deploy-site.xml [new file with mode: 0644]
aaa-shiro/impl/pom.xml [new file with mode: 0644]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/AAAShiroProvider.java [new file with mode: 0644]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/Activator.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/Activator.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/ServiceProxy.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/ServiceProxy.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/accounting/Accounter.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/accounting/Accounter.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/filters/AAAFilter.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/filters/AAAFilter.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/filters/AAAShiroFilter.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/filters/AAAShiroFilter.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/filters/AuthenticationListener.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/filters/AuthenticationListener.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/filters/AuthenticationTokenUtils.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/filters/AuthenticationTokenUtils.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/filters/MoonOAuthFilter.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/filters/MoonOAuthFilter.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/filters/ODLHttpAuthenticationFilter.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/filters/ODLHttpAuthenticationFilter.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/moon/MoonPrincipal.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/moon/MoonPrincipal.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/moon/MoonTokenEndpoint.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/moon/MoonTokenEndpoint.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/realm/MoonRealm.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/realm/MoonRealm.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/realm/ODLActiveDirectoryRealm.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/realm/ODLActiveDirectoryRealm.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/realm/ODLJdbcRealm.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/realm/ODLJdbcRealm.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/realm/ODLJndiLdapRealm.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/realm/ODLJndiLdapRealm.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/realm/ODLJndiLdapRealmAuthNOnly.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/realm/ODLJndiLdapRealmAuthNOnly.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/realm/RadiusRealm.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/realm/RadiusRealm.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/realm/TACACSRealm.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/realm/TACACSRealm.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/realm/TokenAuthRealm.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/realm/TokenAuthRealm.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/realm/mapping/api/GroupsToRolesMappingStrategy.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/realm/mapping/api/GroupsToRolesMappingStrategy.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/realm/mapping/impl/BestAttemptGroupToRolesMappingStrategy.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/realm/mapping/impl/BestAttemptGroupToRolesMappingStrategy.java with 100% similarity]
aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/shiro/web/env/KarafIniWebEnvironment.java [moved from aaa-shiro/src/main/java/org/opendaylight/aaa/shiro/web/env/KarafIniWebEnvironment.java with 100% similarity]
aaa-shiro/impl/src/main/resources/WEB-INF/web.xml [moved from aaa-shiro/src/main/resources/WEB-INF/web.xml with 100% similarity]
aaa-shiro/impl/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml [new file with mode: 0644]
aaa-shiro/impl/src/main/resources/shiro.ini [moved from aaa-shiro/src/main/resources/shiro.ini with 100% similarity]
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/shiro/ServiceProxyTest.java [moved from aaa-shiro/src/test/java/org/opendaylight/aaa/shiro/ServiceProxyTest.java with 100% similarity]
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/shiro/TestAppender.java [moved from aaa-shiro/src/test/java/org/opendaylight/aaa/shiro/TestAppender.java with 100% similarity]
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/shiro/filters/AuthenticationListenerTest.java [moved from aaa-shiro/src/test/java/org/opendaylight/aaa/shiro/filters/AuthenticationListenerTest.java with 100% similarity]
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/shiro/filters/AuthenticationTokenUtilsTest.java [moved from aaa-shiro/src/test/java/org/opendaylight/aaa/shiro/filters/AuthenticationTokenUtilsTest.java with 100% similarity]
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/shiro/realm/ODLJndiLdapRealmTest.java [moved from aaa-shiro/src/test/java/org/opendaylight/aaa/shiro/realm/ODLJndiLdapRealmTest.java with 100% similarity]
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/shiro/realm/TokenAuthRealmTest.java [moved from aaa-shiro/src/test/java/org/opendaylight/aaa/shiro/realm/TokenAuthRealmTest.java with 100% similarity]
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/shiro/realm/mapping/impl/BestAttemptGroupToRolesMappingStrategyTest.java [moved from aaa-shiro/src/test/java/org/opendaylight/aaa/shiro/realm/mapping/impl/BestAttemptGroupToRolesMappingStrategyTest.java with 100% similarity]
aaa-shiro/impl/src/test/java/org/opendaylight/aaa/shiro/web/env/KarafIniWebEnvironmentTest.java [moved from aaa-shiro/src/test/java/org/opendaylight/aaa/shiro/web/env/KarafIniWebEnvironmentTest.java with 100% similarity]
aaa-shiro/impl/src/test/resources/logback-test.xml [moved from aaa-shiro/src/test/resources/logback-test.xml with 100% similarity]
aaa-shiro/pom.xml
aaa-shiro/src/main/resources/stylesheet.css [new file with mode: 0644]
aaa-shiro/src/site/site.xml [new file with mode: 0644]
artifacts/pom.xml
pom.xml

diff --git a/aaa-shiro/api/pom.xml b/aaa-shiro/api/pom.xml
new file mode 100644 (file)
index 0000000..0d37fb8
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright © 2017 Brocade Communications Systems 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
+-->
+<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>
+    <groupId>org.opendaylight.mdsal</groupId>
+    <artifactId>binding-parent</artifactId>
+    <version>0.10.0-SNAPSHOT</version>
+    <relativePath/>
+  </parent>
+
+  <groupId>org.opendaylight.aaa</groupId>
+  <artifactId>aaa-shiro-api</artifactId>
+  <version>0.5.0-SNAPSHOT</version>
+  <packaging>bundle</packaging>
+</project>
diff --git a/aaa-shiro/api/src/main/yang/aaa-shiro.yang b/aaa-shiro/api/src/main/yang/aaa-shiro.yang
new file mode 100644 (file)
index 0000000..063c2b6
--- /dev/null
@@ -0,0 +1,9 @@
+module aaa-shiro {
+    yang-version 1;
+    namespace "urn:opendaylight:params:xml:ns:yang:aaa-shiro";
+    prefix "aaa-shiro";
+
+    revision "2015-01-05" {
+        description "Initial revision of aaa-shiro model";
+    }
+}
diff --git a/aaa-shiro/deploy-site.xml b/aaa-shiro/deploy-site.xml
new file mode 100644 (file)
index 0000000..5978d8f
--- /dev/null
@@ -0,0 +1,50 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=2 tabstop=2: -->
+<!--
+    Copyright (c) 2017 Brocade Communications Systems 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
+-->
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.opendaylight.aaa</groupId>
+  <artifactId>deploy-site</artifactId>
+  <version>0.5.0-SNAPSHOT</version>
+  <packaging>pom</packaging>
+
+  <properties>
+    <stream>latest</stream>
+    <nexus.site.url>dav:https://nexus.opendaylight.org/content/sites/site/${project.groupId}/${stream}/</nexus.site.url>
+  </properties>
+
+  <build>
+    <extensions>
+      <extension>
+        <groupId>org.apache.maven.wagon</groupId>
+         <artifactId>wagon-webdav-jackrabbit</artifactId>
+         <version>2.9</version>
+      </extension>
+    </extensions>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-site-plugin</artifactId>
+        <version>3.4</version>
+        <configuration>
+          <inputDirectory>${project.build.directory}/staged-site</inputDirectory>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <distributionManagement>
+    <site>
+      <id>opendaylight-site</id>
+      <url>${nexus.site.url}</url>
+    </site>
+  </distributionManagement>
+</project>
diff --git a/aaa-shiro/impl/pom.xml b/aaa-shiro/impl/pom.xml
new file mode 100644 (file)
index 0000000..e59ca65
--- /dev/null
@@ -0,0 +1,156 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+Copyright © 2017 Brocade Communications Systems 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
+-->
+<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>
+    <groupId>org.opendaylight.controller</groupId>
+    <artifactId>config-parent</artifactId>
+    <version>0.6.0-SNAPSHOT</version>
+    <relativePath/>
+  </parent>
+
+  <groupId>org.opendaylight.aaa</groupId>
+  <artifactId>aaa-shiro</artifactId>
+  <version>0.5.0-SNAPSHOT</version>
+  <packaging>bundle</packaging>
+
+  <dependencies>
+    <dependency>
+      <groupId>${project.groupId}</groupId>
+      <artifactId>aaa-shiro-api</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+
+    <!-- jersey client for moon authN -->
+    <dependency>
+      <groupId>com.sun.jersey</groupId>
+      <artifactId>jersey-client</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.json</groupId>
+      <artifactId>json</artifactId>
+    </dependency>
+    <!-- OAuth2 dependencies for moon -->
+    <dependency>
+      <groupId>org.apache.oltu.oauth2</groupId>
+      <artifactId>org.apache.oltu.oauth2.authzserver</artifactId>
+      <version>1.0.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.oltu.oauth2</groupId>
+      <artifactId>org.apache.oltu.oauth2.common</artifactId>
+      <version>1.0.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.oltu.oauth2</groupId>
+      <artifactId>org.apache.oltu.oauth2.resourceserver</artifactId>
+      <version>1.0.0</version>
+    </dependency>
+    <!-- end -->
+    <dependency>
+      <groupId>org.apache.felix</groupId>
+      <artifactId>org.apache.felix.dependencymanager</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.aaa</groupId>
+      <artifactId>aaa-authn-sts</artifactId>
+      <version>0.5.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.opendaylight.aaa</groupId>
+      <artifactId>aaa-authn-basic</artifactId>
+      <version>0.5.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.shiro</groupId>
+      <artifactId>shiro-core</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.shiro</groupId>
+      <artifactId>shiro-web</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>commons-beanutils</groupId>
+      <artifactId>commons-beanutils</artifactId>
+      <version>1.8.3</version>
+    </dependency>
+    <dependency>
+      <groupId>javax.servlet</groupId>
+      <artifactId>javax.servlet-api</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+    </dependency>
+
+    <!-- Testing Dependencies -->
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.mockito</groupId>
+      <artifactId>mockito-all</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-core</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>ch.qos.logback</groupId>
+      <artifactId>logback-classic</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <extensions>true</extensions>
+        <configuration>
+          <instructions>
+            <Web-ContextPath>/moon</Web-ContextPath>
+            <Bundle-Activator>org.opendaylight.aaa.shiro.Activator</Bundle-Activator>
+            <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
+          </instructions>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>attach-artifacts</id>
+            <phase>package</phase>
+            <goals>
+              <goal>attach-artifact</goal>
+            </goals>
+            <configuration>
+              <artifacts>
+                <artifact>
+                  <file>${project.build.directory}/classes/shiro.ini</file>
+                  <type>cfg</type>
+                  <classifier>configuration</classifier>
+                </artifact>
+              </artifacts>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>
diff --git a/aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/AAAShiroProvider.java b/aaa-shiro/impl/src/main/java/org/opendaylight/aaa/impl/AAAShiroProvider.java
new file mode 100644 (file)
index 0000000..9536954
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright © 2017 Brocade Communications Systems 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.aaa.impl;
+
+import org.opendaylight.controller.md.sal.binding.api.DataBroker;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+public class AAAShiroProvider {
+
+    private static final Logger LOG = LoggerFactory.getLogger(AAAShiroProvider.class);
+
+    private final DataBroker dataBroker;
+
+    public AAAShiroProvider(final DataBroker dataBroker) {
+        this.dataBroker = dataBroker;
+    }
+
+    /**
+     * Method called when the blueprint container is created.
+     */
+    public void init() {
+        LOG.info("AAAShiroProvider Session Initiated");
+    }
+
+    /**
+     * Method called when the blueprint container is destroyed.
+     */
+    public void close() {
+        LOG.info("AAAShiroProvider Closed");
+    }
+}
\ No newline at end of file
diff --git a/aaa-shiro/impl/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml b/aaa-shiro/impl/src/main/resources/org/opendaylight/blueprint/impl-blueprint.xml
new file mode 100644 (file)
index 0000000..cfffb84
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- vi: set et smarttab sw=4 tabstop=4: -->
+<!--
+Copyright © 2017 Brocade Communications Systems 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
+-->
+<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0"
+  xmlns:odl="http://opendaylight.org/xmlns/blueprint/v1.0.0"
+  odl:use-default-for-reference-types="true">
+
+  <reference id="dataBroker"
+    interface="org.opendaylight.controller.md.sal.binding.api.DataBroker"
+    odl:type="default" />
+
+  <bean id="provider"
+    class="org.opendaylight.aaa.impl.AAAShiroProvider"
+    init-method="init" destroy-method="close">
+    <argument ref="dataBroker" />
+  </bean>
+
+</blueprint>
index 447018b57042e054d3d804e1bef14aa5f7d8cacc..5625e93db5496871af1041e71c4927384da4ed89 100644 (file)
-<!-- Copyright (c) 2015 Brocade Communications 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 -->
-<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">
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Copyright © 2017 Brocade Communications Systems 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 INTERNAL
+-->
+<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>
-    <groupId>org.opendaylight.aaa</groupId>
-    <artifactId>aaa-parent</artifactId>
-    <version>0.5.0-SNAPSHOT</version>
-    <relativePath>../parent</relativePath>
+    <groupId>org.opendaylight.odlparent</groupId>
+    <artifactId>odlparent</artifactId>
+    <version>1.8.0-SNAPSHOT</version>
+    <relativePath/>
   </parent>
 
-  <artifactId>aaa-shiro</artifactId>
-  <packaging>bundle</packaging>
+  <groupId>org.opendaylight.aaa</groupId>
+  <artifactId>aaa-shiro-aggregator</artifactId>
+  <version>0.5.0-SNAPSHOT</version>
+  <name>aaa-shiro</name>
+  <packaging>pom</packaging>
+
+  <scm>
+    <connection>scm:git:ssh://git.opendaylight.org:29418/aaa-shiro.git</connection>
+    <developerConnection>scm:git:ssh://git.opendaylight.org:29418/aaa-shiro.git</developerConnection>
+    <tag>HEAD</tag>
+    <url>https://wiki.opendaylight.org/view/aaa-shiro:Main</url>
+  </scm>
 
-  <dependencies>
-    <!-- jersey client for moon authN -->
-    <dependency>
-      <groupId>com.sun.jersey</groupId>
-      <artifactId>jersey-client</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.json</groupId>
-      <artifactId>json</artifactId>
-    </dependency>
-    <!-- OAuth2 dependencies for moon -->
-    <dependency>
-      <groupId>org.apache.oltu.oauth2</groupId>
-      <artifactId>org.apache.oltu.oauth2.authzserver</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.oltu.oauth2</groupId>
-      <artifactId>org.apache.oltu.oauth2.common</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.oltu.oauth2</groupId>
-      <artifactId>org.apache.oltu.oauth2.resourceserver</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <!-- end -->
-    <dependency>
-      <groupId>org.apache.felix</groupId>
-      <artifactId>org.apache.felix.dependencymanager</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.aaa</groupId>
-      <artifactId>aaa-authn-sts</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.opendaylight.aaa</groupId>
-      <artifactId>aaa-authn-basic</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.shiro</groupId>
-      <artifactId>shiro-core</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.shiro</groupId>
-      <artifactId>shiro-web</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>commons-beanutils</groupId>
-      <artifactId>commons-beanutils</artifactId>
-      <version>1.8.3</version>
-    </dependency>
-    <dependency>
-      <groupId>javax.servlet</groupId>
-      <artifactId>javax.servlet-api</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>com.google.guava</groupId>
-      <artifactId>guava</artifactId>
-    </dependency>
+  <modules>
+    <module>api</module>
+    <module>impl</module>
+  </modules>
 
-    <!-- Testing Dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.mockito</groupId>
-      <artifactId>mockito-all</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-core</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>ch.qos.logback</groupId>
-      <artifactId>logback-classic</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
+  <!-- DO NOT install or deploy the repo root pom as it's only needed to initiate a build -->
   <build>
     <plugins>
       <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <extensions>true</extensions>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-deploy-plugin</artifactId>
         <configuration>
-          <instructions>
-            <Web-ContextPath>/moon</Web-ContextPath>
-            <Bundle-Activator>org.opendaylight.aaa.shiro.Activator</Bundle-Activator>
-            <Bundle-Name>${project.groupId}.${project.artifactId}</Bundle-Name>
-          </instructions>
+          <skip>true</skip>
         </configuration>
       </plugin>
       <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>build-helper-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>attach-artifacts</id>
-            <phase>package</phase>
-            <goals>
-              <goal>attach-artifact</goal>
-            </goals>
-            <configuration>
-              <artifacts>
-                <artifact>
-                  <file>${project.build.directory}/classes/shiro.ini</file>
-                  <type>cfg</type>
-                  <classifier>configuration</classifier>
-                </artifact>
-              </artifacts>
-            </configuration>
-          </execution>
-        </executions>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-install-plugin</artifactId>
+        <configuration>
+          <skip>true</skip>
+        </configuration>
       </plugin>
     </plugins>
   </build>
+
+  <profiles>
+    <profile>
+      <!--
+          This profile is to ensure we only build javadocs reports
+          when we plan to deploy Maven site for our project.
+      -->
+      <id>maven-site</id>
+      <activation>
+        <file>
+          <exists>${user.dir}/deploy-site.xml</exists>
+        </file>
+      </activation>
+
+      <build>
+        <plugins>
+          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
+            <artifactId>maven-javadoc-plugin</artifactId>
+            <inherited>false</inherited>
+            <executions>
+              <execution>
+                <id>aggregate</id>
+                <goals>
+                  <goal>aggregate</goal>
+                </goals>
+                <phase>package</phase>
+            </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+
+  <!--
+      Maven Site Configuration
+
+      The following configuration is necessary for maven-site-plugin to
+      correctly identify the correct deployment path for OpenDaylight Maven
+      sites.
+  -->
+  <url>${odl.site.url}/${project.groupId}/${stream}/</url>
+
+  <distributionManagement>
+    <site>
+      <id>opendaylight-site</id>
+      <url>${nexus.site.url}/</url>
+    </site>
+  </distributionManagement>
 </project>
diff --git a/aaa-shiro/src/main/resources/stylesheet.css b/aaa-shiro/src/main/resources/stylesheet.css
new file mode 100644 (file)
index 0000000..76de82b
--- /dev/null
@@ -0,0 +1,475 @@
+/* Javadoc style sheet */
+/*
+Overall document style
+*/
+body {
+    background-color:#ffffff;
+    color:#353833;
+    font-family:Arial, Helvetica, sans-serif;
+    font-size:76%;
+    margin:0;
+}
+a:link, a:visited {
+    text-decoration:none;
+    color:#4c6b87;
+}
+a:hover, a:focus {
+    text-decoration:none;
+    color:#bb7a2a;
+}
+a:active {
+    text-decoration:none;
+    color:#4c6b87;
+}
+a[name] {
+    color:#353833;
+}
+a[name]:hover {
+    text-decoration:none;
+    color:#353833;
+}
+pre {
+    font-size:1.3em;
+}
+h1 {
+    font-size:1.8em;
+}
+h2 {
+    font-size:1.5em;
+}
+h3 {
+    font-size:1.4em;
+}
+h4 {
+    font-size:1.3em;
+}
+h5 {
+    font-size:1.2em;
+}
+h6 {
+    font-size:1.1em;
+}
+ul {
+    list-style-type:disc;
+}
+code, tt {
+    font-size:1.2em;
+}
+dt code {
+    font-size:1.2em;
+}
+table tr td dt code {
+    font-size:1.2em;
+    vertical-align:top;
+}
+sup {
+    font-size:.6em;
+}
+/*
+Document title and Copyright styles
+*/
+.clear {
+    clear:both;
+    height:0px;
+    overflow:hidden;
+}
+.aboutLanguage {
+    float:right;
+    padding:0px 21px;
+    font-size:.8em;
+    z-index:200;
+    margin-top:-7px;
+}
+.legalCopy {
+    margin-left:.5em;
+}
+.bar a, .bar a:link, .bar a:visited, .bar a:active {
+    color:#FFFFFF;
+    text-decoration:none;
+}
+.bar a:hover, .bar a:focus {
+    color:#bb7a2a;
+}
+.tab {
+    background-color:#0066FF;
+    background-image:url(resources/titlebar.gif);
+    background-position:left top;
+    background-repeat:no-repeat;
+    color:#ffffff;
+    padding:8px;
+    width:5em;
+    font-weight:bold;
+}
+/*
+Navigation bar styles
+*/
+.bar {
+    background-image:url(resources/background.gif);
+    background-repeat:repeat-x;
+    color:#FFFFFF;
+    padding:.8em .5em .4em .8em;
+    height:auto;/*height:1.8em;*/
+    font-size:1em;
+    margin:0;
+}
+.topNav {
+    background-image:url(resources/background.gif);
+    background-repeat:repeat-x;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+}
+.bottomNav {
+    margin-top:10px;
+    background-image:url(resources/background.gif);
+    background-repeat:repeat-x;
+    color:#FFFFFF;
+    float:left;
+    padding:0;
+    width:100%;
+    clear:right;
+    height:2.8em;
+    padding-top:10px;
+    overflow:hidden;
+}
+.subNav {
+    background-color:#dee3e9;
+    border-bottom:1px solid #9eadc0;
+    float:left;
+    width:100%;
+    overflow:hidden;
+}
+.subNav div {
+    clear:left;
+    float:left;
+    padding:0 0 5px 6px;
+}
+ul.navList, ul.subNavList {
+    float:left;
+    margin:0 25px 0 0;
+    padding:0;
+}
+ul.navList li{
+    list-style:none;
+    float:left;
+    padding:3px 6px;
+}
+ul.subNavList li{
+    list-style:none;
+    float:left;
+    font-size:90%;
+}
+.topNav a:link, .topNav a:active, .topNav a:visited, .bottomNav a:link, .bottomNav a:active, .bottomNav a:visited {
+    color:#FFFFFF;
+    text-decoration:none;
+}
+.topNav a:hover, .bottomNav a:hover {
+    text-decoration:none;
+    color:#bb7a2a;
+}
+.navBarCell1Rev {
+    background-image:url(resources/tab.gif);
+    background-color:#a88834;
+    color:#FFFFFF;
+    margin: auto 5px;
+    border:1px solid #c9aa44;
+}
+/*
+Page header and footer styles
+*/
+.header, .footer {
+    clear:both;
+    margin:0 20px;
+    padding:5px 0 0 0;
+}
+.indexHeader {
+    margin:10px;
+    position:relative;
+}
+.indexHeader h1 {
+    font-size:1.3em;
+}
+.title {
+    color:#2c4557;
+    margin:10px 0;
+}
+.subTitle {
+    margin:5px 0 0 0;
+}
+.header ul {
+    margin:0 0 25px 0;
+    padding:0;
+}
+.footer ul {
+    margin:20px 0 5px 0;
+}
+.header ul li, .footer ul li {
+    list-style:none;
+    font-size:1.2em;
+}
+/*
+Heading styles
+*/
+div.details ul.blockList ul.blockList ul.blockList li.blockList h4, div.details ul.blockList ul.blockList ul.blockListLast li.blockList h4 {
+    background-color:#dee3e9;
+    border-top:1px solid #9eadc0;
+    border-bottom:1px solid #9eadc0;
+    margin:0 0 6px -8px;
+    padding:2px 5px;
+}
+ul.blockList ul.blockList ul.blockList li.blockList h3 {
+    background-color:#dee3e9;
+    border-top:1px solid #9eadc0;
+    border-bottom:1px solid #9eadc0;
+    margin:0 0 6px -8px;
+    padding:2px 5px;
+}
+ul.blockList ul.blockList li.blockList h3 {
+    padding:0;
+    margin:15px 0;
+}
+ul.blockList li.blockList h2 {
+    padding:0px 0 20px 0;
+}
+/*
+Page layout container styles
+*/
+.contentContainer, .sourceContainer, .classUseContainer, .serializedFormContainer, .constantValuesContainer {
+    clear:both;
+    padding:10px 20px;
+    position:relative;
+}
+.indexContainer {
+    margin:10px;
+    position:relative;
+    font-size:1.0em;
+}
+.indexContainer h2 {
+    font-size:1.1em;
+    padding:0 0 3px 0;
+}
+.indexContainer ul {
+    margin:0;
+    padding:0;
+}
+.indexContainer ul li {
+    list-style:none;
+}
+.contentContainer .description dl dt, .contentContainer .details dl dt, .serializedFormContainer dl dt {
+    font-size:1.1em;
+    font-weight:bold;
+    margin:10px 0 0 0;
+    color:#4E4E4E;
+}
+.contentContainer .description dl dd, .contentContainer .details dl dd, .serializedFormContainer dl dd {
+    margin:10px 0 10px 20px;
+}
+.serializedFormContainer dl.nameValue dt {
+    margin-left:1px;
+    font-size:1.1em;
+    display:inline;
+    font-weight:bold;
+}
+.serializedFormContainer dl.nameValue dd {
+    margin:0 0 0 1px;
+    font-size:1.1em;
+    display:inline;
+}
+/*
+List styles
+*/
+ul.horizontal li {
+    display:inline;
+    font-size:0.9em;
+}
+ul.inheritance {
+    margin:0;
+    padding:0;
+}
+ul.inheritance li {
+    display:inline;
+    list-style:none;
+}
+ul.inheritance li ul.inheritance {
+    margin-left:15px;
+    padding-left:15px;
+    padding-top:1px;
+}
+ul.blockList, ul.blockListLast {
+    margin:10px 0 10px 0;
+    padding:0;
+}
+ul.blockList li.blockList, ul.blockListLast li.blockList {
+    list-style:none;
+    margin-bottom:25px;
+}
+ul.blockList ul.blockList li.blockList, ul.blockList ul.blockListLast li.blockList {
+    padding:0px 20px 5px 10px;
+    border:1px solid #9eadc0;
+    background-color:#f9f9f9;
+}
+ul.blockList ul.blockList ul.blockList li.blockList, ul.blockList ul.blockList ul.blockListLast li.blockList {
+    padding:0 0 5px 8px;
+    background-color:#ffffff;
+    border:1px solid #9eadc0;
+    border-top:none;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockList {
+    margin-left:0;
+    padding-left:0;
+    padding-bottom:15px;
+    border:none;
+    border-bottom:1px solid #9eadc0;
+}
+ul.blockList ul.blockList ul.blockList ul.blockList li.blockListLast {
+    list-style:none;
+    border-bottom:none;
+    padding-bottom:0;
+}
+table tr td dl, table tr td dl dt, table tr td dl dd {
+    margin-top:0;
+    margin-bottom:1px;
+}
+/*
+Table styles
+*/
+.contentContainer table, .classUseContainer table, .constantValuesContainer table {
+    border-bottom:1px solid #9eadc0;
+    width:100%;
+}
+.contentContainer ul li table, .classUseContainer ul li table, .constantValuesContainer ul li table {
+    width:100%;
+}
+.contentContainer .description table, .contentContainer .details table {
+    border-bottom:none;
+}
+.contentContainer ul li table th.colOne, .contentContainer ul li table th.colFirst, .contentContainer ul li table th.colLast, .classUseContainer ul li table th, .constantValuesContainer ul li table th, .contentContainer ul li table td.colOne, .contentContainer ul li table td.colFirst, .contentContainer ul li table td.colLast, .classUseContainer ul li table td, .constantValuesContainer ul li table td{
+    vertical-align:top;
+    padding-right:20px;
+}
+.contentContainer ul li table th.colLast, .classUseContainer ul li table th.colLast,.constantValuesContainer ul li table th.colLast,
+.contentContainer ul li table td.colLast, .classUseContainer ul li table td.colLast,.constantValuesContainer ul li table td.colLast,
+.contentContainer ul li table th.colOne, .classUseContainer ul li table th.colOne,
+.contentContainer ul li table td.colOne, .classUseContainer ul li table td.colOne {
+    padding-right:3px;
+}
+.overviewSummary caption, .packageSummary caption, .contentContainer ul.blockList li.blockList caption, .summary caption, .classUseContainer caption, .constantValuesContainer caption {
+    position:relative;
+    text-align:left;
+    background-repeat:no-repeat;
+    color:#FFFFFF;
+    font-weight:bold;
+    clear:none;
+    overflow:hidden;
+    padding:0px;
+    margin:0px;
+}
+caption a:link, caption a:hover, caption a:active, caption a:visited {
+    color:#FFFFFF;
+}
+.overviewSummary caption span, .packageSummary caption span, .contentContainer ul.blockList li.blockList caption span, .summary caption span, .classUseContainer caption span, .constantValuesContainer caption span {
+    white-space:nowrap;
+    padding-top:8px;
+    padding-left:8px;
+    display:block;
+    float:left;
+    background-image:url(resources/titlebar.gif);
+    height:18px;
+}
+.overviewSummary .tabEnd, .packageSummary .tabEnd, .contentContainer ul.blockList li.blockList .tabEnd, .summary .tabEnd, .classUseContainer .tabEnd, .constantValuesContainer .tabEnd {
+    width:10px;
+    background-image:url(resources/titlebar_end.gif);
+    background-repeat:no-repeat;
+    background-position:top right;
+    position:relative;
+    float:left;
+}
+ul.blockList ul.blockList li.blockList table {
+    margin:0 0 12px 0px;
+    width:100%;
+}
+.tableSubHeadingColor {
+    background-color: #EEEEFF;
+}
+.altColor {
+    background-color:#eeeeef;
+}
+.rowColor {
+    background-color:#ffffff;
+}
+.overviewSummary td, .packageSummary td, .contentContainer ul.blockList li.blockList td, .summary td, .classUseContainer td, .constantValuesContainer td {
+    text-align:left;
+    padding:3px 3px 3px 7px;
+}
+th.colFirst, th.colLast, th.colOne, .constantValuesContainer th {
+    background:#dee3e9;
+    border-top:1px solid #9eadc0;
+    border-bottom:1px solid #9eadc0;
+    text-align:left;
+    padding:3px 3px 3px 7px;
+}
+td.colOne a:link, td.colOne a:active, td.colOne a:visited, td.colOne a:hover, td.colFirst a:link, td.colFirst a:active, td.colFirst a:visited, td.colFirst a:hover, td.colLast a:link, td.colLast a:active, td.colLast a:visited, td.colLast a:hover, .constantValuesContainer td a:link, .constantValuesContainer td a:active, .constantValuesContainer td a:visited, .constantValuesContainer td a:hover {
+    font-weight:bold;
+}
+td.colFirst, th.colFirst {
+    border-left:1px solid #9eadc0;
+    white-space:nowrap;
+}
+td.colLast, th.colLast {
+    border-right:1px solid #9eadc0;
+}
+td.colOne, th.colOne {
+    border-right:1px solid #9eadc0;
+    border-left:1px solid #9eadc0;
+}
+table.overviewSummary  {
+    padding:0px;
+    margin-left:0px;
+}
+table.overviewSummary td.colFirst, table.overviewSummary th.colFirst,
+table.overviewSummary td.colOne, table.overviewSummary th.colOne {
+    width:25%;
+    vertical-align:middle;
+}
+table.packageSummary td.colFirst, table.overviewSummary th.colFirst {
+    width:25%;
+    vertical-align:middle;
+}
+/*
+Content styles
+*/
+.description pre {
+    margin-top:0;
+}
+.deprecatedContent {
+    margin:0;
+    padding:10px 0;
+}
+.docSummary {
+    padding:0;
+}
+/*
+Formatting effect styles
+*/
+.sourceLineNo {
+    color:green;
+    padding:0 30px 0 0;
+}
+h1.hidden {
+    visibility:hidden;
+    overflow:hidden;
+    font-size:.9em;
+}
+.block {
+    display:block;
+    margin:3px 0 0 0;
+}
+.strong {
+    font-weight:bold;
+}
+
diff --git a/aaa-shiro/src/site/site.xml b/aaa-shiro/src/site/site.xml
new file mode 100644 (file)
index 0000000..2867e74
--- /dev/null
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="aaa-shiro">
+    <body>
+        <menu name="Overview">
+            <item name="Javadocs" href="apidocs/index.html" />
+        </menu>
+    </body>
+</project>
index 6ed91774fe5fb15b36812154edead775612dd949..1315c942289f878c3f0f0103bc3602c2319ba02a 100644 (file)
                 <artifactId>aaa-authn-mdsal-store-impl</artifactId>
                 <version>${project.version}</version>
             </dependency>
+            <dependency>
+                <groupId>${project.groupId}</groupId>
+                <artifactId>aaa-shiro-api</artifactId>
+                <version>${project.version}</version>
+            </dependency>
             <dependency>
                 <groupId>${project.groupId}</groupId>
                 <artifactId>aaa-shiro</artifactId>
diff --git a/pom.xml b/pom.xml
index 249e908d8a1314778abb5c5e15bb6b408af16200..a884dde140049894a9ce1e516e9c22bf7c7e58ae 100644 (file)
--- a/pom.xml
+++ b/pom.xml
@@ -5,8 +5,7 @@
  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
--->
-<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">
+--><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>
     <groupId>org.opendaylight.odlparent</groupId>
@@ -39,7 +38,6 @@
     <module>aaa-authn-mdsal-store</module>
     <module>aaa-authz</module>
     <module>aaa-credential-store-api</module>
-    <module>aaa-shiro</module>
     <module>aaa-shiro-act</module>
     <module>aaa-h2-store</module>
     <module>aaa-cert</module>
@@ -51,6 +49,7 @@
     <module>features</module>
     <module>karaf</module>
     <module>parent</module>
+    <module>aaa-shiro</module>
   </modules>
 
   <build>
@@ -78,4 +77,4 @@
     <tag>HEAD</tag>
     <url>https://wiki.opendaylight.org/view/AAA:Main</url>
   </scm>
-</project>
+</project>
\ No newline at end of file