Revert "Ported original att source to openaz"

This reverts commit a1d9310097fcde4f4c5e9a7980e0916cb62a5335.
diff --git a/openaz-xacml-pap-admin/pom.xml b/openaz-xacml-pap-admin/pom.xml
index c494f77..b027045 100644
--- a/openaz-xacml-pap-admin/pom.xml
+++ b/openaz-xacml-pap-admin/pom.xml
@@ -23,284 +23,4 @@
     </parent>
     <modelVersion>4.0.0</modelVersion>
     <artifactId>openaz-xacml-pap-admin</artifactId>
-    <packaging>war</packaging>
-
-    <repositories>
-        <repository>
-            <id>vaadin-addons</id>
-            <url>http://maven.vaadin.com/vaadin-addons</url>
-        </repository>
-        <repository>
-            <id>vaadin-snapshots</id>
-            <url>http://oss.sonatype.org/content/repositories/vaadin-snapshots/</url>
-            <releases>
-                <enabled>false</enabled>
-            </releases>
-            <snapshots>
-                <enabled>true</enabled>
-            </snapshots>
-        </repository>
-    </repositories>
-
-    <!--
-    <pluginRepositories>
-        <pluginRepository>
-            <id>vaadin-snapshots</id>
-            <url>http://oss.sonatype.org/content/repositories/vaadin-snapshots/</url>
-            <releases>
-                <enabled>false</enabled>
-            </releases>
-            <snapshots>
-                <enabled>true</enabled>
-            </snapshots>
-        </pluginRepository>
-    </pluginRepositories>
-    -->
-
-    <properties>
-        <vaadin.version>7.1.11</vaadin.version>
-        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    </properties>
-
-    <dependencies>
-        <dependency>
-            <groupId>org.apache.openaz</groupId>
-            <artifactId>openaz-xacml</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.openaz</groupId>
-            <artifactId>openaz-xacml-pdp</artifactId>
-        </dependency>
-
-
-        <!-- The core server part of Vaadin -->
-        <dependency>
-            <groupId>com.vaadin</groupId>
-            <artifactId>vaadin-server</artifactId>
-            <version>${vaadin.version}</version>
-        </dependency>
-
-        <!-- Vaadin themes -->
-        <dependency>
-            <groupId>com.vaadin</groupId>
-            <artifactId>vaadin-themes</artifactId>
-            <version>${vaadin.version}</version>
-        </dependency>
-
-        <!-- Push support -->
-        <dependency>
-            <groupId>com.vaadin</groupId>
-            <artifactId>vaadin-push</artifactId>
-            <version>${vaadin.version}</version>
-        </dependency>
-
-        <!--
-            Use the appropriate javax.servlet version for your
-            version of Jetty and other considerations.
-
-            Jetty 6 - Servlet API 2.4
-
-            <dependency>
-                <groupId>javax.servlet</groupId>
-                <artifactId>servlet-api</artifactId>
-                <version>2.4</version>
-                <scope>provided</scope>
-            </dependency>
-
-            Jetty 7 - Servlet API 2.5 / Standard Location
-
-            <dependency>
-                <groupId>javax.servlet</groupId>
-                <artifactId>servlet-api</artifactId>
-                <version>2.5</version>
-                <scope>provided</scope>
-            </dependency>
-
-            Jetty 7 - Servlet API 2.5 / OSGi bundle ready
-
-            <dependency>
-                <groupId>org.eclipse.jetty.orbit</groupId>
-                <artifactId>javax.servlet</artifactId>
-                <version>2.5.0.v201103041518</version>
-                <scope>provided</scope>
-            </dependency>
-
-            Jetty 8 - Servlet API 3.0 / Standard Location / OSGi bundle ready
-
-            <dependency>
-                <groupId>javax.servlet</groupId>
-                <artifactId>javax.servlet-api</artifactId>
-                <version>3.0.1</version>
-                <scope>provided</scope>
-            </dependency>
-
-            Jetty 9 - Servlet API 3.1 / Standard Location / OSGi bundle ready
-
-            <dependency>
-                <groupId>javax.servlet</groupId>
-                <artifactId>javax.servlet-api</artifactId>
-                <version>3.1.0</version>
-                <scope>provided</scope>
-            </dependency>
-        -->
-
-        <!-- Jetty 8 - Servlet API 3.0 / Standard Location / OSGi bundle ready -->
-        <dependency>
-            <groupId>javax.servlet</groupId>
-            <artifactId>javax.servlet-api</artifactId>
-            <version>3.0.1</version>
-            <scope>provided</scope>
-        </dependency>
-
-        <!-- Precompiled DefaultWidgetSet -->
-        <dependency>
-            <groupId>com.vaadin</groupId>
-            <artifactId>vaadin-client-compiled</artifactId>
-            <version>${vaadin.version}</version>
-        </dependency>
-
-        <!-- Vaadin client side, needed for widget set compilation -->
-        <dependency>
-            <groupId>com.vaadin</groupId>
-            <artifactId>vaadin-client</artifactId>
-            <scope>provided</scope>
-            <version>${vaadin.version}</version>
-        </dependency>
-
-        <!-- Compiler for custom widget sets. Should not be deployed -->
-        <dependency>
-            <groupId>com.vaadin</groupId>
-            <artifactId>vaadin-client-compiler</artifactId>
-            <scope>provided</scope>
-            <version>${vaadin.version}</version>
-        </dependency>
-
-        <dependency>
-            <groupId>com.vaadin.addon</groupId>
-            <artifactId>jpacontainer</artifactId>
-            <version>3.1.1</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.vaadin.addon</groupId>
-            <artifactId>confirmdialog</artifactId>
-            <version>2.0.5</version>
-        </dependency>
-
-        <dependency>
-            <groupId>org.apache.openaz</groupId>
-            <artifactId>openaz-xacml</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.openaz</groupId>
-            <artifactId>openaz-xacml-rest</artifactId>
-        </dependency>
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>log4j</artifactId>
-            <version>1.2.17</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-logging</groupId>
-            <artifactId>commons-logging</artifactId>
-            <version>1.1.3</version>
-            <exclusions>
-                <exclusion>
-                    <groupId>javax.servlet</groupId>
-                    <artifactId>servlet-api</artifactId>
-                </exclusion>
-            </exclusions>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.jetty</groupId>
-            <artifactId>jetty-continuation</artifactId>
-            <version>9.0.0.v20130308</version>
-        </dependency>
-        <dependency>
-            <groupId>log4j</groupId>
-            <artifactId>apache-log4j-extras</artifactId>
-            <version>1.2.17</version>
-        </dependency>
-        <dependency>
-            <groupId>commons-io</groupId>
-            <artifactId>commons-io</artifactId>
-            <version>2.4</version>
-        </dependency>
-        <dependency>
-            <groupId>org.apache.commons</groupId>
-            <artifactId>commons-compress</artifactId>
-            <version>1.8</version>
-        </dependency>
-        <dependency>
-            <groupId>com.fasterxml.jackson.core</groupId>
-            <artifactId>jackson-databind</artifactId>
-            <version>2.3.0-rc1</version>
-        </dependency>
-        <dependency>
-            <groupId>com.google.guava</groupId>
-            <artifactId>guava</artifactId>
-            <version>14.0.1</version>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.jgit</groupId>
-            <artifactId>org.eclipse.jgit</artifactId>
-            <version>3.2.0.201312181205-r</version>
-        </dependency>
-        <dependency>
-            <groupId>com.h2database</groupId>
-            <artifactId>h2</artifactId>
-            <version>1.3.174</version>
-        </dependency>
-        <dependency>
-            <groupId>mysql</groupId>
-            <artifactId>mysql-connector-java</artifactId>
-            <version>5.1.30</version>
-        </dependency>
-        <dependency>
-            <groupId>postgresql</groupId>
-            <artifactId>postgresql</artifactId>
-            <version>9.1-901.jdbc4</version>
-        </dependency>
-        <dependency>
-            <groupId>org.hsqldb</groupId>
-            <artifactId>hsqldb</artifactId>
-            <version>2.3.2</version>
-        </dependency>
-        <dependency>
-            <groupId>junit</groupId>
-            <artifactId>junit</artifactId>
-            <version>4.11</version>
-        </dependency>
-        <dependency>
-            <groupId>org.eclipse.persistence</groupId>
-            <artifactId>eclipselink</artifactId>
-            <version>2.5.2</version>
-        </dependency>
-    </dependencies>
-
-    <build>
-        <pluginManagement>
-            <plugins>
-                <plugin>            
-                    <groupId>org.apache.maven.plugins</groupId>
-                    <artifactId>maven-war-plugin</artifactId>
-                    <configuration>
-                        <webXml>src\main\webapp\WEB-INF\web.xml</webXml>        
-                        <resource>
-                            <directory>src/META-INF</directory>
-                            <targetPath>META-INF</targetPath>
-                            <includes>
-                                <include>persistence.xml</include>
-                                <include>data.sql</include>
-                                <include>drop.sql</include>
-                                <include>empty.sql</include>
-                                <include>views.sql</include>
-                            </includes>
-                        </resource>
-                    </configuration>
-                </plugin>
-            </plugins>
-        </pluginManagement>
-    </build>
-
 </project>
diff --git a/openaz-xacml-pap-admin/src/META-INF/data.sql b/openaz-xacml-pap-admin/src/META-INF/data.sql
deleted file mode 100644
index a679b4d..0000000
--- a/openaz-xacml-pap-admin/src/META-INF/data.sql
+++ /dev/null
@@ -1,723 +0,0 @@
-INSERT INTO ConstraintType (id, constraint_type, description) VALUES (1,'Range','Set a range of min and/or max integer/double values the attribute can be set to during policy creation.');
-INSERT INTO ConstraintType (id, constraint_type, description) VALUES (2,'Regular Expression','Define a regular expression the attribute must match against during policy creation.');
-INSERT INTO ConstraintType (id, constraint_type, description) VALUES (3,'Enumeration','Enumerate a set of values that the attribute may be set to during policy creation.');
-
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (4,'subject','S','urn:oasis:names:tc:xacml:1.0:subject-category:intermediary-subject','intermediary-subject');
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (5,'resource','S','urn:oasis:names:tc:xacml:3.0:attribute-category:resource','resource');
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (6,'subject','S','urn:oasis:names:tc:xacml:1.0:subject-category:codebase','codebase');
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (7,'action','S','urn:oasis:names:tc:xacml:3.0:attribute-category:action','action');
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (8,'subject','S','urn:oasis:names:tc:xacml:1.0:subject-category:access-subject','access-subject');
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (9,'environment','S','urn:oasis:names:tc:xacml:3.0:attribute-category:environment','environment');
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (10,'subject','S','urn:oasis:names:tc:xacml:1.0:subject-category:requesting-machine','requesting-machine');
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (11,'subject','S','urn:oasis:names:tc:xacml:1.0:subject-category:recipient-subject','recipient-subject');
-
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (12,'S','integer','http://www.w3.org/2001/XMLSchema#integer');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (13,'S','base64Binary','http://www.w3.org/2001/XMLSchema#base64Binary');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (14,'S','x500Name','urn:oasis:names:tc:xacml:1.0:data-type:x500Name');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (15,'S','dayTimeDuration','http://www.w3.org/2001/XMLSchema#dayTimeDuration');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (16,'S','time','http://www.w3.org/2001/XMLSchema#time');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (17,'S','dnsName','urn:oasis:names:tc:xacml:2.0:data-type:dnsName');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (18,'S','boolean','http://www.w3.org/2001/XMLSchema#boolean');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (19,'S','dateTime','http://www.w3.org/2001/XMLSchema#dateTime');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (20,'S','rfc822Name','urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (21,'S','date','http://www.w3.org/2001/XMLSchema#date');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (22,'S','ipAddress','urn:oasis:names:tc:xacml:2.0:data-type:ipAddress');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (23,'S','yearMonthDuration','http://www.w3.org/2001/XMLSchema#yearMonthDuration');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (24,'S','hexBinary','http://www.w3.org/2001/XMLSchema#hexBinary');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (25,'S','double','http://www.w3.org/2001/XMLSchema#double');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (26,'S','string','http://www.w3.org/2001/XMLSchema#string');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (27,'S','anyURI','http://www.w3.org/2001/XMLSchema#anyURI');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (28,'S','xpathExpression','urn:oasis:names:tc:xacml:3.0:data-type:xpathExpression');
-
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (29,'S','ordered-deny-overrides','urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:ordered-deny-overrides');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (30,'S','on-permit-apply-second','urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:on-permit-apply-second');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (31,'S','deny-overrides','urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:deny-overrides');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (32,'S','permit-unless-deny','urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:permit-unless-deny');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (33,'S','deny-unless-permit','urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:deny-unless-permit');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (34,'S','permit-overrides','urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:permit-overrides');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (35,'S','only-one-applicable','urn:oasis:names:tc:xacml:1.0:policy-combining-algorithm:only-one-applicable');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (36,'S','first-applicable','urn:oasis:names:tc:xacml:1.0:policy-combining-algorithm:first-applicable');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (37,'S','ordered-permit-overrides','urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:ordered-permit-overrides');
-
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (38,'S','permit-unless-deny','urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-unless-deny');
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (39,'S','permit-overrides','urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides');
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (40,'S','deny-overrides','urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-overrides');
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (41,'S','ordered-permit-overrides','urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:ordered-permit-overrides');
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (42,'S','deny-unless-permit','urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-unless-permit');
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (43,'S','ordered-deny-overrides','urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:ordered-deny-overrides');
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (44,'S','only-one-applicable','urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:only-one-applicable');
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (45,'S','first-applicable','urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable');
-
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (1,'integer-greater-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:integer-greater-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (2,'integer-subtract','urn:oasis:names:tc:xacml:1.0:function:integer-subtract',12,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (3,'double-to-integer','urn:oasis:names:tc:xacml:1.0:function:double-to-integer',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (4,'integer-one-and-only','urn:oasis:names:tc:xacml:1.0:function:integer-one-and-only',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (5,'double-one-and-only','urn:oasis:names:tc:xacml:1.0:function:double-one-and-only',25,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (6,'string-equal','urn:oasis:names:tc:xacml:1.0:function:string-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (7,'string-equal-ignore-case','urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (8,'string-starts-with','urn:oasis:names:tc:xacml:3.0:function:string-starts-with',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (9,'string-ends-with','urn:oasis:names:tc:xacml:3.0:function: string-ends-with',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (10,'string-concatenate','urn:oasis:names:tc:xacml:2.0:function:string-concatenate',26,0,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (11,'boolean-from-string','urn:oasis:names:tc:xacml:3.0:function:boolean-from-string',18,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (12,'string-from-boolean','urn:oasis:names:tc:xacml:3.0:function:string-from-boolean',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (13,'integer-from-string','urn:oasis:names:tc:xacml:3.0:function:integer-from-string',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (14,'string-from-integer','urn:oasis:names:tc:xacml:3.0:function:string-from-integer',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (15,'double-from-string','urn:oasis:names:tc:xacml:3.0:function:double-from-string',25,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (16,'string-from-double','urn:oasis:names:tc:xacml:3.0:function:string-from-double',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (17,'time-from-string','urn:oasis:names:tc:xacml:3.0:function:time-from-string',16,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (18,'string-from-time','urn:oasis:names:tc:xacml:3.0:function:string-from-time',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (19,'date-from-string','urn:oasis:names:tc:xacml:3.0:function:date-from-string',21,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (20,'string-from-date','urn:oasis:names:tc:xacml:3.0:function:string-from-date',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (21,'dateTime-from-string','urn:oasis:names:tc:xacml:3.0:function:dateTime-from-string',19,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (22,'string-from-dateTime','urn:oasis:names:tc:xacml:3.0:function:string-from-dateTime',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (23,'anyURI-from-string','urn:oasis:names:tc:xacml:3.0:function:anyURI-from-string',27,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (24,'string-from-anyURI','urn:oasis:names:tc:xacml:3.0:function:string-from-anyURI',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (25,'dayTimeDuration-from-string','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-from-string',15,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (26,'string-from-dayTimeDuration','urn:oasis:names:tc:xacml:3.0:function:string-from-dayTimeDuration',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (27,'yearMonthDuration-from-string','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-from-string',23,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (28,'string-from-yearMonthDuration','urn:oasis:names:tc:xacml:3.0:function:string-from-yearMonthDuration',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (29,'x500Name-from-string','urn:oasis:names:tc:xacml:3.0:function:x500Name-from-string',14,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (30,'string-from-x500Name','urn:oasis:names:tc:xacml:3.0:function:string-from-x500Name',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (31,'rfc822Name-from-string','urn:oasis:names:tc:xacml:3.0:function:rfc822Name-from-string',20,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (32,'string-from-rfc822Name','urn:oasis:names:tc:xacml:3.0:function:string-from-rfc822Name',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (33,'ipAddress-from-string','urn:oasis:names:tc:xacml:3.0:function:ipAddress-from-string',22,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (34,'string-from-ipAddress','urn:oasis:names:tc:xacml:3.0:function:string-from-ipAddress',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (35,'dnsName-from-string','urn:oasis:names:tc:xacml:3.0:function:dnsName-from-string',17,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (36,'string-from-dnsName','urn:oasis:names:tc:xacml:3.0:function:string-from-dnsName',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (37,'anyURI-starts-with','urn:oasis:names:tc:xacml:3.0:function:anyURI-starts-with',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (38,'anyURI-ends-with','urn:oasis:names:tc:xacml:3.0:function:anyURI-ends-with',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (39,'string-contains','urn:oasis:names:tc:xacml:3.0:function:string-contains',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (40,'anyURI-contains','urn:oasis:names:tc:xacml:3.0:function:anyURI-contains',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (41,'string-substring','urn:oasis:names:tc:xacml:3.0:function:string-substring',26,0,0,3,3,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (42,'anyURI-substring','urn:oasis:names:tc:xacml:3.0:function:anyURI-substring',26,0,0,3,3,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (43,'boolean-equal','urn:oasis:names:tc:xacml:1.0:function:boolean-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (44,'integer-equal','urn:oasis:names:tc:xacml:1.0:function:integer-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (45,'double-equal','urn:oasis:names:tc:xacml:1.0:function:double-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (46,'date-equal','urn:oasis:names:tc:xacml:1.0:function:date-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (47,'time-equal','urn:oasis:names:tc:xacml:1.0:function:time-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (48,'dateTime-equal','urn:oasis:names:tc:xacml:1.0:function:dateTime-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (49,'dayTimeDuration-equal','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (50,'yearMonthDuration-equal','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (51,'anyURI-equal','urn:oasis:names:tc:xacml:1.0:function:anyURI-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (52,'x500Name-equal','urn:oasis:names:tc:xacml:1.0:function:x500Name-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (53,'rfc822Name-equal','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (54,'hexBinary-equal','urn:oasis:names:tc:xacml:1.0:function:hexBinary-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (55,'base64Binary-equal','urn:oasis:names:tc:xacml:1.0:function:base64Binary-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (56,'integer-add','urn:oasis:names:tc:xacml:1.0:function:integer-add',12,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (57,'double-add','urn:oasis:names:tc:xacml:1.0:function:double-add',25,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (58,'double-subtract','urn:oasis:names:tc:xacml:1.0:function:double-subtract',25,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (59,'integer-multiply','urn:oasis:names:tc:xacml:1.0:function:integer-multiply',12,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (60,'double-multiply','urn:oasis:names:tc:xacml:1.0:function:double-multiply',25,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (61,'integer-divide','urn:oasis:names:tc:xacml:1.0:function:integer-divide',12,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (62,'double-divide','urn:oasis:names:tc:xacml:1.0:function:double-divide',25,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (63,'integer-mod','urn:oasis:names:tc:xacml:1.0:function:integer-mod',12,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (64,'integer-abs','urn:oasis:names:tc:xacml:1.0:function:integer-abs',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (65,'double-abs','urn:oasis:names:tc:xacml:1.0:function:double-abs',25,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (66,'round','urn:oasis:names:tc:xacml:1.0:function:round',25,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (67,'floor','urn:oasis:names:tc:xacml:1.0:function:floor',25,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (68,'string-normalize-space','urn:oasis:names:tc:xacml:1.0:function:string-normalize-space',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (69,'string-normalize-to-lower-case','urn:oasis:names:tc:xacml:1.0:function:string-normalize-to-lower-case',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (70,'integer-to-double','urn:oasis:names:tc:xacml:1.0:function:integer-to-double',25,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (71,'integer-greater-than','urn:oasis:names:tc:xacml:1.0:function:integer-greater-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (72,'integer-less-than','urn:oasis:names:tc:xacml:1.0:function:integer-less-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (73,'integer-less-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:integer-less-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (74,'double-greater-than','urn:oasis:names:tc:xacml:1.0:function:double-greater-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (75,'double-greater-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:double-greater-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (76,'double-less-than','urn:oasis:names:tc:xacml:1.0:function:double-less-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (77,'double-less-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:double-less-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (78,'dateTime-add-dayTimeDuration','urn:oasis:names:tc:xacml:3.0:function:dateTime-add-dayTimeDuration',19,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (79,'dateTime-add-yearMonthDuration','urn:oasis:names:tc:xacml:3.0:function:dateTime-add-yearMonthDuration',19,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (80,'dateTime-subtract-dayTimeDuration','urn:oasis:names:tc:xacml:3.0:function:dateTime-subtract-dayTimeDuration',19,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (81,'dateTime-subtract-yearMonthDuration','urn:oasis:names:tc:xacml:3.0:function:dateTime-subtract-yearMonthDuration',19,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (82,'date-add-yearMonthDuration','urn:oasis:names:tc:xacml:3.0:function:date-add-yearMonthDuration',21,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (83,'date-subtract-yearMonthDuration','urn:oasis:names:tc:xacml:3.0:function:date-subtract-yearMonthDuration',21,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (84,'string-greater-than','urn:oasis:names:tc:xacml:1.0:function:string-greater-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (85,'string-greater-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:string-greater-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (86,'string-less-than','urn:oasis:names:tc:xacml:1.0:function:string-less-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (87,'string-less-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:string-less-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (88,'time-greater-than','urn:oasis:names:tc:xacml:1.0:function:time-greater-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (89,'time-greater-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:time-greater-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (90,'time-less-than','urn:oasis:names:tc:xacml:1.0:function:time-less-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (91,'time-less-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:time-less-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (92,'time-in-range','urn:oasis:names:tc:xacml:2.0:function:time-in-range',18,0,0,3,3,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (93,'dateTime-greater-than','urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (94,'dateTime-greater-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (95,'dateTime-less-than','urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (96,'dateTime-less-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (97,'date-greater-than','urn:oasis:names:tc:xacml:1.0:function:date-greater-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (98,'date-greater-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:date-greater-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (99,'date-less-than','urn:oasis:names:tc:xacml:1.0:function:date-less-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (100,'date-less-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:date-less-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (101,'string-one-and-only','urn:oasis:names:tc:xacml:1.0:function:string-one-and-only',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (102,'string-bag-size','urn:oasis:names:tc:xacml:1.0:function:string-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (103,'string-is-in','urn:oasis:names:tc:xacml:1.0:function:string-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (104,'string-bag','urn:oasis:names:tc:xacml:1.0:function:string-bag',26,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (105,'integer-bag-size','urn:oasis:names:tc:xacml:1.0:function:integer-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (106,'integer-is-in','urn:oasis:names:tc:xacml:1.0:function:integer-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (107,'integer-bag','urn:oasis:names:tc:xacml:1.0:function:integer-bag',12,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (108,'double-bag-size','urn:oasis:names:tc:xacml:1.0:function:double-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (109,'double-is-in','urn:oasis:names:tc:xacml:1.0:function:double-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (110,'double-bag','urn:oasis:names:tc:xacml:1.0:function:double-bag',25,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (111,'boolean-one-and-only','urn:oasis:names:tc:xacml:1.0:function:boolean-one-and-only',18,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (112,'boolean-bag-size','urn:oasis:names:tc:xacml:1.0:function:boolean-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (113,'boolean-is-in','urn:oasis:names:tc:xacml:1.0:function:boolean-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (114,'boolean-bag','urn:oasis:names:tc:xacml:1.0:function:boolean-bag',18,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (115,'time-one-and-only','urn:oasis:names:tc:xacml:1.0:function:time-one-and-only',16,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (116,'time-bag-size','urn:oasis:names:tc:xacml:1.0:function:time-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (117,'time-is-in','urn:oasis:names:tc:xacml:1.0:function:time-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (118,'time-bag','urn:oasis:names:tc:xacml:1.0:function:time-bag',16,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (119,'date-one-and-only','urn:oasis:names:tc:xacml:1.0:function:date-one-and-only',21,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (120,'date-bag-size','urn:oasis:names:tc:xacml:1.0:function:date-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (121,'date-is-in','urn:oasis:names:tc:xacml:1.0:function:date-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (122,'date-bag','urn:oasis:names:tc:xacml:1.0:function:date-bag',21,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (123,'dateTime-one-and-only','urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only',19,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (124,'dateTime-bag-size','urn:oasis:names:tc:xacml:1.0:function:dateTime-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (125,'dateTime-is-in','urn:oasis:names:tc:xacml:1.0:function:dateTime-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (126,'dateTime-bag','urn:oasis:names:tc:xacml:1.0:function:dateTime-bag',19,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (127,'anyURI-one-and-only','urn:oasis:names:tc:xacml:1.0:function:anyURI-one-and-only',27,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (128,'anyURI-bag-size','urn:oasis:names:tc:xacml:1.0:function:anyURI-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (129,'anyURI-is-in','urn:oasis:names:tc:xacml:1.0:function:anyURI-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (130,'anyURI-bag','urn:oasis:names:tc:xacml:1.0:function:anyURI-bag',27,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (131,'hexBinary-one-and-only','urn:oasis:names:tc:xacml:1.0:function:hexBinary-one-and-only',24,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (132,'hexBinary-bag-size','urn:oasis:names:tc:xacml:1.0:function:hexBinary-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (133,'hexBinary-is-in','urn:oasis:names:tc:xacml:1.0:function:hexBinary-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (134,'hexBinary-bag','urn:oasis:names:tc:xacml:1.0:function:hexBinary-bag',24,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (135,'base64Binary-one-and-only','urn:oasis:names:tc:xacml:1.0:function:base64Binary-one-and-only',13,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (136,'base64Binary-bag-size','urn:oasis:names:tc:xacml:1.0:function:base64Binary-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (137,'base64Binary-is-in','urn:oasis:names:tc:xacml:1.0:function:base64Binary-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (138,'base64Binary-bag','urn:oasis:names:tc:xacml:1.0:function:base64Binary-bag',13,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (139,'dayTimeDuration-one-and-only','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-one-and-only',15,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (140,'dayTimeDuration-bag-size','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (141,'dayTimeDuration-is-in','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (142,'dayTimeDuration-bag','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-bag',15,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (143,'yearMonthDuration-one-and-only','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-one-and-only',23,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (144,'yearMonthDuration-bag-size','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (145,'yearMonthDuration-is-in','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (146,'yearMonthDuration-bag','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-bag',23,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (147,'x500Name-one-and-only','urn:oasis:names:tc:xacml:1.0:function:x500Name-one-and-only',14,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (148,'x500Name-bag-size','urn:oasis:names:tc:xacml:1.0:function:x500Name-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (149,'x500Name-is-in','urn:oasis:names:tc:xacml:1.0:function:x500Name-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (150,'x500Name-bag','urn:oasis:names:tc:xacml:1.0:function:x500Name-bag',14,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (151,'rfc822Name-one-and-only','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-one-and-only',20,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (152,'rfc822Name-bag-size','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (153,'rfc822Name-is-in','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (154,'rfc822Name-bag','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-bag',20,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (155,'ipAddress-one-and-only','urn:oasis:names:tc:xacml:2.0:function:ipAddress-one-and-only',22,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (156,'ipAddress-bag-size','urn:oasis:names:tc:xacml:2.0:function:ipAddress-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (157,'ipAddress-is-in','urn:oasis:names:tc:xacml:2.0:function:ipAddress-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (158,'ipAddress-bag','urn:oasis:names:tc:xacml:2.0:function:ipAddress-bag',22,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (159,'dnsName-one-and-only','urn:oasis:names:tc:xacml:2.0:function:dnsName-one-and-only',17,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (160,'dnsName-bag-size','urn:oasis:names:tc:xacml:2.0:function:dnsName-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (161,'dnsName-is-in','urn:oasis:names:tc:xacml:2.0:function:dnsName-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (162,'dnsName-bag','urn:oasis:names:tc:xacml:2.0:function:dnsName-bag',17,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (163,'string-regexp-match','urn:oasis:names:tc:xacml:1.0:function:string-regexp-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (164,'anyURI-regexp-match','urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (165,'ipAddress-regexp-match','urn:oasis:names:tc:xacml:2.0:function:ipAddress-regexp-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (166,'dnsName-regexp-match','urn:oasis:names:tc:xacml:2.0:function:dnsName-regexp-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (167,'rfc822Name-regexp-match','urn:oasis:names:tc:xacml:2.0:function:rfc822Name-regexp-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (168,'x500Name-regexp-match','urn:oasis:names:tc:xacml:2.0:function:x500Name-regexp-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (169,'string-intersection','urn:oasis:names:tc:xacml:1.0:function:string-intersection',26,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (170,'string-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (171,'string-union','urn:oasis:names:tc:xacml:1.0:function:string-union',26,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (172,'string-subset','urn:oasis:names:tc:xacml:1.0:function:string-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (173,'string-set-equals','urn:oasis:names:tc:xacml:1.0:function:string-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (174,'integer-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:integer-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (175,'integer-union','urn:oasis:names:tc:xacml:1.0:function:integer-union',12,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (176,'integer-subset','urn:oasis:names:tc:xacml:1.0:function:integer-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (177,'integer-set-equals','urn:oasis:names:tc:xacml:1.0:function:integer-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (178,'double-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:double-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (179,'double-union','urn:oasis:names:tc:xacml:1.0:function:double-union',25,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (180,'double-subset','urn:oasis:names:tc:xacml:1.0:function:double-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (181,'double-set-equals','urn:oasis:names:tc:xacml:1.0:function:double-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (182,'boolean-intersection','urn:oasis:names:tc:xacml:1.0:function:boolean-intersection',18,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (183,'boolean-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:boolean-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (184,'boolean-union','urn:oasis:names:tc:xacml:1.0:function:boolean-union',18,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (185,'boolean-subset','urn:oasis:names:tc:xacml:1.0:function:boolean-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (186,'boolean-set-equals','urn:oasis:names:tc:xacml:1.0:function:boolean-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (187,'time-intersection','urn:oasis:names:tc:xacml:1.0:function:time-intersection',16,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (188,'time-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:time-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (189,'time-union','urn:oasis:names:tc:xacml:1.0:function:time-union',16,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (190,'time-subset','urn:oasis:names:tc:xacml:1.0:function:time-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (191,'time-set-equals','urn:oasis:names:tc:xacml:1.0:function:time-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (192,'date-intersection','urn:oasis:names:tc:xacml:1.0:function:date-intersection',21,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (193,'date-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:date-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (194,'date-union','urn:oasis:names:tc:xacml:1.0:function:date-union',21,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (195,'date-subset','urn:oasis:names:tc:xacml:1.0:function:date-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (196,'date-set-equals','urn:oasis:names:tc:xacml:1.0:function:date-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (197,'dateTime-intersection','urn:oasis:names:tc:xacml:1.0:function:dateTime-intersection',19,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (198,'dateTime-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:dateTime-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (199,'dateTime-union','urn:oasis:names:tc:xacml:1.0:function:dateTime-union',19,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (200,'dateTime-subset','urn:oasis:names:tc:xacml:1.0:function:dateTime-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (201,'dateTime-set-equals','urn:oasis:names:tc:xacml:1.0:function:dateTime-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (202,'anyURI-intersection','urn:oasis:names:tc:xacml:1.0:function:anyURI-intersection',27,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (203,'anyURI-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:anyURI-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (204,'anyURI-union','urn:oasis:names:tc:xacml:1.0:function:anyURI-union',27,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (205,'anyURI-subset','urn:oasis:names:tc:xacml:1.0:function:anyURI-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (206,'anyURI-set-equals','urn:oasis:names:tc:xacml:1.0:function:anyURI-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (207,'hexBinary-intersection','urn:oasis:names:tc:xacml:1.0:function:hexBinary-intersection',24,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (208,'hexBinary-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:hexBinary-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (209,'hexBinary-union','urn:oasis:names:tc:xacml:1.0:function:hexBinary-union',24,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (210,'hexBinary-subset','urn:oasis:names:tc:xacml:1.0:function:hexBinary-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (211,'hexBinary-set-equals','urn:oasis:names:tc:xacml:1.0:function:hexBinary-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (212,'base64Binary-intersection','urn:oasis:names:tc:xacml:1.0:function:base64Binary-intersection',13,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (213,'base64Binary-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:base64Binary-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (214,'base64Binary-union','urn:oasis:names:tc:xacml:1.0:function:base64Binary-union',13,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (215,'base64Binary-subset','urn:oasis:names:tc:xacml:1.0:function:base64Binary-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (216,'base64Binary-set-equals','urn:oasis:names:tc:xacml:1.0:function:base64Binary-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (217,'dayTimeDuration-intersection','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-intersection',15,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (218,'dayTimeDuration-at-least-one-member-of','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (219,'dayTimeDuration-union','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-union',15,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (220,'dayTimeDuration-subset','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (221,'dayTimeDuration-set-equals','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (222,'yearMonthDuration-intersection','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-intersection',23,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (223,'yearMonthDuration-at-least-one-member-of','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (224,'yearMonthDuration-union','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-union',23,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (225,'yearMonthDuration-subset','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (226,'yearMonthDuration-set-equals','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (227,'x500Name-intersection','urn:oasis:names:tc:xacml:1.0:function:x500Name-intersection',14,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (228,'x500Name-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:x500Name-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (229,'x500Name-union','urn:oasis:names:tc:xacml:1.0:function:x500Name-union',14,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (230,'x500Name-subset','urn:oasis:names:tc:xacml:1.0:function:x500Name-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (231,'x500Name-set-equals','urn:oasis:names:tc:xacml:1.0:function:x500Name-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (232,'rfc822Name-intersection','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-intersection',20,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (233,'rfc822Name-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (234,'rfc822Name-union','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-union',20,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (235,'rfc822Name-subset','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (236,'rfc822Name-set-equals','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (237,'x500Name-match','urn:oasis:names:tc:xacml:1.0:function:x500Name-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (238,'rfc822Name-match','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (239,'integer-intersection','urn:oasis:names:tc:xacml:1.0:function:integer-intersection',12,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (240,'double-intersection','urn:oasis:names:tc:xacml:1.0:function:double-intersection',25,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (241,'or','urn:oasis:names:tc:xacml:1.0:function:or',18,0,0,0,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (242,'and','urn:oasis:names:tc:xacml:1.0:function:and',18,0,0,0,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (243,'n-of','urn:oasis:names:tc:xacml:1.0:function:n-of',18,0,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (244,'not','urn:oasis:names:tc:xacml:1.0:function:not',18,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (245,'any-of','urn:oasis:names:tc:xacml:3.0:function:any-of',18,0,1,2,-1,1,-1,1);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (246,'all-of','urn:oasis:names:tc:xacml:3.0:function:all-of',18,0,1,2,-1,1,-1,1);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (247,'any-of-any','urn:oasis:names:tc:xacml:3.0:function:any-of-any',18,0,1,2,-1,1,-1,0);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (248,'all-of-any','urn:oasis:names:tc:xacml:1.0:function:all-of-any',18,0,1,3,3,2,2,1);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (249,'any-of-all','urn:oasis:names:tc:xacml:1.0:function:any-of-all',18,0,1,3,3,2,2,1);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (250,'all-of-all','urn:oasis:names:tc:xacml:1.0:function:all-of-all',18,0,1,3,3,2,2,1);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (251,'map','urn:oasis:names:tc:xacml:3.0:function:map',NULL,1,1,2,-1,1,-1,1);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (252,'xpath-node-count','urn:oasis:names:tc:xacml:3.0:function:xpath-node-count',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (253,'xpath-node-equal','urn:oasis:names:tc:xacml:3.0:function:xpath-node-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (254,'xpath-node-match','urn:oasis:names:tc:xacml:3.0:function:xpath-node-match',18,0,0,2,2,NULL,NULL,NULL);
-
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (1,0,1,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (2,0,1,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (3,0,2,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (4,0,2,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (5,0,3,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (6,1,4,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (7,1,5,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (8,0,6,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (9,0,6,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (10,0,7,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (11,0,7,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (12,0,8,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (13,0,8,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (14,0,9,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (15,0,9,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (16,0,10,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (17,0,11,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (18,0,12,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (19,0,13,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (20,0,14,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (21,0,15,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (22,0,16,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (23,0,17,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (24,0,18,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (25,0,19,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (26,0,20,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (27,0,21,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (28,0,22,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (29,0,23,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (30,0,24,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (31,0,25,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (32,0,26,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (33,0,27,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (34,0,28,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (35,0,29,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (36,0,30,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (37,0,31,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (38,0,32,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (39,0,33,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (40,0,34,1,22);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (41,0,35,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (42,0,36,1,17);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (43,0,37,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (44,0,37,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (45,0,38,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (46,0,38,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (47,0,39,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (48,0,39,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (49,0,40,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (50,0,40,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (51,0,41,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (52,0,41,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (53,0,41,3,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (54,0,42,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (55,0,42,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (56,0,42,3,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (57,0,43,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (58,0,43,2,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (59,0,44,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (60,0,44,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (61,0,45,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (62,0,45,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (63,0,46,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (64,0,46,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (65,0,47,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (66,0,47,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (67,0,48,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (68,0,48,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (69,0,49,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (70,0,49,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (71,0,50,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (72,0,50,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (73,0,51,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (74,0,51,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (75,0,52,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (76,0,52,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (77,0,53,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (78,0,53,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (79,0,54,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (80,0,54,2,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (81,0,55,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (82,0,55,2,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (83,0,56,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (84,0,56,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (85,0,57,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (86,0,57,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (89,0,58,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (90,0,58,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (91,0,59,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (92,0,59,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (93,0,60,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (94,0,60,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (95,0,61,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (96,0,61,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (97,0,62,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (98,0,62,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (99,0,63,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (100,0,63,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (101,0,64,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (102,0,65,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (103,0,66,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (104,0,67,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (125,0,68,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (126,0,69,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (128,0,70,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (129,0,71,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (130,0,71,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (131,0,72,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (132,0,72,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (133,0,73,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (134,0,73,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (135,0,74,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (136,0,74,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (137,0,75,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (138,0,75,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (139,0,76,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (140,0,76,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (141,0,77,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (142,0,77,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (143,0,78,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (144,0,78,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (145,0,79,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (146,0,79,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (147,0,80,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (148,0,80,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (149,0,81,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (150,0,81,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (151,0,82,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (152,0,82,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (153,0,83,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (154,0,83,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (155,0,84,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (156,0,84,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (157,0,85,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (158,0,85,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (159,0,86,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (160,0,86,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (161,0,87,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (162,0,87,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (163,0,88,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (164,0,88,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (165,0,89,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (166,0,89,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (167,0,90,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (168,0,90,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (169,0,91,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (170,0,91,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (171,0,92,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (172,0,92,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (173,0,93,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (174,0,93,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (175,0,94,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (176,0,94,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (177,0,95,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (178,0,95,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (179,0,96,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (180,0,96,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (181,0,97,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (182,0,97,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (183,0,98,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (184,0,98,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (185,0,99,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (186,0,99,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (187,0,100,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (188,0,100,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (189,1,101,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (190,1,102,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (191,0,103,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (192,1,103,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (193,0,104,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (194,1,105,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (195,0,106,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (196,1,106,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (197,0,107,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (198,1,108,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (199,0,109,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (200,1,109,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (201,0,110,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (202,1,111,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (203,1,112,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (204,0,113,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (205,1,113,2,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (206,0,114,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (207,1,115,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (208,1,116,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (209,0,117,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (210,1,117,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (211,0,118,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (212,1,119,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (213,1,120,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (214,0,121,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (215,1,121,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (216,0,122,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (217,1,123,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (218,1,124,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (219,0,125,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (220,1,125,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (221,0,126,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (222,1,127,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (223,1,128,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (224,0,129,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (225,1,129,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (226,0,130,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (227,1,131,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (228,1,132,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (229,0,133,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (230,1,133,2,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (231,0,134,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (232,1,135,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (233,1,136,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (234,0,137,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (235,1,137,2,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (236,0,138,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (237,1,139,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (238,1,140,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (239,0,141,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (240,1,141,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (241,0,142,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (242,1,143,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (243,1,144,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (244,1,145,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (245,0,145,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (246,0,146,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (247,1,147,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (248,1,148,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (249,0,149,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (250,1,149,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (251,0,150,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (252,1,151,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (253,1,152,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (254,0,153,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (255,1,153,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (256,0,154,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (257,1,155,1,22);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (258,1,156,1,22);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (259,0,157,1,22);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (260,1,157,2,22);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (261,0,158,1,22);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (262,1,159,1,17);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (263,1,160,1,17);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (264,0,161,1,17);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (265,1,161,2,17);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (266,0,162,1,17);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (267,0,163,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (268,0,163,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (269,0,164,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (270,0,164,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (271,0,165,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (272,0,165,2,22);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (273,0,166,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (274,0,166,2,17);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (275,0,167,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (276,0,167,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (277,0,168,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (278,0,168,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (279,1,169,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (280,1,169,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (281,1,170,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (282,1,170,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (283,1,171,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (284,1,172,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (285,1,172,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (286,1,173,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (287,1,173,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (288,1,174,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (289,1,174,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (290,1,175,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (292,1,176,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (293,1,176,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (294,1,177,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (295,1,177,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (296,1,178,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (297,1,178,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (298,1,179,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (299,1,180,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (300,1,180,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (301,1,181,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (302,1,181,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (303,1,182,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (304,1,182,2,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (305,1,183,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (306,1,183,2,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (307,1,184,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (308,1,185,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (309,1,185,2,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (310,1,186,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (311,1,186,2,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (312,1,187,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (313,1,187,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (314,1,188,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (315,1,188,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (316,1,189,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (317,1,190,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (318,1,190,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (319,1,191,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (320,1,191,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (321,1,192,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (322,1,192,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (323,1,193,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (324,1,193,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (325,1,194,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (326,1,195,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (327,1,195,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (328,1,196,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (329,1,196,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (330,1,197,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (331,1,197,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (332,1,198,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (333,1,198,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (334,1,199,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (335,1,200,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (336,1,200,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (337,1,201,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (338,1,201,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (339,1,202,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (340,1,202,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (341,1,203,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (342,1,203,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (343,1,204,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (344,1,205,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (345,1,205,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (346,1,206,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (347,1,206,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (348,1,207,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (349,1,207,2,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (350,1,208,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (351,1,208,2,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (352,1,209,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (353,1,210,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (354,1,210,2,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (355,1,211,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (356,1,211,2,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (357,1,212,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (358,1,212,2,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (359,1,213,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (360,1,213,2,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (361,1,214,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (362,1,215,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (363,1,215,2,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (364,1,216,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (365,1,216,2,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (366,1,217,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (367,1,217,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (368,1,218,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (369,1,218,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (370,1,219,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (371,1,220,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (372,1,220,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (373,1,221,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (374,1,221,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (375,1,222,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (376,1,222,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (377,1,223,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (378,1,223,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (380,1,224,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (381,1,225,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (382,1,225,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (383,1,226,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (384,1,226,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (385,1,227,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (386,1,227,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (387,1,228,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (388,1,228,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (389,1,229,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (390,1,230,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (391,1,230,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (392,1,231,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (393,1,231,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (394,1,232,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (395,1,232,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (396,1,233,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (397,1,233,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (398,1,234,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (399,1,235,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (400,1,235,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (401,1,236,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (402,1,236,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (403,0,237,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (404,0,237,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (405,0,238,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (406,0,238,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (407,1,239,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (408,1,239,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (409,1,240,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (410,1,240,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (411,0,241,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (412,0,242,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (413,0,243,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (414,0,243,2,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (415,0,244,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (416,0,245,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (417,0,245,2,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (418,1,245,3,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (419,0,246,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (420,0,246,2,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (421,1,246,3,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (422,0,247,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (423,1,247,2,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (424,1,247,3,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (433,0,248,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (434,1,248,2,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (435,1,248,3,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (436,0,249,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (437,1,249,2,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (438,1,249,3,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (439,0,250,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (440,1,250,2,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (441,1,250,3,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (442,0,251,1,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (447,1,251,2,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (448,0,252,1,28);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (449,0,253,1,28);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (450,0,253,2,28);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (451,0,254,1,28);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (452,0,254,2,28);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (453,0,92,3,16);
-
-INSERT INTO PIPType VALUES (500,'SQL'), (501,'LDAP'), (502,'CSV'), (503,'Hyper-CSV'), (504,'Custom');
diff --git a/openaz-xacml-pap-admin/src/META-INF/drop.sql b/openaz-xacml-pap-admin/src/META-INF/drop.sql
deleted file mode 100644
index 8aee7ee..0000000
--- a/openaz-xacml-pap-admin/src/META-INF/drop.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS AttributeAssignment;
-DROP TABLE IF EXISTS ConstraintValues;
-DROP TABLE IF EXISTS ObadviceExpressions;
-DROP TABLE IF EXISTS Attribute;
-DROP TABLE IF EXISTS Category;
-DROP TABLE IF EXISTS ConstraintType;
-DROP VIEW IF EXISTS match_functions;
-DROP VIEW IF EXISTS higherorder_bag_functions;
-DROP VIEW IF EXISTS function_flattener;
-DROP TABLE IF EXISTS FunctionArguments;
-DROP TABLE IF EXISTS FunctionDefinition;
-DROP TABLE IF EXISTS Datatype;
-DROP TABLE IF EXISTS Obadvice;
-DROP TABLE IF EXISTS PIPConfigParams;
-DROP TABLE IF EXISTS PIPResolverParams;
-DROP TABLE IF EXISTS PIPResolver;
-DROP TABLE IF EXISTS PIPConfiguration;
-DROP TABLE IF EXISTS PIPType;
-DROP TABLE IF EXISTS PolicyAlgorithms;
-DROP TABLE IF EXISTS RuleAlgorithms;
-DROP TABLE IF EXISTS SEQUENCE;
\ No newline at end of file
diff --git a/openaz-xacml-pap-admin/src/META-INF/empty.sql b/openaz-xacml-pap-admin/src/META-INF/empty.sql
deleted file mode 100644
index e69de29..0000000
--- a/openaz-xacml-pap-admin/src/META-INF/empty.sql
+++ /dev/null
diff --git a/openaz-xacml-pap-admin/src/META-INF/persistence.xml b/openaz-xacml-pap-admin/src/META-INF/persistence.xml
deleted file mode 100644
index 79594a9..0000000
--- a/openaz-xacml-pap-admin/src/META-INF/persistence.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
-	<persistence-unit name="XACML-PAP-ADMIN">
-		<class>org.apache.openaz.xacml.admin.jpa.Attribute</class>
-		<class>org.apache.openaz.xacml.admin.jpa.AttributeAssignment</class>
-		<class>org.apache.openaz.xacml.admin.jpa.Category</class>
-		<class>org.apache.openaz.xacml.admin.jpa.ConstraintType</class>
-		<class>org.apache.openaz.xacml.admin.jpa.ConstraintValue</class>
-		<class>org.apache.openaz.xacml.admin.jpa.Datatype</class>
-		<class>org.apache.openaz.xacml.admin.jpa.Obadvice</class>
-		<class>org.apache.openaz.xacml.admin.jpa.ObadviceExpression</class>
-		<class>org.apache.openaz.xacml.admin.jpa.PolicyAlgorithms</class>
-		<class>org.apache.openaz.xacml.admin.jpa.RuleAlgorithms</class>
-		<class>org.apache.openaz.xacml.admin.jpa.FunctionArgument</class>
-		<class>org.apache.openaz.xacml.admin.jpa.FunctionDefinition</class>
-		<class>org.apache.openaz.xacml.admin.jpa.PIPConfigParam</class>
-		<class>org.apache.openaz.xacml.admin.jpa.PIPConfiguration</class>
-		<class>org.apache.openaz.xacml.admin.jpa.PIPResolver</class>
-		<class>org.apache.openaz.xacml.admin.jpa.PIPResolverParam</class>
-		<class>org.apache.openaz.xacml.admin.jpa.PIPType</class>
-		<properties>
-			<!-- 
-				The properties defined below are the default settings to be used when someone initially
-				wants to start working with the XACML-PAP-ADMIN web gui. They are not intended for production
-				use.
-				
-				They are setup to drop and create the tables and then load an initial set of data into the database
-				every time the application is deployed. So if you add anything to the dictionaries or PIP
-				configuration, they will get lost upon each deployment. It uses an H2 database engine configured
-				for a local file so you don't have to setup you're own SQL database environment to start.
-				
-				Instead of modifying this file directly, please refer to the xacml.admin.properties file for
-				customizing the application settings.
-				
-			 -->
-			<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
-			<property name="javax.persistence.schema-generation.create-source" value="metadata-then-script"/>
-			<property name="javax.persistence.schema-generation.create-script-source" value="META-INF/views.sql" />
-			<property name="javax.persistence.schema-generation.drop-source" value="script"/>
-			<property name="javax.persistence.schema-generation.drop-script-source" value="META-INF/drop.sql" />
-			<property name="javax.persistence.sql-load-script-source" value="META-INF/data.sql" />
-			
-			<!-- 
-			
-			These properties should be set in the xacml.admin.properties file, so they can be re-used by non-JPA
-			database functionality.
-			
-			<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
-			<property name="javax.persistence.jdbc.url" value="jdbc:h2:file:sql/xacml"/>
-			<property name="javax.persistence.jdbc.user" value="sa"/>
-			<property name="javax.persistence.jdbc.password" value=""/>
-			 -->
-		</properties>
-	</persistence-unit>
-</persistence>
diff --git a/openaz-xacml-pap-admin/src/META-INF/views.sql b/openaz-xacml-pap-admin/src/META-INF/views.sql
deleted file mode 100644
index 7c4a820..0000000
--- a/openaz-xacml-pap-admin/src/META-INF/views.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-
-CREATE VIEW match_functions AS SELECT D.ID AS id, D.SHORT_NAME AS shortname, D.XACML_ID AS xacmlid,	D.RETURN_DATATYPE AS return_datatype, D.IS_BAG_RETURN AS is_bag_return,	D.ARG_LB AS arg_lb,	D.ARG_UB AS arg_ub,	A1.IS_BAG AS arg1_isbag, A1.DATATYPE_ID AS arg1_datatype, A2.IS_BAG AS arg2_isbag,	A2.DATATYPE_ID AS arg2_datatype FROM (FunctionDefinition D left join FunctionArguments A1 on (A1.FUNCTION_ID = D.ID and A1.ARG_INDEX = 1) left join FunctionArguments A2 on (A2.FUNCTION_ID = D.ID and A2.ARG_INDEX = 2)) where (D.ARG_LB = 2 and D.ARG_UB = 2 and D.RETURN_DATATYPE = 18 and A1.IS_BAG = 0) order by D.SHORT_NAME;
-
-CREATE VIEW function_flattener AS SELECT D.ID AS id, D.SHORT_NAME AS shortname, D.RETURN_DATATYPE AS return_datatype, D.IS_BAG_RETURN AS is_bag_return, D.IS_HIGHER_ORDER AS is_higher_order, D.ARG_LB AS arg_lb, D.ARG_UB AS arg_ub, A1.IS_BAG AS arg1_isbag, A1.DATATYPE_ID AS arg1_datatype, A2.IS_BAG AS arg2_isbag, A2.DATATYPE_ID AS arg2_datatype, A3.IS_BAG AS arg3_isbag, A3.DATATYPE_ID AS arg3_datatype FROM (FunctionDefinition D left join FunctionArguments A1 ON (A1.FUNCTION_ID = D.ID and A1.ARG_INDEX = 1) left join FunctionArguments A2 ON (A2.FUNCTION_ID = D.ID and A2.ARG_INDEX = 2) LEFT JOIN FunctionArguments A3 ON (A3.FUNCTION_ID = D.ID and A3.ARG_INDEX = 3)) ORDER BY D.ID;
-
-CREATE VIEW higherorder_bag_functions AS SELECT * FROM function_flattener WHERE is_higher_order = 1 AND is_bag_return = 1 AND return_datatype=18 AND arg_lb=2 AND arg_ub=2 AND arg1_isbag = 1 AND (arg2_isbag = 1 OR arg2_isbag IS NULL);
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/PAPNotificationBroadcaster.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/PAPNotificationBroadcaster.java
deleted file mode 100644
index b2deda7..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/PAPNotificationBroadcaster.java
+++ /dev/null
@@ -1,120 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin;
-
-import java.io.Serializable;
-import java.util.LinkedList;
-import java.util.concurrent.ExecutorService;
-import java.util.concurrent.Executors;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-/**
- * Handle Notifications from the PAP that the PDP Groups have been changed.
- * We need a Server Push Broadcaster because there may be multiple Vaadin instances (i.e. Users) that need to be told when a change occurs.
- * 
- * Initially we only update the entire set of PDPGroups in one shot.
- * 
- * (Code copied from Book of Vaadin chapter on Server Push
- * @author glenngriffin
- *
- */
-public class PAPNotificationBroadcaster implements Serializable {
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = -2539940306348821754L;
-
-
-	private static Log logger	= LogFactory.getLog(PAPNotificationBroadcaster.class);
-
-	
-    static ExecutorService executorService = Executors.newSingleThreadExecutor();
-
-    /**
-     * Interface used by all classes that need to be notified when PAP sends an update message.
-     * 
-     * @author glenngriffin
-     *
-     */
-    public interface PAPNotificationBroadcastListener {
-        void updateAllGroups();
-    }
-    
-    
-    
-    /*
-     * list of registered listeners
-     */
-    private static LinkedList<PAPNotificationBroadcastListener> listeners =
-        new LinkedList<PAPNotificationBroadcastListener>();
-    
-    /**
-     * Listener registers to hear about updates.
-     * @param listener
-     */
-    public static synchronized void register(
-    		PAPNotificationBroadcastListener listener) {
-        listeners.add(listener);
-    }
-    
-    
-    /**
-     * Listener is going away.
-     * 
-     * @param listener
-     */
-    public static synchronized void unregister(
-    		PAPNotificationBroadcastListener listener) {
-        listeners.remove(listener);
-    }
-    
-    
-    
-    /**
-     * Tell all listeners about an update.
-     * 
-     * @param message
-     */
-    public static synchronized void updateAllGroups() {
-        for (final PAPNotificationBroadcastListener listener: listeners) {
-  // Original code copied from example:
-  //          executorService.execute(new Runnable() {
-  //              @Override
-  //              public void run() {
-  // The problem with this is that the execute starts a new Thread, but the thing we are calling (the listener.updateAllGroups)
-  // happens in this case to ALSO create a new thread, and it locks up because the shared threadpool queue is already locked by this method.
-  // On application shutdown that left us with a blocked thread, so the process never goes away.
-  // Since the listener.updateAllGroups does ALL of its work inside a new Runnable thread, there should be no need for this method to also create a thread.
-  
-        	/*
-        	 * IMPORTANT:
-        	 * All listeners MUST either execute with no possibility of blocking
-        	 * OR must start their own threads to handle blocking and concurrent operations.
-        	 */
-        	if (logger.isDebugEnabled()) {
-        		logger.debug("updateAllGroups");
-        	}
-            listener.updateAllGroups();
-        }
-    }
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlAdminAuthorization.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlAdminAuthorization.java
deleted file mode 100644
index 2a065d5..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlAdminAuthorization.java
+++ /dev/null
@@ -1,178 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.std.annotations.XACMLRequest;
-import org.apache.openaz.xacml.std.annotations.RequestParser;
-import org.apache.openaz.xacml.std.annotations.XACMLSubject;
-import org.apache.openaz.xacml.std.annotations.XACMLAction;
-import org.apache.openaz.xacml.std.annotations.XACMLResource;
-import org.apache.openaz.xacml.api.DataTypeException;
-import org.apache.openaz.xacml.api.Decision;
-import org.apache.openaz.xacml.api.Request;
-import org.apache.openaz.xacml.api.Response;
-import org.apache.openaz.xacml.api.Result;
-import org.apache.openaz.xacml.api.pdp.PDPEngine;
-import org.apache.openaz.xacml.api.pdp.PDPEngineFactory;
-import org.apache.openaz.xacml.api.pdp.PDPException;
-import org.apache.openaz.xacml.util.FactoryException;
-
-public class XacmlAdminAuthorization {
-	private static Log logger	= LogFactory.getLog(XacmlAdminAuthorization.class);
-	
-	public enum AdminAction {
-		ACTION_ACCESS("access"),
-		ACTION_READ("read"),
-		ACTION_WRITE("write"),
-		ACTION_ADMIN("admin");
-		
-		String action;
-		AdminAction(String a) {
-			this.action = a;
-		}
-		public String toString() {
-			return this.action;
-		}
-	}
-	
-	public enum AdminResource {
-		RESOURCE_APPLICATION("application"),
-		RESOURCE_POLICY_WORKSPACE("workspace"),
-		RESOURCE_POLICY_EDITOR("editor"),
-		RESOURCE_DICTIONARIES("dictionaries"),
-		RESOURCE_PDP_ADMIN("pdp_admin"),
-		RESOURCE_PIP_ADMIN("pip_admin");
-		
-		String resource;
-		AdminResource(String r) {
-			this.resource = r;
-		}
-		public String toString() {
-			return this.resource;
-		}
-	}
-	
-	@XACMLRequest(ReturnPolicyIdList=true)
-	public class AuthorizationRequest {
-		
-		@XACMLSubject(includeInResults=true)
-		String	userID;
-		
-		@XACMLAction()
-		String	action;
-		
-		@XACMLResource()
-		String	resource;
-		
-		public AuthorizationRequest(String userId, String action, String resource) {
-			this.userID = userId;
-			this.action = action;
-			this.resource = resource;
-		}
-
-		public String getUserID() {
-			return userID;
-		}
-
-		public void setUserID(String userID) {
-			this.userID = userID;
-		}
-
-		public String getAction() {
-			return action;
-		}
-
-		public void setAction(String action) {
-			this.action = action;
-		}
-
-		public String getResource() {
-			return resource;
-		}
-
-		public void setResource(String resource) {
-			this.resource = resource;
-		}
-	}
-	
-	//
-	// The PDP Engine
-	//
-	protected PDPEngine pdpEngine;
-
-	public XacmlAdminAuthorization() {
-		PDPEngineFactory pdpEngineFactory	= null;
-		try {
-			pdpEngineFactory	= PDPEngineFactory.newInstance();
-			if (pdpEngineFactory == null) {
-				logger.error("Failed to create PDP Engine Factory");
-			}
-			this.pdpEngine = pdpEngineFactory.newEngine();
-		} catch (FactoryException e) {
-			logger.error("Exception create PDP Engine: " + e.getLocalizedMessage());
-		}
-	}
-	
-	public boolean	isAuthorized(String userid, AdminAction action, AdminResource resource) {
-		logger.info("authorize: " + userid + " to " + action + " with " + resource);
-		if (this.pdpEngine == null) {
-			logger.warn("no pdp engine available to authorize");
-			return false;
-		}
-		Request request;
-		try {
-			request = RequestParser.parseRequest(new AuthorizationRequest(userid, action.toString(), resource.toString()));
-		} catch (IllegalArgumentException | IllegalAccessException | DataTypeException e) {
-			logger.error("Failed to create request: " + e.getLocalizedMessage());
-			return false;
-		}
-		if (request == null) {
-			logger.error("Failed to parse request.");
-			return false;
-		}
-		logger.info("Request: " + request);
-		//
-		// Ask the engine
-		//
-		try {
-			Response response = this.pdpEngine.decide(request);
-			if (response == null) {
-				logger.error("Null response from PDP decide");
-			}
-			//
-			// Should only be one result
-			//
-			for (Result result : response.getResults()) {
-				Decision decision = result.getDecision();
-				logger.info("Decision: " + decision);
-				if (decision.equals(Decision.PERMIT)) {
-					return true;
-				}
-			}
-		} catch (PDPException e) {
-			logger.error("PDP Decide failed: " + e.getLocalizedMessage());
-		}
-		return false;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlAdminConsole.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlAdminConsole.java
deleted file mode 100644
index 91e831b..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlAdminConsole.java
+++ /dev/null
@@ -1,253 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.components.AttributeDictionary;
-import org.apache.openaz.xacml.admin.components.ObadviceDictionary;
-import org.apache.openaz.xacml.admin.components.PDPManagement;
-import org.apache.openaz.xacml.admin.components.PIPManagement;
-import org.apache.openaz.xacml.admin.components.PolicyWorkspace;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.navigator.View;
-import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
-import com.vaadin.server.ThemeResource;
-import com.vaadin.shared.ui.label.ContentMode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.Embedded;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.TabSheet;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-
-public class XacmlAdminConsole extends CustomComponent implements View {
-	private static final long serialVersionUID = 1L;
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Label labelCopyright;
-	@AutoGenerated
-	private TabSheet tabSheet;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayout_1;
-	@AutoGenerated
-	private Label labelWelcome;
-	@AutoGenerated
-	private Label caption;
-	@AutoGenerated
-	private Embedded embedded_1;
-
-	private static Log logger	= LogFactory.getLog(XacmlAdminConsole.class);
-	
-	private final PolicyWorkspace policyWorkspace;
-	private final AttributeDictionary attributeDictionary;
-	private final ObadviceDictionary obadvice;
-	private final PDPManagement pdp;
-	private final PIPManagement pip;
-//	private final UserManagement user;
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public XacmlAdminConsole() {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		
-		if (logger.isDebugEnabled()) {
-			logger.debug("Creating tabs...");
-		}
-		
-		this.labelWelcome.setValue("Welcome " + ((XacmlAdminUI)UI.getCurrent()).getUserName());
-		this.labelCopyright.setContentMode(ContentMode.HTML);
-		
-		if (((XacmlAdminUI)UI.getCurrent()).isAuthorized( 
-				XacmlAdminAuthorization.AdminAction.ACTION_READ, 
-				XacmlAdminAuthorization.AdminResource.RESOURCE_POLICY_WORKSPACE)) {
-			this.policyWorkspace = new PolicyWorkspace();
-			this.tabSheet.addComponent(this.policyWorkspace);
-			this.tabSheet.getTab(this.policyWorkspace).setCaption("Policy Workspace");
-		} else {
-			this.policyWorkspace = null;
-		}
-		
-		if (((XacmlAdminUI)UI.getCurrent()).isAuthorized( 
-				XacmlAdminAuthorization.AdminAction.ACTION_READ, 
-				XacmlAdminAuthorization.AdminResource.RESOURCE_DICTIONARIES)) {
-			this.attributeDictionary = new AttributeDictionary();
-			this.tabSheet.addComponent(this.attributeDictionary);
-			this.tabSheet.getTab(this.attributeDictionary).setCaption("Attribute Dictionary");
-
-			this.obadvice = new ObadviceDictionary(); 
-			this.tabSheet.addComponent(this.obadvice);
-			this.tabSheet.getTab(this.obadvice).setCaption("Obligation/Advice Dictionary");
-		} else {
-			this.attributeDictionary = null;
-			this.obadvice = null;
-		}
-		if (((XacmlAdminUI)UI.getCurrent()).isAuthorized( 
-									XacmlAdminAuthorization.AdminAction.ACTION_READ, 
-									XacmlAdminAuthorization.AdminResource.RESOURCE_PDP_ADMIN)) {
-			this.pdp = new PDPManagement(((XacmlAdminUI)UI.getCurrent()).getPAPEngine());
-			this.tabSheet.addComponent(this.pdp);
-			this.tabSheet.getTab(this.pdp).setCaption("PDP Management");
-		} else {
-			this.pdp = null;
-		}
-		
-		if (((XacmlAdminUI)UI.getCurrent()).isAuthorized( 
-				XacmlAdminAuthorization.AdminAction.ACTION_READ, 
-				XacmlAdminAuthorization.AdminResource.RESOURCE_PIP_ADMIN)) {
-			this.pip = new PIPManagement();
-			this.tabSheet.addComponent(this.pip);
-			this.tabSheet.getTab(this.pip).setCaption("PIP Management");
-		} else {
-			this.pip = null;
-		}
-		/*
-		 * TODO  - figure out how to add this in
-		 *
-		if (((XacmlAdminUI)UI.getCurrent()).isAuthorized( 
-				XacmlAdminAuthorization.AdminAction.ACTION_READ, 
-				XacmlAdminAuthorization.AdminResource.RESOURCE_POLICY_WORKSPACE)) {
-			this.user = new UserManagement();
-			this.tabSheet.addComponent(this.user);
-			this.tabSheet.getTab(this.user).setCaption("User Management");
-		}
-		*/
-		
-		if (logger.isDebugEnabled()) {
-			logger.debug("Done creating tabs.");
-		}
-	}
-	
-	public void refreshAttributes() {
-		this.attributeDictionary.refreshContainer();
-	}
-	public void refreshObadvice() {
-		this.obadvice.refreshContainer();
-	}
-
-	public void refreshPIPConfiguration() {
-		this.pip.refreshContainer();
-	}
-
-	public void refreshPDPGroups() {
-		this.pdp.refreshContainer();
-	}
-
-	public TabSheet getTabSheet() { return tabSheet;}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("100%");
-		mainLayout.setHeight("100%");
-		mainLayout.setMargin(true);
-		
-		// top-level component properties
-		setWidth("100.0%");
-		setHeight("100.0%");
-		
-		// horizontalLayout_1
-		horizontalLayout_1 = buildHorizontalLayout_1();
-		mainLayout.addComponent(horizontalLayout_1);
-		
-		// tabSheet
-		tabSheet = new TabSheet();
-		tabSheet.setImmediate(false);
-		tabSheet.setWidth("100.0%");
-		tabSheet.setHeight("100.0%");
-		mainLayout.addComponent(tabSheet);
-		mainLayout.setExpandRatio(tabSheet, 1.0f);
-		
-		// labelCopyright
-		labelCopyright = new Label();
-		labelCopyright.setImmediate(false);
-		labelCopyright.setWidth("-1px");
-		labelCopyright.setHeight("40px");
-		labelCopyright
-				.setValue("<center>Copyright &copy; 2015 The Apache Software Foundation, Licensed under the Apache License, Version 2.0.</center>");
-		mainLayout.addComponent(labelCopyright);
-		mainLayout.setComponentAlignment(labelCopyright, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayout_1() {
-		// common part: create layout
-		horizontalLayout_1 = new HorizontalLayout();
-		horizontalLayout_1.setImmediate(false);
-		horizontalLayout_1.setWidth("100.0%");
-		horizontalLayout_1.setHeight("40px");
-		horizontalLayout_1.setMargin(false);
-		
-		// embedded_1
-		embedded_1 = new Embedded();
-		embedded_1.setImmediate(false);
-		embedded_1.setWidth("30px");
-		embedded_1.setHeight("30px");
-		embedded_1.setSource(new ThemeResource("img/att.png"));
-		embedded_1.setType(1);
-		embedded_1.setMimeType("image/png");
-		horizontalLayout_1.addComponent(embedded_1);
-		horizontalLayout_1.setComponentAlignment(embedded_1, new Alignment(33));
-		
-		// caption
-		caption = new Label();
-		caption.setImmediate(false);
-		caption.setWidth("-1px");
-		caption.setHeight("-1px");
-		caption.setValue("Apache OpenAZ Admin Console");
-		horizontalLayout_1.addComponent(caption);
-		horizontalLayout_1.setExpandRatio(caption, 1.0f);
-		horizontalLayout_1.setComponentAlignment(caption, new Alignment(33));
-		
-		// labelWelcome
-		labelWelcome = new Label();
-		labelWelcome.setImmediate(false);
-		labelWelcome.setWidth("-1px");
-		labelWelcome.setHeight("40px");
-		labelWelcome.setValue("Label");
-		horizontalLayout_1.addComponent(labelWelcome);
-		horizontalLayout_1.setComponentAlignment(labelWelcome,
-				new Alignment(34));
-		
-		return horizontalLayout_1;
-	}
-
-	@Override
-	public void enter(ViewChangeEvent event) {
-		//
-		// This needs to be implemented
-		//
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlAdminServlet.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlAdminServlet.java
deleted file mode 100644
index fa48543..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlAdminServlet.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin;
-
-import java.io.IOException;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.annotation.WebInitParam;
-import javax.servlet.annotation.WebServlet;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import com.vaadin.annotations.Push;
-import com.vaadin.annotations.VaadinServletConfiguration;
-import com.vaadin.server.VaadinServlet;
-
-import org.apache.openaz.xacml.rest.XACMLRest;
-
-
-//
-// The Servlet underlying the Vaadin Servlet
-//
-@Push
-@WebServlet(
-		value = "/*",
-		description = "XACML Admin Console",
-		asyncSupported = true, 
-		loadOnStartup=1,
-		initParams = { 
-		@WebInitParam(name = "XACML_PROPERTIES_NAME", value = "xacml.admin.properties", description = "The location of the properties file holding configuration information.")
-})
-@VaadinServletConfiguration(productionMode = false, ui = XacmlAdminUI.class)
-public class XacmlAdminServlet extends VaadinServlet {
-	//
-	// All static declarations
-	//
-	private static Log logger	= LogFactory.getLog(XacmlAdminServlet.class); //NOPMD
-
-	@Override
-	public void init(ServletConfig servletConfig) throws ServletException {
-		super.init(servletConfig);
-		//
-		// Common initialization
-		//
-		XACMLRest.xacmlInit(servletConfig);
-
-		// Initialization
-		XacmlAdminUI.servletInit();
-	}
-	
-	@Override
-	public void destroy() {
-		XacmlAdminUI.servletDestroy();
-		super.destroy();
-	}
-	
-	/**
-	 * 
-	 * Called by:
-	 * 	- PAP to notify Vaadin GUIs that something has changed
-	 * 
-	 * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
-	 */
-	@Override
-	protected void service(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-		// watch for notifications from the PAP
-		if (request.getMethod().equals("PUT") && request.getParameter("PAPNotification") != null) {
-			XacmlAdminUI.doPAPNotification(request, response);
-			return;
-		}
-
-		// not a PAP notification, so let Vaadin handle normally
-		super.service(request,response);
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlAdminUI.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlAdminUI.java
deleted file mode 100644
index e553749..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlAdminUI.java
+++ /dev/null
@@ -1,801 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin;
-
-import java.io.IOException;
-import java.net.URI;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.sql.SQLException;
-import java.util.Properties;
-import java.util.UUID;
-
-import javax.persistence.EntityManager;
-import javax.persistence.EntityManagerFactory;
-import javax.persistence.Persistence;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.jgit.api.Git;
-import org.eclipse.jgit.api.errors.GitAPIException;
-import org.eclipse.jgit.api.errors.InvalidRemoteException;
-import org.eclipse.jgit.api.errors.TransportException;
-import org.eclipse.jgit.lib.Repository;
-import org.eclipse.jgit.lib.StoredConfig;
-import org.eclipse.jgit.storage.file.FileRepositoryBuilder;
-import org.eclipse.persistence.config.PersistenceUnitProperties;
-
-import org.apache.openaz.xacml.admin.XacmlAdminAuthorization.AdminAction;
-import org.apache.openaz.xacml.admin.XacmlAdminAuthorization.AdminResource;
-import org.apache.openaz.xacml.admin.converters.XacmlConverterFactory;
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.Category;
-import org.apache.openaz.xacml.admin.jpa.ConstraintType;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.jpa.FunctionArgument;
-import org.apache.openaz.xacml.admin.jpa.FunctionDefinition;
-import org.apache.openaz.xacml.admin.jpa.Obadvice;
-import org.apache.openaz.xacml.admin.jpa.ObadviceExpression;
-import org.apache.openaz.xacml.admin.jpa.PIPConfiguration;
-import org.apache.openaz.xacml.admin.jpa.PIPResolver;
-import org.apache.openaz.xacml.admin.jpa.PIPType;
-import org.apache.openaz.xacml.admin.jpa.PolicyAlgorithms;
-import org.apache.openaz.xacml.admin.jpa.RuleAlgorithms;
-import org.apache.openaz.xacml.admin.model.MatchFunctionQueryDelegate;
-import org.apache.openaz.xacml.admin.util.RESTfulPAPEngine;
-import org.apache.openaz.xacml.api.XACML3;
-import org.apache.openaz.xacml.api.pap.PAPEngine;
-import org.apache.openaz.xacml.api.pap.PAPException;
-import org.apache.openaz.xacml.rest.XACMLRestProperties;
-import org.apache.openaz.xacml.util.XACMLProperties;
-import com.google.gwt.thirdparty.guava.common.base.Joiner;
-import com.google.gwt.thirdparty.guava.common.base.Splitter;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.addon.jpacontainer.provider.CachingLocalEntityProvider;
-import com.vaadin.addon.jpacontainer.provider.CachingMutableLocalEntityProvider;
-import com.vaadin.annotations.Push;
-import com.vaadin.annotations.Theme;
-import com.vaadin.data.util.sqlcontainer.SQLContainer;
-import com.vaadin.data.util.sqlcontainer.connection.JDBCConnectionPool;
-import com.vaadin.data.util.sqlcontainer.query.FreeformQuery;
-import com.vaadin.navigator.Navigator;
-import com.vaadin.server.VaadinRequest;
-import com.vaadin.server.VaadinServletService;
-import com.vaadin.ui.UI;
-
-@Push
-@SuppressWarnings("serial")
-@Theme("xacml_pap_admin")
-public class XacmlAdminUI extends UI implements PAPNotificationBroadcaster.PAPNotificationBroadcastListener {
-	//
-	// All static declarations
-	//
-	public static final String PERSISTENCE_UNIT = "XACML-PAP-ADMIN";
-	private static Log logger	= LogFactory.getLog(XacmlAdminUI.class); //NOPMD
-	
-	/*
-	 * These objects are shared amongst sessions.
-	 */
-	private static Path repositoryPath;
-	private static Repository repository;
-	private static EntityManagerFactory emf;
-	private static JDBCConnectionPool pool;
-	
-	/*
-	 * These objects are created each session.
-	 */
-	private Path workspacePath;
-	private Path gitPath;
-	//
-	// Our Persistence Fields. For general use. NOTE: Be careful applying
-	// filters to these container objects. If one window applies a filter, then
-	// when another window uses the object, that filter will show up and cause confusion.
-	// If filters are needed within a window, then create another instance instead of
-	// using one of these pointers.
-	//
-	private EntityManager em;
-	private JPAContainer<Attribute> 			attributes;
-	private JPAContainer<ConstraintType> 		constraintTypes;
-	private JPAContainer<Obadvice> 				obadvice;
-	private JPAContainer<ObadviceExpression> 	obadviceExpressions;
-	private JPAContainer<Category> 				categories;
-	private JPAContainer<Datatype> 				datatypes;
-	private JPAContainer<PolicyAlgorithms> 		policyAlgorithms;
-	private JPAContainer<RuleAlgorithms> 		ruleAlgorithms;
-	private JPAContainer<PIPConfiguration>		pipConfigurations;
-	private JPAContainer<PIPResolver>			pipResolvers;
-	private JPAContainer<PIPType>				pipTypes;
-	private JPAContainer<FunctionDefinition>	functionDefinitions;
-	private JPAContainer<FunctionArgument>		functionArguments;
-	private SQLContainer matchFunctionContainer;
-	private SQLContainer higherorderBagContainer;
-	//
-	// Our authorization object
-	//
-	XacmlAdminAuthorization authorizer = new XacmlAdminAuthorization();
-	//
-	// The PAP Engine
-	//
-	private PAPEngine papEngine;
-	//
-	// GUI navigation
-	//
-	private Navigator navigator = null;
-	private XacmlAdminConsole console = null;
-	//
-	// Vaadin Init
-	//
-	@Override
-	protected void init(VaadinRequest request) {
-		//
-		// Set our title
-		//
-		this.getPage().setTitle("Apache OpenAZ Admin Console");
-		//
-		// Create our authorization object
-		//
-		this.authorizer = new XacmlAdminAuthorization();
-		//
-		// Is the user authorized to use the application?
-		//
-		if (this.authorizer.isAuthorized(this.getUserid(), 
-									XacmlAdminAuthorization.AdminAction.ACTION_ACCESS, 
-									XacmlAdminAuthorization.AdminResource.RESOURCE_APPLICATION) == false) {
-			logger.error("user " + this.getUserid() + " is not authorized.");
-			//
-			// Create a navigator to manage all our views
-			//
-			this.navigator = new Navigator(this, this);
-			//
-			// Redirect to an error page
-			//
-			this.navigator.addView(XacmlErrorHandler.VIEWNAME, new XacmlErrorHandler("User " + this.getUserid() + " is not authorized to access application", null));
-			this.navigator.navigateTo(XacmlErrorHandler.VIEWNAME);
-			return;
-		}
-		try {
-			//
-			// Initialize user's Git repository
-			//
-			this.workspacePath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_ADMIN_WORKSPACE), this.getUserid());
-			this.gitPath = XacmlAdminUI.initializeUserRepository(this.workspacePath, this.getUserid(), this.getUserEmail());
-		} catch (Exception e) {
-			logger.error("Git Setup failure", e);
-			//
-			// Create a navigator to manage all our views
-			//
-			this.navigator = new Navigator(this, this);
-			//
-			// Redirect to an error page
-			//
-			this.navigator.addView(XacmlErrorHandler.VIEWNAME, new XacmlErrorHandler(e.getMessage(), null));
-			this.navigator.navigateTo(XacmlErrorHandler.VIEWNAME);
-			return;
-		}
-		//
-		// Create a navigator to manage all our views
-		//
-		this.navigator = new Navigator(this, this);
-		//
-		// Set our converter factory
-		//
-		this.getSession().setConverterFactory(new XacmlConverterFactory());
-		//
-		// Initialize our data objects
-		//
-		try {
-			//
-			// Initialize JPA and SQL. Create our custom entity manager.
-			//
-			logger.info("Creating Persistence Entity Manager");
-			//
-			// Now create the entity manager. This is used throughout the application to create JPA
-			// containers of the entities located in the database.
-			//
-			this.em = XacmlAdminUI.emf.createEntityManager();
-			//
-			// Our Read-Only containers
-			//
-			logger.info("Creating JPA read-only containers");
-			this.constraintTypes = new JPAContainer<ConstraintType>(ConstraintType.class);
-			this.constraintTypes.setEntityProvider(new CachingLocalEntityProvider<ConstraintType>(ConstraintType.class, this.em));
-			
-			this.categories = new JPAContainer<Category>(Category.class);
-			this.categories.setEntityProvider(new CachingLocalEntityProvider<Category>(Category.class, this.em));
-
-			this.datatypes = new JPAContainer<Datatype>(Datatype.class);
-			this.datatypes.setEntityProvider(new CachingLocalEntityProvider<Datatype>(Datatype.class, this.em));
-			
-			this.policyAlgorithms = new JPAContainer<PolicyAlgorithms>(PolicyAlgorithms.class);
-			this.policyAlgorithms.setEntityProvider(new CachingLocalEntityProvider<PolicyAlgorithms>(PolicyAlgorithms.class, this.em));
-			
-			this.ruleAlgorithms = new JPAContainer<RuleAlgorithms>(RuleAlgorithms.class);
-			this.ruleAlgorithms.setEntityProvider(new CachingLocalEntityProvider<RuleAlgorithms>(RuleAlgorithms.class, this.em));
-			
-			this.pipTypes = new JPAContainer<PIPType>(PIPType.class);
-			this.pipTypes.setEntityProvider(new CachingLocalEntityProvider<PIPType>(PIPType.class, this.em));
-			
-			this.functionDefinitions = new JPAContainer<FunctionDefinition>(FunctionDefinition.class);
-			this.functionDefinitions.setEntityProvider(new CachingLocalEntityProvider<FunctionDefinition>(FunctionDefinition.class, this.em));
-
-			this.functionArguments = new JPAContainer<FunctionArgument>(FunctionArgument.class);
-			this.functionArguments.setEntityProvider(new CachingLocalEntityProvider<FunctionArgument>(FunctionArgument.class, this.em));
-			//
-			// Our writable containers. NOTE: The dictionaries have their own JPA instance since they can
-			// apply filters to their table views. If you update these, then refresh the dictionary containers
-			// by calling the appropriate refresh method defined in XacmlAdminUI.
-			//
-			logger.info("Creating JPA writable containers");
-			this.attributes = new JPAContainer<Attribute>(Attribute.class);
-			this.attributes.setEntityProvider(new CachingMutableLocalEntityProvider<Attribute>(Attribute.class, this.em));
-
-			this.obadvice = new JPAContainer<Obadvice>(Obadvice.class);
-			this.obadvice.setEntityProvider(new CachingMutableLocalEntityProvider<Obadvice>(Obadvice.class, this.em));
-
-			this.obadviceExpressions = new JPAContainer<ObadviceExpression>(ObadviceExpression.class);
-			this.obadviceExpressions.setEntityProvider(new CachingMutableLocalEntityProvider<ObadviceExpression>(ObadviceExpression.class, this.em));
-
-			this.pipConfigurations = new JPAContainer<PIPConfiguration>(PIPConfiguration.class);
-			this.pipConfigurations.setEntityProvider(new CachingMutableLocalEntityProvider<PIPConfiguration>(PIPConfiguration.class, this.em));
-			
-			this.pipResolvers = new JPAContainer<PIPResolver>(PIPResolver.class);
-			this.pipResolvers.setEntityProvider(new CachingMutableLocalEntityProvider<PIPResolver>(PIPResolver.class, this.em));
-			//
-			// Sort our persistence data
-			//
-			logger.info("Sorting containers");
-			this.categories.sort(new String[]{"xacmlId"}, new boolean[]{true});
-			this.datatypes.sort(new String[]{"xacmlId"}, new boolean[]{true});
-			this.policyAlgorithms.sort(new String[]{"xacmlId"}, new boolean[]{true});
-			this.ruleAlgorithms.sort(new String[]{"xacmlId"}, new boolean[]{true});
-			this.functionDefinitions.sort(new String[]{"xacmlid"}, new boolean[]{true});
-			//this.functionArguments.sort(new String[]{"datatypeBean"}, new boolean[]{true});
-			//
-			// Create our special query for MatchType functions. We need a custom
-			// QueryDelegate because these functions are accessible via a View (vs a Table).
-			// The basic FreeformQuery does not work with filters on a View (via Vaadin).
-			//
-			// TODO: Consider putting this into a couple of Map's. Doing so would speed up
-			// access. However, if we want to support custom functions, then there needs to
-			// be a way for those custom functions to get into the Map. This is why a database
-			// is being used to store ALL the functions, both standard and custom.
-			//
-			logger.info("Creating SQL Queries");
-			MatchFunctionQueryDelegate delegate = new MatchFunctionQueryDelegate();
-			FreeformQuery query = new FreeformQuery("SELECT * FROM match_functions", XacmlAdminUI.pool, new String[] {});
-			query.setDelegate(delegate);
-			this.matchFunctionContainer = new SQLContainer(query);
-			//
-			// Same for this one
-			//
-			delegate = new MatchFunctionQueryDelegate();
-			query = new FreeformQuery("SELECT * FROM higherorder_bag_functions", XacmlAdminUI.pool, new String[] {});
-			query.setDelegate(delegate);
-			this.higherorderBagContainer = new SQLContainer(query);
-			//
-			// Load our PAP engine
-			//
-			logger.info("Creating PAP engine");
-			String myRequestURL = VaadinServletService.getCurrentServletRequest().getRequestURL().toString();
-			try {
-				//
-				// Set the URL for the RESTful PAP Engine
-				//
-				papEngine = new RESTfulPAPEngine(myRequestURL);
-			} catch (PAPException e  ) {
-				logger.error("Failed to create PAP engine", e);
-			} catch (Exception e) {
-				logger.error("Failed to create PAP engine", e);
-			}
-			logger.info("done creating connections");
-		} catch(Exception e) {
-			//
-			// Redirect to an error page
-			//
-			logger.error(e);
-			e.printStackTrace();
-			this.navigator.addView("", new XacmlErrorHandler(e.getMessage(), null));
-			this.navigator.navigateTo("");
-			return;
-		}
-		logger.info("Creating main layout");
-		//
-		// Create our main component layout
-		//
-		this.console = new XacmlAdminConsole();
-		this.navigator.addView("", console);
-		this.navigator.setErrorView(new XacmlErrorHandler(null, null));
-		//
-		// Navigate to our view
-		//
-		this.navigator.navigateTo("");
-		//
-		// Register to receive PAP change notifications broadcasts
-		//
-		PAPNotificationBroadcaster.register(this);
-	}
-	
-	public static void servletInit() throws ServletException {
-		//
-		// Initialize GIT repository.
-		//
-		XacmlAdminUI.initializeGitRepository();
-		//
-		// Initialize Entity Factory
-		//
-		XacmlAdminUI.initializeEntityFactory();
-		//
-		// If we get here, then the configuration information
-		// seems ok.
-		//
-	}
-
-	public static void servletDestroy() {
-		if (XacmlAdminUI.repository != null) {
-			XacmlAdminUI.repository.close();
-		}
-	}
-	
-	/**
-	 * An Update Notification has arrived from the PAP.
-	 * Tell the Vaadin users to change their data.
-	 * 
-	 * @param request
-	 * @param response
-	 * @throws ServletException
-	 * @throws IOException
-	 */
-	public static void doPAPNotification(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
-		try {
-			//
-			// Notify all user instances to update groups
-			//
-			PAPNotificationBroadcaster.updateAllGroups();
-		} catch (Exception e) {
-			logger.error("Unable to process PAP request: "+e, e);
-			response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
-		}
-		response.setStatus(HttpServletResponse.SC_NO_CONTENT);
-	}
-
-	// Must unregister when the UI expires
-	@Override
-	public void detach() {
-		PAPNotificationBroadcaster.unregister(this);
-		super.detach();
-	}
-	
-	/**
-	 * This will initialize the JPA Entity Manager Factory. This will determine if
-	 * the database connection settings are correct.
-	 * 
-	 * @throws ServletException
-	 */
-	private static void initializeEntityFactory() throws ServletException {
-		logger.info("intializing Persistence Entity Factory");
-		//
-		// Pull custom persistence settings
-		//
-		Properties properties;
-		try {
-			properties = XACMLProperties.getProperties();
-		} catch (IOException e) {
-			throw new ServletException(e.getMessage(), e.getCause());
-		}
-		//
-		// Create the factory
-		//
-		emf = Persistence.createEntityManagerFactory(XacmlAdminUI.PERSISTENCE_UNIT, properties);
-		//
-		// Did it get created?
-		//
-		if (emf == null) {
-			throw new ServletException("Unable to create Entity Manager Factory");
-		}
-		//
-		// Create our JDBC connection pool
-		//
-		try {
-			logger.info("intializing JDBC Connection Pool");
-			XacmlAdminUI.pool = new XacmlJDBCConnectionPool(
-					properties.getProperty(PersistenceUnitProperties.JDBC_DRIVER),
-					properties.getProperty(PersistenceUnitProperties.JDBC_URL),
-					properties.getProperty(PersistenceUnitProperties.JDBC_USER),
-					properties.getProperty(PersistenceUnitProperties.JDBC_PASSWORD));
-		} catch (SQLException e) {
-			throw new ServletException(e.getMessage(), e.getCause());
-		}
-	}
-
-	private static void initializeGitRepository() throws ServletException {
-		XacmlAdminUI.repositoryPath = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_ADMIN_REPOSITORY));
-		FileRepositoryBuilder builder = new FileRepositoryBuilder();
-		try {
-			XacmlAdminUI.repository = builder.setGitDir(XacmlAdminUI.repositoryPath.toFile()).readEnvironment().findGitDir().setBare().build();
-			if (Files.notExists(XacmlAdminUI.repositoryPath) || Files.notExists(Paths.get(XacmlAdminUI.repositoryPath.toString(), "HEAD"))) {
-				//
-				// Create it if it doesn't exist. As a bare repository
-				//
-				logger.info("Creating bare git repository: " + XacmlAdminUI.repositoryPath.toString());
-				XacmlAdminUI.repository.create();
-				//
-				// Add the magic file so remote works.
-				//
-				Path daemon = Paths.get(XacmlAdminUI.repositoryPath.toString(), "git-daemon-export-ok");
-				Files.createFile(daemon);					
-			}
-		} catch (IOException e) {
-			logger.error("Failed to build repository: " + repository, e);
-			throw new ServletException(e.getMessage(), e.getCause());
-		}
-		//
-		// Make sure the workspace directory is created
-		//
-		Path workspace = Paths.get(XACMLProperties.getProperty(XACMLRestProperties.PROP_ADMIN_WORKSPACE));
-		workspace = workspace.toAbsolutePath();
-		if (Files.notExists(workspace)) {
-			try {
-				Files.createDirectory(workspace);
-			} catch (IOException e) {
-				logger.error("Failed to build workspace: " + workspace, e);
-				throw new ServletException(e.getMessage(), e.getCause());
-			}
-		}
-		//
-		// Create the user workspace directory
-		//
-		workspace = Paths.get(workspace.toString(), "pe");
-		if (Files.notExists(workspace)) {
-			try {
-				Files.createDirectory(workspace);
-			} catch (IOException e) {
-				logger.error("Failed to create directory: " + workspace, e);
-				throw new ServletException(e.getMessage(), e.getCause());
-			}
-		}
-		//
-		// Get the path to where the repository is going to be
-		//
-		Path gitPath = Paths.get(workspace.toString(), XacmlAdminUI.repositoryPath.getFileName().toString());
-		if (Files.notExists(gitPath)) {
-			try {
-				Files.createDirectory(gitPath);
-			} catch (IOException e) {
-				logger.error("Failed to create directory: " + gitPath, e);
-				throw new ServletException(e.getMessage(), e.getCause());
-			}
-		}
-		//
-		// Initialize the domain structure
-		//
-		String base = null;
-		String domain = XacmlAdminUI.getDomain();
-		if (domain != null) {
-			for (String part : Splitter.on(':').trimResults().split(domain)) {
-				if (base == null) {
-					base = part;
-				}
-				Path subdir = Paths.get(gitPath.toString(), part);
-				if (Files.notExists(subdir)) {
-					try {
-						Files.createDirectory(subdir);
-						Files.createFile(Paths.get(subdir.toString(), ".svnignore"));
-					} catch (IOException e) {
-						logger.error("Failed to create: " + subdir, e);
-						throw new ServletException(e.getMessage(), e.getCause());
-					}
-				}
-			}
-		} else {
-			try {
-				Files.createFile(Paths.get(workspace.toString(), ".svnignore"));
-				base = ".svnignore";
-			} catch (IOException e) {
-				logger.error("Failed to create file", e);
-				throw new ServletException(e.getMessage(), e.getCause());
-			}
-		}
-		try {
-			//
-			// These are the sequence of commands that must be done initially to
-			// finish setting up the remote bare repository.
-			//
-			Git git = Git.init().setDirectory(gitPath.toFile()).setBare(false).call();
-			git.add().addFilepattern(base).call();
-			git.commit().setMessage("Initialize Bare Repository").call();
-			StoredConfig config = git.getRepository().getConfig();
-			config.setString("remote", "origin", "url", XacmlAdminUI.repositoryPath.toAbsolutePath().toString());
-			config.setString("remote", "origin", "fetch", "+refs/heads/*:refs/remotes/origin/*");
-			config.save();
-			git.push().setRemote("origin").add("master").call();
-			/*
-			 * This will not work unless git.push().setRemote("origin").add("master").call();
-			 * is called first. Otherwise it throws an exception. However, if the push() is
-			 * called then calling this function seems to add nothing.
-			 * 
-			git.branchCreate().setName("master")
-				.setUpstreamMode(SetupUpstreamMode.SET_UPSTREAM)
-				.setStartPoint("origin/master").setForce(true).call();
-			*/
-		} catch (GitAPIException | IOException e) {
-			logger.error(e);
-			throw new ServletException(e.getMessage(), e.getCause());
-		}
-	}
-
-	/**
-	 * Initializes a user's git repository.
-	 * 
-	 * 
-	 * @param workspacePath
-	 * @param userId
-	 * @param email
-	 * @return
-	 * @throws IOException
-	 * @throws InvalidRemoteException
-	 * @throws TransportException
-	 * @throws GitAPIException
-	 */
-	private static Path initializeUserRepository(Path workspacePath, String userId, URI email) throws IOException, InvalidRemoteException, TransportException, GitAPIException {
-		Path gitPath = null;
-		//
-		// Initialize the User's Git repository
-		//
-		if (Files.notExists(workspacePath)) {
-			logger.info("Creating user workspace: " + workspacePath.toAbsolutePath().toString());
-			//
-			// Create our user's directory
-			//
-			Files.createDirectory(workspacePath);
-		}
-		gitPath = Paths.get(workspacePath.toString(), XacmlAdminUI.repositoryPath.getFileName().toString());
-		if (Files.notExists(gitPath)) {
-			//
-			// It doesn't exist yet, so Clone it and check it out
-			//
-			logger.info("Cloning user git directory: " + gitPath.toAbsolutePath().toString());
-			Git.cloneRepository().setURI(XacmlAdminUI.repositoryPath.toUri().toString())
-							.setDirectory(gitPath.toFile())
-							.setNoCheckout(false)
-							.call();
-			//
-			// Set userid
-			//
-			Git git = Git.open(gitPath.toFile());
-			StoredConfig config = git.getRepository().getConfig();
-			config.setString("user", null, "name", userId);
-			if (email != null && email.getPath() != null) {
-				config.setString("user", null, "email", email.toString());
-			}
-			config.save();
-		}
-		return gitPath;
-	}
-
-
-	public static String	getDomain() {
-		return XACMLProperties.getProperty(XACMLRestProperties.PROP_ADMIN_DOMAIN, "urn");
-	}
-	
-	public static JDBCConnectionPool	getConnectionPool() {
-		return pool;
-	}
-	
-	public SQLContainer	getMatchFunctionContainer() {
-		return this.matchFunctionContainer;
-	}
-	
-	public SQLContainer getHigherOrderBagContainer() {
-		return this.higherorderBagContainer;
-	}
-	
-	public EntityManager getEntityManager() {
-		return this.em;
-	}
-	
-	public JPAContainer<Attribute>	getAttributes() {
-		return this.attributes;
-	}
-	
-	public void refreshAttributes() {
-		this.attributes.refresh();
-		this.console.refreshAttributes();
-	}
-
-	public JPAContainer<ConstraintType>	getConstraintTypes() {
-		return this.constraintTypes;
-	}
-	
-	public JPAContainer<Category>	getCategories() {
-		return this.categories;
-	}
-	
-	public JPAContainer<Datatype>	getDatatypes() {
-		return this.datatypes;
-	}
-
-	public JPAContainer<PolicyAlgorithms> getPolicyAlgorithms() {
-		return this.policyAlgorithms;
-	}
-	
-	public JPAContainer<RuleAlgorithms> getRuleAlgorithms() {
-		return this.ruleAlgorithms;
-	}
-
-	public JPAContainer<Obadvice> getObadvice() {
-		return this.obadvice;
-	}
-
-	public JPAContainer<ObadviceExpression> getObadviceExpressions() {
-		return this.obadviceExpressions;
-	}
-	
-	public void refreshObadvice() {
-		this.obadvice.refresh();
-		this.obadviceExpressions.refresh();
-		this.console.refreshObadvice();
-	}
-
-	public JPAContainer<FunctionDefinition>	getFunctionDefinitions() {
-		return this.functionDefinitions;
-	}
-	
-	public JPAContainer<FunctionArgument> getFunctionArguments() {
-		return this.functionArguments;
-	}
-	
-	public JPAContainer<PIPConfiguration> getPIPConfigurations() {
-		return this.pipConfigurations;
-	}
-	
-	public JPAContainer<PIPResolver>	getPIPResolvers() {
-		return this.pipResolvers;
-	}
-	
-	public JPAContainer<PIPType>	getPIPTypes() {
-		return this.pipTypes;
-	}
-
-	public void refreshPIPConfiguration() {
-		this.pipConfigurations.refresh();
-		this.console.refreshPIPConfiguration();
-	}
-	
-	public Category	getDefaultCategory() throws Exception {
-		for (Object id : categories.getItemIds()) {
-			Category cat = categories.getItem(id).getEntity();
-			if (cat.getIdentifer().equals(XACML3.ID_SUBJECT_CATEGORY_ACCESS_SUBJECT)) {
-				return cat;
-			}
-		}
-		throw new Exception("There is no default category.");
-	}
-	
-	public Datatype getDefaultDatatype() throws Exception {
-		for (Object id: this.datatypes.getItemIds()) {
-			Datatype dt = this.datatypes.getItem(id).getEntity();
-			if (dt.getIdentifer().equals(XACML3.ID_DATATYPE_STRING)) {
-				return dt;
-			}
-		}
-		throw new Exception("There is no default datatype.");
-	}
-	
-	public XacmlAdminAuthorization getAuthorizer() {
-		return this.authorizer;
-	}
-	
-	public boolean	isAuthorized(AdminAction action, AdminResource resource) {
-		return this.authorizer.isAuthorized(this.getUserid(), action, resource);
-	}
-	
-	public String	getUserid() {
-		Object id = this.getSession().getSession().getAttribute("xacml.rest.admin.user.id");
-		if (id == null) {
-			return XACMLProperties.getProperty("xacml.rest.admin.user.id", "guest");
-		}
-		String str = id.toString();
-		if (str == null || str.isEmpty()) {
-			return "guest";
-		}
-		return str;
-	}
-	
-	public String 	getUserName() {
-		Object id = this.getSession().getSession().getAttribute("xacml.rest.admin.user.name");
-		if (id == null) {
-			return XACMLProperties.getProperty("xacml.rest.admin.user.name", "guest");
-		}
-		String str = id.toString();
-		if (str == null || str.isEmpty()) {
-			return "guest";
-		}
-		return str;
-	}
-	
-	public URI		getUserEmail() {
-		Object id = this.getSession().getSession().getAttribute("xacml.rest.admin.user.email");
-		if (id == null) {
-			return URI.create(XACMLProperties.getProperty("xacml.rest.admin.user.email", "guest"));
-		}
-		String str = id.toString();
-		if (str == null || str.isEmpty()) {
-			return null;
-		}
-		return URI.create(str);
-	}
-	
-	public Path		getUserWorkspace() {
-		return this.workspacePath;
-	}
-	
-	public Path		getUserGitPath() {
-		return this.gitPath;
-	}
-	
-	public PAPEngine	getPAPEngine() {
-		return this.papEngine;
-	}
-	
-	public String	newPolicyID() {
-		return Joiner.on(':').skipNulls().join((XacmlAdminUI.getDomain().startsWith("urn") ? null : "urn"),
-												XacmlAdminUI.getDomain().replaceAll("[/\\\\.]", ":"), 
-												"xacml", "policy", "id", UUID.randomUUID());
-	}
-
-	public String	newRuleID() {
-		return Joiner.on(':').skipNulls().join((XacmlAdminUI.getDomain().startsWith("urn") ? null : "urn"),
-												XacmlAdminUI.getDomain().replaceAll("[/\\\\.]", ":"), 
-												"xacml", "rule", "id", UUID.randomUUID());
-	}
-	//
-	// PAPNotificationBroadcaster Interface implementation
-	//
-	/**
-	 * Got a notification that the PAP has changed the PDP data,
-	 * so update ALL PDPGroups.
-	 * This is called once for each Vaadin instance for each PAP change Notification.
-	 */
-	public void updateAllGroups() {
-		access(new Runnable() {
-			@Override
-			public void run() {
-				//
-				// locking is needed to avoid race conditions.
-				// Shows up as Exception: "A connector should not be marked as dirty while a response is being written."
-				//
-				getUI().getSession().lock();
-				try {
-					//
-					// Tell the console to refresh its PDP group information
-					//
-					console.refreshPDPGroups();
-				} finally {
-					getUI().getSession().unlock();
-				}
-			}
-		});
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlErrorHandler.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlErrorHandler.java
deleted file mode 100644
index dd014dd..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlErrorHandler.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.navigator.View;
-import com.vaadin.navigator.ViewChangeListener.ViewChangeEvent;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.VerticalLayout;
-
-public class XacmlErrorHandler extends CustomComponent implements View {
-	
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-
-	@AutoGenerated
-	private Button buttonGo;
-
-	@AutoGenerated
-	private Label labelError;
-
-	public static String VIEWNAME="ErrorHandler.View";
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	private static final long serialVersionUID = 1L;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public XacmlErrorHandler(String message, String button) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		this.labelError.setValue(message);
-		if (button != null) {
-			this.buttonGo.setCaption(button);
-		} else {
-			this.buttonGo.setVisible(false);
-		}
-	}
-
-	@Override
-	public void enter(ViewChangeEvent event) {
-		// TODO Auto-generated method stub
-		
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("100%");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("100.0%");
-		setHeight("-1px");
-		
-		// labelError
-		labelError = new Label();
-		labelError.setImmediate(false);
-		labelError.setWidth("100.0%");
-		labelError.setHeight("80px");
-		labelError.setValue("This holds error messages.");
-		mainLayout.addComponent(labelError);
-		
-		// buttonGo
-		buttonGo = new Button();
-		buttonGo.setCaption("Ok");
-		buttonGo.setImmediate(true);
-		buttonGo.setWidth("-1px");
-		buttonGo.setHeight("-1px");
-		mainLayout.addComponent(buttonGo);
-		mainLayout.setComponentAlignment(buttonGo, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlJDBCConnectionPool.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlJDBCConnectionPool.java
deleted file mode 100644
index a11707d..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/XacmlJDBCConnectionPool.java
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin;
-
-import java.io.IOException;
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.ResultSet;
-import java.sql.SQLException;
-import java.sql.Statement;
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.vaadin.data.util.sqlcontainer.connection.JDBCConnectionPool;
-
-public class XacmlJDBCConnectionPool implements JDBCConnectionPool {
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(XacmlJDBCConnectionPool.class);
-
-    private int initialConnections = 5;
-    private int maxConnections = 300;
-
-    private String driverName;
-    private String connectionUri;
-    private String userName;
-    private String password;
-
-    private transient Set<Connection> availableConnections;
-    private transient Set<Connection> reservedConnections;
-
-    private boolean initialized;
-
-    public XacmlJDBCConnectionPool(String driverName, String connectionUri, String userName, String password) throws SQLException {
-        if (driverName == null) {
-            throw new IllegalArgumentException(
-                    "JDBC driver class name must be given.");
-        }
-        if (connectionUri == null) {
-            throw new IllegalArgumentException(
-                    "Database connection URI must be given.");
-        }
-        if (userName == null) {
-            throw new IllegalArgumentException(
-                    "Database username must be given.");
-        }
-        if (password == null) {
-            throw new IllegalArgumentException(
-                    "Database password must be given.");
-        }
-        this.driverName = driverName;
-        this.connectionUri = connectionUri;
-        this.userName = userName;
-        this.password = password;
-
-        /* Initialize JDBC driver */
-        try {
-            Class.forName(driverName).newInstance();
-        } catch (Exception ex) {
-            throw new RuntimeException("Specified JDBC Driver: " + driverName
-                    + " - initialization failed.", ex);
-        }
-    }
-
-    public XacmlJDBCConnectionPool(String driverName, String connectionUri,
-            String userName, String password, int initialConnections,
-            int maxConnections) throws SQLException {
-        this(driverName, connectionUri, userName, password);
-        this.initialConnections = initialConnections;
-        this.maxConnections = maxConnections;
-    }
-
-    private void initializeConnections() throws SQLException {
-        availableConnections = new HashSet<Connection>(initialConnections);
-        reservedConnections = new HashSet<Connection>(initialConnections);
-        for (int i = 0; i < initialConnections; i++) {
-            availableConnections.add(createConnection());
-        }
-        initialized = true;
-    }
-
-    @Override
-    public synchronized Connection reserveConnection() throws SQLException {
-        if (!initialized) {
-            initializeConnections();
-        }
-        Connection c = null;
-        do {
-	        if (availableConnections.isEmpty()) {
-	            if (reservedConnections.size() < maxConnections) {
-	            	logger.info("creating new connection");
-	                availableConnections.add(createConnection());
-	            } else {
-	                throw new SQLException("Connection limit has been reached.");
-	            }
-	        }
-	        //
-	        // Get first available
-	        //
-	        c = availableConnections.iterator().next();
-	        //
-	        // It is still valid?
-	        //
-	        if (!this.isValid(c)) {
-	        	try {
-	        		logger.warn("Removing invalid connection.");
-		        	//
-		        	// No close it
-		        	//
-	        		c.close();
-	        		//
-	        		// Remove from our list
-	        		//
-	        		this.availableConnections.remove(c);
-	        		//
-	        		// Try again
-	        		//
-	        		c = null;
-	        	} catch (SQLException e) { // NOPMD
-	        		// If removing the connection fails, ignore
-	        	}
-	        } else {
-	        	//
-	        	// Yes
-	        	//
-		        availableConnections.remove(c);
-	        	break;
-	        }
-        } while (c == null);
-        //
-        // Add it to our reserved list
-        //
-        reservedConnections.add(c);
-        return c;
-    }
-
-    @Override
-    public synchronized void releaseConnection(Connection conn) {
-        if (conn == null || !initialized) {
-            return;
-        }
-        /* Try to roll back if necessary */
-        try {
-            if (!conn.getAutoCommit()) {
-                conn.rollback();
-            }
-        } catch (SQLException e) {
-            /* Roll back failed, close and discard connection */
-            try {
-                conn.close();
-            } catch (SQLException e1) { // NOPMD
-                /* Nothing needs to be done */
-            }
-            reservedConnections.remove(conn);
-            return;
-        }
-        reservedConnections.remove(conn);
-        availableConnections.add(conn);
-    }
-
-    private Connection createConnection() throws SQLException {
-        Connection c = DriverManager.getConnection(connectionUri, userName,
-                password);
-        c.setAutoCommit(false);
-        if (driverName.toLowerCase().contains("mysql")) {
-            try {
-                Statement s = c.createStatement();
-                s.execute("SET SESSION sql_mode = 'ANSI'");
-                s.close();
-            } catch (Exception e) { // NOPMD
-                // Failed to set ansi mode; continue
-            }
-        }
-        return c;
-    }
-
-    @Override
-    public void destroy() {
-        for (Connection c : availableConnections) {
-            try {
-                c.close();
-            } catch (SQLException e) { // NOPMD
-                // No need to do anything
-            }
-        }
-        for (Connection c : reservedConnections) {
-            try {
-                c.close();
-            } catch (SQLException e) { // NOPMD
-                // No need to do anything
-            }
-        }
-
-    }
-
-    private void writeObject(java.io.ObjectOutputStream out) throws IOException {
-        initialized = false;
-        out.defaultWriteObject();
-    }
-
-	private final boolean isValid(final Connection con) throws SQLException {
-		final String bogusQuery = "SELECT 1";
-		
-		try (Statement st = con.createStatement(); ResultSet res = st.executeQuery(bogusQuery)) {
-			return true;
-		} catch (final SQLException sqlx) {
-			return false;
-		}
-	}
-
-	@Override
-	public String toString() {
-		return "XacmlJDBCConnectionPool [initialConnections="
-				+ initialConnections + ", maxConnections=" + maxConnections
-				+ ", driverName=" + driverName + ", connectionUri="
-				+ connectionUri + ", userName=" + userName + ", password="
-				+ password + ", initialized=" + initialized + "]";
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/AttributeDictionary.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/AttributeDictionary.java
deleted file mode 100644
index f0069a7..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/AttributeDictionary.java
+++ /dev/null
@@ -1,503 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.components;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.XacmlAdminAuthorization;
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.Category;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.view.windows.AttributeEditorWindow;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.addon.jpacontainer.provider.CachingLocalEntityProvider;
-import com.vaadin.addon.jpacontainer.provider.CachingMutableLocalEntityProvider;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Container.Filter;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.util.filter.Compare;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window.CloseEvent;
-import com.vaadin.ui.Window.CloseListener;
-
-public class AttributeDictionary extends CustomComponent {
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Table table;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayoutToolbar;
-	@AutoGenerated
-	private ComboBox comboBoxFilterDatatype;
-	@AutoGenerated
-	private ComboBox comboBoxFilterCategory;
-	@AutoGenerated
-	private Button buttonClone;
-	@AutoGenerated
-	private Button buttonRemove;
-	@AutoGenerated
-	private Button buttonNew;
-	private static final long serialVersionUID = 4553719412188869190L;
-	private static final Log logger	= LogFactory.getLog(AttributeDictionary.class);
-	private static final Object[] visibleColumns = new Object[] { "xacmlId", "description", "categoryBean", "datatypeBean", "constraintType", "modifiedBy", "modifiedDate", "createdBy", "createdDate"};
-	private static final String[] columnHeaders = new String[] { "Attribute ID", "Description", "Category", "DataType", "Constraint", "Modified By", "Modified Date", "Created By", "Created Date"};
-	
-	private AttributeDictionary self = this;
-
-	private final JPAContainer<Attribute> attributes = new JPAContainer<Attribute>(Attribute.class);
-	private final JPAContainer<Category> categories = new JPAContainer<Category>(Category.class);
-	private final JPAContainer<Datatype> datatypes = new JPAContainer<Datatype>(Datatype.class);
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public AttributeDictionary() {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Finish initializing the container
-		//
-		boolean isReadOnly;
-		if (((XacmlAdminUI)UI.getCurrent()).isAuthorized( 
-				XacmlAdminAuthorization.AdminAction.ACTION_WRITE, 
-				XacmlAdminAuthorization.AdminResource.RESOURCE_DICTIONARIES)) {
-			if (logger.isDebugEnabled()) {
-				logger.debug("write access");
-			}
-			//
-			// Make it mutable
-			//
-			isReadOnly = false;
-			this.attributes.setEntityProvider(new CachingMutableLocalEntityProvider<Attribute>(Attribute.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-		} else {
-			if (logger.isDebugEnabled()) {
-				logger.debug("read access");
-			}
-			//
-			// Make it read-only
-			//
-			isReadOnly = true;
-			this.attributes.setEntityProvider(new CachingLocalEntityProvider<Attribute>(Attribute.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-		}
-		this.categories.setEntityProvider(new CachingLocalEntityProvider<Category>(Category.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-		this.categories.sort(new String[]{"xacmlId"}, new boolean[]{true});
-		this.datatypes.setEntityProvider(new CachingLocalEntityProvider<Datatype>(Datatype.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-		this.datatypes.sort(new String[]{"xacmlId"}, new boolean[]{true});
-		//
-		// Initialize
-		//
-		this.initializeTable(isReadOnly);
-		this.initializeButtons(isReadOnly);
-		this.initializeCategoryComboFilter();
-		this.initializeDatatypeComboFilter();
-	}
-	
-	protected void initializeTable(boolean isReadOnly) {
-		//
-		// This is the data source
-		//
-		this.table.setContainerDataSource(this.attributes);
-		//
-		// Setup table
-		//
-		this.table.setVisibleColumns(visibleColumns);
-		this.table.setColumnHeaders(columnHeaders);
-		this.table.setImmediate(true);
-		this.table.setColumnCollapsingAllowed(true);
-		//
-		// Read only?
-		//
-		if (isReadOnly) {
-			if (logger.isDebugEnabled()) {
-				logger.debug("read only table");
-			}
-			return;
-		}
-		this.table.setSelectable(true);
-		//
-		// Respond to clicks
-		//
-		this.table.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick()) {
-					//
-					// Create our editor window
-					//
-					final AttributeEditorWindow attributeEditor = new AttributeEditorWindow(self.attributes.getItem(event.getItemId()));
-					attributeEditor.setCaption("Edit Attribute");
-					attributeEditor.setModal(true);
-					attributeEditor.center();
-					UI.getCurrent().addWindow(attributeEditor);
-				}
-			}
-		});
-		//
-		// Respond to selections
-		//
-		this.table.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				Object value = self.table.getValue();
-				if (value == null) {
-					self.buttonRemove.setEnabled(false);
-					self.buttonClone.setEnabled(false);
-				} else {
-					self.buttonRemove.setEnabled(true);
-					self.buttonClone.setEnabled(true);
-				}
-			}
-		});
-	}
-	
-	protected void initializeButtons(boolean isReadOnly) {
-		if (isReadOnly) {
-			this.buttonNew.setVisible(false);
-			this.buttonRemove.setVisible(false);
-			this.buttonClone.setVisible(false);
-			return;
-		}
-		this.buttonNew.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				AttributeDictionary.createNewAttributeWindow();
-			}
-			
-		});
-		
-		this.buttonRemove.setEnabled(false);
-		this.buttonRemove.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				//
-				// Get the selected item
-				//
-				Object id = self.table.getValue();
-				//
-				// Sanity check
-				//
-				if (id == null) {
-					return;
-				}
-				//
-				// Remove the attribute
-				//
-				self.attributes.removeItem(id);
-				//
-				// Unfortunately, removing the item does NOT result
-				// in a ValueChange event being generated. So we must
-				// trigger it ourselves.
-				//
-				self.table.select(self.table.getNullSelectionItemId());
-			}	
-		});
-		
-		this.buttonClone.setEnabled(false);
-		this.buttonClone.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				Object id = self.table.getValue();
-				if (id == null) {
-					return;
-				}
-				Item item = self.table.getItem(id);
-				if (item instanceof EntityItem) {
-					@SuppressWarnings("unchecked")
-					//
-					// Get the entity
-					//
-					EntityItem<Attribute> entityItem = (EntityItem<Attribute>) item;
-					//
-					// Clone it
-					//
-					Attribute newAttribute = new Attribute(entityItem.getEntity(), ((XacmlAdminUI)UI.getCurrent()).getUserid());
-					//
-					// Add it to the database
-					//
-					id = self.attributes.addEntity(newAttribute);
-					//
-					// Now select it
-					//
-					self.table.select(id);
-					//
-					// Refresh it to get the latest modified date
-					//
-					self.attributes.refreshItem(id);
-				}
-			}
-		});
-	}
-
-	protected void initializeCategoryComboFilter() {
-		//
-		// Set data source
-		//
-		this.comboBoxFilterCategory.setContainerDataSource(self.categories);
-		this.comboBoxFilterCategory.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.comboBoxFilterCategory.setItemCaptionPropertyId("xacmlId");
-		//
-		// Initialize GUI properties
-		//
-		this.comboBoxFilterCategory.setNullSelectionAllowed(true);
-		this.comboBoxFilterCategory.setImmediate(true);
-		//
-		// Respond to value changes
-		//
-		this.comboBoxFilterCategory.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-			Filter currentFilter = null;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				//
-				// Remove filter
-				//
-				if (currentFilter != null) {
-					self.attributes.removeContainerFilter(this.currentFilter);
-					this.currentFilter = null;
-				}
-				//
-				// Set the new one
-				//
-				Object id = self.comboBoxFilterCategory.getValue();
-				if (id == null) {
-					return;
-				}
-				Category cat = self.categories.getItem(id).getEntity();
-				this.currentFilter = new Compare.Equal("categoryBean", cat);
-				self.attributes.addContainerFilter(this.currentFilter);
-			}
-		});
-	}
-	
-	protected void initializeDatatypeComboFilter() {
-		//
-		// Set data source
-		//
-		this.comboBoxFilterDatatype.setContainerDataSource(self.datatypes);
-		this.comboBoxFilterDatatype.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.comboBoxFilterDatatype.setItemCaptionPropertyId("xacmlId");
-		//
-		// Initialize GUI properties
-		//
-		this.comboBoxFilterDatatype.setNullSelectionAllowed(true);
-		this.comboBoxFilterDatatype.setImmediate(true);
-		//
-		// Respond to value changes
-		//
-		this.comboBoxFilterDatatype.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-			Filter currentFilter = null;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				//
-				// Remove filter
-				//
-				if (currentFilter != null) {
-					self.attributes.removeContainerFilter(this.currentFilter);
-					this.currentFilter = null;
-				}
-				//
-				// Set the new one
-				//
-				Object id = self.comboBoxFilterDatatype.getValue();
-				if (id == null) {
-					return;
-				}
-				Datatype cat = self.datatypes.getItem(id).getEntity();
-				this.currentFilter = new Compare.Equal("datatypeBean", cat);
-				self.attributes.addContainerFilter(this.currentFilter);
-			}
-		});
-	}
-	
-	public void refreshContainer() {
-		this.attributes.refresh();
-		this.categories.refresh();
-		this.datatypes.refresh();
-	}
-	
-	public static void createNewAttributeWindow() {
-		//
-		// Create our new attribute
-		//
-		String domain = XacmlAdminUI.getDomain();
-		String userid = ((XacmlAdminUI)UI.getCurrent()).getUserid();
-		final Attribute newAttribute = new Attribute(domain, userid);
-		try {
-			newAttribute.setCategoryBean(((XacmlAdminUI)UI.getCurrent()).getDefaultCategory());
-			newAttribute.setDatatypeBean(((XacmlAdminUI)UI.getCurrent()).getDefaultDatatype());
-		} catch (Exception e) {
-			logger.error(e);
-			return;
-		}
-		//
-		// Create our editor window
-		//
-		final AttributeEditorWindow attributeEditor = new AttributeEditorWindow(((XacmlAdminUI)UI.getCurrent()).getAttributes().createEntityItem(newAttribute));
-		attributeEditor.setCaption("Add New Attribute");
-		attributeEditor.setModal(true);
-		attributeEditor.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user hit save?
-				//
-				if (attributeEditor.isSaved()) {
-					//
-					// Add the new attribute
-					//
-					((XacmlAdminUI)UI.getCurrent()).getAttributes().addEntity(newAttribute);
-					((XacmlAdminUI)UI.getCurrent()).refreshAttributes();
-				}
-			}
-			
-		});
-		attributeEditor.center();
-		UI.getCurrent().addWindow(attributeEditor);
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// horizontalLayoutToolbar
-		horizontalLayoutToolbar = buildHorizontalLayoutToolbar();
-		mainLayout.addComponent(horizontalLayoutToolbar);
-		
-		// table
-		table = new Table();
-		table.setImmediate(false);
-		table.setWidth("100.0%");
-		table.setHeight("-1px");
-		mainLayout.addComponent(table);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayoutToolbar() {
-		// common part: create layout
-		horizontalLayoutToolbar = new HorizontalLayout();
-		horizontalLayoutToolbar.setImmediate(false);
-		horizontalLayoutToolbar.setWidth("-1px");
-		horizontalLayoutToolbar.setHeight("-1px");
-		horizontalLayoutToolbar.setMargin(false);
-		horizontalLayoutToolbar.setSpacing(true);
-		
-		// buttonNew
-		buttonNew = new Button();
-		buttonNew.setCaption("New");
-		buttonNew.setImmediate(true);
-		buttonNew.setDescription("Create a new attribute");
-		buttonNew.setWidth("70px");
-		buttonNew.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonNew);
-		horizontalLayoutToolbar.setComponentAlignment(buttonNew, new Alignment(
-				9));
-		
-		// buttonRemove
-		buttonRemove = new Button();
-		buttonRemove.setCaption("Remove");
-		buttonRemove.setImmediate(true);
-		buttonRemove.setDescription("Remove the selected attribute(s)");
-		buttonRemove.setWidth("-1px");
-		buttonRemove.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonRemove);
-		horizontalLayoutToolbar.setComponentAlignment(buttonRemove,
-				new Alignment(9));
-		
-		// buttonClone
-		buttonClone = new Button();
-		buttonClone.setCaption("Clone");
-		buttonClone.setImmediate(true);
-		buttonClone.setDescription("Clone an attribute.");
-		buttonClone.setWidth("-1px");
-		buttonClone.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonClone);
-		horizontalLayoutToolbar.setComponentAlignment(buttonClone,
-				new Alignment(9));
-		
-		// comboBoxFilterCategory
-		comboBoxFilterCategory = new ComboBox();
-		comboBoxFilterCategory.setCaption("Filter By Category");
-		comboBoxFilterCategory.setImmediate(false);
-		comboBoxFilterCategory.setWidth("-1px");
-		comboBoxFilterCategory.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(comboBoxFilterCategory);
-		
-		// comboBoxFilterDatatype
-		comboBoxFilterDatatype = new ComboBox();
-		comboBoxFilterDatatype.setCaption("Filter By Data Type");
-		comboBoxFilterDatatype.setImmediate(false);
-		comboBoxFilterDatatype.setWidth("-1px");
-		comboBoxFilterDatatype.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(comboBoxFilterDatatype);
-		
-		return horizontalLayoutToolbar;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/ObadviceDictionary.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/ObadviceDictionary.java
deleted file mode 100644
index 1b1edd4..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/ObadviceDictionary.java
+++ /dev/null
@@ -1,347 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.components;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.XacmlAdminAuthorization;
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.Obadvice;
-import org.apache.openaz.xacml.admin.view.windows.ObadviceEditorWindow;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.addon.jpacontainer.provider.CachingLocalEntityProvider;
-import com.vaadin.addon.jpacontainer.provider.CachingMutableLocalEntityProvider;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.util.filter.Compare;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window.CloseEvent;
-import com.vaadin.ui.Window.CloseListener;
-
-public class ObadviceDictionary extends CustomComponent {
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Table table;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayoutToolbar;
-	@AutoGenerated
-	private ComboBox comboBoxFilter;
-	@AutoGenerated
-	private Button buttonClone;
-	@AutoGenerated
-	private Button buttonRemove;
-	@AutoGenerated
-	private Button buttonNew;
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(ObadviceDictionary.class);
-	private final ObadviceDictionary self = this;
-	
-	private static final Object[] visibleColumns = new Object[] { "type", "xacmlId", "description", "fulfillOn", "modifiedBy", "modifiedDate", "createdBy", "createdDate"};
-	private static final String[] columnHeaders = new String[] { "Type", "Attribute ID", "Description", "FulFill/Apply", "Modified By", "Modified Date", "Created By", "Created Date"};
-	
-	private final JPAContainer<Obadvice>	obadvice  = new JPAContainer<Obadvice>(Obadvice.class);
-
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 * @param jpaContainer 
-	 */
-	public ObadviceDictionary() {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Setup container
-		//
-		boolean isReadOnly;
-		if (((XacmlAdminUI)UI.getCurrent()).isAuthorized( 
-				XacmlAdminAuthorization.AdminAction.ACTION_WRITE, 
-				XacmlAdminAuthorization.AdminResource.RESOURCE_DICTIONARIES)) {
-			if (logger.isDebugEnabled()) {
-				logger.debug("write access");
-			}
-			isReadOnly = false;
-			this.obadvice.setEntityProvider(new CachingMutableLocalEntityProvider<Obadvice>(Obadvice.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-		} else {
-			if (logger.isDebugEnabled()) {
-				logger.debug("read only access");
-			}
-			isReadOnly = true;
-			this.obadvice.setEntityProvider(new CachingLocalEntityProvider<Obadvice>(Obadvice.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-		}
-		//
-		// initialize
-		//
-		this.initializeTable(isReadOnly);
-		this.initializeButtons(isReadOnly);
-		this.initializeCombo();
-	}
-	
-	protected void initializeTable(boolean isReadOnly) {
-		//
-		// Set our container
-		//
-		this.table.setContainerDataSource(this.obadvice);
-		//
-		// Initialize GUI properties
-		//
-		this.table.setVisibleColumns(visibleColumns);
-		this.table.setColumnHeaders(columnHeaders);
-		this.table.setImmediate(true);
-		this.table.setColumnCollapsingAllowed(true);
-		//
-		// Is read only
-		//
-		if (isReadOnly) {
-			return;
-		}
-		this.table.setSelectable(true);
-		//
-		// Respond to selections
-		//
-		this.table.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.buttonRemove.setEnabled(self.table.getValue() != null);
-				self.buttonClone.setEnabled(self.table.getValue() != null);
-			}			
-		});
-	}
-	
-	protected void initializeButtons(boolean isReadOnly) {
-		if (isReadOnly) {
-			this.buttonNew.setVisible(false);
-			this.buttonRemove.setVisible(false);
-			this.buttonClone.setVisible(false);
-			return;
-		}
-		//
-		// NEW button
-		//
-		this.buttonNew.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				//
-				// Create window
-				//
-				String domain = XacmlAdminUI.getDomain();
-				String userid = ((XacmlAdminUI)UI.getCurrent()).getUserid();
-				final Obadvice oa = new Obadvice(domain, userid);
-				final EntityItem<Obadvice> entity = self.obadvice.createEntityItem(oa);
-				final ObadviceEditorWindow editor = new ObadviceEditorWindow(entity);
-				editor.setCaption("Add New Obligation/Advice");
-				editor.setCloseShortcut(KeyCode.ESCAPE);
-				editor.setModal(true);
-				editor.addCloseListener(new CloseListener() {
-					private static final long serialVersionUID = 1L;
-
-					@Override
-					public void windowClose(CloseEvent e) {
-						if (editor.isSaved()) {
-							self.obadvice.addEntity(oa);
-							logger.info("Added new obligation/advice: " + oa);
-						}
-					}
-				});
-				editor.center();
-				UI.getCurrent().addWindow(editor);
-			}
-		});
-		//
-		// Disable remove/clone buttons to start
-		//
-		this.buttonRemove.setEnabled(false);
-		this.buttonClone.setEnabled(false);
-		//
-		// REMOVE button
-		//
-		this.buttonRemove.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.obadvice.removeItem(self.table.getValue());
-			}
-		});
-		//
-		// CLONE button
-		//
-		this.buttonClone.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				// TODO
-			}
-		});
-	}
-	
-	protected void initializeCombo() {
-		//
-		// Add filter values
-		//
-		this.comboBoxFilter.addItem(Obadvice.OBLIGATION);
-		this.comboBoxFilter.addItem(Obadvice.ADVICE);
-		//
-		// Initialize GUI properties
-		//
-		this.comboBoxFilter.setImmediate(true);
-		this.comboBoxFilter.setNullSelectionAllowed(true);
-		//
-		//
-		this.comboBoxFilter.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				//
-				// Remove filters
-				//
-				self.obadvice.removeAllContainerFilters();
-				//
-				// What was selected?
-				//
-				Object id = self.comboBoxFilter.getValue();
-				if (id != null) {
-					//
-					// Add filter
-					//
-					if (id.equals(Obadvice.OBLIGATION)) {
-						self.obadvice.addContainerFilter(new Compare.Equal("type", Obadvice.OBLIGATION));
-					} else if (id.equals(Obadvice.ADVICE)) {
-						self.obadvice.addContainerFilter(new Compare.Equal("type", Obadvice.ADVICE));
-					}
-				}
-			}
-		});
-	}
-
-	public void refreshContainer() {
-		this.obadvice.refresh();
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("100%");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("100.0%");
-		setHeight("-1px");
-		
-		// horizontalLayoutToolbar
-		horizontalLayoutToolbar = buildHorizontalLayoutToolbar();
-		mainLayout.addComponent(horizontalLayoutToolbar);
-		
-		// table
-		table = new Table();
-		table.setImmediate(true);
-		table.setWidth("-1px");
-		table.setHeight("-1px");
-		mainLayout.addComponent(table);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayoutToolbar() {
-		// common part: create layout
-		horizontalLayoutToolbar = new HorizontalLayout();
-		horizontalLayoutToolbar.setImmediate(false);
-		horizontalLayoutToolbar.setWidth("-1px");
-		horizontalLayoutToolbar.setHeight("-1px");
-		horizontalLayoutToolbar.setMargin(false);
-		horizontalLayoutToolbar.setSpacing(true);
-		
-		// buttonNew
-		buttonNew = new Button();
-		buttonNew.setCaption("New");
-		buttonNew.setImmediate(true);
-		buttonNew
-				.setDescription("Add a new advice or obligation to the dictionary.");
-		buttonNew.setWidth("-1px");
-		buttonNew.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonNew);
-		horizontalLayoutToolbar.setComponentAlignment(buttonNew, new Alignment(
-				24));
-		
-		// buttonRemove
-		buttonRemove = new Button();
-		buttonRemove.setCaption("Remove");
-		buttonRemove.setImmediate(true);
-		buttonRemove
-				.setDescription("Remove the selected advice or obligation from the dictionary.");
-		buttonRemove.setWidth("-1px");
-		buttonRemove.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonRemove);
-		horizontalLayoutToolbar.setComponentAlignment(buttonRemove,
-				new Alignment(24));
-		
-		// buttonClone
-		buttonClone = new Button();
-		buttonClone.setCaption("Clone");
-		buttonClone.setImmediate(true);
-		buttonClone.setDescription("Clone the selected obligation/advice.");
-		buttonClone.setWidth("-1px");
-		buttonClone.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonClone);
-		horizontalLayoutToolbar.setComponentAlignment(buttonClone,
-				new Alignment(24));
-		
-		// comboBoxFilter
-		comboBoxFilter = new ComboBox();
-		comboBoxFilter.setCaption("Filter By Type");
-		comboBoxFilter.setImmediate(false);
-		comboBoxFilter.setWidth("-1px");
-		comboBoxFilter.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(comboBoxFilter);
-		
-		return horizontalLayoutToolbar;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/PDPManagement.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/PDPManagement.java
deleted file mode 100644
index 56fd9cd..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/PDPManagement.java
+++ /dev/null
@@ -1,862 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.components;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.vaadin.dialogs.ConfirmDialog;
-import org.vaadin.dialogs.ConfirmDialog.ContentMode;
-
-import org.apache.openaz.xacml.admin.XacmlAdminAuthorization;
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.model.PDPContainer;
-import org.apache.openaz.xacml.admin.model.PDPGroupContainer;
-import org.apache.openaz.xacml.admin.model.PDPPIPContainer;
-import org.apache.openaz.xacml.admin.model.PDPPolicyContainer;
-import org.apache.openaz.xacml.admin.util.AdminNotification;
-import org.apache.openaz.xacml.admin.view.windows.EditPDPGroupWindow;
-import org.apache.openaz.xacml.admin.view.windows.EditPDPWindow;
-import org.apache.openaz.xacml.admin.view.windows.PDPStatusWindow;
-import org.apache.openaz.xacml.admin.view.windows.SelectPDPGroupWindow;
-import org.apache.openaz.xacml.api.pap.PAPEngine;
-import org.apache.openaz.xacml.api.pap.PAPException;
-import org.apache.openaz.xacml.api.pap.PDP;
-import org.apache.openaz.xacml.api.pap.PDPGroup;
-import org.apache.openaz.xacml.api.pap.PDPGroupStatus;
-import org.apache.openaz.xacml.api.pap.PDPStatus;
-import org.apache.openaz.xacml.std.pap.StdPDPGroup;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.event.Action;
-import com.vaadin.event.Action.Handler;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.Table.ColumnGenerator;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window.CloseEvent;
-import com.vaadin.ui.Window.CloseListener;
-
-
-public class PDPManagement extends CustomComponent {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-
-	@AutoGenerated
-	private Table table;
-
-	@AutoGenerated
-	private HorizontalLayout horizontalLayoutToolbar;
-
-	@AutoGenerated
-	private Button buttonRemove;
-
-	@AutoGenerated
-	private Button buttonCreate;
-
-	private static final long serialVersionUID = 1L;
-	private final PDPManagement self = this;
-	private static final Log logger	= LogFactory.getLog(PDPManagement.class);
-	
-	private PDPGroupContainer container;
-	
-	private static final Action CREATE_GROUP = 	new Action ("Create Group");
-	private static final Action REPAIR_GROUP = 	new Action ("Repair Group");
-	private static final Action EDIT_GROUP = 	new Action ("Edit Group");
-	private static final Action DELETE_GROUP = 	new Action ("Delete Group");
-	private static final Action SYNCHRONIZE = 	new Action ("Synchronize");
-	private static final Action MAKE_DEFAULT = 	new Action ("Make Default");
-	private static final Action CREATE_PDP = 	new Action ("Create PDP");
-	private static final Action EDIT_PDP = 		new Action ("Edit PDP");
-	private static final Action DELETE_PDP = 	new Action ("Delete PDP");
-	private static final Action MOVE_PDP = 		new Action ("Move PDP");
-	private static final Action GET_PDP_STATUS = new Action ("View Status");
-	
-	private PAPEngine papEngine;
-
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PDPManagement(PAPEngine engine) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Initialize
-		//
-		this.papEngine = engine;
-		//
-		// Initialize
-		//
-		this.initialize();
-		//
-		// setup the buttons
-		//
-		this.setupButtons();
-	}
-	
-	protected void initialize() {
-		//
-		// Don't create a container if the engine doesn't exist
-		//
-		if (this.papEngine == null) {
-			//
-			// remove all the components
-			//
-			this.mainLayout.removeAllComponents();
-			//
-			// Add a label
-			//
-			this.mainLayout.addComponent(new Label("PDP Management unavailable - PAP servlet unavailable."));
-			//
-			// done
-			//
-			return;
-		}
-		//
-		// Create our container
-		//
-		this.container = new PDPGroupContainer(this.papEngine);
-		//
-		// Determine authorization level
-		//
-		boolean isAdmin = ((XacmlAdminUI)UI.getCurrent()).isAuthorized( 
-				XacmlAdminAuthorization.AdminAction.ACTION_ADMIN, 
-				XacmlAdminAuthorization.AdminResource.RESOURCE_PDP_ADMIN);
-		try {
-			this.initializeTree(isAdmin);
-			this.initializeButtons(isAdmin);
-		} catch (Exception e) {
-			logger.error("UNABLE TO START PDPManagement: " + e, e);
-			// check if PAP servlet is up
-			try {
-				Set<PDPGroup> groups = this.papEngine.getPDPGroups();
-				if (groups == null) {
-					throw new PAPException("PAP not running");
-				}
-			} catch (PAPException | NullPointerException e1) {
-				setCompositionRoot(new Label("Cannot use PDP Management because the PAP servlet was not running when Admin Console Servlet first initialized."));
-				return;
-			}
-			setCompositionRoot(new Label("Cannot use PDP Management because of error during initialization: " + e.getMessage()));
-		}
-	}
-	
-	protected void initializeTree(final boolean isAdmin) {
-		//
-		// Set the data source
-		//
-		this.table.setContainerDataSource(this.container);
-		//
-		// Setup the GUI properties
-		//
-		this.table.setVisibleColumns("Name", "Description", "Status", "Default", "PDPs", "Policies", "PIP Configurations");
-		this.table.setColumnHeaders("Name", "Description", "Status", "Default", "PDP's", "Policies", "PIP Configurations");
-		//
-		// The description should be a text area
-		//
-		this.table.addGeneratedColumn("Description", new ColumnGenerator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Object generateCell(Table source, Object itemId, Object columnId) {
-				TextArea area = new TextArea();
-				area.setValue(((PDPGroup) itemId).getDescription());
-				area.setReadOnly(true);
-				return area;
-			}
-			
-		});
-		//
-		// Generate a GUI element for the PDP's
-		//
-		this.table.addGeneratedColumn("PDPs", new ColumnGenerator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Object generateCell(Table source, Object itemId, Object columnId) {
-	        	final Table table = new Table();
-	        	final PDPContainer container = new PDPContainer((PDPGroup) itemId);
-	        	//
-	        	// Setup the container data
-	        	//
-	        	table.setContainerDataSource(container);
-	        	//
-	        	// Save the group for easy access
-	        	//
-	        	table.setData(itemId);
-	        	//
-	        	// GUI properties
-	        	//
-	        	table.setPageLength(table.getContainerDataSource().size() + 2);
-	        	table.setVisibleColumns("Name", "Status", "Description");
-				table.setColumnCollapsingAllowed(true);
-				table.setColumnCollapsed("Description", true);
-				table.setWidth("100%");
-				//
-				// If an admin, then it is editable
-				//
-				if (isAdmin) {
-					//
-					// Set it as selectable
-					//
-					table.setSelectable(true);
-					//
-					// Add actions
-					//
-					table.addActionHandler(new Handler() {
-						private static final long serialVersionUID = 1L;
-
-						@Override
-						public Action[] getActions(Object target, Object sender) {
-							if (target == null) {
-								return new Action[] {CREATE_PDP};
-							}
-							if (target instanceof PDP) {
-								if (self.container.size() > 1) {
-									return new Action[] {EDIT_PDP, GET_PDP_STATUS, MOVE_PDP, DELETE_PDP};
-								} else {
-									return new Action[] {EDIT_PDP, GET_PDP_STATUS, DELETE_PDP};
-								}
-							}
-							return null;
-						}
-
-						@Override
-						public void handleAction(Action action, Object sender, Object target) {
-							if (action == CREATE_PDP) {
-								self.editPDP(null, (PDPGroup) table.getData());
-								return;
-							}
-							if (action == EDIT_PDP) {
-								assert target instanceof PDP;
-								self.editPDP((PDP) target, (PDPGroup) table.getData());
-								return;
-							}
-							if (action == MOVE_PDP) {
-								assert target instanceof PDP;
-								self.movePDP((PDP) target, (PDPGroup) table.getData());
-								return;
-							}
-							if (action == DELETE_PDP) {
-								assert target instanceof PDP;
-								self.deletePDP((PDP) target, (PDPGroup) table.getData());
-								return;
-							}
-							if (action == GET_PDP_STATUS) {
-								assert target instanceof PDP;
-								self.getPDPStatus((PDP) target, (PDPGroup) table.getData());
-							}
-						}
-					});
-					//
-					// Respond to events
-					//
-					table.addItemClickListener(new ItemClickListener() {
-						private static final long serialVersionUID = 1L;
-
-						@Override
-						public void itemClick(ItemClickEvent event) {
-							if (event.isDoubleClick()) {
-								self.editPDP((PDP) event.getItemId(), (PDPGroup) table.getData());
-							}
-						}
-					});
-				}
-	        	return table;
-			}
-		});
-		//
-		// Generate a GUI element for the policies
-		//
-		this.table.addGeneratedColumn("Policies", new ColumnGenerator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Object generateCell(Table source, Object itemId, Object columnId) {
-	        	Table table = new Table();
-	        	table.setContainerDataSource(new PDPPolicyContainer((PDPGroup) itemId));
-	        	table.setPageLength(table.getContainerDataSource().size() + 2);
-
-	        	table.setVisibleColumns("Root", "Name", "Version", "Description");
-				table.setColumnCollapsingAllowed(true);
-				table.setColumnCollapsed("Description", true);
-
-				table.setWidth("100%");
-
-	        	return table;
-			}
-		});
-		//
-		// Generate a GUI element for the PIP configurations
-		//
-		this.table.addGeneratedColumn("PIP Configurations", new ColumnGenerator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Object generateCell(Table source, Object itemId, Object columnId) {
-	        	Table table = new Table();
-				if (itemId instanceof PDPGroup) {
-		        	table.setContainerDataSource(new PDPPIPContainer((PDPGroup) itemId));
-		        	table.setPageLength(table.getContainerDataSource().size() + 2);
-				}
-				if (itemId instanceof PDP) {
-		        	table.setContainerDataSource(new PDPPIPContainer((PDP) itemId));
-		        	table.setVisible(false);
-		        	table.setPageLength(0);
-				}
-				table.setVisibleColumns("Name", "Description");
-				table.setColumnCollapsingAllowed(true);
-				table.setColumnCollapsed("Description", true);
-				
-				table.setWidth("100%");
-
-	        	return table;
-			}
-		});
-		//
-		// Check the user's authorization level
-		//
-		if (((XacmlAdminUI)UI.getCurrent()).isAuthorized( 
-				XacmlAdminAuthorization.AdminAction.ACTION_ADMIN, 
-				XacmlAdminAuthorization.AdminResource.RESOURCE_PDP_ADMIN)) {
-			this.table.setSelectable(true);
-		} else {
-			if (logger.isDebugEnabled()) {
-				logger.debug("No admin access to pdp management");
-			}
-			return;
-		}
-		//
-		// Setup Action Handlers
-		//
-		this.table.addActionHandler(new Handler() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Action[] getActions(Object target, Object sender) {
-				if (target == null) {
-					//
-					// Nothing is selected, they right-clicked empty space.
-					// Only one action.
-					//
-					return new Action[] {CREATE_GROUP};
-				}
-				if (target instanceof PDPGroup) {
-					List<Action> actions = new ArrayList<Action>();
-					PDPGroupStatus.Status status = ((PDPGroup)target).getStatus().getStatus();
-					if (status == PDPGroupStatus.Status.LOAD_ERRORS) {
-						actions.add(REPAIR_GROUP);
-					}
-					if (((PDPGroup)target).isDefaultGroup() == false) {
-						actions.add(MAKE_DEFAULT);
-					}
-					actions.add(EDIT_GROUP);
-					if (status == PDPGroupStatus.Status.OUT_OF_SYNCH) {
-						actions.add(SYNCHRONIZE);
-					}
-					if (((PDPGroup)target).isDefaultGroup() == false) {
-						actions.add(DELETE_GROUP);
-					}
-					actions.add(CREATE_PDP);
-					// Throws a class cast exception
-//					return (Action[]) actions.toArray();
-					Action[] actions2 = new Action[actions.size()];
-					int index = 0;
-					for (Action a : actions) {
-						actions2[index++] = a;
-					}
-					return actions2;
-				}
-				return null;
-			}
-
-			@Override
-			public void handleAction(Action action, Object sender, Object target) {
-				if (action == CREATE_GROUP) {
-					self.editPDPGroup(null);
-					return;
-				}
-				if (action == EDIT_GROUP) {
-					assert target instanceof PDPGroup;
-					self.editPDPGroup((PDPGroup) target);
-					return;
-				}
-				if (action == DELETE_GROUP) {
-					self.deleteGroup((PDPGroup) target);
-					return;
-				}
-				if (action == REPAIR_GROUP) {
-					if (target instanceof PDPGroup) {
-						((PDPGroup) target).repair();
-					} else {
-						String message = "Action '" + REPAIR_GROUP.getCaption() + "' called on non-group target '" + target + "'";
-						logger.error(message);
-						AdminNotification.error(message);
-					}
-					return;
-				}
-				if (action == MAKE_DEFAULT) {
-					if (target instanceof PDPGroup) {
-						try {
-							self.container.makeDefault((PDPGroup) target);
-						} catch (Exception e) {
-							AdminNotification.error("Make Default failed. Reason:\n" + e.getMessage());
-						}
-					} else {
-						String message = "Action '" + MAKE_DEFAULT.getCaption() + "' called on non-group target '" + target + "'";
-						logger.error(message);
-						AdminNotification.error(message);
-					}
-					return;
-				}
-				if (action == SYNCHRONIZE) {
-					if (target instanceof PDPGroup) {
-logger.error("SYNCHRONIZE NOT YET IMPLMENTED");
-AdminNotification.error("Synchronize not yet implemented");
-					} else {
-						String message = "Action '" + SYNCHRONIZE.getCaption() + "' called on non-group target '" + target + "'";
-						logger.error(message);
-						AdminNotification.error(message);
-					}
-					return;
-				}
-				if (action == CREATE_PDP) {
-					if (target instanceof PDPGroup) {
-						self.editPDP(null, ((PDPGroup)target));
-					} else {
-						String message = "Action '" + CREATE_PDP.getCaption() + "' called on non-group target '" + target + "'";
-						logger.error(message);
-						AdminNotification.error(message);
-					}
-					return;
-				}
-			}
-		});
-		//
-		// Listen for item change notifications
-		//
-		this.table.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick()) {
-					assert event.getItemId() instanceof PDPGroup;
-					self.editPDPGroup((PDPGroup) event.getItemId());
-				}
-			}
-		});
-		//
-		// Respond to selection events
-		//
-		this.table.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				Object id = self.table.getValue();
-				if (id == null) {
-					self.buttonRemove.setEnabled(false);
-				} else {
-					//
-					// Make sure its not the default group
-					//
-					if (((PDPGroup) id).isDefaultGroup()) {
-						self.buttonRemove.setEnabled(false);
-					} else {
-						self.buttonRemove.setEnabled(true);
-					}
-				}
-			}
-		});
-		//
-		// Maximize the table
-		//
-		this.table.setSizeFull();
-	}
-	
-	protected void initializeButtons(final boolean isAdmin) {
-		if (isAdmin == false) {
-			return;
-		}
-		this.buttonCreate.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.editPDPGroup(null);
-			}
-		});
-		this.buttonRemove.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				Object id = self.table.getValue();
-				assert id != null;
-				assert id instanceof PDPGroup;
-				self.deleteGroup((PDPGroup) id);
-				self.table.select(self.table.getNullSelectionItemId());
-			}
-		});
-	}
-	
-	protected void setupButtons() {
-		if (this.table.getValue() == null) {
-			this.buttonRemove.setEnabled(false);
-		} else {
-			this.buttonRemove.setEnabled(true);
-		}		
-	}
-		
-	protected void editPDP(final PDP pdp, final PDPGroup group) {
-		final EditPDPWindow editor = new EditPDPWindow(pdp, this.container.getGroups());
-		if (pdp == null) {
-			editor.setCaption("Create New PDP");
-		} else {
-			editor.setCaption("Edit PDP " + pdp.getId());
-		}
-		editor.setModal(true);
-		editor.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent event) {
-				if (editor.isSaved() == false) {
-					return;
-				}
-				try {
-					//
-					// Adding a new PDP?
-					//
-					if (pdp == null) {
-						//
-						// Yes tell the container to add it
-						//
-						self.container.addNewPDP(editor.getPDPId(), group, editor.getPDPName(), editor.getPDPDescription());
-					} else {
-						//
-						// No tell the container to update it
-						//
-						pdp.setName(editor.getPDPName());
-						pdp.setDescription(editor.getPDPDescription());
-						self.container.updatePDP(pdp);
-					}
-				} catch (Exception e) {
-					String message = "Unable to create PDP.  Reason:\n" + e.getMessage();
-					logger.error(message);
-					AdminNotification.error(message);
-				}
-			}
-		});
-		editor.center();
-		UI.getCurrent().addWindow(editor);
-	}
-	
-	protected void editPDPGroup(final PDPGroup group) {
-		//
-		// copy the group
-		//
-		final StdPDPGroup copyGroup = (group == null ? null : new StdPDPGroup(group));
-		//
-		//
-		//
-		final EditPDPGroupWindow editor = new EditPDPGroupWindow(copyGroup, this.container.getGroups(), papEngine);
-		if (group == null) {
-			editor.setCaption("Create PDP Group");
-		} else {
-			editor.setCaption("Edit PDP Group " + ((PDPGroup) group).getName());
-		}
-		editor.setModal(true);
-		editor.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent event) {
-				if (editor.isSaved() == false) {
-					return;
-				}
-				if (group == null) {
-					//
-					// Creating a new group
-					//
-					try {
-						self.container.addNewGroup(editor.getGroupName(), editor.getGroupDescription());
-					} catch (Exception e) {
-						String message = "Unable to create Group.  Reason:\n" + e.getMessage();
-						logger.error(message);
-						AdminNotification.error(message);
-					}
-				} else {
-					//
-					// Update group
-					//
-					self.container.updateGroup(editor.getUpdatedObject());
-				}
-			}
-		});
-		editor.center();
-		UI.getCurrent().addWindow(editor);
-	}
-	
-	protected void deletePDP(final PDP pdp, final PDPGroup pdpGroup) {
-		String message = "Are you sure you want to delete <B>" + (pdp.getName() == null ? "" : pdp.getName()) + "</B> group?";
-		ConfirmDialog dialog = ConfirmDialog.getFactory().create("Confirm PDP Deletion", message, "Delete", "Cancel");
-		dialog.setContentMode(ContentMode.HTML);
-		dialog.show(getUI(), new ConfirmDialog.Listener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void onClose(ConfirmDialog dialog) {
-				if (dialog.isConfirmed()) {
-					try {
-						self.container.removePDP(pdp, pdpGroup);
-					} catch (PAPException e) {
-						logger.warn("Failed to remove pdp");
-						AdminNotification.warn("Failed to remove PDP");
-					}
-				}
-			}
-		}, true);
-	}
-	
-	protected void movePDP(final PDP pdp, final PDPGroup currentGroup) {
-		List<PDPGroup> currentGroups = this.container.getGroups();
-		Set<PDPGroup> otherGroups = new HashSet<PDPGroup>(currentGroups);
-		if (otherGroups.remove(currentGroup) == false) {
-			logger.warn("Group list inconsistency - failed to move pdp to selected group");
-			return;
-		}
-		final SelectPDPGroupWindow editor = new SelectPDPGroupWindow(otherGroups, "What was this?");
-		editor.setCaption("Move PDP to group");
-		editor.setModal(true);
-		editor.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent event) {
-				if (editor.isSaved()) {
-					self.container.movePDP((PDP) pdp, editor.selectedGroup());
-				}
-			}
-		});
-		editor.center();
-		UI.getCurrent().addWindow(editor);
-	}
-	
-	protected void getPDPStatus(final PDP pdp, final PDPGroup group) {
-		PDPStatus status;
-		try {
-			status = papEngine.getStatus(pdp);
-		} catch (Exception e) {
-			AdminNotification.error("Unable to get details for pdp '" + pdp.getId() + "' with summary status: " + pdp.getStatus().getStatus());
-			return;
-		}
-		logger.info(status);
-		PDPStatusWindow window = new PDPStatusWindow(status);
-		window.setCaption("Status for PDP " + pdp.getName());
-		window.setModal(true);
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-	
-	private void deleteGroup(final PDPGroup group) {
-		//
-		// Cannot be the default group
-		//
-		if (group.isDefaultGroup()) {
-			logger.error("Cannot delete the Default group");
-			return;
-		}
-		//
-		// Any PDPs in the group?
-		//
-		Set<PDP> pdps = group.getPdps();
-		if (pdps.isEmpty()) {
-			//
-			// There are no PDP's, so just prompt to remove it
-			//
-			String message = "Are you sure you want to delete <B>" + (group.getName() == null ? "" : group.getName()) + "</B> group?";
-			ConfirmDialog dialog = ConfirmDialog.getFactory().create("Confirm Group Deletion", message, "Delete", "Cancel");
-			dialog.setContentMode(ContentMode.HTML);
-			dialog.show(getUI(), new ConfirmDialog.Listener() {
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				public void onClose(ConfirmDialog dialog) {
-					if (dialog.isConfirmed()) {
-						try {
-							self.container.removeGroup(group, null);
-						} catch (Exception e1) {
-							logger.warn("Container failed to remove group");
-							AdminNotification.error("Unable to delete group '" + group.getId() + "'.  Reason:\n" + e1.getMessage());
-						}
-						return;
-					}
-				}
-			}, true);
-			return;
-		}
-		//
-		// Get our set of groups
-		//
-		List<PDPGroup> currentGroups = this.container.getGroups();
-		Set<PDPGroup> otherGroups = new HashSet<PDPGroup>(currentGroups);
-		if (otherGroups.remove(group) == false) {
-			logger.warn("Group list inconsistency - failed to remove group we are attempting to delete");
-			return;
-		}
-		//
-		// We should have at least one group
-		//
-		if (otherGroups.isEmpty()) {
-			logger.error("Group list inconsistency - no other groups to choose from.");
-			return;
-		}
-		//
-		// If there is only one group, it SHOULD be the default group
-		//
-		if (otherGroups.size() == 1) {
-			PDPGroup loneGroup = otherGroups.iterator().next();
-			if (loneGroup.isDefaultGroup() == false) {
-				logger.error("Group list inconsistency - lone group is NOT default.");
-				return;
-			}
-		}
-		//
-		// Create our confirmation window
-		//
-		final SelectPDPGroupWindow window = new SelectPDPGroupWindow(otherGroups, "Select New Group for PDPs");
-		window.setCaption("Confirm Group " + group.getName() + " Deletion");
-		window.setCloseShortcut(KeyCode.ESCAPE);
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				if (window.isSaved()) {
-					PDPGroup newGroup = window.selectedGroup();
-					if (newGroup == null) {
-						logger.warn("No group selected for moving PDPs into");
-						AdminNotification.warn("No group selected for moving PDPs into.  Group '" + group.getId() + "' not deleted");
-						return;
-					}
-					try {
-						self.container.removeGroup(group, newGroup);
-					} catch (Exception e1) {
-						logger.warn("Container failed to remove group: " + e1, e1);
-						AdminNotification.error("Unable to delete group '" + group.getId() + "'.  Reason:\n" + e1.getMessage());
-					}
-				}
-			}
-			
-		});
-		getUI().addWindow(window);
-	}
-
-	public void refreshContainer() {
-		if (this.container != null) {
-			this.container.refreshGroups();
-		}
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("100%");
-		mainLayout.setHeight("100%");
-		mainLayout.setMargin(false);
-		
-		// top-level component properties
-		setWidth("100.0%");
-		setHeight("100.0%");
-		
-		// horizontalLayoutToolbar
-		horizontalLayoutToolbar = buildHorizontalLayoutToolbar();
-		mainLayout.addComponent(horizontalLayoutToolbar);
-		
-		// tree
-		table = new Table();
-		table.setImmediate(false);
-		table.setWidth("-1px");
-		table.setHeight("-1px");
-		mainLayout.addComponent(table);
-		mainLayout.setExpandRatio(table, 1.0f);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayoutToolbar() {
-		// common part: create layout
-		horizontalLayoutToolbar = new HorizontalLayout();
-		horizontalLayoutToolbar.setImmediate(false);
-		horizontalLayoutToolbar.setWidth("-1px");
-		horizontalLayoutToolbar.setHeight("-1px");
-		horizontalLayoutToolbar.setMargin(true);
-		horizontalLayoutToolbar.setSpacing(true);
-		
-		// buttonCreate
-		buttonCreate = new Button();
-		buttonCreate.setCaption("Create Group");
-		buttonCreate.setImmediate(false);
-		buttonCreate.setWidth("-1px");
-		buttonCreate.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonCreate);
-		
-		// buttonRemove
-		buttonRemove = new Button();
-		buttonRemove.setCaption("Remove Group");
-		buttonRemove.setImmediate(false);
-		buttonRemove.setWidth("-1px");
-		buttonRemove.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonRemove);
-		
-		return horizontalLayoutToolbar;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/PIPManagement.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/PIPManagement.java
deleted file mode 100644
index c25f018..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/PIPManagement.java
+++ /dev/null
@@ -1,538 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.components;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.Collection;
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.vaadin.dialogs.ConfirmDialog;
-import org.vaadin.dialogs.ConfirmDialog.ContentMode;
-
-import org.apache.openaz.xacml.admin.XacmlAdminAuthorization;
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.PIPConfiguration;
-import org.apache.openaz.xacml.admin.util.AdminNotification;
-import org.apache.openaz.xacml.admin.view.components.PIPResolverComponent;
-import org.apache.openaz.xacml.admin.view.windows.PIPConfigurationEditorWindow;
-import org.apache.openaz.xacml.admin.view.windows.PIPImportWindow;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.addon.jpacontainer.provider.CachingLocalEntityProvider;
-import com.vaadin.addon.jpacontainer.provider.CachingMutableLocalEntityProvider;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.event.Action;
-import com.vaadin.event.Action.Handler;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.Table.ColumnGenerator;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window.CloseEvent;
-import com.vaadin.ui.Window.CloseListener;
-
-public class PIPManagement extends CustomComponent {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Table tablePIP;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayoutToolbar;
-	@AutoGenerated
-	private Button buttonImport;
-	@AutoGenerated
-	private Button buttonRemove;
-	@AutoGenerated
-	private Button buttonClone;
-	@AutoGenerated
-	private Button buttonAdd;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(PIPManagement.class);
-	private static final Object[] visibleColumns = new Object[] { "name", "description", "piptype", "issuer"};
-	private static final String[] columnHeaders = new String[] { "Name", "Description", "Type", "Issuer"};
-	
-	private final Action ADD_CONFIGURATION = new Action("Add Configuration");
-	private final Action EDIT_CONFIGURATION = new Action("Edit Configuration");
-	private final Action CLONE_CONFIGURATION = new Action("Clone Configuration");
-	private final Action REMOVE_CONFIGURATION = new Action("Remove Configuration");
-	private final Action ADD_RESOLVER = new Action("Add Resolver");
-	private final Action PUBLISH_CONFIGURATION = new Action("Publish Configuration");
-
-	private final PIPManagement self = this;
-	private final JPAContainer<PIPConfiguration>	container = new JPAContainer<PIPConfiguration>(PIPConfiguration.class);
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PIPManagement() {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Setup containers
-		//
-		boolean isReadOnly;
-		if (((XacmlAdminUI)UI.getCurrent()).isAuthorized( 
-				XacmlAdminAuthorization.AdminAction.ACTION_WRITE, 
-				XacmlAdminAuthorization.AdminResource.RESOURCE_PIP_ADMIN)) {
-			//
-			// Writable container
-			//
-			container.setEntityProvider(new CachingMutableLocalEntityProvider<PIPConfiguration>(PIPConfiguration.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-			isReadOnly = false;
-		} else {
-			//
-			// Read only container
-			//
-			container.setEntityProvider(new CachingLocalEntityProvider<PIPConfiguration>(PIPConfiguration.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-			isReadOnly = true;
-		}
-		//
-		// Finish initialization
-		//
-		this.initializeTree(isReadOnly);
-		this.initializeButtons(isReadOnly);
-		//
-		// Setup
-		//
-		this.setupButtons();
-	}
-	
-	protected void initializeTree(boolean isReadOnly) {
-		//
-		// Initialize GUI properties
-		//
-		this.tablePIP.setImmediate(true);
-		this.tablePIP.setContainerDataSource(this.container);
-		this.tablePIP.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.tablePIP.setItemCaptionPropertyId("name");
-		this.tablePIP.setVisibleColumns(visibleColumns);
-		this.tablePIP.setColumnHeaders(columnHeaders);
-		this.tablePIP.setSizeFull();
-		//
-		// Access?
-		//
-		if (isReadOnly) {
-			if (logger.isDebugEnabled()) {
-				logger.debug("read only pip access");
-			}
-			return;
-		}
-		this.tablePIP.setSelectable(true);
-		//
-		// Setup click handler
-		//
-		this.tablePIP.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick()) {
-					PIPManagement.editConfiguration(self.container.getItem(event.getItemId()));
-				}				
-			}
-		});
-		//
-		// Setup action handler
-		//
-		this.tablePIP.addActionHandler(new Handler() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Action[] getActions(Object target, Object sender) {
-				if (target == null) {
-					return new Action[] {ADD_CONFIGURATION};
-				}
-				//
-				// Target is an Object ID
-				//
-				EntityItem<PIPConfiguration> config = self.container.getItem(target);
-				if (config != null && config.getEntity().isReadOnly() == false) {
-					if (config.getEntity().requiresResolvers()) {
-						return new Action[] {EDIT_CONFIGURATION, CLONE_CONFIGURATION, REMOVE_CONFIGURATION, PUBLISH_CONFIGURATION, ADD_RESOLVER};
-					} else {
-						return new Action[] {EDIT_CONFIGURATION, CLONE_CONFIGURATION, REMOVE_CONFIGURATION, PUBLISH_CONFIGURATION};							
-					}
-				}
-				if (logger.isDebugEnabled()) {
-					logger.debug("Could not find item: " + target);
-				}
-				return null;
-			}
-
-			@Override
-			public void handleAction(Action action, Object sender, Object target) {
-				EntityItem<PIPConfiguration> config = self.container.getItem(target);
-				if (config == null) {
-					if (logger.isDebugEnabled()) {
-						logger.debug("Could not find item: " + target);
-					}
-					return;
-				}
-				if (action == ADD_CONFIGURATION) {
-					PIPManagement.editConfiguration(self.container.createEntityItem(new PIPConfiguration()));
-					return;
-				}
-				if (action == EDIT_CONFIGURATION) {
-					PIPManagement.editConfiguration(config);
-					return;
-				}
-				if (action == CLONE_CONFIGURATION) {
-					self.cloneConfiguration(config);
-					return;
-				}
-				if (action == REMOVE_CONFIGURATION) {
-					self.removeConfiguration(config);
-					return;
-				}
-				if (action == ADD_RESOLVER) {
-					PIPResolverComponent.addResolver(config.getEntity(), null);
-					return;
-				}
-				if (action == PUBLISH_CONFIGURATION) {
-					PIPResolverComponent.publishConfiguration(config);
-					return;
-				}
-			}
-		});
-		//
-		// When a selection changes listener
-		//
-		this.tablePIP.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.setupButtons();
-			}			
-		});
-		this.tablePIP.addGeneratedColumn("description", new ColumnGenerator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Object generateCell(Table source, Object itemId, Object columnId) {
-				EntityItem<PIPConfiguration> entity = self.container.getItem(itemId);
-				if (entity != null && entity.getEntity() != null) {
-					TextArea area = new TextArea();
-					area.setValue(entity.getEntity().getDescription());
-					area.setNullRepresentation("");
-					area.setSizeFull();
-					area.setReadOnly(true);
-					return area;
-				}
-				return null;
-			}
-		});
-		this.tablePIP.addGeneratedColumn("piptype", new ColumnGenerator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Object generateCell(Table source, Object itemId, Object columnId) {
-				EntityItem<PIPConfiguration> entity = self.container.getItem(itemId);
-				if (entity != null && entity.getEntity() != null) {
-					return entity.getEntity().getPiptype().getType();
-				}
-				return null;
-			}
-		});
-		//
-		// Customize the resolver column
-		//
-		this.tablePIP.addGeneratedColumn("Resolvers", new ColumnGenerator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Object generateCell(Table source, Object itemId, Object columnId) {
-				EntityItem<PIPConfiguration> entity = self.container.getItem(itemId);
-				if (entity != null && entity.getEntity() != null && entity.getEntity().requiresResolvers()) {
-					PIPResolverComponent component = new PIPResolverComponent(entity.getEntity());
-					return component;
-				}
-				return null;
-			}			
-		});
-	}
-	
-	protected void initializeButtons(boolean isReadOnly) {
-		if (isReadOnly) {
-			this.buttonAdd.setVisible(false);
-			this.buttonRemove.setVisible(false);
-			this.buttonClone.setVisible(false);
-			return;
-		}
-		this.buttonAdd.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				PIPManagement.editConfiguration(self.container.createEntityItem(new PIPConfiguration()));
-			}
-			
-		});
-		this.buttonRemove.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.removeConfiguration(self.container.getItem(self.tablePIP.getValue()));
-			}
-			
-		});
-		this.buttonClone.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.cloneConfiguration(self.container.getItem(self.tablePIP.getValue()));
-			}
-		});
-		this.buttonImport.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				final PIPImportWindow window = new PIPImportWindow();
-				window.setCaption("Import PIP Configuration");
-				window.setModal(true);
-				window.center();
-				window.addCloseListener(new CloseListener() {
-					private static final long serialVersionUID = 1L;
-
-					@Override
-					public void windowClose(CloseEvent e) {
-						String file = window.getUploadedFile();
-						if (file == null) {
-							return;
-						}
-						self.importConfiguration(file);
-					}
-				});
-				UI.getCurrent().addWindow(window);
-			}
-		});
-	}
-	
-	protected void importConfiguration(String file) {
-		Properties properties = new Properties();
-		try {
-			properties.load(new FileInputStream(file));
-			Collection<PIPConfiguration> configs = PIPConfiguration.importPIPConfigurations(properties);
-			if (configs == null || configs.isEmpty()) {
-				AdminNotification.warn("There were no PIP Engine configurations found.");
-			} else {
-				for (PIPConfiguration config : configs) {
-					this.container.addEntity(config);
-				}
-			}
-		} catch (IOException e) {
-			String message = "Failed to load properties: " + e.getLocalizedMessage();
-			logger.error(message);
-			AdminNotification.error(message);
-		}
-	}
-
-	public static void editConfiguration(final EntityItem<PIPConfiguration> entity) {
-		final PIPConfigurationEditorWindow editor = new PIPConfigurationEditorWindow(entity);
-		if (entity.isPersistent()) {
-			editor.setCaption("Edit PIP Configuration " + entity.getEntity().getName());
-		} else {
-			editor.setCaption("Create New PIP Configuration");
-		}
-		editor.setModal(true);
-		editor.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent event) {
-				if (editor.isSaved()) {
-					if (entity.isPersistent() == false) {
-						((XacmlAdminUI)UI.getCurrent()).getPIPConfigurations().addEntity(entity.getEntity());
-					}
-					((XacmlAdminUI)UI.getCurrent()).refreshPIPConfiguration();
-				}
-			}					
-		});
-		editor.center();
-		UI.getCurrent().addWindow(editor);
-	}
-	
-	protected void removeConfiguration(final EntityItem<PIPConfiguration> entity) {
-		//
-		// Sanity checks
-		//
-		if (entity == null || entity.getEntity() == null) {
-			logger.error("Removing a null entity");
-			return;
-		}
-		String message = "Are you sure you want to remove the " + entity.getEntity().getName() + " configuration?";
-		ConfirmDialog dialog = ConfirmDialog.getFactory().create("Confirm PIP Configuration Deletion", message, "Remove", "Cancel");
-		dialog.setContentMode(ContentMode.HTML);
-		dialog.show(getUI(), new ConfirmDialog.Listener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void onClose(ConfirmDialog dialog) {
-				if (dialog.isConfirmed()) {
-					if (self.container.removeItem(entity.getItemId()) == false) {
-						logger.warn("Failed to remove PIP configuration");
-						AdminNotification.warn("Failed to remove PIP configuration.");
-					} else {
-						self.setupButtons();
-					}
-				}
-			}
-		}, true);
-	}
-	
-	protected void cloneConfiguration(final EntityItem<PIPConfiguration> entity) {
-		//
-		// Sanity checks
-		//
-		if (entity == null || entity.getEntity() == null) {
-			logger.warn("Cloning a null entity, the buttons were not reset. Resetting them.");
-			this.setupButtons();
-			return;
-		}
-		//
-		// Clone it
-		//
-		PIPManagement.editConfiguration(this.container.createEntityItem(new PIPConfiguration(entity.getEntity(), ((XacmlAdminUI)UI.getCurrent()).getUserid())));
-	}
-	
-	protected void setupButtons() {
-		if (this.tablePIP.getValue() != null) {
-			Object id = this.tablePIP.getValue();
-			EntityItem<PIPConfiguration> entity = this.container.getItem(id);
-			if (entity == null || entity.getEntity().isReadOnly()) {
-				this.buttonRemove.setEnabled(false);
-				this.buttonClone.setEnabled(false);
-			} else {
-				this.buttonRemove.setEnabled(true);
-				this.buttonClone.setEnabled(true);
-			}
-		} else {
-			this.buttonRemove.setEnabled(false);
-			this.buttonClone.setEnabled(false);
-		}
-	}
-
-	public void refreshContainer() {
-		this.container.refresh();
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("100%");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("100.0%");
-		setHeight("-1px");
-		
-		// horizontalLayoutToolbar
-		horizontalLayoutToolbar = buildHorizontalLayoutToolbar();
-		mainLayout.addComponent(horizontalLayoutToolbar);
-		
-		// tablePIP
-		tablePIP = new Table();
-		tablePIP.setCaption("PIP Configurations");
-		tablePIP.setImmediate(false);
-		tablePIP.setWidth("100.0%");
-		tablePIP.setHeight("-1px");
-		mainLayout.addComponent(tablePIP);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayoutToolbar() {
-		// common part: create layout
-		horizontalLayoutToolbar = new HorizontalLayout();
-		horizontalLayoutToolbar.setImmediate(false);
-		horizontalLayoutToolbar.setWidth("-1px");
-		horizontalLayoutToolbar.setHeight("-1px");
-		horizontalLayoutToolbar.setMargin(false);
-		horizontalLayoutToolbar.setSpacing(true);
-		
-		// buttonAdd
-		buttonAdd = new Button();
-		buttonAdd.setCaption("Add Configuration");
-		buttonAdd.setImmediate(true);
-		buttonAdd.setWidth("-1px");
-		buttonAdd.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonAdd);
-		
-		// buttonClone
-		buttonClone = new Button();
-		buttonClone.setCaption("Clone Configuration");
-		buttonClone.setImmediate(true);
-		buttonClone.setWidth("-1px");
-		buttonClone.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonClone);
-		
-		// buttonRemove
-		buttonRemove = new Button();
-		buttonRemove.setCaption("Remove Configuration");
-		buttonRemove.setImmediate(true);
-		buttonRemove.setWidth("-1px");
-		buttonRemove.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonRemove);
-		
-		// buttonImport
-		buttonImport = new Button();
-		buttonImport.setCaption("Import Configuration");
-		buttonImport.setImmediate(false);
-		buttonImport
-				.setDescription("Imports a configuration from a properties file.");
-		buttonImport.setWidth("-1px");
-		buttonImport.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonImport);
-		
-		return horizontalLayoutToolbar;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/PolicyEditor.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/PolicyEditor.java
deleted file mode 100644
index f6ab0f8..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/PolicyEditor.java
+++ /dev/null
@@ -1,1679 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.components;
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.List;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ConditionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionsType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicySetType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableDefinitionType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.model.GitRepositoryContainer;
-import org.apache.openaz.xacml.admin.model.PolicyContainer;
-import org.apache.openaz.xacml.admin.util.AdminNotification;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.admin.view.windows.AttributeSelectionWindow;
-import org.apache.openaz.xacml.admin.view.windows.AttributeValueEditorWindow;
-import org.apache.openaz.xacml.admin.view.windows.ExpressionBuilderComponent;
-import org.apache.openaz.xacml.admin.view.windows.MatchEditorWindow;
-import org.apache.openaz.xacml.admin.view.windows.ObligationAdviceEditorWindow;
-import org.apache.openaz.xacml.admin.view.windows.PolicyEditorWindow;
-import org.apache.openaz.xacml.admin.view.windows.PolicySetEditorWindow;
-import org.apache.openaz.xacml.admin.view.windows.RuleEditorWindow;
-import org.apache.openaz.xacml.admin.view.windows.VariableDefinitionEditorWindow;
-import org.apache.openaz.xacml.util.XACMLObjectCopy;
-import org.apache.openaz.xacml.util.XACMLPolicyWriter;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Container.ItemSetChangeEvent;
-import com.vaadin.data.Container.ItemSetChangeListener;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.event.Action;
-import com.vaadin.event.Action.Handler;
-import com.vaadin.event.DataBoundTransferable;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.event.ShortcutAction;
-import com.vaadin.event.dd.DragAndDropEvent;
-import com.vaadin.event.dd.DropHandler;
-import com.vaadin.event.dd.acceptcriteria.AcceptAll;
-import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
-import com.vaadin.server.BrowserWindowOpener;
-import com.vaadin.server.FileDownloader;
-import com.vaadin.server.StreamResource;
-import com.vaadin.shared.ui.dd.VerticalDropLocation;
-import com.vaadin.ui.AbstractSelect.AbstractSelectTargetDetails;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.TabSheet.Tab;
-import com.vaadin.ui.Table.TableDragMode;
-import com.vaadin.ui.TreeTable;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window.CloseEvent;
-import com.vaadin.ui.Window.CloseListener;
-
-public class PolicyEditor extends CustomComponent {
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-
-	@AutoGenerated
-	private TreeTable tree;
-
-	@AutoGenerated
-	private HorizontalLayout horizontalLayoutToolbar;
-
-	@AutoGenerated
-	private Button buttonExport;
-
-	@AutoGenerated
-	private Button buttonViewXML;
-
-	@AutoGenerated
-	private Button buttonSave;
-
-	@AutoGenerated
-	private CheckBox checkBoxAutoSave;
-
-	@AutoGenerated
-	private CheckBox checkBoxReadOnly;
-
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(PolicyEditor.class);
-	private final PolicyEditor self = this;
-
-	private static final Action CREATE_POLICY =			new Action ("New Policy");
-	private static final Action CREATE_POLICYSET =		new Action ("New Policy Set");
-	private static final Action CREATE_RULE =			new Action ("New Rule");
-	private static final Action EDIT_POLICY =			new Action ("Edit Policy");
-	private static final Action EDIT_POLICYSET =		new Action ("Edit Policy Set");
-	private static final Action EDIT_RULE =				new Action ("Edit Rule");
-	private static final Action DELETE_POLICYSET =		new Action ("Delete Policy Set");
-	private static final Action DELETE_POLICY = 		new Action ("Delete Policy");
-	private static final Action DELETE_RULE = 			new Action ("Delete Rule");
-	private static final Action CREATE_NEWANYOF =		new Action ("New Any Of (Match)");
-	private static final Action CREATE_NEWALLOF =		new Action ("New All Of (Match)");
-	private static final Action CREATE_NEWMATCH =		new Action ("New Match");
-	private static final Action DELETE_ANYOF =			new Action ("Delete Any Of");
-	private static final Action DELETE_ALLOF =			new Action ("Delete All Of");
-	private static final Action DELETE_MATCH =			new Action ("Delete Match");
-	private static final Action EDIT_MATCH =			new Action ("Edit Match");
-	private static final Action EDIT_OBLIGATIONS =		new Action ("Edit Obligations");
-	private static final Action DELETE_OBLIGATIONS = 	new Action ("Delete Obligations");
-	private static final Action EDIT_ADVICE =			new Action ("Edit Advice");
-	private static final Action DELETE_ADVICE = 		new Action ("Delete Advice");
-	private static final Action CREATE_VARIABLE =		new Action ("Create Variable");
-	private static final Action EDIT_VARIABLE =			new Action ("Edit Variable");
-	private static final Action DELETE_VARIABLE =		new Action ("Delete Variable");
-	private static final Action CREATE_TARGET = 		new Action ("Create Target");
-	private static final Action CREATE_CONDITION =		new Action ("Create Condition");
-	private static final Action EDIT_CONDITION =		new Action ("Edit Condition");
-	private static final Action DELETE_CONDITION =		new Action ("Delete Condition");
-	private static final Action EDIT_EXPRESSIONS =		new Action ("Edit Expressions");
-	
-	private static final Action CLIPBOARD_CUT =			new ShortcutAction ("Cut", ShortcutAction.KeyCode.S, new int[] {ShortcutAction.ModifierKey.CTRL});
-	private static final Action CLIPBOARD_COPY =		new ShortcutAction ("Copy", ShortcutAction.KeyCode.C, new int[] {ShortcutAction.ModifierKey.CTRL});
-	private static final Action CLIPBOARD_PASTE = 		new ShortcutAction ("Paste", ShortcutAction.KeyCode.V, new int[] {ShortcutAction.ModifierKey.CTRL});
-
-	private static final Object[] VISIBLE_COLUMNS = new Object[] {PolicyContainer.PROPERTY_NAME, PolicyContainer.PROPERTY_SHORTALGORITHM, PolicyContainer.PROPERTY_DESCRIPTION};
-	private static final String[] COLUMN_HEADERS = new String[] { "Name", "Algorithm or Effect", "Description"};
-
-	private final File file;
-	private final GitRepositoryContainer gitContainer;
-	private final PolicyContainer policyContainer;
-	private Tab tab = null;
-	private boolean isModified = false;
-	
-	private Object clipboardObject = null;
-
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 * @throws IOException 
-	 */
-	public PolicyEditor(File policyFile, GitRepositoryContainer gitContainer, boolean readOnly) throws IOException {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		this.mainLayout.setSizeFull();
-		//
-		// Save
-		//
-		this.file = policyFile;
-		this.gitContainer = gitContainer;
-		this.policyContainer = new PolicyContainer(this.file);
-		//
-		// Its our data also
-		//
-		this.setData(policyFile);
-		//
-		// Initialize GUI
-		//
-		this.initializeCheckboxes(readOnly);
-		this.initializeButtons();
-		this.initializeDownload();
-		this.initializeTree();
-// PLD TODO next release		this.initializeContextMenu();
-		//
-		// setup the caption etc.
-		//
-		this.setupCaption();
-		this.resetComponents();
-	}
-	
-	protected void initializeCheckboxes(boolean readOnly) {
-		//
-		// The readonly check box
-		//
-		this.checkBoxReadOnly.setImmediate(true);
-		this.checkBoxReadOnly.setValue(readOnly);
-		this.checkBoxReadOnly.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.resetComponents();
-				self.setupCaption();
-			}
-			
-		});
-		//
-		// The autosave check box
-		//
-		this.checkBoxAutoSave.setImmediate(true);
-		this.checkBoxAutoSave.setValue(true);
-	}
-	
-	protected void initializeButtons() {
-		//
-		// The Save button
-		//
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.savePolicy();
-			}
-		});
-		//
-		// Attach a window opener to the View XML button
-		//
-		BrowserWindowOpener opener = new BrowserWindowOpener(new StreamResource(new StreamResource.StreamSource() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public InputStream getStream() {
-				try {
-					if (logger.isDebugEnabled()) {
-						logger.debug("Setting view xml button to: " + self.file.getAbsolutePath());
-					}
-					return new FileInputStream(self.file);
-				} catch (Exception e) {
-					logger.error("Failed to open input stream " + self.file);
-				}
-				return null;
-			}
-		}, self.file.getName()));
-		opener.setWindowName("_new");
-		opener.extend(this.buttonViewXML);
-	}
-	
-	protected void initializeDownload() {
-		//
-		// Create a stream resource pointing to the file
-		//
-		StreamResource r = new StreamResource(new StreamResource.StreamSource() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public InputStream getStream() {
-				try {
-					return new FileInputStream(self.file);
-				} catch (Exception e) {
-					logger.error("Failed to open input stream " + self.file);
-				}
-				return null;
-			}
-		}, self.file.getName());
-		r.setCacheTime(-1);
-		r.setMIMEType("application/xml");
-		//
-		// Extend a downloader to attach to the Export Button
-		//
-		FileDownloader downloader = new FileDownloader(r);
-		downloader.extend(this.buttonExport);
-	}
-	
-	public void setTab(Tab tab) {
-		this.tab = tab;
-		this.setupCaption();
-	}
-	
-	public boolean isAutoSave() {
-		if (this.checkBoxAutoSave.isEnabled() == false) {
-			return false;
-		}
-		return this.checkBoxAutoSave.getValue();
-	}
-	
-	public boolean isReadOnly() {
-		return this.checkBoxReadOnly.getValue();
-	}
-
-	protected void initializeTree() {
-		//
-		// Create our container and set it as the tree's data source
-		//
-		this.tree.setContainerDataSource(this.policyContainer);
-		this.tree.setItemIconPropertyId("Icon");
-		this.tree.setVisibleColumns(VISIBLE_COLUMNS);
-		this.tree.setColumnHeaders(COLUMN_HEADERS);
-		this.tree.setSelectable(true);
-		this.tree.setSizeFull();
-		//
-		// Expand it down a few items
-		//
-		for (Object id : this.tree.getItemIds()) {
-			this.tree.setCollapsed(id, false);
-			for (Object child : this.tree.getChildren(id)) {
-				this.tree.setCollapsed(child, false);
-			}
-		}
-		//
-		// Respond to double-click's
-		//
-		this.tree.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick()) {
-					if (self.isReadOnly()) {
-						AdminNotification.info("You are in read-only mode.");
-						return;
-					}
-					Object target = event.getItemId();
-					if (target instanceof PolicySetType) {
-						self.editPolicySet((PolicySetType) target, (PolicySetType) self.policyContainer.getParent(target));
-					} else if (target instanceof PolicyType) {
-						self.editPolicy((PolicyType) target, (PolicySetType) self.policyContainer.getParent(target));
-					} else if (target instanceof RuleType) {
-						self.editRule((RuleType) target, (PolicyType) self.policyContainer.getParent(target));
-					} else if (target instanceof ConditionType) {
-						self.editCondition((ConditionType) target, (RuleType) self.policyContainer.getParent(target));
-					} else if (target instanceof VariableDefinitionType) {
-						self.editVariable((VariableDefinitionType) target, (PolicyType) self.policyContainer.getParent(target));
-					} else if (target instanceof MatchType) {
-						self.editMatch((MatchType) target, (AllOfType) self.policyContainer.getParent(target), null, null, "Edit Match");
-					} else if (target instanceof ObligationExpressionType) {
-						self.editObAdvice(true, self.policyContainer.getParent(target));
-					} else if (target instanceof AdviceExpressionType) {
-						self.editObAdvice(false, self.policyContainer.getParent(target));
-					}
-				}
-			}
-			
-		});
-		//
-		// Respond to container changes
-		//
-		this.policyContainer.addItemSetChangeListener(new ItemSetChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void containerItemSetChange(ItemSetChangeEvent event) {
-				self.isModified = true;
-				if (self.isAutoSave()) {
-					self.savePolicy();
-				} else {
-					self.setupCaption();
-					self.buttonSave.setEnabled(true);
-				}
-			}
-		});
-		//
-		// Implement drag-n-drop
-		//
-		this.tree.setDropHandler(new DropHandler() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void drop(DragAndDropEvent event) {
-				DataBoundTransferable t = (DataBoundTransferable) event.getTransferable();
-			    AbstractSelectTargetDetails target = (AbstractSelectTargetDetails) event.getTargetDetails();
-			    
-			    //
-			    // Get ids of the dragged item and the target item
-			    //
-			    Object sourceItemId = t.getData("itemId");
-				Object targetItemId = target.getItemIdOver();
-				VerticalDropLocation location = target.getDropLocation();
-				if (logger.isDebugEnabled()) {
-					logger.debug("Drop " + sourceItemId + " target " + targetItemId + " location " + location);
-				}
-				//
-				// Tell our container what to do
-				//
-				try {
-					if (location == VerticalDropLocation.MIDDLE) {
-						//
-						// Drop right on top of item making it a child
-						//
-						self.policyContainer.setParent(sourceItemId, targetItemId);
-					}
-
-					/*
-					} else if (location == VerticalDropLocation.TOP) {
-						//
-						// Drop at the top of the tree making it the previous
-						//
-						Object parent = self.policyContainer.getParent(targetItemId);
-						self.policyContainer.setParent(sourceItemId, parent);
-						self.policyContainer.moveAfterSibling(sourceItemId, targetItemId);
-						self.policyContainer.moveAfterSibling(targetItemId, sourceItemId);
-					} else if (location == VerticalDropLocation.BOTTOM) {
-						//
-						// Drop below another item
-						//
-						Object parent = self.policyContainer.getParent(targetItemId);
-						self.policyContainer.setParent(sourceItemId, targetItemId);
-						self.policyContainer.moveAfterSibling(sourceItemId, targetItemId);
-					}
-					*/
-				} catch (UnsupportedOperationException e) {
-					logger.error("Unsupported " + e.getLocalizedMessage());
-				}
-			}
-
-			@Override
-			public AcceptCriterion getAcceptCriterion() {
-				return AcceptAll.get();
-			}
-		});
-	}
-	
-	protected void removeObject(Object target) {
-		if (target instanceof PolicySetType) {
-			this.removePolicySet((PolicySetType) target);
-		} else if (target instanceof PolicyType) {
-			this.removePolicy((PolicyType) target);
-		} else if (target instanceof RuleType) {
-			this.removeRule((RuleType) target);
-		} else if (target instanceof ConditionType) {
-			this.removeCondition((ConditionType) target);
-		} else if (target instanceof VariableDefinitionType) {
-			this.removeVariable((VariableDefinitionType) target);
-		} else if (target instanceof AdviceExpressionType) {
-			this.removeAdvice((AdviceExpressionType) target);
-		} else if (target instanceof ObligationExpressionType) {
-			this.removeObligations((ObligationExpressionType) target);
-		}
-	}
-
-	protected void removeAdvice(AdviceExpressionType target) {
-		if (this.tree.removeItem(target) == false) {
-			logger.error("Failed to remove advice.");
-		}
-	}
-
-	protected void removeVariable(VariableDefinitionType target) {
-		if (this.tree.removeItem(target) == false) {
-			logger.error("Failed to remove variable.");
-		}
-	}
-
-	protected void removeCondition(ConditionType target) {
-		if (this.tree.removeItem(target) == false) {
-			logger.error("Failed to remove condition.");
-		}
-	}
-
-	protected void removeObligations(ObligationExpressionType target) {
-		if (this.tree.removeItem(target) == false) {
-			logger.error("Failed to remove obligations.");
-		}
-	}
-
-	protected void removeRule(RuleType target) {
-		if (this.tree.removeItem(target) == false) {
-			logger.error("Failed to remove rule.");
-		}
-	}
-
-	protected void removePolicy(PolicyType target) {
-		Object parent = this.tree.getParent(target);
-		if (parent == null) {
-			this.deleteRoot(target);
-		} else {
-			if (this.tree.removeItem(target) == false) {
-				logger.error("Failed to remove policy.");
-			}
-		}
-	}
-
-	protected void removePolicySet(PolicySetType target) {
-		Object parent = this.tree.getParent(target);
-		if (parent == null) {
-			this.deleteRoot(target);
-		} else {
-			if (this.tree.removeItem(target) == false) {
-				logger.error("Failed to remove policy set.");
-			}
-		}
-	}
-
-	/*
-	protected void initializeContextMenu() {
-		ContextMenu menu = new ContextMenu();
-		menu.setAsTableContextMenu(this.tree);
-		menu.addContextMenuTableListener(new TableListener() {
-
-			@Override
-			public void onContextMenuOpenFromFooter(
-					ContextMenuOpenedOnTableFooterEvent event) {
-				// TODO Auto-generated method stub
-				
-			}
-
-			@Override
-			public void onContextMenuOpenFromHeader(
-					ContextMenuOpenedOnTableHeaderEvent event) {
-				// TODO Auto-generated method stub
-				
-			}
-
-			@Override
-			public void onContextMenuOpenFromRow(ContextMenuOpenedOnTableRowEvent event) {
-				logger.info("context menu row");
-			}
-		});
-		menu.addItem("test");
-	}
-	*/
-	
-	protected void savePolicy() {
-		if (this.isReadOnly()) {
-			logger.warn("Should not call savePolicy when in read only mode.");
-			return;
-		}
-		Collection<?> roots = this.policyContainer.rootItemIds();
-		if (roots.size() > 1) {
-			logger.warn("More than one root policy.");
-		}
-		//
-		// There should only be one root
-		// Save the policy to disk.
-		//
-		for (Object root : roots) {
-			logger.info("Saving policy: " + this.file.getName());
-			//
-			// TODO - Bump the version?
-			//
-			if (root instanceof PolicySetType) {
-				XACMLPolicyWriter.writePolicyFile(Paths.get(this.file.getAbsolutePath()), (PolicySetType) root);
-			} else if (root instanceof PolicyType) {
-				XACMLPolicyWriter.writePolicyFile(Paths.get(this.file.getAbsolutePath()), (PolicyType) root);
-			}
-			//
-			// TODO ????
-			//
-			this.gitContainer.updateItem(this.file);
-			break; // NOPMD
-		}
-		//
-		// No longer modified
-		//
-		this.isModified = false;
-		this.setupCaption();
-		this.resetComponents();
-	}
-	
-	protected void installTreeActionHandler() {
-		//
-		// Remove any existing action handlers
-		//
-		this.tree.removeAllActionHandlers();
-		//
-		// Are we read-only?
-		//
-		if (this.isReadOnly()) {
-			//
-			// Yes - no action handler's allowed
-			//
-			return;
-		}
-		//
-		// Setup our action handlers
-		//
-		this.tree.addActionHandler(new Handler() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Action[] getActions(Object target, Object sender) {
-				//
-				// Are we read-only?
-				//
-				if (self.isReadOnly()) {
-					if (logger.isDebugEnabled()) {
-						logger.debug("Policy is read-only");
-					}
-					return null;
-				}
-				if (target == null) {
-					//
-					// Nothing is selected, they right-clicked empty space
-					//
-					if (logger.isDebugEnabled()) {
-						logger.debug("action tree target is null");
-					}
-					return null;
-				}
-				if (target instanceof PolicySetType) {
-					List<Action> actions = new ArrayList<Action>();
-					actions.add(EDIT_POLICYSET);
-					if (((PolicySetType) target).getTarget() == null) {
-						actions.add(CREATE_TARGET);
-					}
-					/*
-					actions.add(CLIPBOARD_CUT);
-					actions.add(CLIPBOARD_COPY);
-					actions.add(CLIPBOARD_PASTE);
-					*/
-					actions.add(CREATE_POLICYSET);
-					actions.add(CREATE_POLICY);
-					actions.add(EDIT_OBLIGATIONS);
-					actions.add(EDIT_ADVICE);
-					actions.add(DELETE_POLICYSET);
-					return (Action[]) actions.toArray(new Action[0]);
-				}
-				if (target instanceof PolicyType) {
-					List<Action> actions = new ArrayList<Action>();
-					actions.add(EDIT_POLICY);
-					if (((PolicyType) target).getTarget() ==  null) {
-						actions.add(CREATE_TARGET);
-					}
-					/*
-					actions.add(CLIPBOARD_CUT);
-					actions.add(CLIPBOARD_COPY);
-					actions.add(CLIPBOARD_PASTE);
-					*/
-					actions.add(CREATE_RULE);
-					actions.add(CREATE_VARIABLE);
-					actions.add(EDIT_OBLIGATIONS);
-					actions.add(EDIT_ADVICE);
-					actions.add(DELETE_POLICY);
-					return (Action[]) actions.toArray(new Action[0]);
-				}
-				if (target instanceof RuleType) {
-					List<Action> actions = new ArrayList<Action>();
-					actions.add(EDIT_RULE);
-					if (((RuleType) target).getTarget() == null) {
-						actions.add(CREATE_TARGET);
-					}
-					/*
-					actions.add(CLIPBOARD_CUT);
-					actions.add(CLIPBOARD_COPY);
-					actions.add(CLIPBOARD_PASTE);
-					*/
-					if (((RuleType)target).getCondition() == null) {
-						actions.add(CREATE_CONDITION);
-					}
-					actions.add(EDIT_OBLIGATIONS);
-					actions.add(EDIT_ADVICE);
-					actions.add(DELETE_RULE);
-					return (Action[]) actions.toArray(new Action[0]);
-				}
-				if (target instanceof TargetType) {
-					return new Action[] {CREATE_NEWANYOF};
-				}
-				if (target instanceof AnyOfType) {
-					return new Action[] {CREATE_NEWALLOF, DELETE_ANYOF};
-				}
-				if (target instanceof AllOfType) {
-					return new Action[] {CREATE_NEWMATCH, DELETE_ALLOF};
-				}
-				if (target instanceof MatchType) {
-					return new Action[] {EDIT_MATCH, DELETE_MATCH};
-				}
-				if (target instanceof ConditionType) {
-					return new Action[] {EDIT_CONDITION, DELETE_CONDITION};
-				}
-				if (target instanceof VariableDefinitionType) {
-					return new Action[] {EDIT_VARIABLE, DELETE_VARIABLE};
-				}
-				if (target instanceof ObligationExpressionType) {
-					return new Action[] {EDIT_OBLIGATIONS, DELETE_OBLIGATIONS};
-				}
-				if (target instanceof AdviceExpressionType) {
-					return new Action[] {EDIT_ADVICE, DELETE_ADVICE};
-				}
-				return null;
-			}
-			
-			@Override
-			public void handleAction(Action action, Object sender, Object target) {
-				if (action == CLIPBOARD_CUT) {
-					assert target != null;
-					self.clipboardObject = XACMLObjectCopy.deepCopy(target);
-					self.removeObject(target);
-					return;
-				}
-				if (action == CLIPBOARD_COPY) {
-					assert target != null;
-					self.clipboardObject = XACMLObjectCopy.deepCopy(target);
-					return;
-				}
-				if (action == CLIPBOARD_PASTE) {
-					assert target != null;
-					self.clipboardPaste(target, true);
-					return;
-				}
-				if (action == CREATE_POLICYSET) {
-					assert target instanceof PolicySetType;
-					self.editPolicySet(null, (PolicySetType) target);
-					return;
-				}
-				if (action == CREATE_POLICY) {
-					assert target instanceof PolicySetType;
-					self.editPolicy(null, (PolicySetType) target);
-					return;
-				}
-				if (action == CREATE_RULE) {
-					assert target instanceof PolicyType;
-					self.editRule(null, (PolicyType) target);
-					return;
-				}
-				if (action == CREATE_TARGET) {
-					assert target instanceof RuleType || target instanceof PolicyType || target instanceof PolicySetType;
-					TargetType newTarget = new TargetType();
-					self.policyContainer.addItem(newTarget, target);
-					return;
-				}
-				if (action == EDIT_POLICYSET) {
-					assert target instanceof PolicySetType;
-					self.editPolicySet((PolicySetType) target, (PolicySetType) self.policyContainer.getParent(target));
-					return;
-				}
-				if (action == EDIT_POLICY) {
-					assert target instanceof PolicyType;
-					self.editPolicy((PolicyType) target, (PolicySetType) self.policyContainer.getParent(target));
-					return;
-				}
-				if (action == EDIT_RULE) {
-					assert target instanceof RuleType;
-					self.editRule((RuleType) target, (PolicyType) self.policyContainer.getParent(target));
-					return;
-				}				
-				if (action == DELETE_POLICYSET) {
-					assert target instanceof PolicySetType;
-					self.removePolicySet((PolicySetType) target);
-					return;
-				}
-				if (action == DELETE_POLICY) {
-					assert target instanceof PolicyType;
-					self.removePolicy((PolicyType) target);
-					return;
-				}
-				if (action == DELETE_RULE) {
-					assert target instanceof RuleType;
-					self.removeRule((RuleType) target);
-					return;
-				}
-				if (action == CREATE_NEWANYOF) {
-					assert target instanceof TargetType;
-					self.editMatch(null, null, null, (TargetType) target, "Create New Match");
-					return;
-				}
-				if (action == CREATE_NEWALLOF) {
-					assert target instanceof AnyOfType;
-					self.editMatch(null, null, (AnyOfType) target, null, "Create New Match");
-					return;
-				}
-				if (action == CREATE_NEWMATCH) {
-					if (target instanceof AllOfType) {
-						self.editMatch(null, (AllOfType) target, null, null, "Create New Match");
-					} else if (target instanceof TargetType) {
-						self.editMatch(null, null, null, (TargetType) target, "Create New Match");
-					} else {
-						assert false;
-					}
-					return;
-				}
-				if (action == DELETE_ANYOF) {
-					assert target instanceof AnyOfType;
-					self.removeAnyOf((AnyOfType) target, (TargetType) self.policyContainer.getParent(target));
-					return;
-				}
-				if (action == DELETE_ALLOF) {
-					assert target instanceof AllOfType;
-					self.removeAllOf((AllOfType) target, (AnyOfType) self.policyContainer.getParent(target));
-					return;
-				}
-				if (action == DELETE_MATCH) {
-					assert target instanceof MatchType;
-					self.removeMatch((MatchType) target, (AllOfType) self.policyContainer.getParent(target));
-					return;
-				}
-				if (action == EDIT_MATCH) {
-					assert target instanceof MatchType;
-					self.editMatch((MatchType) target, (AllOfType) self.policyContainer.getParent(target), null, null, "Edit Match");
-					return;
-				}
-				if (action == EDIT_OBLIGATIONS) {
-					assert target instanceof RuleType || 
-							target instanceof PolicyType || 
-							target instanceof PolicySetType ||
-							target instanceof ObligationExpressionType;
-					if (target instanceof ObligationExpressionType) {
-						self.editObAdvice(true, self.policyContainer.getParent(target));
-					} else {
-						self.editObAdvice(true, target);
-					}
-					return;
-				}
-				if (action == DELETE_OBLIGATIONS) {
-					assert target instanceof ObligationExpressionType;
-					self.removeObligations((ObligationExpressionType) target);
-					return;
-				}
-				if (action == EDIT_ADVICE) {
-					assert target instanceof RuleType || 
-							target instanceof PolicyType || 
-							target instanceof PolicySetType ||
-							target instanceof AdviceExpressionType;
-					if (target instanceof AdviceExpressionType) {
-						self.editObAdvice(false, self.policyContainer.getParent(target));
-					} else {
-						self.editObAdvice(false, target);
-					}
-					return;
-				}
-				if (action == DELETE_ADVICE) {
-					assert target instanceof AdviceExpressionType;
-					self.removeAdvice((AdviceExpressionType) target);
-					return;
-				}
-				if (action == CREATE_VARIABLE) {
-					assert target instanceof PolicyType;
-					self.editVariable(null, (PolicyType) target);
-					return;
-				}
-				if (action == CREATE_CONDITION) {
-					assert target instanceof RuleType;
-					self.editCondition(null, (RuleType) target);
-					return;
-				}
-				if (action == EDIT_CONDITION) {
-					assert target instanceof ConditionType;
-					self.editCondition((ConditionType) target, (RuleType) self.policyContainer.getParent(target));
-					return;
-				}
-				if (action == DELETE_CONDITION) {
-					assert target instanceof ConditionType;
-					self.removeCondition((ConditionType) target);
-					return;
-				}
-				if (action == EDIT_EXPRESSIONS) {
-					return;
-				}
-				if (action == DELETE_VARIABLE) {
-					assert target instanceof VariableDefinitionType;
-					self.removeVariable((VariableDefinitionType) target);
-					return;
-				}
-				if (action == EDIT_VARIABLE) {
-					assert target instanceof VariableDefinitionType;
-					self.editVariable((VariableDefinitionType) target, (PolicyType) self.policyContainer.getParent(target));
-					return;
-				}
-			}
-		});		
-	}
-	
-	protected void resetComponents() {
-		if (this.isReadOnly()) {
-			this.checkBoxAutoSave.setEnabled(false);
-			this.buttonSave.setEnabled(false);
-			this.tree.setDragMode(TableDragMode.NONE);
-			this.tree.removeAllActionHandlers();
-			this.tree.setReadOnly(true);
-		} else {
-			this.checkBoxAutoSave.setEnabled(true);
-			this.buttonSave.setEnabled(this.isModified);
-			this.tree.setReadOnly(false);
-			this.tree.setDragMode(TableDragMode.ROW);
-			this.installTreeActionHandler();
-		}
-	}
-		
-	public void	setupCaption() {
-		String caption = this.file.getName();
-		if (this.isModified) {
-			caption = caption + " *";
-		}
-		if (this.isReadOnly()) {
-			caption = caption + " (Read-Only)";
-		}
-		if (this.tab != null) {
-			this.tab.setCaption(caption);
-		}
-	}
-	
-	protected void editPolicySet(final PolicySetType policy, final PolicySetType parent) {
-		logger.info("editPolicySet: " + policy + " parent " + parent);
-		//
-		// Create a copy
-		//
-		final PolicySetType newPolicySet = (policy == null ? new PolicySetType() : XACMLObjectCopy.copy(policy));
-		//
-		// Create window
-		//
-		final PolicySetEditorWindow window = new PolicySetEditorWindow(newPolicySet);
-		window.setCaption(policy == null ? "Create New Policy Set" : "Edit Policy Set");
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user click save?
-				//
-				if (window.isSaved() == false) {
-					if (logger.isDebugEnabled()) {
-						logger.debug("user did NOT save");
-					}
-					return;
-				}
-				//
-				// Was it a new Policy Set?
-				//
-				if (policy == null) {
-					logger.info("adding new policy set " + newPolicySet.getPolicySetId());
-					//
-					// Yes - new add it in
-					//
-					if (newPolicySet.getTarget() == null) {
-						newPolicySet.setTarget(new TargetType());
-					}
-					if (self.policyContainer.addItem(newPolicySet, parent) == null) {
-						logger.error("Failed to add new policy set");
-					} else {
-						self.tree.setCollapsed(parent, false);
-						self.tree.setCollapsed(newPolicySet, false);
-						self.tree.select(newPolicySet);
-					}
-				} else {
-					logger.info("updating new policy set " + newPolicySet.getPolicySetId());
-					//
-					// No - copy everything
-					//
-					policy.setDescription(newPolicySet.getDescription());
-					policy.setVersion(newPolicySet.getVersion());
-					policy.setPolicyCombiningAlgId(newPolicySet.getPolicyCombiningAlgId());
-					//
-					// Update
-					//
-					self.policyContainer.updateItem(policy);
-				}
-			}			
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-	
-	protected void editPolicy(final PolicyType policy, final PolicySetType parent) {
-		//
-		// Create a copy
-		//
-		final PolicyType newPolicy = (policy == null ? new PolicyType() : XACMLObjectCopy.copy(policy));
-		//
-		// Create window
-		//
-		final PolicyEditorWindow window = new PolicyEditorWindow(newPolicy);
-		window.setCaption(policy == null ? "Create New Policy" : "Edit Policy");
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user click save?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// Was it a new Policy?
-				//
-				if (policy == null) {
-					//
-					// Yes - new add it in
-					//
-					if (newPolicy.getTarget() == null) {
-						newPolicy.setTarget(new TargetType());
-					}
-					if (self.policyContainer.addItem(newPolicy, parent) == null) {
-						logger.error("Failed to add policy");
-					} else {
-						self.tree.setCollapsed(parent, false);
-						self.tree.setCollapsed(newPolicy, false);
-						self.tree.select(newPolicy);
-					}
-				} else {
-					//
-					// No - copy everything
-					//
-					policy.setDescription(newPolicy.getDescription());
-					policy.setVersion(newPolicy.getVersion());
-					policy.setRuleCombiningAlgId(newPolicy.getRuleCombiningAlgId());
-					//
-					// Update
-					//
-					self.policyContainer.updateItem(policy);
-				}
-			}			
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-	
-	protected void editRule(final RuleType rule, final PolicyType parent) {
-		//
-		// Create a copy
-		//
-		final RuleType newRule = (rule == null ? new RuleType() : XACMLObjectCopy.copy(rule));
-		//
-		// Create window
-		//
-		final RuleEditorWindow window = new RuleEditorWindow(newRule);
-		window.setCaption(rule == null ? "Create New Rule" : "Edit Rule");
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user click save?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// Was this a new rule?
-				//
-				if (rule == null) {
-					//
-					// Yes a new rule
-					//
-					if (newRule.getTarget() == null) {
-						newRule.setTarget(new TargetType());
-					}
-					if (self.policyContainer.addItem(newRule, parent) == null) {
-						logger.error("Failed to add new rule");
-					} else {
-						self.tree.setCollapsed(parent, false);
-						self.tree.setCollapsed(newRule, false);
-						self.tree.select(newRule);
-					}
-				} else {
-					//
-					// No - editing existing rule. Copy everything
-					//
-					rule.setEffect(newRule.getEffect());
-					rule.setDescription(newRule.getDescription());
-					self.policyContainer.updateItem(rule);
-				}
-			}
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-
-	protected void editCondition(final ConditionType condition, final RuleType rule) {
-		//
-		// Make a copy of it first, in case the user manipulates it
-		// and then decides to NOT save it
-		//
-		final ConditionType copyCondition = (condition == null ? new ConditionType() : XACMLObjectCopy.copy(condition));
-		//
-		// Create the window
-		//
-		final ExpressionBuilderComponent expression = new ExpressionBuilderComponent(copyCondition, 
-											(copyCondition.getExpression() != null ? copyCondition.getExpression().getValue() : null), 
-											null,
-											self.policyContainer.getVariables());
-		if (condition == null) {
-			expression.setCaption("Create An Expression For The Condition");
-		} else {
-			expression.setCaption("Edit The Condition Expression");
-		}
-		expression.setModal(true);
-		//
-		// Add the close listener
-		//
-		expression.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user hit save?
-				//
-				if (expression.isSaved() == false) {
-					return;
-				}
-				//
-				// Were we creating something new?
-				//
-				if (condition == null) {
-					//
-					// Yes add the new one into the container
-					//
-					if (self.policyContainer.addItem(copyCondition, rule) == null) {
-						logger.error("Failed to add condition");
-					} else {
-						self.tree.setCollapsed(rule, false);
-						self.tree.setCollapsed(copyCondition, false);
-						self.tree.select(copyCondition);
-					}
-				} else {
-					//
-					// We were editing an existing condition, so copy
-					// over the new edited expression.
-					//
-					condition.setExpression(copyCondition.getExpression());
-					//
-					// Update the container
-					//
-					self.policyContainer.updateItem(condition);
-				}
-			}			
-		});
-		expression.center();
-		UI.getCurrent().addWindow(expression);
-	}
-
-	protected void editVariable(final VariableDefinitionType variable, final PolicyType parent) {
-		//
-		// Make a copy of it first, in case the user manipulates it
-		// and then decides to NOT save it
-		//
-		final VariableDefinitionType copyVariable = (variable == null ? new VariableDefinitionType(): XACMLObjectCopy.copy(variable));
-		//
-		// Have the user create or edit the Variables ID
-		//
-		final VariableDefinitionEditorWindow editor = new VariableDefinitionEditorWindow(copyVariable);
-		if (variable == null) {
-			editor.setCaption("Create Variable");			
-		} else {
-			editor.setCaption("Edit Variable" + (copyVariable.getVariableId() == null ? "" : copyVariable.getVariableId()));
-		}
-		editor.setModal(true);
-		editor.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user click save button?
-				//
-				if (editor.isSaved() == false) {
-					return;
-				}
-				//
-				// Create the window
-				//
-				final ExpressionBuilderComponent expression = new ExpressionBuilderComponent(copyVariable, 
-													(copyVariable.getExpression() != null ? copyVariable.getExpression().getValue() : null), 
-													null, 
-													self.policyContainer.getVariables());
-				expression.setCaption("Edit The Variable \"" + copyVariable.getVariableId() + "\" Expression");
-				//
-				// Add the close listener
-				//
-				expression.addCloseListener(new CloseListener() {
-					private static final long serialVersionUID = 1L;
-		
-					@Override
-					public void windowClose(CloseEvent e) {
-						//
-						// Did the user click save button?
-						//
-						if (expression.isSaved() == false) {
-							return;
-						}
-						//
-						// Was it a new variable or were we editing an existing one?
-						//
-						if (variable == null) {
-							//
-							// New one, add it to the container
-							//
-							if (self.policyContainer.addItem(copyVariable, parent) == null) {
-								logger.error("Failed to add variable");
-							} else {
-								self.tree.setCollapsed(parent, false);
-								self.tree.setCollapsed(copyVariable, false);
-								self.tree.select(copyVariable);
-							}
-						} else {
-							//
-							// We were editing one, copy it back over.
-							//
-							variable.setVariableId(copyVariable.getVariableId());
-							variable.setExpression(copyVariable.getExpression());
-							//
-							// Update the container
-							//
-							self.policyContainer.updateItem(variable);
-						}
-					}
-				});
-				expression.center();
-				UI.getCurrent().addWindow(expression);
-			}
-		});
-		editor.center();
-		UI.getCurrent().addWindow(editor);
-	}
-
-	protected void editMatch(final MatchType match, final AllOfType allOf, final AnyOfType anyOf, final TargetType target, final String caption) {
-		//
-		// Create an empty match or copy the one we are going to edit.
-		//
-		final MatchType newMatch = (match == null ? new MatchType() : XACMLObjectCopy.copy(match));
-		//
-		// Have user select an attribute
-		//
-		final AttributeSelectionWindow selection = new AttributeSelectionWindow(null, 
-									(newMatch.getAttributeDesignator() != null ? newMatch.getAttributeDesignator() : newMatch.getAttributeSelector()));
-		selection.setCaption("Select Attribute To Match Against");
-		selection.setModal(true);
-		selection.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-			
-			@Override
-			public void windowClose(CloseEvent event) {
-				//
-				// Did the user save anything?
-				//
-				if (selection.isSaved() == false) {
-					return;
-				}
-				//
-				// Save the selected attribute
-				//
-				final Attribute attribute = selection.getAttribute();
-				if (attribute.isDesignator()) {
-					newMatch.setAttributeDesignator(JPAUtils.createDesignator(attribute));
-				} else {
-					newMatch.setAttributeSelector(JPAUtils.createSelector(attribute));
-				}
-				//
-				// Yes - now match it up to a function
-				//
-				final MatchEditorWindow editor = new MatchEditorWindow(newMatch, attribute.getDatatypeBean());
-				editor.setCaption(caption);
-				editor.setModal(true);
-				editor.addCloseListener(new CloseListener() {
-					private static final long serialVersionUID = 1L;
-					
-					@Override
-					public void windowClose(CloseEvent event) {
-						//
-						// Did the user hit save?
-						//
-						if (editor.isSaved() == false) {
-							return;
-						}
-						//
-						// Yes - now we need the value to check the attribute against
-						//
-						final AttributeValueType copyAttributeValue = (newMatch.getAttributeValue() == null ? new AttributeValueType() : newMatch.getAttributeValue());
-//						String currentValue = null;
-//						if (newMatch.getAttributeValue() != null) {
-//							currentValue = XACMLObjectCopy.getContent(newMatch.getAttributeValue().getContent());
-//						}
-						final AttributeValueEditorWindow value = new AttributeValueEditorWindow(copyAttributeValue, attribute.getDatatypeBean());
-						value.setCaption("Set the value the attribute should match against.");
-						value.setModal(true);
-						value.addCloseListener(new CloseListener() {
-							private static final long serialVersionUID = 1L;
-							
-							@Override
-							public void windowClose(CloseEvent event) {
-								//
-								// Did the user save?
-								//
-								if (value.isSaved() == false) {
-									return;
-								}
-								//
-								// Yes - copy the value into the match
-								//
-								AttributeValueType val = new AttributeValueType();
-								val.getContent().add(value.getValue());
-								val.setDataType(value.getDatatype().getXacmlId());
-								newMatch.setAttributeValue(val);
-								//
-								// Was this a new match or were we editing an
-								// existing match?
-								//
-								if (match != null) {
-									//
-									// Editing - now we can save it
-									//
-									match.setAttributeDesignator(newMatch.getAttributeDesignator());
-									match.setAttributeSelector(newMatch.getAttributeSelector());
-									match.setAttributeValue(newMatch.getAttributeValue());
-									match.setMatchId(newMatch.getMatchId());
-									//
-									// Update the container
-									//
-									self.policyContainer.updateItem(match);
-								} else {
-									//
-									// Do we have a parent(s)?
-									//
-									AllOfType allOfParent = allOf;
-									AnyOfType anyOfParent = anyOf;
-									if (allOfParent == null) {
-										//
-										// No direct AllOfParent
-										//
-										if (anyOfParent == null) {
-											//
-											// No AnyOfParent
-											//
-											if (target == null) {
-												logger.error("We should NOT get this");
-												return;
-											}
-											anyOfParent = new AnyOfType();
-											if (self.policyContainer.addItem(anyOfParent, target) == null) {
-												logger.error("Failed to add anyOf parent");
-												assert false;
-											}
-											self.tree.setCollapsed(anyOfParent, false);
-										}
-										allOfParent = new AllOfType();
-										if (self.policyContainer.addItem(allOfParent, anyOfParent) == null) {
-											logger.error("Failed to add allOf parent");
-											assert false;
-										}
-										self.tree.setCollapsed(allOfParent, false);
-									}
-									//
-									// Add the MatchType into the Tree
-									//
-									if (self.policyContainer.addItem(newMatch, allOfParent) == null) {
-										logger.error("Failed to add match");
-										assert false;
-									}
-									self.tree.select(newMatch);
-								}
-							}								
-						});
-						value.center();
-						UI.getCurrent().addWindow(value);
-					}
-				});
-				editor.center();
-				UI.getCurrent().addWindow(editor);
-			}
-		});
-		selection.center();
-		UI.getCurrent().addWindow(selection);
-	}
-	
-	protected void deleteRoot(Object root) {
-		//
-		// TODO - prompt user for new root object
-		//
-		
-	}
-	
-	protected void editObAdvice(boolean isObligation, final Object target) {
-		//
-		// Get the object
-		//
-		String caption;
-		Object expressionsObject = null;
-		if (target instanceof RuleType) {
-			if (isObligation) {
-				expressionsObject = ((RuleType) target).getObligationExpressions();
-				if (expressionsObject == null) {
-					caption = "Create New Obligation for Rule";
-				} else {
-					caption = "Edit Obligations for Rule"; 
-				}
-			} else {
-				expressionsObject = ((RuleType) target).getAdviceExpressions();
-				if (expressionsObject == null) {
-					caption = "Create New Advice for Rule";
-				} else {
-					caption = "Edit Advice for Rule"; 
-				}
-			}
-		} else if (target instanceof PolicyType) {
-			if (isObligation) {
-				expressionsObject = ((PolicyType) target).getObligationExpressions();
-				if (expressionsObject == null) {
-					caption = "Create New Obligation for Policy";
-				} else {
-					caption = "Edit Obligations for Policy"; 
-				}
-			} else {
-				expressionsObject = ((PolicyType) target).getAdviceExpressions();
-				if (expressionsObject == null) {
-					caption = "Create New Advice for Policy";
-				} else {
-					caption = "Edit Advice for Policy"; 
-				}
-			}
-		} else if (target instanceof PolicySetType) {
-			if (isObligation) {
-				expressionsObject = ((PolicySetType) target).getObligationExpressions();
-				if (expressionsObject == null) {
-					caption = "Create New Obligation for Policy Set";
-				} else {
-					caption = "Edit Obligation for Policy Set"; 
-				}
-			} else {
-				expressionsObject = ((PolicySetType) target).getAdviceExpressions();
-				if (expressionsObject == null) {
-					caption = "Create New Advice for Policy Set";
-				} else {
-					caption = "Edit Advice for Policy Set"; 
-				}
-			}
-		} else {
-			throw new IllegalArgumentException("Expected a rule/policy/policyset.");
-		}
-		//
-		// Make a copy
-		//
-		final Object originalExpressions = expressionsObject;
-		final Object copyExpression = (originalExpressions == null 
-										? (isObligation ? new ObligationExpressionsType() : new AdviceExpressionsType())
-										: originalExpressions instanceof ObligationExpressionsType 
-												? XACMLObjectCopy.copy((ObligationExpressionsType) originalExpressions)
-												: XACMLObjectCopy.copy((AdviceExpressionsType) originalExpressions))
-										;
-		//
-		// Invoke the editor window
-		//
-		final ObligationAdviceEditorWindow window = new ObligationAdviceEditorWindow(copyExpression, this.policyContainer.getVariables());
-		window.setCaption(caption);
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user save?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// It was saved - is this a new object?
-				//
-				if (originalExpressions == null) {
-					//
-					// New object
-					//
-					if (self.policyContainer.addItem(copyExpression, target) == null) {
-						logger.error("Failed to add expression");
-						assert false;
-					}
-				} else {
-					//
-					// Editing an existing object.
-					//
-					if (originalExpressions instanceof ObligationExpressionsType) {
-						//
-						// Remove old obligations
-						//
-						while (((ObligationExpressionsType) originalExpressions).getObligationExpression().isEmpty() == false) {
-//						for (ObligationExpressionType old : ((ObligationExpressionsType) originalExpressions).getObligationExpression()) {
-							ObligationExpressionType old  = ((ObligationExpressionsType) originalExpressions).getObligationExpression().get(0);
-							self.policyContainer.removeItem(old);
-						}
-						//
-						// Copy new ones in
-						//
-						for (ObligationExpressionType newObligation : ((ObligationExpressionsType) copyExpression).getObligationExpression()) {
-							self.policyContainer.addItem(newObligation, (ObligationExpressionsType) originalExpressions);
-						}
-					} else if (originalExpressions instanceof AdviceExpressionsType) {
-						((AdviceExpressionsType) originalExpressions).getAdviceExpression().clear();
-						((AdviceExpressionsType) originalExpressions).getAdviceExpression().addAll(((AdviceExpressionsType) copyExpression).getAdviceExpression());
-					}
-				}
-			}
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-	
-	protected void removeMatch(MatchType match, AllOfType parent) {
-		assert match != null && parent != null;
-		if (self.policyContainer.removeItem(match) == false) {
-			logger.error("Failed to remove match");
-			assert false;
-		}
-		//
-		// Check for empty AllOf's
-		//
-		if (parent.getMatch().isEmpty()) {
-			this.removeAllOf(parent, (AnyOfType) this.policyContainer.getParent(parent));
-		}
-	}
-
-	protected void removeAllOf(AllOfType allOf, AnyOfType parent) {
-		assert allOf != null && parent != null;
-		if (self.policyContainer.removeItem(allOf) == false) {
-			logger.error("Failed to remove AllOf");
-			assert false;
-		}
-		//
-		// Check for empty AnyOf's
-		//
-		if (parent.getAllOf().isEmpty()) {
-			this.removeAnyOf(parent, (TargetType) this.policyContainer.getParent(parent));
-		}
-	}
-
-	protected void removeAnyOf(AnyOfType anyOf, TargetType parent) {
-		assert anyOf != null && parent != null;
-		if (self.policyContainer.removeItem(anyOf) == false) {
-			logger.error("Failed to remove anyOf");
-			assert false;
-		}
-	}
-
-	protected boolean clipboardPaste(final Object target, boolean performPaste) {
-		if (this.clipboardObject == null) {
-			if (logger.isDebugEnabled()) {
-				logger.debug("nothing in clipboard.");
-			}
-			return false;
-		}
-		boolean doPaste = false;
-		if (this.clipboardObject instanceof PolicySetType && target instanceof PolicySetType) {
-			doPaste = true;
-		}
-		if (this.clipboardObject instanceof PolicyType && target instanceof PolicySetType) {
-			doPaste = true;
-		}
-		if (this.clipboardObject instanceof RuleType && target instanceof PolicyType) {
-			doPaste = true;
-		}
-		if (doPaste == false) {
-			//
-			// Pasting clipboard object onto target not
-			// possible.
-			//
-			return false;
-		}
-		if (performPaste == false) {
-			//
-			// They did not ask to do the actual paste,
-			// but the called wanted to know if it was
-			// possible.
-			//
-			return true;
-		}
-		//
-		// Do the actual paste
-		//
-		Item item = this.policyContainer.addItem(XACMLObjectCopy.deepCopy(this.clipboardObject), target);
-		assert item != null;
-		this.tree.select(this.clipboardObject);
-		
-		return true;
-	}
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("100.0%");
-		mainLayout.setMargin(false);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("100.0%");
-		
-		// horizontalLayoutToolbar
-		horizontalLayoutToolbar = buildHorizontalLayoutToolbar();
-		mainLayout.addComponent(horizontalLayoutToolbar);
-		mainLayout.setExpandRatio(horizontalLayoutToolbar, 1.0f);
-		
-		// tree
-		tree = new TreeTable();
-		tree.setImmediate(true);
-		tree.setWidth("100.0%");
-		tree.setHeight("100.0%");
-		mainLayout.addComponent(tree);
-		mainLayout.setExpandRatio(tree, 1.0f);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayoutToolbar() {
-		// common part: create layout
-		horizontalLayoutToolbar = new HorizontalLayout();
-		horizontalLayoutToolbar.setImmediate(false);
-		horizontalLayoutToolbar.setWidth("-1px");
-		horizontalLayoutToolbar.setHeight("-1px");
-		horizontalLayoutToolbar.setMargin(true);
-		horizontalLayoutToolbar.setSpacing(true);
-		
-		// checkBoxReadOnly
-		checkBoxReadOnly = new CheckBox();
-		checkBoxReadOnly.setCaption("Read Only");
-		checkBoxReadOnly.setImmediate(false);
-		checkBoxReadOnly
-				.setDescription("Check this to turn-off policy editing.");
-		checkBoxReadOnly.setWidth("-1px");
-		checkBoxReadOnly.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(checkBoxReadOnly);
-		
-		// checkBoxAutoSave
-		checkBoxAutoSave = new CheckBox();
-		checkBoxAutoSave.setCaption("Auto Save");
-		checkBoxAutoSave.setImmediate(false);
-		checkBoxAutoSave
-				.setDescription("Check this to turn-on automatic saving of policy when a change occurs.");
-		checkBoxAutoSave.setWidth("-1px");
-		checkBoxAutoSave.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(checkBoxAutoSave);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setDescription("Click to save the policy.");
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonSave);
-		
-		// buttonViewXML
-		buttonViewXML = new Button();
-		buttonViewXML.setCaption("View XML");
-		buttonViewXML.setImmediate(true);
-		buttonViewXML.setWidth("-1px");
-		buttonViewXML.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonViewXML);
-		
-		// buttonExport
-		buttonExport = new Button();
-		buttonExport.setCaption("Export Policy");
-		buttonExport.setImmediate(false);
-		buttonExport.setWidth("-1px");
-		buttonExport.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonExport);
-		
-		return horizontalLayoutToolbar;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/PolicyWorkspace.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/PolicyWorkspace.java
deleted file mode 100644
index 8e006d1..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/PolicyWorkspace.java
+++ /dev/null
@@ -1,1640 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.components;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.nio.file.FileVisitResult;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.nio.file.SimpleFileVisitor;
-import java.nio.file.attribute.BasicFileAttributes;
-import java.util.Collection;
-import java.util.Iterator;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicySetType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
-
-import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
-import org.apache.commons.compress.archivers.tar.TarArchiveOutputStream;
-import org.apache.commons.compress.compressors.gzip.GzipCompressorOutputStream;
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.jgit.api.Git;
-import org.eclipse.jgit.api.Status;
-import org.eclipse.jgit.api.errors.GitAPIException;
-import org.eclipse.jgit.dircache.DirCache;
-import org.eclipse.jgit.dircache.DirCacheEntry;
-import org.eclipse.jgit.errors.NoWorkTreeException;
-import org.eclipse.jgit.revwalk.RevCommit;
-import org.eclipse.jgit.transport.PushResult;
-import org.vaadin.dialogs.ConfirmDialog;
-import org.vaadin.dialogs.ConfirmDialog.ContentMode;
-
-import org.apache.openaz.xacml.admin.XacmlAdminAuthorization;
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.model.GitRepositoryContainer;
-import org.apache.openaz.xacml.admin.util.AdminNotification;
-import org.apache.openaz.xacml.admin.util.OnDemandFileDownloader;
-import org.apache.openaz.xacml.admin.util.OnDemandFileDownloader.OnDemandStreamResource;
-import org.apache.openaz.xacml.admin.util.XACMLPolicyImporter;
-import org.apache.openaz.xacml.admin.view.windows.GitPushWindow;
-import org.apache.openaz.xacml.admin.view.windows.GitSynchronizeWindow;
-import org.apache.openaz.xacml.admin.view.windows.PolicyNameEditorWindow;
-import org.apache.openaz.xacml.admin.view.windows.PolicyUploadWindow;
-import org.apache.openaz.xacml.admin.view.windows.RenamePolicyFileWindow;
-import org.apache.openaz.xacml.admin.view.windows.SubDomainEditorWindow;
-import org.apache.openaz.xacml.std.pap.StdPDPPolicy;
-import org.apache.openaz.xacml.util.XACMLPolicyScanner;
-import org.apache.openaz.xacml.util.XACMLPolicyScanner.CallbackResult;
-import org.apache.openaz.xacml.util.XACMLPolicyWriter;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Item;
-import com.vaadin.event.Action;
-import com.vaadin.event.Action.Handler;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.event.Transferable;
-import com.vaadin.event.dd.DragAndDropEvent;
-import com.vaadin.event.dd.DropHandler;
-import com.vaadin.event.dd.acceptcriteria.AcceptAll;
-import com.vaadin.event.dd.acceptcriteria.AcceptCriterion;
-import com.vaadin.ui.AbstractSelect.AbstractSelectTargetDetails;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Component;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.HorizontalSplitPanel;
-import com.vaadin.ui.Notification;
-import com.vaadin.ui.TabSheet;
-import com.vaadin.ui.TabSheet.CloseHandler;
-import com.vaadin.ui.TabSheet.Tab;
-import com.vaadin.ui.Table.TableDragMode;
-import com.vaadin.ui.Table.TableTransferable;
-import com.vaadin.ui.TreeTable;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window.CloseEvent;
-import com.vaadin.ui.Window.CloseListener;
-
-/**
- * The class represents Policy Editor in Policy Authoring Tool
- */
-public class PolicyWorkspace extends CustomComponent implements DropHandler, OnDemandStreamResource {
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-
-	@AutoGenerated
-	private HorizontalSplitPanel horizontalSplitPanel;
-
-	@AutoGenerated
-	private VerticalLayout verticalLayoutRightPanel;
-
-	@AutoGenerated
-	private TabSheet tabSheet;
-
-	@AutoGenerated
-	private HorizontalLayout horizontalLayoutRightToolbar;
-
-	@AutoGenerated
-	private Button buttonRight;
-
-	@AutoGenerated
-	private VerticalLayout verticalLayoutLeftPanel;
-
-	@AutoGenerated
-	private TreeTable treeWorkspace;
-
-	@AutoGenerated
-	private HorizontalLayout horizontalLayoutLeftToolbar;
-
-	@AutoGenerated
-	private Button buttonLeft;
-
-	@AutoGenerated
-	private HorizontalLayout horizontalLayoutLeftToolbarLeft;
-
-	@AutoGenerated
-	private Button buttonExport;
-
-	@AutoGenerated
-	private Button buttonSynchronize;
-
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(PolicyWorkspace.class);
-	private final PolicyWorkspace self = this;
-	private final OnDemandFileDownloader downloader = new OnDemandFileDownloader(this);
-	
-	private GitRepositoryContainer treeContainer;
-	
-	private static final Action EXPORT_REPOSITORY = 	new Action ("Export Repository");
-	private static final Action SYNCHRONIZE_REPOSITORY =new Action ("Synchronize");
-	private static final Action PUSH_CHANGES = 			new Action ("Push Changes");
-	private static final Action CREATE_SUBDOMAIN = 		new Action("Create Sub Domain");
-	private static final Action RENAME_SUBDOMAIN = 		new Action("Rename Sub Domain");
-	private static final Action CREATE_NEWPOLICY =		new Action ("Create New Policy");
-	private static final Action RENAME_POLICY =			new Action ("Rename Policy");
-	private static final Action IMPORT_POLICY = 		new Action ("Import Policy");
-	private static final Action DELETE_SUBDOMAIN = 		new Action ("Delete Sub Domain");
-	private static final Action CLONE_POLICY = 			new Action ("Clone Policy");
-	private static final Action VIEW_POLICY = 			new Action ("View Policy");
-	private static final Action EDIT_POLICY = 			new Action ("Edit Policy");
-	private static final Action EXPORT_POLICY = 		new Action ("Export Policy");
-	private static final Action DELETE_POLICY = 		new Action ("Delete Policy");
-	
-	public static final String VIEWNAME = PolicyWorkspace.class.getCanonicalName();
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PolicyWorkspace() {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Initialize GUI
-		//
-		this.initializeTree();
-		this.initializeButtons();
-	}
-	
-	protected void initializeButtons() {
-		buttonLeft.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				if (horizontalSplitPanel.getSplitPosition() == 100.0)
-					horizontalSplitPanel.setSplitPosition(36, Unit.PERCENTAGE);
-				else
-					horizontalSplitPanel.setSplitPosition(0);
-			}
-		});
-		buttonRight.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				if (horizontalSplitPanel.getSplitPosition() == 0.0)
-					horizontalSplitPanel.setSplitPosition(36, Unit.PERCENTAGE);
-				else
-					horizontalSplitPanel.setSplitPosition(100, Unit.PERCENTAGE);
-			}
-		});
-		//
-		// Check user write-access
-		//
-		if (((XacmlAdminUI)UI.getCurrent()).isAuthorized( 
-				XacmlAdminAuthorization.AdminAction.ACTION_WRITE, 
-				XacmlAdminAuthorization.AdminResource.RESOURCE_POLICY_WORKSPACE)) {
-			this.buttonSynchronize.addClickListener(new ClickListener() {
-				private static final long serialVersionUID = 1L;
-	
-				@Override
-				public void buttonClick(ClickEvent event) {
-					self.synchronizeRepository();
-				}			
-			});
-		} else {
-			logger.info("user not authorized to write, removing synchronize button.");
-			this.buttonSynchronize.setVisible(false);
-		}
-		//
-		// The export button is attached to dynamic downloader
-		//
-		downloader.extend(this.buttonExport);
-	}
-	
-	protected void initializeTree() {
-		//
-		// This is where the user's Git repository is located
-		//
-		final Path gitPath = ((XacmlAdminUI)UI.getCurrent()).getUserGitPath();
-		//
-		// Create our Git file system container
-		//
-		this.treeContainer = new GitRepositoryContainer(gitPath, gitPath.toFile());
-		//
-		// Create our own filter to filter out File extensions and
-		// also the Git directory.
-		//
-		this.treeContainer.setFilter(new FilenameFilter() {
-
-			@Override
-			public boolean accept(File dir, String name) {
-				//
-				// We don't want any of the hidden files
-				//
-				if (name.startsWith(".git") || name.equals(".DS_Store")) {
-					return false;
-				}
-				//
-				// We definitely want xml files
-				//
-				if (name.endsWith(".xml")) {
-					return true;
-				}
-				//
-				// We should test if its a directory, we want those
-				// included.
-				//
-				Path path = Paths.get(dir.getAbsolutePath(), name);
-				if (Files.isDirectory(path)) {
-					return true;
-				}
-				logger.warn("Filtering out: " + path.toString());
-				return false;
-			}
-			
-		});
-		//
-		// Set TreeTables datasource as our git container
-		//
-		this.treeWorkspace.setContainerDataSource(this.treeContainer);
-		//
-		// Setup other properties etc.
-		//
-		this.treeWorkspace.setItemIconPropertyId("Icon");
-		this.treeWorkspace.setVisibleColumns(new Object[]{"Name", "Version", "Size", "Last Modified", "Status"});
-		this.treeWorkspace.setSizeFull();
-		this.treeWorkspace.setSelectable(true);
-		this.treeWorkspace.setEditable(false);
-		//
-		// Expand the first couple of directories
-		//
-		for (Object id : this.treeWorkspace.getItemIds()) {
-			this.treeWorkspace.setCollapsed(id, false);
-			for (Object child : this.treeWorkspace.getChildren(id)) {
-				this.treeWorkspace.setCollapsed(child, false);
-			}
-		}
-		//
-		// Respond to table selections
-		//
-		/*
-		this.treeWorkspace.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				File selection = (File) self.treeWorkspace.getValue();
-				if (selection != null) {
-					self.buttonImport.setEnabled(selection.isDirectory());
-					self.buttonExport.setEnabled(selection.isFile());
-				} else {
-					
-				}
-			}
-			
-		});
-		*/
-		this.treeWorkspace.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick() && 
-					event.getItemId() instanceof File &&
-					((File) event.getItemId()).isFile()) {
-					self.openPolicyTab((File) event.getItemId(), true);
-				}				
-			}
-		});
-		//
-		// Setup our action handlers
-		//
-		this.treeWorkspace.addActionHandler(new Handler() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Action[] getActions(Object target, Object sender) {
-				if (target == null) {
-					//
-					// Nothing is selected, they right-clicked empty space
-					//
-					return new Action[] {SYNCHRONIZE_REPOSITORY, EXPORT_REPOSITORY, CREATE_SUBDOMAIN};
-				}
-				if (! (target instanceof File)) {
-					return null;
-				}
-				if (((File)target).isDirectory()) {
-					//
-					// Selected a directory
-					//
-					return new Action[] {CREATE_SUBDOMAIN, RENAME_SUBDOMAIN, DELETE_SUBDOMAIN, CREATE_NEWPOLICY, IMPORT_POLICY, PUSH_CHANGES};
-				}
-				if (((File)target).isFile()) {
-					//
-					// Selected a policy file
-					//
-					return new Action[] {VIEW_POLICY, EDIT_POLICY, CLONE_POLICY, EXPORT_POLICY, RENAME_POLICY, DELETE_POLICY, PUSH_CHANGES};
-				}
-				return null;
-			}
-
-			@Override
-			public void handleAction(Action action, Object sender, Object target) {
-				if (action == SYNCHRONIZE_REPOSITORY) {
-					self.synchronizeRepository();
-					return;
-				}
-				if (action == EXPORT_REPOSITORY) {
-					self.exportRepository();
-					return;
-				}
-				if (action == PUSH_CHANGES) {
-					self.pushChanges((File) target);
-					return;
-				}
-				if (action == CREATE_SUBDOMAIN) {
-					self.editSubDomain((File) target, null);
-					return;
-				}
-				if (action == RENAME_SUBDOMAIN) {
-					self.editSubDomain((File) self.treeWorkspace.getParent(target), ((File)target).getName());
-					return;
-				}
-				if (action == CREATE_NEWPOLICY) {
-					self.createPolicy((File) target);
-					return;
-				}
-				if (action == RENAME_POLICY) {
-					self.renamePolicy((File) target);
-					return;
-					
-				}
-				if (action == IMPORT_POLICY) {
-					self.importPolicy((File) target);
-					return;
-				}
-				if (action == DELETE_SUBDOMAIN) {
-					self.deleteSubDomain((File) target);
-					return;
-				}
-				if (action == CLONE_POLICY) {
-					self.clonePolicy((File) target);
-					return;
-				}
-				if (action == VIEW_POLICY) {
-					self.openPolicyTab((File) target, true);
-					return;
-				}
-				if (action == EDIT_POLICY) {
-					self.openPolicyTab((File) target, false);
-					return;
-				}
-				if (action == EXPORT_POLICY) {
-					return;
-
-				}
-				if (action == DELETE_POLICY) {
-					self.deletePolicy((File) target);
-					return;
-				}
-			}
-		});
-		//
-		// Set the drop handler
-		//
-		this.treeWorkspace.setDragMode(TableDragMode.ROW);
-		this.treeWorkspace.setDropHandler(this);
-		//
-		// Detect when a tab closes and remove it from the
-		// tab sheet.
-		//
-		this.tabSheet.setCloseHandler(new CloseHandler() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void onTabClose(TabSheet tabsheet, Component tabContent) {
-				logger.info("tabsheet closing: " + tabsheet.getCaption());
-				tabsheet.removeTab(tabsheet.getTab(tabContent));
-			}
-			
-		});
-	}
-
-	protected void	editSubDomain(final File parent, final String subdomain) {
-		final SubDomainEditorWindow editor = new SubDomainEditorWindow(null);
-		editor.setCaption((subdomain == null ? "Create New SubDomain" : "Edit SubDomain"));
-		editor.setCloseShortcut(KeyCode.ESCAPE);
-		editor.setModal(true);
-		editor.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent event) {
-				//
-				// Did the user save it
-				//
-				if (editor.isSaved() == false) {
-					return;
-				}
-				String newSubDomain = editor.getSubDomain();
-				if (newSubDomain == null) {
-					logger.warn("Shouldn't have a null subdomain if the user clicked save button");
-					return;
-				}
-				//
-				// New subdomain?
-				//
-				if (subdomain == null) {
-					//
-					// Create new one
-					//
-					Path createDir;
-					if (parent == null) {
-						//
-						// New Root domain
-						//
-						createDir = Paths.get(((XacmlAdminUI)UI.getCurrent()).getUserGitPath().toAbsolutePath().toString(), newSubDomain);
-					} else {
-						//
-						// New subdomain
-						//
-						createDir = Paths.get(parent.getAbsolutePath(), newSubDomain);
-					}
-					try {
-						//
-						// Does the new subdomain exist?
-						//
-						Path newDir;
-						if (Files.exists(createDir)) {
-							//
-							// It already exists
-							//
-							newDir = createDir;
-						} else {
-							//
-							// Create it
-							//
-							newDir = Files.createDirectory(createDir);
-							//
-							// Create empty .gitignore file
-							//
-							Files.createFile(Paths.get(newDir.toString(), ".gitignore"));
-						}
-						//
-						// Setup the TreeTable
-						//
-						File file = newDir.toFile();
-						if (parent == null) {
-							Item item = self.treeWorkspace.addItem(file);
-							if (item != null) {
-								self.treeWorkspace.setCollapsed(file, false);
-								self.treeWorkspace.select(file);
-							}
-						} else {
-							Item item = self.treeWorkspace.addItem(file);
-							if (item != null) {
-								self.treeWorkspace.setParent(file, parent);
-								self.treeWorkspace.setCollapsed(parent, false);
-								self.treeWorkspace.select(file);
-							}
-						}
-					} catch (IOException e) {
-						logger.error("Failed to create subdomain: " + createDir.toString(), e);
-					}
-				} else {
-					//
-					// Get our paths
-					//
-					Path oldDir = Paths.get(parent.getAbsolutePath(), subdomain);
-					Path newDir = Paths.get(parent.getAbsolutePath(), newSubDomain);
-					try {
-						//
-						// Rename the subdomain
-						//
-						Files.move(oldDir, newDir);
-						//
-						// Add to the TreeTable
-						//
-						File newFile = newDir.toFile();
-						File oldFile = oldDir.toFile();
-						Item item = self.treeWorkspace.addItem(newFile);
-						if (item != null) {
-							self.treeWorkspace.setChildrenAllowed(newFile, true);
-							//
-							// Make sure its parent is the same as the old one, unless they
-							// renamed the top-level.
-							//
-							Object parent = self.treeWorkspace.getParent(oldFile);
-							if (parent != null) {
-								self.treeWorkspace.setParent(newFile, parent);
-							}
-							//
-							// Make any children of the old subdomain now children
-							// of the new subdomain.
-							//
-							Collection<?> children = self.treeWorkspace.getChildren(oldFile);
-							Iterator<?> iter = children.iterator();
-							while (iter.hasNext()) {
-								Object child = iter.next();
-								self.treeWorkspace.setParent(child, newFile);
-							}
-							//
-							// Finally remove the old subdomain
-							//
-							self.treeWorkspace.removeItem(oldFile);
-						}
-					} catch (IOException e) {
-						logger.error("Failed to rename subdomain: " + oldDir.toString() + " to: " + newDir.toString(), e);
-					}
-				}
-			}
-		});
-		editor.center();
-		UI.getCurrent().addWindow(editor);
-	}
-	
-	protected void	deleteSubDomain(final File subdomain) {
-		String message = "Are you sure you want to delete subdomain\n" + subdomain.getName() + "\nThis will remove <B>ALL</B> of its subdomains and policy files.";
-		ConfirmDialog dialog = ConfirmDialog.getFactory().create("Confirm SubDomain Deletion", message, "Delete", "Cancel");
-		dialog.setContentMode(ContentMode.HTML);
-		dialog.show(getUI(), new ConfirmDialog.Listener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void onClose(ConfirmDialog dialog) {
-				if (dialog.isConfirmed()) {
-					//
-					// Iterate the subdomain
-					//
-					try {
-						Files.walkFileTree(Paths.get(subdomain.getAbsolutePath()), new SimpleFileVisitor<Path>() {
-							@Override
-							public FileVisitResult visitFile(Path deleteFile, BasicFileAttributes attrs)
-									throws IOException {
-								try {
-									boolean removeFromTree = deleteFile.getFileName().toString().endsWith(".xml");
-									Files.delete(deleteFile);									
-									if (removeFromTree) {
-										self.treeWorkspace.removeItem(deleteFile.toFile());
-									}
-									if (logger.isDebugEnabled()) {
-										logger.debug("Deleted file: " + deleteFile.toString());
-									}
-								} catch (IOException e) {
-									logger.error("Failed to delete file: " + deleteFile.toString(), e);
-									return FileVisitResult.TERMINATE;
-								}
-								return super.visitFile(deleteFile, attrs);
-							}
-
-							@Override
-							public FileVisitResult postVisitDirectory(Path dir, IOException exc)
-									throws IOException {
-								try {
-									Files.delete(dir);									
-									self.treeWorkspace.removeItem(dir.toFile());
-									if (logger.isDebugEnabled()) {
-										logger.debug("Deleted dir: " + dir.toString());
-									}
-								} catch (IOException e) {
-									logger.error("Failed to delete directory: " + dir.toString(), e);
-									return FileVisitResult.TERMINATE;
-								}
-								return super.postVisitDirectory(dir, exc);
-							}
-							
-						});
-					} catch (IOException e) {
-						logger.error("Failed to walk subdomain: " + subdomain.getAbsolutePath(), e);
-					}
-				}
-			}
-			
-		}, true);
-		
-	}
-	
-	protected void	createPolicy(final File parentDirectory) {
-		//
-		// Construct our parameters
-		//
-		Path parent = Paths.get(parentDirectory.getAbsolutePath());
-		Path newFile = this.getNextFilename(parent, "Policy");
-		//
-		// Run the window
-		//
-		this.runPolicyWindow("Create New Policy", parent, newFile, null, null);
-	}
-	
-	protected void	renamePolicy(final File policy) {
-		//
-		// Run the rename window
-		//
-		final RenamePolicyFileWindow window = new RenamePolicyFileWindow(policy.getName());
-		window.setCaption("Rename Policy");
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-			
-			@Override
-			public void windowClose(CloseEvent event) {
-				String newFilename = window.getNewFilename();
-				if (newFilename == null) {
-					//
-					// User cancelled
-					//
-					return;
-				}
-				Path newPolicy = Paths.get(policy.getParent(), newFilename);
-				if (Files.exists(newPolicy)) {
-					Notification.show("Cannot rename to an existing file", Notification.Type.ERROR_MESSAGE);
-					return;
-				}
-				try {
-					if (policy.renameTo(newPolicy.toFile()) == false) {
-						throw new Exception("No known error, rename failed");
-					}
-					self.treeContainer.updateItem(newPolicy.getParent().toFile());
-				} catch (Exception e) {
-					Notification.show("Failed to rename file: " + e.getLocalizedMessage());
-				}
-			}
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-	
-	protected void	clonePolicy(final File policy) {
-		//
-		// Figure out a new name for the cloned policy
-		//
-		Path policyClone = Paths.get(policy.getAbsolutePath());
-		Path newFile = this.getNextFilename(policyClone.getParent(), policy.getName());
-		if (newFile == null) {
-			return;
-		}
-		//
-		// Scan the policy in, replace policy ID's and rule ID's
-		//
-		Object policyData = new XACMLPolicyScanner(policyClone, new XACMLPolicyScanner.SimpleCallback() {
-
-			@Override
-			public CallbackResult onPreVisitRule(PolicyType parent, RuleType rule) {
-				rule.setRuleId(((XacmlAdminUI)getUI()).newRuleID());
-				return CallbackResult.CONTINUE;
-			}
-			
-			@Override
-			public CallbackResult onPreVisitPolicySet(PolicySetType parent, PolicySetType policySet) {
-				policySet.setPolicySetId(((XacmlAdminUI)getUI()).newPolicyID());
-				policySet.setVersion("1");
-				return CallbackResult.CONTINUE;
-			}
-			
-			@Override
-			public CallbackResult onPreVisitPolicy(PolicySetType parent, PolicyType policy) {
-				policy.setPolicyId(((XacmlAdminUI)getUI()).newPolicyID());
-				policy.setVersion("1");
-				return CallbackResult.CONTINUE;
-			}
-			
-		}).scan();
-		//
-		// Run the window
-		//
-		this.runPolicyWindow("Clone Policy", newFile.getParent(), newFile.getFileName(), policyData, null);
-	}
-	
-	protected void	runPolicyWindow(String caption, final Path parentPath, final Path policyPath, final Object policyData, final Path oldPolicyFile) {
-		//
-		// Create our editor window
-		//
-		final PolicyNameEditorWindow editor = new PolicyNameEditorWindow((policyPath != null ? policyPath.getFileName().toString() : null), 
-															policyData, 
-															((XacmlAdminUI)getUI()).getPolicyAlgorithms(),
-															((XacmlAdminUI)getUI()).getRuleAlgorithms());
-		editor.setCaption(caption);
-		editor.setCloseShortcut(KeyCode.ESCAPE);
-		editor.setModal(true);
-		editor.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-			
-			@Override
-			public void windowClose(CloseEvent event) {
-				//
-				// Did the user hit save button or esc?
-				//
-				if (editor.isSaved() == false) {
-					return;
-				}
-				final Object data = editor.getPolicyData();
-				String filename = editor.getPolicyFilename();
-				if (filename == null || data == null) {
-					logger.warn("Editor said is was saved but filename/data is null.");
-					return;
-				}
-				//
-				// Determine new path
-				//
-				final Path newPolicyPath = Paths.get(parentPath.toString(), filename);
-				//
-				// Is it ok to overwrite the new file?
-				//
-				try {
-					//
-					// Handle if we are not replacing an old file and we are overwriting
-					// an existing file.
-					//
-					if (self.isOverwritingAPolicy(newPolicyPath, oldPolicyFile) == false && Files.exists(newPolicyPath)) {
-						//
-						// Confirm they wanted to do this, and figure out
-						// new version number.
-						//
-						String message = "You are overwriting a file: " + newPolicyPath.getFileName().toString();
-						ConfirmDialog dialog = ConfirmDialog.getFactory().create("Confirm Policy File Overwriting", message, "Overwrite", "Cancel");
-						dialog.setData(false);
-						dialog.setContentMode(ContentMode.HTML);
-						dialog.setModal(true);
-						dialog.show(getUI(), new ConfirmDialog.Listener() {
-							private static final long serialVersionUID = 1L;
-
-							@Override
-							public void onClose(ConfirmDialog dialog) {
-								if (dialog.isConfirmed()) {
-									//
-									// Yep the user wants to overwrite it
-									//
-									self.savePolicy(newPolicyPath, data, oldPolicyFile);
-									//
-									// Open it for editing
-									//
-									self.openPolicyTab(newPolicyPath.toFile(), false);
-								}
-							}
-							
-						}, true);
-						//
-						// Exit out of this thread
-						//
-						return;
-					}
-				} catch (Exception e) {
-					logger.error(e);
-					return;
-				}
-				//
-				// Save it off
-				//
-				self.savePolicy(newPolicyPath, data, oldPolicyFile);
-				//
-				// Open it for editing
-				//
-				self.openPolicyTab(newPolicyPath.toFile(), false);
-			}
-		});
-		editor.center();
-		UI.getCurrent().addWindow(editor);
-	}
-
-	protected Path	getNextFilename(Path parent, String filename) {
-		filename = FilenameUtils.removeExtension(filename);
-		Path newFile = null;
-		int i = 0;
-		while (true) {
-			newFile = Paths.get(parent.toString(), String.format("%s(%02d)", filename, i++) + ".xml");
-			if (Files.notExists(newFile)) {
-				return newFile;
-			}
-			if (i == 100) {
-				logger.error("Could not construct a new name for cloned policy.");
-				return null;
-			}
-		}
-		
-	}
-	
-	protected boolean isOverwritingAPolicy(Path newPolicyPath, Path oldPolicyPath) throws Exception {
-		//
-		// Check to see if we were editing an existing file. Then check if the
-		// new file actually exists. Then check if we are overwriting the original old file
-		//
-		if (oldPolicyPath != null && Files.exists(newPolicyPath) && Files.isSameFile(newPolicyPath, oldPolicyPath)) {
-			//
-			// Yes its the same, overwriting it is expected.
-			//
-			logger.info("isOverwritingAPolicy");
-			return true;
-		}
-		return false;
-	}
-
-	protected void	savePolicy(final Path newPolicyPath, final Object policyData, Path oldPolicyPath) {
-		//
-		// Are they overwriting another policy?
-		//
-		String version = "1.0";
-		boolean delete = false;
-		if (oldPolicyPath != null) {
-			//
-			// This policy name was being edited. Is it still the same?
-			//
-			try {
-				delete = true;
-				if (Files.exists(newPolicyPath) && Files.isSameFile(newPolicyPath, oldPolicyPath)) {
-					delete = false;
-				}
-			} catch (Exception e) {
-				logger.error("Could not determine if same file", e);
-				return;
-			}
-			logger.info("Deleting old file: " + delete);
-		}
-		//
-		// Are we now overwriting another file?
-		//
-		if (Files.exists(newPolicyPath)) {
-			//
-			// Yes
-			//
-			logger.info("Overwriting file");
-			//
-			// Overwrite is happening. Bump the version (IF WE CAN)
-			//
-//TODO - What if user wants to change something other than the last number?  For example, changing 1.5.23 to 2.0.0.
-//TODO	  We need a mechanism that allows the user to specify the new policy version (disallowing backtracking) if they desire
-//TODO	  and get that new number (if any) passed down to here.  This code then becomes the "then" branch of "If new version has been specified..."
-			try {
-				int[] versionArray = StdPDPPolicy.versionStringToArray(XACMLPolicyScanner.getVersion(newPolicyPath));
-				// increment the right-most digit
-				versionArray[versionArray.length - 1]++;
-				version = StdPDPPolicy.versionArrayToString(versionArray);
-			} catch (NumberFormatException | IOException e) {
-				try {
-					logger.warn("Previous version '" + XACMLPolicyScanner.getVersion(newPolicyPath) + "' not a series of itegers");
-				} catch (IOException e1) {
-					logger.error("could not get previous version");
-				}
-//TODO - This may not be wise since the intent is to increase the version number.  Perhaps we should abort this an go back to the user?
-				version = "1.0";
-			}
-			if (policyData instanceof PolicySetType) {
-				((PolicySetType) policyData).setVersion(version);
-			} else if (policyData instanceof PolicyType) {
-				((PolicyType) policyData).setVersion(version);
-			}
-		} else {
-			//
-			// Nope, a completely new file
-			//
-			logger.info("New file");
-		}
-		//
-		// Is the root a PolicySet or Policy?
-		//
-		Path finalPolicyPath;
-		if (policyData instanceof PolicySetType) {
-			//
-			// Write it out
-			//
-			finalPolicyPath = XACMLPolicyWriter.writePolicyFile(newPolicyPath, (PolicySetType) policyData);
-		} else if (policyData instanceof PolicyType) {
-			//
-			// Write it out
-			//
-			finalPolicyPath = XACMLPolicyWriter.writePolicyFile(newPolicyPath, (PolicyType) policyData);
-		} else {
-			logger.error("Unknown data type sent back.");
-			return;
-		}
-		//
-		// Did it get written?
-		//
-		if (finalPolicyPath == null || ! Files.exists(finalPolicyPath)) {
-			logger.error("Failed to write policy file.");
-			return;
-		}
-		//
-		// Add it into our tree
-		//
-		this.addPolicyFileToTree(finalPolicyPath.getParent().toFile(), finalPolicyPath.toFile());
-		//
-		// Do we need to delete the old file?
-		//
-		if (oldPolicyPath != null && delete) {
-			try {
-				Files.delete(oldPolicyPath);
-			} catch (Exception e) {
-				logger.error("Failed to delete old policy", e);
-			}
-			if (self.treeWorkspace.removeItem(oldPolicyPath.toFile()) == false) {
-				logger.warn("Failed to remove old policy path");
-			}
-		}
-	}	
-
-	protected void	deletePolicy(final File policy) {
-		String message = "Are you sure you want to delete policy: " + policy.getName();
-		ConfirmDialog dialog = ConfirmDialog.getFactory().create("Confirm Policy File Deletion", message, "Delete", "Cancel");
-		dialog.setContentMode(ContentMode.HTML);
-		dialog.show(getUI(), new ConfirmDialog.Listener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void onClose(ConfirmDialog dialog) {
-				if (dialog.isConfirmed() && policy.delete()) {
-					self.treeWorkspace.removeItem(policy);
-					if (logger.isDebugEnabled()) {
-						logger.debug("Deleted file: " + policy.toString());
-					}
-				}
-			}
-			
-		}, true);
-		
-	}
-
-	protected void	importPolicy(final File domain) {
-		//
-		// Get the current domain
-		//
-		if (! domain.isDirectory()) {
-			logger.error("Table must have a directory selected to import the file.");
-			return;
-		}
-		//
-		// Create the upload window
-		//
-		final PolicyUploadWindow upload = new PolicyUploadWindow(Paths.get(domain.toURI()));
-		upload.setCaption("Import Xacml 3.0 Policy File");
-		upload.setCloseShortcut(KeyCode.ESCAPE);
-		upload.setModal(true);
-		upload.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Was it successful?
-				//
-				Path newFile = upload.getUploadedFile();
-				if (newFile == null) {
-					return;
-				}
-				//
-				// Add it
-				//
-				self.addPolicyFileToTree(domain, newFile.toFile());
-				//
-				// Are we importing anything in the policy file?
-				//
-				boolean importAttributes = upload.importAttributes();
-				boolean importObligations = upload.importObligations();
-				boolean importAdvice = upload.importAdvice();
-				if (importAttributes || importObligations || importAdvice) {
-					//
-					// Create our importer
-					//
-					XACMLPolicyImporter importer = new XACMLPolicyImporter();
-					importer.setImportAttributes(importAttributes);
-					importer.setImportObligations(importObligations);
-					importer.setImportAdvice(importAdvice);		
-					importer.setIgnoreStandardAttributes(upload.ignoreStandard());
-					//
-					// Yes load and scan the policy
-					//
-					new XACMLPolicyScanner(newFile, importer).scan();
-				}
-			}
-		});
-		upload.center();
-		UI.getCurrent().addWindow(upload);
-	}
-	
-	protected	void	addPolicyFileToTree(File domain, File file) {
-		//
-		// Add it into our tree
-		//
-		if (this.treeWorkspace.addItem(file) != null) {
-			//
-			// Make sure it has the right parent
-			//
-			this.treeWorkspace.setParent(file, domain);
-			//
-			// Select our new policy
-			//
-			self.treeWorkspace.select(file);
-		} else {
-			logger.error("Failed to add policy to workspace tree");
-		}
-	}
-	
-	/*
-	protected void	publishPolicy(final File policy) {
-		//
-		// Get its ID
-		//
-		Item item = this.treeContainer.getItem(policy);
-		if (item == null) {
-			logger.error("Failed to get the item");
-			return;
-		}
-		Object policyData = item.getItemProperty("Data");
-		if (policyData == null) {
-			logger.error("Failed to get item data property.");
-			return;
-		}
-		String fullId = XACMLPolicyScanner.getID(policyData);
-		String version = XACMLPolicyScanner.getVersion(policyData);
-		if (fullId == null || version == null) {
-			logger.error("Failed to get policy Id");
-			return;
-		}
-		List<String> ids = Lists.newArrayList(Splitter.on(':').split(fullId));
-		if (ids.isEmpty()) {
-			logger.error("Couldn't parse policy Id");
-			return;
-		}
-		final String id = ids.get(ids.size() - 1) + "." + version;
-		//
-		// Is there only one group?
-		//
-		PAPEngine engine = ((XacmlAdminUI)getUI()).getPAPEngine();
-		Set<PDPGroup> groups;
-		PDPGroup defaultGroup;
-		try {
-			groups = engine.getPDPGroups();
-		} catch (PAPException e) {
-			String message = "Unable to retrieve Groups from server: " + e;
-			logger.error(message, e);
-			throw new RuntimeException(message);
-		}
-		try {
-			defaultGroup = engine.getDefaultGroup();
-		} catch (PAPException e) {
-			String message = "Unable to retrieve Default Group from server: " + e;
-			logger.error(message, e);
-			throw new RuntimeException(message);
-		}
-		if (groups.size() == 1) {
-			this.doPublish(id, policy, defaultGroup);
-			return;
-		}
-		//
-		// Have user select a group
-		//
-		final SelectPDPGroupWindow window = new SelectPDPGroupWindow(groups, "Select PDP Group to publish in");
-		window.setCaption("Select PDP Group");
-		window.setCloseShortcut(KeyCode.ESCAPE);
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-			
-			@Override
-			public void windowClose(CloseEvent event) {
-				PDPGroup group = window.selectedGroup();
-				if (group != null) {
-					self.doPublish(id, policy, group);
-				}
-			}
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-
-	}
-	
-	protected void	doPublish(String id, File policy, PDPGroup group) {
-		//
-		// The policy status must be up-to-date
-		//
-		// TODO
-		
-		//
-		// TODO - get list of referenced policies and publish
-		// them first.
-		//
-		
-		//
-		// Publish the policy
-		//
-		
-		PAPEngine engine = ((XacmlAdminUI)getUI()).getPAPEngine();
-		try (InputStream is = new FileInputStream(policy)) {
-			engine.publishPolicy(id, policy.getName(), true, is, group);
-		} catch (PAPException | IOException e) {
-			logger.error("Failed to publish policy: ", e);
-		}
-	}
-	*/
-	
-	protected void	pushChanges(final File target) {
-		try {
-			//
-			// Grab our working repository
-			//
-    		Path repoPath = ((XacmlAdminUI)getUI()).getUserGitPath();
-			final Git git = Git.open(repoPath.toFile());
-			//
-			// Get our status
-			//
-			final String base;
-			Status status;
-			if (target == null) {
-				base = ".";
-			} else {
-				Path relativePath = repoPath.relativize(Paths.get(target.getPath()));
-				base = relativePath.toString();
-			}
-			if (logger.isDebugEnabled()) {
-				logger.debug("Status on base: " + base);
-			}
-			status = git.status().addPath(base).call();
-			//
-			// Check if its clean
-			//
-			if (status.isClean()) {
-				//
-				// Its clean
-				//
-				AdminNotification.warn(target.getName() + " is clean!");
-				return;
-			}
-			//
-			// Create the window
-			//
-			final GitPushWindow window = new GitPushWindow(git, target, status);
-			window.setCaption("Push Changes");
-			window.setModal(true);
-			window.addCloseListener(new CloseListener() {
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				public void windowClose(CloseEvent e) {
-					if (window.isSaved() == false) {
-						return;
-					}
-					try {
-						//
-						// Needs to be added first
-						//
-						DirCache cache = git.add().addFilepattern(base).call();
-						for (int i = 0; i < cache.getEntryCount(); i++) {
-							DirCacheEntry entry = cache.getEntry(i);
-							if (logger.isDebugEnabled()) {
-								logger.debug("Entry: " + entry);
-							}
-						}
-						//
-						// Next they need to be committed
-						//
-						RevCommit rev = git.commit().setMessage(window.getComment()).call();
-						if (logger.isDebugEnabled()) {
-							logger.debug("RevCommit: " + rev);
-						}
-						//
-						// Now we can push changes to the Git repository
-						//
-						Iterable<PushResult> results = git.push().call();
-						for (PushResult result : results) {
-							logger.info(result);
-						}
-						//
-						// Have the container fire an item set change notification
-						//
-						self.treeContainer.updateItem(target);
-					} catch (NoWorkTreeException | GitAPIException e1) {
-						logger.error(e);
-						AdminNotification.error("Exception occurred while trying to push: " + e1);
-					}
-				}
-				
-			});
-			window.center();
-			UI.getCurrent().addWindow(window);
-		} catch (IOException | GitAPIException e) {
-			logger.error(e);
-			AdminNotification.error("Exception occurred while trying to get status: " + e);
-		}
-	}
-	
-	protected void synchronizeRepository() {
-		final GitSynchronizeWindow window = new GitSynchronizeWindow();
-		window.setCaption("Synchronize with server repository?");
-		window.setModal(true);
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-	
-	protected void exportRepository() {
-		this.buttonExport.click();
-	}
-	
-	@Override
-	public String getFilename() {
-		return "Repository.tgz";
-	}
-
-	@Override
-	public InputStream getStream() {
-		//
-		// Grab our working repository
-		//
-		final Path repoPath = ((XacmlAdminUI)getUI()).getUserGitPath();
-		Path workspacePath = ((XacmlAdminUI)getUI()).getUserWorkspace();
-		final Path tarFile = Paths.get(workspacePath.toString(), "Repository.tgz");
-		
-		try (OutputStream os = Files.newOutputStream(tarFile)) {
-			try (GzipCompressorOutputStream gzOut = new GzipCompressorOutputStream(os)) {
-				try (TarArchiveOutputStream tarOut = new TarArchiveOutputStream(gzOut)) {
-					
-					tarOut.setLongFileMode(TarArchiveOutputStream.LONGFILE_GNU);
-					
-					Files.walkFileTree(repoPath, new SimpleFileVisitor<Path>() {
-
-						@Override
-						public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
-							if (dir.getFileName().toString().startsWith(".git")) {
-								return FileVisitResult.SKIP_SUBTREE;
-							}
-							Path relative = repoPath.relativize(dir);
-							if (relative.toString().isEmpty()) {
-								return super.preVisitDirectory(dir, attrs);
-							}
-							TarArchiveEntry entry = new TarArchiveEntry(relative.toFile());
-							tarOut.putArchiveEntry(entry);
-							tarOut.closeArchiveEntry();
-							return super.preVisitDirectory(dir, attrs);
-						}
-
-						@Override
-						public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
-							if (file.getFileName().toString().endsWith(".xml") == false) {
-								return super.visitFile(file, attrs);
-							}
-							Path relative = repoPath.relativize(file);
-							TarArchiveEntry entry = new TarArchiveEntry(relative.toFile());
-							entry.setSize(Files.size(file));
-							tarOut.putArchiveEntry(entry);
-							try {
-								IOUtils.copy(Files.newInputStream(file), tarOut);
-							} catch (IOException e) {
-								logger.error(e);
-							}
-							tarOut.closeArchiveEntry();
-							return super.visitFile(file, attrs);
-						}
-						
-					});
-					tarOut.finish();
-				}				
-			}
-		} catch (IOException e) {
-			logger.error(e);
-		}
-		try {
-			return Files.newInputStream(tarFile);
-		} catch (IOException e) {
-			logger.error(e);
-		}
-		return null;
-	}
-
-	protected void openPolicyTab(File policy, boolean readOnly) {
-		//
-		// Sanity check
-		//
-		assert policy != null;
-		assert policy.isFile();
-		if (policy == null || ! policy.isFile()) {
-			throw new IllegalArgumentException("You must specify a file.");
-		}
-		Status status;
-		Path relativePath;
-		String base;
-		try {
-			//
-			// Grab our working repository
-			//
-			Path repoPath = ((XacmlAdminUI)getUI()).getUserGitPath();
-			final Git git = Git.open(repoPath.toFile());
-			//
-			// Get our status
-			//
-			relativePath = repoPath.relativize(Paths.get(policy.getPath()));
-			base = relativePath.toString();
-			if (logger.isDebugEnabled()) {
-				logger.debug("Status on base: " + base);
-			}
-			status = git.status().addPath(base).call();
-		} catch (NoWorkTreeException | IOException | GitAPIException e) {
-			logger.error("Failed to get status on " + policy + " " + e);
-			AdminNotification.error("Could not get Git status on the file.");
-			return;
-		}
-		//
-		// Check if its clean
-		//
-		if (status.isClean() == false) {
-			//
-			// Check if its conflicting
-			//
-			for (String conflict : status.getConflicting()) {
-				if (conflict.equals(base)) {
-					//
-					// Yes - we won't be able to edit it
-					//
-					AdminNotification.error("Policy has conflicts with master, please synchronize the repository.");
-					return;
-				}
-			}
-		}
-		//
-		// Check to see if there already is a tab open
-		//
-		Iterator<Component> iter = self.tabSheet.iterator();
-		while (iter.hasNext()) {
-			Component c = iter.next();
-			if (c instanceof PolicyEditor) {
-				Object data = ((PolicyEditor) c).getData();
-				if (data != null && data instanceof File && ((File)data).equals(policy)) {
-					self.tabSheet.setSelectedTab(c);
-					return;
-				}
-			}
-		}
-		//
-		// No tab is open, create a new one
-		//
-		PolicyEditor editor = null;
-		try {
-			editor = new PolicyEditor(policy, this.treeContainer, readOnly);
-		} catch (IOException e) {
-			logger.error("Failed to open policy");
-			editor = null;
-		}
-		if (editor != null) {
-			editor.setWidth("100%");
-			Tab tab = self.tabSheet.addTab(editor);
-			editor.setTab(tab);
-			tab.setClosable(true);
-			
-			self.tabSheet.setSelectedTab(editor);
-		} else {
-			AdminNotification.error("The Policy File is not a Xacml 3.0 policy.");
-		}
-	}
-
-	@Override
-	public void drop(DragAndDropEvent event) {
-		Transferable t = event.getTransferable();
-		Component source = t.getSourceComponent();
-		if (source != this.treeWorkspace) {
-			assert false;
-			throw new IllegalArgumentException();
-		}
-		TableTransferable tt = (TableTransferable) t;
-		File sourceFile = (File) tt.getItemId();
-		
-		AbstractSelectTargetDetails target = (AbstractSelectTargetDetails)event.getTargetDetails();
-		File targetFile = (File) target.getItemIdOver();
-		
-		if (sourceFile.isFile() && targetFile != null && targetFile.isDirectory()) {
-			//
-			// Construct destination filename
-			//
-			Path dest = targetFile.toPath().resolve(sourceFile.getName());
-			//
-			// Check if the target domain exists
-			//
-			if (Files.exists(dest)) {
-				//
-				// Prompt the user
-				//
-				Notification.show("A policy file with that name already exists in that directory.", Notification.Type.ERROR_MESSAGE);
-			} else {
-				//
-				// Go ahead and rename it
-				//
-				this.renamePolicyFile(sourceFile, dest.toFile(), targetFile);
-			}
-		}
-	}
-	
-	protected void renamePolicyFile(File sourceFile, File dest, File parent) {
-		try {
-			if (sourceFile.renameTo(dest)) {
-				this.treeContainer.setParent(sourceFile, parent);
-				this.treeContainer.updateItem(parent);
-			}
-		} catch (Exception e) {
-			String error = "Failed to rename " + sourceFile + " to: " + dest + System.lineSeparator() + e.getLocalizedMessage();
-			logger.error(error);
-			AdminNotification.error(error);
-		}
-	}
-
-	@Override
-	public AcceptCriterion getAcceptCriterion() {
-        return AcceptAll.get();
-	}
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("100%");
-		mainLayout.setHeight("100%");
-		mainLayout.setMargin(false);
-		
-		// top-level component properties
-		setWidth("100.0%");
-		setHeight("100.0%");
-		
-		// horizontalSplitPanel
-		horizontalSplitPanel = buildHorizontalSplitPanel();
-		mainLayout.addComponent(horizontalSplitPanel);
-		mainLayout.setExpandRatio(horizontalSplitPanel, 1.0f);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalSplitPanel buildHorizontalSplitPanel() {
-		// common part: create layout
-		horizontalSplitPanel = new HorizontalSplitPanel();
-		horizontalSplitPanel.setImmediate(false);
-		horizontalSplitPanel.setWidth("100.0%");
-		horizontalSplitPanel.setHeight("100.0%");
-		
-		// verticalLayoutLeftPanel
-		verticalLayoutLeftPanel = buildVerticalLayoutLeftPanel();
-		horizontalSplitPanel.addComponent(verticalLayoutLeftPanel);
-		
-		// verticalLayoutRightPanel
-		verticalLayoutRightPanel = buildVerticalLayoutRightPanel();
-		horizontalSplitPanel.addComponent(verticalLayoutRightPanel);
-		
-		return horizontalSplitPanel;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildVerticalLayoutLeftPanel() {
-		// common part: create layout
-		verticalLayoutLeftPanel = new VerticalLayout();
-		verticalLayoutLeftPanel.setImmediate(false);
-		verticalLayoutLeftPanel.setWidth("100.0%");
-		verticalLayoutLeftPanel.setHeight("100.0%");
-		verticalLayoutLeftPanel.setMargin(true);
-		verticalLayoutLeftPanel.setSpacing(true);
-		
-		// horizontalLayoutLeftToolbar
-		horizontalLayoutLeftToolbar = buildHorizontalLayoutLeftToolbar();
-		verticalLayoutLeftPanel.addComponent(horizontalLayoutLeftToolbar);
-		
-		// treeWorkspace
-		treeWorkspace = new TreeTable();
-		treeWorkspace.setImmediate(true);
-		treeWorkspace.setWidth("100.0%");
-		treeWorkspace.setHeight("100.0%");
-		verticalLayoutLeftPanel.addComponent(treeWorkspace);
-		verticalLayoutLeftPanel.setExpandRatio(treeWorkspace, 1.0f);
-		
-		return verticalLayoutLeftPanel;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayoutLeftToolbar() {
-		// common part: create layout
-		horizontalLayoutLeftToolbar = new HorizontalLayout();
-		horizontalLayoutLeftToolbar.setImmediate(false);
-		horizontalLayoutLeftToolbar.setWidth("100.0%");
-		horizontalLayoutLeftToolbar.setHeight("-1px");
-		horizontalLayoutLeftToolbar.setMargin(false);
-		horizontalLayoutLeftToolbar.setSpacing(true);
-		
-		// horizontalLayoutLeftToolbarLeft
-		horizontalLayoutLeftToolbarLeft = buildHorizontalLayoutLeftToolbarLeft();
-		horizontalLayoutLeftToolbar
-				.addComponent(horizontalLayoutLeftToolbarLeft);
-		
-		// buttonLeft
-		buttonLeft = new Button();
-		buttonLeft.setCaption("<<");
-		buttonLeft.setImmediate(true);
-		buttonLeft.setDescription("Minimize left panel.");
-		buttonLeft.setWidth("-1px");
-		buttonLeft.setHeight("-1px");
-		horizontalLayoutLeftToolbar.addComponent(buttonLeft);
-		horizontalLayoutLeftToolbar.setComponentAlignment(buttonLeft,
-				new Alignment(34));
-		
-		return horizontalLayoutLeftToolbar;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayoutLeftToolbarLeft() {
-		// common part: create layout
-		horizontalLayoutLeftToolbarLeft = new HorizontalLayout();
-		horizontalLayoutLeftToolbarLeft.setImmediate(false);
-		horizontalLayoutLeftToolbarLeft.setWidth("-1px");
-		horizontalLayoutLeftToolbarLeft.setHeight("-1px");
-		horizontalLayoutLeftToolbarLeft.setMargin(false);
-		horizontalLayoutLeftToolbarLeft.setSpacing(true);
-		
-		// buttonSynchronize
-		buttonSynchronize = new Button();
-		buttonSynchronize.setCaption("Synchronize Repository");
-		buttonSynchronize.setImmediate(true);
-		buttonSynchronize
-				.setDescription("Synchronize local repository with main branch.");
-		buttonSynchronize.setWidth("-1px");
-		buttonSynchronize.setHeight("-1px");
-		horizontalLayoutLeftToolbarLeft.addComponent(buttonSynchronize);
-		
-		// buttonExport
-		buttonExport = new Button();
-		buttonExport.setCaption("Export Workspace");
-		buttonExport.setImmediate(true);
-		buttonExport.setDescription("Export your workspace to your local drive.");
-		buttonExport.setWidth("-1px");
-		buttonExport.setHeight("-1px");
-		horizontalLayoutLeftToolbarLeft.addComponent(buttonExport);
-		
-		return horizontalLayoutLeftToolbarLeft;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildVerticalLayoutRightPanel() {
-		// common part: create layout
-		verticalLayoutRightPanel = new VerticalLayout();
-		verticalLayoutRightPanel.setImmediate(false);
-		verticalLayoutRightPanel.setWidth("100.0%");
-		verticalLayoutRightPanel.setHeight("-1px");
-		verticalLayoutRightPanel.setMargin(true);
-		verticalLayoutRightPanel.setSpacing(true);
-		
-		// horizontalLayoutRightToolbar
-		horizontalLayoutRightToolbar = buildHorizontalLayoutRightToolbar();
-		verticalLayoutRightPanel.addComponent(horizontalLayoutRightToolbar);
-		
-		// tabSheet
-		tabSheet = new TabSheet();
-		tabSheet.setImmediate(true);
-		tabSheet.setWidth("100.0%");
-		tabSheet.setHeight("-1px");
-		verticalLayoutRightPanel.addComponent(tabSheet);
-		verticalLayoutRightPanel.setExpandRatio(tabSheet, 1.0f);
-		
-		return verticalLayoutRightPanel;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayoutRightToolbar() {
-		// common part: create layout
-		horizontalLayoutRightToolbar = new HorizontalLayout();
-		horizontalLayoutRightToolbar.setImmediate(false);
-		horizontalLayoutRightToolbar.setWidth("100.0%");
-		horizontalLayoutRightToolbar.setHeight("-1px");
-		horizontalLayoutRightToolbar.setMargin(false);
-		horizontalLayoutRightToolbar.setSpacing(true);
-		
-		// buttonRight
-		buttonRight = new Button();
-		buttonRight.setCaption(">>");
-		buttonRight.setImmediate(true);
-		buttonRight.setDescription("Restore left panel.");
-		buttonRight.setWidth("-1px");
-		buttonRight.setHeight("-1px");
-		horizontalLayoutRightToolbar.addComponent(buttonRight);
-		
-		return horizontalLayoutRightToolbar;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/Simulator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/Simulator.java
deleted file mode 100644
index c554568..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/Simulator.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.components;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.annotations.Theme;
-import com.vaadin.server.VaadinRequest;
-import com.vaadin.ui.AbsoluteLayout;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.UI;
-
-public class Simulator extends CustomComponent {
-
-	@AutoGenerated
-	private AbsoluteLayout mainLayout;
-
-	private static final long serialVersionUID = 1L;
-
-	@Theme("xacml_pap_admin")
-	public static class SimulatorUI extends UI {
-		private static final long serialVersionUID = 1L;
-
-		@Override
-		protected void init(VaadinRequest request) {
-			// TODO Auto-generated method stub
-
-		}
-
-	}
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public Simulator() {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-
-		// TODO add user code here
-	}
-
-	@AutoGenerated
-	private void buildMainLayout() {
-		// the main layout and components will be created here
-		mainLayout = new AbsoluteLayout();
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/UserManagement.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/UserManagement.java
deleted file mode 100644
index a883dec..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/UserManagement.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.components;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.VerticalLayout;
-
-public class UserManagement extends CustomComponent {
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Table tableUsers;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayoutToolbar;
-	@AutoGenerated
-	private Button buttonRemove;
-	@AutoGenerated
-	private Button buttonAdd;
-	private static final long serialVersionUID = 1L;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public UserManagement() {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-
-		// TODO add user code here
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("100%");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(false);
-		
-		// top-level component properties
-		setWidth("100.0%");
-		setHeight("-1px");
-		
-		// horizontalLayoutToolbar
-		horizontalLayoutToolbar = buildHorizontalLayoutToolbar();
-		mainLayout.addComponent(horizontalLayoutToolbar);
-		
-		// tableUsers
-		tableUsers = new Table();
-		tableUsers.setImmediate(false);
-		tableUsers.setWidth("100.0%");
-		tableUsers.setHeight("-1px");
-		mainLayout.addComponent(tableUsers);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayoutToolbar() {
-		// common part: create layout
-		horizontalLayoutToolbar = new HorizontalLayout();
-		horizontalLayoutToolbar.setImmediate(false);
-		horizontalLayoutToolbar.setWidth("-1px");
-		horizontalLayoutToolbar.setHeight("-1px");
-		horizontalLayoutToolbar.setMargin(true);
-		horizontalLayoutToolbar.setSpacing(true);
-		
-		// buttonAdd
-		buttonAdd = new Button();
-		buttonAdd.setCaption("Add User");
-		buttonAdd.setImmediate(false);
-		buttonAdd.setWidth("-1px");
-		buttonAdd.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonAdd);
-		
-		// buttonRemove
-		buttonRemove = new Button();
-		buttonRemove.setCaption("Remove User");
-		buttonRemove.setImmediate(false);
-		buttonRemove.setWidth("-1px");
-		buttonRemove.setHeight("-1px");
-		horizontalLayoutToolbar.addComponent(buttonRemove);
-		
-		return horizontalLayoutToolbar;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/package-info.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/package-info.java
deleted file mode 100644
index 947702e..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/components/package-info.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-/**
- * 
- */
-/**
- * @author pameladragosh
- *
- */
-package org.apache.openaz.xacml.admin.components;
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/CategoryConverter.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/CategoryConverter.java
deleted file mode 100644
index 4229a4e..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/CategoryConverter.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.converters;
-
-import java.util.Locale;
-
-import org.apache.openaz.xacml.admin.jpa.Category;
-import org.apache.openaz.xacml.api.Identifier;
-import com.vaadin.data.util.converter.Converter;
-
-public class CategoryConverter implements Converter<Object, Category> {
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public Category convertToModel(Object value,
-			Class<? extends Category> targetType, Locale locale)
-			throws Converter.ConversionException {
-		Category category = new Category();
-		if (value == null) {
-			return category;
-		}
-		if (value instanceof Identifier) {
-			category.setXacmlId(((Identifier)value).stringValue());
-		} else {
-			category.setXacmlId(value.toString());
-		}
-		return category;
-	}
-
-	@Override
-	public Object convertToPresentation(Category value,
-			Class<? extends Object> targetType, Locale locale)
-			throws Converter.ConversionException {
-		if (targetType.getName().equals(String.class.getName())) {
-			return value.getXacmlId();
-		}
-		if (targetType.getName().equals(Identifier.class.getName())) {
-			return value.getIdentifer();
-		}
-		return value.getIdentifer();
-	}
-
-	@Override
-	public Class<Category> getModelType() {
-		return Category.class;
-	}
-
-	@Override
-	public Class<Object> getPresentationType() {
-		return Object.class;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/ConstraintTypeConverter.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/ConstraintTypeConverter.java
deleted file mode 100644
index c6705ca..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/ConstraintTypeConverter.java
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.converters;
-
-import java.util.Locale;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.ConstraintType;
-import com.vaadin.data.util.converter.Converter;
-
-public class ConstraintTypeConverter  implements Converter<Object, ConstraintType> {
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(ConstraintTypeConverter.class);
-
-	@Override
-	public ConstraintType convertToModel(Object value,
-			Class<? extends ConstraintType> targetType, Locale locale)
-			throws Converter.ConversionException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("convertToModel:" + value + " target " + targetType);
-		}
-		ConstraintType constraintValue = new ConstraintType();
-		if (value == null) {
-			return constraintValue;
-		}
-		// PLD TODO??
-		return constraintValue;
-	}
-
-	@Override
-	public Object convertToPresentation(ConstraintType value,
-			Class<? extends Object> targetType, Locale locale)
-			throws Converter.ConversionException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("convertToPresentation:" + value + " target " + targetType);
-		}
-		if (value == null) {
-			return null;
-		}
-		if (targetType.isAssignableFrom(String.class)) {
-			return value.getConstraintType();
-		}
-		if (targetType.isInstance(Integer.class)) {
-			return value.getId();
-		}
-		return null;
-	}
-
-	@Override
-	public Class<ConstraintType> getModelType() {
-		return ConstraintType.class;
-	}
-
-	@Override
-	public Class<Object> getPresentationType() {
-		return Object.class;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/ConstraintValueConverter.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/ConstraintValueConverter.java
deleted file mode 100644
index 03c76be..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/ConstraintValueConverter.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.converters;
-
-import java.util.Locale;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.ConstraintValue;
-import com.vaadin.data.util.converter.Converter;
-
-public class ConstraintValueConverter implements Converter<Object, ConstraintValue> {
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(ConstraintValueConverter.class);
-	
-	@Override
-	public ConstraintValue convertToModel(Object value,
-			Class<? extends ConstraintValue> targetType, Locale locale)
-			throws Converter.ConversionException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("convertToModel:" + value + " target " + targetType);
-		}
-		ConstraintValue newValue = new ConstraintValue();
-		if (value == null) {
-			return newValue;
-		}
-		// PLD TODO?
-		return newValue;
-	}
-
-	@Override
-	public Object convertToPresentation(ConstraintValue value,
-			Class<? extends Object> targetType, Locale locale)
-			throws Converter.ConversionException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("convertToPresentation:" + value + " target " + targetType);
-		}
-		if (value == null) {
-			return null;
-		}
-		return value.getProperty();
-	}
-
-	@Override
-	public Class<ConstraintValue> getModelType() {
-		return ConstraintValue.class;
-	}
-
-	@Override
-	public Class<Object> getPresentationType() {
-		return Object.class;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/DatatypeConverter.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/DatatypeConverter.java
deleted file mode 100644
index 8817428..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/DatatypeConverter.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.converters;
-
-import java.util.Locale;
-
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.api.Identifier;
-import com.vaadin.data.util.converter.Converter;
-
-public class DatatypeConverter implements Converter<Object, Datatype> {
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public Datatype convertToModel(Object value,
-			Class<? extends Datatype> targetType, Locale locale)
-			throws Converter.ConversionException {
-		Datatype datatype = new Datatype();
-		if (value == null) {
-			return datatype;
-		}
-		if (value instanceof Identifier) {
-			datatype.setXacmlId(((Identifier)value).stringValue());
-		} else {
-			datatype.setXacmlId(value.toString());
-		}
-		return datatype;
-	}
-
-	@Override
-	public Object convertToPresentation(Datatype value,
-			Class<? extends Object> targetType, Locale locale)
-			throws Converter.ConversionException {
-		if (value == null) {
-			return null;
-		}
-		if (targetType.isInstance(String.class) ||
-			targetType.getName().equals(String.class.getName())) {
-			return value.getXacmlId();
-		}
-		if (targetType.isInstance(Identifier.class) ||
-			targetType.getName().equals(Identifier.class.getName())) {
-			return value.getIdentifer();
-		}
-		return value.getIdentifer();
-	}
-
-	@Override
-	public Class<Datatype> getModelType() {
-		return Datatype.class;
-	}
-
-	@Override
-	public Class<Object> getPresentationType() {
-		return Object.class;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/IdentifierConverter.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/IdentifierConverter.java
deleted file mode 100644
index 07b810d..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/IdentifierConverter.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.converters;
-
-import java.util.Locale;
-
-import org.apache.openaz.xacml.api.Identifier;
-import org.apache.openaz.xacml.std.IdentifierImpl;
-import com.vaadin.data.util.converter.Converter;
-
-
-public class IdentifierConverter implements Converter<Object, Identifier> {
-	private static final long serialVersionUID = 1L;
-
-	@Override
-	public Identifier convertToModel(Object value,
-			Class<? extends Identifier> targetType, Locale locale)
-			throws Converter.ConversionException {
-		return new IdentifierImpl(value.toString());
-	}
-
-	@Override
-	public Object convertToPresentation(Identifier value,
-			Class<? extends Object> targetType, Locale locale)
-			throws Converter.ConversionException {
-		if (targetType.isInstance(String.class) ||
-			targetType.getName().equals(String.class.getName())) {
-			return value.stringValue();
-		}
-		return null;
-	}
-
-	@Override
-	public Class<Identifier> getModelType() {
-		return Identifier.class;
-	}
-
-	@Override
-	public Class<Object> getPresentationType() {
-		return Object.class;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/XacmlConverterFactory.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/XacmlConverterFactory.java
deleted file mode 100644
index 32fb8bf..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/converters/XacmlConverterFactory.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.converters;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.Category;
-import org.apache.openaz.xacml.admin.jpa.ConstraintType;
-import org.apache.openaz.xacml.admin.jpa.ConstraintValue;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.api.Identifier;
-import com.vaadin.data.util.converter.Converter;
-import com.vaadin.data.util.converter.DefaultConverterFactory;
-
-public class XacmlConverterFactory extends DefaultConverterFactory {
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(XacmlConverterFactory.class);
-	
-    @SuppressWarnings("unchecked")
-	@Override
-    public <PRESENTATION, MODEL> Converter<PRESENTATION, MODEL>
-            createConverter(Class<PRESENTATION> presentationType,
-                            Class<MODEL> modelType) {
-    	if (logger.isTraceEnabled()) {
-    		logger.trace("createConverter: " + presentationType + " from model " + modelType);
-    	}
-    	//
-        // Handle one particular type conversion for Categories
-    	//
-        if (Category.class == modelType) {
-            return (Converter<PRESENTATION, MODEL>) new CategoryConverter();
-        }
-        //
-        // Handle one particular type conversion for Datatypes
-        //
-        if (Datatype.class == modelType) {
-            return (Converter<PRESENTATION, MODEL>) new DatatypeConverter();
-        }
-        //
-        // Handle one particular type conversion for ConstraintType
-        //
-        if (ConstraintType.class == modelType) {
-        	return (Converter<PRESENTATION, MODEL>) new ConstraintTypeConverter();
-        }
-        //
-        // Handle one particular type conversion for ConstraintType
-        //
-        if (ConstraintValue.class == modelType) {
-        	return (Converter<PRESENTATION, MODEL>) new ConstraintValueConverter();
-        }
-        //
-        // Handle one particular type conversion for Identifiers
-        //
-        if (Identifier.class == modelType) {
-        	return (Converter<PRESENTATION, MODEL>) new IdentifierConverter();
-        }
-        //
-        // Default to the supertype
-        //
-        return super.createConverter(presentationType,
-                                     modelType);
-    }
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/Attribute.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/Attribute.java
deleted file mode 100644
index 84ec82a..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/Attribute.java
+++ /dev/null
@@ -1,327 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.PrePersist;
-import javax.persistence.PreUpdate;
-import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-import javax.persistence.Transient;
-
-import org.apache.openaz.xacml.api.Identifier;
-import org.apache.openaz.xacml.std.IdentifierImpl;
-
-
-/**
- * The persistent class for the Attribute database table.
- * 
- */
-@Entity
-@Table(name="Attribute")
-@NamedQuery(name="Attribute.findAll", query="SELECT a FROM Attribute a")
-public class Attribute implements Serializable {
-	private static final long serialVersionUID = 1L;
-	
-	public static String	ATTRIBUTE_DESIGNATOR = "Attribute Designator";
-	public static String	ATTRIBUTE_SELECTOR = "Attribute Selector";
-
-	@Id
-	@GeneratedValue(strategy = GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	//bi-directional many-to-one association to Category
-	@ManyToOne
-	@JoinColumn(name="constraint_type", nullable=true)
-	private ConstraintType constraintType;
-
-	@Column(name="created_by", nullable=false, length=255)
-	private String createdBy = "guest";
-
-	@Temporal(TemporalType.TIMESTAMP)
-	@Column(name="created_date", updatable=false)
-	private Date createdDate;
-
-	@Column(name="description", nullable=true, length=2048)
-	private String description;
-
-	@Column(name="modified_by", nullable=false, length=255)
-	private String modifiedBy = "guest";
-
-	@Temporal(TemporalType.TIMESTAMP)
-	@Column(name="modified_date", nullable=false)
-	private Date modifiedDate;
-
-	@Column(name="xacml_id", nullable=false)
-	private String xacmlId = "urn";
-
-	//bi-directional many-to-one association to ConstraintValue
-	@OneToMany(mappedBy="attribute", orphanRemoval=true, cascade=CascadeType.REMOVE)
-	private Set<ConstraintValue> constraintValues = new HashSet<ConstraintValue>();
-
-	//bi-directional many-to-one association to Category
-	@ManyToOne
-	@JoinColumn(name="category")
-	private Category categoryBean;
-
-	//bi-directional many-to-one association to Datatype
-	@ManyToOne
-	@JoinColumn(name="datatype")
-	private Datatype datatypeBean;
-
-	@Column(name="is_designator", nullable=false)
-	private char isDesignator = '1';
-
-	@Column(name="selector_path", nullable=true, length=2048)
-	private String selectorPath;
-	
-	@Transient
-	private String issuer = null;
-	
-	@Transient
-	private boolean mustBePresent = false;
-
-	public Attribute() {
-	}
-	
-	public Attribute(String domain) {
-		this.xacmlId = domain;
-	}
-	
-	public Attribute(String domain, String user) {
-		this(domain);
-		this.createdBy = user;
-		this.modifiedBy = user;
-	}
-	public Attribute(Attribute copy, String user) {
-		this(copy.getXacmlId() + ":(0)", user);
-		this.constraintType = copy.getConstraintType();
-		this.categoryBean = copy.getCategoryBean();
-		this.datatypeBean = copy.getDatatypeBean();
-		this.description = copy.getDescription();
-		for (ConstraintValue value : copy.getConstraintValues()) {
-			ConstraintValue newValue = new ConstraintValue(value);
-			newValue.setAttribute(this);
-			this.addConstraintValue(newValue);
-		}
-	}
-
-	@PrePersist
-	public void	prePersist() {
-		Date date = new Date();
-		this.createdDate = date;
-		this.modifiedDate = date;
-	}
-	
-	@PreUpdate
-	public void preUpdate() {
-		this.modifiedDate = new Date();
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public ConstraintType getConstraintType() {
-		return this.constraintType;
-	}
-
-	public void setConstraintType(ConstraintType constraintType) {
-		this.constraintType = constraintType;
-	}
-
-	public String getCreatedBy() {
-		return this.createdBy;
-	}
-
-	public void setCreatedBy(String createdBy) {
-		this.createdBy = createdBy;
-	}
-
-	public Date getCreatedDate() {
-		return this.createdDate;
-	}
-
-	public void setCreatedDate(Date createdDate) {
-		this.createdDate = createdDate;
-	}
-
-	public String getDescription() {
-		return this.description;
-	}
-
-	public void setDescription(String description) {
-		this.description = description;
-	}
-
-	public String getModifiedBy() {
-		return this.modifiedBy;
-	}
-
-	public void setModifiedBy(String modifiedBy) {
-		this.modifiedBy = modifiedBy;
-	}
-
-	public Date getModifiedDate() {
-		return this.modifiedDate;
-	}
-
-	public void setModifiedDate(Date modifiedDate) {
-		this.modifiedDate = modifiedDate;
-	}
-
-	public String getXacmlId() {
-		return this.xacmlId;
-	}
-	
-	@Transient
-	public Identifier getXacmlIdentifier() {
-		return new IdentifierImpl(this.xacmlId);
-	}
-
-	public void setXacmlId(String xacmlId) {
-		this.xacmlId = xacmlId;
-	}
-
-	public Set<ConstraintValue> getConstraintValues() {
-		return this.constraintValues;
-	}
-
-	public void setConstraintValues(Set<ConstraintValue> constraintValues) {
-		for (ConstraintValue value : this.constraintValues) {
-			value.setAttribute(this);
-		}
-		this.constraintValues = constraintValues;
-	}
-
-	public ConstraintValue addConstraintValue(ConstraintValue constraintValue) {
-		if (this.constraintValues == null) {
-			this.constraintValues = new HashSet<ConstraintValue>();
-		}
-		this.constraintValues.add(constraintValue);
-		constraintValue.setAttribute(this);
-
-		return constraintValue;
-	}
-
-	public ConstraintValue removeConstraintValue(ConstraintValue constraintValue) {
-		this.constraintValues.remove(constraintValue);
-		constraintValue.setAttribute(null);
-
-		return constraintValue;
-	}
-	
-	public void removeAllConstraintValues() {
-		if (this.constraintValues == null) {
-			return;
-		}
-		for (ConstraintValue value : this.constraintValues) {
-			value.setAttribute(null);
-		}
-		this.constraintValues.clear();
-	}
-
-	public Category getCategoryBean() {
-		return this.categoryBean;
-	}
-
-	public void setCategoryBean(Category categoryBean) {
-		this.categoryBean = categoryBean;
-	}
-
-	public Datatype getDatatypeBean() {
-		return this.datatypeBean;
-	}
-
-	public void setDatatypeBean(Datatype datatypeBean) {
-		this.datatypeBean = datatypeBean;
-	}
-
-	public char getIsDesignator() {
-		return this.isDesignator;
-	}
-	
-	public void setIsDesignator(char is) {
-		this.isDesignator = is;
-	}
-	
-	public String getSelectorPath() {
-		return this.selectorPath;
-	}
-	
-	public void setSelectorPath(String path) {
-		this.selectorPath = path;
-	}
-	
-	@Transient
-	public String getIssuer() {
-		return issuer;
-	}
-
-	@Transient
-	public void setIssuer(String issuer) {
-		this.issuer = issuer;
-	}
-
-	@Transient
-	public boolean isMustBePresent() {
-		return mustBePresent;
-	}
-
-	@Transient
-	public void setMustBePresent(boolean mustBePresent) {
-		this.mustBePresent = mustBePresent;
-	}
-
-	@Transient
-	public boolean isDesignator() {
-		return this.isDesignator == '1';
-	}
-	
-	@Transient
-	public void setIsDesignator(boolean is) {
-		if (is) {
-			this.isDesignator = '1';
-		} else {
-			this.isDesignator = '0';
-		}
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/AttributeAssignment.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/AttributeAssignment.java
deleted file mode 100644
index 344b7f8..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/AttributeAssignment.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-
-
-/**
- * The persistent class for the ObadviceExpressions database table.
- * 
- */
-@Entity
-@Table(name="AttributeAssignment")
-@NamedQuery(name="AttributeAssignment.findAll", query="SELECT a FROM AttributeAssignment a")
-public class AttributeAssignment implements Serializable {
-	private static final long serialVersionUID = 1L;
-
-	public static final String EXPRESSION_APPLY = "Apply";
-	public static final String EXPRESSION_SELECTOR = "AttributeSelector";
-	public static final String EXPRESSION_VALUE = "AttributeValue";
-	public static final String EXPRESSION_FUNCTION = "Function";
-	public static final String EXPRESSION_REFERENCE = "VarableReference";
-	public static final String EXPRESSION_DESIGNATOR = "AttributeDesignator";
-
-	@Id
-	@GeneratedValue(strategy = GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="attribute_id")
-	private int attributeId;
-
-	//bi-directional many-to-one association to Obadvice
-	@Column(name="expression", nullable=false)
-	private String expression;
-
-	//bi-directional many-to-one association to Obadvice
-	@ManyToOne
-	private Obadvice obadvice; //NOPMD
-
-	public AttributeAssignment() {
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public int getAttributeId() {
-		return this.attributeId;
-	}
-
-	public void setAttributeId(int attributeId) {
-		this.attributeId = attributeId;
-	}
-
-	public String getExpression() {
-		return expression;
-	}
-
-	public void setExpression(String expression) {
-		this.expression = expression;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/Category.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/Category.java
deleted file mode 100644
index fdcbd3d..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/Category.java
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-
-import org.apache.openaz.xacml.api.Identifier;
-import org.apache.openaz.xacml.api.XACML3;
-import org.apache.openaz.xacml.std.IdentifierImpl;
-
-
-/**
- * The persistent class for the Categories database table.
- * 
- */
-@Entity
-@Table(name="Category")
-@NamedQuery(name="Category.findAll", query="SELECT c FROM Category c")
-public class Category implements Serializable {
-	private static final long serialVersionUID = 1L;
-	
-	public static final char STANDARD = 'S';
-	public static final char CUSTOM = 'C';
-
-	@Id
-	@GeneratedValue(strategy = GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="grouping", nullable=false, length=64)
-	private String grouping;
-
-	@Column(name="is_standard", nullable=false)
-	private char isStandard;
-
-	@Column(name="xacml_id", nullable=false, unique=true, length=255)
-	private String xacmlId;
-	
-	@Column(name="short_name", nullable=false, length=64)
-	private String shortName;
-	
-	//bi-directional many-to-one association to Attribute
-	@OneToMany(mappedBy="categoryBean")
-	private Set<Attribute> attributes = new HashSet<>();
-
-	public Category() {
-		this.xacmlId = XACML3.ID_SUBJECT_CATEGORY_ACCESS_SUBJECT.stringValue();
-		this.grouping = "subject";
-		this.isStandard = Category.STANDARD;
-		this.shortName = "subject";
-	}
-
-	public Category(Identifier cat, String grouping, char isStandard) {
-		if (cat != null) {
-			this.xacmlId = cat.stringValue();
-		}
-		this.isStandard = isStandard;
-		if (grouping != null) {
-			this.grouping = grouping;
-		} else {
-			this.grouping = Category.extractGrouping(this.xacmlId);
-		}
-	}
-
-	public Category(Identifier cat, String grouping) {
-		this(cat, grouping, Category.STANDARD);
-	}
-
-	public Category(Identifier cat, char standard) {
-		this(cat, null, standard);
-	}
-
-	public Category(Identifier cat) {
-		this(cat, Category.STANDARD);
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public String getGrouping() {
-		return this.grouping;
-	}
-
-	public void setGrouping(String grouping) {
-		this.grouping = grouping;
-	}
-
-	public char getIsStandard() {
-		return this.isStandard;
-	}
-
-	public void setIsStandard(char isStandard) {
-		this.isStandard = isStandard;
-	}
-
-	public String getXacmlId() {
-		return this.xacmlId;
-	}
-
-	public void setXacmlId(String xacmlId) {
-		this.xacmlId = xacmlId;
-	}
-
-	public String getShortName() {
-		return this.shortName;
-	}
-
-	public void setShortName(String shortName) {
-		this.shortName = shortName;
-	}
-
-	public Set<Attribute> getAttributes() {
-		return this.attributes;
-	}
-
-	public void setAttributes(Set<Attribute> attributes) {
-		this.attributes = attributes;
-	}
-
-	public Attribute addAttribute(Attribute attribute) {
-		getAttributes().add(attribute);
-		attribute.setCategoryBean(this);
-
-		return attribute;
-	}
-
-	public Attribute removeAttribute(Attribute attribute) {
-		getAttributes().remove(attribute);
-		attribute.setCategoryBean(null);
-
-		return attribute;
-	}
-
-	@Transient
-	public boolean isStandard() {
-		return this.isStandard == Category.STANDARD;
-	}
-	
-	@Transient
-	public boolean isCustom() {
-		return this.isStandard == Category.CUSTOM;
-	}
-	
-	@Transient
-	public static String	extractGrouping(String xacmlId) {
-		if (xacmlId == null) {
-			return null;
-		}
-		if (xacmlId.matches(".*:attribute\\-category:.*")) {
-			String[] parts = xacmlId.split("[:]");
-			if (parts != null && parts.length > 0) {
-				return parts[parts.length - 1];
-			}
-		} else if (xacmlId.matches(".*:[a-zA-Z]+[\\-]category:.*")) {
-			String[] parts = xacmlId.split("[:]");
-			if (parts != null && parts.length > 0) {
-				for (String part : parts) {
-					int index = part.indexOf("-category");
-					if (index > 0) {
-						return part.substring(0, index);
-					}
-				}
-			}
-		}
-		return null;
-	}
-	
-	@Transient
-	public Identifier getIdentifer() {
-		return new IdentifierImpl(this.xacmlId);
-	}
-
-	@Transient
-	@Override
-	public String toString() {
-		return "Category [id=" + id + ", grouping=" + grouping
-				+ ", isStandard=" + isStandard + ", xacmlId=" + xacmlId
-				+ ", attributes=" + attributes + "]";
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/ConstraintType.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/ConstraintType.java
deleted file mode 100644
index 14b9008..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/ConstraintType.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-
-@Entity
-@Table(name="ConstraintType")
-@NamedQuery(name="ConstraintType.findAll", query="SELECT a FROM ConstraintType a")
-public class ConstraintType implements Serializable {
-	private static final long serialVersionUID = 1L;
-	
-	public static String ENUMERATION_TYPE = "Enumeration";
-	public static String RANGE_TYPE = "Range";
-	public static String REGEXP_TYPE = "Regular Expression";
-	
-	public static Map<String, String> defaults = new HashMap<String, String>();
-	static {
-		defaults.put(ENUMERATION_TYPE, "Enumerate a set of values that the attribute may be set to during policy creation.");
-		defaults.put(RANGE_TYPE, "Set a range of min and/or max integer/double values the attribute can be set to during policy creation.");
-		defaults.put(REGEXP_TYPE, "Define a regular expression the attribute must match against during policy creation.");
-	}
-	public static final String[] RANGE_TYPES = {"minExclusive", "minInclusive", "maxExclusive", "maxInclusive"};
-	
-	@Id
-	@GeneratedValue(strategy = GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="constraint_type", nullable=false, length=64)
-	private String constraintType;
-	
-	@Column(name="description", nullable=false, length=255)
-	private String description;
-
-	//bi-directional many-to-one association to Attribute
-	@OneToMany(mappedBy="constraintType")
-	private Set<Attribute> attributes = new HashSet<>();
-
-	public ConstraintType() {
-		
-	}
-
-	public ConstraintType(String constraintType) {
-		this();
-		this.constraintType = constraintType;
-	}
-	
-	public ConstraintType(String constraintType, String description) {
-		this(constraintType);
-		this.description = description;
-	}
-
-	public int getId() {
-		return id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public String getConstraintType() {
-		return constraintType;
-	}
-
-	public void setConstraintType(String constraintType) {
-		this.constraintType = constraintType;
-	}
-
-	public String getDescription() {
-		return description;
-	}
-
-	public void setDescription(String description) {
-		this.description = description;
-	}
-
-	public Set<Attribute> getAttributes() {
-		return attributes;
-	}
-
-	public void setAttributes(Set<Attribute> attributes) {
-		this.attributes = attributes;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/ConstraintValue.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/ConstraintValue.java
deleted file mode 100644
index e1f66d4..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/ConstraintValue.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-
-
-/**
- * The persistent class for the ConstraintValues database table.
- * 
- */
-@Entity
-@Table(name="ConstraintValues")
-@NamedQuery(name="ConstraintValue.findAll", query="SELECT c FROM ConstraintValue c")
-public class ConstraintValue implements Serializable {
-	private static final long serialVersionUID = 1L;
-
-	@Id
-	@GeneratedValue(strategy = GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="property")
-	private String property;
-
-	@Column(name="value")
-	private String value;
-
-	//bi-directional many-to-one association to Attribute
-	@ManyToOne
-	@JoinColumn(name="attribute_id")
-	private Attribute attribute;
-
-	public ConstraintValue() {
-	}
-
-	public ConstraintValue(String property, String value) {
-		this.property = property;
-		this.value = value;
-	}
-	
-	public ConstraintValue(ConstraintValue value) {
-		this.property = value.getProperty();
-		this.value = value.getValue();
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public String getProperty() {
-		return this.property;
-	}
-
-	public void setProperty(String property) {
-		this.property = property;
-	}
-
-	public String getValue() {
-		return this.value;
-	}
-
-	public void setValue(String value) {
-		this.value = value;
-	}
-
-	public Attribute getAttribute() {
-		return this.attribute;
-	}
-
-	public void setAttribute(Attribute attribute) {
-		this.attribute = attribute;
-	}
-	
-	public ConstraintValue clone() {
-		ConstraintValue constraint = new ConstraintValue();
-		
-		constraint.property = this.property;
-		constraint.value = this.value;
-		constraint.attribute = this.attribute;
-		
-		return constraint;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/Datatype.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/Datatype.java
deleted file mode 100644
index 50d4488..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/Datatype.java
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-
-import org.apache.openaz.xacml.api.Identifier;
-import org.apache.openaz.xacml.api.XACML3;
-import org.apache.openaz.xacml.std.IdentifierImpl;
-
-
-/**
- * The persistent class for the Datatype database table.
- * 
- */
-@Entity
-@Table(name="Datatype")
-@NamedQuery(name="Datatype.findAll", query="SELECT d FROM Datatype d")
-public class Datatype implements Serializable {
-	private static final long serialVersionUID = 1L;
-	
-	public static final char STANDARD = 'S';
-	public static final char CUSTOM = 'C';
-
-	@Id
-	@GeneratedValue(strategy = GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="is_standard", nullable=false)
-	private char isStandard;
-
-	@Column(name="xacml_id", nullable=false, unique=true, length=255)
-	private String xacmlId;
-
-	@Column(name="short_name", nullable=false, length=64)
-	private String shortName;
-
-	//bi-directional many-to-one association to Attribute
-	@OneToMany(mappedBy="datatypeBean")
-	private Set<Attribute> attributes = new HashSet<>();
-
-	//bi-directional many-to-one association to Attribute
-	@OneToMany(mappedBy="datatypeBean")
-	private Set<FunctionDefinition> functions = new HashSet<>();
-
-	//bi-directional many-to-one association to Attribute
-	@OneToMany(mappedBy="datatypeBean")
-	private Set<FunctionArgument> arguments = new HashSet<>();
-
-	public Datatype() {
-		this.xacmlId = XACML3.ID_DATATYPE_STRING.stringValue();
-		this.isStandard = Datatype.STANDARD;
-	}
-	
-	public Datatype(int id, Datatype dt) {
-		this.id = id;
-		this.isStandard = dt.isStandard;
-		this.xacmlId = dt.xacmlId;
-		this.shortName = dt.shortName;
-		//
-		// Make a copy?
-		//
-		this.attributes = new HashSet<>();
-	}
-	
-	public Datatype(Identifier identifier, char standard) {
-		if (identifier != null) {
-			this.xacmlId = identifier.stringValue();
-		}
-		this.isStandard = standard;
-	}
-	
-	public Datatype(Identifier identifier) {
-		this(identifier, Datatype.STANDARD);
-	}
-	
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public char getIsStandard() {
-		return this.isStandard;
-	}
-
-	public void setIsStandard(char isStandard) {
-		this.isStandard = isStandard;
-	}
-
-	public String getXacmlId() {
-		return this.xacmlId;
-	}
-
-	public void setXacmlId(String xacmlId) {
-		this.xacmlId = xacmlId;
-	}
-
-	public String getShortName() {
-		return shortName;
-	}
-
-	public void setShortName(String shortName) {
-		this.shortName = shortName;
-	}	
-
-	public Set<Attribute> getAttributes() {
-		return this.attributes;
-	}
-
-	public void setAttributes(Set<Attribute> attributes) {
-		this.attributes = attributes;
-	}
-
-	public Attribute addAttribute(Attribute attribute) {
-		getAttributes().add(attribute);
-		attribute.setDatatypeBean(this);
-
-		return attribute;
-	}
-
-	public Attribute removeAttribute(Attribute attribute) {
-		getAttributes().remove(attribute);
-		attribute.setDatatypeBean(null);
-
-		return attribute;
-	}
-
-	public Set<FunctionDefinition> getFunctions() {
-		return this.functions;
-	}
-
-	public void setFunctions(Set<FunctionDefinition> functions) {
-		this.functions = functions;
-	}
-
-	public FunctionDefinition addFunction(FunctionDefinition function) {
-		getFunctions().add(function);
-		function.setDatatypeBean(this);
-
-		return function;
-	}
-
-	public FunctionDefinition removeAttribute(FunctionDefinition function) {
-		getFunctions().remove(function);
-		function.setDatatypeBean(null);
-
-		return function;
-	}
-
-	public Set<FunctionArgument> getArguments() {
-		return this.arguments;
-	}
-
-	public void setArguments(Set<FunctionArgument> argument) {
-		this.arguments = argument;
-	}
-
-	public FunctionArgument addArgument(FunctionArgument argument) {
-		getArguments().add(argument);
-		argument.setDatatypeBean(this);
-
-		return argument;
-	}
-
-	public FunctionArgument removeArgument(FunctionArgument argument) {
-		getArguments().remove(argument);
-		argument.setDatatypeBean(null);
-
-		return argument;
-	}
-
-	@Transient
-	public Identifier getIdentifer() {
-		return new IdentifierImpl(this.xacmlId);
-	}
-
-	@Transient
-	public boolean isStandard() {
-		return this.isStandard == Datatype.STANDARD;
-	}
-	
-	@Transient
-	public boolean isCustom() {
-		return this.isStandard == Datatype.CUSTOM;
-	}
-	
-	@Transient
-	@Override
-	public String toString() {
-		return "Datatype [id=" + id + ", isStandard=" + isStandard
-				+ ", xacmlId=" + xacmlId + ", shortName=" + shortName
-				+ ", attributes=" + attributes + ", functions=" + functions
-				+ ", arguments=" + arguments + "]";
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/FunctionArgument.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/FunctionArgument.java
deleted file mode 100644
index 109e26d..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/FunctionArgument.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-
-import javax.persistence.*;
-
-
-/**
- * The persistent class for the FunctionArguments database table.
- * 
- */
-@Entity
-@Table(name="FunctionArguments")
-@NamedQuery(name="FunctionArgument.findAll", query="SELECT f FROM FunctionArgument f")
-public class FunctionArgument implements Serializable {
-	private static final long serialVersionUID = 1L;
-
-	@Id
-	@GeneratedValue(strategy=GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="is_bag", nullable=false)
-	private int isBag;
-
-	//bi-directional many-to-one association to FunctionDefinition
-	@ManyToOne
-	@JoinColumn(name="function_id")
-	private FunctionDefinition functionDefinition;
-
-	@Column(name="arg_index", nullable=false)
-	private int argIndex;
-
-	//bi-directional many-to-one association to Datatype
-	@ManyToOne
-	@JoinColumn(name="datatype_id")
-	private Datatype datatypeBean;
-
-	public FunctionArgument() {
-	}
-
-	public FunctionArgument(final FunctionArgument argument) {
-		this.argIndex = argument.argIndex;
-		this.datatypeBean = argument.datatypeBean;
-		this.isBag = argument.isBag;
-		this.functionDefinition = argument.functionDefinition;
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public int getArgIndex() {
-		return this.argIndex;
-	}
-
-	public void setArgIndex(int argIndex) {
-		this.argIndex = argIndex;
-	}
-
-	public Datatype getDatatypeBean() {
-		return this.datatypeBean;
-	}
-
-	public void setDatatypeBean(Datatype datatypeBean) {
-		this.datatypeBean = datatypeBean;
-	}
-
-	public FunctionDefinition getFunctionDefinition() {
-		return this.functionDefinition;
-	}
-
-	public int getIsBag() {
-		return isBag;
-	}
-
-	public void setIsBag(int isBag) {
-		this.isBag = isBag;
-	}
-
-	public void setFunctionDefinition(FunctionDefinition functionDefinition) {
-		this.functionDefinition = functionDefinition;
-	}
-
-	@Transient
-	@Override
-	public String toString() {
-		return "FunctionArgument [id=" + id + ", argIndex=" + argIndex
-				+ ", datatypeBean=" + datatypeBean + ", isBag=" + isBag
-				+ ", functionDefinition=" + functionDefinition + "]";
-	}
-	
-	@Transient
-	public boolean isBag() {
-		return this.isBag == 1;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/FunctionDefinition.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/FunctionDefinition.java
deleted file mode 100644
index fc0cc91..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/FunctionDefinition.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-
-import javax.persistence.*;
-
-import java.util.List;
-
-
-/**
- * The persistent class for the FunctionDefinition database table.
- * 
- */
-@Entity
-@Table(name="FunctionDefinition")
-@NamedQuery(name="FunctionDefinition.findAll", query="SELECT f FROM FunctionDefinition f")
-public class FunctionDefinition implements Serializable {
-	private static final long serialVersionUID = 1L;
-
-	@Id
-	@GeneratedValue(strategy=GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="short_name", nullable=false, length=64)
-	private String shortname;
-
-	@Column(name="xacml_id", nullable=false, length=255)
-	private String xacmlid;
-	
-	//bi-directional many-to-one association to Datatype
-	@ManyToOne
-	@JoinColumn(name="return_datatype", nullable=true)
-	private Datatype datatypeBean;
-
-	@Column(name="is_bag_return", nullable=false)
-	private int isBagReturn;
-	
-	@Column(name="is_higher_order", nullable=false)
-	private int isHigherOrder;
-
-	@Column(name="arg_lb", nullable=false)
-	private int argLb;
-
-	@Column(name="arg_ub", nullable=false)
-	private int argUb;
-
-	@Column(name="ho_arg_lb", nullable=true)
-	private int higherOrderArg_LB;
-	
-	@Column(name="ho_arg_ub", nullable=true)
-	private int higherOrderArg_UB;
-	
-	@Column(name="ho_primitive", nullable=true)
-	private char higherOrderIsPrimitive;
-
-	//bi-directional many-to-one association to FunctionArgument
-	@OneToMany(mappedBy="functionDefinition")
-	private List<FunctionArgument> functionArguments;
-
-	public FunctionDefinition() {
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public int getArgLb() {
-		return this.argLb;
-	}
-
-	public void setArgLb(int argLb) {
-		this.argLb = argLb;
-	}
-
-	public int getArgUb() {
-		return this.argUb;
-	}
-
-	public void setArgUb(int argUb) {
-		this.argUb = argUb;
-	}
-
-	public int getIsBagReturn() {
-		return isBagReturn;
-	}
-
-	public void setIsBagReturn(int isBagReturn) {
-		this.isBagReturn = isBagReturn;
-	}
-
-	public int getIsHigherOrder() {
-		return isHigherOrder;
-	}
-
-	public void setIsHigherOrder(int isHigherOrder) {
-		this.isHigherOrder = isHigherOrder;
-	}
-
-	public Datatype getDatatypeBean() {
-		return this.datatypeBean;
-	}
-
-	public void setDatatypeBean(Datatype datatypeBean) {
-		this.datatypeBean = datatypeBean;
-	}
-
-	public String getShortname() {
-		return this.shortname;
-	}
-
-	public void setShortname(String shortname) {
-		this.shortname = shortname;
-	}
-
-	public String getXacmlid() {
-		return this.xacmlid;
-	}
-
-	public void setXacmlid(String xacmlid) {
-		this.xacmlid = xacmlid;
-	}
-
-	public int getHigherOrderArg_LB() {
-		return higherOrderArg_LB;
-	}
-
-	public void setHigherOrderArg_LB(int higherOrderArg_LB) {
-		this.higherOrderArg_LB = higherOrderArg_LB;
-	}
-
-	public int getHigherOrderArg_UB() {
-		return higherOrderArg_UB;
-	}
-
-	public void setHigherOrderArg_UB(int higherOrderArg_UB) {
-		this.higherOrderArg_UB = higherOrderArg_UB;
-	}
-
-	public char getHigherOrderIsPrimitive() {
-		return higherOrderIsPrimitive;
-	}
-
-	public void setHigherOrderIsPrimitive(char higherOrderIsPrimitive) {
-		this.higherOrderIsPrimitive = higherOrderIsPrimitive;
-	}
-
-	public List<FunctionArgument> getFunctionArguments() {
-		return this.functionArguments;
-	}
-
-	public void setFunctionArguments(List<FunctionArgument> functionArguments) {
-		this.functionArguments = functionArguments;
-	}
-
-	public FunctionArgument addFunctionArgument(FunctionArgument functionArgument) {
-		getFunctionArguments().add(functionArgument);
-		functionArgument.setFunctionDefinition(this);
-
-		return functionArgument;
-	}
-
-	public FunctionArgument removeFunctionArgument(FunctionArgument functionArgument) {
-		getFunctionArguments().remove(functionArgument);
-		functionArgument.setFunctionDefinition(null);
-
-		return functionArgument;
-	}
-
-	@Transient
-	@Override
-	public String toString() {
-		return "FunctionDefinition [id=" + id + ", argLb=" + argLb + ", argUb="
-				+ argUb + ", isBagReturn=" + isBagReturn + ", isHigherOrder="
-				+ isHigherOrder + ", datatypeBean=" + datatypeBean
-				+ ", shortname=" + shortname + ", xacmlid=" + xacmlid
-				+ ", higherOrderArg_LB=" + higherOrderArg_LB
-				+ ", higherOrderArg_UB=" + higherOrderArg_UB
-				+ ", higherOrderIsPrimitive=" + higherOrderIsPrimitive
-				+ ", functionArguments=" + functionArguments + "]";
-	}
-
-	@Transient
-	public boolean isBagReturn() {
-		return this.isBagReturn == 1;
-	}
-
-	@Transient
-	public boolean isHigherOrder() {
-		return this.isHigherOrder == 1;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/Obadvice.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/Obadvice.java
deleted file mode 100644
index cda5802..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/Obadvice.java
+++ /dev/null
@@ -1,227 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-import java.util.Date;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.PrePersist;
-import javax.persistence.PreUpdate;
-import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-import javax.persistence.Transient;
-
-import org.apache.openaz.xacml.api.Identifier;
-
-/**
- * The persistent class for the Obadvice database table.
- * 
- */
-@Entity
-@Table(name="Obadvice")
-@NamedQuery(name="Obadvice.findAll", query="SELECT o FROM Obadvice o")
-public class Obadvice implements Serializable {
-	private static final long serialVersionUID = 1L;
-
-	public static final String OBLIGATION = "Obligation";
-	public static final String ADVICE = "Advice";
-	public static final String EFFECT_PERMIT = "Permit";
-	public static final String EFFECT_DENY = "Deny";
-	@Id
-	@GeneratedValue(strategy = GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="type", nullable=false)
-	private String type;
-
-	@Column(name="xacml_id", nullable=false, length=255)
-	private String xacmlId;
-
-	@Column(name="fulfill_on", nullable=true, length=32)
-	private String fulfillOn;
-
-	@Column(name="description", nullable=true, length=2048)
-	private String description;
-
-	//bi-directional one-to-many association to Attribute Assignment
-	@OneToMany(mappedBy="obadvice", orphanRemoval=true, cascade=CascadeType.REMOVE)
-	private Set<ObadviceExpression> obadviceExpressions = new HashSet<ObadviceExpression>(2);
-
-	@Column(name="created_by", nullable=false, length=255)
-	private String createdBy;
-
-	@Temporal(TemporalType.TIMESTAMP)
-	@Column(name="created_date", nullable=false, updatable=false)
-	private Date createdDate; //NOPMD
-
-	@Column(name="modified_by", nullable=false, length=255)
-	private String modifiedBy;
-
-	@Temporal(TemporalType.TIMESTAMP)
-	@Column(name="modified_date", nullable=false)
-	private Date modifiedDate; //NOPMD
-
-	public Obadvice() {
-		this.type = Obadvice.OBLIGATION;
-		this.fulfillOn = Obadvice.EFFECT_PERMIT;
-	}
-	
-	public Obadvice(String domain, String userid) {
-		this.xacmlId = domain;
-		this.type = Obadvice.OBLIGATION;
-		this.fulfillOn = Obadvice.EFFECT_PERMIT;
-		this.createdBy = userid;
-		this.modifiedBy = userid;
-	}
-
-	public Obadvice(Identifier id, String userid) {
-		this(id.stringValue(), userid);
-	}
-
-	@PrePersist
-	public void	prePersist() {
-		Date date = new Date();
-		this.createdDate = date;
-		this.modifiedDate = date;
-	}
-	
-	@PreUpdate
-	public void preUpdate() {
-		this.modifiedDate = new Date();
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public String getCreatedBy() {
-		return this.createdBy;
-	}
-
-	public void setCreatedBy(String createdBy) {
-		this.createdBy = createdBy;
-	}
-
-	public String getDescription() {
-		return this.description;
-	}
-
-	public void setDescription(String description) {
-		this.description = description;
-	}
-
-	public String getFulfillOn() {
-		return this.fulfillOn;
-	}
-
-	public void setFulfillOn(String fulfillOn) {
-		this.fulfillOn = fulfillOn;
-	}
-
-	public String getModifiedBy() {
-		return this.modifiedBy;
-	}
-
-	public void setModifiedBy(String modifiedBy) {
-		this.modifiedBy = modifiedBy;
-	}
-
-	public String getType() {
-		return this.type;
-	}
-
-	public void setType(String type) {
-		this.type = type;
-	}
-
-	public String getXacmlId() {
-		return this.xacmlId;
-	}
-
-	public void setXacmlId(String xacmlId) {
-		this.xacmlId = xacmlId;
-	}
-
-	public Set<ObadviceExpression> getObadviceExpressions() {
-		return this.obadviceExpressions;
-	}
-
-	public void setObadviceExpressions(Set<ObadviceExpression> obadviceExpressions) {
-		this.obadviceExpressions = obadviceExpressions;
-	}
-
-	public ObadviceExpression addObadviceExpression(ObadviceExpression obadviceExpression) {
-		this.obadviceExpressions.add(obadviceExpression);
-		obadviceExpression.setObadvice(this);
-
-		return obadviceExpression;
-	}
-
-	public ObadviceExpression removeObadviceExpression(ObadviceExpression obadviceExpression) {
-		this.obadviceExpressions.remove(obadviceExpression);
-		obadviceExpression.setObadvice(null);
-
-		return obadviceExpression;
-	}
-	
-	public void removeAllExpressions() {
-		if (this.obadviceExpressions == null) {
-			return;
-		}
-		for (ObadviceExpression expression : this.obadviceExpressions) {
-			expression.setObadvice(null);
-		}
-		this.obadviceExpressions.clear();
-	}
-
-	@Transient
-	public Obadvice clone() {
-		Obadvice obadvice = new Obadvice();
-		
-		obadvice.type = this.type;
-		obadvice.xacmlId = this.xacmlId;
-		obadvice.fulfillOn = this.fulfillOn;
-		obadvice.description = this.description;
-		obadvice.createdBy = this.createdBy;
-		obadvice.modifiedBy = this.modifiedBy;
-		for (ObadviceExpression exp: this.obadviceExpressions) {
-			obadvice.addObadviceExpression(exp.clone());
-		}
-
-		return obadvice;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/ObadviceExpression.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/ObadviceExpression.java
deleted file mode 100644
index 2a79639..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/ObadviceExpression.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-// import javax.persistence.Lob;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToOne;
-import javax.persistence.Table;
-
-
-/**
- * The persistent class for the ObadviceExpressions database table.
- * 
- */
-@Entity
-@Table(name="ObadviceExpressions")
-@NamedQuery(name="ObadviceExpression.findAll", query="SELECT o FROM ObadviceExpression o")
-public class ObadviceExpression implements Serializable {
-	private static final long serialVersionUID = 1L;
-
-	public static final String EXPRESSION_APPLY = "Apply";
-	public static final String EXPRESSION_SELECTOR = "Attribute Selector";
-	public static final String EXPRESSION_VALUE = "Attribute Value";
-	public static final String EXPRESSION_FUNCTION = "Function";
-	public static final String EXPRESSION_REFERENCE = "Varable Reference";
-	public static final String EXPRESSION_DESIGNATOR = "Attribute Designator";
-
-	@Id
-	@GeneratedValue(strategy = GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	//unidirectional one-to-one association to Attribute
-	@OneToOne
-	@JoinColumn(name="attribute_id")
-	private Attribute attribute;
-
-	@Column(name="type", nullable=false)
-	private String type;
-	
-	/*
-	@Lob
-	@Column(name="expression", nullable=false)
-	private byte[] expression;
-	*/
-
-	//bi-directional many-to-one association to Obadvice
-	@ManyToOne
-	@JoinColumn(name="obadvice_id")
-	private Obadvice obadvice;
-
-	public ObadviceExpression() {
-		type = EXPRESSION_VALUE;
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public Attribute getAttribute() {
-		return this.attribute;
-	}
-
-	public void setAttribute(Attribute attribute) {
-		this.attribute = attribute;
-	}
-
-	public String getType() {
-		return this.type;
-	}
-
-	public void setType(String type) {
-		this.type = type;
-	}
-
-	public Obadvice getObadvice() {
-		return this.obadvice;
-	}
-
-	public void setObadvice(Obadvice obadvice) {
-		this.obadvice = obadvice;
-	}
-
-	public ObadviceExpression clone() {
-		ObadviceExpression expression = new ObadviceExpression();
-		
-		expression.attribute = this.attribute;
-		expression.type = this.type;
-		expression.obadvice = this.obadvice;
-		
-		return expression;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPConfigParam.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPConfigParam.java
deleted file mode 100644
index a4c4a16..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPConfigParam.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-
-import javax.persistence.*;
-
-
-/**
- * The persistent class for the PIPConfigParams database table.
- * 
- */
-@Entity
-@Table(name="PIPConfigParams")
-@NamedQuery(name="PIPConfigParam.findAll", query="SELECT p FROM PIPConfigParam p")
-public class PIPConfigParam implements Serializable {
-	private static final long serialVersionUID = 1L;
-
-	@Id
-	@GeneratedValue(strategy=GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="PARAM_NAME", nullable=false, length=1024)
-	private String paramName;
-
-	@Column(name="PARAM_VALUE", nullable=false, length=2048)
-	private String paramValue;
-
-	@Column(name="PARAM_DEFAULT", nullable=true, length=2048)
-	private String paramDefault = null;
-	
-	@Column(name="REQUIRED", nullable=false)
-	private char required = '0';
-
-	//bi-directional many-to-one association to PIPConfiguration
-	@ManyToOne
-	@JoinColumn(name="PIP_ID")
-	private PIPConfiguration pipconfiguration;
-
-	public PIPConfigParam() {
-	}
-
-	public PIPConfigParam(String param) {
-		this.paramName = param;
-	}
-
-	public PIPConfigParam(String param, String value) {
-		this(param);
-		this.paramValue = value;
-	}
-
-	public PIPConfigParam(PIPConfigParam param) {
-		this(param.getParamName(), param.getParamValue());
-		this.paramDefault = param.getParamDefault();
-		this.required = param.required;
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public String getParamName() {
-		return this.paramName;
-	}
-
-	public void setParamName(String paramName) {
-		this.paramName = paramName;
-	}
-
-	public String getParamValue() {
-		return this.paramValue;
-	}
-
-	public void setParamValue(String paramValue) {
-		this.paramValue = paramValue;
-	}
-
-	public String getParamDefault() {
-		return paramDefault;
-	}
-
-	public void setParamDefault(String paramDefault) {
-		this.paramDefault = paramDefault;
-	}
-
-	public char getRequired() {
-		return required;
-	}
-
-	public void setRequired(char required) {
-		this.required = required;
-	}
-
-	public PIPConfiguration getPipconfiguration() {
-		return this.pipconfiguration;
-	}
-
-	public void setPipconfiguration(PIPConfiguration pipconfiguration) {
-		this.pipconfiguration = pipconfiguration;
-	}
-
-	@Transient
-	public boolean isRequired() {
-		return this.required == '1';
-	}
-	
-	@Transient
-	public void setRequired(boolean required) {
-		if (required) {
-			this.setRequired('1');
-		} else {
-			this.setRequired('0');
-		}
-	}
-
-	@Transient
-	@Override
-	public String toString() {
-		return "PIPConfigParam [id=" + id + ", paramName=" + paramName
-				+ ", paramValue=" + paramValue + ", required=" + required + "]";
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPConfiguration.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPConfiguration.java
deleted file mode 100644
index d540e2b..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPConfiguration.java
+++ /dev/null
@@ -1,554 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.PrePersist;
-import javax.persistence.PreUpdate;
-import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-import javax.persistence.Transient;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.api.pip.PIPException;
-import org.apache.openaz.xacml.std.pip.engines.StdConfigurableEngine;
-import org.apache.openaz.xacml.std.pip.engines.csv.CSVEngine;
-import org.apache.openaz.xacml.std.pip.engines.csv.HyperCSVEngine;
-import org.apache.openaz.xacml.std.pip.engines.jdbc.JDBCEngine;
-import org.apache.openaz.xacml.std.pip.engines.ldap.LDAPEngine;
-import org.apache.openaz.xacml.util.XACMLProperties;
-import com.google.common.base.Joiner;
-import com.google.common.base.Splitter;
-import com.vaadin.ui.UI;
-
-
-/**
- * The persistent class for the PIPConfiguration database table.
- * 
- */
-@Entity
-@Table(name="PIPConfiguration")
-@NamedQuery(name="PIPConfiguration.findAll", query="SELECT p FROM PIPConfiguration p")
-public class PIPConfiguration implements Serializable {
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(PIPConfiguration.class);
-
-	@Id
-	@GeneratedValue(strategy=GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="DESCRIPTION", nullable=true, length=2048)
-	private String description;
-
-	@Column(name="NAME", nullable=false, length=255)
-	private String name;
-
-	@Column(name="CLASSNAME", nullable=false, length=2048)
-	private String classname;
-
-	@Column(name="ISSUER", nullable=true, length=1024)
-	private String issuer;
-
-	@Column(name="READ_ONLY", nullable=false)
-	private char readOnly = '0';
-
-	@Column(name="REQUIRES_RESOLVER", nullable=false)
-	private char requiresResolvers;
-
-	@Column(name="CREATED_BY", nullable=false, length=255)
-	private String createdBy = "guest";
-
-	@Temporal(TemporalType.TIMESTAMP)
-	@Column(name="CREATED_DATE", nullable=false, updatable=false)
-	private Date createdDate;
-
-	@Column(name="MODIFIED_BY", nullable=false, length=255)
-	private String modifiedBy = "guest";
-
-	@Temporal(TemporalType.TIMESTAMP)
-	@Column(name="MODIFIED_DATE", nullable=false)
-	private Date modifiedDate;
-
-	//bi-directional many-to-one association to PIPConfigParam
-	@OneToMany(mappedBy="pipconfiguration", orphanRemoval=true, cascade=CascadeType.REMOVE)
-	private Set<PIPConfigParam> pipconfigParams = new HashSet<PIPConfigParam>();
-
-	//bi-directional many-to-one association to PIPType
-	@ManyToOne
-	@JoinColumn(name="TYPE")
-	private PIPType piptype;
-
-	//bi-directional many-to-one association to PIPResolver
-	@OneToMany(mappedBy="pipconfiguration", orphanRemoval=true, cascade=CascadeType.REMOVE)
-	private Set<PIPResolver> pipresolvers = new HashSet<PIPResolver>();
-
-	public PIPConfiguration() {
-	}
-	
-	public PIPConfiguration(PIPConfiguration config, String user) { //NOPMD
-		this.description = config.description;
-		this.name = config.name;
-		this.classname = config.classname;
-		this.issuer = config.issuer;
-		this.requiresResolvers = config.requiresResolvers;
-		this.readOnly = config.readOnly;
-		this.piptype = config.piptype;
-		for (PIPConfigParam param : config.pipconfigParams) {
-			this.addPipconfigParam(new PIPConfigParam(param));
-		}
-		for (PIPResolver resolver : config.pipresolvers) {
-			this.addPipresolver(new PIPResolver(resolver));
-		}
-	}
-	
-	public PIPConfiguration(String id, Properties properties) throws PIPException {
-		this.readProperties(id, properties);
-	}
-	
-	public PIPConfiguration(String id, Properties properties, String user) throws PIPException {
-		this.createdBy = user;
-		this.modifiedBy = user;
-		this.readProperties(id, properties);
-	}
-
-	@PrePersist
-	public void	prePersist() {
-		Date date = new Date();
-		this.createdDate = date;
-		this.modifiedDate = date;
-	}
-	
-	@PreUpdate
-	public void preUpdate() {
-		this.modifiedDate = new Date();
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public String getDescription() {
-		return this.description;
-	}
-
-	public void setDescription(String description) {
-		this.description = description;
-	}
-
-	public String getName() {
-		return this.name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public String getClassname() {
-		return classname;
-	}
-
-	public void setClassname(String classname) {
-		this.classname = classname;
-	}
-
-	public String getIssuer() {
-		return issuer;
-	}
-
-	public void setIssuer(String issuer) {
-		this.issuer = issuer;
-	}
-
-	public char getReadOnly() {
-		return readOnly;
-	}
-
-	public void setReadOnly(char readOnly) {
-		this.readOnly = readOnly;
-	}
-
-	public char getRequiresResolvers() {
-		return requiresResolvers;
-	}
-
-	public void setRequiresResolvers(char requireResolvers) {
-		this.requiresResolvers = requireResolvers;
-	}
-
-	public Set<PIPConfigParam> getPipconfigParams() {
-		return this.pipconfigParams;
-	}
-
-	public void setPipconfigParams(Set<PIPConfigParam> pipconfigParams) {
-		this.pipconfigParams = pipconfigParams;
-	}
-
-	public PIPConfigParam addPipconfigParam(PIPConfigParam pipconfigParam) {
-		getPipconfigParams().add(pipconfigParam);
-		pipconfigParam.setPipconfiguration(this);
-
-		return pipconfigParam;
-	}
-
-	public PIPConfigParam removePipconfigParam(PIPConfigParam pipconfigParam) {
-		if (pipconfigParam == null) {
-			return pipconfigParam;
-		}
-		getPipconfigParams().remove(pipconfigParam);
-		pipconfigParam.setPipconfiguration(null);
-
-		return pipconfigParam;
-	}
-	
-	@Transient
-	public void clearConfigParams() {
-		while (this.pipconfigParams.isEmpty() == false) {
-			this.removePipconfigParam(this.pipconfigParams.iterator().next());
-		}
-	}
-
-	public PIPType getPiptype() {
-		return this.piptype;
-	}
-
-	public void setPiptype(PIPType piptype) {
-		this.piptype = piptype;
-	}
-
-	public Set<PIPResolver> getPipresolvers() {
-		return this.pipresolvers;
-	}
-
-	public void setPipresolvers(Set<PIPResolver> pipresolvers) {
-		this.pipresolvers = pipresolvers;
-	}
-
-	public PIPResolver addPipresolver(PIPResolver pipresolver) {
-		getPipresolvers().add(pipresolver);
-		pipresolver.setPipconfiguration(this);
-
-		return pipresolver;
-	}
-
-	public PIPResolver removePipresolver(PIPResolver pipresolver) {
-		getPipresolvers().remove(pipresolver);
-		pipresolver.setPipconfiguration(null);
-
-		return pipresolver;
-	}
-
-	public String getCreatedBy() {
-		return createdBy;
-	}
-
-	public void setCreatedBy(String createdBy) {
-		this.createdBy = createdBy;
-	}
-
-	public Date getCreatedDate() {
-		return createdDate;
-	}
-
-	public void setCreatedDate(Date createdDate) {
-		this.createdDate = createdDate;
-	}
-
-	public String getModifiedBy() {
-		return modifiedBy;
-	}
-
-	public void setModifiedBy(String modifiedBy) {
-		this.modifiedBy = modifiedBy;
-	}
-
-	public Date getModifiedDate() {
-		return modifiedDate;
-	}
-
-	public void setModifiedDate(Date modifiedDate) {
-		this.modifiedDate = modifiedDate;
-	}
-
-	@Transient
-	public boolean isReadOnly() {
-		return this.readOnly == '1';
-	}
-	
-	@Transient
-	public void setReadOnly(boolean readOnly) {
-		if (readOnly) {
-			this.readOnly = '1';
-		} else {
-			this.readOnly = '0';
-		}
-	}
-	
-	@Transient
-	public boolean requiresResolvers() {
-		return this.requiresResolvers == '1';
-	}
-	
-	@Transient
-	public void	setRequiresResolvers(boolean requires) {
-		if (requires) {
-			this.requiresResolvers = '1';
-		} else {
-			this.requiresResolvers = '0';
-		}
-	}
-	
-	@Transient
-	public static Collection<PIPConfiguration>		importPIPConfigurations(Properties properties) {
-		Collection<PIPConfiguration> configurations = new ArrayList<PIPConfiguration>();
-		String engines = properties.getProperty(XACMLProperties.PROP_PIP_ENGINES);
-		if (engines == null || engines.isEmpty()) {
-			return configurations;
-		}
-		for (String id : Splitter.on(',').trimResults().omitEmptyStrings().split(engines)) {
-			PIPConfiguration configuration;
-			try {
-				String user = ((XacmlAdminUI)UI.getCurrent()).getUserid();
-				configuration = new PIPConfiguration(id, properties, user);
-				configuration.setCreatedBy(user);
-				configuration.setModifiedBy(user);
-				configurations.add(configuration);
-			} catch (PIPException e) {
-				logger.error("Import failed: " + e.getLocalizedMessage());
-			}
-		}
-		
-		return configurations;
-	}
-	
-	@Transient
-	protected	void		readProperties(String id, Properties properties) throws PIPException {
-		//
-		// Save the id if we don't have one already
-		//
-		if (this.id == 0) {
-			try {
-				this.id = Integer.parseInt(id);
-			} catch (NumberFormatException e) {
-				logger.error("Convert id to integer failed: " + id);
-			}
-		}
-		//
-		// Get its classname, this MUST exist.
-		//
-		this.classname = properties.getProperty(id + ".classname");
-		if (this.classname == null) {
-			throw new PIPException("PIP Engine defined without a classname");
-		}
-		//
-		// These classes we know for sure require resolvers.
-		//
-		if (this.classname.equals(JDBCEngine.class.getCanonicalName())) {
-			this.setRequiresResolvers(true);
-			this.setPiptype(JPAUtils.getPIPType(PIPType.TYPE_SQL));
-		} else if (this.classname.equals(LDAPEngine.class.getCanonicalName())) {
-			this.setRequiresResolvers(true);
-			this.setPiptype(JPAUtils.getPIPType(PIPType.TYPE_LDAP));
-		} else if (this.classname.equals(HyperCSVEngine.class.getCanonicalName())) {
-			this.setRequiresResolvers(true);
-			this.setPiptype(JPAUtils.getPIPType(PIPType.TYPE_HYPERCSV));
-		} else if (this.classname.equals(CSVEngine.class.getCanonicalName())) {
-			this.setRequiresResolvers(true);
-			this.setPiptype(JPAUtils.getPIPType(PIPType.TYPE_CSV));
-		} else {
-			//
-			// Assume it does not require resolvers for now, if we encounter
-			// one then we will change it. The user can always change it via the gui.
-			// 
-			this.setRequiresResolvers(false);
-			this.setPiptype(JPAUtils.getPIPType(PIPType.TYPE_CUSTOM));
-		}
-		//
-		// Go through each property
-		//
-		for (Object name : properties.keySet()) {
-			if (name.toString().startsWith(id) == false || name.equals(id + ".classname")) {
-				continue;
-			}
-			if (name.equals(id + "." + StdConfigurableEngine.PROP_NAME)) {
-				this.name = properties.getProperty(name.toString());
-			} else if (name.equals(id + "." + StdConfigurableEngine.PROP_DESCRIPTION)) {
-				this.description = properties.getProperty(name.toString());
-			} else if (name.equals(id + "." + StdConfigurableEngine.PROP_ISSUER)) {
-				this.issuer = properties.getProperty(name.toString());
-			} else if (name.equals(id + ".resolvers")) {
-				//
-				// It has resolvers, make sure this is set to true if
-				// it has been already.
-				//
-				this.setRequiresResolvers(true);
-				//
-				// Parse the resolvers
-				//
-				Collection<PIPResolver> resolvers = PIPResolver.importResolvers(id + ".resolver",
-																		properties.getProperty(name.toString()),
-																		properties,
-																		((XacmlAdminUI)UI.getCurrent()).getUserid());
-				for (PIPResolver resolver : resolvers) {
-					this.addPipresolver(resolver);
-				}
-			// Ignore {id}.resolver: the PIPResolver will parse these values
-			} else if (! name.toString().startsWith(id + ".resolver")) {
-				//
-				// Config Parameter
-				//
-				this.addPipconfigParam(new PIPConfigParam(name.toString().substring(id.length() + 1), 
-													properties.getProperty(name.toString())));
-			}
-		}
-		//
-		// Make sure we have a name at least
-		//
-		if (this.name == null) {
-			this.name = id;
-		}
-	}
-	
-
-	@Transient
-	public Map<String, String> getConfiguration(String name) {
-		String prefix;
-		if (name == null) {
-			prefix = Integer.toString(this.id);
-		} else {
-			prefix = name;
-		}
-		if (prefix.endsWith(".") == false) {
-			prefix = prefix + ".";
-		}
-		Map<String, String> map = new HashMap<String, String>();
-		map.put(prefix + "classname", this.classname);
-		map.put(prefix + "name", this.name);
-		if (this.description != null) {
-			map.put(prefix + "description", this.description);
-		}
-		if (this.issuer != null) {
-			map.put(prefix + "issuer", this.issuer);
-		}
-		
-		for (PIPConfigParam param : this.pipconfigParams) {
-			map.put(prefix + param.getParamName(), param.getParamValue());
-		}
-		
-		List<String> ids = new ArrayList<String>();
-		Iterator<PIPResolver> iter = this.pipresolvers.iterator();
-		while (iter.hasNext()) {
-			PIPResolver resolver = iter.next();
-			String id = Integer.toString(resolver.getId());
-			Map<String, String> resolverMap = resolver.getConfiguration(prefix + "resolver." + id);
-			map.putAll(resolverMap);
-			ids.add(id);
-		}
-		if (ids.size() > 0) {
-			map.put(prefix + "resolvers", Joiner.on(',').join(ids));
-		}
-		return map;
-	}
-	
-	@Transient
-	public Properties	generateProperties(String name) {
-		String prefix;
-		if (name == null) {
-			prefix = Integer.toString(this.id);
-		} else {
-			if (name.endsWith(".")) {
-				prefix = name;
-			} else {
-				prefix = name + ".";
-			}
-		}
-		Properties props = new Properties();
-		props.setProperty("xacml.pip.engines", name);
-		props.setProperty(prefix + "classname", this.classname);
-		props.setProperty(prefix + "name", this.name);
-		if (this.description != null) {
-			props.setProperty(prefix + "description", this.description);
-		}
-		if (this.issuer != null && this.issuer.isEmpty() == false) {
-			props.setProperty(prefix + "issuer", this.issuer);
-		}
-		
-		for (PIPConfigParam param : this.pipconfigParams) {
-			props.setProperty(prefix + param.getParamName(), param.getParamValue());
-		}
-		
-		List<String> ids = new ArrayList<String>();
-		Iterator<PIPResolver> iter = this.pipresolvers.iterator();
-		while (iter.hasNext()) {
-			PIPResolver resolver = iter.next();
-			String id = Integer.toString(resolver.getId());
-			resolver.generateProperties(props, prefix + "resolver." + id);
-			ids.add(id);
-		}
-		if (ids.size() > 0) {
-			props.setProperty(prefix + "resolvers", Joiner.on(',').join(ids));
-		}
-		return props;
-	}
-
-	@Transient
-	@Override
-	public String toString() {
-		return "PIPConfiguration [id=" + id + ", piptype=" + piptype
-				+ ", classname=" + classname + ", name=" + name
-				+ ", description=" + description + ", issuer=" + issuer
-				+ ", readOnly=" + readOnly + ", requiresResolvers="
-				+ requiresResolvers + ", createdBy=" + createdBy
-				+ ", createdDate=" + createdDate + ", modifiedBy=" + modifiedBy
-				+ ", modifiedDate=" + modifiedDate + ", pipconfigParams="
-				+ pipconfigParams + ", pipresolvers=" + pipresolvers + "]";
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPResolver.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPResolver.java
deleted file mode 100644
index 59c9307..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPResolver.java
+++ /dev/null
@@ -1,362 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Date;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-
-import javax.persistence.CascadeType;
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.JoinColumn;
-import javax.persistence.ManyToOne;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.PrePersist;
-import javax.persistence.PreUpdate;
-import javax.persistence.Table;
-import javax.persistence.Temporal;
-import javax.persistence.TemporalType;
-import javax.persistence.Transient;
-
-import org.apache.openaz.xacml.api.pip.PIPException;
-import org.apache.openaz.xacml.std.pip.engines.StdConfigurableEngine;
-import com.google.common.base.Splitter;
-
-
-/**
- * The persistent class for the PIPResolver database table.
- * 
- */
-@Entity
-@Table(name="PIPResolver")
-@NamedQuery(name="PIPResolver.findAll", query="SELECT p FROM PIPResolver p")
-public class PIPResolver implements Serializable {
-	private static final long serialVersionUID = 1L;
-
-	@Id
-	@GeneratedValue(strategy=GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="DESCRIPTION", nullable=true, length=2048)
-	private String description;
-
-	@Column(name="NAME", nullable=false, length=255)
-	private String name;
-
-	@Column(name="ISSUER", nullable=true, length=1024)
-	private String issuer;
-
-	@Column(name="CLASSNAME", nullable=false, length=2048)
-	private String classname;
-
-	@Column(name="READ_ONLY", nullable=false)
-	private char readOnly = '0';
-
-	@Column(name="CREATED_BY", nullable=false, length=255)
-	private String createdBy = "guest";
-
-	@Temporal(TemporalType.TIMESTAMP)
-	@Column(name="CREATED_DATE", nullable=false, updatable=false)
-	private Date createdDate;
-
-	@Column(name="MODIFIED_BY", nullable=false, length=255)
-	private String modifiedBy = "guest";
-
-	@Temporal(TemporalType.TIMESTAMP)
-	@Column(name="MODIFIED_DATE", nullable=false)
-	private Date modifiedDate;
-
-	//bi-directional many-to-one association to PIPConfiguration
-	@ManyToOne
-	@JoinColumn(name="PIP_ID")
-	private PIPConfiguration pipconfiguration;
-
-	//bi-directional many-to-one association to PIPResolverParam
-	@OneToMany(mappedBy="pipresolver", orphanRemoval=true, cascade=CascadeType.REMOVE)
-	private Set<PIPResolverParam> pipresolverParams = new HashSet<PIPResolverParam>();
-
-	public PIPResolver() {
-	}
-	
-	public PIPResolver(String prefix, Properties properties, String user) throws PIPException {
-		this.createdBy = user;
-		this.modifiedBy = user;
-		this.readOnly = '0';
-		this.readProperties(prefix, properties);
-	}
-	
-	public PIPResolver(PIPResolver resolver) {
-		this.name = resolver.name;
-		this.description = resolver.description;
-		this.issuer = resolver.issuer;
-		this.classname = resolver.classname;
-		this.readOnly = resolver.readOnly;
-		for (PIPResolverParam param : this.pipresolverParams) {
-			this.addPipresolverParam(new PIPResolverParam(param));
-		}
-	}
-
-	@PrePersist
-	public void	prePersist() {
-		Date date = new Date();
-		this.createdDate = date;
-		this.modifiedDate = date;
-	}
-	
-	@PreUpdate
-	public void preUpdate() {
-		this.modifiedDate = new Date();
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public String getDescription() {
-		return this.description;
-	}
-
-	public void setDescription(String description) {
-		this.description = description;
-	}
-
-	public String getName() {
-		return this.name;
-	}
-
-	public void setName(String name) {
-		this.name = name;
-	}
-
-	public String getIssuer() {
-		return issuer;
-	}
-
-	public void setIssuer(String issuer) {
-		this.issuer = issuer;
-	}
-
-	public String getClassname() {
-		return classname;
-	}
-
-	public void setClassname(String classname) {
-		this.classname = classname;
-	}
-
-	public char getReadOnly() {
-		return readOnly;
-	}
-
-	public void setReadOnly(char readOnly) {
-		this.readOnly = readOnly;
-	}
-
-	public String getCreatedBy() {
-		return createdBy;
-	}
-
-	public void setCreatedBy(String createdBy) {
-		this.createdBy = createdBy;
-	}
-
-	public Date getCreatedDate() {
-		return createdDate;
-	}
-
-	public void setCreatedDate(Date createdDate) {
-		this.createdDate = createdDate;
-	}
-
-	public String getModifiedBy() {
-		return modifiedBy;
-	}
-
-	public void setModifiedBy(String modifiedBy) {
-		this.modifiedBy = modifiedBy;
-	}
-
-	public Date getModifiedDate() {
-		return modifiedDate;
-	}
-
-	public void setModifiedDate(Date modifiedDate) {
-		this.modifiedDate = modifiedDate;
-	}
-
-	public PIPConfiguration getPipconfiguration() {
-		return this.pipconfiguration;
-	}
-
-	public void setPipconfiguration(PIPConfiguration pipconfiguration) {
-		this.pipconfiguration = pipconfiguration;
-	}
-
-	public Set<PIPResolverParam> getPipresolverParams() {
-		return this.pipresolverParams;
-	}
-
-	public void setPipresolverParams(Set<PIPResolverParam> pipresolverParams) {
-		this.pipresolverParams = pipresolverParams;
-	}
-
-	public PIPResolverParam addPipresolverParam(PIPResolverParam pipresolverParam) {
-		getPipresolverParams().add(pipresolverParam);
-		pipresolverParam.setPipresolver(this);
-
-		return pipresolverParam;
-	}
-
-	public PIPResolverParam removePipresolverParam(PIPResolverParam pipresolverParam) {
-		if (pipresolverParam == null) {
-			return pipresolverParam;
-		}
-		getPipresolverParams().remove(pipresolverParam);
-		pipresolverParam.setPipresolver(null);
-
-		return pipresolverParam;
-	}
-	
-	@Transient
-	public void clearParams() {
-		while (this.pipresolverParams.isEmpty() == false) {
-			this.removePipresolverParam(this.pipresolverParams.iterator().next());
-		}
-	}
-
-	@Transient
-	public boolean isReadOnly() {
-		return this.readOnly == '1';
-	}
-	
-	@Transient
-	public void setReadOnly(boolean readOnly) {
-		if (readOnly) {
-			this.readOnly = '1';
-		} else {
-			this.readOnly = '0';
-		}
-	}
-	
-	@Transient
-	public static Collection<PIPResolver>	importResolvers(String prefix, String list, Properties properties, String user) throws PIPException {
-		Collection<PIPResolver> resolvers = new ArrayList<PIPResolver>();
-		for (String id : Splitter.on(',').trimResults().omitEmptyStrings().split(list)) {
-			resolvers.add(new PIPResolver(prefix + "." + id, properties, user));
-		}		
-		return resolvers;
-	}
-
-	@Transient
-	protected void readProperties(String prefix, Properties properties) throws PIPException {
-		//
-		// Get its classname, this MUST exist.
-		//
-		this.classname = properties.getProperty(prefix + ".classname");
-		if (this.classname == null) {
-			throw new PIPException("PIP Engine defined without a classname");
-		}
-		//
-		// Go through each property
-		//
-		for (Object name : properties.keySet()) {
-			if (name.toString().startsWith(prefix) == false || name.equals(prefix + ".classname")) {
-				continue;
-			}
-
-			if (name.equals(prefix + "." + StdConfigurableEngine.PROP_NAME)) {
-				this.name = properties.getProperty(name.toString());
-			} else if (name.equals(prefix + "." + StdConfigurableEngine.PROP_DESCRIPTION)) {
-				this.description = properties.getProperty(name.toString());
-			} else if (name.equals(prefix + "." + StdConfigurableEngine.PROP_ISSUER)) {
-				this.issuer = properties.getProperty(name.toString());
-			} else {
-				this.addPipresolverParam(new PIPResolverParam(name.toString().substring(prefix.length() + 1),
-															properties.getProperty(name.toString())));
-			}
-		}
-	}
-
-	@Transient
-	public Map<String, String> getConfiguration(String prefix) {
-		Map<String, String> map = new HashMap<String, String>();
-		if (prefix.endsWith(".") == false) {
-			prefix = prefix + ".";
-		}
-		map.put(prefix + "classname", this.classname);
-		map.put(prefix + "name", this.name);
-		if (this.description != null) {
-			map.put(prefix + "description", this.description);
-		}
-		if (this.issuer != null && this.issuer.isEmpty() != false) {
-			map.put(prefix + "issuer", this.issuer);
-		}
-		for (PIPResolverParam param : this.pipresolverParams) {
-			map.put(prefix + param.getParamName(), param.getParamValue());
-		}
-		return map;
-	}
-
-	@Transient
-	public void	generateProperties(Properties props, String prefix) {
-		if (prefix.endsWith(".") == false) {
-			prefix = prefix + ".";
-		}
-		props.setProperty(prefix + "classname", this.classname);
-		props.setProperty(prefix + "name", this.name);
-		if (this.description != null) {
-			props.setProperty(prefix + "description", this.description);
-		}
-		if (this.issuer != null && this.issuer.isEmpty() != false) {
-			props.setProperty(prefix + "issuer", this.issuer);
-		}
-		for (PIPResolverParam param : this.pipresolverParams) {
-			props.setProperty(prefix + param.getParamName(), param.getParamValue());
-		}
-	}
-
-	@Transient
-	@Override
-	public String toString() {
-		return "PIPResolver [id=" + id + ", classname=" + classname + ", name="
-				+ name + ", description=" + description + ", issuer=" + issuer
-				+ ", readOnly=" + readOnly + ", createdBy=" + createdBy
-				+ ", createdDate=" + createdDate + ", modifiedBy=" + modifiedBy
-				+ ", modifiedDate=" + modifiedDate + ", pipresolverParams="
-				+ pipresolverParams + "]";
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPResolverParam.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPResolverParam.java
deleted file mode 100644
index 917ce5b..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPResolverParam.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-
-import javax.persistence.*;
-
-
-/**
- * The persistent class for the PIPResolverParams database table.
- * 
- */
-@Entity
-@Table(name="PIPResolverParams")
-@NamedQuery(name="PIPResolverParam.findAll", query="SELECT p FROM PIPResolverParam p")
-public class PIPResolverParam implements Serializable {
-	private static final long serialVersionUID = 1L;
-
-	@Id
-	@GeneratedValue(strategy=GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="PARAM_NAME", nullable=false, length=1024)
-	private String paramName;
-
-	@Column(name="PARAM_VALUE", nullable=false, length=2048)
-	private String paramValue;
-
-	@Column(name="PARAM_DEFAULT", nullable=true, length=2048)
-	private String paramDefault;
-		
-	@Column(name="REQUIRED", nullable=false)
-	private char required = '0';
-
-	//bi-directional many-to-one association to PIPResolver
-	@ManyToOne
-	@JoinColumn(name="ID_RESOLVER")
-	private PIPResolver pipresolver;
-
-	public PIPResolverParam() {
-	}
-
-	public PIPResolverParam(String name) {
-		this.paramName = name;
-	}
-
-	public PIPResolverParam(String name, String value) {
-		this(name);
-		this.paramValue = value;
-	}
-
-	public PIPResolverParam(PIPResolverParam param) {
-		this(param.getParamName(), param.getParamValue());
-		this.paramDefault = param.getParamDefault();
-		this.required = param.required;
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public String getParamName() {
-		return this.paramName;
-	}
-
-	public void setParamName(String paramName) {
-		this.paramName = paramName;
-	}
-
-	public String getParamValue() {
-		return this.paramValue;
-	}
-
-	public void setParamValue(String paramValue) {
-		this.paramValue = paramValue;
-	}
-
-	public String getParamDefault() {
-		return paramDefault;
-	}
-
-	public void setParamDefault(String paramDefault) {
-		this.paramDefault = paramDefault;
-	}
-
-	public char getRequired() {
-		return required;
-	}
-
-	public void setRequired(char required) {
-		this.required = required;
-	}
-
-	public PIPResolver getPipresolver() {
-		return this.pipresolver;
-	}
-
-	public void setPipresolver(PIPResolver pipresolver) {
-		this.pipresolver = pipresolver;
-	}
-
-	@Transient
-	public boolean isRequired() {
-		return this.required == '1';
-	}
-	
-	@Transient
-	public void setRequired(boolean required) {
-		if (required) {
-			this.required = '1';
-		} else {
-			this.required = '0';
-		}
-	}
-
-	@Transient
-	@Override
-	public String toString() {
-		return "PIPResolverParam [id=" + id + ", paramName=" + paramName
-				+ ", paramValue=" + paramValue + ", required=" + required + "]";
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPType.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPType.java
deleted file mode 100644
index 7208b76..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PIPType.java
+++ /dev/null
@@ -1,131 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-import java.util.Set;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.NamedQuery;
-import javax.persistence.OneToMany;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-
-
-/**
- * The persistent class for the PIPType database table.
- * 
- */
-@Entity
-@Table(name="PIPType")
-@NamedQuery(name="PIPType.findAll", query="SELECT p FROM PIPType p")
-public class PIPType implements Serializable {
-	private static final long serialVersionUID = 1L;
-	
-	public static final String TYPE_SQL = "SQL";
-	public static final String TYPE_LDAP = "LDAP";
-	public static final String TYPE_CSV = "CSV";
-	public static final String TYPE_HYPERCSV = "Hyper-CSV";
-	public static final String TYPE_CUSTOM = "Custom";
-
-	@Id
-	@GeneratedValue(strategy=GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="type", nullable=false, length=45)
-	private String type;
-
-	//bi-directional many-to-one association to PIPConfiguration
-	@OneToMany(mappedBy="piptype")
-	private Set<PIPConfiguration> pipconfigurations;
-
-	public PIPType() {
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public String getType() {
-		return this.type;
-	}
-
-	public void setType(String type) {
-		this.type = type;
-	}
-
-	public Set<PIPConfiguration> getPipconfigurations() {
-		return this.pipconfigurations;
-	}
-
-	public void setPipconfigurations(Set<PIPConfiguration> pipconfigurations) {
-		this.pipconfigurations = pipconfigurations;
-	}
-
-	public PIPConfiguration addPipconfiguration(PIPConfiguration pipconfiguration) {
-		getPipconfigurations().add(pipconfiguration);
-		pipconfiguration.setPiptype(this);
-
-		return pipconfiguration;
-	}
-
-	public PIPConfiguration removePipconfiguration(PIPConfiguration pipconfiguration) {
-		getPipconfigurations().remove(pipconfiguration);
-		pipconfiguration.setPiptype(null);
-
-		return pipconfiguration;
-	}
-	
-	@Transient
-	public boolean	isSQL() {
-		return this.type.equals(TYPE_SQL);
-	}
-
-	@Transient
-	public boolean	isLDAP() {
-		return this.type.equals(TYPE_LDAP);
-	}
-
-	@Transient
-	public boolean	isCSV() {
-		return this.type.equals(TYPE_CSV);
-	}
-
-	@Transient
-	public boolean	isHyperCSV() {
-		return this.type.equals(TYPE_HYPERCSV);
-	}
-
-	@Transient
-	public boolean	isCustom() {
-		return this.type.equals(TYPE_CUSTOM);
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PolicyAlgorithms.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PolicyAlgorithms.java
deleted file mode 100644
index d91e221..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/PolicyAlgorithms.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-
-import org.apache.openaz.xacml.api.Identifier;
-
-@Entity
-@Table(name="PolicyAlgorithms")
-@NamedQuery(name="PolicyAlgorithms.findAll", query="SELECT d FROM PolicyAlgorithms d")
-public class PolicyAlgorithms implements Serializable {
-	private static final long serialVersionUID = 1L;
-	
-	public static final char STANDARD = 'S';
-	public static final char CUSTOM = 'C';
-
-	@Id
-	@GeneratedValue(strategy = GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="is_standard", nullable=false)
-	private char isStandard;
-
-	@Column(name="xacml_id", nullable=false, unique=true, length=255)
-	private String xacmlId;
-	
-	@Column(name="short_name", nullable=false, length=64)
-	private String shortName;
-
-	public PolicyAlgorithms(Identifier identifier, char standard) {
-		this.isStandard = standard;
-		if (identifier != null) {
-			this.xacmlId = identifier.stringValue();
-		}
-	}
-	
-	public PolicyAlgorithms(Identifier identifier) {
-		this(identifier, PolicyAlgorithms.STANDARD);
-	}
-
-	public PolicyAlgorithms() {
-		this(null, PolicyAlgorithms.STANDARD);
-	}
-	
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public char getIsStandard() {
-		return this.isStandard;
-	}
-
-	public void setIsStandard(char isStandard) {
-		this.isStandard = isStandard;
-	}
-
-	@Transient
-	public boolean isStandard() {
-		return this.isStandard == PolicyAlgorithms.STANDARD;
-	}
-	
-	@Transient
-	public boolean isCustom() {
-		return this.isStandard == PolicyAlgorithms.CUSTOM;
-	}
-
-	public String getXacmlId() {
-		return this.xacmlId;
-	}
-
-	public void setXacmlId(String xacmlId) {
-		this.xacmlId = xacmlId;
-	}
-
-	public String getShortName() {
-		return shortName;
-	}
-
-	public void setShortName(String shortName) {
-		this.shortName = shortName;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/RuleAlgorithms.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/RuleAlgorithms.java
deleted file mode 100644
index 961984e..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/RuleAlgorithms.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.jpa;
-
-import java.io.Serializable;
-
-import javax.persistence.Column;
-import javax.persistence.Entity;
-import javax.persistence.GeneratedValue;
-import javax.persistence.GenerationType;
-import javax.persistence.Id;
-import javax.persistence.NamedQuery;
-import javax.persistence.Table;
-import javax.persistence.Transient;
-
-import org.apache.openaz.xacml.api.Identifier;
-
-@Entity
-@Table(name="RuleAlgorithms")
-@NamedQuery(name="RuleAlgorithms.findAll", query="SELECT d FROM RuleAlgorithms d")
-public class RuleAlgorithms implements Serializable {
-	private static final long serialVersionUID = 1L;
-
-	public static final char STANDARD = 'S';
-	public static final char CUSTOM = 'C';
-
-	@Id
-	@GeneratedValue(strategy = GenerationType.AUTO)
-	@Column(name="id")
-	private int id;
-
-	@Column(name="is_standard", nullable=false)
-	private char isStandard;
-
-	@Column(name="xacml_id", nullable=false, unique=true, length=255)
-	private String xacmlId;
-	
-	@Column(name="short_name", nullable=false, length=64)
-	private String shortName;
-
-	public RuleAlgorithms(Identifier id, char standard) {
-		if (id != null) {
-			this.xacmlId = id.stringValue();
-		}
-		this.isStandard = standard;
-	}
-	public RuleAlgorithms(Identifier id) {
-		this(id, RuleAlgorithms.STANDARD);
-	}
-
-	public RuleAlgorithms() {
-		this(null, RuleAlgorithms.STANDARD);
-	}
-
-	public int getId() {
-		return this.id;
-	}
-
-	public void setId(int id) {
-		this.id = id;
-	}
-
-	public char getIsStandard() {
-		return this.isStandard;
-	}
-
-	public void setIsStandard(char isStandard) {
-		this.isStandard = isStandard;
-	}
-	
-	@Transient
-	public boolean isStandard() {
-		return this.isStandard == RuleAlgorithms.STANDARD;
-	}
-	
-	@Transient
-	public boolean isCustom() {
-		return this.isStandard == RuleAlgorithms.CUSTOM;
-	}
-
-	public String getXacmlId() {
-		return this.xacmlId;
-	}
-
-	public void setXacmlId(String xacmlId) {
-		this.xacmlId = xacmlId;
-	}
-
-	public String getShortName() {
-		return shortName;
-	}
-
-	public void setShortName(String shortName) {
-		this.shortName = shortName;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/package-info.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/package-info.java
deleted file mode 100644
index 85d06f5..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/jpa/package-info.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-/**
- * 
- */
-/**
- * @author pameladragosh
- *
- */
-package org.apache.openaz.xacml.admin.jpa;
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/AttributeContainer.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/AttributeContainer.java
deleted file mode 100644
index 37d2fd4..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/AttributeContainer.java
+++ /dev/null
@@ -1,500 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.model;
-
-import java.lang.reflect.Method;
-import java.nio.file.Path;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.Category;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.api.AttributeValue;
-import org.apache.openaz.xacml.api.Identifier;
-import org.apache.openaz.xacml.util.XACMLPolicyAggregator;
-import org.apache.openaz.xacml.util.XACMLPolicyScanner;
-import com.vaadin.data.Container;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.data.util.MethodProperty;
-import com.vaadin.ui.Table;
-
-public class AttributeContainer extends ItemSetChangeNotifier implements Container.Hierarchical, Container.ItemSetChangeNotifier {
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(AttributeContainer.class);
-	//private final AttributeContainer self = this;
-	private final Map<Category, Map<Datatype, Map<String, Set<ContainerAttribute>>>> mapAttributes = new HashMap<Category, Map<Datatype, Map<String, Set<ContainerAttribute>>>>();
-
-	class ContainerAttribute {
-		Path				policy;
-		boolean				isRoot;
-		AttributeValue<?>	value;
-		
-		public ContainerAttribute(Path policy, boolean isRoot, AttributeValue<?> value) {
-			this.policy = policy;
-			this.isRoot = isRoot;
-			this.value = value;
-		}
-
-		public Path getPolicy() {
-			return policy;
-		}
-
-		public boolean isRoot() {
-			return isRoot;
-		}
-
-		public AttributeValue<?> getValue() {
-			return value;
-		}
-		
-		public boolean isCustom() {
-			return this.policy == null;
-		}
-	}
-    /**
-     * String identifier of an object's "id" property.
-     */
-    public static String PROPERTY_ID = "Id";
-
-    /**
-     * String identifier of an object's "category" property.
-     */
-    public static String PROPERTY_CATEGORY = "Category";
-
-    /**
-     * String identifier of an object's "datatype" property.
-     */
-    public static String PROPERTY_DATATYPE = "Datatype";
-
-    /**
-     * String identifier of an object's "value" property.
-     */
-    public static String PROPERTY_VALUES = "Values";
-
-    /**
-     * List of the string identifiers for the available properties.
-     */
-    public static Collection<String> ATTRIBUTE_PROPERTIES;
-
-    private final static Method ATTRIBUTEITEM_ID;
-    private final static Method ATTRIBUTEITEM_CATEGORY;
-    private final static Method ATTRIBUTEITEM_DATATYPE;
-    private final static Method ATTRIBUTEITEM_VALUES;
-    static {
-    	ATTRIBUTE_PROPERTIES = new ArrayList<String>();
-    	ATTRIBUTE_PROPERTIES.add(PROPERTY_ID);
-    	ATTRIBUTE_PROPERTIES.add(PROPERTY_CATEGORY);
-    	ATTRIBUTE_PROPERTIES.add(PROPERTY_DATATYPE);
-    	ATTRIBUTE_PROPERTIES.add(PROPERTY_VALUES);
-    	ATTRIBUTE_PROPERTIES =  Collections.unmodifiableCollection(ATTRIBUTE_PROPERTIES);
-    	try {
-    		ATTRIBUTEITEM_ID = AttributeItem.class.getMethod("getId", new Class[]{});
-    		ATTRIBUTEITEM_CATEGORY = AttributeItem.class.getMethod("getCategory", new Class[]{});
-    		ATTRIBUTEITEM_DATATYPE = AttributeItem.class.getMethod("getDatatype", new Class[]{});
-    		ATTRIBUTEITEM_VALUES = AttributeItem.class.getMethod("getValues", new Class[]{});
-    	} catch (final NoSuchMethodException e) {
-            throw new RuntimeException("Internal error finding methods in AttributeContainer");
-        }
-    }
-    
-	public AttributeContainer(Path rootPolicy, Collection<Path> referencedPolicies) {
-		super();
-		this.setContainer(this);
-		this.initialize(rootPolicy, referencedPolicies);
-	}
-	
-	protected void initialize(Path rootPolicy, Collection<Path> referencedPolicies) {
-		XACMLPolicyAggregator aggregator = new XACMLPolicyAggregator();
-		//
-		// Scan the policy
-		//
-		new XACMLPolicyScanner(rootPolicy, aggregator).scan();
-		this.addAttributes(aggregator, rootPolicy, true);
-		aggregator = new XACMLPolicyAggregator();
-		//
-		// Scan the referenced policies
-		//
-		for (Path policy : referencedPolicies) {
-			new XACMLPolicyScanner(policy, aggregator).scan();
-			this.addAttributes(aggregator, policy, false);
-			aggregator = new XACMLPolicyAggregator();
-		}
-	}
-	
-	protected void addAttributes(XACMLPolicyAggregator aggregator, Path policy, boolean isRoot) {
-		for (Identifier cat : aggregator.getAttributeMap().keySet()) {
-			Category category = JPAUtils.findCategory(cat);
-			if (category == null) {
-				logger.warn("Could not find category: " + cat);
-				continue;
-			}
-			if (this.mapAttributes.containsKey(category) == false) {
-				this.mapAttributes.put(category, new HashMap<Datatype, Map<String, Set<ContainerAttribute>>>());
-			}
-			Map<Datatype, Map<String, Set<ContainerAttribute>>> datatypeMap = this.mapAttributes.get(category);
-			for (Identifier dt : aggregator.getAttributeMap().get(cat).keySet()) {
-				Datatype datatype = JPAUtils.findDatatype(dt);
-				if (datatype == null) {
-					logger.warn("Could not find datatype: " + dt);
-				}
-				//
-				// Need a unique datatype object
-				//
-				datatype = new Datatype((int) System.currentTimeMillis(), datatype);
-				if (datatypeMap.containsKey(datatype) == false) {
-					datatypeMap.put(datatype, new HashMap<String, Set<ContainerAttribute>>());
-				}
-				Map<String, Set<ContainerAttribute>> attributeMap = datatypeMap.get(datatype);
-				for (Identifier id : aggregator.getAttributeMap().get(cat).get(dt).keySet()) {
-					if (attributeMap.containsKey(id.stringValue()) == false) {
-						attributeMap.put(id.stringValue(), new HashSet<ContainerAttribute>());
-					}
-					for (AttributeValue<?> attribute : aggregator.getAttributeMap().get(cat).get(dt).get(id)) {
-						attributeMap.get(id.stringValue()).add(new ContainerAttribute(policy, isRoot, attribute));
-					}
-				}
-			}
-		}
-	}
-	
-	protected boolean isObjectSupported(Object itemId) {
-		if (itemId instanceof Category ||
-			itemId instanceof Datatype ||
-			itemId instanceof String ||
-			itemId instanceof ContainerAttribute) {
-			return true;
-		}
-		return false;
-	}
-
-	@Override
-	public Item getItem(Object itemId) {
-		if (this.isObjectSupported(itemId)) {
-			return new AttributeItem(itemId);
-		}
-		return null;
-	}
-
-	@Override
-	public Collection<?> getContainerPropertyIds() {
-		return ATTRIBUTE_PROPERTIES;
-	}
-
-	@Override
-	public Collection<?> getItemIds() {
-		final Collection<Object> items = new ArrayList<Object>();
-		for (Category category : this.mapAttributes.keySet()) {
-			items.add(category);
-			for (Datatype datatype : this.mapAttributes.get(category).keySet()) {
-				items.add(datatype);
-				for (String id : this.mapAttributes.get(category).get(datatype).keySet()) {
-					items.add(id);
-					for (ContainerAttribute attribute : this.mapAttributes.get(category).get(datatype).get(id)) {
-						items.add(attribute);
-					}
-				}
-			}
-		}
-		return Collections.unmodifiableCollection(items);
-	}
-
-	@Override
-	public Property<?> getContainerProperty(Object itemId, Object propertyId) {
-		if (this.isObjectSupported(itemId) == false) {
-			return null;
-		}
-        if (propertyId.equals(PROPERTY_ID)) {
-            return new MethodProperty<Object>(getType(propertyId), 
-            						new AttributeItem(itemId), ATTRIBUTEITEM_ID, null);
-        }
-        if (propertyId.equals(PROPERTY_CATEGORY)) {
-            return new MethodProperty<Object>(getType(propertyId), 
-            						new AttributeItem(itemId), ATTRIBUTEITEM_CATEGORY, null);
-        }
-        if (propertyId.equals(PROPERTY_DATATYPE)) {
-            return new MethodProperty<Object>(getType(propertyId), 
-            						new AttributeItem(itemId), ATTRIBUTEITEM_DATATYPE, null);
-        }
-        if (propertyId.equals(PROPERTY_VALUES)) {
-            return new MethodProperty<Object>(getType(propertyId), 
-            						new AttributeItem(itemId), ATTRIBUTEITEM_VALUES, null);
-        }
-		return null;
-	}
-
-	@Override
-	public Class<?> getType(Object propertyId) {
-        if (propertyId.equals(PROPERTY_ID)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_CATEGORY)) {
-            return Category.class;
-        }
-        if (propertyId.equals(PROPERTY_DATATYPE)) {
-            return Datatype.class;
-        }
-        if (propertyId.equals(PROPERTY_VALUES)) {
-            return Table.class;
-        }
-		return null;
-	}
-
-	@Override
-	public int size() {
-		return this.mapAttributes.size();
-	}
-
-	@Override
-	public boolean containsId(Object itemId) {
-		if (this.isObjectSupported(itemId) == false) {
-			return false;
-		}
-		if (itemId instanceof Category) {
-			return this.mapAttributes.containsKey(itemId);
-		}
-		for (Category category : this.mapAttributes.keySet()) {
-			if (itemId instanceof Datatype) {
-				return this.mapAttributes.get(category).containsKey(itemId);
-			}
-			for (Datatype datatype : this.mapAttributes.get(category).keySet()) {
-				if (itemId instanceof String) {
-					return this.mapAttributes.get(category).get(datatype).containsKey(itemId);
-				}
-				for (String id : this.mapAttributes.get(category).get(datatype).keySet()) {
-					if (itemId instanceof ContainerAttribute) {
-						return this.mapAttributes.get(category).get(datatype).get(id).contains(itemId);
-					}
-				}
-			}
-		}
-		return false;
-	}
-
-	@Override
-	public Item addItem(Object itemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Use addItem(Category, Datatype, AttributeValue<?>) instead.");
-	}
-
-	@Override
-	public Object addItem() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Use addItem(Category, Datatype, AttributeValue<?>) instead.");
-	}
-
-	@Override
-	public boolean addContainerProperty(Object propertyId, Class<?> type,
-			Object defaultValue) throws UnsupportedOperationException {
-		return false;
-	}
-
-	@Override
-	public boolean removeContainerProperty(Object propertyId)
-			throws UnsupportedOperationException {
-		return false;
-	}
-
-	@Override
-	public boolean removeAllItems() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Can't remove all the items. You can remove custom user attributes.");
-	}
-
-	@Override
-	public Collection<?> getChildren(Object itemId) {
-		//
-		// PLD TODO - this may not work for Datatype
-		//
-		final Collection<Object> items = new ArrayList<Object>();
-		for (Category category : this.mapAttributes.keySet()) {
-			for (Datatype datatype : this.mapAttributes.get(category).keySet()) {
-				if (itemId instanceof Category) {
-					items.add(datatype);
-				}
-				for (String id : this.mapAttributes.get(category).get(datatype).keySet()) {
-					if (itemId instanceof Category ||
-						itemId instanceof Datatype) {
-						items.add(id);
-						items.addAll(this.mapAttributes.get(category).get(datatype).get(id));
-					} else if (itemId instanceof String) {
-						items.addAll(this.mapAttributes.get(category).get(datatype).get(id));
-					}
-				}
-			}
-		}
-		return Collections.unmodifiableCollection(items);
-	}
-
-	@Override
-	public Object getParent(Object itemId) {
-		if (this.isObjectSupported(itemId) == false) {
-			return null;
-		}
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Collection<?> rootItemIds() {
-		final Collection<Object> items = new ArrayList<Object>();
-		items.add(this.mapAttributes.keySet());
-		return Collections.unmodifiableCollection(items);
-	}
-
-	@Override
-	public boolean setParent(Object itemId, Object newParentId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Can't move attributes around. Use addItem(Category, Datatype, Attribute).");
-	}
-
-	@Override
-	public boolean areChildrenAllowed(Object itemId) {
-		if (itemId instanceof Category ||
-			itemId instanceof Datatype ||
-			itemId instanceof String) {
-			return true;
-		}
-		return false;
-	}
-
-	@Override
-	public boolean setChildrenAllowed(Object itemId, boolean areChildrenAllowed)
-			throws UnsupportedOperationException {
-		if (itemId instanceof Category ||
-			itemId instanceof Datatype ||
-			itemId instanceof String) {
-			if (areChildrenAllowed) {
-				return true;
-			}
-			return false;
-		}
-		if (areChildrenAllowed == false) {
-			return true;
-		}
-		return false;
-	}
-
-	@Override
-	public boolean isRoot(Object itemId) {
-		return this.mapAttributes.containsKey(itemId);
-	}
-
-	@Override
-	public boolean hasChildren(Object itemId) {
-		if (itemId instanceof ContainerAttribute) {
-			return false;
-		}
-		if (itemId instanceof Category) {
-			if (this.mapAttributes.containsKey(itemId)) {
-				return this.mapAttributes.get(itemId).size() > 0;
-			}
-			return false;
-		}
-		//
-		// PLD TODO - this may not work. Datatype may prove difficult
-		// to distinguish which category it is in.
-		//
-		for (Category category : this.mapAttributes.keySet()) {
-			if (itemId instanceof Datatype) {
-				if (this.mapAttributes.get(category).containsKey(itemId)) {
-					return this.mapAttributes.get(category).get(itemId).size() > 0;
-				}
-				continue;
-			}
-			for (Datatype datatype : this.mapAttributes.get(category).keySet()) {
-				if (itemId instanceof String) {
-					if (this.mapAttributes.get(category).get(datatype).containsKey(itemId)) {
-						return this.mapAttributes.get(category).get(datatype).get(itemId).size() > 0;
-					}
-					continue;
-				}
-			}
-		}
-		return false;
-	}
-
-	@Override
-	public boolean removeItem(Object itemId) throws UnsupportedOperationException {
-		if (! (itemId instanceof ContainerAttribute)) {
-			return false;
-		}
-		for (Category category : this.mapAttributes.keySet()) {
-			for (Datatype datatype : this.mapAttributes.get(category).keySet()) {
-				for (String id : this.mapAttributes.get(category).get(datatype).keySet()) {
-					if (this.mapAttributes.get(category).get(datatype).get(id).contains(itemId)) {
-						return this.mapAttributes.get(category).get(datatype).get(id).remove(itemId);
-					}
-				}
-			}
-		}
-		return false;
-	}
-	
-	public class AttributeItem implements Item {
-		private static final long serialVersionUID = 1L;
-		private final Object data;
-		
-		public AttributeItem(Object data) {
-			this.data = data;
-		}
-		
-		public String getId() {
-			return null;
-		}
-		
-		public Category getCategory() {
-			return null;
-		}
-		
-		public Datatype getDatatype() {
-			return null;
-		}
-		
-		public Table	getValues() {
-			return null;
-		}
-
-		@Override
-		public Property<?> getItemProperty(Object id) {
-            return getContainerProperty(this.data, id);
-		}
-
-		@Override
-		public Collection<?> getItemPropertyIds() {
-	          return getContainerPropertyIds();
-		}
-
-		@Override
-		public boolean addItemProperty(Object id, @SuppressWarnings("rawtypes") Property property) throws UnsupportedOperationException {
-            throw new UnsupportedOperationException("Attribute container does not support adding new properties");
-		}
-		@Override
-		public boolean removeItemProperty(Object id) throws UnsupportedOperationException {
-            throw new UnsupportedOperationException("Attribute container does not support removing properties");
-		}
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/AttributeValueContainer.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/AttributeValueContainer.java
deleted file mode 100644
index 1074936..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/AttributeValueContainer.java
+++ /dev/null
@@ -1,300 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.model;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.model.AttributeContainer.ContainerAttribute;
-import com.vaadin.data.Container;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.data.util.MethodProperty;
-
-public class AttributeValueContainer extends ItemSetChangeNotifier implements Container.Ordered, Container.ItemSetChangeNotifier {
-	private static final long serialVersionUID = 1L;
-	private final Datatype datatype; //NOPMD
-	private final List<ContainerAttribute> attributes;
-
-    /**
-     * String identifier of an object's "Value" property.
-     */
-    public static String PROPERTY_VALUE = "Value";
-
-    /**
-     * String identifier of an object's "Source" property.
-     */
-    public static String PROPERTY_SOURCE = "Source";
-
-    /**
-     * List of the string identifiers for the available properties.
-     */
-    public static Collection<String> ATTRIBUTEVALUE_PROPERTIES;
-
-    private final static Method ATTRIBUTEVALUEITEM_VALUE;
-    private final static Method ATTRIBUTEVALUEITEM_SOURCE;
-    static {
-    	ATTRIBUTEVALUE_PROPERTIES = new ArrayList<String>();
-    	ATTRIBUTEVALUE_PROPERTIES.add(PROPERTY_VALUE);
-    	ATTRIBUTEVALUE_PROPERTIES.add(PROPERTY_SOURCE);
-    	ATTRIBUTEVALUE_PROPERTIES =  Collections.unmodifiableCollection(ATTRIBUTEVALUE_PROPERTIES);
-    	try {
-    		ATTRIBUTEVALUEITEM_VALUE = AttributeValueItem.class.getMethod("getValue", new Class[]{});
-    		ATTRIBUTEVALUEITEM_SOURCE = AttributeValueItem.class.getMethod("getSource", new Class[]{});
-    	} catch (final NoSuchMethodException e) {
-            throw new RuntimeException("Internal error finding methods in AttributeValueContainer");
-        }
-    }
-    
-    public AttributeValueContainer(Datatype datatype, List<ContainerAttribute> attributes) {
-		this.datatype = datatype;
-		this.attributes = attributes;
-	}
-    
-    public boolean isObjectSupported(Object itemId) {
-    	return itemId instanceof ContainerAttribute;
-    }
-
-	@Override
-	public Item getItem(Object itemId) {
-		if (itemId instanceof ContainerAttribute) {
-			return new AttributeValueItem((ContainerAttribute) itemId);
-		}
-		return null;
-	}
-
-	@Override
-	public Collection<?> getContainerPropertyIds() {
-		return ATTRIBUTEVALUE_PROPERTIES;
-	}
-
-	@Override
-	public Collection<?> getItemIds() {
-		return Collections.unmodifiableList(this.attributes);
-	}
-
-	@Override
-	public Property<?> getContainerProperty(Object itemId, Object propertyId) {
-		if (this.isObjectSupported(itemId) == false) {
-			return null;
-		}
-        if (propertyId.equals(PROPERTY_VALUE)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new AttributeValueItem((ContainerAttribute) itemId), ATTRIBUTEVALUEITEM_VALUE, null);
-        }
-
-        if (propertyId.equals(PROPERTY_SOURCE)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new AttributeValueItem((ContainerAttribute) itemId), ATTRIBUTEVALUEITEM_SOURCE, null);
-        }
-		return null;
-	}
-
-	@Override
-	public Class<?> getType(Object propertyId) {
-        if (propertyId.equals(PROPERTY_VALUE)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_SOURCE)) {
-            return String.class;
-        }
-		return null;
-	}
-
-	@Override
-	public int size() {
-		return this.attributes.size();
-	}
-
-	@Override
-	public boolean containsId(Object itemId) {
-		return this.attributes.contains(itemId);
-	}
-
-	@Override
-	public Item addItem(Object itemId) throws UnsupportedOperationException {
-		if (this.isObjectSupported(itemId) == false) {
-			return null;
-		}
-		return new AttributeValueItem((ContainerAttribute) itemId);
-	}
-
-	@Override
-	public Object addItem() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Please use addItem(Object itemId) - setup the container attribute first.");
-	}
-
-	@Override
-	public boolean removeItem(Object itemId) throws UnsupportedOperationException {
-		if (this.isObjectSupported(itemId) == false) {
-			return false;
-		}
-		throw new UnsupportedOperationException("TODO");
-//		return this.attributes.remove(itemId);
-	}
-
-	@Override
-	public boolean addContainerProperty(Object propertyId, Class<?> type,
-			Object defaultValue) throws UnsupportedOperationException {
-		return false;
-	}
-
-	@Override
-	public boolean removeContainerProperty(Object propertyId)
-			throws UnsupportedOperationException {
-		return false;
-	}
-
-	@Override
-	public boolean removeAllItems() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("TODO");
-//		this.attributes.clear();
-//		return true;
-	}
-
-	@Override
-	public Object nextItemId(Object itemId) {
-		if (this.isObjectSupported(itemId) == false) {
-			return null;
-		}
-		int index = this.getItemIndex((ContainerAttribute) itemId);
-		if (index == -1 || index >= this.attributes.size()) {
-			return null;
-		}
-		return this.attributes.get(index + 1);
-	}
-
-	@Override
-	public Object prevItemId(Object itemId) {
-		if (this.isObjectSupported(itemId) == false) {
-			return null;
-		}
-		int index = this.getItemIndex((ContainerAttribute) itemId);
-		if (index == -1 || index == 0) {
-			return null;
-		}
-		return this.attributes.get(index - 1);
-	}
-
-	@Override
-	public Object firstItemId() {
-		if (this.attributes.size() > 0) {
-			return this.attributes.get(0);
-		}
-		return null;
-	}
-
-	@Override
-	public Object lastItemId() {
-		if (this.attributes.size() > 0) {
-			return this.attributes.get(this.attributes.size() - 1);
-		}
-		return null;
-	}
-
-	@Override
-	public boolean isFirstId(Object itemId) {
-		if (this.attributes.size() > 0) {
-			return this.attributes.get(0).equals(itemId);
-		}
-		return false;
-	}
-
-	@Override
-	public boolean isLastId(Object itemId) {
-		if (this.attributes.size() > 0) {
-			return this.attributes.get(this.attributes.size() - 1).equals(itemId);
-		}
-		return false;
-	}
-
-	@Override
-	public Object addItemAfter(Object previousItemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Use addItemAfter(Object previousItemId, Object newItemId) - please create the object yourself.");
-	}
-
-	@Override
-	public Item addItemAfter(Object previousItemId, Object newItemId) throws UnsupportedOperationException {
-		if (this.isObjectSupported(previousItemId) == false || this.isObjectSupported(newItemId) == false) {
-			return null;
-		}
-		int index = this.getItemIndex((ContainerAttribute) previousItemId);
-		if (index >= 0) {
-			this.attributes.add(index, (ContainerAttribute) newItemId);
-		}
-		return null;
-	}
-	
-	protected int	getItemIndex(ContainerAttribute itemId) {
-		int index;
-		for (index = 0; index < this.attributes.size(); index++) {
-			if (this.attributes.get(index).equals(itemId)) {
-				return index;
-			}
-		}
-		return -1;
-	}
-	
-	public class AttributeValueItem implements Item {
-		private static final long serialVersionUID = 1L;
-		private final ContainerAttribute attribute;
-		
-		public AttributeValueItem(ContainerAttribute attribute) {
-			this.attribute = attribute;
-		}
-
-		public String getValue() {
-			if (this.attribute == null) {
-				return null;
-			}
-			return this.attribute.value.toString();
-		}
-
-		public String getSource() {
-			if (this.attribute == null) {
-				return null;
-			}
-			return this.attribute.value.toString();
-		}
-
-		@Override
-		public Property<?> getItemProperty(Object id) {
-            return getContainerProperty(this.attribute, id);
-		}
-		@Override
-		public Collection<?> getItemPropertyIds() {
-           return getContainerPropertyIds();
-		}
-		@Override
-		public boolean addItemProperty(Object id, @SuppressWarnings("rawtypes") Property property) throws UnsupportedOperationException {
-            throw new UnsupportedOperationException("Attribute Value container does not support adding new properties");
-		}
-		@Override
-		public boolean removeItemProperty(Object id) throws UnsupportedOperationException {
-            throw new UnsupportedOperationException("Attribute Value container does not support removing properties");
-		}
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/ExpressionContainer.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/ExpressionContainer.java
deleted file mode 100644
index 30c8670..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/ExpressionContainer.java
+++ /dev/null
@@ -1,1215 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.model;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.xml.bind.JAXBElement;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ApplyType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeAssignmentExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeSelectorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ConditionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.FunctionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableDefinitionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableReferenceType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.FunctionArgument;
-import org.apache.openaz.xacml.admin.jpa.FunctionDefinition;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.admin.util.XACMLFunctionValidator;
-import com.vaadin.data.Container;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.data.util.MethodProperty;
-
-public class ExpressionContainer extends ItemSetChangeNotifier implements Container.Hierarchical, Container.ItemSetChangeNotifier {
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(ExpressionContainer.class);
-	
-	/**
-     * String identifier of a file's "name" property.
-     */
-    public static String PROPERTY_NAME = "Name";
-
-    /**
-     * String identifier of an object's "id" property.
-     */
-    public static String PROPERTY_ID = "Id";
-
-    /**
-     * String identifier of an object's "datatype" property.
-     */
-    public static String PROPERTY_DATATYPE_SHORT = "shortDatatype";
-
-    /**
-     * String identifier of an object's "id" property.
-     */
-    public static String PROPERTY_ID_SHORT = "shortId";
-
-    /**
-     * String identifier of an object's "datatype" property.
-     */
-    public static String PROPERTY_DATATYPE = "Datatype";
-
-    /**
-     * List of the string identifiers for the available properties.
-     */
-    public static Collection<String> EXPRESSION_PROPERTIES;
-
-    private final static Method EXPRESSIONITEM_NAME;
-    
-    private final static Method EXPRESSIONITEM_ID;
-
-    private final static Method EXPRESSIONITEM_DATATYPE;
-
-    private final static Method EXPRESSIONITEM_ID_SHORT;
-
-    private final static Method EXPRESSIONITEM_DATATYPE_SHORT;
-
-    static {
-    	EXPRESSION_PROPERTIES = new ArrayList<String>();
-    	EXPRESSION_PROPERTIES.add(PROPERTY_NAME);
-    	EXPRESSION_PROPERTIES.add(PROPERTY_ID);
-    	EXPRESSION_PROPERTIES.add(PROPERTY_DATATYPE);
-    	EXPRESSION_PROPERTIES.add(PROPERTY_ID_SHORT);
-    	EXPRESSION_PROPERTIES.add(PROPERTY_DATATYPE_SHORT);
-    	EXPRESSION_PROPERTIES = Collections.unmodifiableCollection(EXPRESSION_PROPERTIES);
-    	try {
-    		EXPRESSIONITEM_NAME = ExpressionItem.class.getMethod("getName", new Class[]{});
-    		EXPRESSIONITEM_ID = ExpressionItem.class.getMethod("getId", new Class[]{});
-    		EXPRESSIONITEM_DATATYPE = ExpressionItem.class.getMethod("getDatatype", new Class[]{});
-    		EXPRESSIONITEM_ID_SHORT = ExpressionItem.class.getMethod("getIdShort", new Class[]{});
-    		EXPRESSIONITEM_DATATYPE_SHORT = ExpressionItem.class.getMethod("getDatatypeShort", new Class[]{});
-        } catch (final NoSuchMethodException e) {
-            throw new RuntimeException(
-                    "Internal error finding methods in PolicyContainer");
-        }
-    }
-    
-    protected class ApplyParent {
-    	ApplyType apply;
-    	FunctionArgument argument;
-    	
-    	public ApplyParent(ApplyType apply, FunctionArgument argument) {
-    		this.apply = apply;
-    		this.argument = argument;
-    	}
-
-		public ApplyType getApply() {
-			return apply;
-		}
-
-		public void setApply(ApplyType apply) {
-			this.apply = apply;
-		}
-
-		public FunctionArgument getArgument() {
-			return argument;
-		}
-
-		public void setArgument(FunctionArgument argument) {
-			this.argument = argument;
-		}
-    }
-    //
-    // Our parent object information and which argument we are
-    // from our parent (relevant to the Apply).
-    //
-    private final Object parent;
-    private final FunctionArgument argument;
-    //
-    // The root object of the expression
-    //
-    private Object root;
-    //
-    // Our helper tables for organization purposes and to
-    // make sure the correct functions/datatypes are being
-    // setup.
-    //
-    private Map<ApplyType, ApplyParent>					applys = new HashMap<ApplyType, ApplyParent>();
-    private Map<FunctionType, ApplyParent>				functions = new HashMap<FunctionType, ApplyParent>();
-    private Map<AttributeValueType, ApplyParent>		values = new HashMap<AttributeValueType, ApplyParent>();
-    private Map<AttributeDesignatorType, ApplyParent>	designators = new HashMap<AttributeDesignatorType, ApplyParent>();
-    private Map<AttributeSelectorType, ApplyParent>		selectors = new HashMap<AttributeSelectorType, ApplyParent>();
-    private Map<VariableReferenceType, ApplyParent>		variables = new HashMap<VariableReferenceType, ApplyParent>();
-    private Map<ExpressionType, ApplyParent>			expressions = new HashMap<ExpressionType, ApplyParent>();
-    	
-    public ExpressionContainer(Object parent, Object root, FunctionArgument argument) {
-		super();
-		this.setContainer(this);
-		this.parent = parent;
-		this.root = root;
-		this.argument = argument;
-		this.initialize();
-	}
-    
-    private void initialize() {
-    	if (logger.isTraceEnabled()) {
-    		logger.trace("Initializing: " + this.parent + " " + this.argument + " " + this.root);
-    	}
-    	//
-    	// Make sure we support the parent object
-    	//
-    	@SuppressWarnings("unused")
-		JAXBElement<?> rootElement = null;
-    	if (this.parent instanceof ConditionType) {
-    		rootElement = ((ConditionType) this.parent).getExpression();
-    	} else if (this.parent instanceof VariableDefinitionType) {
-    		rootElement = ((VariableDefinitionType) this.parent).getExpression();
-    	} else if (this.parent instanceof AttributeAssignmentExpressionType) {
-    		rootElement = ((AttributeAssignmentExpressionType) this.parent).getExpression();
-    	} else if (this.parent instanceof ApplyType) {
-    		//
-    		// They must tell us which argument we are
-    		//
-    		if (this.argument == null) {
-        		throw new IllegalArgumentException("Must supply Argument object when editing a parent ApplyType's child node");
-    		}
-    		//
-    		// Finish the initialization
-    		//
-    		this.initializeRoot();
-    	} else {
-    		throw new IllegalArgumentException("Unsupported Parent Object: " + this.parent.getClass().getCanonicalName());
-    	}
-    	/*
-    	//
-    	// Check if there actually is a root
-    	//
-    	if (rootElement == null || rootElement.getValue() == null) {
-    		//
-    		// Creating a new one
-    		//
-    		return;
-    	}
-		//
-		// Save the root
-		//
-		this.root = rootElement.getValue();
-		*/
-		//
-		// Finish initializing
-		//
-		this.initializeRoot();
-   }
-
-    private void initializeRoot() {
-    	//
-    	// Sanity check
-    	//
-    	if (this.root == null) {
-    		return;
-    	}
-		//
-		// Figure out the expression type
-		//
-		if (this.root instanceof ApplyType) {
-		   	if (logger.isTraceEnabled()) {
-		   		logger.trace("Root Is Apply");
-		   	}
-		   	//
-			// Save it
-			//
-			this.applys.put((ApplyType) this.root, null);
-			//
-			// Determine the function for this Apply
-			//
-			Map<String, FunctionDefinition> functions = JPAUtils.getFunctionIDMap();
-			FunctionDefinition function  = functions.get(((ApplyType) this.root).getFunctionId());
-			if (function == null) {
-				logger.warn("root apply does not have a function defined");
-				return;
-			}
-			//
-			// Bring in its children
-			//
-			this.initializeChildren((ApplyType) this.root, function);
-		} else if (this.root instanceof AttributeValueType) {
-		   	if (logger.isTraceEnabled()) {
-		   		logger.trace("Root Is Attribute Value");
-		   	}
-			//
-			// Save it
-			//
-			this.values.put((AttributeValueType) this.root, null);
-		} else if (this.root instanceof AttributeDesignatorType) {
-		   	if (logger.isTraceEnabled()) {
-		   		logger.trace("Root Is Attribute Designator");
-		   	}
-			//
-			// Save it
-			//
-			this.designators.put((AttributeDesignatorType) this.root, null);
-		} else if (this.root instanceof AttributeSelectorType) {
-		   	if (logger.isTraceEnabled()) {
-		   		logger.trace("Root Is Attribute Selector");
-		   	}
-			//
-			// Save it
-			//
-			this.selectors.put((AttributeSelectorType) this.root, null);
-		} else if (this.root instanceof VariableReferenceType) {
-		   	if (logger.isTraceEnabled()) {
-		   		logger.trace("Root Is Variable Reference");
-		   	}
-			//
-			// Save it
-			//
-			this.variables.put((VariableReferenceType) this.root, null);
-		} else if (this.root instanceof FunctionType) {
-		   	if (logger.isTraceEnabled()) {
-		   		logger.trace("Root Is Function");
-		   	}
-			//
-			// Save it - Really? I don't think the root would ever be a function.
-			//
-			this.functions.put((FunctionType) this.root, null);
-		} else {
-			throw new IllegalArgumentException("Unsupported Expression Root Item: " + this.root.getClass().getCanonicalName());
-		}
-    }
-    
-    private void initializeChildren(ApplyType apply, FunctionDefinition function) {
-    	int index = 1;
-    	for (JAXBElement<?> child : apply.getExpression()) {
-    		//
-    		// Validate the child
-    		//
-    		if (child.getValue() == null) {
-    			logger.warn("child element " + index + "has a null object.");
-    			index++;
-    			continue;
-    		}
-		   	if (logger.isTraceEnabled()) {
-		   		logger.trace("Child " + index + " is " + child.getValue());
-		   	}
-    		//
-    		// Get the argument for this child
-    		//
-    		if (function == null) {
-    			throw new IllegalArgumentException("Apply has children but no function defined.");
-    		}
-    		FunctionArgument argument = XACMLFunctionValidator.getFunctionArgument(index, function);
-		   	if (logger.isTraceEnabled()) {
-		   		logger.trace("Child's argument is: " + argument);
-		   	}
-    		if (argument == null) {
-    			//throw new Exception("Unable to find function argument: " + index + " " + function.getId() + " " + function.getShortname());
-    			return;
-    		}
-			//
-			// See if its another apply type
-			//
-    		if (child.getValue() instanceof ApplyType) {
-    			//
-    			// Save it
-    			//
-    			this.applys.put((ApplyType) child.getValue(), new ApplyParent(apply, argument));
-    			//
-    			// Get its function information
-    			//
-    			Map<String, FunctionDefinition> functions = JPAUtils.getFunctionIDMap();
-    			FunctionDefinition childFunction  = functions.get(((ApplyType) child.getValue()).getFunctionId());
-    			if (childFunction == null) {
-    				logger.warn("Apply object " + index + " does not have a function defined");
-    			} else {
-	    			//
-	    			// Bring in its children
-	    			//
-	    			this.initializeChildren((ApplyType) child.getValue(), childFunction);
-    			}
-    		} else if (child.getValue() instanceof AttributeValueType) {
-    			//
-    			// Save it
-    			//
-    			this.values.put((AttributeValueType) child.getValue(), new ApplyParent(apply, argument));
-    		} else if (child.getValue() instanceof AttributeDesignatorType) {
-    			//
-    			// Save it
-    			//
-    			this.designators.put((AttributeDesignatorType) child.getValue(), new ApplyParent(apply, argument));
-    		} else if (child.getValue() instanceof AttributeSelectorType) {
-    			//
-    			// Save it
-    			//
-    			this.selectors.put((AttributeSelectorType) child.getValue(), new ApplyParent(apply, argument));
-    		} else if (child.getValue() instanceof VariableReferenceType) {
-    			//
-    			// Save it
-    			//
-    			this.variables.put((VariableReferenceType) child.getValue(), new ApplyParent(apply, argument));
-    		} else if (child.getValue() instanceof FunctionType) {
-    			//
-    			// Save it
-    			//
-    			this.functions.put((FunctionType) child.getValue(), new ApplyParent(apply, argument));
-    		} else if (child.getValue() instanceof ExpressionType) {
-    			//
-    			// Save it
-    			//
-    			this.expressions.put((ExpressionType) child.getValue(), new ApplyParent(apply, argument));
-    		} else {
-    			logger.error("Unknown child type: " + child.getClass().getCanonicalName());
-    		}
-    		index++;
-    	}
-    }
-    
-    protected boolean	isObjectSupported(Object itemId) {
-		if (itemId instanceof ApplyType ||
-			itemId instanceof AttributeValueType ||
-			itemId instanceof AttributeDesignatorType ||
-			itemId instanceof AttributeSelectorType ||
-			itemId instanceof VariableReferenceType ||
-			itemId instanceof FunctionType ||
-			itemId instanceof ExpressionType) {
-			return true;
-		}
-		return false;
-    }
-    
-    protected boolean isParentObjectSupport(Object parent) {
-		if (parent instanceof ApplyType ||
-			parent instanceof ConditionType ||
-			parent instanceof VariableDefinitionType ||
-			parent instanceof AttributeAssignmentExpressionType) {
-			return true;
-		}
-		return false;
-    }
-    
-	public void updateItem(Object itemId) {
-		//
-		// Sanity check
-		//
-		if (this.isObjectSupported(itemId) == false) {
-			return;// null;
-		}
-		//
-		// Notify - the real reason for this function
-		//
-		this.fireItemSetChange();
-		//
-		// Return the item
-		//
-		//return new ExpressionItem(itemId);
-	}
-
-	@Override
-	public Item getItem(Object itemId) {
-		if (this.isObjectSupported(itemId) == false) {
-			return null;
-		}
-		return new ExpressionItem(itemId);
-	}
-
-	@Override
-	public Collection<?> getContainerPropertyIds() {
-		return EXPRESSION_PROPERTIES;
-	}
-
-	@Override
-	public Collection<?> getItemIds() {
-		final Collection<Object> items = new ArrayList<Object>();
-		if (this.root != null) {
-			//
-			// Add the root object
-			//
-			items.add(this.root);
-			//
-			// If its an apply, it could have children
-			//
-			if (this.root instanceof ApplyType) {
-				items.add(this.getChildrenIds((ApplyType) this.root, true));
-			}
-		}
-		if (logger.isTraceEnabled()) {
-			logger.trace("getItemIds (" + items.size() + "):" + items);
-		}
-		return Collections.unmodifiableCollection(items);
-	}
-	
-	protected Collection<?> getChildrenIds(ApplyType apply, boolean recursive) {
-		Collection<Object> items = new ArrayList<Object>();
-    	for (JAXBElement<?> child : apply.getExpression()) {
-    		//
-    		// Make sure there's a value
-    		//
-    		if (child.getValue() == null) {
-    			continue;
-    		}
-    		//
-    		// What kind is it?
-    		//
-    		if (child.getValue() instanceof ApplyType) {
-    			items.add(child.getValue());
-    			//
-    			// Do we add its children?
-    			//
-    			if (recursive) {
-        			items.addAll(this.getChildrenIds((ApplyType) child.getValue(), true));
-    			}
-    		} else if (child.getValue() instanceof AttributeValueType) {
-    			items.add(child.getValue());
-    		} else if (child.getValue() instanceof AttributeDesignatorType) {
-    			items.add(child.getValue());
-    		} else if (child.getValue() instanceof AttributeSelectorType) {
-    			items.add(child.getValue());
-    		} else if (child.getValue() instanceof VariableReferenceType) {
-    			items.add(child.getValue());
-    		} else if (child.getValue() instanceof FunctionType) {
-    			items.add(child.getValue());
-    		} else if (child.getValue() instanceof ExpressionType) {
-    			items.add(child.getValue());
-    		}
-    	}		
-		if (logger.isTraceEnabled()) {
-			logger.trace("getChildrenIds " + apply.getFunctionId() + " (" + items.size() + "):" + items);
-		}
-		return items;
-	}
-
-	@Override
-	public Property<?> getContainerProperty(Object itemId, Object propertyId) {
-		if (this.isObjectSupported(itemId) == false) {
-			return null;
-		}
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new ExpressionItem(itemId), EXPRESSIONITEM_NAME, null);
-        }
-
-        if (propertyId.equals(PROPERTY_ID)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new ExpressionItem(itemId), EXPRESSIONITEM_ID, null);
-        }
-		
-        if (propertyId.equals(PROPERTY_DATATYPE)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new ExpressionItem(itemId), EXPRESSIONITEM_DATATYPE, null);
-        }
-		
-        if (propertyId.equals(PROPERTY_ID_SHORT)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new ExpressionItem(itemId), EXPRESSIONITEM_ID_SHORT, null);
-        }
-		
-        if (propertyId.equals(PROPERTY_DATATYPE_SHORT)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new ExpressionItem(itemId), EXPRESSIONITEM_DATATYPE_SHORT, null);
-        }
-		
-		return null;
-	}
-
-	@Override
-	public Class<?> getType(Object propertyId) {
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_ID)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_DATATYPE)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_ID_SHORT)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_DATATYPE_SHORT)) {
-            return String.class;
-        }
-		return null;
-	}
-
-	@Override
-	public int size() {
-		int size = 0;
-		size += this.applys.size();
-		size += this.designators.size();
-		size += this.functions.size();
-		size += this.selectors.size();
-		size += this.values.size();
-		size += this.variables.size();
-		size += this.expressions.size();
-		return size;
-	}
-
-	@Override
-	public boolean containsId(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("containsId: " + itemId);
-		}
-		if (itemId instanceof ApplyType) {
-			return this.applys.containsKey(itemId);
-		}
-		if (itemId instanceof AttributeValueType) {
-			return this.values.containsKey(itemId);
-		}
-		if (itemId instanceof AttributeDesignatorType) {
-			return this.designators.containsKey(itemId);
-		}
-		if (itemId instanceof AttributeSelectorType) {
-			return this.selectors.containsKey(itemId);
-		}
-		if (itemId instanceof VariableReferenceType) {
-			return this.variables.containsKey(itemId);
-		}
-		if (itemId instanceof FunctionType) {
-			return this.functions.containsKey(itemId);
-		}
-		if (itemId instanceof ExpressionType) {
-			return this.expressions.containsKey(itemId);
-		}
-		return false;
-	}
-
-	@Override
-	public Item addItem(Object itemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Please use the addItem(Object, Object) method instead.");
-	}
-
-	@Override
-	public Object addItem() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("use addItem(Object itemId)");
-	}
-	
-	public Item addItem(Object itemId, ApplyType parent, FunctionArgument argument) throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("addItem: " + itemId + " " + parent + " " + argument);
-		}
-		//
-		// Make sure we support the object
-		//
-		if (this.isObjectSupported(itemId) == false) {
-			return null;
-		}
-		//
-		// Is is a root?
-		//
-		if (parent == null) {
-			//
-			// Setting root
-			//
-			if (this.root != null) {
-				throw new UnsupportedOperationException("Cannot add another root item. Remove the current root first.");
-			}
-			//
-			// Save the root information
-			//
-			this.root = itemId;
-			//
-			// Add its children
-			//
-			this.initializeRoot();
-			//
-			// Add it to our root container
-			//
-			if (this.parent instanceof ApplyType) {
-				((ApplyType) this.parent).getExpression().add(this.createElement(this.root));
-			} else if (this.parent instanceof ConditionType) {
-				((ConditionType) this.parent).setExpression(this.createElement(this.root));
-			} else if (this.parent instanceof VariableDefinitionType) {
-				((VariableDefinitionType) this.parent).setExpression(this.createElement(this.root));
-			} else if (this.parent instanceof AttributeAssignmentExpressionType) {
-				((AttributeAssignmentExpressionType) this.parent).setExpression(this.createElement(this.root));
-			} else {
-				logger.error("unknown parent class: " + this.parent.getClass().getCanonicalName());
-			}
-			//
-			// Notify that we changed
-			//
-			this.fireItemSetChange();
-			//
-			// Return new item
-			//
-			return new ExpressionItem(this.root);
-		}
-		//
-		// Check what kind of item this is
-		//
-		if (itemId instanceof ApplyType) {
-			//
-			this.applys.put((ApplyType) itemId, new ApplyParent(parent, argument));
-			((ApplyType) parent).getExpression().add(new ObjectFactory().createApply((ApplyType) itemId));
-			//
-			// Get its function information
-			//
-			Map<String, FunctionDefinition> functions = JPAUtils.getFunctionIDMap();
-			FunctionDefinition childFunction  = functions.get(((ApplyType) itemId).getFunctionId());
-			if (childFunction == null) {
-				//
-				// NO function defined
-				//
-				logger.warn("no function defined for apply being added.");
-			} else {
-				//
-				// Add its children
-				//
-				this.initializeChildren((ApplyType) itemId, childFunction);
-			}
-		} else if (itemId instanceof AttributeValueType) {
-			//
-			this.values.put((AttributeValueType) itemId, new ApplyParent(parent, argument));
-			parent.getExpression().add(new ObjectFactory().createAttributeValue((AttributeValueType) itemId));
-			//
-		} else if (itemId instanceof AttributeDesignatorType) {
-			//
-			this.designators.put((AttributeDesignatorType) itemId, new ApplyParent(parent, argument));
-			parent.getExpression().add(new ObjectFactory().createAttributeDesignator((AttributeDesignatorType) itemId));
-			//
-		} else if (itemId instanceof AttributeSelectorType) {
-			//
-			this.selectors.put((AttributeSelectorType) itemId, new ApplyParent(parent, argument));
-			parent.getExpression().add(new ObjectFactory().createAttributeSelector((AttributeSelectorType) itemId));
-			//
-		} else if (itemId instanceof VariableReferenceType) {
-			//
-			this.variables.put((VariableReferenceType) itemId, new ApplyParent(parent, argument));
-			parent.getExpression().add(new ObjectFactory().createVariableReference((VariableReferenceType) itemId));
-			//
-		} else if (itemId instanceof FunctionType) {
-			//
-			this.functions.put((FunctionType) itemId, new ApplyParent(parent, argument));
-			parent.getExpression().add(new ObjectFactory().createFunction((FunctionType) itemId));
-			//
-		} else if (itemId instanceof ExpressionType) {
-			//
-			this.expressions.put((ExpressionType) itemId, new ApplyParent(parent, argument));
-			parent.getExpression().add(new ObjectFactory().createExpression((ExpressionType) itemId));
-		} else {
-			logger.error("unknown itemId class: " + itemId.getClass().getCanonicalName());
-			return null;
-		}
-		//
-		// Notify
-		//
-		this.fireItemSetChange();
-		return new ExpressionItem(itemId);
-	}
-	
-	private JAXBElement<?> createElement(Object item) {
-		if (item instanceof ApplyType) {
-			return new ObjectFactory().createApply((ApplyType) item);
-		} else if (item instanceof AttributeValueType) {
-			return new ObjectFactory().createAttributeValue((AttributeValueType) item);
-		} else if (item instanceof AttributeDesignatorType) {
-			return new ObjectFactory().createAttributeDesignator((AttributeDesignatorType) item);
-		} else if (item instanceof AttributeSelectorType) {
-			return new ObjectFactory().createAttributeSelector((AttributeSelectorType) item);
-		} else if (item instanceof VariableReferenceType) {
-			return new ObjectFactory().createVariableReference((VariableReferenceType) item);
-		} else if (item instanceof FunctionType) {
-			return new ObjectFactory().createFunction((FunctionType) item);
-		} else if (item instanceof ExpressionType) {
-			return new ObjectFactory().createExpression((ExpressionType) item);
-		}
-		return null;
-	}
-	
-	@Override
-	public boolean addContainerProperty(Object propertyId, Class<?> type,
-			Object defaultValue) throws UnsupportedOperationException {
-		return false;
-	}
-
-	@Override
-	public boolean removeContainerProperty(Object propertyId)
-			throws UnsupportedOperationException {
-		return false;
-	}
-
-	@Override
-	public boolean removeAllItems() throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("removeAllItems: ");
-		}
-		boolean result = this.doRemoveAllItems();
-		if (result == false) {
-			return false;
-		}
-		//
-		// Notify
-		//
-		this.fireItemSetChange();
-		//
-		// Done
-		//
-		return true;
-	}
-
-	public boolean doRemoveAllItems() throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("doRemoveAllItems: ");
-		}
-		//
-		// Removing the root item, make sure its removed from
-		// the parent.
-		//
-		if (this.parent instanceof ConditionType) {
-			((ConditionType) this.parent).setExpression(null);
-		} else if (this.parent instanceof VariableDefinitionType) {
-			((VariableDefinitionType) this.parent).setExpression(null);
-		} else if (this.parent instanceof AttributeAssignmentExpressionType) {
-			((AttributeAssignmentExpressionType) this.parent).setExpression(null);
-		} else if (this.parent instanceof ApplyType) {
-			//
-			// TODO ?? Special case
-			//
-			return false;
-		} else {
-			return false;
-		}
-		//
-		// Null our root
-		//
-		this.root = null;
-		//
-		// Clear out our maps
-		//
-		this.applys.clear();
-		this.designators.clear();
-		this.functions.clear();
-		this.values.clear();
-		this.selectors.clear();
-		this.variables.clear();
-		this.expressions.clear();
-		//
-		// Done
-		//
-		return true;
-	}
-
-	@Override
-	public Collection<?> getChildren(Object itemId) {
-		final Collection<Object> items = new ArrayList<Object>();
-		if (itemId instanceof ApplyType) {
-			items.addAll(this.getChildrenIds((ApplyType) itemId, false));
-		}
-		if (logger.isTraceEnabled()) {
-			logger.trace("getChildren " + itemId + " (" + items.size() + "):" + items);
-		}
-		return Collections.unmodifiableCollection(items);
-	}
-	
-	public FunctionArgument getArgument(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("getArgument: " + itemId);
-		}
-		//
-		// First check if its a root
-		//
-		if (this.isRoot(itemId)) {
-			return null;
-		}
-		//
-		// Not a root - should be in the maps
-		//
-		if (itemId instanceof ApplyType) {
-			return this.applys.get(itemId).getArgument();
-		}
-		if (itemId instanceof AttributeValueType) {
-			return this.values.get(itemId).getArgument();
-		}
-		if (itemId instanceof AttributeDesignatorType) {
-			return this.designators.get(itemId).getArgument();
-		}
-		if (itemId instanceof AttributeSelectorType) {
-			return this.selectors.get(itemId).getArgument();
-		}
-		if (itemId instanceof VariableReferenceType) {
-			return this.variables.get(itemId).getArgument();
-		}
-		if (itemId instanceof FunctionType) {
-			return this.functions.get(itemId).getArgument();
-		}
-		if (itemId instanceof ExpressionType) {
-			return this.expressions.get(itemId).getArgument();
-		}
-		return null;
-	}
-
-	@Override
-	public Object getParent(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("getParent: " + itemId);
-		}
-		//
-		// First check if its a root
-		//
-		if (this.isRoot(itemId)) {
-			return null;
-		}
-		//
-		// Not a root - should be in the maps
-		//
-		if (itemId instanceof ApplyType) {
-			return this.applys.get(itemId).getApply();
-		}
-		if (itemId instanceof AttributeValueType) {
-			return this.values.get(itemId).getApply();
-		}
-		if (itemId instanceof AttributeDesignatorType) {
-			return this.designators.get(itemId).getApply();
-		}
-		if (itemId instanceof AttributeSelectorType) {
-			return this.selectors.get(itemId).getApply();
-		}
-		if (itemId instanceof VariableReferenceType) {
-			return this.variables.get(itemId).getApply();
-		}
-		if (itemId instanceof FunctionType) {
-			return this.functions.get(itemId).getApply();
-		}
-		if (itemId instanceof ExpressionType) {
-			return this.expressions.get(itemId).getApply();
-		}
-		return null;
-	}
-
-	@Override
-	public Collection<?> rootItemIds() {
-		final Collection<Object> items = new ArrayList<Object>();
-		if (this.root != null) {
-			items.add(this.root);
-		}
-		if (logger.isTraceEnabled()) {
-			logger.trace("rootItemIds " + " (" + items.size() + "):" + items);
-		}
-		return Collections.unmodifiableCollection(items);
-	}
-
-	@Override
-	public boolean setParent(Object itemId, Object newParentId) throws UnsupportedOperationException {
-		//
-		// TODO we can support this later
-		//
-		throw new UnsupportedOperationException("Should we support this? Can be tricky. Most likely user dragging an item from one area to another. For now, use removeItem, addItem.");
-	}
-
-	@Override
-	public boolean areChildrenAllowed(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("areChildrenAllowed: " + itemId);
-		}
-		if (itemId instanceof ApplyType) {
-			return true;
-		}
-		return false;
-	}
-
-	@Override
-	public boolean setChildrenAllowed(Object itemId, boolean areChildrenAllowed)
-			throws UnsupportedOperationException {
-		if (itemId instanceof ApplyType && areChildrenAllowed) {
-			return true;
-		}
-		if (! areChildrenAllowed) {
-			return true;
-		}
-		return false;
-	}
-
-	@Override
-	public boolean isRoot(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("isRoot: " + itemId);
-		}
-		if (itemId == null) {
-			logger.error("isRoot itemId is NULL");
-		}
-		return this.root == itemId;
-	}
-
-	@Override
-	public boolean hasChildren(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("hasChildren: " + itemId);
-		}
-		if (itemId instanceof ApplyType) {
-			return ((ApplyType)itemId).getExpression().size() > 0;
-		}
-		return false;
-	}
-
-	@Override
-	public boolean removeItem(Object itemId) throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("removeItem: " + itemId);
-		}
-		//
-		// Check if they are removing the root
-		//
-		if (this.root == itemId) {
-			//
-			// Removing the root item, make sure its removed from
-			// the parent.
-			//
-			boolean result = this.doRemoveAllItems();
-			if (result == false) {
-				return false;
-			}
-			//
-			// Notify
-			//
-			this.fireItemSetChange();
-			return true;
-		}
-		//
-		// There should be a parent
-		//
-		ApplyParent parent = null;
-		//
-		// Remove the item from the maps
-		//
-		if (itemId instanceof ApplyType) {
-			parent = this.applys.get(itemId);
-			if (parent == null) {
-				return false;
-			}
-			if (this.applys.remove(itemId) == null) {
-				return false;
-			}
-		} else if (itemId instanceof AttributeValueType) {
-			parent = this.values.get(itemId);
-			if (this.values.remove(itemId) == null) {
-				return false;
-			}
-		} else if (itemId instanceof AttributeDesignatorType) {
-			parent = this.designators.get(itemId);
-			if (this.designators.remove(itemId) == null) {
-				return false;
-			}
-		} else if (itemId instanceof AttributeSelectorType) {
-			parent = this.selectors.get(itemId);
-			if (this.selectors.remove(itemId) == null) {
-				return false;
-			}
-		} else if (itemId instanceof VariableReferenceType) {
-			parent = this.variables.get(itemId);
-			if (this.variables.remove(itemId) == null) {
-				return false;
-			}
-		} else if (itemId instanceof FunctionType) {
-			parent = this.functions.get(itemId);
-			if (this.functions.remove(itemId) == null) {
-				return false;
-			}
-		} else if (itemId instanceof ExpressionType) {
-			parent = this.expressions.get(itemId);
-			if (this.expressions.remove(itemId) != null) {
-				return false;
-			}
-		} else {
-			return false;
-		}
-		//
-		// Remove it from the parent Apply
-		//
-		boolean removed = false;
-		for (JAXBElement<?> element : parent.getApply().getExpression()) {
-			if (element.getValue().equals(itemId)) {
-				if (parent.getApply().getExpression().remove(element)) {
-					removed = true;
-					break;
-				}
-				break;
-			}
-		}
-		if (! removed) {
-			//
-			// Out of sync
-			//
-			logger.warn("Removing item from parent returned false, although we were able to remove it from our maps.");
-		}
-		//
-		// Notify
-		//
-		this.fireItemSetChange();
-		return true;
-	}
-
-	public class ExpressionItem implements Item {
-		private static final long serialVersionUID = 1L;
-		private final Object data;
-		
-		public ExpressionItem(Object data) {
-			this.data = data;
-		}
-		
-		public String getName() {
-			if (this.data instanceof ApplyType) {
-				if (((ApplyType) this.data).getDescription() != null) {
-					return "Apply - " + ((ApplyType) this.data).getDescription();
-				}
-				return "Apply";
-			}
-			if (this.data instanceof AttributeValueType) {
-				return "Attribute Value";
-			}
-			if (this.data instanceof AttributeDesignatorType) {
-				return "Attribute Designator";
-			}
-			if (this.data instanceof AttributeSelectorType) {
-				return "Attribute Selector";
-			}
-			if (this.data instanceof VariableReferenceType) {
-				return "Variable Reference";
-			}
-			if (this.data instanceof FunctionType) {
-				return "Function";
-			}
-			if (this.data instanceof ExpressionType) {
-				return "<Argument Placeholder>";
-			}
-			return null;
-		}
-		
-		public String getId() {
-			if (this.data instanceof ApplyType) {
-				return ((ApplyType) this.data).getFunctionId();
-			}
-			if (this.data instanceof AttributeValueType) {
-				StringBuilder builder = new StringBuilder();
-				for (Object content : ((AttributeValueType) this.data).getContent()) {
-					builder.append(content);
-				}
-				return builder.toString();
-			}
-			if (this.data instanceof AttributeDesignatorType) {
-				return ((AttributeDesignatorType) this.data).getAttributeId();
-			}
-			if (this.data instanceof AttributeSelectorType) {
-				return ((AttributeSelectorType) this.data).getPath();
-			}
-			if (this.data instanceof VariableReferenceType) {
-				return ((VariableReferenceType) this.data).getVariableId();
-			}
-			if (this.data instanceof FunctionType) {
-				return ((FunctionType) this.data).getFunctionId();
-			}
-			return null;
-		}
-		
-		public String getIdShort() {
-			String id = this.getId();
-			if (id == null) {
-				return id;
-			}
-			//
-			// Make it short
-			//
-			String[] parts = id.split("[:]");
-			
-			if (parts != null && parts.length > 0) {
-				return parts[parts.length - 1];
-			}
-			return id;
-		}
-		
-		public String getDatatype() {
-			if (this.data instanceof ApplyType) {
-				
-				Map<String, FunctionDefinition> map = JPAUtils.getFunctionIDMap();
-				FunctionDefinition function = map.get(((ApplyType) this.data).getFunctionId());
-				if (function != null) {
-					return function.getDatatypeBean().getXacmlId();
-				}
-			}
-			if (this.data instanceof AttributeValueType) {
-				return ((AttributeValueType) this.data).getDataType();
-			}
-			if (this.data instanceof AttributeDesignatorType) {
-				return ((AttributeDesignatorType) this.data).getDataType();
-			}
-			if (this.data instanceof AttributeSelectorType) {
-				return ((AttributeSelectorType) this.data).getDataType();
-			}
-
-			/*
-			if (this.data instanceof VariableReferenceType) {
-				if (this.function instanceof FunctionArgument) {
-					return ((FunctionArgument) this.function).getDatatypeBean().getXacmlId();
-				}
-			}
-			*/
-			/*
-			if (this.data instanceof FunctionType) {
-				if (this.function instanceof FunctionArgument) {
-					return ((FunctionArgument) this.function).getDatatypeBean().getXacmlId();
-				}
-			}
-			*/
-			return null;
-		}
-
-		public String getDatatypeShort() {
-			String dt = this.getDatatype();
-			if (dt == null) {
-				return dt;
-			}
-			//
-			// Get short part
-			//
-			int index = dt.lastIndexOf('#');
-			if (index == -1) {
-				String[] parts = dt.split("[:]");
-				
-				if (parts != null && parts.length > 0) {
-					return parts[parts.length - 1];
-				}
-			} else {
-				return dt.substring(index + 1);
-			}
-			return dt;
-		}
-		
-		@Override
-		public Property<?> getItemProperty(Object id) {
-            return getContainerProperty(this.data, id);
-		}
-		@Override
-		public Collection<?> getItemPropertyIds() {
-           return getContainerPropertyIds();
-		}
-		@Override
-		public boolean addItemProperty(Object id, @SuppressWarnings("rawtypes") Property property) throws UnsupportedOperationException {
-            throw new UnsupportedOperationException("Expression container does not support adding new properties");
-		}
-		@Override
-		public boolean removeItemProperty(Object id) throws UnsupportedOperationException {
-            throw new UnsupportedOperationException("Expression container does not support removing properties");
-		}		
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/GitRepositoryContainer.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/GitRepositoryContainer.java
deleted file mode 100644
index 8cecf31..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/GitRepositoryContainer.java
+++ /dev/null
@@ -1,1210 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-/*
- * Copyright 2000-2013 Vaadin Ltd.
- * 
- * Licensed under the Apache License, Version 2.0 (the "License"); you may not
- * use this file except in compliance with the License. You may obtain a copy of
- * the License at
- * 
- * http://www.apache.org/licenses/LICENSE-2.0
- * 
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
- * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
- * License for the specific language governing permissions and limitations under
- * the License.
- */
-
-package org.apache.openaz.xacml.admin.model;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.io.Serializable;
-import java.lang.reflect.Method;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Date;
-import java.util.Iterator;
-import java.util.LinkedList;
-import java.util.List;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.jgit.api.Git;
-import org.eclipse.jgit.api.Status;
-import org.eclipse.jgit.api.errors.GitAPIException;
-import org.eclipse.jgit.errors.NoWorkTreeException;
-
-import org.apache.openaz.xacml.util.XACMLPolicyScanner;
-import com.vaadin.data.Container;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.data.util.MethodProperty;
-import com.vaadin.server.Resource;
-import com.vaadin.ui.TextArea;
-import com.vaadin.util.FileTypeResolver;
-
-/**
- * A hierarchical container wrapper for a filesystem.
- * 
- * @author Vaadin Ltd.
- * @since 3.0
- */
-@SuppressWarnings("serial")
-public class GitRepositoryContainer extends ItemSetChangeNotifier implements Container.Hierarchical {
-	private Log logger	= LogFactory.getLog(GitRepositoryContainer.class);
-	
-    /**
-     * String identifier of a file's "name" property.
-     */
-    public static String PROPERTY_NAME = "Name";
-
-    /**
-     * String identifier of a file's "size" property.
-     */
-    public static String PROPERTY_SIZE = "Size";
-
-    /**
-     * String identifier of a file's "icon" property.
-     */
-    public static String PROPERTY_ICON = "Icon";
-
-    /**
-     * String identifier of a file's "last modified" property.
-     */
-    public static String PROPERTY_LASTMODIFIED = "Last Modified";
-
-    /**
-     * String identifier of a file's "version" property.
-     */
-    public static String PROPERTY_VERSION = "Version";
-    
-    /**
-     * String identifier of a file's "status" property.
-     */
-    public static String PROPERTY_STATUS = "Status";
-    
-    /**
-     * String identifier of a file's "data" property.
-     */
-    public static String PROPERTY_DATA = "Data";
- 
-    /**
-     * List of the string identifiers for the available properties.
-     */
-    public static Collection<String> FILE_PROPERTIES;
-
-    private final static Method FILEITEM_LASTMODIFIED;
-
-    private final static Method FILEITEM_NAME;
-
-    private final static Method FILEITEM_ICON;
-
-    private final static Method FILEITEM_SIZE;
-    
-    private final static Method FILEITEM_VERSION;
-    
-    private final static Method FILEITEM_STATUS;
-    
-    private final static Method FILEITEM_DATA;
-
-    static {
-
-        FILE_PROPERTIES = new ArrayList<String>();
-        FILE_PROPERTIES.add(PROPERTY_NAME);
-        FILE_PROPERTIES.add(PROPERTY_ICON);
-        FILE_PROPERTIES.add(PROPERTY_SIZE);
-        FILE_PROPERTIES.add(PROPERTY_LASTMODIFIED);
-        FILE_PROPERTIES.add(PROPERTY_VERSION);
-        FILE_PROPERTIES.add(PROPERTY_STATUS);
-        FILE_PROPERTIES.add(PROPERTY_DATA);
-        FILE_PROPERTIES = Collections.unmodifiableCollection(FILE_PROPERTIES);
-        try {
-        	FILEITEM_VERSION = FileItem.class.getMethod("getVersion", new Class[]{});
-            FILEITEM_LASTMODIFIED = FileItem.class.getMethod("lastModified", new Class[] {});
-            FILEITEM_NAME = FileItem.class.getMethod("getName", new Class[] {});
-            FILEITEM_ICON = FileItem.class.getMethod("getIcon", new Class[] {});
-            FILEITEM_SIZE = FileItem.class.getMethod("getSize", new Class[] {});
-            FILEITEM_STATUS = FileItem.class.getMethod("getStatus", new Class[] {});
-            FILEITEM_DATA = FileItem.class.getMethod("getData", new Class[] {});
-        } catch (final NoSuchMethodException e) {
-            throw new RuntimeException(
-                    "Internal error finding methods in FilesystemContainer");
-        }
-    }
-
-    private File[] roots = new File[] {};
-    
-    private FilenameFilter filter = null;
-
-    private boolean recursive = true;
-    
-    private Path repository = null;
-
-    /**
-     * Constructs a new <code>FileSystemContainer</code> with the specified file
-     * as the root of the filesystem. The files are included recursively.
-     * 
-     * @param root
-     *            the root file for the new file-system container. Null values
-     *            are ignored.
-     */
-    public GitRepositoryContainer(Path repository, File root) {
-    	super();
-    	this.repository = repository;
-        if (root != null) {
-            roots = new File[] { root };
-        }
-        this.setContainer(this);
-    }
-
-    /**
-     * Constructs a new <code>FileSystemContainer</code> with the specified file
-     * as the root of the filesystem. The files are included recursively.
-     * 
-     * @param root
-     *            the root file for the new file-system container.
-     * @param recursive
-     *            should the container recursively contain subdirectories.
-     */
-    public GitRepositoryContainer(Path repository, File root, boolean recursive) {
-        this(repository, root);
-        setRecursive(recursive);
-        this.setContainer(this);
-   }
-
-    /**
-     * Constructs a new <code>FileSystemContainer</code> with the specified file
-     * as the root of the filesystem.
-     * 
-     * @param root
-     *            the root file for the new file-system container.
-     * @param extension
-     *            the Filename extension (w/o separator) to limit the files in
-     *            container.
-     * @param recursive
-     *            should the container recursively contain subdirectories.
-     */
-    public GitRepositoryContainer(Path repository, File root, String extension, boolean recursive) {
-        this(repository, root);
-        this.setFilter(extension);
-        setRecursive(recursive);
-        this.setContainer(this);
-    }
-
-    /**
-     * Constructs a new <code>FileSystemContainer</code> with the specified root
-     * and recursivity status.
-     * 
-     * @param root
-     *            the root file for the new file-system container.
-     * @param filter
-     *            the Filename filter to limit the files in container.
-     * @param recursive
-     *            should the container recursively contain subdirectories.
-     */
-    public GitRepositoryContainer(Path repository, File root, FilenameFilter filter, boolean recursive) {
-        this(repository, root);
-        this.setFilter(filter);
-        setRecursive(recursive);
-    }
-
-    /**
-     * Adds new root file directory. Adds a file to be included as root file
-     * directory in the <code>FilesystemContainer</code>.
-     * 
-     * @param root
-     *            the File to be added as root directory. Null values are
-     *            ignored.
-     */
-    public void addRoot(File root) {
-        if (root != null) {
-            final File[] newRoots = new File[roots.length + 1];
-            for (int i = 0; i < roots.length; i++) {
-                newRoots[i] = roots[i];
-            }
-            newRoots[roots.length] = root;
-            roots = newRoots;
-        }
-    }
-
-    /**
-     * Tests if the specified Item in the container may have children. Since a
-     * <code>FileSystemContainer</code> contains files and directories, this
-     * method returns <code>true</code> for directory Items only.
-     * 
-     * @param itemId
-     *            the id of the item.
-     * @return <code>true</code> if the specified Item is a directory,
-     *         <code>false</code> otherwise.
-     */
-    @Override
-    public boolean areChildrenAllowed(Object itemId) {
-    	if (logger.isTraceEnabled()) {
-    		logger.trace("areChildrenAllowed: " + ((File)itemId).hashCode() + " " + ((File)itemId).getName());
-    	}
-        return itemId instanceof File && ((File) itemId).canRead()
-                && ((File) itemId).isDirectory();
-    }
-
-    /*
-     * Gets the ID's of all Items who are children of the specified Item. Don't
-     * add a JavaDoc comment here, we use the default documentation from
-     * implemented interface.
-     */
-    @Override
-    public Collection<File> getChildren(Object itemId) {
-
-        if (!(itemId instanceof File)) {
-            return Collections.unmodifiableCollection(new LinkedList<File>());
-        }
-        File[] f;
-        if (filter != null) {
-            f = ((File) itemId).listFiles(filter);
-        } else {
-            f = ((File) itemId).listFiles();
-        }
-
-        if (f == null) {
-            return Collections.unmodifiableCollection(new LinkedList<File>());
-        }
-
-        final List<File> l = Arrays.asList(f);
-        Collections.sort(l);
-
-        return Collections.unmodifiableCollection(l);
-    }
-
-    /*
-     * Gets the parent item of the specified Item. Don't add a JavaDoc comment
-     * here, we use the default documentation from implemented interface.
-     */
-    @Override
-    public Object getParent(Object itemId) {
-    	if (logger.isTraceEnabled()) {
-    		logger.trace("getParent: " + ((File)itemId).hashCode() + " " + ((File)itemId).getName());
-    	}
-
-        if (!(itemId instanceof File)) {
-            return null;
-        }
-        return ((File) itemId).getParentFile();
-    }
-
-    /*
-     * Tests if the specified Item has any children. Don't add a JavaDoc comment
-     * here, we use the default documentation from implemented interface.
-     */
-    @Override
-    public boolean hasChildren(Object itemId) {
-    	if (logger.isTraceEnabled()) {
-    		logger.trace("hasChildren: " + ((File)itemId).hashCode() + " " + ((File)itemId).getName());
-    	}
-
-        if (!(itemId instanceof File)) {
-            return false;
-        }
-        String[] l;
-        if (filter != null) {
-            l = ((File) itemId).list(filter);
-        } else {
-            l = ((File) itemId).list();
-        }
-        return l != null && l.length > 0;
-    }
-
-    /*
-     * Tests if the specified Item is the root of the filesystem. Don't add a
-     * JavaDoc comment here, we use the default documentation from implemented
-     * interface.
-     */
-    @Override
-    public boolean isRoot(Object itemId) {
-    	if (logger.isTraceEnabled()) {
-    		logger.trace("isRoot: " + ((File)itemId).hashCode() + " " + ((File)itemId).getName());
-    	}
-
-        if (!(itemId instanceof File)) {
-            return false;
-        }
-        for (int i = 0; i < roots.length; i++) {
-            if (roots[i].equals(itemId)) {
-                return true;
-            }
-        }
-        return false;
-    }
-
-    /*
-     * Gets the ID's of all root Items in the container. Don't add a JavaDoc
-     * comment here, we use the default documentation from implemented
-     * interface.
-     */
-    @Override
-    public Collection<File> rootItemIds() {
-
-        File[] f;
-
-        // in single root case we use children
-        if (roots.length == 1) {
-            if (filter != null) {
-                f = roots[0].listFiles(filter);
-            } else {
-                f = roots[0].listFiles();
-            }
-        } else {
-            f = roots;
-        }
-
-        if (f == null) {
-            return Collections.unmodifiableCollection(new LinkedList<File>());
-        }
-
-        final List<File> l = Arrays.asList(f);
-        Collections.sort(l);
-
-        return Collections.unmodifiableCollection(l);
-    }
-
-    /**
-     * Returns <code>false</code> when conversion from files to directories is
-     * not supported.
-     * 
-     * @param itemId
-     *            the ID of the item.
-     * @param areChildrenAllowed
-     *            the boolean value specifying if the Item can have children or
-     *            not.
-     * @return <code>true</code> if the operaton is successful otherwise
-     *         <code>false</code>.
-     * @throws UnsupportedOperationException
-     *             if the setChildrenAllowed is not supported.
-     */
-    @Override
-    public boolean setChildrenAllowed(Object itemId, boolean areChildrenAllowed)
-            throws UnsupportedOperationException {
-
-        throw new UnsupportedOperationException(
-                "Conversion file to/from directory is not supported");
-    }
-
-    /**
-     * Returns <code>false</code> when moving files around in the filesystem is
-     * not supported.
-     * 
-     * @param itemId
-     *            the ID of the item.
-     * @param newParentId
-     *            the ID of the Item that's to be the new parent of the Item
-     *            identified with itemId.
-     * @return <code>true</code> if the operation is successful otherwise
-     *         <code>false</code>.
-     * @throws UnsupportedOperationException
-     *             if the setParent is not supported.
-     */
-    @Override
-    public boolean setParent(Object itemId, Object newParentId)
-            throws UnsupportedOperationException {
-    	if (logger.isTraceEnabled()) {
-    		logger.trace("setParent: " + 
-    							((File)itemId).hashCode() + " " + 
-    							((File)itemId).getName() + " to: " + 
-    							((File)newParentId).hashCode() + " " + 
-    							((File)newParentId).getName());
-    	}
-    	
-    	Path path = Paths.get(((File) itemId).getAbsolutePath());
-    	Path parent = Paths.get(((File) newParentId).getAbsolutePath());
-    	boolean ok = path.getParent() == parent;
-    	
-    	if (ok) {
-    		fireItemSetChange();
-    	}
-    	return ok;
-    }
-
-    /*
-     * Tests if the filesystem contains the specified Item. Don't add a JavaDoc
-     * comment here, we use the default documentation from implemented
-     * interface.
-     */
-    @Override
-    public boolean containsId(Object itemId) {
-    	if (logger.isTraceEnabled()) {
-    		logger.trace("containsId: " + ((File)itemId).hashCode() + " " + ((File)itemId).getName());
-    	}
-
-        if (!(itemId instanceof File)) {
-            return false;
-        }
-        boolean val = false;
-
-        // Try to match all roots
-        for (int i = 0; i < roots.length; i++) {
-            try {
-                val |= ((File) itemId).getCanonicalPath().startsWith(
-                        roots[i].getCanonicalPath());
-            } catch (final IOException e) { //NOPMD
-                // Exception ignored
-            }
-
-        }
-        if (val && filter != null) {
-            val &= filter.accept(((File) itemId).getParentFile(),
-                    ((File) itemId).getName());
-        }
-        return val;
-    }
-
-    /*
-     * Gets the specified Item from the filesystem. Don't add a JavaDoc comment
-     * here, we use the default documentation from implemented interface.
-     */
-    @Override
-    public Item getItem(Object itemId) {
-
-    	if (logger.isTraceEnabled()) {
-    		logger.trace("getItem: " + ((File)itemId).hashCode() + " " + ((File)itemId).getName());
-    	}
-
-    	if (!(itemId instanceof File)) {
-            return null;
-        }
-        return new FileItem((File) itemId);
-    }
-    
-    public Item updateItem(Object itemId) {
-    	if (logger.isTraceEnabled()) {
-    		logger.trace("updateItem: " + ((File)itemId).hashCode() + " " + ((File)itemId).getName());
-    	}
-
-    	if (!(itemId instanceof File)) {
-            return null;
-        }
-    	
-    	this.fireItemSetChange();
-    	
-        return new FileItem((File) itemId);
-    }
-
-    /**
-     * Internal recursive method to add the files under the specified directory
-     * to the collection.
-     * 
-     * @param col
-     *            the collection where the found items are added
-     * @param f
-     *            the root file where to start adding files
-     */
-    private void addItemIds(Collection<File> col, File f) {
-        File[] l;
-        if (filter != null) {
-            l = f.listFiles(filter);
-        } else {
-            l = f.listFiles();
-        }
-        if (l == null) {
-            // File.listFiles returns null if File does not exist or if there
-            // was an IO error (permission denied)
-            return;
-        }
-        final List<File> ll = Arrays.asList(l);
-        Collections.sort(ll);
-
-        for (final Iterator<File> i = ll.iterator(); i.hasNext();) {
-            final File lf = i.next();
-            col.add(lf);
-            if (lf.isDirectory()) {
-                addItemIds(col, lf);
-            }
-        }
-    }
-
-    /*
-     * Gets the IDs of Items in the filesystem. Don't add a JavaDoc comment
-     * here, we use the default documentation from implemented interface.
-     */
-    @Override
-    public Collection<File> getItemIds() {
-
-        if (recursive) {
-            final Collection<File> col = new ArrayList<File>();
-            for (int i = 0; i < roots.length; i++) {
-                addItemIds(col, roots[i]);
-            }
-            return Collections.unmodifiableCollection(col);
-        } else {
-            File[] f;
-            if (roots.length == 1) {
-                if (filter != null) {
-                    f = roots[0].listFiles(filter);
-                } else {
-                    f = roots[0].listFiles();
-                }
-            } else {
-                f = roots;
-            }
-
-            if (f == null) {
-                return Collections
-                        .unmodifiableCollection(new LinkedList<File>());
-            }
-
-            final List<File> l = Arrays.asList(f);
-            Collections.sort(l);
-            return Collections.unmodifiableCollection(l);
-        }
-
-    }
-
-    /**
-     * Gets the specified property of the specified file Item. The available
-     * file properties are "Name", "Size" and "Last Modified". If propertyId is
-     * not one of those, <code>null</code> is returned.
-     * 
-     * @param itemId
-     *            the ID of the file whose property is requested.
-     * @param propertyId
-     *            the property's ID.
-     * @return the requested property's value, or <code>null</code>
-     */
-    @Override
-    public Property<?> getContainerProperty(Object itemId, Object propertyId) {
-
-        if (!(itemId instanceof File)) {
-            return null;
-        }
-
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new FileItem((File) itemId), FILEITEM_NAME, null);
-        }
-
-        if (propertyId.equals(PROPERTY_ICON)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new FileItem((File) itemId), FILEITEM_ICON, null);
-        }
-
-        if (propertyId.equals(PROPERTY_SIZE)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new FileItem((File) itemId), FILEITEM_SIZE, null);
-        }
-
-        if (propertyId.equals(PROPERTY_LASTMODIFIED)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new FileItem((File) itemId), FILEITEM_LASTMODIFIED, null);
-        }
-        
-        if (propertyId.equals(PROPERTY_VERSION)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new FileItem((File) itemId), FILEITEM_VERSION, null);
-        }
-
-        if (propertyId.equals(PROPERTY_STATUS)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new FileItem((File) itemId), FILEITEM_STATUS, null);
-        }
-
-        if (propertyId.equals(PROPERTY_DATA)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new FileItem((File) itemId), FILEITEM_DATA, null);
-        }
-
-        return null;
-    }
-
-    /**
-     * Gets the collection of available file properties.
-     * 
-     * @return Unmodifiable collection containing all available file properties.
-     */
-    @Override
-    public Collection<String> getContainerPropertyIds() {
-        return FILE_PROPERTIES;
-    }
-
-    /**
-     * Gets the specified property's data type. "Name" is a <code>String</code>,
-     * "Size" is a <code>Long</code>, "Last Modified" is a <code>Date</code>. If
-     * propertyId is not one of those, <code>null</code> is returned.
-     * 
-     * @param propertyId
-     *            the ID of the property whose type is requested.
-     * @return data type of the requested property, or <code>null</code>
-     */
-    @Override
-    public Class<?> getType(Object propertyId) {
-
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_ICON)) {
-            return Resource.class;
-        }
-        if (propertyId.equals(PROPERTY_SIZE)) {
-            return Long.class;
-        }
-        if (propertyId.equals(PROPERTY_LASTMODIFIED)) {
-            return Date.class;
-        }
-        if (propertyId.equals(PROPERTY_VERSION)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_STATUS)) {
-        	return TextArea.class;
-        }
-        if (propertyId.equals(PROPERTY_DATA)) {
-        	return Object.class;
-        }
-        return null;
-    }
-
-    /**
-     * Internal method to recursively calculate the number of files under a root
-     * directory.
-     * 
-     * @param f
-     *            the root to start counting from.
-     */
-    private int getFileCounts(File f) {
-        File[] l;
-        if (filter != null) {
-            l = f.listFiles(filter);
-        } else {
-            l = f.listFiles();
-        }
-
-        if (l == null) {
-            return 0;
-        }
-        int ret = l.length;
-        for (int i = 0; i < l.length; i++) {
-            if (l[i].isDirectory()) {
-                ret += getFileCounts(l[i]);
-            }
-        }
-        return ret;
-    }
-
-    /**
-     * Gets the number of Items in the container. In effect, this is the
-     * combined amount of files and directories.
-     * 
-     * @return Number of Items in the container.
-     */
-    @Override
-    public int size() {
-
-        if (recursive) {
-            int counts = 0;
-            for (int i = 0; i < roots.length; i++) {
-                counts += getFileCounts(roots[i]);
-            }
-            return counts;
-        } else {
-            File[] f;
-            if (roots.length == 1) {
-                if (filter != null) {
-                    f = roots[0].listFiles(filter);
-                } else {
-                    f = roots[0].listFiles();
-                }
-            } else {
-                f = roots;
-            }
-
-            if (f == null) {
-                return 0;
-            }
-            return f.length;
-        }
-    }
-    
-
-    /**
-     * A Item wrapper for files in a filesystem.
-     * 
-     * @author Vaadin Ltd.
-     * @since 3.0
-     */
-    public class FileItem implements Item {
-
-        /**
-         * The wrapped file.
-         */
-        private final File file;
-        
-        private Object data = null;
-
-        /**
-         * Constructs a FileItem from a existing file.
-         */
-        private FileItem(File file) {
-        	if (logger.isTraceEnabled()) {
-        		logger.trace("FileItem constructor: " + file.hashCode() + " " + file.getName());
-        	}
-            this.file = file;
-        }
-
-        /*
-         * Gets the specified property of this file. Don't add a JavaDoc comment
-         * here, we use the default documentation from implemented interface.
-         */
-        @Override
-        public Property<?> getItemProperty(Object id) {
-            return getContainerProperty(file, id);
-        }
-
-        /*
-         * Gets the IDs of all properties available for this item Don't add a
-         * JavaDoc comment here, we use the default documentation from
-         * implemented interface.
-         */
-        @Override
-        public Collection<String> getItemPropertyIds() {
-            return getContainerPropertyIds();
-        }
-
-        /**
-         * Calculates a integer hash-code for the Property that's unique inside
-         * the Item containing the Property. Two different Properties inside the
-         * same Item contained in the same list always have different
-         * hash-codes, though Properties in different Items may have identical
-         * hash-codes.
-         * 
-         * @return A locally unique hash-code as integer
-         */
-        @Override
-        public int hashCode() {
-            return file.hashCode() ^ GitRepositoryContainer.this.hashCode();
-        }
-
-        /**
-         * Tests if the given object is the same as the this object. Two
-         * Properties got from an Item with the same ID are equal.
-         * 
-         * @param obj
-         *            an object to compare with this object.
-         * @return <code>true</code> if the given object is the same as this
-         *         object, <code>false</code> if not
-         */
-        @Override
-        public boolean equals(Object obj) {
-            if (obj == null || !(obj instanceof FileItem)) {
-                return false;
-            }
-            final FileItem fi = (FileItem) obj;
-            return fi.getHost() == getHost() && fi.file.equals(file);
-        }
-
-        /**
-         * Gets the host of this file.
-         */
-        private GitRepositoryContainer getHost() {
-            return GitRepositoryContainer.this;
-        }
-        
-        /**
-         * Gets the file's version
-         * 
-         * @return Integer
-         */
-        
-        public String getVersion() {
-        	/*
-        	 * If its a directory, there is no version
-        	 */
-        	if (this.file.isDirectory()) {
-        		return null;
-        	}
-        	try {
-				return XACMLPolicyScanner.getVersion(Paths.get(this.file.getAbsolutePath()));
-			} catch (IOException e) {
-				logger.error("Could not get version: " + e);
-				return "n/a";
-			}
-        }
-
-        /**
-         * Gets the last modified date of this file.
-         * 
-         * @return Date
-         */
-        public Date lastModified() {
-            return new Date(file.lastModified());
-        }
-
-        /**
-         * Gets the name of this file.
-         * 
-         * @return file name of this file.
-         */
-        public String getName() {
-            return file.getName();
-        }
-        
-        public File getFile() {
-        	return file;
-        }
-
-        /**
-         * Gets the icon of this file.
-         * 
-         * @return the icon of this file.
-         */
-        public Resource getIcon() {
-            return FileTypeResolver.getIcon(file);
-        }
-
-        /**
-         * Gets the size of this file.
-         * 
-         * @return size
-         */
-        public Long getSize() {
-            if (file.isDirectory()) {
-                return null;
-            }
-            return file.length();
-        }
-
-        /**
-         * Gets the status of this file.
-         * 
-         * @return status of this file.
-         */
-        public TextArea getStatus() {
-        	TextArea area = null;
-        	try {
-        		Path repoPath = this.getHost().repository;
-				Git git = Git.open(repoPath.toFile());
-				
-				//
-				// I would like to use absolutePath, but that seems to barf when
-				// we try to relativize this if a full path is not given.
-				//
-				Path relativePath = repoPath.relativize(Paths.get(this.file.getPath()));
-				
-				Status status = git.status().addPath(relativePath.toString()).call();
-				if (logger.isDebugEnabled()) {
-					logger.debug(this.file.getAbsolutePath());
-					logger.debug("Added: " + status.getAdded());
-					logger.debug("Changed: " + status.getChanged());
-					logger.debug("Conflicting: " + status.getConflicting());
-					logger.debug("Missing: " + status.getMissing());
-					logger.debug("Modified: " + status.getModified());
-					logger.debug("Removed: " + status.getRemoved());
-					logger.debug("Uncommitted: " + status.getUncommittedChanges());
-					logger.debug("Untracked: " + status.getUntracked());
-					logger.debug("Untracked folders; " + status.getUntrackedFolders());
-				}
-				//
-				// Are we a file or directory?
-				//
-				StringBuffer buffer = new StringBuffer();
-				int length = 0;
-				if (this.file.isFile()) {
-					if (status.getAdded().contains(relativePath.toString())) {
-						buffer.append("Added" + "\n");
-						length++;
-					}
-					if (status.getChanged().contains(relativePath.toString())) {
-						buffer.append("Changed" + "\n");
-						length++;
-					}
-					if (status.getConflicting().contains(relativePath.toString())) {
-						buffer.append("Conflicting" + "\n");
-						length++;
-					}
-					if (status.getMissing().contains(relativePath.toString())) {
-						buffer.append("Missing" + "\n");
-						length++;
-					}
-					if (status.getModified().contains(relativePath.toString())) {
-						buffer.append("Modified" + "\n");
-						length++;
-					}
-					if (status.getRemoved().contains(relativePath.toString())) {
-						buffer.append("Removed" + "\n");
-						length++;
-					}
-					if (status.getUncommittedChanges().contains(relativePath.toString())) {
-						buffer.append("Uncommitted" + "\n");
-						length++;
-					}
-					if (status.getUntracked().contains(relativePath.toString())) {
-						buffer.append("Untracked (New)" + "\n");
-						length++;
-					}
-					if (status.getUntrackedFolders().contains(relativePath.toString())) {
-						buffer.append("Untracked Folders (New)" + "\n");
-						length++;
-					}
-				} else if (this.file.isDirectory()) {
-					if (status.getUntracked().size() > 0) {
-						buffer.append("Untracked (New)" + "\n");
-						length++;
-					}
-					if (status.getUntrackedFolders().size() > 0) {
-						buffer.append("Untracked Folders (New)" + "\n");
-						length++;
-					}
-				}
-				if (length > 0) {
-					area = new TextArea();
-					area.setValue(buffer.toString().trim());
-					area.setWidth("100.0%");
-					area.setRows(length);
-					area.setReadOnly(true);
-				}
-			} catch (IOException | NoWorkTreeException | GitAPIException e) {
-				logger.error(e);
-			}
-            return area;
-        }
-
-        /**
-         * Gets the file's data
-         * 
-         * @return file data
-         */
-        public Object getData() {
-        	return this.data;
-        }
-        /**
-         * @see java.lang.Object#toString()
-         */
-        @Override
-        public String toString() {
-//            if ("".equals(file.getName())) {
- //               return file.getAbsolutePath();
-  //          }
-            return file.getName();
-        }
-
-        /**
-         * Filesystem container does not support adding new properties.
-         * 
-         * @see com.vaadin.data.Item#addItemProperty(Object, Property)
-         */
-        @Override
-        public boolean addItemProperty(Object id, @SuppressWarnings("rawtypes") Property property) throws UnsupportedOperationException {
-            throw new UnsupportedOperationException("Filesystem container does not support adding new properties");
-        }
-
-        /**
-         * Filesystem container does not support removing properties.
-         * 
-         * @see com.vaadin.data.Item#removeItemProperty(Object)
-         */
-        @Override
-        public boolean removeItemProperty(Object id) throws UnsupportedOperationException {
-            throw new UnsupportedOperationException("Filesystem container does not support property removal");
-        }
-    }
-
-    /**
-     * Generic file extension filter for displaying only files having certain
-     * extension.
-     * 
-     * @author Vaadin Ltd.
-     * @since 3.0
-     */
-    public class FileExtensionFilter implements FilenameFilter, Serializable {
-
-        private final String filter;
-
-        /**
-         * Constructs a new FileExtensionFilter using given extension.
-         * 
-         * @param fileExtension
-         *            the File extension without the separator (dot).
-         */
-        public FileExtensionFilter(String fileExtension) {
-            filter = "." + fileExtension;
-        }
-
-        /**
-         * Allows only files with the extension and directories.
-         * 
-         * @see java.io.FilenameFilter#accept(File, String)
-         */
-        @Override
-        public boolean accept(File dir, String name) {
-            if (name.endsWith(filter)) {
-                return true;
-            }
-            return new File(dir, name).isDirectory();
-        }
-
-    }
-
-    /**
-     * Returns the file filter used to limit the files in this container.
-     * 
-     * @return Used filter instance or null if no filter is assigned.
-     */
-    public FilenameFilter getFilter() {
-        return filter;
-    }
-
-    /**
-     * Sets the file filter used to limit the files in this container.
-     * 
-     * @param filter
-     *            The filter to set. <code>null</code> disables filtering.
-     */
-    public void setFilter(FilenameFilter filter) {
-        this.filter = filter;
-    }
-
-    /**
-     * Sets the file filter used to limit the files in this container.
-     * 
-     * @param extension
-     *            the Filename extension (w/o separator) to limit the files in
-     *            container.
-     */
-    public void setFilter(String extension) {
-        filter = new FileExtensionFilter(extension);
-    }
-
-    /**
-     * Is this container recursive filesystem.
-     * 
-     * @return <code>true</code> if container is recursive, <code>false</code>
-     *         otherwise.
-     */
-    public boolean isRecursive() {
-        return recursive;
-    }
-
-    /**
-     * Sets the container recursive property. Set this to false to limit the
-     * files directly under the root file.
-     * <p>
-     * Note : This is meaningful only if the root really is a directory.
-     * </p>
-     * 
-     * @param recursive
-     *            the New value for recursive property.
-     */
-    public void setRecursive(boolean recursive) {
-        this.recursive = recursive;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see com.vaadin.data.Container#addContainerProperty(java.lang.Object,
-     * java.lang.Class, java.lang.Object)
-     */
-    @Override
-    public boolean addContainerProperty(Object propertyId, Class<?> type,
-            Object defaultValue) throws UnsupportedOperationException {
-        throw new UnsupportedOperationException(
-                "File system container does not support this operation");
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see com.vaadin.data.Container#addItem()
-     */
-    @Override
-    public Object addItem() throws UnsupportedOperationException {
-        throw new UnsupportedOperationException(
-                "Git repository container does not support this operation");
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see com.vaadin.data.Container#addItem(java.lang.Object)
-     */
-    @Override
-    public Item addItem(Object itemId) throws UnsupportedOperationException {
-    	if (! (itemId instanceof File)) {
-            throw new UnsupportedOperationException(
-                    "Git repository container does not support this operation for Objects that are not files.");
-    	}
-    	if (logger.isTraceEnabled()) {
-    		logger.trace("addItem: " + ((File)itemId).hashCode() + " " + ((File)itemId).getName());
-    	}
-
-    	fireItemSetChange();
-  	
-        return new FileItem((File) itemId);
-    }
-    
-    /*
-     * (non-Javadoc)
-     * 
-     * @see com.vaadin.data.Container#removeAllItems()
-     */
-    @Override
-    public boolean removeAllItems() throws UnsupportedOperationException {
-        throw new UnsupportedOperationException(
-                "File system container does not support this operation");
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see com.vaadin.data.Container#removeItem(java.lang.Object)
-     */
-    @Override
-    public boolean removeItem(Object itemId)
-            throws UnsupportedOperationException {
-    	
-    	if (logger.isTraceEnabled()) {
-    		logger.trace("removeItem: " + ((File)itemId).hashCode() + " " + ((File)itemId).getName());
-    	}
-
-    	fireItemSetChange();
-    	return true;
-    }
-
-    /*
-     * (non-Javadoc)
-     * 
-     * @see com.vaadin.data.Container#removeContainerProperty(java.lang.Object )
-     */
-    @Override
-    public boolean removeContainerProperty(Object propertyId)
-            throws UnsupportedOperationException {
-        throw new UnsupportedOperationException(
-                "File system container does not support this operation");
-    }
-
-	public Object getRoot(int index) {
-		if (index >= this.roots.length) {
-			return null;
-		}
-		return this.roots[index];
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/GitStatusContainer.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/GitStatusContainer.java
deleted file mode 100644
index fbc5ea2..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/GitStatusContainer.java
+++ /dev/null
@@ -1,552 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.model;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.Map;
-import java.util.TreeMap;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.jgit.api.Status;
-import org.eclipse.jgit.lib.IndexDiff;
-
-import com.vaadin.data.Container;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.data.util.MethodProperty;
-
-public class GitStatusContainer extends ItemSetChangeNotifier implements Container.Ordered, Container.ItemSetChangeNotifier {
-	private static final long serialVersionUID = 1L;
-	private Log logger	= LogFactory.getLog(GitStatusContainer.class);
-
-	/**
-     * String identifier of a git file/directory's "name" property.
-     */
-    public static String PROPERTY_NAME = "Name";
-
-	/**
-     * String identifier of a git file/directory's "status" property.
-     */
-    public static String PROPERTY_STATUS = "Status";
-
-	/**
-     * String identifier of a git file/directory's "entry" property.
-     */
-    public static String PROPERTY_ENTRY = "Entry";
-
-    /**
-     * List of the string identifiers for the available properties.
-     */
-    public static Collection<String> GITSTATUS_PROPERTIES;
-    
-    private final static Method GITSTATUSITEM_NAME;
-    
-    private final static Method GITSTATUSITEM_STATUS;
-    
-    private final static Method GITSTATUSITEM_ENTRY;
-    
-    static {
-    	GITSTATUS_PROPERTIES = new ArrayList<String>();
-    	GITSTATUS_PROPERTIES.add(PROPERTY_NAME);
-    	GITSTATUS_PROPERTIES.add(PROPERTY_STATUS);
-    	GITSTATUS_PROPERTIES.add(PROPERTY_ENTRY);
-    	GITSTATUS_PROPERTIES = Collections.unmodifiableCollection(GITSTATUS_PROPERTIES);
-    	try {
-    		GITSTATUSITEM_NAME = StatusItem.class.getMethod("getName", new Class[]{});
-    		GITSTATUSITEM_STATUS = StatusItem.class.getMethod("getStatus", new Class[]{});
-    		GITSTATUSITEM_ENTRY = StatusItem.class.getMethod("getGitEntry", new Class[]{});
-        } catch (final NoSuchMethodException e) {
-            throw new RuntimeException("Internal error finding methods in GitStatusContainer");
-        }
-    }
-    
-    public class GitEntry {
-    	String	name;
-    	boolean added = false;
-    	boolean changed = false;
-    	boolean conflicting = false;
-    	boolean ignoredNotInIndex = false;
-    	boolean missing = false;
-    	boolean modified = false;
-    	boolean removed = false;
-    	boolean uncommitted = false;
-    	boolean untracked = false;
-    	boolean untrackedFolders = false;
-    	
-    	public GitEntry(String name) {
-    		this.name = name;
-    	}
-
-		public String getName() {
-			return name;
-		}
-
-		public void setName(String name) {
-			this.name = name;
-		}
-
-		public boolean isAdded() {
-			return added;
-		}
-
-		public void setAdded(boolean added) {
-			this.added = added;
-		}
-
-		public boolean isChanged() {
-			return changed;
-		}
-
-		public void setChanged(boolean changed) {
-			this.changed = changed;
-		}
-
-		public boolean isConflicting() {
-			return conflicting;
-		}
-
-		public void setConflicting(boolean conflicting) {
-			this.conflicting = conflicting;
-		}
-
-		public boolean isIgnoredNotInIndex() {
-			return ignoredNotInIndex;
-		}
-
-		public void setIgnoredNotInIndex(boolean ignoredNotInIndex) {
-			this.ignoredNotInIndex = ignoredNotInIndex;
-		}
-
-		public boolean isMissing() {
-			return missing;
-		}
-
-		public void setMissing(boolean missing) {
-			this.missing = missing;
-		}
-
-		public boolean isModified() {
-			return modified;
-		}
-
-		public void setModified(boolean modified) {
-			this.modified = modified;
-		}
-
-		public boolean isRemoved() {
-			return removed;
-		}
-
-		public void setRemoved(boolean removed) {
-			this.removed = removed;
-		}
-
-		public boolean isUncommitted() {
-			return uncommitted;
-		}
-
-		public void setUncommitted(boolean uncommitted) {
-			this.uncommitted = uncommitted;
-		}
-
-		public boolean isUntracked() {
-			return untracked;
-		}
-
-		public void setUntracked(boolean untracked) {
-			this.untracked = untracked;
-		}
-
-		public boolean isUntrackedFolders() {
-			return untrackedFolders;
-		}
-
-		public void setUntrackedFolders(boolean untrackedFolders) {
-			this.untrackedFolders = untrackedFolders;
-		}
-
-		public String getStatus() {
-			StringBuilder builder = new StringBuilder();
-			if (this.isAdded()) {
-				builder.append("Added" + System.lineSeparator());
-			}
-			if (this.isChanged()) {
-				builder.append("Changed" + System.lineSeparator());
-			}
-			if (this.isConflicting()) {
-				builder.append("Conflicting" + System.lineSeparator());
-			}
-			if (this.isMissing()) {
-				builder.append("Missing" + System.lineSeparator());
-			}
-			if (this.isModified()) {
-				builder.append("Modified" + System.lineSeparator());
-			}
-			if (this.isRemoved()) {
-				builder.append("Removed" + System.lineSeparator());
-			}
-			if (this.isUncommitted()) {
-				builder.append("Uncommitted" + System.lineSeparator());
-			}
-			if (this.isUntracked()) {
-				builder.append("Untracked" + System.lineSeparator());
-			}
-			if (this.isUntrackedFolders()) {
-				builder.append("Untracked Folders" + System.lineSeparator());
-			}
-			return builder.toString();
-		}
-
-		@Override
-		public String toString() {
-			return "GitEntry [name=" + name + ", added=" + added + ", changed="
-					+ changed + ", conflicting=" + conflicting
-					+ ", ignoredNotInIndex=" + ignoredNotInIndex + ", missing="
-					+ missing + ", modified=" + modified + ", removed="
-					+ removed + ", uncommitted=" + uncommitted + ", untracked="
-					+ untracked + ", untrackedFolders=" + untrackedFolders
-					+ "]";
-		}
-    }
-    
-    //
-    // This is our data, a sorted map
-    //
-    private TreeMap<String, GitEntry> map = null;
-    private Map<String, IndexDiff.StageState> conflictingStage = null;
-    int conflictCount = 0;
-    
-	public GitStatusContainer(Status status) {
-		super();
-		this.setContainer(this);
-		//
-		// Initialize
-		//
-		this.refreshStatus(status);
-	}
-	
-	public void refreshStatus(Status status) {
-		//
-		// Save this
-		//
-		this.conflictingStage = status.getConflictingStageState();
-		if (logger.isDebugEnabled()) {
-			logger.debug("conflictingStage: " + this.conflictingStage.size());
-		}
-		//
-		// Re-create this
-		//
-		this.map = new TreeMap<String, GitEntry>();
-		this.conflictCount = 0;
-		//
-		// Iterate through everything
-		//
-		for (String id : status.getAdded()) {
-			if (id.endsWith(".gitignore") || id.endsWith(".DS_Store")) {
-				continue;
-			}
-			GitEntry entry = this.map.get(id);
-			if (entry == null) {
-				entry = new GitEntry(id);
-				this.map.put(id, entry);
-			}
-			entry.setAdded(true);
-		}
-		for (String id : status.getChanged()) {
-			if (id.endsWith(".gitignore") || id.endsWith(".DS_Store")) {
-				continue;
-			}
-			GitEntry entry = this.map.get(id);
-			if (entry == null) {
-				entry = new GitEntry(id);
-				this.map.put(id, entry);
-			}
-			entry.setChanged(true);
-		}
-		for (String id : status.getConflicting()) {
-			if (id.endsWith(".gitignore") || id.endsWith(".DS_Store")) {
-				continue;
-			}
-			GitEntry entry = this.map.get(id);
-			if (entry == null) {
-				entry = new GitEntry(id);
-				this.map.put(id, entry);
-			}
-			entry.setConflicting(true);
-			//
-			//
-			//
-			conflictCount++;
-		}
-		for (String id : status.getMissing()) {
-			if (id.endsWith(".gitignore") || id.endsWith(".DS_Store")) {
-				continue;
-			}
-			GitEntry entry = this.map.get(id);
-			if (entry == null) {
-				entry = new GitEntry(id);
-				this.map.put(id, entry);
-			}
-			entry.setMissing(true);
-		}
-		for (String id : status.getModified()) {
-			if (id.endsWith(".gitignore") || id.endsWith(".DS_Store")) {
-				continue;
-			}
-			GitEntry entry = this.map.get(id);
-			if (entry == null) {
-				entry = new GitEntry(id);
-				this.map.put(id, entry);
-			}
-			entry.setModified(true);
-		}
-		for (String id : status.getRemoved()) {
-			if (id.endsWith(".gitignore") || id.endsWith(".DS_Store")) {
-				continue;
-			}
-			GitEntry entry = this.map.get(id);
-			if (entry == null) {
-				entry = new GitEntry(id);
-				this.map.put(id, entry);
-			}
-			entry.setRemoved(true);
-		}
-		for (String id : status.getUncommittedChanges()) {
-			if (id.endsWith(".gitignore") || id.endsWith(".DS_Store")) {
-				continue;
-			}
-			GitEntry entry = this.map.get(id);
-			if (entry == null) {
-				entry = new GitEntry(id);
-				this.map.put(id, entry);
-			}
-			entry.setUncommitted(true);
-		}
-		for (String id : status.getUntracked()) {
-			if (id.endsWith(".gitignore") || id.endsWith(".DS_Store")) {
-				continue;
-			}
-			GitEntry entry = this.map.get(id);
-			if (entry == null) {
-				entry = new GitEntry(id);
-				this.map.put(id, entry);
-			}
-			entry.setUntracked(true);
-		}
-		for (String id : status.getUntrackedFolders()) {
-			if (id.endsWith(".gitignore") || id.endsWith(".DS_Store")) {
-				continue;
-			}
-			GitEntry entry = this.map.get(id);
-			if (entry == null) {
-				entry = new GitEntry(id);
-				this.map.put(id, entry);
-			}
-			entry.setUntrackedFolders(true);
-		}
-	}
-	
-	public Map<String, IndexDiff.StageState> getConflictingStageState() {
-		return this.conflictingStage;
-	}
-	
-	public int	getConflictCount() {
-		return this.conflictCount;
-	}
-
-	@Override
-	public Item getItem(Object itemId) {
-		return new StatusItem(map.get(itemId));
-	}
-
-	@Override
-	public Collection<?> getContainerPropertyIds() {
-		return GITSTATUS_PROPERTIES;
-	}
-
-	@Override
-	public Collection<?> getItemIds() {
-		final Collection<String> items = new ArrayList<String>();
-		items.addAll(this.map.keySet());
-		return Collections.unmodifiableCollection(items);
-	}
-
-	@Override
-	public Property<Object> getContainerProperty(Object itemId, Object propertyId) {
-		GitEntry entry = this.map.get(itemId);
-		if (entry == null) {
-//			logger.error("unknown itemId: " + itemId);
-			return null;
-		}
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new StatusItem(entry), GITSTATUSITEM_NAME, null);
-        }
-        if (propertyId.equals(PROPERTY_STATUS)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new StatusItem(entry), GITSTATUSITEM_STATUS, null);
-        }
-        if (propertyId.equals(PROPERTY_ENTRY)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new StatusItem(entry), GITSTATUSITEM_ENTRY, null);
-        }
-		return null;
-	}
-
-	@Override
-	public Class<?> getType(Object propertyId) {
-        if (propertyId.equals(PROPERTY_NAME)) {
-        	return String.class;
-        }
-        if (propertyId.equals(PROPERTY_STATUS)) {
-        	return String.class;
-        }
-        if (propertyId.equals(PROPERTY_ENTRY)) {
-        	return GitEntry.class;
-        }
-		return null;
-	}
-
-	@Override
-	public int size() {
-		return this.map.size();
-	}
-
-	@Override
-	public boolean containsId(Object itemId) {
-		return this.map.containsKey(itemId);
-	}
-
-	@Override
-	public Item addItem(Object itemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Can't add items.");
-	}
-
-	@Override
-	public Object addItem() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Can't add items.");
-	}
-
-	@Override
-	public boolean removeItem(Object itemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Can't remove items.");
-	}
-
-	@Override
-	public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Can't add properties.");
-	}
-
-	@Override
-	public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Can't remove properties.");
-	}
-
-	@Override
-	public boolean removeAllItems() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Can't remove items.");
-	}
-
-	@Override
-	public Object nextItemId(Object itemId) {
-		return this.map.higherKey((String) itemId);
-	}
-
-	@Override
-	public Object prevItemId(Object itemId) {
-		return this.map.lowerKey((String) itemId);
-	}
-
-	@Override
-	public Object firstItemId() {
-		return this.map.firstKey();
-	}
-
-	@Override
-	public Object lastItemId() {
-		return this.map.lastKey();
-	}
-
-	@Override
-	public boolean isFirstId(Object itemId) {
-		return itemId.equals(this.map.firstKey());
-	}
-
-	@Override
-	public boolean isLastId(Object itemId) {
-		return itemId.equals(this.map.lastKey());
-	}
-
-	@Override
-	public Object addItemAfter(Object previousItemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Can't add items.");
-	}
-
-	@Override
-	public Item addItemAfter(Object previousItemId, Object newItemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Can't add items.");
-	}
-
-	public class StatusItem implements Item {
-		private static final long serialVersionUID = 1L;
-		private final GitEntry entry;
-		
-		public StatusItem(GitEntry itemId) {
-			this.entry = itemId;
-		}
-
-		public String getName() {
-			return this.entry.getName();
-		}
-		
-		public String getStatus() {
-			return this.entry.getStatus();
-		}
-
-		public GitEntry getGitEntry() {
-			return this.entry;
-		}
-
-		@Override
-		public Property<?> getItemProperty(Object id) {
-            return getContainerProperty(this.entry, id);
-		}
-
-		@Override
-		public Collection<?> getItemPropertyIds() {
-			return getContainerPropertyIds();
-		}
-
-		@Override
-		public boolean addItemProperty(Object id, @SuppressWarnings("rawtypes") Property property) throws UnsupportedOperationException {
-            throw new UnsupportedOperationException("Container does not support adding new properties");
-		}
-
-		@Override
-		public boolean removeItemProperty(Object id) throws UnsupportedOperationException {
-            throw new UnsupportedOperationException("Container does not support removing properties");
-		}
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/ItemSetChangeNotifier.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/ItemSetChangeNotifier.java
deleted file mode 100644
index 7ad49ca..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/ItemSetChangeNotifier.java
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.model;
-
-import java.io.Serializable;
-import java.util.Collection;
-import java.util.EventObject;
-import java.util.LinkedList;
-
-import com.vaadin.data.Container;
-import com.vaadin.data.Container.ItemSetChangeEvent;
-import com.vaadin.data.Container.ItemSetChangeListener;
-
-public class ItemSetChangeNotifier implements Container.ItemSetChangeNotifier {
-	private static final long serialVersionUID = 1L;
-    private Collection<Container.ItemSetChangeListener> itemSetChangeListeners = null;
-    private Container container = null;
-    
-    public ItemSetChangeNotifier() {
-    }
-    
-    protected void setContainer(Container c) {
-    	this.container = c;
-    }
-
-	@Override
-	public void addItemSetChangeListener(ItemSetChangeListener listener) {
-        if (getItemSetChangeListeners() == null) {
-            setItemSetChangeListeners(new LinkedList<Container.ItemSetChangeListener>());
-        }
-        getItemSetChangeListeners().add(listener);	}
-
-	// TODO - Container.ItemSetChangeNotifier.addListener has been deprecated and replaced with
-	// Container.ItemSetChangeNotifier.addItemSetChangeListener
-	@Override
-	public void addListener(ItemSetChangeListener listener) {
-        addItemSetChangeListener(listener);
-	}
-
-	@Override
-	public void removeItemSetChangeListener(ItemSetChangeListener listener) {
-        if (getItemSetChangeListeners() != null) {
-            getItemSetChangeListeners().remove(listener);
-        }
-    }
-
-	// TODO - Container.ItemSetChangeNotifier.removeListener has been deprecated and replaced with
-	// Container.ItemSetChangeNotifier.removeItemSetChangeListener
-	@Override
-	public void removeListener(ItemSetChangeListener listener) {
-        removeItemSetChangeListener(listener);
-	}
-	
-	protected static class BaseItemSetChangeEvent extends EventObject implements
-	    Container.ItemSetChangeEvent, Serializable {
-		private static final long serialVersionUID = 1L;
-
-		protected BaseItemSetChangeEvent(Container source) {
-		    super(source);
-		}
-		
-		@Override
-		public Container getContainer() {
-		    return (Container) getSource();
-		}
-	}
-
-    protected void setItemSetChangeListeners(
-            Collection<Container.ItemSetChangeListener> itemSetChangeListeners) {
-        this.itemSetChangeListeners = itemSetChangeListeners;
-    }
-    protected Collection<Container.ItemSetChangeListener> getItemSetChangeListeners() {
-        return itemSetChangeListeners;
-    }
-   /**
-     * Sends a simple Item set change event to all interested listeners,
-     * indicating that anything in the contents may have changed (items added,
-     * removed etc.).
-     */
-    protected void fireItemSetChange() {
-        fireItemSetChange(new BaseItemSetChangeEvent(this.container));
-    }
-
-    /**
-     * Sends an Item set change event to all registered interested listeners.
-     * 
-     * @param event
-     *            the item set change event to send, optionally with additional
-     *            information
-     */
-    protected void fireItemSetChange(ItemSetChangeEvent event) {
-        if (getItemSetChangeListeners() != null) {
-            final Object[] l = getItemSetChangeListeners().toArray();
-            for (int i = 0; i < l.length; i++) {
-                ((Container.ItemSetChangeListener) l[i])
-                        .containerItemSetChange(event);
-            }
-        }
-    }
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/MatchFunctionQueryDelegate.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/MatchFunctionQueryDelegate.java
deleted file mode 100644
index a187ef7..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/MatchFunctionQueryDelegate.java
+++ /dev/null
@@ -1,143 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.model;
-
-import java.sql.Connection;
-import java.sql.SQLException;
-import java.util.List;
-
-import com.vaadin.data.Container.Filter;
-import com.vaadin.data.util.sqlcontainer.RowItem;
-import com.vaadin.data.util.sqlcontainer.SQLUtil;
-import com.vaadin.data.util.sqlcontainer.query.FreeformStatementDelegate;
-import com.vaadin.data.util.sqlcontainer.query.OrderBy;
-import com.vaadin.data.util.sqlcontainer.query.generator.StatementHelper;
-import com.vaadin.data.util.sqlcontainer.query.generator.filter.QueryBuilder;
-
-public class MatchFunctionQueryDelegate implements FreeformStatementDelegate {
-	private static final long serialVersionUID = 1L;
-    private List<Filter> filters = null;
-    private List<OrderBy> orderBys = null;
-
-	public MatchFunctionQueryDelegate() {
-	}
-
-	@Override
-	public String getQueryString(int offset, int limit)
-			throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("use getQueryStatement");
-	}
-
-	@Override
-	public String getCountQuery() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("getCountStatement");
-	}
-
-	@Override
-	public void setFilters(List<Filter> filters)
-			throws UnsupportedOperationException {
-		this.filters = filters;
-	}
-
-	@Override
-	public void setOrderBy(List<OrderBy> orderBys)
-			throws UnsupportedOperationException {
-		this.orderBys = orderBys;
-	}
-
-	@Override
-	public int storeRow(Connection conn, RowItem row)
-			throws UnsupportedOperationException, SQLException {
-		throw new UnsupportedOperationException("Cannot store anything");
-	}
-
-	@Override
-	public boolean removeRow(Connection conn, RowItem row)
-			throws UnsupportedOperationException, SQLException {
-		throw new UnsupportedOperationException("Cannot remove anything");
-	}
-
-	@Override
-	public String getContainsRowQueryString(Object... keys)
-			throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("use getContainsRowQueryStatement");
-	}
-
-	@Override
-	public StatementHelper getQueryStatement(int offset, int limit)
-			throws UnsupportedOperationException {
-		StatementHelper sh = new StatementHelper();
-		StringBuffer query = new StringBuffer("SELECT * FROM match_functions ");
-		if (this.filters != null && this.filters.isEmpty() == false) {
-			query.append(QueryBuilder.getWhereStringForFilters(this.filters, sh));
-		}
-		query.append(getOrderByString());
-		if (offset != 0 || limit != 0) {
-			query.append(" LIMIT ").append(limit);
-			query.append(" OFFSET ").append(offset);
-		}
-		sh.setQueryString(query.toString());
-		return sh;
-	}
-
-	@Override
-	public StatementHelper getCountStatement()
-			throws UnsupportedOperationException {
-		StatementHelper sh = new StatementHelper();
-		StringBuffer query = new StringBuffer("SELECT COUNT(*) FROM match_functions ");
-		if (this.filters != null && this.filters.isEmpty() == false) {
-			query.append(QueryBuilder.getWhereStringForFilters(this.filters, sh));
-		}
-		query.append(getOrderByString());
-		sh.setQueryString(query.toString());
-		return sh;
-	}
-
-	@Override
-	public StatementHelper getContainsRowQueryStatement(Object... keys)
-			throws UnsupportedOperationException {
-        StatementHelper sh = new StatementHelper();
-        StringBuffer query = new StringBuffer("SELECT * FROM match_functions WHERE ARGUMENT_ID = ?");
-        sh.addParameterValue(keys[0]);
-        sh.setQueryString(query.toString());
-        return sh;
-	}
-
-    private String getOrderByString() {
-        StringBuffer orderBuffer = new StringBuffer("");
-        if (this.orderBys != null && !this.orderBys.isEmpty()) {
-            orderBuffer.append(" ORDER BY ");
-            OrderBy lastOrderBy = this.orderBys.get(this.orderBys.size() - 1);
-            for (OrderBy orderBy : this.orderBys) {
-                orderBuffer.append(SQLUtil.escapeSQL(orderBy.getColumn()));
-                if (orderBy.isAscending()) {
-                    orderBuffer.append(" ASC");
-                } else {
-                    orderBuffer.append(" DESC");
-                }
-                if (orderBy != lastOrderBy) {
-                    orderBuffer.append(", ");
-                }
-            }
-        }
-        return orderBuffer.toString();
-    }
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/ObligationAdviceContainer.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/ObligationAdviceContainer.java
deleted file mode 100644
index 65f8a3c..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/ObligationAdviceContainer.java
+++ /dev/null
@@ -1,1385 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.model;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.bind.JAXBElement;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ApplyType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeAssignmentExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeSelectorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionsType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.vaadin.data.Container;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.data.util.MethodProperty;
-
-public class ObligationAdviceContainer extends ItemSetChangeNotifier implements Container.Hierarchical, Container.ItemSetChangeNotifier {
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(ObligationAdviceContainer.class);
-	
-    public static String PROPERTY_NAME = "Name";
-    public static String PROPERTY_ID = "Id";
-    public static String PROPERTY_ID_SHORT = "ShortId";
-    public static String PROPERTY_EFFECT = "Effect";
-    public static String PROPERTY_CATEGORY = "Category";
-    public static String PROPERTY_CATEGORY_SHORT = "ShortCategory";
-    public static String PROPERTY_DATATYPE = "Datatype";
-    public static String PROPERTY_DATATYPE_SHORT = "ShortDatatype";
-
-    /**
-     * List of the string identifiers for the available properties.
-     */
-    public static Collection<String> OBADVICE_PROPERTIES;
-
-    private final static Method OBADVICE_ITEM_NAME;
-    
-    private final static Method OBADVICE_ITEM_ID;
-
-    private final static Method OBADVICE_ITEM_ID_SHORT;
-
-    private final static Method OBADVICE_ITEM_EFFECT;
-
-    private final static Method OBADVICE_ITEM_DATATYPE;
-
-    private final static Method OBADVICE_ITEM_DATATYPE_SHORT;
-
-    private final static Method OBADVICE_ITEM_CATEGORY;
-
-    private final static Method OBADVICE_ITEM_CATEGORY_SHORT;
-
-    static {
-    	OBADVICE_PROPERTIES = new ArrayList<String>();
-    	OBADVICE_PROPERTIES.add(PROPERTY_NAME);
-    	OBADVICE_PROPERTIES.add(PROPERTY_ID);
-    	OBADVICE_PROPERTIES.add(PROPERTY_ID_SHORT);
-    	OBADVICE_PROPERTIES.add(PROPERTY_EFFECT);
-    	OBADVICE_PROPERTIES.add(PROPERTY_CATEGORY);
-    	OBADVICE_PROPERTIES.add(PROPERTY_DATATYPE_SHORT);
-    	OBADVICE_PROPERTIES.add(PROPERTY_DATATYPE);
-    	OBADVICE_PROPERTIES.add(PROPERTY_CATEGORY_SHORT);
-    	OBADVICE_PROPERTIES = Collections.unmodifiableCollection(OBADVICE_PROPERTIES);
-    	try {
-    		OBADVICE_ITEM_NAME = ObAdviceItem.class.getMethod("getName", new Class[]{});
-    		OBADVICE_ITEM_ID = ObAdviceItem.class.getMethod("getId", new Class[]{});
-    		OBADVICE_ITEM_ID_SHORT = ObAdviceItem.class.getMethod("getIdShort", new Class[]{});
-    		OBADVICE_ITEM_EFFECT = ObAdviceItem.class.getMethod("getEffect", new Class[]{});
-    		OBADVICE_ITEM_DATATYPE = ObAdviceItem.class.getMethod("getDatatype", new Class[]{});
-    		OBADVICE_ITEM_DATATYPE_SHORT = ObAdviceItem.class.getMethod("getDatatypeShort", new Class[]{});
-    		OBADVICE_ITEM_CATEGORY = ObAdviceItem.class.getMethod("getCategory", new Class[]{});
-    		OBADVICE_ITEM_CATEGORY_SHORT = ObAdviceItem.class.getMethod("getCategoryShort", new Class[]{});
-        } catch (final NoSuchMethodException e) {
-            throw new RuntimeException(
-                    "Internal error finding methods in ObligationAdviceContainer");
-        }
-    }
-    //
-    // Our root object
-    //
-    private final Object root;
-    //
-    // Our helper maps to control the hierarchy
-    //
-    private List<AdviceExpressionType> rootAdvice = new ArrayList<AdviceExpressionType>();
-    private List<ObligationExpressionType> rootObligations = new ArrayList<ObligationExpressionType>();
-    private Map<AttributeAssignmentExpressionType, AdviceExpressionType> adviceExpressions = new HashMap<AttributeAssignmentExpressionType, AdviceExpressionType>();
-    private Map<AttributeAssignmentExpressionType, ObligationExpressionType> obligationExpressions = new HashMap<AttributeAssignmentExpressionType, ObligationExpressionType>();
-    private Map<AttributeValueType, AttributeAssignmentExpressionType> values = new HashMap<AttributeValueType, AttributeAssignmentExpressionType>();
-    private Map<AttributeDesignatorType, AttributeAssignmentExpressionType> designators = new HashMap<AttributeDesignatorType, AttributeAssignmentExpressionType>();
-    private Map<AttributeSelectorType, AttributeAssignmentExpressionType> selectors = new HashMap<AttributeSelectorType, AttributeAssignmentExpressionType>();
-    private Map<ApplyType, AttributeAssignmentExpressionType> applys = new HashMap<ApplyType, AttributeAssignmentExpressionType>();
-    
-	public ObligationAdviceContainer(Object root) {
-		super();
-		this.setContainer(this);
-		//
-		// Save
-		//
-		this.root = root;
-		//
-		// Initialize
-		//
-		this.initialize();
-	}
-	
-	protected void initialize() {
-		if (this.root instanceof AdviceExpressionsType) {
-			for (AdviceExpressionType advice : ((AdviceExpressionsType) this.root).getAdviceExpression()) {
-				this.rootAdvice.add(advice);
-				for (AttributeAssignmentExpressionType assignment : advice.getAttributeAssignmentExpression()) {
-					this.adviceExpressions.put(assignment, advice);
-					this.addExpression(assignment.getExpression(), assignment);
-				}
-			}
-		} else if (this.root instanceof ObligationExpressionsType) {
-			for (ObligationExpressionType obligation : ((ObligationExpressionsType) this.root).getObligationExpression()) {
-				this.rootObligations.add(obligation);
-				for (AttributeAssignmentExpressionType assignment : obligation.getAttributeAssignmentExpression()) {
-					this.obligationExpressions.put(assignment, obligation);
-					this.addExpression(assignment.getExpression(), assignment);
-				}
-			}
-		} else {
-			throw new IllegalArgumentException("This container supports only advice or obligation expressions.");
-		}
-	}
-	
-	private void addExpression(JAXBElement<?> element, AttributeAssignmentExpressionType parent) {
-		if (element.getValue() == null) {
-			return;
-		}
-		if (element.getValue() instanceof AttributeValueType) {
-			this.values.put((AttributeValueType) element.getValue(), parent);
-		} else if (element.getValue() instanceof AttributeDesignatorType) {
-			this.designators.put((AttributeDesignatorType) element.getValue(), parent);
-		} else if (element.getValue() instanceof AttributeSelectorType) {
-			this.selectors.put((AttributeSelectorType) element.getValue(), parent);
-		} else if (element.getValue() instanceof ApplyType) {
-			this.applys.put((ApplyType) element.getValue(), parent);
-		} else {
-			//
-			// TODO
-			//
-			logger.error("Adding unknown expression type");
-		}
-	}
-
-	public boolean isObjectSupported(Object itemId) {
-		if (itemId instanceof AdviceExpressionType) {
-			return true;
-		}
-		if (itemId instanceof ObligationExpressionType) {
-			return true;
-		}
-		if (itemId instanceof AttributeAssignmentExpressionType) {
-			return true;
-		}
-		if (itemId instanceof AttributeValueType) {
-			return true;
-		}
-		if (itemId instanceof AttributeDesignatorType) {
-			return true;
-		}
-		if (itemId instanceof AttributeSelectorType) {
-			return true;
-		}
-		if (itemId instanceof ApplyType) {
-			return true;
-		}
-		return false;
-	}
-	
-	public void updateItem(Object itemId) {
-		this.fireItemSetChange();
-	}
-
-	@Override
-	public Item getItem(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("getItem: " + itemId);
-		}
-		if (this.isObjectSupported(itemId) == false) {
-			return null;
-		}
-		return new ObAdviceItem(itemId);
-	}
-
-	@Override
-	public Collection<?> getContainerPropertyIds() {
-		return OBADVICE_PROPERTIES;
-	}
-
-	@Override
-	public Collection<?> getItemIds() {
-		final Collection<Object> items = new ArrayList<Object>();
-		if (this.root instanceof ObligationExpressionsType) {
-			items.addAll(this.rootObligations);
-			if (this.obligationExpressions.isEmpty() == false) {
-				items.addAll(this.obligationExpressions.keySet());
-			}
-		} else if (this.root instanceof AdviceExpressionsType) {
-			items.addAll(this.rootAdvice);
-			if (this.adviceExpressions.isEmpty() == false) {
-				items.addAll(this.adviceExpressions.keySet());
-			}
-		}
-		if (this.values.isEmpty() == false) {
-			items.add(this.values.keySet());
-		}
-		if (this.designators.isEmpty() == false) {
-			items.add(this.designators.keySet());
-		}
-		if (this.selectors.isEmpty() == false) {
-			items.add(this.selectors.keySet());
-		}
-		if (this.applys.isEmpty() == false) {
-			items.add(this.applys.keySet());
-		}
-		if (logger.isTraceEnabled()) {
-			logger.trace("getItemIds (" + items.size() + "):" + items);
-		}
-		return Collections.unmodifiableCollection(items);
-	}
-
-	@Override
-	public Property<?> getContainerProperty(Object itemId, Object propertyId) {
-		if (this.isObjectSupported(itemId) == false) {
-			return null;
-		}
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new ObAdviceItem(itemId), OBADVICE_ITEM_NAME, null);
-        }
-
-        if (propertyId.equals(PROPERTY_ID)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new ObAdviceItem(itemId), OBADVICE_ITEM_ID, null);
-        }
-		
-        if (propertyId.equals(PROPERTY_ID_SHORT)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new ObAdviceItem(itemId), OBADVICE_ITEM_ID_SHORT, null);
-        }
-		
-        if (propertyId.equals(PROPERTY_EFFECT)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new ObAdviceItem(itemId), OBADVICE_ITEM_EFFECT, null);
-        }
-		
-        if (propertyId.equals(PROPERTY_DATATYPE)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new ObAdviceItem(itemId), OBADVICE_ITEM_DATATYPE, null);
-        }
-		
-        if (propertyId.equals(PROPERTY_DATATYPE_SHORT)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new ObAdviceItem(itemId), OBADVICE_ITEM_DATATYPE_SHORT, null);
-        }
-		
-        if (propertyId.equals(PROPERTY_CATEGORY)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new ObAdviceItem(itemId), OBADVICE_ITEM_CATEGORY, null);
-        }
-		
-        if (propertyId.equals(PROPERTY_CATEGORY_SHORT)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new ObAdviceItem(itemId), OBADVICE_ITEM_CATEGORY_SHORT, null);
-        }
-		
-		return null;
-	}
-
-	@Override
-	public Class<?> getType(Object propertyId) {
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_ID)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_ID_SHORT)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_EFFECT)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_DATATYPE)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_DATATYPE_SHORT)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_CATEGORY)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_CATEGORY_SHORT)) {
-            return String.class;
-        }
-		return null;
-	}
-
-	@Override
-	public int size() {
-		int size = 0;
-		if (this.root instanceof ObligationExpressionsType) {
-			size += this.rootObligations.size();
-			size += this.obligationExpressions.size();
-		} else if (this.root instanceof AdviceExpressionsType) {
-			size += this.rootAdvice.size();
-			size += this.adviceExpressions.size();
-		}
-		size += this.values.size();
-		size += this.designators.size();
-		size += this.selectors.size();
-		size += this.applys.size();
-		if (logger.isTraceEnabled()) {
-			logger.trace("size: " + size);
-		}
-		return size;
-	}
-
-	@Override
-	public boolean containsId(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("containsId: " + itemId);
-		}
-		if (itemId instanceof AdviceExpressionType) {
-			return this.rootAdvice.contains(itemId);
-		}
-		if (itemId instanceof ObligationExpressionType) {
-			return this.rootObligations.contains(itemId);
-		}
-		if (itemId instanceof AttributeAssignmentExpressionType) {
-			if (this.root instanceof ObligationExpressionsType) {
-				return this.obligationExpressions.containsKey(itemId);
-			} else if (this.root instanceof AdviceExpressionsType) {
-				return this.adviceExpressions.containsKey(itemId);
-			}
-		}
-		if (itemId instanceof AttributeValueType) {
-			return this.values.containsKey(itemId);
-		}
-		if (itemId instanceof AttributeDesignatorType) {
-			return this.designators.containsKey(itemId);
-		}
-		if (itemId instanceof AttributeSelectorType) {
-			return this.selectors.containsKey(itemId);
-		}
-		if (itemId instanceof ApplyType) {
-			return this.applys.containsKey(itemId);
-		}
-		return false;
-	}
-
-	@Override
-	public Item addItem(Object itemId) throws UnsupportedOperationException {
-		if (itemId instanceof ObligationExpressionType ||
-			itemId instanceof AdviceExpressionType) {
-			return this.addItem(itemId, null);
-		}
-		throw new UnsupportedOperationException("Must be Obligation or Advice Expression Type.");
-	}
-
-	@Override
-	public Object addItem() throws UnsupportedOperationException {
-		if (this.root instanceof ObligationExpressionsType) {
-			return this.addItem(new ObligationExpressionType(), null);
-		} else if (this.root instanceof AdviceExpressionsType) {
-			return this.addItem(new AdviceExpressionType(), null);
-		}
-		//
-		// Should never get here
-		//
-		return null;
-	}
-	
-	public Item addItem(Object itemId, Object parent) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("addItem: " + itemId + " " + parent);
-		}
-		//
-		// Check itemId to see if its supported
-		//
-		if (this.isObjectSupported(itemId) == false) {
-			logger.error("Unsupported itemid: " + itemId.getClass().getCanonicalName());
-			return null;
-		}
-		//
-		// Determine what they are trying to add
-		//
-		if (this.root instanceof ObligationExpressionsType) {
-			if (itemId instanceof ObligationExpressionType) {
-				//
-				// Adding a new root obligation expression, is it already in the parent.
-				//
-				if (((ObligationExpressionsType)this.root).getObligationExpression().contains(itemId) == false) {
-					//
-					// It doesn't exist in the object, add it in
-					//
-					((ObligationExpressionsType)this.root).getObligationExpression().add((ObligationExpressionType) itemId);
-				}
-				//
-				// Track this
-				//
-				this.rootObligations.add((ObligationExpressionType) itemId);
-				//
-				// Notify
-				//
-				this.fireItemSetChange();
-				//
-				// Return the item
-				//
-				return new ObAdviceItem(itemId);
-			}
-			if (itemId instanceof AttributeAssignmentExpressionType) {
-				//
-				// Sanity check the parent
-				//
-				if (parent instanceof ObligationExpressionType == false) {
-					logger.error("Incorrect parent type: " + parent.getClass().getCanonicalName());
-					return null;
-				}
-				//
-				// Does the parent object exist?
-				//
-				if (((ObligationExpressionsType)this.root).getObligationExpression().contains(parent) == false) {
-					//
-					// This is a new obligation
-					//
-					logger.info("addItem - parent not found, adding." + ((ObligationExpressionType) parent).getObligationId());
-					((ObligationExpressionsType)this.root).getObligationExpression().add((ObligationExpressionType) parent);
-					//
-					// track it
-					//
-					this.rootObligations.add((ObligationExpressionType) parent);
-				}
-				//
-				// Check if the item needs to be added to the parent object
-				//
-				if (((ObligationExpressionType) parent).getAttributeAssignmentExpression().contains(itemId) == false) {
-					//
-					// Put the assignment into the parent
-					//
-					((ObligationExpressionType) parent).getAttributeAssignmentExpression().add((AttributeAssignmentExpressionType) itemId);
-					//
-					// Add the contained expression
-					//
-					this.addExpression(((AttributeAssignmentExpressionType) itemId).getExpression(), (AttributeAssignmentExpressionType) itemId);
-				}
-				//
-				// track this in our map
-				//
-				this.obligationExpressions.put((AttributeAssignmentExpressionType) itemId, (ObligationExpressionType) parent);
-				//
-				// Notify
-				//
-				this.fireItemSetChange();
-				//
-				// Return the item
-				//
-				return new ObAdviceItem(itemId);
-			}
-			if (parent instanceof AttributeAssignmentExpressionType) {
-				//
-				// Does the parent object exist?
-				//
-				if (this.obligationExpressions.containsKey(parent) == false) {
-					//
-					// No - we can't add it. Need more information.
-					//
-					logger.info("addItem - parent not found, adding." + ((AttributeAssignmentExpressionType) parent).getAttributeId());
-					return null;
-				}
-				if (itemId instanceof AttributeValueType) {
-					this.values.put((AttributeValueType) itemId, (AttributeAssignmentExpressionType) parent);
-				} else if (itemId instanceof AttributeDesignatorType) {
-					this.designators.put((AttributeDesignatorType) itemId, (AttributeAssignmentExpressionType) parent);
-				} else if (itemId instanceof AttributeSelectorType) {
-					this.selectors.put((AttributeSelectorType) itemId, (AttributeAssignmentExpressionType) parent);
-				} else if (itemId instanceof ApplyType) {
-					this.applys.put((ApplyType) itemId, (AttributeAssignmentExpressionType) parent);
-				} else {
-					logger.error("Should not get here. The object was checked in the beginning of the function. Someone removed or altered that check.");
-					assert false;
-					return null;
-				}
-				//
-				// Notify
-				//
-				this.fireItemSetChange();
-				//
-				// Return the item
-				//
-				return new ObAdviceItem(itemId);
-			}
-		} else if (this.root instanceof AdviceExpressionsType) {
-			//
-			// Are we adding new root advice expression?
-			//
-			if (itemId instanceof AdviceExpressionType) {
-				//
-				// Adding a new root obligation expression, is it already in the parent.
-				//
-				if (((AdviceExpressionsType)this.root).getAdviceExpression().contains(itemId) == false) {
-					//
-					// No - add it in
-					//
-					((AdviceExpressionsType)this.root).getAdviceExpression().add((AdviceExpressionType) itemId);
-				}
-				//
-				// Track this object
-				//
-				this.rootAdvice.add((AdviceExpressionType) itemId);
-				//
-				// Notify
-				//
-				this.fireItemSetChange();
-				//
-				// Return the new item
-				//
-				return new ObAdviceItem(itemId);
-			}
-			if (itemId instanceof AttributeAssignmentExpressionType) {
-				//
-				// Sanity check
-				//
-				if (parent instanceof AdviceExpressionType == false) {
-					logger.error("Incorrect parent type: " + parent.getClass().getCanonicalName());
-					return null;
-				}
-				//
-				// Does the parent object exist?
-				//
-				if (((AdviceExpressionsType)this.root).getAdviceExpression().contains(parent) == false) {
-					//
-					// This is a new obligation
-					//
-					logger.info("addItem - parent not found, adding." + ((AdviceExpressionType) parent).getAdviceId());
-					((AdviceExpressionsType)this.root).getAdviceExpression().add((AdviceExpressionType) parent);
-					//
-					// Track it
-					//
-					this.rootAdvice.add((AdviceExpressionType) parent);
-				}
-				//
-				// Check if the item needs to be added to the parent object
-				//
-				if (((AdviceExpressionType) parent).getAttributeAssignmentExpression().contains(itemId) == false) {
-					//
-					// Put the assignment into the parent
-					//
-					((AdviceExpressionType) parent).getAttributeAssignmentExpression().add((AttributeAssignmentExpressionType) itemId);
-					//
-					// Add the contained expression
-					//
-					this.addExpression(((AttributeAssignmentExpressionType) itemId).getExpression(), (AttributeAssignmentExpressionType) itemId);
-				}
-				//
-				// track this in our map
-				//
-				this.adviceExpressions.put((AttributeAssignmentExpressionType) itemId, (AdviceExpressionType) parent);
-				//
-				// Notify
-				//
-				this.fireItemSetChange();
-				//
-				// Return the item
-				//
-				return new ObAdviceItem(itemId);
-			}
-			if (parent instanceof AttributeAssignmentExpressionType) {
-				//
-				// Does the parent object exist?
-				//
-				if (this.adviceExpressions.containsKey(parent) == false) {
-					//
-					// No - we can't add it. Need more information.
-					//
-					logger.info("addItem - parent not found, adding." + ((AttributeAssignmentExpressionType) parent).getAttributeId());
-					return null;
-				}
-				if (itemId instanceof AttributeValueType) {
-					this.values.put((AttributeValueType) itemId, (AttributeAssignmentExpressionType) parent);
-				} else if (itemId instanceof AttributeDesignatorType) {
-					this.designators.put((AttributeDesignatorType) itemId, (AttributeAssignmentExpressionType) parent);
-				} else if (itemId instanceof AttributeSelectorType) {
-					this.selectors.put((AttributeSelectorType) itemId, (AttributeAssignmentExpressionType) parent);
-				} else if (itemId instanceof ApplyType) {
-					this.applys.put((ApplyType) itemId, (AttributeAssignmentExpressionType) parent);
-				} else {
-					logger.error("Should not get here. Someone altered the object supported check or removed the code.");
-					assert false;
-					return null;
-				}
-				//
-				// Notify
-				//
-				this.fireItemSetChange();
-				//
-				// Return new item
-				//
-				return new ObAdviceItem(itemId);
-			}
-		} else {
-			//
-			// We should not ever get here.
-			//
-			logger.error("The root object is incorrect.");
-			return null;
-		}
-		logger.error("Unsupported combination of itemId and parent classes.");
-		return null;
-	}
-
-	@Override
-	public boolean addContainerProperty(Object propertyId, Class<?> type,
-			Object defaultValue) throws UnsupportedOperationException {
-		return false;
-	}
-
-	@Override
-	public boolean removeContainerProperty(Object propertyId)
-			throws UnsupportedOperationException {
-		return false;
-	}
-	
-	public boolean removeAllAssignments () {
-		if (logger.isTraceEnabled()) {
-			logger.trace("removeAllAssignments:");
-		}
-		if (this.root instanceof ObligationExpressionsType) {
-			((ObligationExpressionsType)this.root).getObligationExpression().clear();
-			this.obligationExpressions.clear();
-		} else if (this.root instanceof AdviceExpressionsType) {
-			((AdviceExpressionsType)this.root).getAdviceExpression().clear();
-			this.adviceExpressions.clear();
-		}
-		this.values.clear();
-		this.designators.clear();
-		this.selectors.clear();
-		this.applys.clear();
-		//
-		// Notify
-		//
-		this.fireItemSetChange();
-		return true;
-	}
-
-	@Override
-	public boolean removeAllItems() throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("removeAllItems:");
-		}
-		if (this.root instanceof ObligationExpressionsType) {
-			((ObligationExpressionsType)this.root).getObligationExpression().clear();
-			this.rootObligations.clear();
-			this.obligationExpressions.clear();
-		} else if (this.root instanceof AdviceExpressionsType) {
-			((AdviceExpressionsType)this.root).getAdviceExpression().clear();
-			this.rootAdvice.clear();
-			this.adviceExpressions.clear();
-		}
-		this.values.clear();
-		this.designators.clear();
-		this.selectors.clear();
-		this.applys.clear();
-		//
-		// Notify
-		//
-		this.fireItemSetChange();
-		return true;
-	}
-
-	@Override
-	public Collection<?> getChildren(Object itemId) {
-		final Collection<Object> items = new ArrayList<Object>();
-		if (itemId instanceof AdviceExpressionType) {
-			if (this.rootAdvice.contains(itemId)) {
-				items.addAll(((AdviceExpressionType) itemId).getAttributeAssignmentExpression());
-			} else {
-				logger.error("getChildren: itemId not in root advice expression " + ((AdviceExpressionType) itemId).getAdviceId());
-			}
-		}
-		if (itemId instanceof ObligationExpressionType) {
-			if (this.rootObligations.contains(itemId)) {
-				items.addAll(((ObligationExpressionType) itemId).getAttributeAssignmentExpression());
-			} else {
-				logger.error("getChildren: itemId not in root obligation expression " + ((ObligationExpressionType) itemId).getObligationId());
-			}
-		}
-		if (itemId instanceof AttributeAssignmentExpressionType) {
-			if (this.root instanceof ObligationExpressionsType) {
-				if (this.obligationExpressions.containsKey(itemId)) {
-					JAXBElement<?> element = ((AttributeAssignmentExpressionType) itemId).getExpression();
-					if (element != null && element.getValue() != null) {
-						items.add(element.getValue());
-					}
-				} else {
-					logger.error("getChildren: itemId not in obligation expressions " + ((AttributeAssignmentExpressionType) itemId).getAttributeId());
-				}
-			} else if (this.root instanceof AdviceExpressionsType) {
-				if (this.adviceExpressions.containsKey(itemId)) {
-					JAXBElement<?> element = ((AttributeAssignmentExpressionType) itemId).getExpression();
-					if (element != null && element.getValue() != null) {
-						items.add(element.getValue());
-					}
-				} else {
-					logger.error("getChildren: itemId not in advice expressions " + ((AttributeAssignmentExpressionType) itemId).getAttributeId());
-				}
-			}
-		}
-		if (logger.isTraceEnabled()) {
-			logger.trace("getChildren " + itemId + "(" + items.size() + "):" + items);
-		}
-		return Collections.unmodifiableCollection(items);
-	}
-
-	@Override
-	public Object getParent(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("getParent: " + itemId);
-		}
-		assert itemId != null;
-		if (itemId instanceof AdviceExpressionType) {
-			if (this.root instanceof AdviceExpressionsType) {
-				return this.root;
-			}
-			return null;
-		}
-		if (itemId instanceof ObligationExpressionType) {
-			if (this.root instanceof ObligationExpressionsType) {
-				return this.root;
-			}
-			return null;
-		}
-		if (itemId instanceof AttributeAssignmentExpressionType) {
-			if (this.root instanceof ObligationExpressionsType) {
-				return this.obligationExpressions.get(itemId);
-			} else if (this.root instanceof AdviceExpressionsType) {
-				return this.adviceExpressions.get(itemId);
-			}
-		}
-		if (itemId instanceof AttributeValueType) {
-			return this.values.get(itemId);
-		}
-		if (itemId instanceof AttributeDesignatorType) {
-			return this.designators.get(itemId);
-		}
-		if (itemId instanceof AttributeSelectorType) {
-			return this.selectors.get(itemId);
-		}
-		if (itemId instanceof ApplyType) {
-			return this.applys.get(itemId);
-		}
-		return null;
-	}
-
-	@Override
-	public Collection<?> rootItemIds() {
-		final Collection<Object> items = new ArrayList<Object>();
-		if (this.root instanceof ObligationExpressionsType) {
-			items.addAll(this.rootObligations);
-		} else if (this.root instanceof AdviceExpressionsType) {
-			items.addAll(this.rootAdvice);
-		}
-		if (logger.isTraceEnabled()) {
-			logger.trace("rootItemIds (" + items.size() + "):" + items);
-		}
-		return Collections.unmodifiableCollection(items);
-	}
-
-	@Override
-	public boolean setParent(Object itemId, Object newParentId) throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("setParent: " + itemId);
-		}
-		if (itemId instanceof AdviceExpressionType) {
-			return false;
-		}
-		if (itemId instanceof ObligationExpressionType) {
-			return false;
-		}
-		if (itemId instanceof AttributeAssignmentExpressionType) {
-			if (this.root instanceof ObligationExpressionsType && newParentId instanceof ObligationExpressionType) {
-				//
-				// Remove it from its parent object
-				//
-				ObligationExpressionType oldParent = this.obligationExpressions.get(itemId);
-				if (oldParent.getAttributeAssignmentExpression().remove(itemId)) {
-					//
-					// See if its in the new parent
-					//
-					if (((ObligationExpressionType) newParentId).getAttributeAssignmentExpression().contains(itemId) == false) {
-						//
-						// Nope, add it in
-						//
-						((ObligationExpressionType) newParentId).getAttributeAssignmentExpression().add((AttributeAssignmentExpressionType) itemId);
-					}
-					//
-					// Update our tracking
-					//
-					this.obligationExpressions.put((AttributeAssignmentExpressionType) itemId, (ObligationExpressionType) newParentId);
-					//
-					// Fire
-					//
-					this.fireItemSetChange();
-					return true;
-				}
-			} else if (this.root instanceof AdviceExpressionsType) {
-				//
-				// Remove it from its parent object
-				//
-				AdviceExpressionType oldParent = this.adviceExpressions.get(itemId);
-				if (oldParent.getAttributeAssignmentExpression().remove(itemId)) {
-					//
-					// See if its in the new parent
-					//
-					if (((AdviceExpressionType) newParentId).getAttributeAssignmentExpression().contains(itemId) == false) {
-						//
-						// Nope, add it in
-						//
-						((AdviceExpressionType) newParentId).getAttributeAssignmentExpression().add((AttributeAssignmentExpressionType) itemId);
-					}
-					//
-					// Update our tracking
-					//
-					this.adviceExpressions.put((AttributeAssignmentExpressionType) itemId, (AdviceExpressionType) newParentId);
-					//
-					// Fire
-					//
-					this.fireItemSetChange();
-					return true;
-				}
-			}
-			return false;
-		}
-		if (itemId instanceof AttributeValueType && newParentId instanceof AttributeAssignmentExpressionType) {
-			AttributeAssignmentExpressionType oldParent = this.values.get(itemId);
-			if (oldParent != null &&
-				oldParent.getExpression() != null &&
-				oldParent.getExpression().getValue() != null &&
-				oldParent.getExpression().getValue() == itemId) {
-				//
-				// Remove from old parent
-				//
-				oldParent.setExpression(null);
-				//
-				// Put in new parent
-				//
-				((AttributeAssignmentExpressionType) newParentId).setExpression(new ObjectFactory().createAttributeValue((AttributeValueType) itemId));
-				//
-				// track it
-				//
-				this.values.put((AttributeValueType) itemId, (AttributeAssignmentExpressionType) newParentId);
-				//
-				// Fire
-				//
-				this.fireItemSetChange();
-				return true;
-			}
-			return false;
-		}
-		if (itemId instanceof AttributeDesignatorType && newParentId instanceof AttributeAssignmentExpressionType) {
-			AttributeAssignmentExpressionType oldParent = this.designators.get(itemId);
-			if (oldParent != null &&
-				oldParent.getExpression() != null &&
-				oldParent.getExpression().getValue() != null &&
-				oldParent.getExpression().getValue() == itemId) {
-				//
-				// Remove from old parent
-				//
-				oldParent.setExpression(null);
-				//
-				// Put in new parent
-				//
-				((AttributeAssignmentExpressionType) newParentId).setExpression(new ObjectFactory().createAttributeDesignator((AttributeDesignatorType) itemId));
-				//
-				// track it
-				//
-				this.designators.put((AttributeDesignatorType) itemId, (AttributeAssignmentExpressionType) newParentId);
-				//
-				// Fire
-				//
-				this.fireItemSetChange();
-				return true;
-			}
-			return false;
-		}
-		if (itemId instanceof AttributeSelectorType && newParentId instanceof AttributeAssignmentExpressionType) {
-			AttributeAssignmentExpressionType oldParent = this.selectors.get(itemId);
-			if (oldParent != null &&
-				oldParent.getExpression() != null &&
-				oldParent.getExpression().getValue() != null &&
-				oldParent.getExpression().getValue() == itemId) {
-				//
-				// Remove from old parent
-				//
-				oldParent.setExpression(null);
-				//
-				// Put in new parent
-				//
-				((AttributeAssignmentExpressionType) newParentId).setExpression(new ObjectFactory().createAttributeSelector((AttributeSelectorType) itemId));
-				//
-				// track it
-				//
-				this.selectors.put((AttributeSelectorType) itemId, (AttributeAssignmentExpressionType) newParentId);
-				//
-				// Fire
-				//
-				this.fireItemSetChange();
-				return true;
-			}
-			return false;
-		}
-		if (itemId instanceof ApplyType && newParentId instanceof AttributeAssignmentExpressionType) {
-			AttributeAssignmentExpressionType oldParent = this.applys.get(itemId);
-			if (oldParent != null &&
-				oldParent.getExpression() != null &&
-				oldParent.getExpression().getValue() != null &&
-				oldParent.getExpression().getValue() == itemId) {
-				//
-				// Remove from old parent
-				//
-				oldParent.setExpression(null);
-				//
-				// Put in new parent
-				//
-				((AttributeAssignmentExpressionType) newParentId).setExpression(new ObjectFactory().createApply((ApplyType) itemId));
-				//
-				// track it
-				//
-				this.applys.put((ApplyType) itemId, (AttributeAssignmentExpressionType) newParentId);
-				//
-				// Fire
-				//
-				this.fireItemSetChange();
-				return true;
-			}
-			return false;
-		}
-		return false;
-	}
-
-	@Override
-	public boolean areChildrenAllowed(Object itemId) {
-		if (itemId instanceof AdviceExpressionType) {
-			return true;
-		}
-		if (itemId instanceof ObligationExpressionType) {
-			return true;
-		}
-		if (itemId instanceof AttributeAssignmentExpressionType) {
-			return true;
-		}
-		if (itemId instanceof AttributeValueType) {
-			return false;
-		}
-		if (itemId instanceof AttributeDesignatorType) {
-			return false;
-		}
-		if (itemId instanceof AttributeSelectorType) {
-			return false;
-		}
-		if (itemId instanceof ApplyType) {
-			return false;
-		}
-		return false;
-	}
-
-	@Override
-	public boolean setChildrenAllowed(Object itemId, boolean areChildrenAllowed) throws UnsupportedOperationException {
-		if (itemId instanceof AdviceExpressionType) {
-			return (areChildrenAllowed ? true : false);
-		}
-		if (itemId instanceof ObligationExpressionType) {
-			return (areChildrenAllowed ? true : false);
-		}
-		if (itemId instanceof AttributeAssignmentExpressionType) {
-			return (areChildrenAllowed ? true : false);
-		}
-		if (itemId instanceof AttributeValueType) {
-			return (areChildrenAllowed == false ? true : false);
-		}
-		if (itemId instanceof AttributeDesignatorType) {
-			return (areChildrenAllowed == false ? true : false);
-		}
-		if (itemId instanceof AttributeSelectorType) {
-			return (areChildrenAllowed == false ? true : false);
-		}
-		if (itemId instanceof ApplyType) {
-			return (areChildrenAllowed == false ? true : false);
-		}
-		return false;
-	}
-
-	@Override
-	public boolean isRoot(Object itemId) {
-		if (this.root instanceof AdviceExpressionsType) {
-			return this.rootAdvice.contains(itemId);
-		} else if (this.root instanceof ObligationExpressionsType) {
-			return this.rootObligations.contains(itemId);
-		}
-		return false;
-	}
-
-	@Override
-	public boolean hasChildren(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("hasChildren: " + itemId);
-		}
-		if (itemId instanceof AdviceExpressionType && this.root instanceof AdviceExpressionsType &&
-				this.rootAdvice.contains(itemId)) {
-			return ((AdviceExpressionType) itemId).getAttributeAssignmentExpression().size() > 0;
-		}
-		if (itemId instanceof ObligationExpressionType && this.root instanceof ObligationExpressionsType &&
-				this.rootObligations.contains(itemId)) {
-			return ((ObligationExpressionType) itemId).getAttributeAssignmentExpression().size() > 0;
-		}
-		if (itemId instanceof AttributeAssignmentExpressionType) {
-			if (this.root instanceof ObligationExpressionsType) {
-				return this.obligationExpressions.size() > 0;
-			} else if (this.root instanceof AdviceExpressionsType) {
-				return this.adviceExpressions.size() > 0;
-			}
-		}
-		return false;
-	}
-
-	@Override
-	public boolean removeItem(Object itemId) throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("removeItem: " + itemId);
-		}
-		if (this.root instanceof ObligationExpressionsType) {
-			if (itemId instanceof ObligationExpressionType) {
-				if (((ObligationExpressionsType) this.root).getObligationExpression().remove(itemId)) {
-					//
-					// Remove this
-					//
-					if (this.rootObligations.remove(itemId) == false) {
-						//
-						//
-						//
-						assert false;
-						logger.error("Removing item " + itemId + " failed to remove it from root obligation list");
-					}
-					//
-					// Notify
-					//
-					this.fireItemSetChange();
-					return true ;
-				}
-			} else if (itemId instanceof AttributeAssignmentExpressionType) {
-				ObligationExpressionType parent = this.obligationExpressions.get(itemId);
-				if (parent != null && parent.getAttributeAssignmentExpression().remove(itemId)) {
-					if (this.obligationExpressions.remove(itemId) == null) {
-						assert false;
-						logger.error("Removing item " + itemId + " failed to remove it from obligation expressions map");
-					}
-					//
-					// Notify
-					//
-					this.fireItemSetChange();
-					return true;
-				}
-			}
-		} else if (this.root instanceof AdviceExpressionsType) {
-			if (itemId instanceof AdviceExpressionType) {
-				if (((AdviceExpressionsType) this.root).getAdviceExpression().remove(itemId)) {
-					if (this.rootAdvice.remove(itemId) == false) {
-						assert false;
-						logger.error("Removing item " + itemId + " failed to remove it from root advice list");
-					}
-					//
-					// Notify
-					//
-					this.fireItemSetChange();
-					return true;
-				}
-			} else if (itemId instanceof AttributeAssignmentExpressionType) {
-				AdviceExpressionType parent = this.adviceExpressions.get(itemId);
-				if (parent != null && parent.getAttributeAssignmentExpression().remove(itemId)) {
-					if (this.adviceExpressions.remove(itemId) == null) {
-						assert false;
-						logger.error("Removing item " + itemId + " failed to remove it from advice expressions map");
-					}
-					//
-					// Notify
-					//
-					this.fireItemSetChange();
-					return true;
-				}
-			}
-		}
-		if (itemId instanceof AttributeValueType) {
-			AttributeAssignmentExpressionType parent = this.values.get(itemId);
-			if (parent != null && 
-				parent.getExpression() != null && 
-				parent.getExpression().getValue() != null && 
-				parent.getExpression().getValue().equals(itemId)) {
-				parent.setExpression(null);
-				//
-				// Notify
-				//
-				this.fireItemSetChange();
-				return this.values.remove(itemId) == null;
-			}
-		}
-		if (itemId instanceof AttributeDesignatorType) {
-			AttributeAssignmentExpressionType parent = this.designators.get(itemId);
-			if (parent != null && 
-				parent.getExpression() != null && 
-				parent.getExpression().getValue() != null && 
-				parent.getExpression().getValue().equals(itemId)) {
-				parent.setExpression(null);
-				//
-				// Notify
-				//
-				this.fireItemSetChange();
-				return this.designators.remove(itemId) == null;
-			}
-		}
-		if (itemId instanceof AttributeSelectorType) {
-			AttributeAssignmentExpressionType parent = this.selectors.get(itemId);
-			if (parent != null && 
-				parent.getExpression() != null && 
-				parent.getExpression().getValue() != null && 
-				parent.getExpression().getValue().equals(itemId)) {
-				parent.setExpression(null);
-				//
-				// Notify
-				//
-				this.fireItemSetChange();
-				return this.selectors.remove(itemId) == null;
-			}
-		}
-		if (itemId instanceof ApplyType) {
-			AttributeAssignmentExpressionType parent = this.applys.get(itemId);
-			if (parent != null && 
-				parent.getExpression() != null && 
-				parent.getExpression().getValue() != null && 
-				parent.getExpression().getValue().equals(itemId)) {
-				parent.setExpression(null);
-				//
-				// Notify
-				//
-				this.fireItemSetChange();
-				return this.applys.remove(itemId) == null;
-			}
-		}
-		return false;
-	}
-
-	public class ObAdviceItem implements Item {
-		private static final long serialVersionUID = 1L;
-		private final Object data;
-		
-		public ObAdviceItem(Object data) {
-			this.data = data;
-		}
-		
-		public String getName() {
-			if (this.data instanceof AdviceExpressionType) {
-				return "Advice";
-			}
-			if (this.data instanceof ObligationExpressionType) {
-				return "Obligation";
-			}
-			if (this.data instanceof AttributeAssignmentExpressionType) {
-				return "Attribute Assignment Expression";
-			}
-			if (this.data instanceof AttributeValueType) {
-				return "Attribute Value";
-			}
-			if (this.data instanceof AttributeDesignatorType) {
-				return "Attribute Designator";
-			}
-			if (this.data instanceof AttributeSelectorType) {
-				return "Attribute Selector";
-			}
-			if (this.data instanceof ApplyType) {
-				return "Apply";
-			}
-			return null;
-		}
-		
-		public String getId() {
-			if (this.data instanceof AdviceExpressionType) {
-				return ((AdviceExpressionType) this.data).getAdviceId();
-			}
-			if (this.data instanceof ObligationExpressionType) {
-				return ((ObligationExpressionType) this.data).getObligationId();
-			}
-			if (this.data instanceof AttributeAssignmentExpressionType) {
-				return ((AttributeAssignmentExpressionType) this.data).getAttributeId();
-			}
-			if (this.data instanceof AttributeValueType) {
-				StringBuilder builder = new StringBuilder();
-				for (Object content : ((AttributeValueType) this.data).getContent()) {
-					builder.append(content);
-				}
-				return builder.toString();
-			}
-			if (this.data instanceof AttributeDesignatorType) {
-				return ((AttributeDesignatorType) this.data).getAttributeId();
-			}
-			if (this.data instanceof AttributeSelectorType) {
-				return ((AttributeSelectorType) this.data).getContextSelectorId();
-			}
-			if (this.data instanceof ApplyType) {
-				return ((ApplyType) this.data).getFunctionId();
-			}
-			return null;
-		}
-		
-		public String getIdShort() {
-			String id = this.getId();
-			if (id == null) {
-				return id;
-			}
-			if (this.data instanceof AttributeValueType) {
-				return id;
-			}
-			//
-			// Make it short
-			//
-			String[] parts = id.split("[:]");
-			
-			if (parts != null && parts.length > 0) {
-				return parts[parts.length - 1];
-			}
-			return id;
-		}
-		
-		public String getEffect() {
-			if (this.data instanceof AdviceExpressionType) {
-				return ((AdviceExpressionType) this.data).getAppliesTo().toString();
-			}
-			if (this.data instanceof ObligationExpressionType) {
-				return ((ObligationExpressionType) this.data).getFulfillOn().toString();
-			}
-			return null;
-		}
-		
-		public String getDatatype() {
-			/*
-			if (this.data instanceof AdviceExpressionType) {
-			}
-			if (this.data instanceof ObligationExpressionType) {
-			}
-			if (this.data instanceof AttributeAssignmentExpressionType) {
-			}
-			*/
-			if (this.data instanceof AttributeValueType) {
-				return ((AttributeValueType) this.data).getDataType();
-			}
-			if (this.data instanceof AttributeDesignatorType) {
-				return ((AttributeDesignatorType) this.data).getDataType();
-			}
-			if (this.data instanceof AttributeSelectorType) {
-				return ((AttributeSelectorType) this.data).getDataType();
-			}
-			/*
-			if (this.data instanceof ApplyType) {
-				
-			}
-			*/
-			return null;
-		}
-
-		public String getDatatypeShort() {
-			String dt = this.getDatatype();
-			if (dt == null) {
-				return dt;
-			}
-			//
-			// Get short part
-			//
-			int index = dt.lastIndexOf('#');
-			if (index == -1) {
-				String[] parts = dt.split("[:]");
-				
-				if (parts != null && parts.length > 0) {
-					return parts[parts.length - 1];
-				}
-			} else {
-				return dt.substring(index + 1);
-			}
-			return dt;
-		}
-		
-		public String getCategory() {
-			/*
-			if (this.data instanceof AdviceExpressionType) {
-			}
-			if (this.data instanceof ObligationExpressionType) {
-			}
-			*/
-			if (this.data instanceof AttributeAssignmentExpressionType) {
-				return ((AttributeAssignmentExpressionType) this.data).getCategory();
-			}
-			/*
-			if (this.data instanceof AttributeValueType) {
-			}
-			*/
-			if (this.data instanceof AttributeDesignatorType) {
-				return ((AttributeDesignatorType) this.data).getCategory();
-			}
-			if (this.data instanceof AttributeSelectorType) {
-				return ((AttributeSelectorType) this.data).getCategory();
-			}
-			/*
-			if (this.data instanceof ApplyType) {
-				
-			}
-			*/
-			return null;
-		}
-		
-		public String getCategoryShort() {
-			String id = this.getCategory();
-			if (id == null) {
-				return id;
-			}
-			String[] parts = id.split("[:]");
-			
-			if (parts != null && parts.length > 0) {
-				return parts[parts.length - 1];
-			}
-			return id;
-		}
-		
-		@Override
-		public Property<?> getItemProperty(Object id) {
-            return getContainerProperty(this.data, id);
-		}
-		@Override
-		public Collection<?> getItemPropertyIds() {
-           return getContainerPropertyIds();
-		}
-		@Override
-		public boolean addItemProperty(Object id, @SuppressWarnings("rawtypes") Property property) throws UnsupportedOperationException {
-            throw new UnsupportedOperationException("Expression container does not support adding new properties");
-		}
-		@Override
-		public boolean removeItemProperty(Object id) throws UnsupportedOperationException {
-            throw new UnsupportedOperationException("Expression container does not support removing properties");
-		}		
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PDPContainer.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PDPContainer.java
deleted file mode 100644
index 5b9f3f5..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PDPContainer.java
+++ /dev/null
@@ -1,488 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.model;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.api.pap.PAPEngine;
-import org.apache.openaz.xacml.api.pap.PDP;
-import org.apache.openaz.xacml.api.pap.PDPGroup;
-import org.apache.openaz.xacml.api.pap.PDPPIPConfig;
-import org.apache.openaz.xacml.api.pap.PDPPolicy;
-import com.vaadin.data.Container;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.data.util.MethodProperty;
-import com.vaadin.server.Resource;
-
-public class PDPContainer extends ItemSetChangeNotifier implements Container.Indexed, Container.ItemSetChangeNotifier {
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(PDPGroupContainer.class);
-	
-    /**
-     * String identifier of a file's "Id" property.
-     */
-    public static String PROPERTY_ID = "Id";
-
-   /**
-     * String identifier of a file's "name" property.
-     */
-    public static String PROPERTY_NAME = "Name";
-
-    /**
-     * String identifier of a file's "Description" property.
-     */
-    public static String PROPERTY_DESCRIPTION = "Description";
-
-    /**
-     * String identifier of a file's "Default" property.
-     */
-    public static String PROPERTY_DEFAULT = "Default";
-
-    /**
-     * String identifier of a file's "icon" property.
-     */
-    public static String PROPERTY_ICON = "Icon";
-
-    /**
-     * String identifier of a file's "Status" property.
-     */
-    public static String PROPERTY_STATUS = "Status";
-
-    /**
-     * String identifier of a file's "Status" property.
-     */
-    public static String PROPERTY_PDPS = "PDPs";
-
-    /**
-     * String identifier of a file's "Status" property.
-     */
-    public static String PROPERTY_POLICIES = "Policies";
-
-    /**
-     * String identifier of a file's "Status" property.
-     */
-    public static String PROPERTY_PIPCONFIG = "PIP Configurations";
-
-    /**
-     * List of the string identifiers for the available properties.
-     */
-    public static Collection<String> PDP_PROPERTIES;
-
-    private final static Method PDPITEM_ID;
-    
-    private final static Method PDPITEM_NAME;
-    
-    private final static Method PDPITEM_DESCRIPTION;
-
-    private final static Method PDPITEM_ICON;
-    
-    private final static Method PDPITEM_STATUS;
-        
-    private final static Method PDPITEM_POLICIES;
-    
-    private final static Method PDPITEM_PIPCONFIG;
-        
-    
-    static {
-    	PDP_PROPERTIES = new ArrayList<String>();
-    	PDP_PROPERTIES.add(PROPERTY_ID);
-    	PDP_PROPERTIES.add(PROPERTY_NAME);
-    	PDP_PROPERTIES.add(PROPERTY_DESCRIPTION);
-    	PDP_PROPERTIES.add(PROPERTY_DEFAULT);
-    	PDP_PROPERTIES.add(PROPERTY_ICON);
-    	PDP_PROPERTIES.add(PROPERTY_STATUS);
-    	PDP_PROPERTIES.add(PROPERTY_PDPS);
-    	PDP_PROPERTIES.add(PROPERTY_POLICIES);
-    	PDP_PROPERTIES.add(PROPERTY_PIPCONFIG);
-    	PDP_PROPERTIES = Collections.unmodifiableCollection(PDP_PROPERTIES);
-        try {
-        	PDPITEM_ID = PDPItem.class.getMethod("getId", new Class[]{});
-        	PDPITEM_NAME = PDPItem.class.getMethod("getName", new Class[]{});
-        	PDPITEM_DESCRIPTION = PDPItem.class.getMethod("getDescription", new Class[] {});
-            PDPITEM_ICON = PDPItem.class.getMethod("getIcon", new Class[] {});
-            PDPITEM_STATUS = PDPItem.class.getMethod("getStatus", new Class[] {});
-            PDPITEM_POLICIES = PDPItem.class.getMethod("getPolicies", new Class[] {});
-            PDPITEM_PIPCONFIG = PDPItem.class.getMethod("getPipConfigs", new Class[] {});
-        } catch (final NoSuchMethodException e) {
-            throw new RuntimeException(
-                    "Internal error finding methods in PDPContainer");
-        }
-    }
-    
- 	private PAPEngine papEngine = null; //NOPMD
-	private PDPGroup group;
-	private List<PDP> pdps = Collections.synchronizedList(new ArrayList<PDP>());
-	
-	public PDPContainer(PDPGroup group) {
-		super();
-		this.setContainer(this);
-		//
-		//
-		//
-		this.group = group;
-		this.pdps.addAll(this.group.getPdps());
-	}
-	
-	public synchronized void refresh(PDPGroup group) {
-		synchronized(this.group) {
-			this.group = group;
-		}
-		synchronized (this.pdps) {
-			this.pdps.clear();
-			this.pdps.addAll(this.group.getPdps());
-		}
-	}
-
-	@Override
-	public Object nextItemId(Object itemId) {
-		synchronized (this.pdps) {
-			int index = this.pdps.indexOf(itemId);
-			if (index == -1) {
-				return null;
-			}
-			if (index == this.pdps.size() - 1) {
-				return null;
-			}
-			return this.pdps.get(index + 1);
-		}
-	}
-
-	@Override
-	public Object prevItemId(Object itemId) {
-		synchronized (this.pdps) {
-			int index = this.pdps.indexOf(itemId);
-			if (index == -1) {
-				return null;
-			}
-			if (index == 0) {
-				return null;
-			}
-			return this.pdps.get(index - 1);
-		}
-	}
-
-	@Override
-	public Object firstItemId() {
-		synchronized (this.pdps) {
-			if (this.pdps.size() > 0) {
-				return this.pdps.get(0);
-			}
-		}
-		return null;
-	}
-
-	@Override
-	public Object lastItemId() {
-		synchronized (this.pdps) {
-			if (this.pdps.size() > 0) {
-				return this.pdps.get(this.pdps.size() - 1);
-			}
-		}
-		return null;
-	}
-
-	@Override
-	public boolean isFirstId(Object itemId) {
-		synchronized (this.pdps) {
-			if (this.pdps.size() > 0) {
-				return this.pdps.get(0).equals(itemId);
-			}
-		}
-		return false;
-	}
-
-	@Override
-	public boolean isLastId(Object itemId) {
-		synchronized (this.pdps) {
-			if (this.pdps.size() > 0) {
-				return this.pdps.get(this.pdps.size() - 1).equals(itemId);
-			}
-		}
-		return false;
-	}
-
-	@Override
-	public Object addItemAfter(Object previousItemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Use addPDP method");
-	}
-
-	@Override
-	public Item addItemAfter(Object previousItemId, Object newItemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Use addPDP method");
-	}
-
-	@Override
-	public Item getItem(Object itemId) {
-		/*
-		if (itemId instanceof PDP) {
-		}
-		*/
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Collection<?> getContainerPropertyIds() {
-		return PDP_PROPERTIES;
-	}
-
-	@Override
-	public Collection<?> getItemIds() {
-		synchronized(this.pdps) {
-			return Collections.unmodifiableList(this.pdps);
-		}
-	}
-
-	@Override
-	public Property<?> getContainerProperty(Object itemId, Object propertyId) {
-        if (propertyId.equals(PROPERTY_ID)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPItem((PDP) itemId), PDPITEM_ID, null);
-        }
-
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPItem((PDP) itemId), PDPITEM_NAME, null);
-        }
-
-        if (propertyId.equals(PROPERTY_DESCRIPTION)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPItem((PDP) itemId), PDPITEM_DESCRIPTION, null);
-        }
-
-        if (propertyId.equals(PROPERTY_ICON)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPItem((PDP) itemId), PDPITEM_ICON, null);
-        }
-
-        if (propertyId.equals(PROPERTY_STATUS)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPItem((PDP) itemId), PDPITEM_STATUS, null);
-        }
-
-        if (propertyId.equals(PROPERTY_POLICIES)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPItem((PDP) itemId), PDPITEM_POLICIES, null);
-        }
-
-        if (propertyId.equals(PROPERTY_PIPCONFIG)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPItem((PDP) itemId), PDPITEM_PIPCONFIG, null);
-        }
-        
-		return null;
-	}
-
-	@Override
-	public Class<?> getType(Object propertyId) {
-        if (propertyId.equals(PROPERTY_ID)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_DESCRIPTION)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_ICON)) {
-            return Resource.class;
-        }
-        if (propertyId.equals(PROPERTY_STATUS)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_POLICIES)) {
-            return Set.class;
-        }
-        if (propertyId.equals(PROPERTY_PIPCONFIG)) {
-            return Set.class;
-        }
-		return null;
-	}
-
-	@Override
-	public int size() {
-		return this.pdps.size();
-	}
-
-	@Override
-	public boolean containsId(Object itemId) {
-		return this.pdps.contains(itemId);
-	}
-
-	@Override
-	public Item addItem(Object itemId) throws UnsupportedOperationException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Object addItem() throws UnsupportedOperationException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public boolean removeItem(Object itemId) throws UnsupportedOperationException {
-		// TODO Auto-generated method stub
-		return false;
-	}
-
-	@Override
-	public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Cannot add a property");
-	}
-
-	@Override
-	public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Cannot remove a property");
-	}
-
-	@Override
-	public boolean removeAllItems() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Cannot remove all items.");
-	}
-
-	@Override
-	public int indexOfId(Object itemId) {
-		return this.pdps.indexOf(itemId);
-	}
-
-	@Override
-	public Object getIdByIndex(int index) {
-		return this.pdps.get(index);
-	}
-
-	@Override
-	public List<?> getItemIds(int startIndex, int numberOfItems) {
-		synchronized (this.pdps) {
-			int endIndex = startIndex + numberOfItems;
-			if (endIndex > this.pdps.size()) {
-				endIndex = this.pdps.size() - 1;
-			}
-			return this.pdps.subList(startIndex, endIndex);
-		}
-	}
-
-	@Override
-	public Object addItemAt(int index) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Cannot add item.");
-	}
-
-	@Override
-	public Item addItemAt(int index, Object newItemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Cannot add item.");
-	}
-
-	public class PDPItem implements Item {
-		private static final long serialVersionUID = 1L;
-		private final PDP pdp;
-		
-		public PDPItem(PDP pdp) {
-			this.pdp = pdp;
-		}
-
-		public String getId() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getId: " + this.pdp);
-			}
-			return this.pdp.getId();
-		}
-		
-		public String getName() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getName: " + this.pdp);
-			}
-			return this.pdp.getName();
-		}
-		
-		public String getDescription() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getDescription: " + this.pdp);
-			}
-			return this.pdp.getDescription();
-		}
-		
-        public Resource getIcon() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getIcon: " + this.pdp);
-			}
-        	return null;
-        }
-        
-        public String	getStatus() {
-        	String status = this.pdp.getStatus().getStatus().toString();
-        	Set<String> errors = this.pdp.getStatus().getLoadErrors();
-        	if (errors.size() > 0) {
-        		status = status + String.format(" %d errors", errors.size());
-        	}
-        	Set<String> warnings = this.pdp.getStatus().getLoadWarnings();
-        	if (warnings.size() > 0) {
-        		status = status + String.format(" %d warnings", warnings.size());
-        	}
-        	return status;
-        }
-        
-        public Set<PDPPolicy> getPolicies() {
- 			if (logger.isTraceEnabled()) {
-				logger.trace("getPolicies: " + this.pdp);
-			}
- 			return this.pdp.getPolicies();
-        }
-        
-        public Set<PDPPIPConfig> getPipConfigs() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getPIPConfigs: " + this.pdp);
-			}
-			return this.pdp.getPipConfigs();
-        }
-        
-		@Override
-		public Property<?> getItemProperty(Object id) {
-            return getContainerProperty(this.pdp, id);
-		}
-
-		@Override
-		public Collection<?> getItemPropertyIds() {
-	        return getContainerPropertyIds();
-		}
-
-		@Override
-		public boolean addItemProperty(Object id, @SuppressWarnings("rawtypes") Property property) throws UnsupportedOperationException {
-			throw new UnsupportedOperationException("PDP container does not support adding new properties");
-		}
-
-		@Override
-		public boolean removeItemProperty(Object id)
-				throws UnsupportedOperationException {
-            throw new UnsupportedOperationException(
-                    "PDP container does not support property removal");
-		}	
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PDPGroupContainer.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PDPGroupContainer.java
deleted file mode 100644
index 12b9852..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PDPGroupContainer.java
+++ /dev/null
@@ -1,672 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.model;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.api.pap.PAPEngine;
-import org.apache.openaz.xacml.api.pap.PAPException;
-import org.apache.openaz.xacml.api.pap.PDP;
-import org.apache.openaz.xacml.api.pap.PDPGroup;
-import org.apache.openaz.xacml.api.pap.PDPPIPConfig;
-import org.apache.openaz.xacml.api.pap.PDPPolicy;
-import com.vaadin.data.Container;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.data.util.MethodProperty;
-import com.vaadin.server.Resource;
-
-public class PDPGroupContainer extends ItemSetChangeNotifier implements Container.Indexed, Container.ItemSetChangeNotifier {
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(PDPGroupContainer.class);
-	
-    /**
-     * String identifier of a file's "Id" property.
-     */
-    public static String PROPERTY_ID = "Id";
-
-   /**
-     * String identifier of a file's "name" property.
-     */
-    public static String PROPERTY_NAME = "Name";
-
-    /**
-     * String identifier of a file's "Description" property.
-     */
-    public static String PROPERTY_DESCRIPTION = "Description";
-
-    /**
-     * String identifier of a file's "Default" property.
-     */
-    public static String PROPERTY_DEFAULT = "Default";
-
-    /**
-     * String identifier of a file's "icon" property.
-     */
-    public static String PROPERTY_ICON = "Icon";
-
-    /**
-     * String identifier of a file's "Status" property.
-     */
-    public static String PROPERTY_STATUS = "Status";
-
-    /**
-     * String identifier of a file's "Status" property.
-     */
-    public static String PROPERTY_PDPS = "PDPs";
-
-    /**
-     * String identifier of a file's "Status" property.
-     */
-    public static String PROPERTY_POLICIES = "Policies";
-
-    /**
-     * String identifier of a file's "Status" property.
-     */
-    public static String PROPERTY_PIPCONFIG = "PIP Configurations";
-
-    /**
-     * List of the string identifiers for the available properties.
-     */
-    public static Collection<String> PDP_PROPERTIES;
-
-    private final static Method PDPITEM_ID;
-    
-    private final static Method PDPITEM_NAME;
-    
-    private final static Method PDPITEM_DESCRIPTION;
-
-    private final static Method PDPITEM_DEFAULT;
-
-    private final static Method PDPITEM_ICON;
-    
-    private final static Method PDPITEM_STATUS;
-        
-    private final static Method PDPITEM_PDPS;
-    
-    private final static Method PDPITEM_POLICIES;
-    
-    private final static Method PDPITEM_PIPCONFIG;
-        
-    
-    static {
-    	PDP_PROPERTIES = new ArrayList<String>();
-    	PDP_PROPERTIES.add(PROPERTY_ID);
-    	PDP_PROPERTIES.add(PROPERTY_NAME);
-    	PDP_PROPERTIES.add(PROPERTY_DESCRIPTION);
-    	PDP_PROPERTIES.add(PROPERTY_DEFAULT);
-    	PDP_PROPERTIES.add(PROPERTY_ICON);
-    	PDP_PROPERTIES.add(PROPERTY_STATUS);
-    	PDP_PROPERTIES.add(PROPERTY_PDPS);
-    	PDP_PROPERTIES.add(PROPERTY_POLICIES);
-    	PDP_PROPERTIES.add(PROPERTY_PIPCONFIG);
-    	PDP_PROPERTIES = Collections.unmodifiableCollection(PDP_PROPERTIES);
-        try {
-        	PDPITEM_ID = PDPGroupItem.class.getMethod("getId", new Class[]{});
-        	PDPITEM_NAME = PDPGroupItem.class.getMethod("getName", new Class[]{});
-        	PDPITEM_DESCRIPTION = PDPGroupItem.class.getMethod("getDescription", new Class[] {});
-        	PDPITEM_DEFAULT = PDPGroupItem.class.getMethod("getDefault", new Class[] {});
-            PDPITEM_ICON = PDPGroupItem.class.getMethod("getIcon", new Class[] {});
-            PDPITEM_STATUS = PDPGroupItem.class.getMethod("getStatus", new Class[] {});
-            PDPITEM_PDPS = PDPGroupItem.class.getMethod("getPDPs", new Class[] {});
-            PDPITEM_POLICIES = PDPGroupItem.class.getMethod("getPolicies", new Class[] {});
-            PDPITEM_PIPCONFIG = PDPGroupItem.class.getMethod("getPipConfigs", new Class[] {});
-        } catch (final NoSuchMethodException e) {
-            throw new RuntimeException(
-                    "Internal error finding methods in PDPContainer");
-        }
-    }
-    
- 	private PAPEngine papEngine = null;
- 	private List<PDPGroup> groups = Collections.synchronizedList(new ArrayList<PDPGroup>());
- 	
-    public PDPGroupContainer(PAPEngine engine) {
-		super();
-		this.setContainer(this);
-		//
-		//
-		//
-		this.papEngine = engine;
-		//
-		//
-		//
-		this.refreshGroups();
-	}
-    
-    public boolean isSupported(Object itemId) {
-    	if (itemId instanceof PDPGroup) {
-    		return true;
-    	}
-    	return false;
-    }
-	
-	public synchronized void refreshGroups() {
-		synchronized(this.groups) { 
-			this.groups.clear();
-			try {
-				this.groups.addAll(this.papEngine.getPDPGroups());
-			} catch (PAPException e) {
-				String message = "Unable to retrieve Groups from server: " + e;
-				logger.error(message, e);
-			}
-		}
-		//
-		// Notify that we have changed
-		//
-		this.fireItemSetChange();
-	}
-	
-	public List<PDPGroup>	getGroups() {
-		return Collections.unmodifiableList(this.groups);
-	}
-	
-	public void makeDefault(PDPGroup group) {
-		try {
-			this.papEngine.SetDefaultGroup(group);
-		} catch (PAPException e) {
-			String message = "Unable to set Default Group on server: " + e;
-			logger.error(message, e);
-		}
-	}
-	
-	public void removeGroup(PDPGroup group, PDPGroup newGroup) throws PAPException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("removeGroup: " + group + " new group for PDPs: " + newGroup);
-		}
-		if (group.isDefaultGroup()) {
-			throw new UnsupportedOperationException("You can't remove the Default Group.");
-		}
-		try {
-			this.papEngine.removeGroup(group, newGroup);
-		} catch (NullPointerException | PAPException e) {
-			logger.error("Failed to removeGroup " + group.getId(), e);
-			throw new PAPException("Failed to remove group '" + group.getId()+ "'", e);
-		}
-	}
-	
-	public void removePDP(PDP pdp, PDPGroup group) throws PAPException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("removePDP: " + pdp + " from group: " + group);
-		}
-		try {
-			this.papEngine.removePDP(pdp);
-		} catch (PAPException e) {
-			logger.error("Failed to removePDP " + pdp.getId(), e);
-			throw new PAPException("Failed to remove pdp '" + pdp.getId()+ "'", e);
-		}
-	}
-	
-	public void updatePDP(PDP pdp) {
-		try {
-			papEngine.updatePDP(pdp);
-		} catch (PAPException e) {
-			logger.error(e);
-		}
-	}
-	
-	public void updateGroup(PDPGroup group) {
-		try {
-			papEngine.updateGroup(group);
-		} catch (PAPException e) {
-			logger.error(e);
-		}
-	}
-	
-	@Override
-	public Item getItem(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("getItem: " + itemId);
-		}
-		if (this.isSupported(itemId)) {
-			return new PDPGroupItem((PDPGroup) itemId);
-		}
-		return null;
-	}
-	
-	@Override
-	public Collection<?> getContainerPropertyIds() {
-		return PDP_PROPERTIES;
-	}
-
-	@Override
-	public Collection<?> getItemIds() {
-		final Collection<Object> items = new ArrayList<Object>();
-		items.addAll(this.groups);
-		if (logger.isTraceEnabled()) {
-			logger.trace("getItemIds: " + items);
-		}
-		return Collections.unmodifiableCollection(items);
-	}
-
-	@Override
-	public Property<?> getContainerProperty(Object itemId, Object propertyId) {
-		
-        if (propertyId.equals(PROPERTY_ID)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPGroupItem((PDPGroup) itemId), PDPITEM_ID, null);
-        }
-
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPGroupItem((PDPGroup) itemId), PDPITEM_NAME, null);
-        }
-
-        if (propertyId.equals(PROPERTY_DESCRIPTION)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPGroupItem((PDPGroup) itemId), PDPITEM_DESCRIPTION, null);
-        }
-
-        if (propertyId.equals(PROPERTY_DEFAULT)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPGroupItem((PDPGroup) itemId), PDPITEM_DEFAULT, null);
-        }
-
-        if (propertyId.equals(PROPERTY_ICON)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPGroupItem((PDPGroup) itemId), PDPITEM_ICON, null);
-        }
-
-        if (propertyId.equals(PROPERTY_STATUS)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPGroupItem((PDPGroup) itemId), PDPITEM_STATUS, null);
-        }
-
-        if (propertyId.equals(PROPERTY_PDPS)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPGroupItem((PDPGroup) itemId), PDPITEM_PDPS, null);
-        }
-
-        if (propertyId.equals(PROPERTY_POLICIES)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPGroupItem((PDPGroup) itemId), PDPITEM_POLICIES, null);
-        }
-
-        if (propertyId.equals(PROPERTY_PIPCONFIG)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPGroupItem((PDPGroup) itemId), PDPITEM_PIPCONFIG, null);
-        }
-        
-        return null;
-	}
-
-	@Override
-	public Class<?> getType(Object propertyId) {
-        if (propertyId.equals(PROPERTY_ID)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_DESCRIPTION)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_DEFAULT)) {
-            return Boolean.class;
-        }
-        if (propertyId.equals(PROPERTY_ICON)) {
-            return Resource.class;
-        }
-        if (propertyId.equals(PROPERTY_STATUS)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_PDPS)) {
-            return Set.class;
-        }
-        if (propertyId.equals(PROPERTY_POLICIES)) {
-            return Set.class;
-        }
-        if (propertyId.equals(PROPERTY_PIPCONFIG)) {
-            return Set.class;
-        }
-		return null;
-	}
-
-	@Override
-	public int size() {
-		return this.groups.size();
-	}
-
-	@Override
-	public boolean containsId(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("containsId: " + itemId);
-		}
-		if (this.isSupported(itemId) == false) {
-			return false;
-		}
-		return this.groups.contains(itemId);
-	}
-
-	@Override
-	public Item addItem(Object itemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("PDP Container cannot add a given item.");
-	}
-
-	@Override
-	public Object addItem() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("PDP Container cannot add a given item.");
-	}
-	
-	public void addNewGroup(String name, String description) throws NullPointerException, PAPException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("addNewGroup " + name + " " + description);
-		}
-		this.papEngine.newGroup(name, description);
-	}
-	
-	public void addNewPDP(String id, PDPGroup group, String name, String description) throws NullPointerException, PAPException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("addNewPDP " + id + " " + name + " " + description);
-		}
-		this.papEngine.newPDP(id, group, name, description);
-	}
-	
-	public void movePDP(PDP pdp, PDPGroup group) {
-		try {
-			this.papEngine.movePDP(pdp, group);
-		} catch (PAPException e) {
-			String message = "Unable to move PDP to new group on server: " + e;
-			logger.error(message, e);
-		}
-	}
-
-	@Override
-	public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Cannot add a container property.");
-	}
-
-	@Override
-	public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Cannot remove a container property.");
-	}
-
-	@Override
-	public boolean removeAllItems() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("PDP Container cannot remove all items. You must have at least the Default group.");
-	}
-
-	@Override
-	public void addItemSetChangeListener(ItemSetChangeListener listener) {
-        if (getItemSetChangeListeners() == null) {
-            setItemSetChangeListeners(new LinkedList<Container.ItemSetChangeListener>());
-        }
-        getItemSetChangeListeners().add(listener);	
-	}
-
-	@Override
-	public Object nextItemId(Object itemId) {
-		if (this.isSupported(itemId) == false) {
-			return null;
-		}
-		int index = this.groups.indexOf(itemId);
-		if (index == -1) {
-			//
-			// We don't know this group
-			//
-			return null;
-		}
-		//
-		// Is it the last one?
-		//
-		if (index == this.groups.size() - 1) {
-			//
-			// Yes
-			//
-			return null;
-		}
-		//
-		// Return the next one
-		//
-		return this.groups.get(index + 1);
-	}
-
-	@Override
-	public Object prevItemId(Object itemId) {
-		if (this.isSupported(itemId) == false) {
-			return null;
-		}
-		int index = this.groups.indexOf(itemId);
-		if (index == -1) {
-			//
-			// We don't know this group
-			//
-			return null;
-		}
-		//
-		// Is it the first one?
-		//
-		if (index == 0) {
-			//
-			// Yes
-			//
-			return null;
-		}
-		//
-		// Return the previous one
-		//
-		return this.groups.get(index - 1);
-	}
-
-	@Override
-	public Object firstItemId() {
-		synchronized (this.groups) {
-			if (this.groups.size() > 0) {
-				return this.groups.get(0);
-			}
-		}
-		return null;
-	}
-
-	@Override
-	public Object lastItemId() {
-		synchronized (this.groups) {
-			if (this.groups.size() > 0) {
-				return this.groups.get(this.groups.size() - 1);
-			}
-		}
-		return null;
-	}
-
-	@Override
-	public boolean isFirstId(Object itemId) {
-		synchronized (this.groups) {
-			if (this.groups.size() > 0) {
-				return this.groups.get(0).equals(itemId);
-			}
-		}
-		return false;
-	}
-
-	@Override
-	public boolean isLastId(Object itemId) {
-		synchronized (this.groups) {
-			if (this.groups.size() > 0) {
-				return this.groups.get(this.groups.size() - 1).equals(itemId);
-			}
-		}
-		return false;
-	}
-
-	@Override
-	public Object addItemAfter(Object previousItemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Cannot addItemAfter, there really is no real ordering.");
-	}
-
-	@Override
-	public Item addItemAfter(Object previousItemId, Object newItemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Cannot addItemAfter, there really is no real ordering.");
-	}
-
-	@Override
-	public int indexOfId(Object itemId) {
-		return this.groups.indexOf(itemId);
-	}
-
-	@Override
-	public Object getIdByIndex(int index) {
-		return this.groups.get(index);
-	}
-
-	@Override
-	public List<?> getItemIds(int startIndex, int numberOfItems) {
-		synchronized (this.groups) {
-			int endIndex = startIndex + numberOfItems;
-			if (endIndex > this.groups.size()) {
-				endIndex = this.groups.size() - 1;
-			}
-			return this.groups.subList(startIndex, endIndex);
-		}
-	}
-
-	@Override
-	public Object addItemAt(int index) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Cannot addItemAt");
-	}
-
-	@Override
-	public Item addItemAt(int index, Object newItemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Cannot addItemAt");
-	}
-
-	@Override
-	public boolean removeItem(Object itemId) throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("removeItem: " + itemId);
-		}
-		if (this.isSupported(itemId) == false) {
-			return false;
-		}
-		//
-		// You cannot remove the default group
-		//
-		if (((PDPGroup) itemId).getId().equals("Default")) {
-			throw new UnsupportedOperationException("You can't remove the Default Group.");
-		}
-		//
-		// Remove PDPGroup and  move any PDP's in it into the default group
-		//
-		try {
-			this.papEngine.removeGroup((PDPGroup) itemId, this.papEngine.getDefaultGroup());
-			return true;
-		} catch (NullPointerException | PAPException e) {
-			logger.error("Failed to remove group", e);
-		}
-		return false;
-	}
-
-	public class PDPGroupItem implements Item {
-		private static final long serialVersionUID = 1L;
-		
-		private final PDPGroup group;
-		
-		public PDPGroupItem(PDPGroup itemId) {
-			this.group = itemId;
-		}
-
-		public String getId() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getId: " + this.group);
-			}
-			return this.group.getId();
-		}
-		
-		public String getName() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getName: " + this.group);
-			}
-			return this.group.getName();
-		}
-		
-		public String getDescription() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getDescription: " + this.group);
-			}
-			return this.group.getDescription();
-		}
-		
-		public Boolean getDefault() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getDefault: " + this.group);
-			}
-			return this.group.isDefaultGroup();
-		}
-		
-        public Resource getIcon() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getIcon: " + this.group);
-			}
-        	return null;
-        }
-        
-        public String	getStatus() {
-			return this.group.getStatus().getStatus().toString();
-        }
-        
-        public Set<PDP>		getPDPs() {
-        	return Collections.unmodifiableSet(this.group.getPdps());
-        }
-        
-        public Set<PDPPolicy> getPolicies() {
- 			if (logger.isTraceEnabled()) {
-				logger.trace("getPolicies: " + this.group);
-			}
- 			return this.group.getPolicies();
-        }
-        
-        public Set<PDPPIPConfig> getPipConfigs() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getPIPConfigs: " + this.group);
-			}
-			return this.group.getPipConfigs();
-        }
-        
-		@Override
-		public Property<?> getItemProperty(Object id) {
-            return getContainerProperty(this.group, id);
-		}
-
-		@Override
-		public Collection<?> getItemPropertyIds() {
-	        return getContainerPropertyIds();
-		}
-
-		@Override
-		public boolean addItemProperty(Object id, @SuppressWarnings("rawtypes") Property property) throws UnsupportedOperationException {
-			throw new UnsupportedOperationException("PDP container does not support adding new properties");
-		}
-
-		@Override
-		public boolean removeItemProperty(Object id)
-				throws UnsupportedOperationException {
-            throw new UnsupportedOperationException(
-                    "PDP container does not support property removal");
-		}	
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PDPPIPContainer.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PDPPIPContainer.java
deleted file mode 100644
index aa2fb87..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PDPPIPContainer.java
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.model;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Properties;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.PIPConfiguration;
-import org.apache.openaz.xacml.admin.jpa.PIPResolver;
-import org.apache.openaz.xacml.api.pap.PDP;
-import org.apache.openaz.xacml.api.pap.PDPGroup;
-import org.apache.openaz.xacml.api.pap.PDPPIPConfig;
-import org.apache.openaz.xacml.api.pip.PIPException;
-import com.vaadin.data.Container;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.data.util.MethodProperty;
-
-public class PDPPIPContainer extends ItemSetChangeNotifier implements Container.Hierarchical, Container.ItemSetChangeNotifier {
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(PDPPIPContainer.class);
-
-	 /**
-     * String identifier of a file's "Id" property.
-     */
-    public static String PROPERTY_ID = "Id";
-
-   /**
-     * String identifier of a file's "name" property.
-     */
-    public static String PROPERTY_NAME = "Name";
-
-    /**
-     * String identifier of a file's "Description" property.
-     */
-    public static String PROPERTY_DESCRIPTION = "Description";
-    
-    /**
-     * List of the string identifiers for the available properties.
-     */
-    public static Collection<String> PDPPIP_PROPERTIES;
-
-    private final static Method PDPPIPITEM_ID;
-    
-    private final static Method PDPPIPITEM_NAME;
-    
-    private final static Method PDPPIPITEM_DESCRIPTION;
-    
-    static {
-    	PDPPIP_PROPERTIES = new ArrayList<String>();
-    	PDPPIP_PROPERTIES.add(PROPERTY_ID);
-    	PDPPIP_PROPERTIES.add(PROPERTY_NAME);
-    	PDPPIP_PROPERTIES.add(PROPERTY_DESCRIPTION);
-    	PDPPIP_PROPERTIES = Collections.unmodifiableCollection(PDPPIP_PROPERTIES);
-        try {
-        	PDPPIPITEM_ID = PDPPIPItem.class.getMethod("getId", new Class[]{});
-        	PDPPIPITEM_NAME = PDPPIPItem.class.getMethod("getName", new Class[]{});
-        	PDPPIPITEM_DESCRIPTION = PDPPIPItem.class.getMethod("getDescription", new Class[] {});
-       } catch (final NoSuchMethodException e) {
-            throw new RuntimeException(
-                    "Internal error finding methods in PDPPIPContainer");
-        }
-    }
-    
-    private final Object data;
-    
-    List<PIPConfiguration> configurations = new ArrayList<PIPConfiguration>();
- 
-	public PDPPIPContainer(Object data) {
-		super();
-		setContainer(this);
-		//
-		// Save our object
-		//
-		this.data = data;
-		//
-		// Is it supported?
-		//
-		if (this.isPDPGroup() == false && this.isPDP() == false) {
-			throw new IllegalArgumentException("This container only supported PDPGroup and PDP objects.");
-		}
-		//
-		// Initialize our internal structures
-		//
-		initialize();
-	}
-	
-	private boolean	isSupported(Object itemId) {
-		if (this.isConfiguration(itemId) ||
-			this.isResolver(itemId) ) {
-			return true;
-		}
-		return false;
-	}
-	
-	private boolean isPDPGroup() {
-		return this.data instanceof PDPGroup;
-	}
-
-	private boolean isPDP() {
-		return this.data instanceof PDP;
-	}
-	
-	private boolean isConfiguration(Object itemId) {
-		return itemId instanceof PIPConfiguration;
-	}
-	
-	private boolean isResolver(Object itemId) {
-		return itemId instanceof PIPResolver;
-	}
-	
-	private void initialize() {
-		assert this.data != null;
-		//
-		// Get the list of configurations
-		//
-		Set<PDPPIPConfig> configs = null;
-		if (this.isPDPGroup()) {
-			configs = ((PDPGroup) this.data).getPipConfigs();
-		} else if (this.isPDP()) {
-			configs = ((PDP) this.data).getPipConfigs();
-		} else {
-			throw new IllegalArgumentException("This container only supported PDPGroup and PDP objects.");
-		}
-		//
-		// Map these to a list of PIPConfiguration objects. That
-		// way we can match them up to the database.
-		//
-		for (PDPPIPConfig config : configs) {
-			Properties properties = new Properties();
-			properties.putAll(config.getConfiguration());
-			try {
-				PIPConfiguration pipConfig = new PIPConfiguration(config.getId(), properties);
-				if (logger.isDebugEnabled()) {
-					logger.debug("Found config: " + pipConfig);
-				}
-				this.configurations.add(pipConfig);
-			} catch (PIPException e) {
-				logger.error("Failed to create PIPConfiguration: " + e.getLocalizedMessage());
-			}
-		}
-	}
-	
-
-	public void refresh() {
-		this.configurations.clear();
-		this.initialize();
-		this.fireItemSetChange();
-	}
-	
-	@Override
-	public Item getItem(Object itemId) {
-		if (this.isSupported(itemId)) {
-			return new PDPPIPItem(itemId);
-		}
-		return null;
-	}
-
-	@Override
-	public Collection<?> getContainerPropertyIds() {
-		return PDPPIP_PROPERTIES;
-	}
-
-	@Override
-	public Collection<?> getItemIds() {
-		final Collection<Object> items = new ArrayList<Object>();
-		for (PIPConfiguration config : this.configurations) {
-			items.add(config);
-			/*
-			for (PIPResolver resolver : config.getPipresolvers()) {
-				items.add(resolver);
-			}
-			*/
-		}
-		return Collections.unmodifiableCollection(items);
-	}
-
-	@Override
-	public Property<?> getContainerProperty(Object itemId, Object propertyId) {
-		if (this.isSupported(itemId) == false) {
-			return null;
-		}
-		
-        if (propertyId.equals(PROPERTY_ID)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPPIPItem(itemId), PDPPIPITEM_ID, null);
-        }
-
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPPIPItem(itemId), PDPPIPITEM_NAME, null);
-        }
-        
-        if (propertyId.equals(PROPERTY_DESCRIPTION)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PDPPIPItem(itemId), PDPPIPITEM_DESCRIPTION, null);
-        }
-        
-		return null;
-	}
-
-	@Override
-	public Class<?> getType(Object propertyId) {
-        if (propertyId.equals(PROPERTY_ID)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_DESCRIPTION)) {
-            return String.class;
-        }
-		return null;
-	}
-
-	@Override
-	public int size() {
-		/*
-		int size = 0;
-		for (PIPConfiguration config : this.configurations) {
-			size++;
-			size += config.getPipresolvers().size();
-		}
-		return size;
-		*/
-		return this.configurations.size();
-	}
-
-	@Override
-	public boolean containsId(Object itemId) {
-		//
-		// Let's try this by using the Id
-		//
-		for (PIPConfiguration config : this.configurations) {
-			if (this.isConfiguration(itemId)) {
-				if (((PIPConfiguration) itemId).getId() == config.getId()) {
-					return true;
-				}
-			} else if (this.isResolver(itemId)) {
-				for (PIPResolver resolver : config.getPipresolvers()) {
-					if (((PIPResolver) itemId).getId() == resolver.getId()) {
-						return true;
-					}
-				}				
-			} else {
-				throw new IllegalArgumentException("This container only supports pip configuration and resolvers objects.");
-			}
-		}
-		return false;
-	}
-
-	@Override
-	public Item addItem(Object itemId) throws UnsupportedOperationException {
-		if (this.isConfiguration(itemId)) {
-			this.configurations.add((PIPConfiguration) itemId);
-		// } else if (this.isResolver(itemId)) {
-		}
-		throw new UnsupportedOperationException("Cannot add unsupported object.");
-	}
-
-	@Override
-	public Object addItem() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Cannot add unknown object.");
-	}
-
-	@Override
-	public boolean addContainerProperty(Object propertyId, Class<?> type, Object defaultValue) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Adding properties not supported.");
-	}
-
-	@Override
-	public boolean removeContainerProperty(Object propertyId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Removing properties not supported.");
-	}
-
-	@Override
-	public boolean removeAllItems() throws UnsupportedOperationException {
-		//
-		// Remove everything
-		//
-		this.configurations.clear();
-		return true;
-	}
-
-	@Override
-	public Collection<?> getChildren(Object itemId) {
-		if (this.isConfiguration(itemId)) {
-			Collection<Object> children = new ArrayList<Object>();
-			for (PIPConfiguration config : this.configurations) {
-				if (config.getId() == ((PIPConfiguration) itemId).getId()) {
-					/*
-					 * Not for this release
-					 * 
-					children.addAll(config.getPipresolvers());
-					*/
-					break;
-				}
-			}
-			return Collections.unmodifiableCollection(children);
-		}
-		return Collections.emptyList();
-	}
-
-	@Override
-	public Object getParent(Object itemId) {
-		if (this.isResolver(itemId)) {
-			return ((PIPResolver) itemId).getPipconfiguration();
-		}
-		return null;
-	}
-
-	@Override
-	public Collection<?> rootItemIds() {
-		Collection<Object> roots = new ArrayList<Object>();
-		roots.addAll(this.configurations);
-		return Collections.unmodifiableCollection(roots);
-	}
-
-	@Override
-	public boolean setParent(Object itemId, Object newParentId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Not allowed in this implementation.");
-	}
-
-	@Override
-	public boolean areChildrenAllowed(Object itemId) {
-		if (this.isConfiguration(itemId)) {
-			return true;
-		}
-		return false;
-	}
-
-	@Override
-	public boolean setChildrenAllowed(Object itemId, boolean areChildrenAllowed) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Cannot change which objects can or cannot have children.");
-	}
-
-	@Override
-	public boolean isRoot(Object itemId) {
-		if (this.isConfiguration(itemId)) {
-			return this.containsId(itemId);
-		}
-		return false;
-	}
-
-	@Override
-	public boolean hasChildren(Object itemId) {
-		if (this.isConfiguration(itemId)) {
-			//return ((PIPConfiguration) itemId).getPipresolvers().size() > 0;
-			//
-			// Not this implementation
-			return false;
-		}
-		return false;
-	}
-
-	@Override
-	public boolean removeItem(Object itemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Not allowed in this implementation.");
-		/*
-		if (this.isConfiguration(itemId)) {
-			return this.configurations.remove(itemId);
-		}
-		if (this.isResolver(itemId)) {
-			((PIPResolver) itemId).getPipconfiguration().removePipresolver((PIPResolver) itemId);
-		}
-		throw new UnsupportedOperationException("Object not supported by this container.");
-		*/
-	}
-
-	public class PDPPIPItem implements Item {
-		private static final long serialVersionUID = 1L;
-		
-		private final Object config;
-		
-		public PDPPIPItem(Object config) {
-			this.config = config;
-		}
-		
-		public String getId() {
-			if (this.config instanceof PIPConfiguration) {
-				return Integer.toString(((PIPConfiguration) this.config).getId());
-			}
-			if (this.config instanceof PIPResolver) {
-				return Integer.toString(((PIPResolver) this.config).getId());
-			}
-			return null;
-		}
-		
-		public String getName() {
-			if (this.config instanceof PIPConfiguration) {
-				return ((PIPConfiguration) this.config).getName();
-			}
-			if (this.config instanceof PIPResolver) {
-				return ((PIPResolver) this.config).getName();
-			}
-			return null;
-		}
-		
-		public String getDescription() {
-			if (this.config instanceof PIPConfiguration) {
-				return ((PIPConfiguration) this.config).getDescription();
-			}
-			if (this.config instanceof PIPResolver) {
-				return ((PIPResolver) this.config).getDescription();
-			}
-			return null;
-		}
-
-		@Override
-		public Property<?> getItemProperty(Object id) {
-            return getContainerProperty(config, id);
-		}
-
-		@Override
-		public Collection<?> getItemPropertyIds() {
-	        return getContainerPropertyIds();
-		}
-
-		@Override
-		public boolean addItemProperty(Object id, @SuppressWarnings("rawtypes") Property property)
-				throws UnsupportedOperationException {
-			throw new UnsupportedOperationException("Cannot add property.");
-		}
-
-		@Override
-		public boolean removeItemProperty(Object id)
-				throws UnsupportedOperationException {
-			throw new UnsupportedOperationException("Cannot remove property.");
-		}	
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PDPPolicyContainer.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PDPPolicyContainer.java
deleted file mode 100644
index bb015c1..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PDPPolicyContainer.java
+++ /dev/null
@@ -1,469 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.model;
-
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.api.pap.PDP;
-import org.apache.openaz.xacml.api.pap.PDPGroup;
-import org.apache.openaz.xacml.api.pap.PDPPolicy;
-import org.apache.openaz.xacml.std.pap.StdPDPPolicy;
-import com.vaadin.data.Container;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.data.util.MethodProperty;
-
-public class PDPPolicyContainer extends ItemSetChangeNotifier implements Container.Indexed {
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(PDPPolicyContainer.class);
-	
-	 /**
-     * String identifier of a file's "Id" property.
-     */
-    public static String PROPERTY_ID = "Id";
-
-   /**
-     * String identifier of a file's "name" property.
-     */
-    public static String PROPERTY_NAME = "Name";
-
-    /**
-      * String identifier of a file's "name" property.
-      */
-     public static String PROPERTY_VERSION = "Version";
-     
-    /**
-     * String identifier of a file's "Description" property.
-     */
-    public static String PROPERTY_DESCRIPTION = "Description";
-    
-    /**
-     * String identifier of a file's "IsRoot" property.
-     */
-    public static String PROPERTY_ISROOT = "Root";
-
-    /**
-     * List of the string identifiers for the available properties.
-     */
-    public static Collection<String> PDPPOLICY_PROPERTIES;
-
-    private final static Method PDPPOLICYITEM_ID;
-    
-    private final static Method PDPPOLICYITEM_NAME;
-    
-    private final static Method PDPPOLICYITEM_VERSION;
-    
-    private final static Method PDPPOLICYITEM_DESCRIPTION;
-    
-    private final static Method PDPPOLICYITEM_ISROOT;
-    
-    private final static Method PDPPOLICYITEM_SETISROOT;
-   
-    static {
-    	PDPPOLICY_PROPERTIES = new ArrayList<String>();
-    	PDPPOLICY_PROPERTIES.add(PROPERTY_ID);
-    	PDPPOLICY_PROPERTIES.add(PROPERTY_NAME);
-    	PDPPOLICY_PROPERTIES.add(PROPERTY_VERSION);
-    	PDPPOLICY_PROPERTIES.add(PROPERTY_DESCRIPTION);
-    	PDPPOLICY_PROPERTIES.add(PROPERTY_ISROOT);
-    	PDPPOLICY_PROPERTIES = Collections.unmodifiableCollection(PDPPOLICY_PROPERTIES);
-        try {
-        	PDPPOLICYITEM_ID = PDPPolicyItem.class.getMethod("getId", new Class[]{});
-        	PDPPOLICYITEM_NAME = PDPPolicyItem.class.getMethod("getName", new Class[]{});
-        	PDPPOLICYITEM_VERSION = PDPPolicyItem.class.getMethod("getVersion", new Class[]{});
-        	PDPPOLICYITEM_DESCRIPTION = PDPPolicyItem.class.getMethod("getDescription", new Class[] {});
-        	PDPPOLICYITEM_ISROOT = PDPPolicyItem.class.getMethod("getRoot", new Class[] {});
-        	PDPPOLICYITEM_SETISROOT = PDPPolicyItem.class.getMethod("setRoot", new Class[] {Boolean.class});
-       } catch (final NoSuchMethodException e) {
-            throw new RuntimeException(
-                    "Internal error finding methods in PDPContainer");
-        }
-    }
-    
-    private final Object data;
-    private List<PDPPolicy> policies;
-    
-	public PDPPolicyContainer(Object data) {
-		super();
-		this.data = data;
-		if (this.data instanceof PDPGroup) {
-			policies = new ArrayList<PDPPolicy> (((PDPGroup) this.data).getPolicies());
-		}
-		if (this.data instanceof PDP) {
-			policies = new ArrayList<PDPPolicy> (((PDP) this.data).getPolicies());
-		}
-		if (this.data instanceof Set) {
-			policies = new ArrayList<PDPPolicy> ((Set<PDPPolicy>)data);
-		}
-		if (this.policies == null) {
-			logger.info("NULL policies");
-			throw new NullPointerException("PDPPolicyContainer created with unexpected Object type '" + data.getClass().getName() + "'");
-		}
-		this.setContainer(this);
-	}
-	
-	@Override
-	public Object nextItemId(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("nextItemId: " + itemId);
-		}
-		int index = this.policies.indexOf(itemId);
-		if (index == -1 || (index + 1) >= this.policies.size()) {
-			return null;
-		}		
-		return new PDPPolicyItem(this.policies.get(index + 1));
-	}
-
-	@Override
-	public Object prevItemId(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("prevItemId: " + itemId);
-		}
-		int index = this.policies.indexOf(itemId);
-		if (index <= 0) {
-			return null;
-		}
-		return new PDPPolicyItem(this.policies.get(index - 1));
-	}
-
-	@Override
-	public Object firstItemId() {
-		if (logger.isTraceEnabled()) {
-			logger.trace("firstItemId: ");
-		}
-		if (this.policies.isEmpty()) {
-			return null;
-		}
-		return new PDPPolicyItem(this.policies.get(0));
-	}
-
-	@Override
-	public Object lastItemId() {
-		if (logger.isTraceEnabled()) {
-			logger.trace("lastItemid: ");
-		}
-		if (this.policies.isEmpty()) {
-			return null;
-		}
-		return new PDPPolicyItem(this.policies.get(this.policies.size() - 1));
-	}
-
-	@Override
-	public boolean isFirstId(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("isFirstId: " + itemId);
-		}
-		if (this.policies.isEmpty()) {
-			return false;
-		}
-		return itemId.equals(this.policies.get(0));
-	}
-
-	@Override
-	public boolean isLastId(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("isLastId: " + itemId);
-		}
-		if (this.policies.isEmpty()) {
-			return false;
-		}
-		return itemId.equals(this.policies.get(this.policies.size() - 1));
-	}
-
-	@Override
-	public Object addItemAfter(Object previousItemId)
-			throws UnsupportedOperationException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Item addItemAfter(Object previousItemId, Object newItemId)
-			throws UnsupportedOperationException {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Item getItem(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("getItem: " + itemId);
-		}
-		if (itemId instanceof PDPPolicy) {
-			return new PDPPolicyItem((PDPPolicy) itemId);
-		}
-		return null;
-	}
-
-	@Override
-	public Collection<?> getContainerPropertyIds() {
-		return PDPPOLICY_PROPERTIES;
-	}
-
-	@Override
-	public Collection<?> getItemIds() {
-		final Collection<Object> items = new ArrayList<Object>();
-		items.addAll(this.policies);
-		return Collections.unmodifiableCollection(items);
-	}
-
-	@Override
-	public Property<?> getContainerProperty(Object itemId, Object propertyId) {
-		if (itemId instanceof PDPPolicy == false) {
-			return null;
-		}
-		
-		if (propertyId.equals(PROPERTY_ID)) {
-			return new MethodProperty<Object>(getType(propertyId),
-							new PDPPolicyItem((PDPPolicy) itemId), PDPPOLICYITEM_ID, null);
-		}
-
-		if (propertyId.equals(PROPERTY_NAME)) {
-			return new MethodProperty<Object>(getType(propertyId),
-							new PDPPolicyItem((PDPPolicy) itemId), PDPPOLICYITEM_NAME, null);
-		}
-		
-		if (propertyId.equals(PROPERTY_VERSION)) {
-			return new MethodProperty<Object>(getType(propertyId),
-							new PDPPolicyItem((PDPPolicy) itemId), PDPPOLICYITEM_VERSION, null);
-		}
-
-		if (propertyId.equals(PROPERTY_DESCRIPTION)) {
-			return new MethodProperty<Object>(getType(propertyId),
-							new PDPPolicyItem((PDPPolicy) itemId), PDPPOLICYITEM_DESCRIPTION, null);
-		}
-		
-		if (propertyId.equals(PROPERTY_ISROOT)) {
-			return new MethodProperty<Object>(getType(propertyId),
-							new PDPPolicyItem((PDPPolicy) itemId), PDPPOLICYITEM_ISROOT, PDPPOLICYITEM_SETISROOT);
-		}
-		
-		return null;
-	}
-
-	@Override
-	public Class<?> getType(Object propertyId) {
-        if (propertyId.equals(PROPERTY_ID)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_VERSION)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_DESCRIPTION)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_ISROOT)) {
-            return Boolean.class;
-        }
-		return null;
-	}
-
-	@Override
-	public int size() {
-		if (logger.isTraceEnabled()) {
-			logger.trace("size: " + this.policies.size());
-		}
-		return this.policies.size();
-	}
-
-	@Override
-	public boolean containsId(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("containsId: " + itemId);
-		}
-		return this.policies.contains(itemId);
-	}
-
-	@Override
-	public Item addItem(Object itemId) throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("addItem: " + itemId);
-		}
-		if (itemId instanceof PDPPolicy) {
-			this.policies.add((PDPPolicy) itemId);
-			return new PDPPolicyItem((PDPPolicy)itemId);
-		}
-		return null;
-	}
-
-	@Override
-	public Object addItem() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Cannot add an empty policy.");
-	}
-
-	@Override
-	public boolean removeItem(Object itemId)
-			throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("removeItem: " + itemId);
-		}
-		return this.policies.remove(itemId);
-	}
-
-	@Override
-	public boolean addContainerProperty(Object propertyId, Class<?> type,
-			Object defaultValue) throws UnsupportedOperationException {
-		return false;
-	}
-
-	@Override
-	public boolean removeContainerProperty(Object propertyId)
-			throws UnsupportedOperationException {
-		return false;
-	}
-
-	@Override
-	public boolean removeAllItems() throws UnsupportedOperationException {
-		//this.policies = new ArrayList<PDPPolicy>();
-		//return true;
-		return false;
-	}
-
-	@Override
-	public int indexOfId(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("indexOfId: " + itemId);
-		}
-		return this.policies.indexOf(itemId);
-	}
-
-	@Override
-	public Object getIdByIndex(int index) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("getIdByIndex: " + index);
-		}
-		return this.policies.get(index);
-	}
-
-	@Override
-	public List<?> getItemIds(int startIndex, int numberOfItems) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("getItemIds: " + startIndex + " " + numberOfItems);
-		}
-		if (numberOfItems < 0) {
-			throw new IllegalArgumentException();
-		}
-		return this.policies.subList(startIndex, startIndex + numberOfItems);
-	}
-
-	@Override
-	public Object addItemAt(int index) throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("addItemAt: " + index);
-		}
-		return null;
-	}
-
-	@Override
-	public Item addItemAt(int index, Object newItemId)
-			throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("addItemAt: " + index + " " + newItemId);
-		}
-		return null;
-	}	
-	
-	public class PDPPolicyItem implements Item {
-		private static final long serialVersionUID = 1L;
-		
-		private final PDPPolicy policy;
-		
-		public PDPPolicyItem(PDPPolicy itemId) {
-			this.policy = itemId;
-		}
-
-		public String getId() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getId: " + this.policy);
-			}
-			return this.policy.getId();
-		}
-		
-		public String getName() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getName: " + this.policy);
-			}
-			return this.policy.getName();
-		}
-		
-		public String getVersion() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getVersion: " + this.policy);
-			}
-			return this.policy.getVersion();
-		}
-		
-		public String getDescription() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getDescription: " + this.policy);
-			}
-			return this.policy.getDescription();
-		}
-		
-		public boolean getRoot() {
-			if (logger.isTraceEnabled()) {
-				logger.trace("isRoot: " + this.policy);
-			}
-			return this.policy.isRoot();
-		}
-		
-		public void setRoot(Boolean root) {
-			((StdPDPPolicy)this.policy).setRoot(root);
-		}
-		
-		@Override
-		public Property<?> getItemProperty(Object id) {
-            return getContainerProperty(policy, id);
-		}
-
-		@Override
-		public Collection<?> getItemPropertyIds() {
-	        return getContainerPropertyIds();
-		}
-
-		@Override
-		public boolean addItemProperty(Object id, @SuppressWarnings("rawtypes") Property property)
-				throws UnsupportedOperationException {
-	           throw new UnsupportedOperationException("PDP Policy container "
-	                    + "does not support adding new properties");
-		}
-
-		@Override
-		public boolean removeItemProperty(Object id)
-				throws UnsupportedOperationException {
-            throw new UnsupportedOperationException(
-                    "PDP Policy container does not support property removal");
-		}
-
-	}
-}
-
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PolicyContainer.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PolicyContainer.java
deleted file mode 100644
index 247dcdd..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/model/PolicyContainer.java
+++ /dev/null
@@ -1,2096 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.model;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.InputStream;
-import java.lang.reflect.Method;
-import java.nio.file.Files;
-import java.nio.file.Paths;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.xml.bind.JAXBElement;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AllOfType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AnyOfType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ApplyType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeSelectorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ConditionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.FunctionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionsType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicySetType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableDefinitionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableReferenceType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.util.XACMLPolicyScanner;
-import org.apache.openaz.xacml.util.XACMLPolicyScanner.CallbackResult;
-import com.google.gwt.thirdparty.guava.common.base.Splitter;
-import com.vaadin.data.Container;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.data.util.MethodProperty;
-import com.vaadin.server.Resource;
-import com.vaadin.server.ThemeResource;
-import com.vaadin.ui.Table;
-
-public class PolicyContainer extends ItemSetChangeNotifier implements Container.Hierarchical, Container.Ordered, Container.ItemSetChangeNotifier {
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(PolicyContainer.class);
-	private final PolicyContainer self = this;
-	
-    /**
-     * String identifier of a file's "name" property.
-     */
-    public static String PROPERTY_NAME = "Name";
-
-    /**
-     * String identifier of a file's "id" property.
-     */
-    public static String PROPERTY_ID = "Id";
-
-    /**
-     * String identifier of a file's "short ID" property.
-     */
-    public static String PROPERTY_SHORTID = "ShortId";
-
-    /**
-     * String identifier of a file's "Algorithm" property.
-     */
-    public static String PROPERTY_ALGORITHM = "Algorithm";
-
-    /**
-     * String identifier of a file's "ShortAlgorithm" property.
-     */
-    public static String PROPERTY_SHORTALGORITHM = "ShortAlgorithm";
-
-    /**
-     * String identifier of a file's "Description" property.
-     */
-    public static String PROPERTY_DESCRIPTION = "Description";
-
-    /**
-     * String identifier of a file's "icon" property.
-     */
-    public static String PROPERTY_ICON = "Icon";
-
-    /**
-     * String identifier of a file's "Status" property.
-     */
-    public static String PROPERTY_STATUS = "Status";
-
-    /**
-     * String identifier of a file's "Attributes" property.
-     */
-    public static String PROPERTY_ATTRIBUTES = "Attributes";
-
-    /**
-     * List of the string identifiers for the available properties.
-     */
-    public static Collection<String> POLICY_PROPERTIES;
-
-    private final static Method POLICYITEM_NAME;
-    
-    private final static Method POLICYITEM_ID;
-
-    private final static Method POLICYITEM_SHORTID;
-
-    private final static Method POLICYITEM_ALGORITHM;
-
-    private final static Method POLICYITEM_SHORTALGORITHM;
-
-    private final static Method POLICYITEM_DESCRIPTION;
-
-    private final static Method POLICYITEM_ICON;
-    
-    private final static Method POLICYITEM_STATUS;
-    
-    private final static Method POLICYITEM_ATTRIBUTES;
-    
-    static {
-
-    	POLICY_PROPERTIES = new ArrayList<String>();
-    	POLICY_PROPERTIES.add(PROPERTY_NAME);
-    	POLICY_PROPERTIES.add(PROPERTY_ID);
-    	POLICY_PROPERTIES.add(PROPERTY_SHORTID);
-    	POLICY_PROPERTIES.add(PROPERTY_ALGORITHM);
-    	POLICY_PROPERTIES.add(PROPERTY_SHORTALGORITHM);
-    	POLICY_PROPERTIES.add(PROPERTY_DESCRIPTION);
-    	POLICY_PROPERTIES.add(PROPERTY_ICON);
-    	POLICY_PROPERTIES.add(PROPERTY_STATUS);
-    	POLICY_PROPERTIES.add(PROPERTY_ATTRIBUTES);
-    	POLICY_PROPERTIES = Collections.unmodifiableCollection(POLICY_PROPERTIES);
-        try {
-        	POLICYITEM_NAME = PolicyItem.class.getMethod("getName", new Class[]{});
-        	POLICYITEM_ID = PolicyItem.class.getMethod("getId", new Class[]{});
-        	POLICYITEM_SHORTID = PolicyItem.class.getMethod("getShortId", new Class[]{});
-        	POLICYITEM_ALGORITHM = PolicyItem.class.getMethod("getAlgorithm", new Class[] {});
-        	POLICYITEM_SHORTALGORITHM = PolicyItem.class.getMethod("getShortAlgorithm", new Class[] {});
-            POLICYITEM_DESCRIPTION = PolicyItem.class.getMethod("getDescription", new Class[] {});
-            POLICYITEM_ICON = PolicyItem.class.getMethod("getIcon", new Class[] {});
-            POLICYITEM_STATUS = PolicyItem.class.getMethod("getStatus", new Class[] {});
-            POLICYITEM_ATTRIBUTES = PolicyItem.class.getMethod("getAttributes", new Class[] {});
-        } catch (final NoSuchMethodException e) {
-            throw new RuntimeException(
-                    "Internal error finding methods in PolicyContainer");
-        }
-    }
-    
-    private final File file;
-    private Object root;
-    
-    private Map<PolicySetType, PolicySetType> policySets = new HashMap<PolicySetType, PolicySetType>();
-    private Map<PolicyType, PolicySetType> policies = new HashMap<PolicyType, PolicySetType>();
-    private Map<RuleType, PolicyType> rules = new HashMap<RuleType, PolicyType>();
-    private Map<TargetType, Object> targets = new HashMap<TargetType, Object>();
-    private Map<AnyOfType, TargetType> anyofs = new HashMap<AnyOfType, TargetType>();
-    private Map<AllOfType, AnyOfType> allofs = new HashMap<AllOfType, AnyOfType>();
-    private Map<MatchType, AllOfType> matches = new HashMap<MatchType, AllOfType>();
-    private Map<ObligationExpressionType, Object> obligations = new HashMap<ObligationExpressionType, Object>();
-    private Map<AdviceExpressionType, Object> advice = new HashMap<AdviceExpressionType, Object>();
-    private Map<ConditionType, RuleType> conditions = new HashMap<ConditionType, RuleType>();
-    private Map<VariableDefinitionType, PolicyType> variables = new HashMap<VariableDefinitionType, PolicyType>();
-        
-	public PolicyContainer(File file) throws IOException {
-		super();
-		this.setContainer(this);
-		this.file = file;
-		this.readData();
-		if (logger.isTraceEnabled()) {
-			logger.trace("New Policy Container: " + this.file.getName());
-		}
-	}
-	
-	private void readData() throws IOException {
-		Object data = null;
-		try (InputStream is = Files.newInputStream(Paths.get(this.file.getAbsolutePath()))) {
-			data = XACMLPolicyScanner.readPolicy(is);
-		} catch (IOException e) {
-			logger.error("Failed to load policy.");
-		}
-		XACMLPolicyScanner scanner = null;
-		if (data instanceof PolicySetType) {
-			this.root = data;
-			scanner = new XACMLPolicyScanner((PolicySetType) this.root);
-		} else if (data instanceof PolicyType) {
-			this.root = data;
-			scanner = new XACMLPolicyScanner((PolicyType) this.root);
-		} else {
-			if (data != null) {
-				logger.error("invalid root object: " + data.getClass().getCanonicalName());
-			} else {
-				logger.error("could not parse the file");
-			}
-			throw new IOException("Invalid Xacml Policy File");
-		}
-		scanner.scan(new XACMLPolicyScanner.SimpleCallback() {
-			
-			@Override
-			public CallbackResult onPreVisitRule(PolicyType parent, RuleType rule) {
-				self.addRule(parent, rule, false);
-				return CallbackResult.CONTINUE;
-			}
-			
-			@Override
-			public CallbackResult onPreVisitPolicySet(PolicySetType parent,
-					PolicySetType policySet) {
-				self.addPolicySet(parent, policySet, false);
-				return CallbackResult.CONTINUE;
-			}
-			
-			@Override
-			public CallbackResult onPreVisitPolicy(PolicySetType parent,
-					PolicyType policy) {
-				self.addPolicy(parent, policy, false);
-				return CallbackResult.CONTINUE;
-			}
-			
-		});
-	}
-	
-   private boolean	isObjectSupported(Object itemId) {
-       if (!(itemId instanceof PolicySetType) &&
-           	!(itemId instanceof PolicyType) &&
-           	!(itemId instanceof RuleType) &&
-           	!(itemId instanceof TargetType) &&
-           	!(itemId instanceof ObligationExpressionType) &&
-           	!(itemId instanceof AdviceExpressionType) &&
-           	!(itemId instanceof AnyOfType) &&
-           	!(itemId instanceof AllOfType) &&
-           	!(itemId instanceof MatchType) &&
-           	!(itemId instanceof ConditionType) &&
-           	!(itemId instanceof VariableDefinitionType)) {
-               return false;
-           }
-	   return true;
-   }
-
-	@Override
-	public Item getItem(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("getItem: " + itemId);
-		}
-        if (this.isObjectSupported(itemId) == false) {
-            return null;
-        }
-		return new PolicyItem(itemId);
-	}
-	
-	public Item updateItem(Object itemId) {
-        if (this.isObjectSupported(itemId) == false) {
-            return null;
-        }
-
-        this.fireItemSetChange();
-        
-        return new PolicyItem(itemId);
-	}
-	
-	public Map<VariableDefinitionType, PolicyType>	getVariables() {
-		return Collections.unmodifiableMap(this.variables);
-	}
-
-	@Override
-	public Collection<?> getContainerPropertyIds() {
-		return POLICY_PROPERTIES;
-	}
-
-	@Override
-	public Collection<?> getItemIds() {
-		XACMLPolicyScanner scanner = null;
-		final Collection<Object> items = new ArrayList<Object>();
-		if (this.root instanceof PolicyType) {
-			scanner = new XACMLPolicyScanner((PolicyType) this.root);
-		} else if (this.root instanceof PolicySetType) {
-			scanner = new XACMLPolicyScanner((PolicySetType) this.root);
-		} else {
-			return Collections.unmodifiableCollection(items);
-		}
-		
-		scanner.scan(new XACMLPolicyScanner.SimpleCallback() {
-			
-			@Override
-			public CallbackResult onPreVisitRule(PolicyType parent, RuleType rule) {
-				items.add(rule);
-				if (rule.getTarget() != null) {
-					items.add(rule.getTarget());
-				}
-				if (rule.getCondition() != null) {
-					items.add(rule.getCondition());
-				}
-				if (rule.getObligationExpressions() != null) {
-					items.addAll(rule.getObligationExpressions().getObligationExpression());
-				}
-				if (rule.getAdviceExpressions() != null) {
-					items.addAll(rule.getAdviceExpressions().getAdviceExpression());
-				}
-				return CallbackResult.CONTINUE;
-			}
-			
-			@Override
-			public CallbackResult onPreVisitPolicySet(PolicySetType parent, PolicySetType policySet) {
-				items.add(policySet);
-				if (policySet.getTarget() != null) {
-					items.add(policySet.getTarget());
-				}
-				if (policySet.getObligationExpressions() != null) {
-					items.addAll(policySet.getObligationExpressions().getObligationExpression());
-				}
-				if (policySet.getAdviceExpressions() != null) {
-					items.addAll(policySet.getAdviceExpressions().getAdviceExpression());
-				}
-				return CallbackResult.CONTINUE;
-			}
-			
-			@Override
-			public CallbackResult onPreVisitPolicy(PolicySetType parent, PolicyType policy) {
-				items.add(policy);
-				if (policy.getTarget() != null) {
-					items.add(policy.getTarget());
-				}
-				if (policy.getObligationExpressions() != null) {
-					items.addAll(policy.getObligationExpressions().getObligationExpression());
-				}
-				if (policy.getAdviceExpressions() != null) {
-					items.addAll(policy.getAdviceExpressions().getAdviceExpression());
-				}
-				return CallbackResult.CONTINUE;
-			}
-			
-		});
-		if (logger.isTraceEnabled()) {
-			logger.trace("getItemIds: (" + items.size() + "):" + items);
-		}
-		return Collections.unmodifiableCollection(items);		
-	}
-
-	@Override
-	public Property<?> getContainerProperty(Object itemId, Object propertyId) {
-        if (this.isObjectSupported(itemId) == false) {
-            return null;
-        }
-
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PolicyItem(itemId), POLICYITEM_NAME, null);
-        }
-
-        if (propertyId.equals(PROPERTY_ID)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PolicyItem(itemId), POLICYITEM_ID, null);
-        }
-
-        if (propertyId.equals(PROPERTY_SHORTID)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PolicyItem(itemId), POLICYITEM_SHORTID, null);
-        }
-
-        if (propertyId.equals(PROPERTY_ICON)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PolicyItem(itemId), POLICYITEM_ICON, null);
-        }
-
-        if (propertyId.equals(PROPERTY_ALGORITHM)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PolicyItem(itemId), POLICYITEM_ALGORITHM, null);
-        }
-
-        if (propertyId.equals(PROPERTY_SHORTALGORITHM)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PolicyItem(itemId), POLICYITEM_SHORTALGORITHM, null);
-        }
-
-         if (propertyId.equals(PROPERTY_DESCRIPTION)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PolicyItem(itemId), POLICYITEM_DESCRIPTION, null);
-        }
-
-        if (propertyId.equals(PROPERTY_STATUS)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PolicyItem(itemId), POLICYITEM_STATUS, null);
-        }
-
-        if (propertyId.equals(PROPERTY_ATTRIBUTES)) {
-            return new MethodProperty<Object>(getType(propertyId),
-                    new PolicyItem(itemId), POLICYITEM_ATTRIBUTES, null);
-        }
-
-        return null;
-	}
-
-	@Override
-	public Class<?> getType(Object propertyId) {
-		
-        if (propertyId.equals(PROPERTY_NAME)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_ID)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_SHORTID)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_ICON)) {
-            return Resource.class;
-        }
-        if (propertyId.equals(PROPERTY_DESCRIPTION)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_ALGORITHM)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_SHORTALGORITHM)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_STATUS)) {
-            return String.class;
-        }
-        if (propertyId.equals(PROPERTY_ATTRIBUTES)) {
-            return Table.class;
-        }
-		return null;
-	}
-
-	@Override
-	public int size() {
-		int size = 0;
-		size += this.policySets.size();
-		size += this.policies.size();
-		size += this.rules.size();
-		size += this.targets.size();
-		size += this.obligations.size();
-		size += this.advice.size();
-		size += this.anyofs.size();
-		size += this.allofs.size();
-		size += this.matches.size();
-		size += this.conditions.size();
-		size += this.variables.size();
-		
-		return size;
-	}
-
-	@Override
-	public boolean containsId(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("containsId: " + itemId);
-		}
-		if (itemId instanceof PolicySetType) {
-			if (this.root instanceof PolicySetType && ((PolicySetType) itemId).getPolicySetId().equals(((PolicySetType) this.root).getPolicySetId())) {
-				return true;
-			}
-			return this.policySets.containsKey(itemId);
-		}
-		if (itemId instanceof PolicyType) {
-			if (this.root instanceof PolicyType && ((PolicyType) itemId).getPolicyId().equals(((PolicyType) this.root).getPolicyId())) {
-				return true;
-			}
-			return this.policies.containsKey(itemId);
-		}
-		if (itemId instanceof RuleType) {
-			return this.rules.containsKey(itemId);
-		}
-		if (itemId instanceof TargetType) {
-			return this.targets.containsKey(itemId);
-		}
-		if (itemId instanceof ObligationExpressionType) {
-			return this.obligations.containsKey(itemId);
-		}
-		if (itemId instanceof AdviceExpressionType) {
-			return this.advice.containsKey(itemId);
-		}
-		if (itemId instanceof AnyOfType) {
-			return this.anyofs.containsKey(itemId);
-		}
-		if (itemId instanceof AllOfType) {
-			return this.allofs.containsKey(itemId);
-		}
-		if (itemId instanceof MatchType) {
-			return this.matches.containsKey(itemId);
-		}
-		if (itemId instanceof ConditionType) {
-			return this.conditions.containsKey(itemId);
-		}
-		if (itemId instanceof VariableDefinitionType) {
-			return this.variables.containsKey(itemId);
-		}
-		return false;
-	}
-
-	@Override
-	public Item addItem(Object itemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Please use the addItem(Object, Object) method instead.");
-	}
-
-	/**
-	 * Add's the new Policy object under the parent. This method appends the item to the end
-	 * of the parent's list if applicable. If you want to add an item within a list, use the
-	 * addItemAfter() method instead.
-	 * 
-	 * @param itemId
-	 * @param parent
-	 * @return
-	 * @throws UnsupportedOperationException
-	 */
-	public Item addItem(Object itemId, Object parent) throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("addItem: " + itemId);
-		}
-		if (itemId instanceof PolicySetType && parent instanceof PolicySetType) {
-			this.addPolicySet((PolicySetType) parent, (PolicySetType) itemId, true);
-		} else if (itemId instanceof PolicyType && parent instanceof PolicySetType) {
-			this.addPolicy((PolicySetType) parent, (PolicyType) itemId, true);
-		} else if (itemId instanceof RuleType && parent instanceof PolicyType) {
-			this.addRule((PolicyType) parent, (RuleType) itemId, true);
-		} else if (itemId instanceof TargetType && 
-				(parent instanceof PolicyType || 
-				parent instanceof PolicySetType || 
-				parent instanceof RuleType)) {
-			this.addTarget(parent, (TargetType) itemId, true);
-		} else if (itemId instanceof ObligationExpressionType ||
-					itemId instanceof ObligationExpressionsType) {
-			if (parent instanceof PolicyType || 
-				parent instanceof PolicySetType || 
-				parent instanceof RuleType ||
-				parent instanceof ObligationExpressionsType) {
-				if (itemId instanceof ObligationExpressionType) {
-					this.addObligation(parent, (ObligationExpressionType) itemId, true);
-				} else {
-					this.addObligations(parent, (ObligationExpressionsType) itemId, true);
-				}
-			}
-		} else if (itemId instanceof AdviceExpressionType ||
-					itemId instanceof AdviceExpressionsType) {
-			if (parent instanceof PolicyType || 
-				parent instanceof PolicySetType || 
-				parent instanceof RuleType ||
-				parent instanceof AdviceExpressionsType) {
-				if (itemId instanceof AdviceExpressionType) {
-					this.addAdvice(parent, (AdviceExpressionType) itemId, true);
-				} else {
-					this.addAdvice(parent, (AdviceExpressionsType) itemId, true);
-				}
-			}
-		} else if (itemId instanceof AnyOfType && parent instanceof TargetType) {
-			this.addAnyOf((TargetType) parent, (AnyOfType) itemId, true);
-		} else if (itemId instanceof AllOfType && parent instanceof AnyOfType) {
-			this.addAllOf((AnyOfType) parent, (AllOfType) itemId, true);
-		} else if (itemId instanceof MatchType && parent instanceof AllOfType) {
-			this.addMatch((AllOfType) parent, (MatchType) itemId, true);
-		} else if (itemId instanceof ConditionType && parent instanceof RuleType) {
-			this.addCondition((RuleType) parent, (ConditionType) itemId, true);
-		} else if (itemId instanceof VariableDefinitionType && parent instanceof PolicyType) {
-			this.addVariable((PolicyType) parent, (VariableDefinitionType) itemId, true);
-		} else {
-			throw new UnsupportedOperationException("Unknown itemid or parent type: " + itemId.getClass().getCanonicalName() + " " + parent.getClass().getCanonicalName());
-		}
-		//
-		// Fire update event
-		//
-		this.fireItemSetChange();
-		//
-		// Create a new item
-		//
-		return new PolicyItem(itemId);
-	}
-	
-	private void addVariable(PolicyType policy, VariableDefinitionType variable, boolean add) {
-		if (add) {
-			if (policy == null) {
-				throw new NullPointerException();
-			}
-			policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(variable);
-		}
-		this.variables.put(variable, policy);
-	}
-
-	private void addCondition(RuleType rule, ConditionType condition, boolean add) {
-		if (add) {
-			if (rule == null) {
-				throw new NullPointerException();
-			}
-			rule.setCondition(condition);
-		}
-		this.conditions.put(condition, rule);
-	}
-
-	private void addPolicySet(PolicySetType parent, PolicySetType policySet, boolean add) {
-		if (policySet == null) {
-			throw new NullPointerException();
-		}
-		if (parent == null && this.isRoot(policySet) == false) {
-			logger.warn("adding a non-root policy set with no parent");
-			return;
-		}
-		if (add) {
-			if (parent == null) {
-				throw new NullPointerException();
-			}
-			parent.getPolicySetOrPolicyOrPolicySetIdReference().add(new ObjectFactory().createPolicySet(policySet));
-		}
-		this.policySets.put(policySet, parent);
-		this.addTarget(policySet, policySet.getTarget(), false);
-		this.addObligations(policySet, policySet.getObligationExpressions(), false);
-		this.addAdvice(policySet, policySet.getAdviceExpressions(), false);
-	}
-	
-	private void addPolicy(PolicySetType parent, PolicyType policy, boolean add) {
-		if (policy == null) {
-			throw new NullPointerException();
-		}
-		if (parent == null && this.isRoot(policy) == false) {
-			logger.warn("adding a non-root policy with no parent");
-			return;
-		}
-		if (add) {
-			if (parent == null) {
-				throw new NullPointerException();
-			}
-			parent.getPolicySetOrPolicyOrPolicySetIdReference().add(new ObjectFactory().createPolicy(policy));
-		}
-		this.policies.put(policy, parent);
-		this.addTarget(policy, policy.getTarget(), false);
-		this.addObligations(policy, policy.getObligationExpressions(), false);
-		this.addAdvice(policy, policy.getAdviceExpressions(), false);
-		for (Object obj : policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition()) {
-			if (obj instanceof VariableDefinitionType) {
-				this.addVariable(policy, (VariableDefinitionType) obj, false);
-			}
-		}
-	}
-	
-	private void addRule(PolicyType parent, RuleType rule, boolean add) {
-		if (rule == null) {
-			throw new NullPointerException("Rule can't be null");
-		}
-		if (parent == null) {
-			throw new NullPointerException("Parent policy can't be null");
-		}
-		if (this.isRoot(parent) == false && this.policies.get(parent) == null) {
-			logger.warn("Could NOT find parent as root or in map: " + parent);
-			return;
-		}
-		if (add) {
-			parent.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().add(rule);
-		}
-		this.rules.put(rule, parent);
-		this.addTarget(rule, rule.getTarget(), false);
-		this.addObligations(rule, rule.getObligationExpressions(), false);
-		this.addAdvice(rule, rule.getAdviceExpressions(), false);
-		this.addCondition(rule, rule.getCondition(), add);
-	}
-	
-	private void addTarget(Object parent, TargetType target, boolean add) {
-		if (target == null) {
-			logger.error("TargetType is NULL");
-			return;
-		}
-		if (add) {
-			if (parent == null) {
-				throw new NullPointerException();
-			}
-			if (parent instanceof PolicySetType) {
-				((PolicySetType) parent).setTarget(target);
-			} else if (parent instanceof PolicyType) {
-				((PolicyType) parent).setTarget(target);
-			} else if (parent instanceof RuleType) {
-				((RuleType) parent).setTarget(target);
-			} else {
-				logger.error("Adding target to unknown class: " + parent.getClass().getCanonicalName());
-			}
-		}
-		this.targets.put(target, parent);
-		this.addAnyOfs(target);
-	}
-	
-	private void addAnyOfs(TargetType target) {
-		for (AnyOfType anyof : target.getAnyOf()) {
-			this.anyofs.put(anyof, target);
-			this.addAllOfs(anyof);
-		}
-	}
-	
-	private void addAnyOf(TargetType target, AnyOfType anyof, boolean add) {
-		if (add) {
-			target.getAnyOf().add(anyof);
-		}
-		this.anyofs.put(anyof, target);
-	}
-	
-	private void addAllOfs(AnyOfType anyof) {
-		for (AllOfType allof : anyof.getAllOf()) {
-			this.allofs.put(allof, anyof);
-			this.addMatches(allof);
-		}
-	}
-	
-	private void addAllOf(AnyOfType anyof, AllOfType allof, boolean add) {
-		if (add) {
-			anyof.getAllOf().add(allof);
-		}
-		this.allofs.put(allof, anyof);
-	}
-	
-	private void addMatches(AllOfType allofs) {
-		for (MatchType match : allofs.getMatch()) {
-			this.matches.put(match, allofs);
-		}
-	}
-
-	private void addMatch(AllOfType allofs, MatchType match, boolean add) {
-		if (add) {
-			allofs.getMatch().add(match);
-		}
-		this.matches.put(match, allofs);
-	}
-
-	private void addObligations(Object parent, ObligationExpressionsType expressions, boolean bAdd) {
-		if (expressions == null || expressions.getObligationExpression() == null) {
-			return;
-		}
-		if (bAdd) {
-			if (parent instanceof PolicySetType) {
-				((PolicySetType) parent).setObligationExpressions(expressions);
-			} else if (parent instanceof PolicyType) {
-				((PolicyType) parent).setObligationExpressions(expressions);
-			} else if (parent instanceof RuleType) {
-				((RuleType) parent).setObligationExpressions(expressions);
-			}
-		}
-		for (ObligationExpressionType expression : expressions.getObligationExpression()) {
-			this.obligations.put(expression, parent);
-		}
-	}
-	
-	private void addObligation(Object parent, ObligationExpressionType expression, boolean bAdd) {
-		ObligationExpressionsType expressions = null;
-		if (parent instanceof PolicySetType) {
-			expressions = ((PolicySetType) parent).getObligationExpressions();
-			if (expressions == null) {
-				expressions = new ObligationExpressionsType();
-				((PolicySetType) parent).setObligationExpressions(expressions);
-			}
-		} else if (parent instanceof PolicyType) {
-			expressions = ((PolicyType) parent).getObligationExpressions();
-			if (expressions == null) {
-				expressions = new ObligationExpressionsType();
-				((PolicyType) parent).setObligationExpressions(expressions);
-			}
-		} else if (parent instanceof RuleType) {
-			expressions = ((RuleType) parent).getObligationExpressions();
-			if (expressions == null) {
-				expressions = new ObligationExpressionsType();
-				((RuleType) parent).setObligationExpressions(expressions);
-			}
-		} else if (parent instanceof ObligationExpressionsType) {
-			expressions = (ObligationExpressionsType) parent;
-			if (bAdd) {
-				expressions.getObligationExpression().add(expression);
-			}
-			parent = this.getParent(expressions);
-			this.obligations.put(expression, parent);
-			return;
-		}
-		if (bAdd) {
-			expressions.getObligationExpression().add(expression);
-		}
-		this.obligations.put(expression, parent);
-	}
-	
-	private void addAdvice(Object parent, AdviceExpressionsType expressions, boolean bAdd) {
-		if (expressions == null || expressions.getAdviceExpression() == null) {
-			return;
-		}
-		if (bAdd) {
-			if (parent instanceof PolicySetType) {
-				((PolicySetType) parent).setAdviceExpressions(expressions);
-			} else if (parent instanceof PolicyType) {
-				((PolicyType) parent).setAdviceExpressions(expressions);
-			} else if (parent instanceof RuleType) {
-				((RuleType) parent).setAdviceExpressions(expressions);
-			}
-		}
-		for (AdviceExpressionType expression : expressions.getAdviceExpression()) {
-			this.advice.put(expression, parent);
-		}
-	}
-	
-	private void addAdvice(Object parent, AdviceExpressionType expression, boolean bAdd) {
-		AdviceExpressionsType expressions = null;
-		if (parent instanceof PolicySetType) {
-			expressions = ((PolicySetType) parent).getAdviceExpressions();
-			if (expressions == null) {
-				expressions = new AdviceExpressionsType();
-				((PolicySetType) parent).setAdviceExpressions(expressions);
-			}
-		} else if (parent instanceof PolicyType) {
-			expressions = ((PolicyType) parent).getAdviceExpressions();
-			if (expressions == null) {
-				expressions = new AdviceExpressionsType();
-				((PolicyType) parent).setAdviceExpressions(expressions);
-			}
-		} else if (parent instanceof RuleType) {
-			expressions = ((RuleType) parent).getAdviceExpressions();
-			if (expressions == null) {
-				expressions = new AdviceExpressionsType();
-				((RuleType) parent).setAdviceExpressions(expressions);
-			}
-		} else if (parent instanceof AdviceExpressionsType) {
-			expressions = (AdviceExpressionsType) parent;
-			if (bAdd) {
-				expressions.getAdviceExpression().add(expression);
-			}
-			parent = this.getParent(expressions);
-			this.advice.put(expression, parent);
-			return;
-		}
-		if (bAdd) {
-			expressions.getAdviceExpression().add(expression);
-		}
-		this.advice.put(expression, parent);
-	}
-	
-	@Override
-	public Object addItem() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Policy Container cannot add an unknown item.");
-	}
-
-	@Override
-	public boolean addContainerProperty(Object propertyId, Class<?> type,
-			Object defaultValue) throws UnsupportedOperationException {
-		return false;
-	}
-
-	@Override
-	public boolean removeContainerProperty(Object propertyId)
-			throws UnsupportedOperationException {
-		return false;
-	}
-
-	@Override
-	public boolean removeAllItems() throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Policy Container cannot remove all items. You must have a base Policy or Policy Set.");
-	}
-
-	@Override
-	public Collection<?> getChildren(Object itemId) {
-		final Collection<Object> items = new ArrayList<Object>();
-		
-		if (itemId instanceof PolicySetType) {
-			PolicySetType policySet = (PolicySetType) itemId;
-			if (policySet.getTarget() != null) {
-				items.add(policySet.getTarget());
-			}
-			if (policySet.getObligationExpressions() != null) {
-				items.addAll(policySet.getObligationExpressions().getObligationExpression());
-			}
-			if (policySet.getAdviceExpressions() != null) {
-				items.addAll(policySet.getAdviceExpressions().getAdviceExpression());
-			}
-			List<JAXBElement<?>> children = policySet.getPolicySetOrPolicyOrPolicySetIdReference();
-			for (JAXBElement<?> element : children) {
-				if (element.getName().getLocalPart().equals("PolicySet")) {
-					items.add(element.getValue());
-				} else if (element.getName().getLocalPart().equals("Policy")) {
-					items.add(element.getValue());
-				}
-			}
-		} else if (itemId instanceof PolicyType) {
-			PolicyType policy = (PolicyType) itemId;
-			if (policy.getTarget() != null) {
-				items.add(policy.getTarget());
-			}
-			List<Object> objs = policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition();
-			for (Object obj : objs) {
-				if (obj instanceof VariableDefinitionType) {
-					items.add(obj);
-				} else if (obj instanceof RuleType) {
-					items.add(obj);
-				}
-			}
-			if (policy.getObligationExpressions() != null) {
-				items.addAll(policy.getObligationExpressions().getObligationExpression());
-			}
-			if (policy.getAdviceExpressions() != null) {
-				items.addAll(policy.getAdviceExpressions().getAdviceExpression());
-			}
-		} else if (itemId instanceof RuleType) {
-			RuleType rule = (RuleType) itemId;
-			if (rule.getTarget() != null) {
-				items.add(rule.getTarget());
-			}
-			if (rule.getCondition() != null) {
-				items.add(rule.getCondition());
-			}
-			if (rule.getObligationExpressions() != null) {
-				items.addAll(((RuleType) itemId).getObligationExpressions().getObligationExpression());
-			}
-			if (rule.getAdviceExpressions() != null) {
-				items.addAll(rule.getAdviceExpressions().getAdviceExpression());
-			}
-		} else if (itemId instanceof TargetType) {
-			for (AnyOfType anyof : ((TargetType) itemId).getAnyOf()) {
-				items.add(anyof);
-			}
-		} else if (itemId instanceof AnyOfType) {
-			for (AllOfType allof : ((AnyOfType) itemId).getAllOf()) {
-				items.add(allof);
-			}
-		} else if (itemId instanceof AllOfType) {
-			for (MatchType match : ((AllOfType) itemId).getMatch()) {
-				items.add(match);
-			}
-		}
-		if (logger.isTraceEnabled()) {
-			logger.trace("getChildren: " + itemId + "(" + items.size() + ") " + items);
-		}
-		return Collections.unmodifiableCollection(items);
-	}
-
-	@Override
-	public Object getParent(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("getParent: " + itemId);
-		}
-		assert itemId != null;
-		if (itemId == null) {
-			logger.fatal("getParent called with NULL object");
-			return null;
-		}
-		if (itemId.equals(this.root)) {
-			if (logger.isTraceEnabled()) {
-				logger.trace("getParent is the root");
-			}
-			return null;
-		}
-		if (itemId instanceof PolicySetType) {
-			return this.policySets.get(itemId);
-		}
-		if (itemId instanceof PolicyType) {
-			return this.policies.get(itemId);
-		}
-		if (itemId instanceof RuleType) {
-			return this.rules.get(itemId);
-		}
-		if (itemId instanceof TargetType) {
-			return this.targets.get(itemId);
-		}
-		if (itemId instanceof ObligationExpressionType) {
-			return this.obligations.get(itemId);
-		}
-		if (itemId instanceof AdviceExpressionType) {
-			return this.advice.get(itemId);
-		}
-		if (itemId instanceof AllOfType) {
-			return this.allofs.get(itemId);
-		}
-		if (itemId instanceof AnyOfType) {
-			return this.anyofs.get(itemId);
-		}
-		if (itemId instanceof MatchType) {
-			return this.matches.get(itemId);
-		}
-		if (itemId instanceof ConditionType) {
-			return this.conditions.get(itemId);
-		}
-		if (itemId instanceof VariableDefinitionType) {
-			return this.variables.get(itemId);
-		}
-		return null;
-	}
-
-	@Override
-	public Collection<?> rootItemIds() {
-		final Collection<Object> items = new ArrayList<Object>();
-		items.add(this.root);
-		if (logger.isTraceEnabled()) {
-			logger.trace("rootItemIds: " + items);
-		}
-		return Collections.unmodifiableCollection(items);
-	}
-	
-	@Override
-	public boolean setParent(Object itemId, Object newParentId) throws UnsupportedOperationException {
-		boolean result = this.setItemParent(itemId, newParentId);
-		if (result == true) {
-			if (logger.isTraceEnabled()) {
-				logger.trace("setParent: " + itemId + " " + newParentId + " succeeded.");
-			}
-			this.fireItemSetChange();
-		}
-		return result;
-	}
-
-	protected boolean setItemParent(Object itemId, Object newParentId) throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("setItemParent: " + itemId + " " + newParentId);
-		}
-		if (newParentId instanceof PolicySetType) {
-			return this.moveItemToPolicySet(itemId, (PolicySetType) newParentId);
-		}
-		if (newParentId instanceof PolicyType) {
-			return this.moveItemToPolicy(itemId, (PolicyType) newParentId);
-		}
-		if (newParentId instanceof RuleType) {
-			return this.moveItemToRule(itemId, (RuleType) newParentId);
-		}
-		if (newParentId instanceof TargetType) {
-			return this.moveItemToTarget(itemId, (TargetType) newParentId);
-		}
-		if (newParentId instanceof AnyOfType) {
-			return this.moveItemToAnyOf(itemId, (AnyOfType) newParentId);
-		}
-		if (newParentId instanceof AllOfType) {
-			return this.moveItemToAllOf(itemId, (AllOfType) newParentId);
-		}
-		return false;
-	}
-	
-	protected boolean moveItemToPolicySet(Object itemId, PolicySetType policySet) {
-		if (itemId instanceof PolicySetType) {
-			
-			if (this.doRemoveItem(itemId)) {
-				this.addPolicySet(policySet, (PolicySetType) itemId, true);
-				return true;
-			}
-			return false;
-		} else if (itemId instanceof PolicyType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addPolicy(policySet, (PolicyType) itemId, true);
-				return true;
-			}
-			return false;
-		} else if (itemId instanceof TargetType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addTarget(policySet, (TargetType) itemId, true);
-				return true;
-			}
-			return false;
-		} else if (itemId instanceof ObligationExpressionType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addObligation(policySet, (ObligationExpressionType) itemId, true);
-				return true;
-			}
-			return false;
-		} else if (itemId instanceof AdviceExpressionType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addAdvice(policySet, (AdviceExpressionType) itemId, true);
-				return true;
-			}
-			return false;
-		}
-		logger.warn("Can't move this item to Policy Set: " + itemId.getClass().getCanonicalName());
-		return false;
-	}
-	
-	protected boolean moveItemToPolicy(Object itemId, PolicyType policy) {
-		if (itemId instanceof RuleType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addRule(policy, (RuleType) itemId, true);
-				return true;
-			}
-			return false;
-		} else if (itemId instanceof TargetType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addTarget(policy, (TargetType) itemId, true);
-				return true;
-			}
-			return false;
-		} else if (itemId instanceof ObligationExpressionType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addObligation(policy, (ObligationExpressionType) itemId, true);
-				return true;
-			}
-			return false;
-		} else if (itemId instanceof AdviceExpressionType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addAdvice(policy, (AdviceExpressionType) itemId, true);
-				return true;
-			}
-			return false;
-		} else if (itemId instanceof VariableDefinitionType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addVariable(policy, (VariableDefinitionType) itemId, true);
-				return true;
-			}
-			return false;
-		}
-		logger.warn("Can't move this item to Policy: " + itemId.getClass().getCanonicalName());
-		return false;
-	}
-	
-	protected boolean moveItemToRule(Object itemId, RuleType rule) {
-		if (itemId instanceof TargetType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addTarget(rule, (TargetType) itemId, true);
-				return true;
-			}
-			return false;
-		} else if (itemId instanceof ObligationExpressionType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addObligation(rule, (ObligationExpressionType) itemId, true);
-				return true;
-			}
-			return false;
-		} else if (itemId instanceof AdviceExpressionType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addAdvice(rule, (AdviceExpressionsType) itemId, true);
-				return true;
-			}
-			return false;
-		} else if (itemId instanceof ConditionType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addCondition(rule, (ConditionType) itemId, true);
-				return true;
-			}
-			return false;
-		}
-		logger.warn("Can't move this item to Rule: " + itemId.getClass().getCanonicalName());
-		return false;
-	}
-	
-	protected boolean moveItemToTarget(Object itemId, TargetType target) {
-		if (itemId instanceof AnyOfType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addAnyOf(target, (AnyOfType) itemId, true);
-				return true;
-			}
-			return false;
-		}
-		logger.warn("Can't move this item to target: " + itemId.getClass().getCanonicalName());
-		return false;
-	}
-	
-	protected boolean moveItemToAnyOf(Object itemId, AnyOfType anyOf) {
-		if (itemId instanceof AllOfType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addAllOf(anyOf, (AllOfType) itemId, true);
-				return true;
-			}
-			return false;
-		}
-		logger.warn("Can't move this item to anyOf: " + itemId.getClass().getCanonicalName());
-		return false;
-	}
-	
-	protected boolean moveItemToAllOf(Object itemId, AllOfType allOf) {
-		if (itemId instanceof MatchType) {
-			if (this.doRemoveItem(itemId)) {
-				this.addMatch(allOf, (MatchType) itemId, true);
-				return true;
-			}
-			return false;
-		}
-		logger.warn("Can't move this item to allOf: " + itemId.getClass().getCanonicalName());
-		return false;
-	}
-
-	@Override
-	public boolean areChildrenAllowed(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("areChildrenAllowed: " + itemId);
-		}
-		if (itemId instanceof MatchType ||
-			itemId instanceof ObligationExpressionType ||
-			itemId instanceof AdviceExpressionType ||
-			itemId instanceof ConditionType ||
-			itemId instanceof VariableDefinitionType) {
-			return false;
-		}
-		return true;
-	}
-
-	@Override
-	public boolean setChildrenAllowed(Object itemId, boolean areChildrenAllowed)
-			throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("setChildrenAllowed: " + itemId + " " + areChildrenAllowed);
-		}
-		if (itemId instanceof MatchType ||
-			itemId instanceof ObligationExpressionType ||
-			itemId instanceof AdviceExpressionType ||
-			itemId instanceof ConditionType ||
-			itemId instanceof VariableDefinitionType) {
-			if (areChildrenAllowed == true) {
-				return false;
-			}
-			return true;
-		}
-		if (areChildrenAllowed == false) {
-			return false;
-		}
-		return true;
-	}
-
-	@Override
-	public boolean isRoot(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("isRoot: " + itemId);
-		}
-		assert itemId != null;
-		if (itemId == null) {
-			//
-			// This usually means the container's map's are screwed up.
-			//
-			logger.error("NULL isRoot item");
-			return false;
-		}
-		if (itemId instanceof PolicyType && this.root instanceof PolicyType && itemId.equals(this.root)) {
-			return true;
-		} else if (itemId instanceof PolicySetType && this.root instanceof PolicySetType && itemId.equals(this.root)) {
-			return true;
-		}
-		return false;
-	}
-
-	@Override
-	public boolean hasChildren(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("hasChildren: " + itemId);
-		}
-		if (itemId instanceof MatchType ||
-			itemId instanceof ObligationExpressionType ||
-			itemId instanceof AdviceExpressionType ||
-			itemId instanceof ConditionType ||
-			itemId instanceof VariableDefinitionType) {
-			return false;
-		}
-		return true;
-	}
-
-	@Override
-	public boolean removeItem(Object itemId) throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("removeItem: " + itemId);
-		}
-		boolean result = this.doRemoveItem(itemId);
-		if (result) {
-			this.fireItemSetChange();
-		}
-		return result;
-	}
-	
-	protected boolean doRemoveItem(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("doRemoveItem: " + itemId);
-		}
-		if (itemId instanceof PolicySetType) {
-			PolicySetType parent = this.policySets.get(itemId);
-			if (parent == null) {
-				logger.error("policy set not found in map");
-				assert false;
-				return false;
-			}
-			return this.removePolicySetFromPolicySet(parent, (PolicySetType) itemId);
-		} else if (itemId instanceof PolicyType) {
-			PolicySetType parent = this.policies.get(itemId);
-			if (parent == null) {
-				logger.error("policy not found in map");
-				assert false;
-				return false;
-			}
-			return this.removePolicyFromPolicySet(parent, (PolicyType) itemId);
-		} else if (itemId instanceof RuleType) {
-			PolicyType parent = this.rules.get(itemId);
-			if (parent == null) {
-				logger.error("rule not found in map");
-				assert false;
-				return false;
-			}
-			if (parent.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().remove(itemId)) {
-				this.removeRule((RuleType) itemId);
-				return true;
-			}
-			logger.error("Failed to remove rule from parent policy");
-			assert false;
-			return false;
-		} else if (itemId instanceof TargetType) {
-			throw new UnsupportedOperationException("Cannot remove TargetType directly - please remove it via PolicySet/Policy/Rule");
-		} else if (itemId instanceof ObligationExpressionType) {
-			Object parent = this.obligations.get(itemId);
-			if (parent == null) {
-				logger.error("obligation not found in map");
-				assert false;
-				return false;
-			}
-			if (parent instanceof PolicySetType) {
-				if (((PolicySetType) parent).getObligationExpressions() != null) {
-					if (((PolicySetType) parent).getObligationExpressions().getObligationExpression().remove(itemId) == false) {
-						logger.error("Failed to remove obligation expression from policy set");
-						assert false;
-						return false;
-					}
-				} else {
-					logger.error("policy set does not contain obligation expressions, cannot remove");
-					assert false;
-					return false;
-				}
-			} else if (parent instanceof PolicyType) {
-				if (((PolicyType) parent).getObligationExpressions() != null) {
-					if (((PolicyType) parent).getObligationExpressions().getObligationExpression().remove(itemId) == false) {
-						logger.error("Failed to remove obligation expression from policy");
-						assert false;
-						return false;
-					}
-				} else {
-					logger.error("policy does not contain obligation expressions, cannot remove");
-					assert false;
-					return false;
-				}
-			} else if (parent instanceof RuleType) {
-				if (((RuleType) parent).getObligationExpressions() != null) {
-					if (((RuleType) parent).getObligationExpressions().getObligationExpression().remove(itemId) == false) {
-						logger.error("Failed to remove obligation expression from policy set");
-						assert false;
-						return false;
-					}
-				} else {
-					logger.error("rule does not contain obligation expressions, cannot remove");
-					assert false;
-					return false;
-				}
-			} else {
-				logger.error("Unknown parent for obligation: " + parent.getClass().getCanonicalName());
-				assert false;
-				return false;
-			}
-			if (this.obligations.remove(itemId) == null) {
-				logger.error("obligation map does not contain itemId");
-				assert false;
-			}
-			return true;
-		} else if (itemId instanceof AdviceExpressionType) {
-			Object parent = this.advice.get(itemId);
-			if (parent == null) {
-				logger.error("advice not found in map");
-				assert false;
-				return false;
-			}
-			if (parent instanceof PolicySetType) {
-				if (((PolicySetType) parent).getAdviceExpressions() != null) {
-					if (((PolicySetType) parent).getAdviceExpressions().getAdviceExpression().remove(itemId) == false) {
-						logger.error("Failed to remove advice expression from policy set");
-						assert false;
-						return false;
-					}
-				} else {
-					logger.error("policy set does not contain advice expressions, cannot remove");
-					assert false;
-					return false;
-				}
-			} else if (parent instanceof PolicyType) {
-				if (((PolicyType) parent).getAdviceExpressions() != null) {
-					if (((PolicyType) parent).getAdviceExpressions().getAdviceExpression().remove(itemId) == false) {
-						logger.error("Failed to remove advice expression from policy");
-						assert false;
-						return false;
-					}
-				} else {
-					logger.error("policy does not contain advice expressions, cannot remove");
-					assert false;
-					return false;
-				}
-			} else if (parent instanceof RuleType) {
-				if (((RuleType) parent).getAdviceExpressions() != null) {
-					if (((RuleType) parent).getAdviceExpressions().getAdviceExpression().remove(itemId) == false) {
-						logger.error("Failed to remove advice expression from rule");
-						assert false;
-						return false;
-					}
-				} else {
-					logger.error("rule does not contain advice expressions, cannot remove");
-					assert false;
-					return false;
-				}
-			} else {
-				logger.error("Unknown parent for advice: " + parent.getClass().getCanonicalName());
-				assert false;
-				return false;
-			}
-			if (this.advice.remove((AdviceExpressionType) itemId) == null) {
-				logger.error("obligation map does not contain itemId");
-				assert false;
-			}
-			return true;
-		} else if (itemId instanceof AnyOfType) {
-			TargetType parent = this.anyofs.get(itemId);
-			if (parent == null) {
-				logger.error("anyof not found in map");
-				assert false;
-				return false;
-			}
-			if (parent.getAnyOf().remove(itemId)) {
-				this.removeAnyOf((AnyOfType) itemId);
-				return true;
-			} else {
-				logger.error("Failed to remove itemId from target");
-				assert false;
-				return false;
-			}
-		} else if (itemId instanceof AllOfType) {
-			AnyOfType parent = this.allofs.get(itemId);
-			if (parent == null) {
-				logger.error("allof not found in map");
-				assert false;
-				return false;
-			}
-			if (parent.getAllOf().remove(itemId)) {
-				this.removeAllOf((AllOfType) itemId);
-				return true;
-			} else {
-				logger.error("Failed to remove itemId from anyOf");
-				assert false;
-				return false;
-			}
-		} else if (itemId instanceof MatchType) {
-			AllOfType parent = this.matches.get(itemId);
-			if (parent == null) {
-				logger.error("match not found in map");
-				assert false;
-				return false;
-			}
-			if (parent.getMatch().remove(itemId)) {
-				this.removeMatch((MatchType) itemId);
-				return true;
-			} else {
-				logger.error("Failed to remove itemId from allOf");
-				assert false;
-				return false;
-			}
-		} else if (itemId instanceof ConditionType) {
-			RuleType rule = this.conditions.get(itemId);
-			if (rule != null) {
-				rule.setCondition(null);
-				if (this.conditions.remove(itemId) == null) {
-					logger.error("Failed to remove condition from map");
-					assert false;
-					return false;
-				}
-				return true;
-			} else {
-				logger.error("condition not found in map");
-				assert false;
-				return false;
-			}
-		} else if (itemId instanceof VariableDefinitionType) {
-			PolicyType policy = this.variables.get(itemId);
-			if (policy != null) {
-				if (policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition().remove(itemId)) {
-					if (this.variables.remove(itemId) == null) {
-						logger.error("failed to remove variable from map");
-						assert false;
-						return false;
-					}
-					return true;
-				} else {
-					logger.error("failed to remove variable from policy");
-					assert false;
-					return false;
-				}
-			} else {
-				logger.error("variable not found in map");
-				assert false;
-				return false;
-			}
-		}
-		logger.error("Failed to remove policy set from policy set, not found.");
-		return false;
-	}
-	
-	protected boolean removePolicyFromPolicySet(PolicySetType parent, PolicyType policy) {
-		for (JAXBElement<?> element : parent.getPolicySetOrPolicyOrPolicySetIdReference()) {
-			if (PolicyType.class.isAssignableFrom(element.getDeclaredType()) &&
-						((PolicyType) element.getValue()).getPolicyId().equals(policy.getPolicyId())) {
-				if (parent.getPolicySetOrPolicyOrPolicySetIdReference().remove(element)) {
-					this.removePolicy(policy);
-					return true;
-				}
-				logger.error("Failed to remove policy from parent policy set");
-				assert false;
-				return false;
-			}
-		}
-		logger.error("Failed to remove policy from policy set, not found.");
-		return false;
-	}
-
-	protected boolean removePolicySetFromPolicySet(PolicySetType parent, PolicySetType policySet) {
-		for (JAXBElement<?> element : parent.getPolicySetOrPolicyOrPolicySetIdReference()) {
-			if (PolicySetType.class.isAssignableFrom(element.getDeclaredType())) {
-				logger.info(element);
-				if (((PolicySetType) element.getValue()).getPolicySetId().equals(policySet.getPolicySetId())) {
-					if (parent.getPolicySetOrPolicyOrPolicySetIdReference().remove(element)) {
-						this.removePolicySet(policySet);
-						return true;
-					}
-					logger.error("Failed to remove policy set from parent policy set");
-					assert false;
-					return false;
-				}
-			}
-		}
-		return false;
-	}
-	
-	protected void removePolicySet(PolicySetType policySet) {
-		if (this.policySets.remove(policySet) == null) {
-			logger.warn("Failed to remove policy set from map: " + policySet);
-			return;
-		}
-		//
-		// Remove its objects from the other maps
-		//
-		this.removeTarget(policySet.getTarget());
-		this.removeObligations(policySet.getObligationExpressions());
-		this.removeAdvice(policySet.getAdviceExpressions());
-	}
-	
-	protected void removePolicy(PolicyType policy) {
-		if (this.policies.remove(policy) == null) {
-			logger.warn("Failed to remove policy from map: " + policy);
-			return;
-		}
-		//
-		// Remove its objects from the other maps
-		//
-		this.removeTarget(policy.getTarget());
-		this.removeObligations(policy.getObligationExpressions());
-		this.removeAdvice(policy.getAdviceExpressions());
-		this.removeVariables(policy.getCombinerParametersOrRuleCombinerParametersOrVariableDefinition());
-	}
-	
-	protected void removeVariables(List<Object> combinerParametersOrRuleCombinerParametersOrVariableDefinition) {
-		for (Object object : combinerParametersOrRuleCombinerParametersOrVariableDefinition) {
-			if (object instanceof VariableDefinitionType) {
-				this.variables.remove(object);
-			}
-		}
-	}
-
-	protected void removeRule(RuleType rule) {
-		if (this.rules.remove(rule) == null) {
-			logger.warn("Failed to remove rule from map: " + rule);
-			return;
-		}
-		//
-		// Remove its objects from the other maps
-		//
-		this.removeTarget(rule.getTarget());
-		this.removeObligations(rule.getObligationExpressions());
-		this.removeAdvice(rule.getAdviceExpressions());
-		if (rule.getCondition() != null) {
-			this.conditions.remove(rule.getCondition());
-		}
-	}
-	
-	protected void removeObligations(ObligationExpressionsType expressions) {
-		if (expressions == null) {
-			return;
-		}
-		for (ObligationExpressionType expression : expressions.getObligationExpression()) {
-			if (this.obligations.remove(expression) == null) {
-				logger.warn("Failed to remove obligation expression: " + expression);
-			}
-		}
-	}
-	
-	protected void removeAdvice(AdviceExpressionsType expressions) {
-		if (expressions == null) {
-			return;
-		}
-		for (AdviceExpressionType expression : expressions.getAdviceExpression()) {
-			if (this.advice.remove(expression) == null) {
-				logger.warn("Failed to remove advice expression: " + expression);
-			}
-		}
-	}
-	
-	protected void removeTarget(TargetType target) {
-		if (this.targets.remove(target) == null) {
-			logger.warn("Failed to remove target from map: " + target);
-			return;
-		}
-		for (AnyOfType anyof : target.getAnyOf()) {
-			this.removeAnyOf(anyof);
-		}
-	}
-	
-	protected void removeAnyOf(AnyOfType anyof) {
-		if (this.anyofs.remove(anyof) == null) {
-			logger.warn("failed to remove anyof from map: " + anyof);
-			return;
-		}
-		for (AllOfType allof : anyof.getAllOf()) {
-			this.removeAllOf(allof);
-		}
-	}
-	
-	protected void removeAllOf(AllOfType allof) {
-		if (this.allofs.remove(allof) == null) {
-			logger.warn("failed to remove allof from map: " + allof);
-			return;
-		}
-		for (MatchType match : allof.getMatch()) {
-			this.removeMatch(match);
-		}
-	}
-	
-	protected void removeMatch(MatchType match) {
-		if (this.matches.remove(match) == null) {
-			logger.warn("failed to remove match from map: " + match);
-			return;
-		}
-	}
-
-	@Override
-	public Object nextItemId(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("nextItemId: " + itemId);
-		}
-		return null;
-	}
-
-	@Override
-	public Object prevItemId(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("prevItemId: " + itemId);
-		}
-		return null;
-	}
-
-	@Override
-	public Object firstItemId() {
-		if (logger.isTraceEnabled()) {
-			logger.trace("firstItemId: ");
-		}
-		return this.root;
-	}
-
-	@Override
-	public Object lastItemId() {
-		if (logger.isTraceEnabled()) {
-			logger.trace("lastItemId: ");
-		}
-		return null;
-	}
-
-	@Override
-	public boolean isFirstId(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("isFirstId: " + itemId);
-		}
-		//
-		// The Oasis classes do not have equals implemented. So I am
-		// not too sure that using equals works.
-		//
-		if (this.root != null && itemId != null) {
-			return this.root.equals(itemId);
-		}
-		if (logger.isTraceEnabled()) {
-			logger.trace("item is NOT the first ID" +  itemId);
-		}
-		return false;
-	}
-
-	@Override
-	public boolean isLastId(Object itemId) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("isLastId: " + itemId);
-		}
-		return false;
-	}
-
-	@Override
-	public Object addItemAfter(Object previousItemId) throws UnsupportedOperationException {
-		throw new UnsupportedOperationException("Need to know what you want added. Please use addItemAfter(Object, Object) instead.");
-	}
-
-	@Override
-	public Item addItemAfter(Object previousItemId, Object newItemId) throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("addItemAfter: " + previousItemId + " new " + newItemId);
-		}
-		/*
-		if (newItemId instanceof PolicySetType) {
-			
-		}
-		//
-		// Get our parents
-		//
-		Object parentPreviousItem = this.getParent(previousItemId);
-		*/
-		return null;
-	}
-	
-	public Item moveAfterSibling(Object itemId, Object siblingId) throws UnsupportedOperationException {
-		if (logger.isTraceEnabled()) {
-			logger.trace("moveAfterSibling: " + itemId + " sibling " + siblingId);
-		}
-		//
-		// Get the parents, which should be the same
-		//
-		/*
-		Object itemParent = this.getParent(itemId);
-		Object siblingParent = this.getParent(siblingId);
-		if (itemParent == null) {
-			logger.error("can't move the root element");
-			return null;
-		}
-		if (itemParent != siblingParent) {
-			logger.error("parents are not the same");
-			return null;
-		}
-		if (itemId instanceof PolicySetType) {
-			assert(itemParent instanceof PolicySetType);
-			if (itemParent instanceof PolicySetType) {
-				if (siblingId instanceof PolicySetType || siblingId instanceof PolicyType) {
-					int index = ((PolicySetType) itemParent).getPolicySetOrPolicyOrPolicySetIdReference().indexOf(siblingId);
-					
-				}				
-			}
-		}
-		*/
-		return null;
-	}
-
-	/**
-	 * This class is returned to caller's to display the properties
-	 * for each policy object.
-	 * 
-	 * @author pameladragosh
-	 *
-	 */
-	public class PolicyItem implements Item {
-		private static final long serialVersionUID = 1L;
-		private final Object data;
-		
-		public PolicyItem(Object data) {
-			this.data = data;
-		}
-
-		public String getName() {
-			if (this.data instanceof RuleType) {
-				return "Rule";
-			}
-			if (this.data instanceof PolicyType) {
-				return "Policy";
-			}
-			if (this.data instanceof PolicySetType) {
-				return "Policy Set";
-			}
-			if (this.data instanceof TargetType) {
-				return "Target";
-			}
-			if (this.data instanceof AnyOfType) {
-				return "Any Of";
-			}
-			if (this.data instanceof AllOfType) {
-				return "All Of";
-			}
-			if (this.data instanceof MatchType) {
-				return "Match";
-			}
-			if (this.data instanceof ObligationExpressionType) {
-				return "Obligation";
-			}
-			if (this.data instanceof AdviceExpressionType) {
-				return "Advice";
-			}
-			if (this.data instanceof ConditionType) {
-				return "Condition";
-			}
-			if (this.data instanceof VariableDefinitionType) {
-				return "Variable";
-			}
-			return null;
-		}
-		
-		public String getId() {
-			if (this.data instanceof RuleType) {
-				return ((RuleType) this.data).getRuleId();
-			} 
-			if (this.data instanceof PolicyType) {
-				return ((PolicyType) this.data).getPolicyId();
-			}
-			if (this.data instanceof PolicySetType) {
-				return ((PolicySetType) this.data).getPolicySetId();
-			}
-			if (this.data instanceof ObligationExpressionType) {
-				return ((ObligationExpressionType) this.data).getObligationId();
-			}
-			if (this.data instanceof AdviceExpressionType) {
-				return ((AdviceExpressionType) this.data).getAdviceId();
-			}
-			/*
-			if (this.data instanceof TargetType) {
-				return this.data.toString();
-			}
-			if (this.data instanceof AnyOfType) {
-				return this.data.toString();
-			}
-			if (this.data instanceof AllOfType) {
-				return this.data.toString();
-			}
-			if (this.data instanceof MatchType) {
-				((MatchType) this.data).getMatchId();
-			}
-			*/
-			if (this.data instanceof VariableDefinitionType) {
-				((VariableDefinitionType) this.data).getVariableId();
-			}
-			return null;
-		}
-		
-		public String getShortId() {
-			String id = this.getId();
-			if (id == null) {
-				return null;
-			}
-			String[] parts = id.split("[:]");
-			
-			if (parts != null && parts.length > 0) {
-				return parts[parts.length - 1];
-			}
-			
-			return null;
-		}
-		
-		public String getDescription() {
-			if (this.data instanceof RuleType) {
-				return ((RuleType) this.data).getDescription();
-			} else if (this.data instanceof PolicyType) {
-				return ((PolicyType) this.data).getDescription();
-			} else if (this.data instanceof PolicySetType) {
-				return ((PolicySetType) this.data).getDescription();
-			} else if (this.data instanceof MatchType) {
-				StringBuilder builder = new StringBuilder();
-				AttributeValueType value = ((MatchType) this.data).getAttributeValue();
-				if (value != null) {
-					builder.append(value.getContent());
-					builder.append(" ");
-				}
-				String alg = this.getShortAlgorithm();
-				if (alg != null && alg.length() > 0) {
-					builder.append(alg);
-					builder.append(" ");
-				}
-				if (((MatchType) this.data).getAttributeDesignator() != null) {
-					builder.append(((MatchType) this.data).getAttributeDesignator().getAttributeId());
-				} else if (((MatchType) this.data).getAttributeSelector() != null) {
-					builder.append(((MatchType) this.data).getAttributeSelector().getContextSelectorId());
-				}
-				return builder.toString();
-			}
-			return null;
-		}
-		
-		public String getAlgorithm() {
-			if (this.data instanceof PolicyType) {
-				return ((PolicyType) this.data).getRuleCombiningAlgId();
-			}
-			if (this.data instanceof PolicySetType) {
-				return ((PolicySetType) this.data).getPolicyCombiningAlgId();
-			}
-			if (this.data instanceof RuleType) {
-				return ((RuleType) this.data).getEffect().toString();
-			}
-			if (this.data instanceof MatchType) {
-				return ((MatchType) this.data).getMatchId();
-			}
-			if (this.data instanceof ObligationExpressionType) {
-				return ((ObligationExpressionType) this.data).getFulfillOn().toString();
-			}
-			if (this.data instanceof AdviceExpressionType) {
-				return ((AdviceExpressionType) this.data).getAppliesTo().toString();
-			}
-			if (this.data instanceof ConditionType) {
-				return this.getRootExpressionFunction(((ConditionType) this.data).getExpression());
-			}
-			if (this.data instanceof VariableDefinitionType) {
-				//return this.getRootExpressionFunction(((VariableDefinitionType) this.data).getExpression());
-				return ((VariableDefinitionType) this.data).getVariableId();
-			}
-			return null;
-		}
-		
-		public String getShortAlgorithm() {
-			String algorithm = null;
-			if (this.data instanceof PolicyType) {
-				algorithm = ((PolicyType) this.data).getRuleCombiningAlgId();
-			}
-			if (this.data instanceof PolicySetType) {
-				algorithm = ((PolicySetType) this.data).getPolicyCombiningAlgId();
-			}
-			if (this.data instanceof RuleType) {
-				return ((RuleType) this.data).getEffect().toString();
-			}
-			if (this.data instanceof ObligationExpressionType) {
-				return ((ObligationExpressionType) this.data).getFulfillOn().toString();
-			}
-			if (this.data instanceof AdviceExpressionType) {
-				return ((AdviceExpressionType) this.data).getAppliesTo().toString();
-			}
-			if (this.data instanceof MatchType) {
-				algorithm = ((MatchType) this.data).getMatchId();
-			}
-			if (this.data instanceof ConditionType) {
-				algorithm = this.getRootExpressionFunction(((ConditionType) this.data).getExpression());
-				if (algorithm.startsWith("http")) {
-					return algorithm;
-				}
-			}
-			if (this.data instanceof VariableDefinitionType) {
-				//algorithm = this.getRootExpressionFunction(((VariableDefinitionType) this.data).getExpression());
-				return ((VariableDefinitionType) this.data).getVariableId();
-			}
-			if (algorithm != null) {
-				Iterable<String> fields = Splitter.on(':').trimResults().omitEmptyStrings().split(algorithm);
-				if (fields != null) {
-					String lastId = null;
-					for (String id : fields) {
-						lastId = id;
-					}
-					return lastId;
-				}
-			}
-			return null;
-		}
-		
-        public Resource getIcon() {
-			if (this.data instanceof PolicySetType) {
-				return new ThemeResource("../runo/icons/16/folder.png");
-			}
-			if (this.data instanceof RuleType) {
-				if (((RuleType) this.data).getEffect() == null) {
-					logger.warn("Rule has a null Effect");
-					return new ThemeResource("icons/deny-16.png");
-				}
-				if (((RuleType) this.data).getEffect() == EffectType.DENY) {
-					return new ThemeResource("icons/deny-16.png");
-				}
-				return new ThemeResource("icons/permit-16.png");
-			}
-			if (this.data instanceof PolicyType) {
-				return new ThemeResource("../runo/icons/16/document-txt.png");
-			}
-			if (this.data instanceof TargetType) {
-				return new ThemeResource("icons/target-green-16.png");
-			}
-			if (this.data instanceof ObligationExpressionType) {
-				return new ThemeResource("icons/obligation-16.png");
-			}
-			if (this.data instanceof AdviceExpressionType) {
-				return new ThemeResource("icons/advice-16.png");
-			}
-			if (this.data instanceof ConditionType) {
-				return new ThemeResource("icons/condition-16.png");
-			}
-			if (this.data instanceof VariableDefinitionType) {
-				return new ThemeResource("icons/variable-16.png");
-			}
-			return null;
-        }
-        
-        public String getStatus() {
-        	StringBuffer buffer = new StringBuffer();
-        	String a = this.getAlgorithm();
-        	//String id = this.getId();
-			if (this.data instanceof RuleType) {
-				RuleType rule = ((RuleType) this.data);
-				buffer.append("Rule");
-				EffectType effect = rule.getEffect();
-				if (effect == null) {
-					rule.setEffect(EffectType.PERMIT);
-				}
-				if (rule.getEffect() == EffectType.PERMIT) {
-					buffer.append(" (PERMIT)");
-				} else if (rule.getEffect() == EffectType.DENY) {
-					buffer.append(" (DENY)");
-				}
-			} else if (this.data instanceof PolicyType) {
-				buffer.append("Policy");
-			} else if (this.data instanceof PolicySetType) {
-				buffer.append("Policy Set");
-			}
-			/*
-			if (id != null) {
-				String[] ids = id.split("[:]");
-				if (ids.length > 0) {
-					buffer.append(" " + ids[ids.length - 1]);
-				}
-			}
-			*/
-			if (a != null) {
-				String[] algs = a.split("[:]");
-				if (algs.length > 0) {
-					buffer.append(" (" + algs[algs.length - 1] + ")");
-				}
-			}
-			/*
-			String d = this.getDescription();
-			if (d != null) {
-				buffer.append(" " + d);
-			}
-			*/
-			return buffer.toString();
-        }
-        
-        public Table getAttributes() {
-        	/*
-        	if (this.data instanceof MatchType) {
-        		
-        	}
-        	*/
-        	return null;
-        }
-        
-        protected	String	getRootExpressionFunction(JAXBElement<?> element) {
-        	if (element == null || element.getValue() == null) {
-        		return null;
-        	}
-        	Object value = element.getValue();
-        	if (value instanceof ApplyType) {
-        		return ((ApplyType) value).getFunctionId();
-        	}
-        	if (value instanceof AttributeValueType) {
-        		return ((AttributeValueType) value).getDataType();
-        	}
-        	if (value instanceof AttributeDesignatorType) {
-        		return ((AttributeDesignatorType) value).getAttributeId();
-        	}
-        	if (value instanceof AttributeSelectorType) {
-        		return ((AttributeSelectorType) value).getContextSelectorId();
-        	}
-        	if (value instanceof VariableReferenceType) {
-        		return "Variable=" + ((VariableReferenceType) value).getVariableId();
-        	}
-        	if (value instanceof FunctionType) {
-        		return ((FunctionType) value).getFunctionId();
-        	}
-        	return null;
-        }
-        
-		@Override
-		public Property<?> getItemProperty(Object id) {
-            return getContainerProperty(data, id);
-		}
-
-		@Override
-		public Collection<?> getItemPropertyIds() {
-            return getContainerPropertyIds();
-		}
-
-		@SuppressWarnings("rawtypes")
-		@Override
-		public boolean addItemProperty(Object id, Property property) throws UnsupportedOperationException {
-            throw new UnsupportedOperationException("Policy container does not support adding new properties");
-		}
-
-		@Override
-		public boolean removeItemProperty(Object id) throws UnsupportedOperationException {
-            throw new UnsupportedOperationException("Policy container does not support property removal");
-		}
-
-		@Override
-		public String toString() {
-			return this.getName();
-		}
-		
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/AdminNotification.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/AdminNotification.java
deleted file mode 100644
index 944c3c8..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/AdminNotification.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.util;
-
-import com.vaadin.ui.Notification;
-
-/**
- * A simple mechanism for displaying messages to the user.
- * 
- * At the moment this is a very thin layer on top of the Vaadin Notification class.
- * There are two reasons for this class existing:
- * 	- simplifying (slightly) the code, in that the type is in the method call just like logging
- * 	- this is a central point where all messages are done, which allows us to globally change how they are displayed if we wish.
- * 
- * @author glenngriffin
- *
- */
-public class AdminNotification  {
-	//
-	// PUBLIC STATIC METHODS
-	//
-	
-	public static void info(String caption) {
-		Notification.show(caption, Notification.Type.HUMANIZED_MESSAGE);
-	}
-
-	public static void warn(String caption) {
-		Notification.show(caption, Notification.Type.WARNING_MESSAGE);
-	}
-	
-	public static void error(String caption) {
-		Notification.show(caption, Notification.Type.ERROR_MESSAGE);
-	}
-	
-
-
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/JPAUtils.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/JPAUtils.java
deleted file mode 100644
index 72c8a85..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/JPAUtils.java
+++ /dev/null
@@ -1,406 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.util;
-
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeSelectorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.Category;
-import org.apache.openaz.xacml.admin.jpa.ConstraintType;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.jpa.FunctionDefinition;
-import org.apache.openaz.xacml.admin.jpa.Obadvice;
-import org.apache.openaz.xacml.admin.jpa.PIPType;
-import org.apache.openaz.xacml.admin.jpa.PolicyAlgorithms;
-import org.apache.openaz.xacml.admin.jpa.RuleAlgorithms;
-import org.apache.openaz.xacml.api.Identifier;
-import org.apache.openaz.xacml.api.XACML3;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.ui.UI;
-
-public class JPAUtils {
-	private static Log logger	= LogFactory.getLog(JPAUtils.class);
-	
-	private static final Object mapAccess = new Object();
-	private static Map<Datatype, List<FunctionDefinition>> mapDatatype2Function = null;
-	private static Map<String, FunctionDefinition> mapID2Function = null;
-	private static final Object booleanAccess = new Object();
-	private static Datatype booleanDatatype = null;
-	
-	public static Datatype getBooleanDatatype() {
-		synchronized(booleanAccess) {
-			if (booleanDatatype == null) {
-				booleanDatatype = JPAUtils.findDatatype(XACML3.ID_DATATYPE_BOOLEAN);
-			}
-			return booleanDatatype;
-		}
-	}
-	
-	public static AttributeDesignatorType	createDesignator(Attribute attribute) {
-		AttributeDesignatorType designator = new AttributeDesignatorType();
-		designator.setAttributeId(attribute.getXacmlId());
-		if (attribute.getCategoryBean() != null) {
-			designator.setCategory(attribute.getCategoryBean().getXacmlId());
-		} else {
-			logger.warn("No category bean");
-		}
-		if (attribute.getDatatypeBean() != null) {
-			designator.setDataType(attribute.getDatatypeBean().getXacmlId());
-		} else {
-			logger.warn("No datatype bean");
-		}
-		designator.setIssuer(attribute.getIssuer());
-		designator.setMustBePresent(attribute.isMustBePresent());
-		return designator;
-	}
-		
-	public static AttributeSelectorType	createSelector(Attribute attribute) {
-		AttributeSelectorType selector = new AttributeSelectorType();
-		selector.setContextSelectorId(attribute.getXacmlId());
-		selector.setPath(attribute.getSelectorPath());
-		if (attribute.getCategoryBean() != null) {
-			selector.setCategory(attribute.getCategoryBean().getXacmlId());
-		} else {
-			logger.warn("No category bean");
-		}
-		if (attribute.getDatatypeBean() != null) {
-			selector.setDataType(attribute.getDatatypeBean().getXacmlId());
-		} else {
-			logger.warn("No datatype bean");
-		}
-		selector.setMustBePresent(attribute.isMustBePresent());
-		return selector;
-	}
-	
-	public static Attribute createAttribute(AttributeDesignatorType designator) {
-		Attribute attribute = new Attribute();
-		attribute.setCategoryBean(JPAUtils.findCategory(designator.getCategory()));
-		attribute.setDatatypeBean(JPAUtils.findDatatype(designator.getDataType()));
-		attribute.setXacmlId(designator.getAttributeId());
-		attribute.setIssuer(designator.getIssuer());
-		attribute.setIsDesignator(true);
-		return attribute;
-	}
-	
-	public static Attribute createAttribute(AttributeSelectorType selector) {
-		Attribute attribute = new Attribute();
-		attribute.setCategoryBean(JPAUtils.findCategory(selector.getCategory()));
-		attribute.setDatatypeBean(JPAUtils.findDatatype(selector.getDataType()));
-		attribute.setXacmlId(selector.getContextSelectorId());
-		attribute.setSelectorPath(selector.getPath());
-		attribute.setIsDesignator(false);
-		return attribute;
-	}
-	
-	public static Attribute findAttribute(Attribute attribute) {
-		return JPAUtils.findAttribute(attribute.getCategoryBean(), attribute.getDatatypeBean(), attribute.getXacmlId());
-	}
-		
-	public static Attribute findAttribute(Category category, Datatype datatype, String attributeID) {
-		if (category == null || datatype == null | attributeID == null) {
-			return null;
-		}
-		return JPAUtils.findAttribute(category.getXacmlId(), datatype.getXacmlId(), attributeID);
-	}
-	
-	public static Attribute findAttribute(String category, String dataType, String attributeId) {
-		if (category == null || dataType == null | attributeId == null) {
-			return null;
-		}
-		JPAContainer<Attribute> attributes = ((XacmlAdminUI)UI.getCurrent()).getAttributes();
-		for (Object id : attributes.getItemIds()) {
-			Attribute a = attributes.getItem(id).getEntity();
-			if (a.getCategoryBean().getXacmlId().equals(category) &&
-						a.getDatatypeBean().getXacmlId().equals(dataType) &&
-						a.getXacmlId().equals(attributeId)) {
-				return a;
-			}
-		}
-		return null;
-	}
-
-	public static Category	findCategory(Identifier cat) {
-		JPAContainer<Category> categories = ((XacmlAdminUI)UI.getCurrent()).getCategories();
-		for (Object id : categories.getItemIds()) {
-			Category c = categories.getItem(id).getEntity();
-			if (c.getIdentifer().equals(cat)) {
-				return c;
-			}
-		}
-		return null;
-	}
-	
-	public static Category	findCategory(String cat) {
-		JPAContainer<Category> categories = ((XacmlAdminUI)UI.getCurrent()).getCategories();
-		for (Object id : categories.getItemIds()) {
-			Category c = categories.getItem(id).getEntity();
-			if (c.getIdentifer().stringValue().equals(cat)) {
-				return c;
-			}
-		}
-		return null;
-	}
-	
-	public static Datatype	findDatatype(Identifier dt) {
-		JPAContainer<Datatype> datatypes =  ((XacmlAdminUI)UI.getCurrent()).getDatatypes();
-		
-		for (Object id : datatypes.getItemIds()) {
-			Datatype d = datatypes.getItem(id).getEntity();
-			if (d.getIdentifer().equals(dt)) {
-				return d;
-			}
-		}		
-		return null;
-	}
-	
-	public static Datatype	findDatatype(String dt) {
-		JPAContainer<Datatype> datatypes =  ((XacmlAdminUI)UI.getCurrent()).getDatatypes();
-		
-		for (Object id : datatypes.getItemIds()) {
-			Datatype d = datatypes.getItem(id).getEntity();
-			if (d.getIdentifer().stringValue().equals(dt)) {
-				return d;
-			}
-		}		
-		return null;
-	}
-	
-	public static Datatype	findDatatype(int datatypeId) {
-		JPAContainer<Datatype> datatypes =  ((XacmlAdminUI)UI.getCurrent()).getDatatypes();
-		
-		for (Object id : datatypes.getItemIds()) {
-			Datatype d = datatypes.getItem(id).getEntity();
-			if (d.getId() == datatypeId) {
-				return d;
-			}
-		}		
-		return null;
-	}
-	
-	public static ConstraintType	findConstraintType(String type) {
-		JPAContainer<ConstraintType> types = ((XacmlAdminUI)UI.getCurrent()).getConstraintTypes();
-		for (Object id : types.getItemIds()) {
-			ConstraintType value = types.getItem(id).getEntity();
-			if (value.getConstraintType().equals(type)) {
-				return value;
-			}
-		}
-		return null;
-	}
-
-	public static FunctionDefinition findFunction(String functionId) {
-		if (functionId == null) {
-			throw new IllegalArgumentException("Cannot find a null function id");
-		}
-		JPAContainer<FunctionDefinition> functions = ((XacmlAdminUI)UI.getCurrent()).getFunctionDefinitions();
-		for (Object id : functions.getItemIds()) {
-			FunctionDefinition value = functions.getItem(id).getEntity();
-			if (value.getXacmlid().equals(functionId)) {
-				return value;
-			}
-		}
-		return null;
-	}
-	
-	public static PolicyAlgorithms findPolicyAlgorithm(String algorithm) {
-		if (algorithm == null) {
-			throw new IllegalArgumentException("Cannot find a null algorithm");
-		}
-		JPAContainer<PolicyAlgorithms> algorithms = ((XacmlAdminUI)UI.getCurrent()).getPolicyAlgorithms();
-		for (Object id : algorithms.getItemIds()) {
-			PolicyAlgorithms alg = algorithms.getItem(id).getEntity();
-			if (alg.getXacmlId().equals(algorithm)) {
-				return alg;
-			}
-		}
-		return null;
-	}
-	
-	public static RuleAlgorithms findRuleAlgorithm(String algorithm) {
-		if (algorithm == null) {
-			throw new IllegalArgumentException("Cannot find a null algorithm");
-		}
-		JPAContainer<RuleAlgorithms> algorithms = ((XacmlAdminUI)UI.getCurrent()).getRuleAlgorithms();
-		for (Object id : algorithms.getItemIds()) {
-			RuleAlgorithms alg = algorithms.getItem(id).getEntity();
-			if (alg.getXacmlId().equals(algorithm)) {
-				return alg;
-			}
-		}
-		return null;
-	}
-	
-	public static Obadvice findObligation(Identifier id, EffectType effect) {
-		if (id == null) {
-			return null;
-		}
-		return JPAUtils.findObligation(id.stringValue(), effect);
-	}
-	
-	public static Obadvice findObligation(String id, EffectType effect) {
-		JPAContainer<Obadvice> oa = ((XacmlAdminUI)UI.getCurrent()).getObadvice();
-		for (Object oaID : oa.getItemIds()) {
-			Obadvice obligation = oa.getItem(oaID).getEntity();
-			if (obligation.getType().equals(Obadvice.OBLIGATION) && 
-				obligation.getXacmlId().equals(id) &&
-				obligation.getFulfillOn().equals((effect == EffectType.PERMIT ? Obadvice.EFFECT_PERMIT : Obadvice.EFFECT_DENY))) {
-				return obligation;
-			}
-		}
-		return null;
-	}
-	
-	public static Obadvice findAdvice(Identifier id, EffectType effect) {
-		if (id == null) {
-			return null;
-		}
-		return JPAUtils.findAdvice(id.stringValue(), effect);
-	}
-	
-	public static Obadvice findAdvice(String id, EffectType effect) {
-		JPAContainer<Obadvice> oa = ((XacmlAdminUI)UI.getCurrent()).getObadvice();
-		for (Object oaID : oa.getItemIds()) {
-			Obadvice advice = oa.getItem(oaID).getEntity();
-			if (advice.getType().equals(Obadvice.ADVICE) && 
-				advice.getXacmlId().equals(id) &&
-				advice.getFulfillOn().equals((effect == EffectType.PERMIT ? Obadvice.EFFECT_PERMIT : Obadvice.EFFECT_DENY))) {
-				return advice;
-			}
-		}
-		return null;
-	}
-	
-	public static Attribute isStandardAttribute(Attribute attribute) {
-		return JPAUtils.isStandardAttribute(attribute.getCategoryBean(), attribute.getDatatypeBean(), attribute.getXacmlId());
-	}
-	
-	public static Attribute isStandardAttribute(Category categoryBean, Datatype datatypeBean, String xacmlId) {
-		if (categoryBean == null || datatypeBean == null || xacmlId == null) {
-			return null;
-		}
-		return JPAUtils.isStandardAttribute(categoryBean.getXacmlId(), datatypeBean.getXacmlId(), xacmlId);
-	}
-
-	public static Attribute	isStandardAttribute(String category, String datatype, String id) {
-		if (category == null || datatype == null || id == null) {
-			return null;
-		}
-		Category cat = JPAUtils.findCategory(category);
-		if (cat == null) {
-			return null;
-		}
-		Datatype dt = JPAUtils.findDatatype(datatype);
-		if (dt == null) {
-			return null;
-		}
-		Identifier identifier = null;
-		Iterator<Identifier> iter = XACMLConstants.STANDARD_ATTRIBUTES.iterator();
-		while (iter.hasNext()) {
-			Identifier i = iter.next();
-			if (i.stringValue().equals(id)) {
-				identifier = i;
-				break;
-			}
-		}
-		if (identifier == null) {
-			return null;
-		}
-		Attribute attribute = new Attribute();
-		attribute.setCategoryBean(cat);
-		attribute.setDatatypeBean(dt);
-		attribute.setXacmlId(identifier.stringValue());
-		return attribute;
-	}
-	
-	/**
-	 * Builds a map in memory of a functions return datatype to function definition. Useful in limiting the number
-	 * of SQL calls to DB especially when we don't expect these to change much.
-	 * 
-	 * @return - A HashMap of Datatype JPA Container ID's to FunctionDefinition objects
-	 */
-	public static Map<Datatype, List<FunctionDefinition>>	getFunctionDatatypeMap() {
-		
-		synchronized(mapAccess) {
-			if (mapDatatype2Function == null) {
-				buildFunctionMaps();
-			}
-		}
-		return mapDatatype2Function;
-	}
-	
-	public static Map<String, FunctionDefinition> getFunctionIDMap() {
-		synchronized(mapAccess) {
-			if (mapID2Function == null) {
-				buildFunctionMaps();
-			}
-		}
-		return mapID2Function;
-	}
-	
-	private static void buildFunctionMaps() {
-		mapDatatype2Function = new HashMap<Datatype, List<FunctionDefinition>>();
-		mapID2Function = new HashMap<String, FunctionDefinition>();
-		JPAContainer<FunctionDefinition> functions = ((XacmlAdminUI)UI.getCurrent()).getFunctionDefinitions();
-		for (Object id : functions.getItemIds()) {
-			FunctionDefinition value = functions.getItem(id).getEntity();
-			mapID2Function.put(value.getXacmlid(), value);
-			if (mapDatatype2Function.containsKey(value.getDatatypeBean()) == false) {
-				mapDatatype2Function.put(value.getDatatypeBean(), new ArrayList<FunctionDefinition>());
-			}
-			mapDatatype2Function.get(value.getDatatypeBean()).add(value);
-		}
-	}
-	
-	public static void dumpDatatype2FunctionMap() {
-		if (logger.isDebugEnabled() == false) {
-			return;
-		}
-		Map<Datatype, List<FunctionDefinition>> map = getFunctionDatatypeMap();
-		for (Datatype dt : map.keySet()) {
-			for (FunctionDefinition function: map.get(dt)) {
-				logger.debug("Datatype: " + (dt != null ? dt.getId() : "null") + " " + function.getXacmlid() + " (" + (function.getDatatypeBean() != null ? function.getDatatypeBean().getId() : "null") + ")");
-			}
-		}
-	}
-
-	public static PIPType	getPIPType(String typeName) {
-		for (Object id : ((XacmlAdminUI) UI.getCurrent()).getPIPTypes().getItemIds()) {
-			PIPType type = ((XacmlAdminUI) UI.getCurrent()).getPIPTypes().getItem(id).getEntity();
-			if (type.getType().equals(typeName)) {
-				return type;
-			}
-		}
-		return null;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/OnDemandFileDownloader.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/OnDemandFileDownloader.java
deleted file mode 100644
index ba8cd82..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/OnDemandFileDownloader.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.util;
-
-import java.io.IOException;
-
-import com.vaadin.server.FileDownloader;
-import com.vaadin.server.StreamResource;
-import com.vaadin.server.StreamResource.StreamSource;
-import com.vaadin.server.VaadinRequest;
-import com.vaadin.server.VaadinResponse;
-import com.vaadin.ui.UI;
-
-public class OnDemandFileDownloader extends FileDownloader {
-	private static final long serialVersionUID = 1L;
-	private final OnDemandStreamResource resource;
-
-	public interface OnDemandStreamResource extends StreamSource {
-		String getFilename ();
-	}
-
-  public OnDemandFileDownloader(OnDemandStreamResource resource) {
-		super(new StreamResource(resource, ""));
-		this.resource = resource;
-		if (this.resource == null) {
-			throw new NullPointerException("Can't send null resource");
-		}
-	}
-
-	@Override
-	public boolean handleConnectorRequest(VaadinRequest request,
-			VaadinResponse response, String path) throws IOException {
-		this.getResource().setFilename(this.resource.getFilename());
-		return super.handleConnectorRequest(request, response, path);
-	}
-
-	private StreamResource getResource() {
-		StreamResource resource = null;
-		UI.getCurrent().getSession().lock();
-		try {
-			resource = (StreamResource) this.getResource("dl");
-		} finally {
-			UI.getCurrent().getSession().unlock();
-		}
-		return resource;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/RESTfulPAPEngine.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/RESTfulPAPEngine.java
deleted file mode 100644
index 3958100..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/RESTfulPAPEngine.java
+++ /dev/null
@@ -1,495 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.util;
-
-
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.OutputStream;
-import java.io.UnsupportedEncodingException;
-import java.net.HttpURLConnection;
-import java.net.URL;
-import java.net.URLEncoder;
-import java.util.Collections;
-import java.util.Set;
-
-import org.apache.commons.io.IOUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.api.pap.PAPEngine;
-import org.apache.openaz.xacml.api.pap.PAPException;
-import org.apache.openaz.xacml.api.pap.PDP;
-import org.apache.openaz.xacml.api.pap.PDPGroup;
-import org.apache.openaz.xacml.api.pap.PDPPolicy;
-import org.apache.openaz.xacml.api.pap.PDPStatus;
-import org.apache.openaz.xacml.rest.XACMLRestProperties;
-import org.apache.openaz.xacml.std.pap.StdPDP;
-import org.apache.openaz.xacml.std.pap.StdPDPGroup;
-import org.apache.openaz.xacml.std.pap.StdPDPItemSetChangeNotifier;
-import org.apache.openaz.xacml.std.pap.StdPDPPolicy;
-import org.apache.openaz.xacml.std.pap.StdPDPStatus;
-import org.apache.openaz.xacml.util.XACMLProperties;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.fasterxml.jackson.databind.type.CollectionType;
-
-/**
- * Implementation of the PAPEngine interface that communicates with a PAP engine in a remote servlet
- * through a RESTful interface
- * 
- * @author glenngriffin
- *
- */
-public class RESTfulPAPEngine extends StdPDPItemSetChangeNotifier implements PAPEngine {
-	private static final Log logger	= LogFactory.getLog(RESTfulPAPEngine.class);
-
-	//
-	// URL of the PAP Servlet that this Admin Console talks to
-	//
-	private String papServletURLString;
-	
-	/**
-	 * Set up link with PAP Servlet and get our initial set of Groups
-	 * @throws Exception 
-	 */
-	public RESTfulPAPEngine (String myURLString) throws PAPException, IOException  {
-		//
-		// Get our URL to the PAP servlet
-		//
-		this.papServletURLString = XACMLProperties.getProperty(XACMLRestProperties.PROP_PAP_URL);
-		if (this.papServletURLString == null || this.papServletURLString.length() == 0) {
-			String message = "The property 'POLICYENGINE_ADMIN_ACTIVE' was not set during installation.  Admin Console cannot call PAP.";
-			logger.error(message);
-			throw new PAPException(message);
-		}
-
-		//
-		// register this Admin Console with the PAP Servlet to get updates
-		//
-		Object newURL = sendToPAP("PUT", null, null, null, "adminConsoleURL=" + myURLString);
-		if (newURL != null) {
-			// assume this was a re-direct and try again
-			logger.warn("Redirecting to '" + newURL + "'");
-			this.papServletURLString = (String)newURL;
-			newURL = sendToPAP("PUT", null, null, null, "adminConsoleURL=" + myURLString);
-			if (newURL != null) {
-				logger.error("Failed to redirect to " + this.papServletURLString);
-				throw new PAPException("Failed to register with PAP");
-			}
-		}
-	}
-	
-
-	//
-	// High-level commands used by the Admin Console code through the PAPEngine Interface
-	//
-	
-	@Override
-	public PDPGroup getDefaultGroup() throws PAPException {
-		PDPGroup newGroup = (PDPGroup)sendToPAP("GET", null, null, StdPDPGroup.class, "groupId=", "default=");
-		return newGroup;
-	}
-
-	@Override
-	public void SetDefaultGroup(PDPGroup group) throws PAPException {
-		sendToPAP("POST", null, null, null, "groupId=" + group.getId(), "default=true");
-	}
-
-	@Override
-	public Set<PDPGroup> getPDPGroups() throws PAPException {
-		Set<PDPGroup> newGroupSet;
-		newGroupSet = (Set<PDPGroup>) this.sendToPAP("GET", null, Set.class, StdPDPGroup.class, "groupId=");
-		return Collections.unmodifiableSet(newGroupSet);
-	}
-
-
-	@Override
-	public PDPGroup getGroup(String id) throws PAPException {
-		PDPGroup newGroup = (PDPGroup)sendToPAP("GET", null, null, StdPDPGroup.class, "groupId=" + id);
-		return newGroup;
-	}
-
-	@Override
-	public void newGroup(String name, String description)
-			throws PAPException, NullPointerException {
-		String escapedName = null;
-		String escapedDescription = null;
-		try {
-			escapedName = URLEncoder.encode(name, "UTF-8");
-			escapedDescription = URLEncoder.encode(description, "UTF-8");
-		} catch (UnsupportedEncodingException e) {
-			throw new PAPException("Unable to send name or description to PAP: " + e.getMessage());
-		}
-		
-		this.sendToPAP("POST", null, null, null, "groupId=", "groupName="+escapedName, "groupDescription=" + escapedDescription);
-	}
-	
-	
-	/**
-	 * Update the configuration on the PAP for a single Group.
-	 * 
-	 * @param group
-	 * @return
-	 * @throws PAPException
-	 */
-	public void updateGroup(PDPGroup group) throws PAPException {
-
-		try {
-			
-			//
-			// ASSUME that all of the policies mentioned in this group are already located in the correct directory on the PAP!
-			//
-			// Whenever a Policy is added to the group, that file must be automatically copied to the PAP from the Workspace.
-			// 
-			
-			
-//			// Copy all policies from the local machine's workspace to the PAP's PDPGroup directory.
-//			// This is not efficient since most of the policies will already exist there.
-//			// However, the policy files are (probably!) not too huge, and this is a good way to ensure that any corrupted files on the PAP get refreshed.
-//			
-//TODO WRONG!!!!	The policy.getStream() is based on the location in the PAP directory, not the Workspace.
-//TODO 
-//			for (PDPPolicy policy : group.getPolicies()) {
-//				try (InputStream is = policy.getStream()) {
-//				copyFile(policy.getId(), group, is);
-//				}
-//			}
-			
-			// now update the group object on the PAP
-			
-			sendToPAP("PUT", group, null, null, "groupId=" + group.getId());
-		} catch (Exception e) {
-			String message = "Unable to PUT policy '" + group.getId() + "', e:" + e;
-			logger.error(message, e);
-			throw new PAPException(message);
-		}
-	}
-	
-	
-	@Override
-	public void removeGroup(PDPGroup group, PDPGroup newGroup)
-			throws PAPException, NullPointerException {
-		String moveToGroupString = null;
-		if (newGroup != null) {
-			moveToGroupString = "movePDPsToGroupId=" + newGroup.getId();
-		}
-		sendToPAP("DELETE", null, null, null, "groupId=" + group.getId(), moveToGroupString);
-	}
-	
-	@Override
-	public PDPGroup getPDPGroup(PDP pdp) throws PAPException {
-		return getPDPGroup(pdp.getId());
-	}
-
-	@Override
-	public PDPGroup getPDPGroup(String pdpId) throws PAPException {
-		PDPGroup newGroup = (PDPGroup)sendToPAP("GET", null, null, StdPDPGroup.class, "groupId=", "pdpId=" + pdpId, "getPDPGroup=");
-		return newGroup;
-	}
-
-	@Override
-	public PDP getPDP(String pdpId) throws PAPException {
-		PDP newPDP = (PDP)sendToPAP("GET", null, null, StdPDP.class, "groupId=", "pdpId=" + pdpId);
-		return newPDP;
-	}
-
-	@Override
-	public void newPDP(String id, PDPGroup group, String name, String description) throws PAPException,
-			NullPointerException {
-		StdPDP newPDP = new StdPDP(id, name, description);
-		sendToPAP("PUT", newPDP, null, null, "groupId=" + group.getId(), "pdpId=" + id);
-	}
-
-	
-	@Override
-	public void movePDP(PDP pdp, PDPGroup newGroup) throws PAPException {
-		sendToPAP("POST", null, null, null, "groupId=" + newGroup.getId(), "pdpId=" + pdp.getId());
-	}
-
-	@Override
-	public void updatePDP(PDP pdp) throws PAPException {
-		PDPGroup group = getPDPGroup(pdp);
-		sendToPAP("PUT", pdp, null, null, "groupId=" + group.getId(), "pdpId=" + pdp.getId());
-	}
-	
-	@Override
-	public void removePDP(PDP pdp) throws PAPException {
-		PDPGroup group = getPDPGroup(pdp);
-		sendToPAP("DELETE", null, null, null, "groupId=" + group.getId(), "pdpId=" + pdp.getId());
-	}
-
-	
-
-	@Override
-	public void publishPolicy(String id, String name, boolean isRoot,
-			InputStream policy, PDPGroup group) throws PAPException {
-		
-//TODO - this method should take as input a Policy object, add it to the group, then call updateGroup
-//TODO - ?? Where does the Policy object (with the version info) get created?
-
-		// copy the (one) file into the target directory on the PAP servlet
-		copyFile(id, group, policy);
-		
-		// adjust the local copy of the group to include the new policy
-		PDPPolicy pdpPolicy = new StdPDPPolicy(id, isRoot, name);
-		group.getPolicies().add(pdpPolicy);
-		
-		// tell the PAP servlet to include the policy in the configuration
-		updateGroup(group);
-	}
-	
-	
-	
-	/**
-	 * Copy a single Policy file from the input stream to the PAP Servlet.
-	 * Either this works (silently) or it throws an exception.
-	 * 
-	 * @param policyId
-	 * @param group
-	 * @param policy
-	 * @return
-	 * @throws PAPException
-	 */
-	public void copyFile(String policyId, PDPGroup group, InputStream policy) throws PAPException {
-		// send the policy file to the PAP Servlet
-		try {
-			sendToPAP("POST", policy, null, null, "groupId=" + group.getId(), "policyId="+policyId);
-		} catch (Exception e) {
-			String message = "Unable to PUT policy '" + policyId + "', e:" + e;
-			logger.error(message, e);
-			throw new PAPException(message);
-		}
-	}
-	
-
-	@Override
-	public void	copyPolicy(PDPPolicy policy, PDPGroup group) throws PAPException {
-		if (policy == null || group == null) {
-			throw new PAPException("Null input policy="+policy+"  group="+group);
-		}
-		try (InputStream is = new FileInputStream(new File(policy.getLocation())) ) {
-			copyFile(policy.getId(), group, is );
-		} catch (Exception e) {
-			String message = "Unable to PUT policy '" + policy.getId() + "', e:" + e;
-			logger.error(message, e);
-			throw new PAPException(message);
-		}
-	}
-
-
-	
-	
-	@Override
-	public void	removePolicy(PDPPolicy policy, PDPGroup group) throws PAPException {
-		throw new PAPException("NOT IMPLEMENTED");
-
-	}
-
-	
-	
-	/**
-	 * Special operation - Similar to the normal PAP operations but this one contacts the PDP directly
-	 * to get detailed status info.
-	 * 
-	 * @param pdp
-	 * @return
-	 * @throws PAPException 
-	 */
-	@Override
-	public PDPStatus getStatus(PDP pdp) throws PAPException {
-		StdPDPStatus status = (StdPDPStatus)sendToPAP("GET", pdp, null, StdPDPStatus.class);
-		return status;
-	}
-	
-	
-	
-	
-	//
-	// Internal Operations called by the PAPEngine Interface methods
-	//
-	
-	/**
-	 * Send a request to the PAP Servlet and get the response.
-	 * 
-	 * The content is either an InputStream to be copied to the Request OutputStream
-	 * 	OR it is an object that is to be encoded into JSON and pushed into the Request OutputStream.
-	 * 
-	 * The Request parameters may be encoded in multiple "name=value" sets, or parameters may be combined by the caller.
-	 * 
-	 * @param method
-	 * @param content	- EITHER an InputStream OR an Object to be encoded in JSON
-	 * @param collectionTypeClass
-	 * @param responseContentClass
-	 * @param parameters
-	 * @return
-	 * @throws Exception
-	 */
-	private Object sendToPAP(String method, Object content, Class collectionTypeClass, Class responseContentClass, String... parameters ) throws PAPException {
-		HttpURLConnection connection = null;
-		try {
-			String fullURL = papServletURLString;
-			if (parameters != null && parameters.length > 0) {
-				String queryString = "";
-				for (String p : parameters) {
-					queryString += "&" + p;
-				}
-				fullURL += "?" + queryString.substring(1);
-			}
-			
-			// special case - Status (actually the detailed status) comes from the PDP directly, not the PAP
-			if (method.equals("GET") &&
-					content instanceof PDP &&
-					responseContentClass == StdPDPStatus.class) {
-				// Adjust the url and properties appropriately
-				fullURL = ((PDP)content).getId() + "?type=Status";
-				content = null;
-			}
-			
-			
-			URL url = new URL(fullURL);
-
-			//
-			// Open up the connection
-			//
-			connection = (HttpURLConnection)url.openConnection();
-			//
-			// Setup our method and headers
-			//
-            connection.setRequestMethod(method);
-//				connection.setRequestProperty("Accept", "text/x-java-properties");
-//	            connection.setRequestProperty("Content-Type", "text/x-java-properties");
-            connection.setUseCaches(false);
-            //
-            // Adding this in. It seems the HttpUrlConnection class does NOT
-            // properly forward our headers for POST re-direction. It does so
-            // for a GET re-direction.
-            //
-            // So we need to handle this ourselves.
-            //
-            connection.setInstanceFollowRedirects(false);
-			connection.setDoOutput(true);
-			connection.setDoInput(true);
-			if (content != null) {
-				if (content instanceof InputStream) {
-		    		try {
-		    			//
-		    			// Send our current policy configuration
-		    			//
-		    			try (OutputStream os = connection.getOutputStream()) {
-		    				int count = IOUtils.copy((InputStream)content, os);
-		    				if (logger.isDebugEnabled()) {
-		    					logger.debug("copied to output, bytes="+count);
-		    				}
-		    			}
-		    		} catch (Exception e) {
-		    			logger.error("Failed to write content in '" + method + "'", e);
-		    			throw e;
-		    		}
-				} else {
-					// The content is an object to be encoded in JSON
-		            ObjectMapper mapper = new ObjectMapper();
-		            mapper.writeValue(connection.getOutputStream(),  content);
-				}
-			}
-            //
-            // Do the connect
-            //
-            connection.connect();
-            if (connection.getResponseCode() == 204) {
-            	logger.info("Success - no content.");
-            	return null;
-            } else if (connection.getResponseCode() == 200) {
-            	logger.info("Success. We have a return object.");
-            	
-            	// get the response content into a String
-            	String json = null;
-    			// read the inputStream into a buffer (trick found online scans entire input looking for end-of-file)
-    		    java.util.Scanner scanner = new java.util.Scanner(connection.getInputStream());
-    		    scanner.useDelimiter("\\A");
-    		    json =  scanner.hasNext() ? scanner.next() : "";
-    		    scanner.close();
-    		    logger.info("JSON response from PAP: " + json);
-            	
-            	// convert Object sent as JSON into local object
-	            ObjectMapper mapper = new ObjectMapper();
-	            
-	            if (collectionTypeClass != null) {
-	            	// collection of objects expected
-	            	final CollectionType javaType = 
-	            	      mapper.getTypeFactory().constructCollectionType(collectionTypeClass, responseContentClass);
-
-	            	Object objectFromJSON = mapper.readValue(json, javaType);
-					return objectFromJSON;
-	            } else {
-	            	// single value object expected
-		            Object objectFromJSON = mapper.readValue(json, responseContentClass);
-					return objectFromJSON;
-	            }
-
-            } else if (connection.getResponseCode() >= 300 && connection.getResponseCode()  <= 399) {
-            	// redirection
-            	String newURL = connection.getHeaderField("Location");
-            	if (newURL == null) {
-            		logger.error("No Location header to redirect to when response code="+connection.getResponseCode());
-            		throw new IOException("No redirect Location header when response code="+connection.getResponseCode());
-            	}
-            	int qIndex = newURL.indexOf("?");
-            	if (qIndex > 0) {
-            		newURL = newURL.substring(0, qIndex);
-            	}
-            	logger.info("Redirect seen.  Redirecting " + fullURL + " to " + newURL);
-            	return newURL;
-            } else {
-            	logger.warn("Unexpected response code: " + connection.getResponseCode() + "  message: " + connection.getResponseMessage());
-            	throw new IOException("Server Response: " + connection.getResponseCode() + ": " + connection.getResponseMessage());
-            }
-
-		} catch (Exception e) {
-			logger.error("HTTP Request/Response to PAP: " + e,e);
-			throw new PAPException("Request/Response threw :" + e);
-		} finally {
-			// cleanup the connection
-				if (connection != null) {
-				try {
-					// For some reason trying to get the inputStream from the connection
-					// throws an exception rather than returning null when the InputStream does not exist.
-					InputStream is = null;
-					try {
-						is = connection.getInputStream();
-					} catch (Exception e1) { //NOPMD
-						// ignore this
-					}
-					if (is != null) {
-						is.close();
-					}
-
-				} catch (IOException ex) {
-					logger.error("Failed to close connection: " + ex, ex);
-				}
-				connection.disconnect();
-			}
-		}
-	}
-}
-
-
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/XACMLConstants.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/XACMLConstants.java
deleted file mode 100644
index 28bf377..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/XACMLConstants.java
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.util;
-
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.openaz.xacml.api.Identifier;
-import org.apache.openaz.xacml.api.XACML3;
-
-public class XACMLConstants {
-
-	public static final Set<Identifier> SUBJECT_CATEGORIES = new HashSet<Identifier>();
-	public static final Set<Identifier> ACTION_CATEGORIES = new HashSet<Identifier>();
-	public static final Set<Identifier> RESOURCE_CATEGORIES = new HashSet<Identifier>();
-	public static final Set<Identifier> ENVIRONMENT_CATEGORIES = new HashSet<Identifier>();
-	
-	public static final Set<Identifier> CATEGORIES = new HashSet<Identifier>();
-	static {
-		SUBJECT_CATEGORIES.addAll(Arrays.asList(XACML3.ID_SUBJECT_CATEGORY_ACCESS_SUBJECT,
-												XACML3.ID_SUBJECT_CATEGORY_CODEBASE,
-												XACML3.ID_SUBJECT_CATEGORY_INTERMEDIARY_SUBJECT,
-												XACML3.ID_SUBJECT_CATEGORY_RECIPIENT_SUBJECT,
-												XACML3.ID_SUBJECT_CATEGORY_REQUESTING_MACHINE)
-												);
-		
-		ACTION_CATEGORIES.addAll(Arrays.asList(
-												XACML3.ID_ATTRIBUTE_CATEGORY_ACTION)
-												);
-		
-		RESOURCE_CATEGORIES.addAll(Arrays.asList(
-												XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE)
-												);
-		
-		ENVIRONMENT_CATEGORIES.addAll(Arrays.asList(
-												XACML3.ID_ATTRIBUTE_CATEGORY_ENVIRONMENT)
-												);
-		
-		CATEGORIES.addAll(SUBJECT_CATEGORIES);
-		CATEGORIES.addAll(ACTION_CATEGORIES);
-		CATEGORIES.addAll(RESOURCE_CATEGORIES);
-		CATEGORIES.addAll(ENVIRONMENT_CATEGORIES);
-		
-	}
-	public static final Set<Identifier> DATATYPES = new HashSet<Identifier>();
-	static {
-		DATATYPES.addAll(Arrays.asList(XACML3.ID_DATATYPE_STRING,
-										XACML3.ID_DATATYPE_BOOLEAN,
-										XACML3.ID_DATATYPE_INTEGER,
-										XACML3.ID_DATATYPE_DOUBLE,
-										XACML3.ID_DATATYPE_TIME,
-										XACML3.ID_DATATYPE_DATE,
-										XACML3.ID_DATATYPE_DATETIME,
-										XACML3.ID_DATATYPE_DAYTIMEDURATION,
-										XACML3.ID_DATATYPE_YEARMONTHDURATION,
-										XACML3.ID_DATATYPE_ANYURI,
-										XACML3.ID_DATATYPE_HEXBINARY,
-										XACML3.ID_DATATYPE_BASE64BINARY,
-										XACML3.ID_DATATYPE_RFC822NAME,
-										XACML3.ID_DATATYPE_X500NAME,
-										XACML3.ID_DATATYPE_IPADDRESS,
-										XACML3.ID_DATATYPE_DNSNAME));
-	}
-	
-	public static final Set<Identifier> POLICY_ALGORITHMS = new HashSet<Identifier>();
-	static {
-		POLICY_ALGORITHMS.addAll(Arrays.asList(
-				XACML3.ID_POLICY_DENY_OVERRIDES,
-				XACML3.ID_POLICY_DENY_UNLESS_PERMIT,
-				XACML3.ID_POLICY_FIRST_APPLICABLE,
-				XACML3.ID_POLICY_ON_PERMIT_APPLY_SECOND,
-				XACML3.ID_POLICY_ONLY_ONE_APPLICABLE,
-				XACML3.ID_POLICY_ORDERED_DENY_OVERRIDES,
-				XACML3.ID_POLICY_ORDERED_PERMIT_OVERRIDES,
-				XACML3.ID_POLICY_PERMIT_OVERRIDES,
-				XACML3.ID_POLICY_PERMIT_UNLESS_DENY
-				));
-	}
-	
-	public static final Set<Identifier> RULE_ALGORITHMS = new HashSet<Identifier>();
-	static {
-		RULE_ALGORITHMS.addAll(Arrays.asList(
-				XACML3.ID_RULE_DENY_OVERRIDES,
-				XACML3.ID_RULE_DENY_UNLESS_PERMIT,
-				XACML3.ID_RULE_FIRST_APPLICABLE,
-				XACML3.ID_RULE_ONLY_ONE_APPLICABLE,
-				XACML3.ID_RULE_ORDERED_DENY_OVERRIDES,
-				XACML3.ID_RULE_ORDERED_PERMIT_OVERRIDES,
-				XACML3.ID_RULE_PERMIT_OVERRIDES,
-				XACML3.ID_RULE_PERMIT_UNLESS_DENY
-				));
-	}
-
-	public static final Set<Identifier> STANDARD_ATTRIBUTES = new HashSet<Identifier>();
-	static {
-		STANDARD_ATTRIBUTES.addAll(Arrays.asList(
-				XACML3.ID_SUBJECT_SUBJECT_ID,
-				XACML3.ID_SUBJECT_SUBJECT_ID_QUALIFIER,
-				XACML3.ID_SUBJECT_KEY_INFO,
-				XACML3.ID_SUBJECT_AUTHENTICATION_TIME,
-				XACML3.ID_SUBJECT_AUTHENTICATION_METHOD,
-				XACML3.ID_SUBJECT_REQUEST_TIME,
-				XACML3.ID_SUBJECT_SESSION_START_TIME,
-				XACML3.ID_SUBJECT_AUTHN_LOCALITY_IP_ADDRESS,
-				XACML3.ID_SUBJECT_AUTHN_LOCALITY_DNS_NAME,
-				XACML3.ID_SUBJECT_ROLE,
-				XACML3.ID_ACTION_ACTION_ID,
-				XACML3.ID_ACTION_IMPLIED_ACTION,
-				XACML3.ID_RESOURCE_RESOURCE_ID,
-				XACML3.ID_RESOURCE_RESOURCE_LOCATION,
-				XACML3.ID_RESOURCE_SIMPLE_FILE_NAME,
-				XACML3.ID_ENVIRONMENT_CURRENT_DATE,
-				XACML3.ID_ENVIRONMENT_CURRENT_TIME,
-				XACML3.ID_ENVIRONMENT_CURRENT_DATETIME
-				));
-	}
-	
-	public static final Map<Identifier, Set<Identifier>> MAP_STANDARD_CATEGORIES = new HashMap<Identifier, Set<Identifier>>();
-	static {
-		MAP_STANDARD_CATEGORIES.put(XACML3.ID_SUBJECT_CATEGORY_ACCESS_SUBJECT, new HashSet<Identifier>(Arrays.asList(
-				XACML3.ID_SUBJECT_SUBJECT_ID,
-				XACML3.ID_SUBJECT_SUBJECT_ID_QUALIFIER,
-				XACML3.ID_SUBJECT_KEY_INFO,
-				XACML3.ID_SUBJECT_AUTHENTICATION_TIME,
-				XACML3.ID_SUBJECT_AUTHENTICATION_METHOD,
-				XACML3.ID_SUBJECT_REQUEST_TIME,
-				XACML3.ID_SUBJECT_SESSION_START_TIME,
-				XACML3.ID_SUBJECT_AUTHN_LOCALITY_IP_ADDRESS,
-				XACML3.ID_SUBJECT_AUTHN_LOCALITY_DNS_NAME,
-				XACML3.ID_SUBJECT_ROLE
-				)));
-		MAP_STANDARD_CATEGORIES.put(XACML3.ID_SUBJECT_CATEGORY_CODEBASE, new HashSet<Identifier>(Arrays.asList(
-				XACML3.ID_SUBJECT_SUBJECT_ID,
-				XACML3.ID_SUBJECT_SUBJECT_ID_QUALIFIER,
-				XACML3.ID_SUBJECT_KEY_INFO,
-				XACML3.ID_SUBJECT_AUTHENTICATION_TIME,
-				XACML3.ID_SUBJECT_AUTHENTICATION_METHOD,
-				XACML3.ID_SUBJECT_REQUEST_TIME,
-				XACML3.ID_SUBJECT_SESSION_START_TIME,
-				XACML3.ID_SUBJECT_AUTHN_LOCALITY_IP_ADDRESS,
-				XACML3.ID_SUBJECT_AUTHN_LOCALITY_DNS_NAME,
-				XACML3.ID_SUBJECT_ROLE
-				)));
-		MAP_STANDARD_CATEGORIES.put(XACML3.ID_SUBJECT_CATEGORY_INTERMEDIARY_SUBJECT, new HashSet<Identifier>(Arrays.asList(
-				XACML3.ID_SUBJECT_SUBJECT_ID,
-				XACML3.ID_SUBJECT_SUBJECT_ID_QUALIFIER,
-				XACML3.ID_SUBJECT_KEY_INFO,
-				XACML3.ID_SUBJECT_AUTHENTICATION_TIME,
-				XACML3.ID_SUBJECT_AUTHENTICATION_METHOD,
-				XACML3.ID_SUBJECT_REQUEST_TIME,
-				XACML3.ID_SUBJECT_SESSION_START_TIME,
-				XACML3.ID_SUBJECT_AUTHN_LOCALITY_IP_ADDRESS,
-				XACML3.ID_SUBJECT_AUTHN_LOCALITY_DNS_NAME,
-				XACML3.ID_SUBJECT_ROLE
-				)));
-		MAP_STANDARD_CATEGORIES.put(XACML3.ID_SUBJECT_CATEGORY_RECIPIENT_SUBJECT, new HashSet<Identifier>(Arrays.asList(
-				XACML3.ID_SUBJECT_SUBJECT_ID,
-				XACML3.ID_SUBJECT_SUBJECT_ID_QUALIFIER,
-				XACML3.ID_SUBJECT_KEY_INFO,
-				XACML3.ID_SUBJECT_AUTHENTICATION_TIME,
-				XACML3.ID_SUBJECT_AUTHENTICATION_METHOD,
-				XACML3.ID_SUBJECT_REQUEST_TIME,
-				XACML3.ID_SUBJECT_SESSION_START_TIME,
-				XACML3.ID_SUBJECT_AUTHN_LOCALITY_IP_ADDRESS,
-				XACML3.ID_SUBJECT_AUTHN_LOCALITY_DNS_NAME,
-				XACML3.ID_SUBJECT_ROLE
-				)));
-		MAP_STANDARD_CATEGORIES.put(XACML3.ID_SUBJECT_CATEGORY_REQUESTING_MACHINE, new HashSet<Identifier>(Arrays.asList(
-				XACML3.ID_SUBJECT_SUBJECT_ID,
-				XACML3.ID_SUBJECT_SUBJECT_ID_QUALIFIER,
-				XACML3.ID_SUBJECT_KEY_INFO,
-				XACML3.ID_SUBJECT_AUTHENTICATION_TIME,
-				XACML3.ID_SUBJECT_AUTHENTICATION_METHOD,
-				XACML3.ID_SUBJECT_REQUEST_TIME,
-				XACML3.ID_SUBJECT_SESSION_START_TIME,
-				XACML3.ID_SUBJECT_AUTHN_LOCALITY_IP_ADDRESS,
-				XACML3.ID_SUBJECT_AUTHN_LOCALITY_DNS_NAME,
-				XACML3.ID_SUBJECT_ROLE
-				)));
-		MAP_STANDARD_CATEGORIES.put(XACML3.ID_ATTRIBUTE_CATEGORY_ACTION, new HashSet<Identifier>(Arrays.asList(
-				XACML3.ID_ACTION_ACTION_ID,
-				XACML3.ID_ACTION_IMPLIED_ACTION
-				)));
-		MAP_STANDARD_CATEGORIES.put(XACML3.ID_ATTRIBUTE_CATEGORY_RESOURCE, new HashSet<Identifier>(Arrays.asList(
-				XACML3.ID_RESOURCE_RESOURCE_ID,
-				XACML3.ID_RESOURCE_RESOURCE_LOCATION,
-				XACML3.ID_RESOURCE_SIMPLE_FILE_NAME
-				)));
-		MAP_STANDARD_CATEGORIES.put(XACML3.ID_ATTRIBUTE_CATEGORY_ENVIRONMENT, new HashSet<Identifier>(Arrays.asList(
-				XACML3.ID_ENVIRONMENT_CURRENT_DATE,
-				XACML3.ID_ENVIRONMENT_CURRENT_TIME,
-				XACML3.ID_ENVIRONMENT_CURRENT_DATETIME
-				)));
-	}
-	
-	public static String extractShortName(String xacmlID) {
-		if (xacmlID == null) {
-			return null;
-		}
-		if (xacmlID.startsWith("http:")) {
-			String [] parts = xacmlID.split("[#]");
-			if (parts != null && parts.length > 0) {
-				return parts[parts.length - 1];
-			}
-			return null;
-		}
-		if (xacmlID.startsWith("urn") || xacmlID.contains(":")) {
-			String[] parts = xacmlID.split("[:]");
-			
-			if (parts != null && parts.length > 0) {
-				return parts[parts.length - 1];
-			}
-		}	
-		return null;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/XACMLFunctionValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/XACMLFunctionValidator.java
deleted file mode 100644
index 7ef7e60..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/XACMLFunctionValidator.java
+++ /dev/null
@@ -1,506 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.util;
-
-import java.util.List;
-
-import javax.xml.bind.JAXBElement;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.jpa.FunctionArgument;
-import org.apache.openaz.xacml.admin.jpa.FunctionDefinition;
-import org.apache.openaz.xacml.api.XACML3;
-import org.apache.openaz.xacml.std.IdentifierImpl;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ApplyType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeAssignmentExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeSelectorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ConditionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.FunctionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableDefinitionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableReferenceType;
-
-public class XACMLFunctionValidator {
-	private static Log logger	= LogFactory.getLog(XACMLFunctionValidator.class);
-	
-	public static boolean	validNumberOfArguments(ApplyType apply) {
-		try {
-			//
-			// Sanity check
-			//
-			if (apply == null) {
-				throw new IllegalArgumentException("Must supply a non-null apply object.");
-			}
-			//
-			// Get the function
-			//
-			FunctionDefinition function = JPAUtils.getFunctionIDMap().get(apply.getFunctionId());
-			if (function == null) {
-				throw new Exception("Invalid function id: " + apply.getFunctionId());
-			}
-			//
-			// Now check argument list, do we have the minimum?
-			//
-			List<JAXBElement<?>> applyArgs = apply.getExpression();
-			if (applyArgs.isEmpty()) {
-				//
-				// May not need any args
-				//
-				if (function.getArgLb() > 0) {
-					throw new Exception ("Number of Args mismatch, expecting at least " + 
-							function.getArgLb() + " arguments but have zero.");
-				}
-			} else {
-				if (applyArgs.size() < function.getArgLb()) {
-					throw new Exception ("Number of Args mismatch, expecting at least " + 
-										function.getArgLb() + " arguments but have " + applyArgs.size());
-				}
-			}
-			//
-			// Is there an upper bound?
-			//
-			if (function.getArgUb() != -1 && applyArgs.size() != function.getArgUb()) {
-				throw new Exception ("Number of Args mismatch, expecting at most " + 
-						function.getArgUb() + " arguments but have " + applyArgs.size());
-			}
-		} catch (Exception e) {
-			logger.error("Number of arguments incorrect: " + e);
-			return false;
-		}
-		return true;
-	}
-	
-	public static boolean	canHaveMoreArguments(ConditionType condition) {
-		if (condition.getExpression() == null || condition.getExpression().getValue() == null) {
-			return true;
-		}
-		Object expression = condition.getExpression().getValue();
-		if (expression instanceof ApplyType) {
-			return XACMLFunctionValidator.canHaveMoreArguments((ApplyType) expression);
-		}
-		return false;
-	}
-	
-	public static boolean canHaveMoreArguments(VariableDefinitionType variable) {
-		if (variable.getExpression() == null || variable.getExpression().getValue() == null) {
-			return true;
-		}
-		Object expression = variable.getExpression().getValue();
-		if (expression instanceof ApplyType) {
-			return XACMLFunctionValidator.canHaveMoreArguments((ApplyType) expression);
-		}
-		return false;
-	}
-	
-	public static boolean canHaveMoreArguments(AttributeAssignmentExpressionType assignment) {
-		if (assignment.getExpression() == null || assignment.getExpression().getValue() == null) {
-			return true;
-		}
-		Object expression = assignment.getExpression().getValue();
-		if (expression instanceof ApplyType) {
-			return XACMLFunctionValidator.canHaveMoreArguments((ApplyType) expression);
-		}
-		return false;
-	}
-	
-	public static boolean	canHaveMoreArguments(ApplyType apply) {
-		//
-		// Sanity check
-		//
-		if (apply == null) {
-			throw new IllegalArgumentException("Must supply a non-null apply object.");
-		}
-		//
-		// Get the function
-		//
-		FunctionDefinition function = JPAUtils.getFunctionIDMap().get(apply.getFunctionId());
-		if (function == null) {
-			throw new IllegalArgumentException("Invalid function id: " + apply.getFunctionId());
-		}
-		//
-		// Is there no upper bound?
-		//
-		if (function.getArgUb() == -1) {
-			//
-			// No limit to the number of arguments
-			//
-			return true;
-		}
-		//
-		// There is an upper bound - have we met it?
-		//
-		List<JAXBElement<?>> applyArgs = apply.getExpression();
-		if (applyArgs.size() < function.getArgUb()) {
-			//
-			// We have not met the upper bound, so yes we can
-			// add more arguments.
-			//
-			return true;
-		}
-		return false;
-	}
-	
-	public static boolean	isFunctionAvailable(FunctionDefinition function, ApplyType apply, FunctionArgument argument) {
-		//
-		// Does it return correct datatype?
-		//
-		if (argument != null) {
-			//
-			// Does it match?
-			//
-			if (function.getDatatypeBean().getXacmlId().equals(argument.getDatatypeBean().getXacmlId())) {
-				return false;
-			}
-			if (function.getIsBagReturn() != argument.getIsBag()) {
-				return false;
-			}
-		}
-		//
-		// Check each argument
-		//
-		int i;
-		for (i = 0; i < apply.getExpression().size(); i++) {
-			//
-			// Get the argument
-			//
-			JAXBElement<?> arg = apply.getExpression().get(i);
-			//
-			// Get what the argument should be
-			//
-			FunctionArgument functionArg = XACMLFunctionValidator.getFunctionArgument(i + 1, function);
-			//
-			// Sanity check
-			//
-			if (arg == null || arg.getValue() == null || functionArg == null) {
-				//
-				// Something screwy with the list, just return not available. They will have
-				// delete items that are bad.
-				//
-				return false;
-			}
-			//
-			// Does it match?
-			//
-			if (XACMLFunctionValidator.isArgumentValid(arg.getValue(), functionArg) == false) {
-				return false;
-			}
-		}
-		//
-		// Done checking, we don't care if there are more args needed. Just want to know if this
-		// function can fit with the existing arguments.
-		//
-		return true;
-	}
-	
-	public static FunctionDefinition	validateApply(ApplyType apply, FunctionArgument argument) {
-		//
-		// Sanity check
-		//
-		if (apply == null) {
-			throw new IllegalArgumentException("Must supply a non-null apply object.");
-		}
-		try {
-			//
-			// Get the function
-			//
-			FunctionDefinition function = JPAUtils.getFunctionIDMap().get(apply.getFunctionId());
-			if (function == null) {
-				throw new Exception("Invalid function id: " + apply.getFunctionId());
-			}
-			//
-			// Does it return correct datatype?
-			//
-			if (argument != null) {
-				//
-				// Does it match?
-				//
-				if (argument.getDatatypeBean() != null) {
-					if (! function.getDatatypeBean().getXacmlId().equals(argument.getDatatypeBean().getXacmlId())) {
-						throw new Exception("Function return datatype(" + function.getDatatypeBean() + 
-								") does not match expected argument datatype (" + argument.getDatatypeBean());
-					}
-				} else {
-					if (logger.isDebugEnabled()) {
-						logger.debug("Argument datatype bean is null - any datatype should work.");
-					}
-				}
-				if (function.getIsBagReturn() != argument.getIsBag()) {
-					throw new Exception("Function is bag (" + function.getIsBagReturn() + 
-							") does not match argument isBag(" + argument.getIsBag());
-				}
-			}
-			//
-			// Now check argument list, do we have the minimum?
-			//
-			List<JAXBElement<?>> applyArgs = apply.getExpression();
-			if (applyArgs == null) {
-				//
-				// May not need any args
-				//
-				if (function.getArgLb() > 0) {
-					throw new Exception ("Number of Args mismatch, expecting at least " + 
-							function.getArgLb() + " arguments but have zero.");
-				}
-			} else {
-				if (applyArgs.size() < function.getArgLb()) {
-					throw new Exception ("Number of Args mismatch, expecting at least " + 
-										function.getArgLb() + " arguments but have " + applyArgs.size());
-				}
-			}
-			//
-			// Is there an upper bound?
-			//
-			if (function.getArgUb() != -1 && applyArgs.size() != function.getArgUb()) {
-				throw new Exception ("Number of Args mismatch, expecting at most " + 
-						function.getArgUb() + " arguments but have " + applyArgs.size());
-			}
-			//
-			// Check each argument
-			//
-			int i;
-			for (i = 0; i < applyArgs.size(); i++) {
-				//
-				// Get the argument
-				//
-				JAXBElement<?> arg = applyArgs.get(i);
-				//
-				// Get what the argument should be
-				//
-				FunctionArgument functionArg = XACMLFunctionValidator.getFunctionArgument(i + 1, function);
-				//
-				// Sanity check
-				//
-				if (arg == null || arg.getValue() == null || functionArg == null) {
-					throw new NullPointerException("An argument is null: Element" + arg + " Function Arg: " + functionArg);
-				}
-				//
-				// Does it match?
-				//
-				if (XACMLFunctionValidator.isArgumentValid(arg.getValue(), functionArg) == false) {
-					throw new Exception("Invalid Argument: " + arg.getValue());
-				}
-			}
-			//
-			// Done checking, just return the function which has the datatype
-			// and if it is a bag.
-			//
-			return function;
-		} catch(Exception e) {
-			logger.error("Function is not valid: " + apply.getFunctionId() + " argument: " + argument + " " + e);
-			return null;
-		}
-	}
-	
-	private static boolean isArgumentValid(Object value, FunctionArgument functionArg) {
-		if (value instanceof ApplyType) {
-			//
-			// Recursively validate the Apply.
-			//
-			FunctionDefinition function = XACMLFunctionValidator.validateApply((ApplyType) value, functionArg);
-			if (functionArg.getDatatypeBean() == null || function.getDatatypeBean().getId() == functionArg.getDatatypeBean().getId()) {
-				if (function.getIsBagReturn() == functionArg.getIsBag()) {
-					return true;
-				}
-				logger.error("isBag does not match: " + function.getIsBagReturn() + " " + functionArg.getIsBag());
-			}
-			logger.error("Datatypes do not match: " + function.getDatatypeBean().getShortName() + " " + functionArg.getDatatypeBean().getShortName());
-		} else if (value instanceof AttributeValueType) {
-			AttributeValueType val = (AttributeValueType) value;
-			Datatype datatype = JPAUtils.findDatatype(new IdentifierImpl(val.getDataType()));
-			if (functionArg.getDatatypeBean() == null || datatype.getId() == functionArg.getDatatypeBean().getId()) {
-				//
-				// TODO Is bag?
-				//
-				return true;
-			}
-			logger.error("Datatypes do not match: " + datatype.getShortName() + " " + functionArg.getDatatypeBean().getShortName());
-		} else if (value instanceof AttributeDesignatorType) {
-			AttributeDesignatorType designator = (AttributeDesignatorType) value;
-			Datatype datatype = JPAUtils.findDatatype(new IdentifierImpl(designator.getDataType()));
-			if (functionArg.getDatatypeBean() == null || datatype.getId() == functionArg.getDatatypeBean().getId()) {
-				//
-				// TODO Is bag?
-				//
-				return true;
-			}
-			logger.error("Datatypes do not match: " + datatype.getShortName() + " " + functionArg.getDatatypeBean().getShortName());
-		} else if (value instanceof AttributeSelectorType) {
-			AttributeSelectorType selector = (AttributeSelectorType) value;
-			Datatype datatype = JPAUtils.findDatatype(new IdentifierImpl(selector.getDataType()));
-			if (functionArg.getDatatypeBean() == null || datatype.getId() == functionArg.getDatatypeBean().getId()) {
-				//
-				// TODO Is bag?
-				//
-				return true;
-			}
-			logger.error("Datatypes do not match: " + datatype.getShortName() + " " + functionArg.getDatatypeBean().getShortName());
-		} else if (value instanceof VariableReferenceType) {
-			//
-			// We can't verify this at this time.
-			// The user can define variables in other parts of the policy file
-			// or another policy file. This should be flagged if the user performs
-			// simulation and other testing on the policy before deployment.
-			//
-			return true;
-		} else if (value instanceof FunctionType) {
-			//
-			// Does this function exist?
-			//
-			FunctionDefinition function = JPAUtils.findFunction(((FunctionType) value).getFunctionId());
-			if (function == null) {
-				//
-				// Could not find function
-				//
-				logger.warn("Could not find function in our database: " + ((FunctionType) value).getFunctionId());
-				return false;
-			}
-			//
-			// Does this function return the correct data type?
-			//
-			if (functionArg.getDatatypeBean() == null || function.getDatatypeBean().getId() == functionArg.getDatatypeBean().getId()) {
-				return true;
-			}			
-			logger.error("Datatypes do not match: " + function.getDatatypeBean().getShortName() + " " + functionArg.getDatatypeBean().getShortName());
-		}		
-		return false;
-	}
-
-	public static FunctionArgument getFunctionArgument(int index, FunctionDefinition function) {
-		if (index < 1) {
-			throw new IllegalArgumentException("The index must be 1-based");
-		}
-		//
-		// Setup what the actual lower bound and upper bounds are
-		// within the list.
-		//
-//		int lowerBound = function.getArgLb();
-//		if (lowerBound == 0) {
-//			lowerBound = 1;
-//		}
-		int upperBound = function.getArgUb();
-		if (upperBound == -1) {
-			upperBound = function.getFunctionArguments().size();
-		}
-		//
-		// The list may not be sorted, so make sure we find
-		// the actual argument index
-		//
-		int argumentIndex = index;
-		if (index >= upperBound) {
-			argumentIndex = upperBound;
-		}
-		for (FunctionArgument arg : function.getFunctionArguments()) {
-			if (arg.getArgIndex() == argumentIndex) {
-				return arg;
-			}
-		}
-		return null;
-	}
-
-	public static boolean validateCondition(ConditionType condition) {
-		if (condition.getExpression() == null) {
-			return false;
-		}
-		Object expression = condition.getExpression().getValue();
-		if (expression instanceof ApplyType) {
-			FunctionDefinition function = XACMLFunctionValidator.validateApply((ApplyType) expression, null);
-			if (function == null) {
-				return false;
-			}
-			if (function.isBagReturn()) {
-				return false;
-			}
-			if (function.getDatatypeBean() == null) {
-				return false;
-			}
-			return function.getDatatypeBean().getXacmlId().equals(XACML3.ID_DATATYPE_BOOLEAN.stringValue());
-		}
-		if (expression instanceof AttributeDesignatorType) {
-			return ((AttributeDesignatorType) expression).getDataType().equals(XACML3.ID_DATATYPE_BOOLEAN.stringValue());
-		}
-		if (expression instanceof AttributeSelectorType) {
-			return ((AttributeSelectorType) expression).getDataType().equals(XACML3.ID_DATATYPE_BOOLEAN.stringValue());
-		}
-		if (expression instanceof AttributeValueType) {
-			return ((AttributeValueType) expression).getDataType().equals(XACML3.ID_DATATYPE_BOOLEAN.stringValue());
-		}
-		if (expression instanceof VariableReferenceType) {
-			//
-			// Really unknown - the variable may or may not have been defined
-			//
-			return true;
-		}
-		return false;
-	}
-
-	public static boolean validateVariable(VariableDefinitionType variable) {
-		if (variable.getExpression() == null) {
-			return false;
-		}
-		Object expression = variable.getExpression().getValue();
-		if (expression instanceof ApplyType) {
-			FunctionDefinition function = XACMLFunctionValidator.validateApply((ApplyType) expression, null);
-			if (function == null) {
-				return false;
-			}
-			return true;
-		}
-		if (expression instanceof AttributeDesignatorType) {
-			return true;
-		}
-		if (expression instanceof AttributeSelectorType) {
-			return true;
-		}
-		if (expression instanceof AttributeValueType) {
-			return true;
-		}
-		if (expression instanceof VariableReferenceType) {
-			return true;
-		}
-		return false;
-	}
-
-	public static boolean validateAssignment(AttributeAssignmentExpressionType assignmentExpression) {
-		if (assignmentExpression.getExpression() == null) {
-			return false;
-		}
-		Object expression = assignmentExpression.getExpression().getValue();
-		if (expression instanceof ApplyType) {
-			FunctionDefinition function = XACMLFunctionValidator.validateApply((ApplyType) expression, null);
-			if (function == null) {
-				return false;
-			}
-			//
-			// TODO
-			//
-		}
-		//
-		// TODO
-		//
-		return true;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/XACMLPolicyImporter.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/XACMLPolicyImporter.java
deleted file mode 100644
index 8a7c714..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/util/XACMLPolicyImporter.java
+++ /dev/null
@@ -1,495 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.util;
-
-import java.util.Collection;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionType;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.Category;
-import org.apache.openaz.xacml.admin.jpa.ConstraintType;
-import org.apache.openaz.xacml.admin.jpa.ConstraintValue;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.jpa.Obadvice;
-import org.apache.openaz.xacml.api.Advice;
-import org.apache.openaz.xacml.api.AttributeValue;
-import org.apache.openaz.xacml.api.Identifier;
-import org.apache.openaz.xacml.api.Obligation;
-import org.apache.openaz.xacml.api.XACML3;
-import org.apache.openaz.xacml.util.XACMLObjectCopy;
-import org.apache.openaz.xacml.util.XACMLPolicyAggregator;
-import org.apache.openaz.xacml.util.XACMLPolicyScanner.CallbackResult;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.addon.jpacontainer.provider.CachingMutableLocalEntityProvider;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.ui.UI;
-
-public class XACMLPolicyImporter extends XACMLPolicyAggregator {
-	private static Log logger	= LogFactory.getLog(XACMLPolicyImporter.class);
-	
-	public enum OPTION {
-		/*
-		 * Overwrite any existing ID
-		 */
-		OVERWRITE_EXISTING,
-		/*
-		 * Update an existing ID - only ADDs information
-		 */
-		UPDATE_EXISTING,
-		/*
-		 * Does not change an existing ID
-		 */
-		DONOTCHANGE_EXISTING
-	}
-	
-	public boolean	importAttributes = true;
-	public boolean	ignoreStandardAttributes = true;
-	public boolean	addConstraints = true;
-	public OPTION	attributeOption = OPTION.OVERWRITE_EXISTING;
-	public boolean	importObligations = true;
-	public OPTION	obligationOption = OPTION.OVERWRITE_EXISTING;
-	public boolean	importAdvice = true;
-	public OPTION	adviceOption = OPTION.OVERWRITE_EXISTING;
-
-	public XACMLPolicyImporter() {
-	}
-
-	public boolean isImportAttributes() {
-		return importAttributes;
-	}
-
-	public void setImportAttributes(boolean importAttributes) {
-		this.importAttributes = importAttributes;
-	}
-
-	public boolean isIgnoreStandardAttributes() {
-		return ignoreStandardAttributes;
-	}
-
-	public void setIgnoreStandardAttributes(boolean ignoreStandardAttributes) {
-		this.ignoreStandardAttributes = ignoreStandardAttributes;
-	}
-
-	public boolean isAddConstraints() {
-		return addConstraints;
-	}
-
-	public void setAddConstraints(boolean addConstraints) {
-		this.addConstraints = addConstraints;
-	}
-
-	public OPTION getAttributeOption() {
-		return attributeOption;
-	}
-
-	public void setAttributeOption(OPTION attributeOption) {
-		this.attributeOption = attributeOption;
-	}
-
-	public boolean isImportObligations() {
-		return importObligations;
-	}
-
-	public void setImportObligations(boolean importObligations) {
-		this.importObligations = importObligations;
-	}
-
-	public OPTION getObligationOption() {
-		return obligationOption;
-	}
-
-	public void setObligationOption(OPTION obligationOption) {
-		this.obligationOption = obligationOption;
-	}
-
-	public boolean isImportAdvice() {
-		return importAdvice;
-	}
-
-	public void setImportAdvice(boolean importAdvice) {
-		this.importAdvice = importAdvice;
-	}
-
-	public OPTION getAdviceOption() {
-		return adviceOption;
-	}
-
-	public void setAdviceOption(OPTION adviceOption) {
-		this.adviceOption = adviceOption;
-	}
-	@Override
-	public CallbackResult onObligation(Object parent, ObligationExpressionType expression, Obligation obligation) {
-		if (importObligations) {
-			super.onObligation(parent, expression, obligation);
-		}
-		return CallbackResult.CONTINUE;
-	}
-	
-	@Override
-	public CallbackResult onAttribute(Object parent, Object container, org.apache.openaz.xacml.api.Attribute attribute) {
-		if (importAttributes) {
-			super.onAttribute(parent, container, attribute);
-		}
-		return CallbackResult.CONTINUE;
-	}
-	
-	@Override
-	public CallbackResult onAdvice(Object parent, AdviceExpressionType expression, Advice advice) {
-		if (importAdvice) {
-			super.onAdvice(parent, expression, advice);
-		}
-		return CallbackResult.CONTINUE;
-	}
-
-	@Override
-	public void onFinishScan(Object root) {
-		if (this.importAttributes && this.doImportAttributes() > 0) {
-			((XacmlAdminUI)UI.getCurrent()).refreshAttributes();
-		}
-		int changes = 0;
-		if (this.importObligations) {
-			changes += this.doImportObligations();
-		}
-		if (this.importAdvice) {
-			changes += this.doImportAdvice();
-		}
-		//
-		// If changes were made, we need to tell the UI so the
-		// dictionary can refresh.
-		//
-		if (changes > 0) {
-			((XacmlAdminUI)UI.getCurrent()).refreshObadvice();
-		}
-	}
-	
-	@SuppressWarnings("unchecked")
-	protected int doImportAttributes() {
-		int changes = 0;
-		//
-		// Get our attributes. This container is modifiable.
-		//
-		JPAContainer<Attribute> attributes = ((XacmlAdminUI)UI.getCurrent()).getAttributes();
-		//
-		// Get mutable entity providers for these.
-		//
-		JPAContainer<Category> categories = new JPAContainer<Category>(Category.class);
-		categories.setEntityProvider(new CachingMutableLocalEntityProvider<Category>(Category.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-
-		JPAContainer<Datatype> datatypes = new JPAContainer<Datatype>(Datatype.class);
-		datatypes.setEntityProvider(new CachingMutableLocalEntityProvider<Datatype>(Datatype.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-		//
-		// Work the map
-		//
-		for (Identifier cat : this.attributeMap.keySet()) {
-			//
-			// Does category exist?
-			//
-			Category category = JPAUtils.findCategory(cat);
-			if (category == null) {
-				//
-				// This should rarely happen, but is possible since XACML 3.0
-				// you can define your own categories.
-				//
-				logger.warn("New category: " + cat);
-				category = new Category(cat, Category.CUSTOM);
-				String shortName = XACMLConstants.extractShortName(cat.stringValue());
-				if (shortName != null) {
-					category.setShortName(shortName);
-				} else {
-					category.setShortName(category.getXacmlId());
-				}
-				//
-				// Make sure the grouping is ok
-				//
-				if (category.getGrouping() == null) {
-					category.setGrouping(category.getShortName());
-				}
-				//
-				// Add it in
-				//
-				categories.addEntity(category);
-				//
-				// Tell the RO to update itself.
-				//
-				((XacmlAdminUI)UI.getCurrent()).getCategories().refresh();
-			}
-			Map<Identifier, Map<Identifier, Set<AttributeValue<?>>>> map = this.attributeMap.get(cat);
-			for (Identifier dt : map.keySet()) {
-				//
-				// Does datatype exist?
-				//
-				Datatype datatype = JPAUtils.findDatatype(dt);
-				if (datatype == null) {
-					//
-					// This should rarely happen, but is possible since XACML 3.0
-					// you can define new datatypes.
-					//
-					logger.warn("New datatype: " + dt);
-					datatype = new Datatype(dt, Datatype.CUSTOM);
-					String shortName = XACMLConstants.extractShortName(dt.stringValue());
-					if (shortName != null) {
-						datatype.setShortName(shortName);
-					} else {
-						datatype.setShortName(datatype.getXacmlId());
-					}
-					//
-					// Add it in
-					//
-					datatypes.addEntity(datatype);
-					//
-					// Tell the Read-Only property to update itself.
-					//
-					((XacmlAdminUI)UI.getCurrent()).getDatatypes().refresh();
-				}
-				//
-				// Iterate the attributes
-				//
-				for (Identifier id : map.get(dt).keySet()) {
-					//
-					// Do we ignore it if its standard?
-					//
-					if (! this.ignoreStandardAttributes || 
-						XACMLConstants.STANDARD_ATTRIBUTES.contains(id) == false) {
-						//
-						// Does it already exist?
-						//
-						Attribute newAttribute = null;
-						Attribute currentAttribute = JPAUtils.findAttribute(category, datatype, id.stringValue());
-						//
-						// Support for an existing attribute
-						//
-						if (currentAttribute != null) {
-							if (this.attributeOption == OPTION.OVERWRITE_EXISTING) {
-								newAttribute = currentAttribute;
-								newAttribute.setConstraintType(null);
-								newAttribute.removeAllConstraintValues();
-							} else if (this.attributeOption == OPTION.DONOTCHANGE_EXISTING) {
-								logger.info("Do not change existing: " + currentAttribute);
-								continue;
-							} else if (this.attributeOption == OPTION.UPDATE_EXISTING) {
-								newAttribute = currentAttribute;
-							}
-						} else {
-							//
-							// Create our new attribute
-							//
-							newAttribute = new Attribute(id.stringValue(), ((XacmlAdminUI)UI.getCurrent()).getUserid());
-							newAttribute.setCategoryBean(category);
-							newAttribute.setDatatypeBean(datatype);
-						}
-						//
-						// Get all the values
-						//
-						Set<AttributeValue<?>> values = map.get(dt).get(id);
-						//
-						// Do we have more than 1? Also, omit boolean datatype which
-						// doesn't make any sense to enumerate.
-						//
-						if (values.size() > 1 && dt.equals(XACML3.ID_DATATYPE_BOOLEAN) == false) {
-							//
-							// We have a lot of possible values, add as an enumeration
-							//
-							newAttribute.setConstraintType(JPAUtils.findConstraintType(ConstraintType.ENUMERATION_TYPE));
-							for (AttributeValue<?> value : values) {
-								Object val = value.getValue();
-								String content;
-								if (val instanceof Collection) {
-									content = XACMLObjectCopy.getContent((List<Object>) value.getValue());
-								} else {
-									content = val.toString();
-								}
-								//
-								// Check if we should add it in
-								//
-								boolean add = true;
-								//
-								// If we are updating an existing, we can really only do this for enumerations,
-								// its impossible to resolve a regular expression or range.
-								//
-								if (currentAttribute != null && this.attributeOption == OPTION.UPDATE_EXISTING &&
-											newAttribute.getConstraintType().getConstraintType().equals(ConstraintType.ENUMERATION_TYPE)) {
-									//
-									// Make sure it isn't there already, no duplicates.
-									//
-									for (ConstraintValue currentConstraintValue : newAttribute.getConstraintValues()) {
-										if (currentConstraintValue.getValue().equals(content)) {
-											add = false;
-											break;
-										}
-									}
-								}
-								if (add && content.isEmpty() == false) {
-									ConstraintValue newValue = new ConstraintValue("Enumeration", content);
-									newValue.setAttribute(newAttribute);
-									newAttribute.addConstraintValue(newValue);
-								}
-							}
-						}
-						//
-						// Add it
-						//
-						if (newAttribute != null) {
-							if (newAttribute.getId() == 0) {
-								logger.info("Adding new attribute");
-								if (attributes.addEntity(newAttribute) == null) {
-									logger.error("Failed to add new attribute: " + newAttribute);
-								} else {
-									changes++;
-								}
-							} else {
-								logger.info("Updating attribute " + newAttribute);
-								try {
-									attributes.commit();
-									changes++;
-								} catch (SourceException | InvalidValueException e) {
-									logger.error("Update failed: " + e.getLocalizedMessage());
-								}
-							}
-						}
-					}
-				}
-			}
-		}
-		return changes;
-	}
-
-	protected int doImportObligations() {
-		int changes = 0;
-		JPAContainer<Obadvice> oa = ((XacmlAdminUI)UI.getCurrent()).getObadvice();
-		for (Identifier id : this.obligationMap.keySet()) {
-			for (EffectType effect : this.obligationMap.get(id).keySet()) {
-				for (Obligation obligation : this.obligationMap.get(id).get(effect)) {
-					Obadvice newObligation = null;
-					Obadvice currentObligation = JPAUtils.findObligation(obligation.getId(), effect);
-					//
-					// Does it exist?
-					//
-					if (currentObligation != null) {
-						if (this.obligationOption == OPTION.OVERWRITE_EXISTING) {
-							newObligation = currentObligation;
-							newObligation.removeAllExpressions();
-						} else if (this.obligationOption == OPTION.DONOTCHANGE_EXISTING) {
-							continue;
-						} else if (this.obligationOption == OPTION.UPDATE_EXISTING) {
-							newObligation = currentObligation;
-						}
-					} else {
-						//
-						// Create new one
-						//
-						newObligation = new Obadvice(obligation.getId(), ((XacmlAdminUI)UI.getCurrent()).getUserid());
-						newObligation.setFulfillOn((effect == EffectType.PERMIT ? Obadvice.EFFECT_PERMIT : Obadvice.EFFECT_DENY));
-					}
-					//
-					// TODO add the expressions
-					//
-					
-					//
-					// Add it in
-					//
-					if (newObligation != null) {
-						if (newObligation.getId() == 0) {
-							logger.info("Adding obligation " + newObligation);
-							oa.addEntity(newObligation);
-							changes++;
-						} else {
-							logger.info("Updating obligation " + newObligation);
-							try {
-								oa.commit();
-								changes++;
-							} catch (SourceException | InvalidValueException e) {
-								logger.error("Update obligation failed " + e.getLocalizedMessage());
-							}
-						}
-					}
-				}
-			}
-		}
-		return changes;
-	}
-	
-	protected int doImportAdvice() {
-		int changes = 0;
-		JPAContainer<Obadvice> oa = ((XacmlAdminUI)UI.getCurrent()).getObadvice();
-		for (Identifier id : this.adviceMap.keySet()) {
-			for (EffectType effect : this.adviceMap.get(id).keySet()) {
-				for (Advice advice : this.adviceMap.get(id).get(effect)) {
-					Obadvice newAdvice = null;
-					Obadvice currentAdvice = JPAUtils.findAdvice(advice.getId(), effect);
-					//
-					// Does it exist?
-					//
-					if (currentAdvice != null) {
-						if (this.adviceOption == OPTION.OVERWRITE_EXISTING) {
-							newAdvice = currentAdvice;
-							newAdvice.removeAllExpressions();
-						} else if (this.adviceOption == OPTION.DONOTCHANGE_EXISTING) {
-							continue;
-						} else if (this.adviceOption == OPTION.UPDATE_EXISTING) {
-							newAdvice = currentAdvice;
-						}
-					} else {
-						//
-						// Create new one
-						//
-						newAdvice = new Obadvice(advice.getId(), ((XacmlAdminUI)UI.getCurrent()).getUserid());
-						newAdvice.setType(Obadvice.ADVICE);
-						newAdvice.setFulfillOn((effect == EffectType.PERMIT ? Obadvice.EFFECT_PERMIT : Obadvice.EFFECT_DENY));
-					}
-					//
-					// TODO add the expressions
-					//
-					
-					//
-					// Add it in
-					//
-					if (newAdvice != null) {
-						if (newAdvice.getId() == 0) {
-							logger.info("Adding advice " + newAdvice);
-							oa.addEntity(newAdvice);
-							changes++;
-						} else {
-							logger.info("Updating advice " + newAdvice);
-							try {
-								oa.commit();
-								changes++;
-							} catch (SourceException | InvalidValueException e) {
-								logger.error("Update advice failed " + e.getLocalizedMessage());
-							}
-						}
-					}
-				}
-			}
-		}
-		return changes;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/AttributeDictionarySelectorComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/AttributeDictionarySelectorComponent.java
deleted file mode 100644
index 0dd7f32..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/AttributeDictionarySelectorComponent.java
+++ /dev/null
@@ -1,290 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.components;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.components.AttributeDictionary;
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.Category;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.view.events.AttributeChangedEventListener;
-import org.apache.openaz.xacml.admin.view.events.AttributeChangedEventNotifier;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.addon.jpacontainer.provider.CachingLocalEntityProvider;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.util.filter.Compare;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.ListSelect;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-
-public class AttributeDictionarySelectorComponent extends CustomComponent implements AttributeChangedEventNotifier {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private ListSelect listSelectAttribute;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayout_2;
-	@AutoGenerated
-	private Button buttonNewAttribute;
-	@AutoGenerated
-	private ComboBox comboBoxCategoryFilter;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final AttributeDictionarySelectorComponent self = this;
-	private final Datatype datatype;
-	private final Attribute initialAttribute;
-	private final BasicNotifier notifier = new BasicNotifier();
-	private static final JPAContainer<Category>	categories = new JPAContainer<Category>(Category.class);
-	private static final JPAContainer<Attribute>	attributes = new JPAContainer<Attribute>(Attribute.class);
-	static {
-		attributes.setEntityProvider(new CachingLocalEntityProvider<Attribute>(Attribute.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-		categories.setEntityProvider(new CachingLocalEntityProvider<Category>(Category.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-		attributes.sort(new String[]{"xacmlId"}, new boolean[]{true});
-		categories.sort(new String[]{"xacmlId"}, new boolean[]{true});
-	}
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public AttributeDictionarySelectorComponent(Datatype datatype, Attribute initialAttribute) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Save pointer and finish container initialization
-		//
-		this.datatype = datatype;
-		this.initialAttribute = initialAttribute;
-		//
-		// Initialize
-		//
-		this.initializeCategoryFilter();
-		this.initializeAttributes();
-		this.initializeButtons();
-		//
-		// Set our focus
-		//
-		this.listSelectAttribute.focus();
-	}
-	
-	protected void initializeCategoryFilter() {
-		//
-		// Remove any filters
-		//
-		AttributeDictionarySelectorComponent.categories.removeAllContainerFilters();
-		//
-		// Initialize data source and GUI properties
-		//
-		this.comboBoxCategoryFilter.setContainerDataSource(AttributeDictionarySelectorComponent.categories);
-		this.comboBoxCategoryFilter.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.comboBoxCategoryFilter.setItemCaptionPropertyId("xacmlId");
-		this.comboBoxCategoryFilter.setImmediate(true);
-		//
-		// Respond to events
-		//
-		this.comboBoxCategoryFilter.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				//
-				// Clear any existing filters
-				//
-				AttributeDictionarySelectorComponent.attributes.removeAllContainerFilters();
-				//
-				// Get the current selection
-				//
-				Object id = self.comboBoxCategoryFilter.getValue();
-				//
-				// Is anything currently selected?
-				//
-				if (id != null) {
-					//
-					// Yes - add the new filter into the container
-					//
-					AttributeDictionarySelectorComponent.attributes.addContainerFilter(new Compare.Equal("categoryBean", AttributeDictionarySelectorComponent.categories.getItem(id).getEntity()));
-				}
-			}
-		});
-	}
-	
-	protected void initializeAttributes() {
-		//
-		// Remove any filters
-		//
-		AttributeDictionarySelectorComponent.attributes.removeAllContainerFilters();
-		//
-		// Initialize data source and GUI properties
-		//
-		this.listSelectAttribute.setContainerDataSource(AttributeDictionarySelectorComponent.attributes);
-		this.listSelectAttribute.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.listSelectAttribute.setItemCaptionPropertyId("xacmlId");
-		this.listSelectAttribute.setImmediate(true);
-		this.listSelectAttribute.setHeight(7, Unit.EM);
-		//
-		// Filter by datatype
-		//
-		if (this.datatype != null) {
-			AttributeDictionarySelectorComponent.attributes.addContainerFilter(new Compare.Equal("datatypeBean", this.datatype));
-		}
-		//
-		// Is there a default selection?  Is there an id?
-		//
-		if (this.initialAttribute != null && this.initialAttribute.getId() != 0) {
-			this.listSelectAttribute.select(this.initialAttribute.getId());
-		}
-		//
-		// Respond to events
-		//
-		this.listSelectAttribute.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.fireAttributeChanged(self.getAttribute());
-			}
-		});
-	}
-	
-	protected void initializeButtons() {
-		this.buttonNewAttribute.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				AttributeDictionary.createNewAttributeWindow();
-			}
-		});
-	}
-	
-	@Override
-	public void commit() {
-		this.listSelectAttribute.commit();
-	}
-	
-	@Override
-	public Attribute getAttribute() {
-		Object id = this.listSelectAttribute.getValue();
-		if (id == null) {
-			return null;
-		}
-		return AttributeDictionarySelectorComponent.attributes.getItem(id).getEntity();
-	}
-
-	@Override
-	public boolean addListener(AttributeChangedEventListener listener) {
-		return this.notifier.addListener(listener);
-	}
-
-	@Override
-	public boolean removeListener(AttributeChangedEventListener listener) {
-		return this.notifier.removeListener(listener);
-	}
-
-	@Override
-	public void fireAttributeChanged(Attribute attribute) {
-		this.notifier.fireAttributeChanged(attribute);
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// horizontalLayout_2
-		horizontalLayout_2 = buildHorizontalLayout_2();
-		mainLayout.addComponent(horizontalLayout_2);
-		
-		// listSelectAttribute
-		listSelectAttribute = new ListSelect();
-		listSelectAttribute.setCaption("Dictionary Attributes");
-		listSelectAttribute.setImmediate(false);
-		listSelectAttribute.setWidth("100.0%");
-		listSelectAttribute.setHeight("-1px");
-		listSelectAttribute.setInvalidAllowed(false);
-		listSelectAttribute.setRequired(true);
-		mainLayout.addComponent(listSelectAttribute);
-		mainLayout.setExpandRatio(listSelectAttribute, 1.0f);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayout_2() {
-		// common part: create layout
-		horizontalLayout_2 = new HorizontalLayout();
-		horizontalLayout_2.setImmediate(false);
-		horizontalLayout_2.setWidth("-1px");
-		horizontalLayout_2.setHeight("-1px");
-		horizontalLayout_2.setMargin(false);
-		horizontalLayout_2.setSpacing(true);
-		
-		// comboBoxCategoryFilter
-		comboBoxCategoryFilter = new ComboBox();
-		comboBoxCategoryFilter.setCaption("Filter Category");
-		comboBoxCategoryFilter.setImmediate(false);
-		comboBoxCategoryFilter.setWidth("-1px");
-		comboBoxCategoryFilter.setHeight("-1px");
-		horizontalLayout_2.addComponent(comboBoxCategoryFilter);
-		horizontalLayout_2.setExpandRatio(comboBoxCategoryFilter, 1.0f);
-		
-		// buttonNewAttribute
-		buttonNewAttribute = new Button();
-		buttonNewAttribute.setCaption("New Attribute");
-		buttonNewAttribute.setImmediate(true);
-		buttonNewAttribute
-				.setDescription("Click to create a new attribute in the dictionary.");
-		buttonNewAttribute.setWidth("-1px");
-		buttonNewAttribute.setHeight("-1px");
-		horizontalLayout_2.addComponent(buttonNewAttribute);
-		horizontalLayout_2.setComponentAlignment(buttonNewAttribute,
-				new Alignment(10));
-		
-		return horizontalLayout_2;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/AttributeSimpleCreatorComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/AttributeSimpleCreatorComponent.java
deleted file mode 100644
index c1568b9..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/AttributeSimpleCreatorComponent.java
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.components;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.Category;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.admin.view.events.AttributeChangedEventListener;
-import org.apache.openaz.xacml.admin.view.events.AttributeChangedEventNotifier;
-import org.apache.openaz.xacml.api.XACML3;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.addon.jpacontainer.provider.CachingLocalEntityProvider;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-
-public class AttributeSimpleCreatorComponent extends CustomComponent implements AttributeChangedEventNotifier {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayout_1;
-	@AutoGenerated
-	private Table tableDatatype;
-	@AutoGenerated
-	private Table tableCategory;
-	@AutoGenerated
-	private TextField textFieldContextPath;
-	@AutoGenerated
-	private TextField textFieldAttributeId;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final AttributeSimpleCreatorComponent self = this;
-	private final Datatype datatype;
-	private final Attribute attribute;
-	private final BasicNotifier notifier = new BasicNotifier();
-	private static final JPAContainer<Category>	categories = new JPAContainer<Category>(Category.class);
-	private static final JPAContainer<Datatype>	datatypes = new JPAContainer<Datatype>(Datatype.class);
-	static {
-		categories.setEntityProvider(new CachingLocalEntityProvider<Category>(Category.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-		datatypes.setEntityProvider(new CachingLocalEntityProvider<Datatype>(Datatype.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-		categories.sort(new String[]{"xacmlId"}, new boolean[]{true});
-		datatypes.sort(new String[]{"xacmlId"}, new boolean[]{true});
-	}
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public AttributeSimpleCreatorComponent(Datatype datatype, Attribute initialAttribute) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Save
-		//
-		this.datatype = datatype;
-		this.attribute = initialAttribute;
-		//
-		// Initialize GUI
-		//
-		this.initializeCategories();
-		this.initializeDatatypes();
-		this.initializeAttributeId();
-		//
-		// Focus
-		//
-		this.textFieldAttributeId.focus();
-	}
-	
-	private void initializeCategories() {
-		//
-		// Remove any filters
-		//
-		AttributeSimpleCreatorComponent.categories.removeAllContainerFilters();
-		//
-		// Initialize data source & GUI properties
-		//
-		this.tableCategory.setContainerDataSource(AttributeSimpleCreatorComponent.categories);
-		this.tableCategory.setVisibleColumns(new Object[] {"xacmlId"});
-		this.tableCategory.setColumnHeaders(new String[] {"XACML ID"});
-		this.tableCategory.setImmediate(true);
-		this.tableCategory.setNullSelectionAllowed(false);
-		this.tableCategory.setPageLength(10);
-		this.tableCategory.setSelectable(true);
-		//
-		// Default selection
-		//
-		Category defaultCategory;
-		if (this.attribute == null || this.attribute.getCategoryBean() == null || this.attribute.getCategoryBean().getIdentifer() == null) {
-			defaultCategory = JPAUtils.findCategory(XACML3.ID_SUBJECT_CATEGORY_ACCESS_SUBJECT);
-			assert defaultCategory != null;
-		} else {
-			defaultCategory = JPAUtils.findCategory(this.attribute.getCategoryBean().getIdentifer());
-		}
-		if (defaultCategory != null) {
-			this.tableCategory.select(defaultCategory.getId());
-		}
-		//
-		// Respond to changes
-		//
-		this.tableCategory.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.fireAttributeChanged(self.getAttribute());
-			}
-		});
-	}
-
-	private void initializeDatatypes() {
-		//
-		// Remove any filters
-		//
-		AttributeSimpleCreatorComponent.datatypes.removeAllContainerFilters();
-		//
-		// Initialize data source & GUI properties
-		//
-		this.tableDatatype.setContainerDataSource(AttributeSimpleCreatorComponent.datatypes);
-		this.tableDatatype.setVisibleColumns(new Object[] {"xacmlId", "shortName"});
-		this.tableDatatype.setColumnHeaders(new String[] {"Data Type ID", "Data Type"});
-		this.tableDatatype.setNullSelectionAllowed(false);
-		this.tableDatatype.setImmediate(true);
-		this.tableDatatype.setPageLength(10);
-		//
-		// Are we restricted to a certain datatype?
-		//
-		if (this.datatype != null) {
-			//
-			// Datatype restricted
-			//
-			this.tableDatatype.select(this.datatype.getId());
-			this.tableDatatype.setEnabled(false);
-			return;
-		}
-		this.tableDatatype.setSelectable(true);
-		//
-		// Do we have a default value?
-		//
-		Datatype defaultDatatype;
-		if (this.attribute != null && this.attribute.getDatatypeBean() != null) {
-			defaultDatatype = this.attribute.getDatatypeBean();
-		} else {
-			defaultDatatype = JPAUtils.findDatatype(XACML3.ID_DATATYPE_STRING);
-		}
-		if (defaultDatatype != null) {
-			this.tableDatatype.select(defaultDatatype.getId());
-		}
-		//
-		// Respond to changes
-		//
-		this.tableDatatype.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.fireAttributeChanged(self.getAttribute());
-			}
-		});
-	}
-	
-	private void initializeAttributeId() {
-		this.textFieldAttributeId.setImmediate(true);
-		this.textFieldAttributeId.setNullRepresentation("");
-		if (this.attribute == null) {
-			this.textFieldAttributeId.setValue(XacmlAdminUI.getDomain());
-		} else {
-			//
-			// Set the ID
-			//
-			this.textFieldAttributeId.setValue(this.attribute.getXacmlId());
-			//
-			// Is it an attribute selector?
-			//
-			if (this.attribute.isDesignator()) {
-				this.textFieldContextPath.setVisible(false);
-				this.textFieldContextPath.setRequired(false);
-			} else {
-				this.textFieldAttributeId.setCaption("Context Selector Id");
-				this.textFieldAttributeId.setRequired(false);
-				this.textFieldContextPath.setVisible(true);				
-				this.textFieldContextPath.setValue(this.attribute.getSelectorPath());
-				this.textFieldContextPath.setRequired(true);
-				this.textFieldContextPath.setRequiredError("You must have a context path for a selector.");
-				this.textFieldContextPath.addValueChangeListener(new ValueChangeListener() {
-					private static final long serialVersionUID = 1L;
-
-					@Override
-					public void valueChange(ValueChangeEvent event) {
-						self.fireAttributeChanged(self.getAttribute());
-					}
-				});
-			}
-		}
-		//
-		// Respond to changes
-		//
-		this.textFieldAttributeId.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.fireAttributeChanged(self.getAttribute());
-			}
-		});
-	}
-	
-	@Override
-	public Attribute	getAttribute() {
-		try {
-			this.textFieldAttributeId.commit();
-		} catch (Exception e) { //NOPMD
-			// TODO - Handle, Log or NOPMD
-			// TODO - Will vaadin display error?
-		}
-		Attribute attribute = new Attribute(this.textFieldAttributeId.getValue());
-		attribute.setSelectorPath(this.textFieldContextPath.getValue());
-		Object categoryId = this.tableCategory.getValue();
-		if (categoryId != null) {
-			attribute.setCategoryBean(AttributeSimpleCreatorComponent.categories.getItem(categoryId).getEntity());
-		}
-		if (this.datatype != null) {
-			attribute.setDatatypeBean(this.datatype);
-		} else {
-			Object datatypeId = this.tableDatatype.getValue();
-			if (datatypeId == null) {
-				return null;
-			}
-			attribute.setDatatypeBean(AttributeSimpleCreatorComponent.datatypes.getItem(datatypeId).getEntity());
-		}
-		return attribute;
-	}
-	
-	@Override
-	public boolean addListener(AttributeChangedEventListener listener) {
-		return this.notifier.addListener(listener);
-	}
-
-	@Override
-	public boolean removeListener(AttributeChangedEventListener listener) {
-		return this.notifier.removeListener(listener);
-	}
-
-	@Override
-	public void commit() {
-		try {
-			this.textFieldAttributeId.commit();
-			this.textFieldContextPath.commit();
-			this.tableCategory.commit();
-			this.tableDatatype.commit();
-		} catch (Exception e) { //NOPMD
-			// TODO - Handle, Log or NOPMD
-			// TODO - Will vaadin display error?
-		}
-	}
-
-	@Override
-	public void fireAttributeChanged(Attribute attribute) {
-		this.notifier.fireAttributeChanged(attribute);
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldAttributeId
-		textFieldAttributeId = new TextField();
-		textFieldAttributeId.setCaption("Attribute Id");
-		textFieldAttributeId.setImmediate(false);
-		textFieldAttributeId.setWidth("100.0%");
-		textFieldAttributeId.setHeight("-1px");
-		textFieldAttributeId.setInvalidAllowed(false);
-		textFieldAttributeId.setRequired(true);
-		mainLayout.addComponent(textFieldAttributeId);
-		mainLayout.setExpandRatio(textFieldAttributeId, 1.0f);
-		
-		// textFieldContextPath
-		textFieldContextPath = new TextField();
-		textFieldContextPath.setCaption("Context Path");
-		textFieldContextPath.setImmediate(false);
-		textFieldContextPath.setDescription("The Selector's Context Path.");
-		textFieldContextPath.setWidth("100.0%");
-		textFieldContextPath.setHeight("-1px");
-		textFieldContextPath
-				.setInputPrompt("eg. md:record/md:patient/md:patient-number/text()");
-		mainLayout.addComponent(textFieldContextPath);
-		mainLayout.setExpandRatio(textFieldContextPath, 1.0f);
-		
-		// horizontalLayout_1
-		horizontalLayout_1 = buildHorizontalLayout_1();
-		mainLayout.addComponent(horizontalLayout_1);
-		mainLayout.setExpandRatio(horizontalLayout_1, 1.0f);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayout_1() {
-		// common part: create layout
-		horizontalLayout_1 = new HorizontalLayout();
-		horizontalLayout_1.setImmediate(false);
-		horizontalLayout_1.setWidth("-1px");
-		horizontalLayout_1.setHeight("-1px");
-		horizontalLayout_1.setMargin(false);
-		horizontalLayout_1.setSpacing(true);
-		
-		// tableCategory
-		tableCategory = new Table();
-		tableCategory.setCaption("Choose Category");
-		tableCategory.setImmediate(false);
-		tableCategory.setWidth("-1px");
-		tableCategory.setHeight("-1px");
-		tableCategory.setInvalidAllowed(false);
-		tableCategory.setRequired(true);
-		horizontalLayout_1.addComponent(tableCategory);
-		
-		// tableDatatype
-		tableDatatype = new Table();
-		tableDatatype.setCaption("Choose Data Type");
-		tableDatatype.setImmediate(false);
-		tableDatatype.setWidth("-1px");
-		tableDatatype.setHeight("-1px");
-		tableDatatype.setInvalidAllowed(false);
-		tableDatatype.setRequired(true);
-		horizontalLayout_1.addComponent(tableDatatype);
-		
-		return horizontalLayout_1;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/AttributeStandardSelectorComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/AttributeStandardSelectorComponent.java
deleted file mode 100644
index a3fded5..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/AttributeStandardSelectorComponent.java
+++ /dev/null
@@ -1,414 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.components;
-
-import java.io.Serializable;
-import java.util.Set;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.Category;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.admin.util.XACMLConstants;
-import org.apache.openaz.xacml.admin.view.events.AttributeChangedEventListener;
-import org.apache.openaz.xacml.admin.view.events.AttributeChangedEventNotifier;
-import org.apache.openaz.xacml.api.Identifier;
-import org.apache.openaz.xacml.api.XACML3;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.addon.jpacontainer.provider.CachingLocalEntityProvider;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.util.BeanItem;
-import com.vaadin.data.util.BeanItemContainer;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-
-public class AttributeStandardSelectorComponent extends CustomComponent implements AttributeChangedEventNotifier {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayout_2;
-	@AutoGenerated
-	private Table tableDatatypes;
-	@AutoGenerated
-	private Table tableAttributes;
-	@AutoGenerated
-	private ComboBox comboBoxCategories;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	
-	public class AttributeBean implements Serializable {
-		private static final long serialVersionUID = 1L;
-		private Identifier	attributeId;
-		private Identifier	categoryId;
-		
-		public AttributeBean(Identifier category, Identifier id) {
-			this.categoryId = category;
-			this.attributeId = id;
-		}
-		public Identifier getAttributeId() {
-			return attributeId;
-		}
-		public void setAttributeId(Identifier attributeId) {
-			this.attributeId = attributeId;
-		}
-		public Identifier getCategoryId() {
-			return categoryId;
-		}
-		public void setCategoryId(Identifier categoryId) {
-			this.categoryId = categoryId;
-		}
-		@Override
-		public String toString() {
-			return this.attributeId.stringValue();
-		}
-		
-	}
-	private final AttributeStandardSelectorComponent self = this;
-	private final Datatype datatype;
-	private final Attribute attribute;
-	private final BasicNotifier notifier = new BasicNotifier();
-	private static final JPAContainer<Category>	categories = new JPAContainer<Category>(Category.class);
-	private static final JPAContainer<Datatype>	datatypes = new JPAContainer<Datatype>(Datatype.class);
-	static {
-		categories.setEntityProvider(new CachingLocalEntityProvider<Category>(Category.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-		datatypes.setEntityProvider(new CachingLocalEntityProvider<Datatype>(Datatype.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-		categories.sort(new String[]{"xacmlId"}, new boolean[]{true});
-		datatypes.sort(new String[]{"xacmlId"}, new boolean[]{true});
-	}
-	private BeanItemContainer<AttributeBean> container = new BeanItemContainer<AttributeBean>(AttributeBean.class);
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public AttributeStandardSelectorComponent(Datatype datatype, Attribute initialAttribute) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Save
-		//
-		this.datatype = datatype;
-		this.attribute = initialAttribute;
-		//
-		// Initialize GUI
-		//
-		this.initializeCategories();
-		this.initializeAttributes();
-		this.initializeDatatypes();
-		//
-		// Initialize focus
-		//
-		this.tableAttributes.focus();
-	}
-	
-	private void initializeCategories() {
-		//
-		// Remove any filters
-		//
-		AttributeStandardSelectorComponent.categories.removeAllContainerFilters();
-		//
-		// Initialize data source & GUI properties
-		//
-		this.comboBoxCategories.setContainerDataSource(AttributeStandardSelectorComponent.categories);
-		this.comboBoxCategories.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.comboBoxCategories.setItemCaptionPropertyId("xacmlId");
-		this.comboBoxCategories.setImmediate(true);
-		this.comboBoxCategories.setNullSelectionAllowed(false);
-		//
-		// Set default selection
-		//
-		Category defaultCategory;
-		if (this.attribute == null || this.attribute.getCategoryBean() == null) {
-			defaultCategory = JPAUtils.findCategory(XACML3.ID_SUBJECT_CATEGORY_ACCESS_SUBJECT);
-		} else {
-			defaultCategory = this.attribute.getCategoryBean();
-		}
-		if (defaultCategory != null) {
-			this.comboBoxCategories.select(defaultCategory.getId());
-		}
-		//
-		// Respond to events
-		//
-		this.comboBoxCategories.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.setupAttributeIDs();
-				self.fireAttributeChanged(self.getAttribute());
-			}
-		});
-	}
-	
-	private void initializeAttributes() {
-		//
-		// Initialize GUI properties
-		//
-		this.tableAttributes.setImmediate(true);
-		this.tableAttributes.setNullSelectionAllowed(false);
-		this.tableAttributes.setPageLength(10);
-		//
-		// Setup
-		//
-		this.tableAttributes.setContainerDataSource(this.container);
-		this.tableAttributes.setVisibleColumns(new Object[] {"attributeId"});
-		this.tableAttributes.setColumnHeaders(new String[] {"Attribute Id"});
-		this.tableAttributes.setSelectable(true);
-		this.setupAttributeIDs();
-		//
-		// Respond
-		//
-		this.tableAttributes.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.fireAttributeChanged(self.getAttribute());
-			}
-		});
-	}
-	
-	private void initializeDatatypes() {
-		//
-		// Remove any filters
-		//
-		AttributeStandardSelectorComponent.datatypes.removeAllContainerFilters();
-		//
-		// Initialize data source & GUI properties
-		//
-		this.tableDatatypes.setContainerDataSource(AttributeStandardSelectorComponent.datatypes);
-		this.tableDatatypes.setVisibleColumns(new Object[] {"shortName", "xacmlId"});
-		this.tableDatatypes.setColumnHeaders(new String[] {"Short Name", "XACML Data Type ID"});
-		this.tableDatatypes.setImmediate(true);
-		this.tableDatatypes.setNullSelectionAllowed(false);
-		this.tableDatatypes.setPageLength(10);
-		//
-		// Are we restricted to a certain datatype?
-		//
-		if (this.datatype != null) {
-			//
-			// Datatype restricted
-			//
-			this.tableDatatypes.select(this.datatype.getId());
-			this.tableDatatypes.setEnabled(false);
-			return;
-		}
-		this.tableDatatypes.setSelectable(true);
-		//
-		// Select a default
-		//
-		Datatype defaultDatatype;
-		if (this.attribute == null || this.attribute.getDatatypeBean() == null) {
-			defaultDatatype = JPAUtils.findDatatype(XACML3.ID_DATATYPE_STRING);
-		} else {
-			defaultDatatype = this.attribute.getDatatypeBean();
-		}
-		if (defaultDatatype != null) {
-			this.tableDatatypes.select(defaultDatatype.getId());
-		}
-		//
-		// Respond to events
-		//
-		this.tableDatatypes.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.fireAttributeChanged(self.getAttribute());
-			}
-		});
-	}
-	
-	private void	setupAttributeIDs() {
-		//
-		// Get the current selection (should NOT be null)
-		//
-		Object id = this.comboBoxCategories.getValue();
-		Category category = AttributeStandardSelectorComponent.categories.getItem(id).getEntity();
-		Set<Identifier> attributeIDs = null;
-		if (category.isStandard()) {
-			//
-			// Get the subset of attribute ID's specific to this standard
-			// category.
-			//
-			attributeIDs = XACMLConstants.MAP_STANDARD_CATEGORIES.get(category.getIdentifer());
-		}
-		if (attributeIDs == null) {
-			//
-			// A custom category, there are no default attribute IDs
-			// that we can determine.
-			//
-			attributeIDs = XACMLConstants.STANDARD_ATTRIBUTES;
-		} 
-		//
-		// Reset attribute IDs. Based on the category, add only acceptable
-		// attribute ID's for the category.
-		//
-		Object defaultBean = null;
-		this.tableAttributes.removeAllItems();
-		for (Identifier attributeId : attributeIDs) {
-			BeanItem<AttributeBean> newItem = this.container.addItem(new AttributeBean(category.getIdentifer(), attributeId));
-			if (this.attribute == null) {
-				if (attributeId.equals(XACML3.ID_SUBJECT_SUBJECT_ID) ||
-					attributeId.equals(XACML3.ID_ACTION_ACTION_ID) ||
-					attributeId.equals(XACML3.ID_RESOURCE_RESOURCE_ID) ||
-					attributeId.equals(XACML3.ID_ENVIRONMENT_CURRENT_DATE)) {
-					defaultBean = newItem.getBean();
-				}
-			} else {
-				if (newItem.getBean().getAttributeId().stringValue().equals(this.attribute.getXacmlId())) {
-					defaultBean = newItem.getBean();
-				}
-			}
-		}
-		//
-		// Set the default selection
-		//
-		if (defaultBean != null) {
-			this.tableAttributes.select(defaultBean);
-		}
-	}
-	
-	@Override
-	public void commit() {
-		this.comboBoxCategories.commit();
-		this.tableAttributes.commit();
-		this.tableDatatypes.commit();
-	}
-
-	@Override
-	public Attribute	getAttribute() {
-		Object categoryId = this.comboBoxCategories.getValue();
-		Object attributeId = this.tableAttributes.getValue();
-		Object datatypeId = this.tableDatatypes.getValue();
-		if (attributeId == null || datatypeId == null || categoryId == null) {
-			return null;
-		}
-		AttributeBean attributeBean = this.container.getItem(attributeId).getBean();
-		Datatype datatype = AttributeStandardSelectorComponent.datatypes.getItem(datatypeId).getEntity();
-		Category category = AttributeStandardSelectorComponent.categories.getItem(categoryId).getEntity();
-		if (datatype == null || category == null) {
-			return null;
-		}
-		Attribute attribute = new Attribute(attributeBean.getAttributeId().stringValue());
-		attribute.setCategoryBean(category);
-		attribute.setDatatypeBean(datatype);
-		
-		return attribute;
-	}
-
-	@Override
-	public boolean addListener(AttributeChangedEventListener listener) {
-		return this.notifier.addListener(listener);
-	}
-
-	@Override
-	public boolean removeListener(AttributeChangedEventListener listener) {
-		return this.notifier.removeListener(listener);
-	}
-
-	@Override
-	public void fireAttributeChanged(Attribute attribute) {
-		this.notifier.fireAttributeChanged(attribute);
-	}
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(false);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// comboBoxCategories
-		comboBoxCategories = new ComboBox();
-		comboBoxCategories.setCaption("Select A Category");
-		comboBoxCategories.setImmediate(false);
-		comboBoxCategories.setWidth("-1px");
-		comboBoxCategories.setHeight("-1px");
-		comboBoxCategories.setInvalidAllowed(false);
-		comboBoxCategories.setRequired(true);
-		mainLayout.addComponent(comboBoxCategories);
-		mainLayout.setExpandRatio(comboBoxCategories, 1.0f);
-		
-		// horizontalLayout_2
-		horizontalLayout_2 = buildHorizontalLayout_2();
-		mainLayout.addComponent(horizontalLayout_2);
-		mainLayout.setExpandRatio(horizontalLayout_2, 1.0f);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayout_2() {
-		// common part: create layout
-		horizontalLayout_2 = new HorizontalLayout();
-		horizontalLayout_2.setImmediate(false);
-		horizontalLayout_2.setWidth("-1px");
-		horizontalLayout_2.setHeight("-1px");
-		horizontalLayout_2.setMargin(false);
-		horizontalLayout_2.setSpacing(true);
-		
-		// tableAttributes
-		tableAttributes = new Table();
-		tableAttributes.setCaption("Standard Attributes");
-		tableAttributes.setImmediate(false);
-		tableAttributes.setWidth("-1px");
-		tableAttributes.setHeight("-1px");
-		tableAttributes.setInvalidAllowed(false);
-		tableAttributes.setRequired(true);
-		horizontalLayout_2.addComponent(tableAttributes);
-		
-		// tableDatatypes
-		tableDatatypes = new Table();
-		tableDatatypes.setCaption("Standard Data Types");
-		tableDatatypes.setImmediate(false);
-		tableDatatypes.setWidth("-1px");
-		tableDatatypes.setHeight("-1px");
-		tableDatatypes.setInvalidAllowed(false);
-		tableDatatypes.setRequired(true);
-		horizontalLayout_2.addComponent(tableDatatypes);
-		
-		return horizontalLayout_2;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/CSVPIPConfigurationComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/CSVPIPConfigurationComponent.java
deleted file mode 100644
index ab466b0..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/CSVPIPConfigurationComponent.java
+++ /dev/null
@@ -1,385 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.components;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.PIPConfigParam;
-import org.apache.openaz.xacml.admin.jpa.PIPConfiguration;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventListener;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventNotifier;
-import org.apache.openaz.xacml.std.pip.engines.csv.CSVEngine;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.util.converter.StringToIntegerConverter;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-
-public class CSVPIPConfigurationComponent extends CustomComponent implements FormChangedEventNotifier {
-	
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-
-	@AutoGenerated
-	private TextField textFieldSkip;
-
-	@AutoGenerated
-	private TextField textFieldQuote;
-
-	@AutoGenerated
-	private TextField textFieldDelimiter;
-
-	@AutoGenerated
-	private TextField textFieldFile;
-
-	public static String CLASSNAME = "org.apache.openaz.xacml.std.pip.engines.csv.CSVEngine";
-	
-	
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(CSVPIPConfigurationComponent.class);
-	private final CSVPIPConfigurationComponent self = this;
-	private final BasicNotifier notifier = new BasicNotifier();
-	private final EntityItem<PIPConfiguration> entity;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 * @param entityConfig 
-	 * @param configParamField 
-	 */
-	public CSVPIPConfigurationComponent(EntityItem<PIPConfiguration> entityConfig) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Save
-		//
-		this.entity = entityConfig;
-		//
-		// initialize
-		//
-		this.initialize();
-		//
-		//  Focus
-		//
-		this.textFieldFile.focus();
-	}
-	
-	protected void initialize() {
-		if (logger.isDebugEnabled()) {
-			logger.debug("initializing " + this.entity.getEntity().toString());
-		}
-		//
-		// What are our current values?
-		//
-		Set<PIPConfigParam> unneeded = new HashSet<PIPConfigParam>();
-		for (PIPConfigParam param : this.entity.getEntity().getPipconfigParams()) {
-			if (param.getParamName().equals(CSVEngine.PROP_SOURCE)) {
-				this.textFieldFile.setData(param);
-			} else if (param.getParamName().equals(CSVEngine.PROP_DELIMITER)) {
-				this.textFieldDelimiter.setData(param);
-			} else if (param.getParamName().equals(CSVEngine.PROP_QUOTE)) {
-				this.textFieldQuote.setData(param);
-			} else if (param.getParamName().equals(CSVEngine.PROP_SKIP)) {
-				this.textFieldSkip.setData(param);
-			} else {
-				unneeded.add(param);
-			}
-		}
-		if (unneeded.isEmpty() == false) {
-			this.entity.getEntity().getPipconfigParams().removeAll(unneeded);
-		}
-		//
-		//
-		//
-		this.initializeEntity();
-		this.initializeText();
-	}
-	
-	protected void initializeEntity() {
-		//
-		// Initialize the entity
-		//
-		this.entity.getEntity().setClassname(CLASSNAME);
-		this.entity.getEntity().setRequiresResolvers(true);
-	}
-	
-	protected void initializeText() {
-		//
-		//
-		//
-		this.textFieldFile.setRequired(true);
-		this.textFieldFile.setRequiredError("You need to specify a path to the CSV file on the server.");
-		this.textFieldFile.setImmediate(true);
-		this.textFieldFile.setNullRepresentation("");
-		//
-		//
-		//
-		PIPConfigParam param = (PIPConfigParam) this.textFieldFile.getData();
-		if (param != null) {
-			this.textFieldFile.setValue(param.getParamValue());
-		}
-		this.textFieldFile.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldFile.getData();
-				if (param == null) {
-					param = new PIPConfigParam(CSVEngine.PROP_SOURCE);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldFile.setData(param);
-				}
-				param.setParamValue(self.textFieldFile.getValue());
-				self.fireFormChangedEvent();
-			}			
-		});
-		this.textFieldFile.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldFile.getData();
-				if (param == null) {
-					param = new PIPConfigParam(CSVEngine.PROP_SOURCE);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldFile.setData(param);
-				}
-				param.setParamValue(self.textFieldFile.getValue());
-				self.fireFormChangedEvent();
-			}			
-		});
-		//
-		//
-		//
-		this.textFieldDelimiter.setNullRepresentation("");
-		param = (PIPConfigParam) this.textFieldDelimiter.getData();
-		if (param != null) {
-			this.textFieldDelimiter.setValue(param.getParamValue());
-		}
-		this.textFieldDelimiter.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldDelimiter.getData();
-				if (param == null) {
-					param = new PIPConfigParam(CSVEngine.PROP_DELIMITER);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldDelimiter.setData(param);
-				}
-				param.setParamValue(self.textFieldDelimiter.getValue());
-				self.fireFormChangedEvent();
-			}			
-		});
-		//
-		//
-		//
-		this.textFieldQuote.setNullRepresentation("");
-		param = (PIPConfigParam) this.textFieldQuote.getData();
-		if (param != null) {
-			this.textFieldQuote.setValue(param.getParamValue());
-		}
-		this.textFieldQuote.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldQuote.getData();
-				if (param == null) {
-					param = new PIPConfigParam(CSVEngine.PROP_QUOTE);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldQuote.setData(param);
-				}
-				param.setParamValue(self.textFieldQuote.getValue());
-				self.fireFormChangedEvent();
-			}			
-		});
-		//
-		//
-		//
-		this.textFieldSkip.setNullRepresentation("");
-		param = (PIPConfigParam) this.textFieldSkip.getData();
-		if (param != null) {
-			this.textFieldSkip.setValue(param.getParamValue());
-		}
-		this.textFieldSkip.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldSkip.getData();
-				if (param == null) {
-					param = new PIPConfigParam(CSVEngine.PROP_SKIP);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldSkip.setData(param);
-				}
-				param.setParamValue(self.textFieldSkip.getValue());
-				self.fireFormChangedEvent();
-			}			
-		});
-		this.textFieldSkip.setConverter(new StringToIntegerConverter());
-	}
-	
-	public void validate() throws InvalidValueException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("validate");
-		}
-		this.textFieldFile.validate();
-		this.textFieldDelimiter.validate();
-		this.textFieldQuote.validate();
-		this.textFieldSkip.validate();
-	}
-	
-	public void commit() throws SourceException, InvalidValueException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("commit");
-		}
-		this.textFieldFile.commit();
-		this.textFieldDelimiter.commit();
-		this.textFieldQuote.commit();
-		
-		if (this.textFieldSkip.getValue() == null || this.textFieldSkip.getValue().isEmpty()) {
-			this.entity.getEntity().removePipconfigParam((PIPConfigParam) this.textFieldSkip.getData());
-			this.textFieldSkip.setData(null);
-		}
-		this.textFieldSkip.commit();
-	}
-
-	public void discard() throws SourceException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("discard");
-		}
-		this.textFieldFile.discard();
-		this.textFieldDelimiter.discard();
-		this.textFieldQuote.discard();
-		this.textFieldSkip.discard();
-		
-		this.entity.getEntity().getPipconfigParams().remove(CSVEngine.PROP_SOURCE);
-		this.entity.getEntity().getPipconfigParams().remove(CSVEngine.PROP_DELIMITER);
-		this.entity.getEntity().getPipconfigParams().remove(CSVEngine.PROP_QUOTE);
-		this.entity.getEntity().getPipconfigParams().remove(CSVEngine.PROP_SKIP);
-		this.entity.getEntity().getPipconfigParams().remove(CSVEngine.PROP_MAXSIZE);
-	}
-
-	@Override
-	public boolean addListener(FormChangedEventListener listener) {
-		return this.notifier.addListener(listener);
-	}
-
-	@Override
-	public boolean removeListener(FormChangedEventListener listener) {
-		return this.notifier.removeListener(listener);
-	}
-
-	@Override
-	public void fireFormChangedEvent() {
-		this.notifier.fireFormChangedEvent();
-	}
-	
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldFile
-		textFieldFile = new TextField();
-		textFieldFile.setCaption("Path to CSV File");
-		textFieldFile.setImmediate(false);
-		textFieldFile
-				.setDescription("This is the path to CSV file on the PDP node.");
-		textFieldFile.setWidth("-1px");
-		textFieldFile.setHeight("-1px");
-		textFieldFile.setInvalidAllowed(false);
-		textFieldFile.setRequired(true);
-		textFieldFile
-				.setInputPrompt("Eg. \"c:\\data.csv\" \"http://foo.com/data.csv\"");
-		mainLayout.addComponent(textFieldFile);
-		mainLayout.setExpandRatio(textFieldFile, 1.0f);
-		
-		// textFieldDelimiter
-		textFieldDelimiter = new TextField();
-		textFieldDelimiter.setCaption("Delimiter");
-		textFieldDelimiter.setImmediate(false);
-		textFieldDelimiter
-				.setDescription("Enter a separator character or string that delineates columns in each row.");
-		textFieldDelimiter.setWidth("-1px");
-		textFieldDelimiter.setHeight("-1px");
-		textFieldDelimiter.setInputPrompt("Eg. \",\" or \"|\"");
-		textFieldDelimiter.setNullSettingAllowed(true);
-		mainLayout.addComponent(textFieldDelimiter);
-		mainLayout.setExpandRatio(textFieldDelimiter, 1.0f);
-		
-		// textFieldQuote
-		textFieldQuote = new TextField();
-		textFieldQuote.setCaption("Quote");
-		textFieldQuote.setImmediate(false);
-		textFieldQuote
-				.setDescription("Enter character used for quoted elements.");
-		textFieldQuote.setWidth("-1px");
-		textFieldQuote.setHeight("-1px");
-		textFieldQuote.setInputPrompt("Eg. \" or '");
-		textFieldQuote.setNullSettingAllowed(true);
-		mainLayout.addComponent(textFieldQuote);
-		
-		// textFieldSkip
-		textFieldSkip = new TextField();
-		textFieldSkip.setCaption("Skip Lines");
-		textFieldSkip.setImmediate(false);
-		textFieldSkip
-				.setDescription("Skips the number of lines at the beginning of the file.");
-		textFieldSkip.setWidth("-1px");
-		textFieldSkip.setHeight("-1px");
-		textFieldSkip.setInputPrompt("Eg. 1 or 2");
-		mainLayout.addComponent(textFieldSkip);
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/CustomPIPConfigurationComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/CustomPIPConfigurationComponent.java
deleted file mode 100644
index 043cba7..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/CustomPIPConfigurationComponent.java
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.components;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.PIPConfiguration;
-import org.apache.openaz.xacml.admin.jpa.PIPResolver;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventListener;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventNotifier;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-
-public class CustomPIPConfigurationComponent extends CustomComponent implements FormChangedEventNotifier {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private PIPParameterComponent pipParameterComponent;
-	@AutoGenerated
-	private TextField textFieldClassname;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final EntityItem<?> entity;
-	private static final Log logger	= LogFactory.getLog(CustomPIPConfigurationComponent.class);
-	private final CustomPIPConfigurationComponent self = this;
-	private final BasicNotifier notifier = new BasicNotifier();
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 * @param configParamField 
-	 */
-	public CustomPIPConfigurationComponent(EntityItem<PIPConfiguration> entityConfig) {
-		//
-		// Save
-		//
-		this.entity = entityConfig;
-		
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// InitializeGUI
-		//
-		this.initialize();
-	}
-	
-	protected void initialize() {
-		if (logger.isDebugEnabled()) {
-			logger.debug("initializing " + this.entity.getEntity().toString());
-		}
-		this.initializeEntity();
-		this.initializeText();
-	}
-	
-	protected void initializeEntity() {
-		//
-		// If the entity is persisted, then we are editing
-		// it. So don't remove anything.
-		//
-		if (this.entity.isPersistent()) {
-			return;
-		}
-		//
-		// Not sure if we really should remove stuff. To be
-		// determined later.
-		//
-	}
-	
-	protected void initializeText() {
-		this.textFieldClassname.setRequired(true);
-		this.textFieldClassname.setRequiredError("You must declare the Java classname for the PIP Factory Loader");
-		this.textFieldClassname.setImmediate(true);
-		final Object entity = this.entity.getEntity();
-		if (entity instanceof PIPConfiguration) {
-			this.textFieldClassname.setValue(((PIPConfiguration)entity).getClassname());
-		} else if (entity instanceof PIPResolver) {
-			this.textFieldClassname.setValue(((PIPResolver)entity).getClassname());
-		}
-		//
-		// Respond to events
-		//
-		this.textFieldClassname.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				if (entity instanceof PIPConfiguration) {
-					((PIPConfiguration) entity).setClassname(self.textFieldClassname.getValue());
-				} else if (entity instanceof PIPResolver) {
-					((PIPResolver) entity).setClassname(self.textFieldClassname.getValue());
-				}
-				self.fireFormChangedEvent();
-			}
-		});
-	}
-
-	public void validate() throws InvalidValueException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("validate");
-		}
-		this.textFieldClassname.validate();
-	}
-	
-	public void commit() throws SourceException, InvalidValueException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("commit");
-		}
-		this.textFieldClassname.commit();
-	}
-
-	public void discard() throws SourceException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("discard");
-		}
-	}
-
-	@Override
-	public boolean addListener(FormChangedEventListener listener) {
-		return this.notifier.addListener(listener);
-	}
-
-	@Override
-	public boolean removeListener(FormChangedEventListener listener) {
-		return this.notifier.removeListener(listener);
-	}
-
-	@Override
-	public void fireFormChangedEvent() {
-		this.notifier.fireFormChangedEvent();
-	}
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(false);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldClassname
-		textFieldClassname = new TextField();
-		textFieldClassname.setCaption("Java Classname");
-		textFieldClassname.setImmediate(false);
-		textFieldClassname
-				.setDescription("Java classname of the code implementing the custom PIP.");
-		textFieldClassname.setWidth("-1px");
-		textFieldClassname.setHeight("-1px");
-		textFieldClassname.setInputPrompt("Eg. com.foo.MyPIP");
-		mainLayout.addComponent(textFieldClassname);
-		mainLayout.setExpandRatio(textFieldClassname, 1.0f);
-		
-		// pipParameterComponent
-		pipParameterComponent = new PIPParameterComponent(this.entity.getEntity());
-		pipParameterComponent.setImmediate(false);
-		pipParameterComponent.setWidth("-1px");
-		pipParameterComponent.setHeight("-1px");
-		mainLayout.addComponent(pipParameterComponent);
-		
-		return mainLayout;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/EnumerationEditorComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/EnumerationEditorComponent.java
deleted file mode 100644
index eafbcad..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/EnumerationEditorComponent.java
+++ /dev/null
@@ -1,386 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.components;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.ConstraintValue;
-import org.apache.openaz.xacml.api.Identifier;
-import org.apache.openaz.xacml.api.XACML3;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Container;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator;
-import com.vaadin.data.util.BeanItemContainer;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Component;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.Field;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.TableFieldFactory;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-
-public class EnumerationEditorComponent extends CustomComponent implements Validator {
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-
-	@AutoGenerated
-	private HorizontalLayout horizontalLayout_1;
-
-	@AutoGenerated
-	private Button buttonClearAll;
-
-	@AutoGenerated
-	private Button buttonRemove;
-
-	@AutoGenerated
-	private Button buttonAdd;
-
-	@AutoGenerated
-	private Table tableEnumerations;
-
-	private static final long serialVersionUID = -1L;
-	private static final Log logger	= LogFactory.getLog(EnumerationEditorComponent.class);
-	private final EnumerationEditorComponent self = this;
-	private final Attribute attribute;
-	private Identifier datatype;
-	private final BeanItemContainer<ConstraintValue> beanContainer;
-
-	public EnumerationEditorComponent(Attribute attribute, Identifier datatype) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Save our attribute
-		//
-		this.attribute = attribute;
-		this.datatype = datatype;
-		//
-		// Construct a bean container that the 
-		// table uses to manage the values.
-		//
-		this.beanContainer = new BeanItemContainer<ConstraintValue>(ConstraintValue.class);
-		//
-		// Initialize our components
-		//
-		this.initializeTable();
-		this.initializeButtons();
-	}
-	
-	private void initializeTable() {
-		//
-		// Add the current enumeration values into the
-		// bean container.
-		//
-		for (ConstraintValue value : this.attribute.getConstraintValues()) {
-			if (value.getProperty().equals("Enumeration")) {
-				this.beanContainer.addBean(value);
-			}
-		}
-		//
-		// Now hook the bean container to the table
-		//
-		this.tableEnumerations.setContainerDataSource(beanContainer);
-		//
-		// We have to manually create the text field because we need
-		// to set a validator.
-		//
-		this.tableEnumerations.setTableFieldFactory(new TableFieldFactory() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Field<?> createField(Container container, Object itemId,
-					Object propertyId, Component uiContext) {
-				if (propertyId.toString().equals("value")) {
-					final TextField text = new TextField();
-					text.setImmediate(true);
-					text.setNullRepresentation("");
-					text.setNullSettingAllowed(false);
-					text.setRequired(true);
-					text.setRequiredError("Cannot have empty enumeration values.");
-					text.addValidator(self);
-					return text;
-				}
-				return null;
-			}
-		});
-		//
-		// Finish setting up the table.
-		//
-		this.tableEnumerations.setVisibleColumns(new Object[] {"value"});
-		this.tableEnumerations.setColumnHeaders(new String[] {"Enumeration Value"});
-		this.tableEnumerations.setSelectable(true);
-		this.tableEnumerations.setEditable(true);
-		this.tableEnumerations.setImmediate(true);
-		if (this.tableEnumerations.size() == 0) {
-			this.tableEnumerations.setPageLength(3);
-		} else {
-			this.tableEnumerations.setPageLength(this.tableEnumerations.size() + 1);
-		}
-		//
-		// As the user select items, enable/disable buttons
-		//
-		this.tableEnumerations.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.buttonRemove.setEnabled(self.tableEnumerations.getValue() != null);
-			}
-			
-		});
-	}
-	
-	private void initializeButtons() {
-		//
-		// Adding new values
-		//
-		this.buttonAdd.setImmediate(true);
-		this.buttonAdd.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				//
-				// Create a new value object
-				//
-				ConstraintValue newValue = new ConstraintValue("Enumeration", "");
-				//
-				// Associate it with the attribute
-				//
-				newValue.setAttribute(self.attribute);
-				//
-				// Add it into the attribute's internal list
-				//
-				self.attribute.addConstraintValue(newValue);
-				//
-				// Now we can add it to the GUI
-				//
-				Item item = self.tableEnumerations.addItem(newValue);
-				if (item != null) {
-					self.tableEnumerations.select(newValue);
-					self.tableEnumerations.focus();
-				}
-				//
-				// Make sure this button is now enabled
-				//
-				self.buttonClearAll.setEnabled(true);
-			}
-		});
-		//
-		// Removing values - nothing is selected to begin with so
-		// disable the button.
-		//
-		this.buttonRemove.setEnabled(false);
-		this.buttonRemove.setImmediate(true);
-		this.buttonRemove.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				//
-				// Get the selected value
-				//
-				Object value = self.tableEnumerations.getValue();
-				//
-				// Was it selected or unselected (i.e. null)? If so, remove it
-				// from the table
-				//
-				if (value != null && self.tableEnumerations.removeItem(value)) {
-					//
-					// Dis-associate it with the attribute
-					//
-					((ConstraintValue) value).setAttribute(null);
-					//
-					// Now remove it from the attribute's internal list
-					//
-					self.attribute.removeConstraintValue((ConstraintValue) value);
-					//
-					// If there are no items, then disable this button
-					//
-					if (self.tableEnumerations.size() == 0) {
-						self.buttonClearAll.setEnabled(false);
-					}
-				}
-			}
-			
-		});
-		//
-		// Clearing all the values, set it enabled if we have anything
-		//
-		this.buttonClearAll.setImmediate(true);
-		this.buttonClearAll.setEnabled(this.tableEnumerations.size() > 0);
-		this.buttonClearAll.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				//
-				// Iterate all the values
-				//
-				for (Object id : self.tableEnumerations.getItemIds()) {
-					//
-					// Get the value object (it is the id)
-					//
-					ConstraintValue value = (ConstraintValue) id;
-					//
-					// Dis-associate it with the attribute
-					//
-					value.setAttribute(null);
-					//
-					// Now remove it from the attribute's internal list
-					//
-					self.attribute.removeConstraintValue(value);
-				}
-				//
-				// Remove everything from the table
-				//
-				self.tableEnumerations.removeAllItems();
-				//
-				// Now disable this button
-				//
-				self.buttonClearAll.setEnabled(false);
-			}			
-		});
-	}
-	
-	public void setupDatatype(Identifier id) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("setupDatatype: " + datatype);
-		}
-		this.datatype = id;
-		//
-		// Initiate a validate
-		//
-		this.tableEnumerations.validate();
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value == null || value.toString().length() == 0) {
-			return;
-		}
-		if (datatype.equals(XACML3.ID_DATATYPE_INTEGER)) {
-			try {
-				Integer.parseInt(value.toString());
-			} catch(NumberFormatException e) {
-				throw new InvalidValueException(e.getLocalizedMessage());
-			}
-			return;
-		}
-		if (datatype.equals(XACML3.ID_DATATYPE_DOUBLE)) {
-			try {
-				Double.parseDouble(value.toString());
-			} catch(NumberFormatException e) {
-				throw new InvalidValueException(e.getLocalizedMessage());
-			}
-			return;
-		}
-	}
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// tableEnumerations
-		tableEnumerations = new Table();
-		tableEnumerations.setCaption("Enumeration Values");
-		tableEnumerations.setImmediate(true);
-		tableEnumerations
-				.setDescription("Enter possible values for the attribute.");
-		tableEnumerations.setWidth("100.0%");
-		tableEnumerations.setHeight("-1px");
-		tableEnumerations.setInvalidAllowed(false);
-		mainLayout.addComponent(tableEnumerations);
-		mainLayout.setExpandRatio(tableEnumerations, 1.0f);
-		
-		// horizontalLayout_1
-		horizontalLayout_1 = buildHorizontalLayout_1();
-		mainLayout.addComponent(horizontalLayout_1);
-		mainLayout.setExpandRatio(horizontalLayout_1, 1.0f);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayout_1() {
-		// common part: create layout
-		horizontalLayout_1 = new HorizontalLayout();
-		horizontalLayout_1.setImmediate(false);
-		horizontalLayout_1.setWidth("-1px");
-		horizontalLayout_1.setHeight("-1px");
-		horizontalLayout_1.setMargin(false);
-		horizontalLayout_1.setSpacing(true);
-		
-		// buttonAdd
-		buttonAdd = new Button();
-		buttonAdd.setCaption("Add");
-		buttonAdd.setImmediate(true);
-		buttonAdd.setDescription("Add a new enumeration value.");
-		buttonAdd.setWidth("-1px");
-		buttonAdd.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonAdd);
-		horizontalLayout_1.setComponentAlignment(buttonAdd, new Alignment(9));
-		
-		// buttonRemove
-		buttonRemove = new Button();
-		buttonRemove.setCaption("Remove");
-		buttonRemove.setImmediate(true);
-		buttonRemove.setDescription("Remove the selected enumeration value.");
-		buttonRemove.setWidth("-1px");
-		buttonRemove.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonRemove);
-		horizontalLayout_1.setComponentAlignment(buttonRemove,
-				new Alignment(10));
-		
-		// buttonClearAll
-		buttonClearAll = new Button();
-		buttonClearAll.setCaption("Clear All");
-		buttonClearAll.setImmediate(false);
-		buttonClearAll.setDescription("Clears all the values out.");
-		buttonClearAll.setWidth("-1px");
-		buttonClearAll.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonClearAll);
-		
-		return horizontalLayout_1;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/HyperCSVPIPConfigurationComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/HyperCSVPIPConfigurationComponent.java
deleted file mode 100644
index 67f7faf..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/HyperCSVPIPConfigurationComponent.java
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.components;
-
-import java.util.HashSet;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.PIPConfigParam;
-import org.apache.openaz.xacml.admin.jpa.PIPConfiguration;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventListener;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventNotifier;
-import org.apache.openaz.xacml.std.pip.engines.csv.HyperCSVEngine;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-
-public class HyperCSVPIPConfigurationComponent extends CustomComponent implements FormChangedEventNotifier {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private TextField textFieldDefinition;
-	@AutoGenerated
-	private TextField textFieldTarget;
-	@AutoGenerated
-	private TextField textFieldSource;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	public static final String CLASSNAME = "org.apache.openaz.xacml.std.pip.engines.csv.HyperCSVEngine";
-	
-	private final EntityItem<PIPConfiguration> entity;
-	private static final Log logger	= LogFactory.getLog(CustomPIPConfigurationComponent.class);
-	private final HyperCSVPIPConfigurationComponent self = this;
-	private final BasicNotifier notifier = new BasicNotifier();
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public HyperCSVPIPConfigurationComponent(EntityItem<PIPConfiguration> entityConfig) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Save
-		//
-		this.entity = entityConfig;
-		//
-		// Initialize
-		//
-		this.initialize();
-	}
-
-	protected void initialize() {
-		if (logger.isDebugEnabled()) {
-			logger.debug("initializing " + this.entity.getEntity().toString());
-		}
-		//
-		// What are our current values?
-		//
-		Set<PIPConfigParam> unneeded = new HashSet<PIPConfigParam>();
-		for (PIPConfigParam param : this.entity.getEntity().getPipconfigParams()) {
-			if (param.getParamName().equals(HyperCSVEngine.PROP_SOURCE)) {
-				this.textFieldSource.setData(param);
-			} else if (param.getParamName().equals(HyperCSVEngine.PROP_TARGET)) {
-				this.textFieldTarget.setData(param);
-			} else if (param.getParamName().equals(HyperCSVEngine.PROP_DEFINITION)) {
-				this.textFieldDefinition.setData(param);
-			} else {
-				unneeded.add(param);
-			}
-		}
-		if (unneeded.isEmpty() == false) {
-			this.entity.getEntity().getPipconfigParams().removeAll(unneeded);
-		}
-		//
-		//
-		//
-		this.initializeEntity();
-		this.initializeText();
-	}
-	
-	protected void initializeEntity() {
-		//
-		// Initialize the entity
-		//
-		this.entity.getEntity().setClassname(CLASSNAME);
-		this.entity.getEntity().setRequiresResolvers(true);
-	}
-	
-	protected void initializeText() {
-		//
-		//
-		//
-		this.textFieldSource.setNullRepresentation("");
-		PIPConfigParam param = (PIPConfigParam) this.textFieldSource.getData();
-		if (param != null) {
-			this.textFieldSource.setValue(param.getParamValue());
-		}
-		this.textFieldSource.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldSource.getData();
-				if (param == null) {
-					param = new PIPConfigParam(HyperCSVEngine.PROP_SOURCE);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldSource.setData(param);
-				}
-				param.setParamValue(self.textFieldSource.getValue());
-				self.fireFormChangedEvent();
-			}
-		});
-		this.textFieldSource.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldSource.getData();
-				if (param == null) {
-					param = new PIPConfigParam(HyperCSVEngine.PROP_SOURCE);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldSource.setData(param);
-				}
-				param.setParamValue(self.textFieldSource.getValue());
-				self.fireFormChangedEvent();
-			}
-		});
-		//
-		//
-		//
-		this.textFieldTarget.setNullRepresentation("");
-		param = (PIPConfigParam) this.textFieldTarget.getData();
-		if (param != null) {
-			this.textFieldTarget.setValue(param.getParamValue());
-		}
-		this.textFieldTarget.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldTarget.getData();
-				if (param == null) {
-					param = new PIPConfigParam(HyperCSVEngine.PROP_TARGET);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldTarget.setData(param);
-				}
-				param.setParamValue(self.textFieldTarget.getValue());
-				self.fireFormChangedEvent();
-			}
-		});
-		this.textFieldTarget.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldTarget.getData();
-				if (param == null) {
-					param = new PIPConfigParam(HyperCSVEngine.PROP_TARGET);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldTarget.setData(param);
-				}
-				param.setParamValue(self.textFieldTarget.getValue());
-				self.fireFormChangedEvent();
-			}
-		});
-		//
-		//
-		//
-		this.textFieldDefinition.setNullRepresentation("");
-		param = (PIPConfigParam) this.textFieldDefinition.getData();
-		if (param != null) {
-			this.textFieldDefinition.setValue(param.getParamValue());
-		}
-		this.textFieldDefinition.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldDefinition.getData();
-				if (param == null) {
-					param = new PIPConfigParam(HyperCSVEngine.PROP_DEFINITION);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldDefinition.setData(param);
-				}
-				param.setParamValue(self.textFieldDefinition.getValue());
-				self.fireFormChangedEvent();
-			}
-		});
-		this.textFieldDefinition.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldDefinition.getData();
-				if (param == null) {
-					param = new PIPConfigParam(HyperCSVEngine.PROP_DEFINITION);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldDefinition.setData(param);
-				}
-				param.setParamValue(self.textFieldDefinition.getValue());
-				self.fireFormChangedEvent();
-			}
-		});
-	}
-	
-	public void validate() throws InvalidValueException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("validate");
-		}
-		this.textFieldSource.validate();
-		this.textFieldTarget.validate();
-		this.textFieldDefinition.validate();
-	}
-	
-	public void commit() throws SourceException, InvalidValueException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("commit");
-		}
-		this.textFieldSource.commit();
-		this.textFieldTarget.commit();
-		this.textFieldDefinition.commit();
-	}
-
-	public void discard() throws SourceException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("discard");
-		}
-		this.textFieldSource.discard();
-		this.textFieldTarget.discard();
-		this.textFieldDefinition.discard();
-		//??
-		this.entity.getEntity().getPipconfigParams().remove(HyperCSVEngine.PROP_SOURCE);
-		this.entity.getEntity().getPipconfigParams().remove(HyperCSVEngine.PROP_TARGET);
-		this.entity.getEntity().getPipconfigParams().remove(HyperCSVEngine.PROP_DEFINITION);
-	}
-
-	@Override
-	public boolean addListener(FormChangedEventListener listener) {
-		return this.notifier.addListener(listener);
-	}
-
-	@Override
-	public boolean removeListener(FormChangedEventListener listener) {
-		return this.notifier.removeListener(listener);
-	}
-
-	@Override
-	public void fireFormChangedEvent() {
-		this.notifier.fireFormChangedEvent();
-	}
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(false);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldSource
-		textFieldSource = new TextField();
-		textFieldSource.setCaption("CSV Source File");
-		textFieldSource.setImmediate(false);
-		textFieldSource.setDescription("Path to CSV file");
-		textFieldSource.setWidth("-1px");
-		textFieldSource.setHeight("-1px");
-		textFieldSource.setInvalidAllowed(false);
-		textFieldSource.setRequired(true);
-		textFieldSource.setInputPrompt("Eg. /opt/app/data.csv");
-		mainLayout.addComponent(textFieldSource);
-		
-		// textFieldTarget
-		textFieldTarget = new TextField();
-		textFieldTarget.setCaption("Table");
-		textFieldTarget.setImmediate(false);
-		textFieldTarget.setDescription("Name of database table to be created.");
-		textFieldTarget.setWidth("-1px");
-		textFieldTarget.setHeight("-1px");
-		textFieldTarget.setInvalidAllowed(false);
-		textFieldTarget.setRequired(true);
-		mainLayout.addComponent(textFieldTarget);
-		
-		// textFieldDefinition
-		textFieldDefinition = new TextField();
-		textFieldDefinition.setCaption("Table Definition");
-		textFieldDefinition.setImmediate(false);
-		textFieldDefinition.setDescription("SQL Table Definition");
-		textFieldDefinition.setWidth("-1px");
-		textFieldDefinition.setHeight("-1px");
-		textFieldDefinition.setInvalidAllowed(false);
-		textFieldDefinition.setRequired(true);
-		mainLayout.addComponent(textFieldDefinition);
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/LDAPPIPConfigurationComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/LDAPPIPConfigurationComponent.java
deleted file mode 100644
index 608b0ac..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/LDAPPIPConfigurationComponent.java
+++ /dev/null
@@ -1,644 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.components;
-
-import java.util.HashSet;
-import java.util.Hashtable;
-import java.util.Set;
-
-import javax.naming.Context;
-import javax.naming.NamingException;
-import javax.naming.directory.DirContext;
-import javax.naming.directory.InitialDirContext;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.PIPConfigParam;
-import org.apache.openaz.xacml.admin.jpa.PIPConfiguration;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventListener;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventNotifier;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.server.Page;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.Notification;
-import com.vaadin.ui.Notification.Type;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-
-public class LDAPPIPConfigurationComponent extends CustomComponent implements FormChangedEventNotifier {
-	
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-
-	@AutoGenerated
-	private Button buttonTest;
-
-	@AutoGenerated
-	private TextField textFieldScope;
-
-	@AutoGenerated
-	private TextField textFieldCredentials;
-
-	@AutoGenerated
-	private TextField textFieldPrincipal;
-
-	@AutoGenerated
-	private ComboBox comboBoxAuthentication;
-
-	@AutoGenerated
-	private TextField textFieldProviderURL;
-
-	@AutoGenerated
-	private TextField textFieldFactory;
-
-	public static String CLASSNAME = "org.apache.openaz.xacml.std.pip.engines.ldap.LDAPEngine";
-	
-	public static String LDAP_CONTEXT = Context.INITIAL_CONTEXT_FACTORY;
-	public static String LDAP_URL = Context.PROVIDER_URL;
-	public static String LDAP_AUTH = "authentication";
-	public static String LDAP_PRINCIPAL = "principal";
-	public static String LDAP_CREDENTIALS = "credentials";
-	public static String LDAP_SCOPE = "scope";
-	
-	public static String LDAP_DEFAULT_CONTEXT = "com.sun.jndi.ldap.LdapCtxFactory";
-	
-	public static String LDAP_AUTH_ANONYMOUS = "anonymous";
-	public static String LDAP_AUTH_SIMPLE = "simple";
-	public static String LDAP_AUTH_SASL = "SASL";	//????
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(LDAPPIPConfigurationComponent.class);
-	private final LDAPPIPConfigurationComponent self = this;
-	private final BasicNotifier notifier = new BasicNotifier();
-	private final EntityItem<PIPConfiguration> entity;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 * @param configParamField 
-	 */
-	public LDAPPIPConfigurationComponent(EntityItem<PIPConfiguration> entity) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Save
-		//
-		this.entity = entity;
-		//
-		// Initialize
-		//
-		this.initialize();
-	}
-	
-	protected void initialize() {
-		if (logger.isDebugEnabled()) {
-			logger.debug("initializing " + this.entity.getEntity().toString());
-		}
-		//
-		// Iterate any existing values
-		//
-		Set<PIPConfigParam> unneeded = new HashSet<PIPConfigParam>();
-		for (PIPConfigParam param : this.entity.getEntity().getPipconfigParams()) {
-			if (param.getParamName().equals(LDAP_CONTEXT)) {
-				this.textFieldFactory.setData(param);
-			} else if (param.getParamName().equals(LDAP_URL)) {
-				this.textFieldProviderURL.setData(param);
-			} else if (param.getParamName().equals(LDAP_AUTH)) {
-				this.comboBoxAuthentication.setData(param);
-			} else if (param.getParamName().equals(LDAP_PRINCIPAL)) {
-				this.textFieldPrincipal.setData(param);
-			} else if (param.getParamName().equals(LDAP_CREDENTIALS)) {
-				this.textFieldCredentials.setData(param);
-			} else if (param.getParamName().equals(LDAP_SCOPE)) {
-				this.textFieldScope.setData(param);
-			} else {
-				unneeded.add(param);
-			}
-		}
-		//
-		// Get rid of unneeded parameters
-		//
-		if (unneeded.isEmpty() == false) {
-			this.entity.getEntity().getPipconfigParams().removeAll(unneeded);
-		}
-		//
-		// Initialize GUI
-		//
-		this.initializeEntity();
-		this.initializeCombo();
-		this.initializeText();
-		this.initializeButtons();
-	}
-	
-	protected void initializeEntity() {
-		//
-		// Initialize the entity
-		//
-		this.entity.getEntity().setClassname(CLASSNAME);
-		this.entity.getEntity().setRequiresResolvers(true);
-	}
-	
-	protected void initializeCombo() {
-		//
-		// GUI properties
-		//
-		this.comboBoxAuthentication.setImmediate(true);
-		this.comboBoxAuthentication.setNullSelectionAllowed(false);
-		this.comboBoxAuthentication.setRequired(true);
-		this.comboBoxAuthentication.setRequiredError("You must select an authentication mechanism");
-		//
-		// Initial set of items
-		//
-		this.comboBoxAuthentication.addItem(LDAP_AUTH_ANONYMOUS);
-		this.comboBoxAuthentication.addItem(LDAP_AUTH_SIMPLE);
-		this.comboBoxAuthentication.addItem(LDAP_AUTH_SASL);
-		//
-		// Ensure the authentication combo is selected to something.
-		//
-		PIPConfigParam param = (PIPConfigParam) this.comboBoxAuthentication.getData();
-		if (param == null) {
-			param = new PIPConfigParam(LDAP_AUTH, LDAP_AUTH_ANONYMOUS);
-			this.entity.getEntity().addPipconfigParam(param);
-			this.comboBoxAuthentication.setData(param);
-			this.comboBoxAuthentication.select(param.getParamValue());
-		} else {
-			//
-			// Is this custom?
-			//
-			this.comboBoxAuthentication.select(param.getParamValue());
-			if (this.comboBoxAuthentication.getValue().equals(param.getParamValue()) == false) {
-				this.comboBoxAuthentication.addItem(param.getParamValue());
-				this.comboBoxAuthentication.select(param.getParamValue());
-			}
-		}
-		//
-		// Respond to events
-		//
-		this.comboBoxAuthentication.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.comboBoxAuthentication.getData();
-				if (param == null) {
-					param = new PIPConfigParam(LDAP_AUTH, self.comboBoxAuthentication.getValue().toString());
-					self.entity.getEntity().addPipconfigParam(param);
-					self.comboBoxAuthentication.setData(param);
-				}
-				param.setParamValue(self.comboBoxAuthentication.getValue().toString());
-				self.fireFormChangedEvent();
-			}		
-		});
-	}
-	
-	protected void initializeText() {
-		//
-		//
-		//
-		this.textFieldFactory.setImmediate(true);
-		this.textFieldFactory.setNullRepresentation("");
-		//
-		// We can initialize this if there is no value
-		//
-		PIPConfigParam param = (PIPConfigParam) this.textFieldFactory.getData();
-		if (param == null) {
-			param = new PIPConfigParam(LDAP_CONTEXT, LDAP_DEFAULT_CONTEXT);
-			this.entity.getEntity().addPipconfigParam(param);
-			this.textFieldFactory.setData(param);
-		}
-		this.textFieldFactory.setValue(param.getParamValue());
-		this.textFieldFactory.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldFactory.getData();
-				if (param == null) {
-					param = new PIPConfigParam(LDAP_CONTEXT);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldFactory.setData(param);
-				}
-				param.setParamValue(self.textFieldFactory.getValue());
-				self.fireFormChangedEvent();
-			}
-		});
-		this.textFieldFactory.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldFactory.getData();
-				if (param == null) {
-					param = new PIPConfigParam(LDAP_CONTEXT);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldFactory.setData(param);
-				}
-				param.setParamValue(self.textFieldFactory.getValue());
-				self.fireFormChangedEvent();
-			}
-		});
-		//
-		//
-		//
-		this.textFieldProviderURL.setImmediate(true);
-		this.textFieldProviderURL.setNullRepresentation("");
-		param = (PIPConfigParam) this.textFieldProviderURL.getData();
-		if (param != null) {
-			this.textFieldProviderURL.setValue(param.getParamValue());
-		}		
-		this.textFieldProviderURL.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldProviderURL.getData();
-				if (param == null) {
-					param = new PIPConfigParam(LDAP_URL);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldProviderURL.setData(param);
-				}
-				param.setParamValue(self.textFieldProviderURL.getValue());
-				self.fireFormChangedEvent();
-			}			
-		});
-		this.textFieldProviderURL.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldProviderURL.getData();
-				if (param == null) {
-					param = new PIPConfigParam(LDAP_URL);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldProviderURL.setData(param);
-				}
-				param.setParamValue(self.textFieldProviderURL.getValue());
-				self.fireFormChangedEvent();
-			}			
-		});
-		//
-		//
-		//
-		this.textFieldPrincipal.setImmediate(true);
-		this.textFieldPrincipal.setNullRepresentation("");
-		param = (PIPConfigParam) this.textFieldPrincipal.getData();
-		if (param != null) {
-			this.textFieldPrincipal.setValue(param.getParamValue());
-		}		
-		this.textFieldPrincipal.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldPrincipal.getData();
-				if (param == null) {
-					param = new PIPConfigParam(LDAP_PRINCIPAL);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldPrincipal.setData(param);
-				}
-				param.setParamValue(self.textFieldPrincipal.getValue());
-				self.fireFormChangedEvent();
-			}			
-		});
-		this.textFieldPrincipal.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldPrincipal.getData();
-				if (param == null) {
-					param = new PIPConfigParam(LDAP_PRINCIPAL);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldPrincipal.setData(param);
-				}
-				param.setParamValue(self.textFieldPrincipal.getValue());
-				self.fireFormChangedEvent();
-			}			
-		});
-		//
-		//
-		//
-		this.textFieldCredentials.setNullRepresentation("");
-		param = (PIPConfigParam) this.textFieldCredentials.getData();
-		if (param != null) {
-			this.textFieldCredentials.setValue(param.getParamValue());
-		}		
-		this.textFieldCredentials.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldCredentials.getData();
-				if (param == null) {
-					param = new PIPConfigParam(LDAP_CREDENTIALS);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldCredentials.setData(param);
-				}
-				param.setParamValue(self.textFieldCredentials.getValue());
-				self.fireFormChangedEvent();
-			}			
-		});
-		this.textFieldCredentials.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldCredentials.getData();
-				if (param == null) {
-					param = new PIPConfigParam(LDAP_CREDENTIALS);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldCredentials.setData(param);
-				}
-				param.setParamValue(self.textFieldCredentials.getValue());
-				self.fireFormChangedEvent();
-			}			
-		});
-		//
-		//
-		//
-		this.textFieldScope.setNullRepresentation("");
-		param = (PIPConfigParam) this.textFieldScope.getData();
-		if (param == null) {
-			param = new PIPConfigParam(LDAP_SCOPE, "subtree");
-			this.entity.getEntity().addPipconfigParam(param);
-			this.textFieldScope.setData(param);
-		}
-		this.textFieldScope.setValue(param.getParamValue());
-		this.textFieldScope.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldScope.getData();
-				if (param == null) {
-					param = new PIPConfigParam(LDAP_SCOPE);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldScope.setData(param);
-				}
-				param.setParamValue(self.textFieldScope.getValue());
-				self.fireFormChangedEvent();
-			}			
-		});
-		this.textFieldScope.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldScope.getData();
-				if (param == null) {
-					param = new PIPConfigParam(LDAP_SCOPE);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldScope.setData(param);
-				}
-				param.setParamValue(self.textFieldScope.getValue());
-				self.fireFormChangedEvent();
-			}			
-		});
-	}
-	
-	protected void initializeButtons() {
-		this.buttonTest.setImmediate(true);
-		this.buttonTest.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.testLDAPConnection();
-			}
-		});
-	}
-	
-	protected void testLDAPConnection() {
-		Hashtable<String, String> env = new Hashtable<String, String>();
-		env.put(Context.INITIAL_CONTEXT_FACTORY, this.textFieldFactory.getValue());
-		env.put(Context.PROVIDER_URL, this.textFieldProviderURL.getValue());
-		env.put(Context.SECURITY_PRINCIPAL, this.textFieldPrincipal.getValue());
-		env.put(Context.SECURITY_CREDENTIALS, this.textFieldCredentials.getValue());
-
-		String auth = this.comboBoxAuthentication.getValue().toString();
-		env.put(Context.SECURITY_AUTHENTICATION, auth);
-		//
-		// Do we need to do anything?
-		//
-		/*
-		if (auth.equals(LDAP_AUTH_ANONYMOUS)) {
-			
-		} else if (auth.equals(LDAP_AUTH_SIMPLE)) {
-			
-		} else if (auth.equals(LDAP_AUTH_SASL)) {
-			
-		}
-		*/
-
-		DirContext ctx = null;
-		try {
-		   ctx = new InitialDirContext(env);
-			new Notification("Success!",
-				    "Connection Established!",
-				    Type.HUMANIZED_MESSAGE, true)
-				    .show(Page.getCurrent());			
-		} catch (NamingException e) {
-		   logger.error(e);
-			new Notification("Connection Failed",
-				    "<br/>" + e.getLocalizedMessage(),
-				    Type.ERROR_MESSAGE, true)
-				    .show(Page.getCurrent());
-		} finally {
-			try {
-				if (ctx != null) {
-					ctx.close();
-				}
-			} catch (NamingException idontcare) { //NOPMD
-			}
-		}
-	}
-	
-	public void validate() throws InvalidValueException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("validate");
-		}
-		this.comboBoxAuthentication.validate();
-		this.textFieldFactory.validate();
-		this.textFieldProviderURL.validate();
-		this.textFieldPrincipal.validate();
-		this.textFieldCredentials.validate();
-		this.textFieldScope.validate();
-	}
-
-	public void commit() throws SourceException, InvalidValueException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("commit");
-		}
-		this.comboBoxAuthentication.commit();
-		this.textFieldFactory.commit();
-		this.textFieldProviderURL.commit();
-		this.textFieldPrincipal.commit();
-		this.textFieldCredentials.commit();
-		this.textFieldScope.commit();
-	}
-	
-	public void discard() throws SourceException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("discard");
-		}
-		
-		this.textFieldFactory.discard();
-		this.textFieldProviderURL.discard();
-		this.textFieldPrincipal.discard();
-		this.textFieldCredentials.discard();
-		this.textFieldScope.discard();
-		/*
-		this.entity.getEntity().getPipconfigParams().remove(LDAP_CONTEXT);
-		this.entity.getEntity().getPipconfigParams().remove(LDAP_URL);
-		this.entity.getEntity().getPipconfigParams().remove(LDAP_AUTH);
-		this.entity.getEntity().getPipconfigParams().remove(LDAP_PRINCIPAL);
-		this.entity.getEntity().getPipconfigParams().remove(LDAP_CREDENTIALS);
-		this.entity.getEntity().getPipconfigParams().remove(LDAP_SCOPE);
-		*/
-	}
-
-	@Override
-	public boolean addListener(FormChangedEventListener listener) {
-		return this.notifier.addListener(listener);
-	}
-
-	@Override
-	public boolean removeListener(FormChangedEventListener listener) {
-		return this.notifier.removeListener(listener);
-	}
-
-	@Override
-	public void fireFormChangedEvent() {
-		this.notifier.fireFormChangedEvent();
-	}
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldFactory
-		textFieldFactory = new TextField();
-		textFieldFactory.setCaption("Initial Context Factory");
-		textFieldFactory.setImmediate(false);
-		textFieldFactory.setWidth("-1px");
-		textFieldFactory.setHeight("-1px");
-		textFieldFactory.setInvalidAllowed(false);
-		textFieldFactory.setRequired(true);
-		textFieldFactory.setInputPrompt("com.sun.jndi.ldap.LdapCtxFactory");
-		mainLayout.addComponent(textFieldFactory);
-		mainLayout.setExpandRatio(textFieldFactory, 1.0f);
-		
-		// textFieldProviderURL
-		textFieldProviderURL = new TextField();
-		textFieldProviderURL.setCaption("Provider URL");
-		textFieldProviderURL.setImmediate(false);
-		textFieldProviderURL.setWidth("-1px");
-		textFieldProviderURL.setHeight("-1px");
-		textFieldProviderURL.setInvalidAllowed(false);
-		textFieldProviderURL.setRequired(true);
-		textFieldProviderURL
-				.setInputPrompt("Eg. ldap://localhost:389/o=JNDITutorial");
-		mainLayout.addComponent(textFieldProviderURL);
-		mainLayout.setExpandRatio(textFieldProviderURL, 1.0f);
-		
-		// comboBoxAuthentication
-		comboBoxAuthentication = new ComboBox();
-		comboBoxAuthentication.setCaption("Authentication");
-		comboBoxAuthentication.setImmediate(false);
-		comboBoxAuthentication.setWidth("-1px");
-		comboBoxAuthentication.setHeight("-1px");
-		comboBoxAuthentication.setRequired(true);
-		mainLayout.addComponent(comboBoxAuthentication);
-		mainLayout.setExpandRatio(comboBoxAuthentication, 1.0f);
-		
-		// textFieldPrincipal
-		textFieldPrincipal = new TextField();
-		textFieldPrincipal.setCaption("Principal");
-		textFieldPrincipal.setImmediate(false);
-		textFieldPrincipal.setWidth("-1px");
-		textFieldPrincipal.setHeight("-1px");
-		textFieldPrincipal.setNullSettingAllowed(true);
-		mainLayout.addComponent(textFieldPrincipal);
-		mainLayout.setExpandRatio(textFieldPrincipal, 1.0f);
-		
-		// textFieldCredentials
-		textFieldCredentials = new TextField();
-		textFieldCredentials.setCaption("Credentials");
-		textFieldCredentials.setImmediate(false);
-		textFieldCredentials.setWidth("-1px");
-		textFieldCredentials.setHeight("-1px");
-		textFieldCredentials.setNullSettingAllowed(true);
-		mainLayout.addComponent(textFieldCredentials);
-		mainLayout.setExpandRatio(textFieldCredentials, 1.0f);
-		
-		// textFieldScope
-		textFieldScope = new TextField();
-		textFieldScope.setCaption("Scope");
-		textFieldScope.setImmediate(false);
-		textFieldScope.setWidth("-1px");
-		textFieldScope.setHeight("-1px");
-		textFieldScope.setInvalidAllowed(false);
-		textFieldScope.setRequired(true);
-		textFieldScope.setInputPrompt("Eg. subtree");
-		mainLayout.addComponent(textFieldScope);
-		
-		// buttonTest
-		buttonTest = new Button();
-		buttonTest.setCaption("Test Connection");
-		buttonTest.setImmediate(true);
-		buttonTest.setWidth("-1px");
-		buttonTest.setHeight("-1px");
-		mainLayout.addComponent(buttonTest);
-		mainLayout.setComponentAlignment(buttonTest, new Alignment(48));
-		
-		return mainLayout;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/OaExpressionsEditorComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/OaExpressionsEditorComponent.java
deleted file mode 100644
index bcbeca8..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/OaExpressionsEditorComponent.java
+++ /dev/null
@@ -1,186 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.components;
-
-import org.apache.openaz.xacml.admin.jpa.Obadvice;
-import org.apache.openaz.xacml.admin.jpa.ObadviceExpression;
-import org.apache.openaz.xacml.admin.view.windows.ExpressionEditorWindow;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.util.filter.Compare;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-
-public class OaExpressionsEditorComponent extends CustomComponent {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayout_1;
-	@AutoGenerated
-	private Button buttonRemove;
-	@AutoGenerated
-	private Button buttonadd;
-	@AutoGenerated
-	private Table tableExpressions;
-	private static final long serialVersionUID = 1L;
-	private final OaExpressionsEditorComponent self = this;
-	private final JPAContainer<ObadviceExpression> container;
-	private final EntityItem<Obadvice> oa;
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public OaExpressionsEditorComponent(EntityItem<Obadvice> oa, JPAContainer<ObadviceExpression> container) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Save
-		//
-		this.container = container;
-		this.oa = oa;
-		//
-		// Filter the container
-		//
-		this.container.removeAllContainerFilters();
-		this.container.addContainerFilter(new Compare.Equal("obadvice", this.oa.getEntity()));
-		//
-		// Initialize components
-		//
-		this.initializeTable();
-		this.initializeButtons();
-	}
-	
-	private void initializeTable() {
-		this.tableExpressions.setContainerDataSource(this.container);
-		this.tableExpressions.setVisibleColumns(new Object[] {"type"});
-		this.tableExpressions.setColumnHeaders(new String[] {"Expression Type"});
-		this.tableExpressions.setPageLength(this.container.size() + 1);
-	}
-	
-	private void initializeButtons() {
-		this.buttonadd.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				ObadviceExpression expression = new ObadviceExpression();
-				// TODO - EntityItem is not used - does container.createEntityItem even need to be called?
-				// final EntityItem<ObadviceExpression> entity = self.container.createEntityItem(expression);
-				self.container.createEntityItem(expression); // See TODO
-
-				final ExpressionEditorWindow editor = new ExpressionEditorWindow();
-				editor.setCaption("Edit Attribute");
-				editor.setCloseShortcut(KeyCode.ESCAPE);
-				editor.setModal(true);
-				editor.center();
-				UI.getCurrent().addWindow(editor);
-			}
-			
-		});
-		this.buttonRemove.setEnabled(false);
-		this.buttonRemove.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.tableExpressions.removeItem(self.tableExpressions.getValue());
-			}
-			
-		});
-
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(false);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// tableExpressions
-		tableExpressions = new Table();
-		tableExpressions.setCaption("Expressions");
-		tableExpressions.setImmediate(false);
-		tableExpressions
-				.setDescription("The list of expressions for the obligation/advice object.");
-		tableExpressions.setWidth("-1px");
-		tableExpressions.setHeight("-1px");
-		mainLayout.addComponent(tableExpressions);
-		
-		// horizontalLayout_1
-		horizontalLayout_1 = buildHorizontalLayout_1();
-		mainLayout.addComponent(horizontalLayout_1);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayout_1() {
-		// common part: create layout
-		horizontalLayout_1 = new HorizontalLayout();
-		horizontalLayout_1.setImmediate(false);
-		horizontalLayout_1.setWidth("-1px");
-		horizontalLayout_1.setHeight("-1px");
-		horizontalLayout_1.setMargin(false);
-		horizontalLayout_1.setSpacing(true);
-		
-		// buttonadd
-		buttonadd = new Button();
-		buttonadd.setCaption("Add");
-		buttonadd.setImmediate(true);
-		buttonadd.setWidth("-1px");
-		buttonadd.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonadd);
-		
-		// buttonRemove
-		buttonRemove = new Button();
-		buttonRemove.setCaption("Remove");
-		buttonRemove.setImmediate(true);
-		buttonRemove.setDescription("Remove selected expression(s).");
-		buttonRemove.setWidth("-1px");
-		buttonRemove.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonRemove);
-		
-		return horizontalLayout_1;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/PIPParameterComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/PIPParameterComponent.java
deleted file mode 100644
index 5a91ff2..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/PIPParameterComponent.java
+++ /dev/null
@@ -1,453 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.components;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.PIPConfigParam;
-import org.apache.openaz.xacml.admin.jpa.PIPConfiguration;
-import org.apache.openaz.xacml.admin.jpa.PIPResolver;
-import org.apache.openaz.xacml.admin.jpa.PIPResolverParam;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventListener;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventNotifier;
-import org.apache.openaz.xacml.admin.view.windows.PIPParamEditorWindow;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.util.BeanItem;
-import com.vaadin.data.util.BeanItemContainer;
-import com.vaadin.event.Action;
-import com.vaadin.event.Action.Handler;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window.CloseEvent;
-import com.vaadin.ui.Window.CloseListener;
-
-public class PIPParameterComponent extends CustomComponent implements FormChangedEventNotifier {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Table tableParameters;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayout_1;
-	@AutoGenerated
-	private Button buttonClear;
-	@AutoGenerated
-	private Button buttonClone;
-	@AutoGenerated
-	private Button buttonRemove;
-	@AutoGenerated
-	private Button buttonAdd;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(PIPParameterComponent.class);
-	private final PIPParameterComponent self = this;
-	private final Object config;
-	private final BasicNotifier notifier = new BasicNotifier();
-	
-	private static final Action ADD_PARAM = 	new Action ("Add Parameter");
-	private static final Action EDIT_PARAM = 	new Action ("Edit Parameter");
-	private static final Action REMOVE_PARAM = 	new Action ("Remove Parameter");
-	private static final Action CLONE_PARAM = 	new Action ("Clone Parameter");
-
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PIPParameterComponent(Object config) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Save
-		//
-		this.config = config;
-		//
-		// Initialize
-		//
-		this.initializeTable();
-		this.initializeButtons();
-		//
-		// Initial button setup
-		//
-		this.setupButtons();
-	}
-	
-	protected void initializeTable() {
-		//
-		// Initialize GUI properties
-		//
-		this.tableParameters.setImmediate(true);
-		this.tableParameters.setSelectable(true);
-		//
-		// Add in the data
-		//
-		if (this.config instanceof PIPConfiguration) {
-			BeanItemContainer<PIPConfigParam> container = new BeanItemContainer<PIPConfigParam>(PIPConfigParam.class);
-			PIPConfiguration config = (PIPConfiguration) this.config;
-			for (PIPConfigParam param : config.getPipconfigParams()) {
-				container.addBean(param);
-			}
-			this.tableParameters.setContainerDataSource(container);
-		} else if (this.config instanceof PIPResolver) {
-			BeanItemContainer<PIPResolverParam> container = new BeanItemContainer<PIPResolverParam>(PIPResolverParam.class);
-			PIPResolver resolver = (PIPResolver) this.config;
-			for (PIPResolverParam param : resolver.getPipresolverParams()) {
-				container.addBean(param);
-			}
-			this.tableParameters.setContainerDataSource(container);
-		} else {
-			throw new IllegalArgumentException("Unsupported object");
-		}
-		//
-		// Finish more gui initialization
-		//
-		this.tableParameters.setPageLength(5);//this.tableParameters.getContainerDataSource().size() + 1);
-		this.tableParameters.setVisibleColumns(new Object[] {"paramName", "paramValue"});
-		this.tableParameters.setColumnHeaders(new String[] {"Name", "Value"});
-		this.tableParameters.setSizeFull();
-		//
-		// Action Handler
-		//
-		this.tableParameters.addActionHandler(new Handler() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Action[] getActions(Object target, Object sender) {
-				if (target == null) {
-					return new Action[] {ADD_PARAM};
-				}
-				return new Action[] {EDIT_PARAM, REMOVE_PARAM, CLONE_PARAM};
-			}
-
-			@Override
-			public void handleAction(Action action, Object sender, Object target) {
-				if (action == ADD_PARAM) {
-					self.editParameter(null);
-					return;
-				}
-				if (action == EDIT_PARAM) {
-					self.editParameter(target);
-					return;
-				}
-				if (action == REMOVE_PARAM) {
-					self.removeParameter(target);
-					return;
-				}
-				if (action == CLONE_PARAM) {
-					self.cloneParameter(target);
-					return;
-				}
-			}
-		});
-		//
-		// Respond to events
-		//
-		this.tableParameters.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.setupButtons();
-			}
-		});
-		//
-		// Double click
-		//
-		this.tableParameters.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick()) {
-					self.editParameter(event.getItemId());
-				}
-			}
-		});
-	}
-	
-	protected void initializeButtons() {
-		this.buttonAdd.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.editParameter(null);
-			}
-		});
-		this.buttonClone.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.cloneParameter(self.tableParameters.getValue());
-			}
-		});
-		this.buttonRemove.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.removeParameter(self.tableParameters.getValue());
-			}
-		});
-		this.buttonClear.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.clearParameters();
-			}
-		});
-	}
-	
-	protected void setupButtons() {
-		if (this.tableParameters.getValue() != null) {
-			this.buttonClone.setEnabled(true);
-			this.buttonRemove.setEnabled(true);
-		} else {
-			this.buttonClone.setEnabled(false);
-			this.buttonRemove.setEnabled(false);
-		}
-	}
-
-	protected void editParameter(final Object source) {
-		//
-		// Make a copy
-		//
-		final Object target = source != null ? source : this.config instanceof PIPConfiguration ? new PIPConfigParam() : new PIPResolverParam();
-		final PIPParamEditorWindow window = new PIPParamEditorWindow(target);
-		window.setModal(true);
-		window.setCaption((source == null ? "Create New Parameter" : "Edit Parameter"));
-		window.center();
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did user save?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// Yes - was it a brand new object?
-				//
-				if (source == null) {
-					//
-					// yes add it to the parent object
-					//
-					if (self.config instanceof PIPConfiguration) {
-						((PIPConfiguration) self.config).addPipconfigParam((PIPConfigParam) target);
-					} else {
-						((PIPResolver) self.config).addPipresolverParam((PIPResolverParam) target);
-					}
-					//
-					// add it to the table
-					//
-					Item item = self.tableParameters.addItem(target);
-					if (item == null) {
-						logger.error("Failed to add parameter: " + target);
-					} else {
-						self.tableParameters.select(target);
-					}
-				} else {
-					//
-					// Copy the parameters over
-					//
-					if (source instanceof PIPConfigParam) {
-						((PIPConfigParam) source).setParamName(((PIPConfigParam) target).getParamName());
-						((PIPConfigParam) source).setParamValue(((PIPConfigParam) target).getParamValue());
-					} else {
-						((PIPResolverParam) source).setParamName(((PIPResolverParam) target).getParamName());
-						((PIPResolverParam) source).setParamValue(((PIPResolverParam) target).getParamValue());
-					}
-					//
-					// Update the table
-					//
-					self.tableParameters.refreshRowCache();
-				}
-			}
-		});
-		UI.getCurrent().addWindow(window);
-	}
-
-	protected void cloneParameter(Object target) {
-		if (target == null) {
-			logger.error("null target sent to clone method");
-			return;
-		}
-		Item item;
-		if (target instanceof PIPConfigParam && this.config instanceof PIPConfiguration) {
-			PIPConfigParam param = new PIPConfigParam((PIPConfigParam) target);
-			((PIPConfiguration) this.config).addPipconfigParam(param);
-			item = this.tableParameters.addItem(new BeanItem<PIPConfigParam>(param));
-		} else if (target instanceof PIPResolverParam && this.config instanceof PIPResolver) {
-			PIPResolverParam param = new PIPResolverParam((PIPResolverParam) target);
-			((PIPResolver) this.config).addPipresolverParam(param);
-			item = this.tableParameters.addItem(new BeanItem<PIPResolverParam>(param));
-		} else {
-			throw new IllegalArgumentException("Unsupported param and config combination.");
-		}
-		if (item == null) {
-			logger.error("Failed to add parameter to table: " + target);
-		} else {
-			this.tableParameters.select(target);
-		}
-	}
-
-	protected void removeParameter(Object target) {
-		if (target == null) {
-			logger.error("null target sent to remove method");
-			return;
-		}
-		if (this.config instanceof PIPConfiguration) {
-			if (((PIPConfiguration)this.config).removePipconfigParam((PIPConfigParam) target) == null) {
-				logger.error("Failed to remove parameter from pip configuration");
-				return;
-			}
-		} else {
-			if (((PIPResolver) this.config).removePipresolverParam((PIPResolverParam) target) == null) {
-				logger.error("Failed to remove parameter from pip resolver");
-				return;
-			}
-		}
-		if (this.tableParameters.removeItem(target) == false) {
-			logger.error("Failed to remove parameter from table");
-		}
-	}
-	
-	protected void clearParameters() {
-		this.tableParameters.removeAllItems();
-		if (this.config instanceof PIPConfiguration) {
-			((PIPConfiguration) this.config).clearConfigParams();
-		} else {
-			((PIPResolver) this.config).clearParams();
-		}
-	}
-
-	@Override
-	public boolean addListener(FormChangedEventListener listener) {
-		return this.notifier.addListener(listener);
-	}
-
-	@Override
-	public boolean removeListener(FormChangedEventListener listener) {
-		return this.notifier.removeListener(listener);
-	}
-
-	@Override
-	public void fireFormChangedEvent() {
-		this.notifier.fireFormChangedEvent();
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(false);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// horizontalLayout_1
-		horizontalLayout_1 = buildHorizontalLayout_1();
-		mainLayout.addComponent(horizontalLayout_1);
-		
-		// tableParameters
-		tableParameters = new Table();
-		tableParameters.setCaption("Configuration Parameters");
-		tableParameters.setImmediate(false);
-		tableParameters.setWidth("-1px");
-		tableParameters.setHeight("-1px");
-		mainLayout.addComponent(tableParameters);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayout_1() {
-		// common part: create layout
-		horizontalLayout_1 = new HorizontalLayout();
-		horizontalLayout_1.setImmediate(false);
-		horizontalLayout_1.setWidth("-1px");
-		horizontalLayout_1.setHeight("-1px");
-		horizontalLayout_1.setMargin(false);
-		horizontalLayout_1.setSpacing(true);
-		
-		// buttonAdd
-		buttonAdd = new Button();
-		buttonAdd.setCaption("Add");
-		buttonAdd.setImmediate(false);
-		buttonAdd.setWidth("-1px");
-		buttonAdd.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonAdd);
-		
-		// buttonRemove
-		buttonRemove = new Button();
-		buttonRemove.setCaption("Remove");
-		buttonRemove.setImmediate(false);
-		buttonRemove.setWidth("-1px");
-		buttonRemove.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonRemove);
-		
-		// buttonClone
-		buttonClone = new Button();
-		buttonClone.setCaption("Clone");
-		buttonClone.setImmediate(false);
-		buttonClone.setWidth("-1px");
-		buttonClone.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonClone);
-		
-		// buttonClear
-		buttonClear = new Button();
-		buttonClear.setCaption("Clear All");
-		buttonClear.setImmediate(false);
-		buttonClear.setWidth("-1px");
-		buttonClear.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonClear);
-		
-		return horizontalLayout_1;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/PIPResolverComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/PIPResolverComponent.java
deleted file mode 100644
index 7529e70..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/PIPResolverComponent.java
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.components;
-
-import java.io.ByteArrayOutputStream;
-import java.io.IOException;
-import java.util.Properties;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.PIPConfiguration;
-import org.apache.openaz.xacml.admin.jpa.PIPResolver;
-import org.apache.openaz.xacml.admin.view.windows.PIPResolverEditorWindow;
-import org.apache.openaz.xacml.std.pip.engines.csv.ConfigurableCSVResolver;
-import org.apache.openaz.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver;
-import org.apache.openaz.xacml.std.pip.engines.ldap.ConfigurableLDAPResolver;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.addon.jpacontainer.provider.CachingMutableLocalEntityProvider;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.util.filter.Compare;
-import com.vaadin.event.Action;
-import com.vaadin.event.Action.Handler;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window.CloseEvent;
-import com.vaadin.ui.Window.CloseListener;
-
-public class PIPResolverComponent extends CustomComponent {
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Table tableResolvers;
-	
-	private final Action ADD_RESOLVER = new Action("Add Resolver");
-	private final Action EDIT_RESOLVER = new Action("Edit Resolver");
-	private final Action CLONE_RESOLVER = new Action("Clone Resolver");
-	private final Action REMOVE_RESOLVER = new Action("Remove Resolver");
-
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(PIPResolverComponent.class);
-	
-	private final PIPResolverComponent self = this;
-	private final PIPConfiguration config;
-	
-	private final JPAContainer<PIPResolver> resolverContainer = new JPAContainer<PIPResolver>(PIPResolver.class);
-
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PIPResolverComponent(PIPConfiguration configuration) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Save
-		//
-		this.config = configuration;
-		this.resolverContainer.setEntityProvider(new CachingMutableLocalEntityProvider<PIPResolver>(PIPResolver.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-		this.resolverContainer.addContainerFilter(new Compare.Equal("pipconfiguration", this.config));
-		//
-		// Initialize GUI
-		//
-		this.initializeTable();
-	}
-	
-	protected void initializeTable() {
-		//
-		// Setup the container datasource
-		//
-		this.tableResolvers.setContainerDataSource(this.resolverContainer);
-		//
-		// Set GUI properties
-		//
-		this.tableResolvers.setImmediate(true);
-		this.tableResolvers.setVisibleColumns(new Object[] {"name", "description", "issuer"});
-		this.tableResolvers.setColumnHeaders(new String[] {"Name", "Description", "Issuer"});
-		this.tableResolvers.setPageLength(this.config.getPipresolvers().size() + 1);
-		this.tableResolvers.setSizeFull();
-		this.tableResolvers.setSelectable(true);
-		//
-		// Add the actions
-		//
-		this.tableResolvers.addActionHandler(new Handler() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Action[] getActions(Object target, Object sender) {
-				if (target == null) {
-					return new Action[] {ADD_RESOLVER};
-				}
-				return new Action[] {EDIT_RESOLVER, CLONE_RESOLVER, REMOVE_RESOLVER};
-			}
-
-			@Override
-			public void handleAction(Action action, Object sender, Object target) {
-				if (action == ADD_RESOLVER) {
-					PIPResolverComponent.addResolver(self.config, null);
-					return;
-				}
-				if (action == EDIT_RESOLVER) {
-					PIPResolverComponent.editResolver(self.resolverContainer.getItem(target));
-					return;
-				}
-				if (action == CLONE_RESOLVER) {
-					PIPResolverComponent.addResolver(self.config, self.resolverContainer.getItem(target).getEntity());
-					return;
-				}
-				if (action == REMOVE_RESOLVER) {
-					self.removeResolver(self.config, self.resolverContainer.getItem(target).getEntity());
-					return;
-				}
-			}
-		});
-		//
-		// Respond to events
-		//
-		this.tableResolvers.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick()) {
-					Object id = event.getItemId();
-					if (id == null) {
-						return;
-					}
-					PIPResolverComponent.editResolver(self.resolverContainer.getItem(id));
-				}
-			}
-		});
-	}
-	
-	protected void removeResolver(PIPConfiguration config, PIPResolver resolver) {
-		config.removePipresolver(resolver);
-		this.tableResolvers.removeItem(resolver.getId());
-	}
-
-	public static void	addResolver(PIPConfiguration config, PIPResolver pipResolver) {
-		//
-		// Create the entity
-		//
-		PIPResolver resolver = null;
-		if (pipResolver != null) {
-			resolver = new PIPResolver(pipResolver);
-		} else {
-			resolver = new PIPResolver();
-		}
-		resolver.setCreatedBy(((XacmlAdminUI)UI.getCurrent()).getUserid());
-		resolver.setModifiedBy(((XacmlAdminUI)UI.getCurrent()).getUserid());
-		resolver.setPipconfiguration(config);
-		//
-		// Set its default class
-		//
-		if (config.getPiptype().isSQL()) {
-			resolver.setClassname(ConfigurableJDBCResolver.class.getCanonicalName());
-		} else if (config.getPiptype().isLDAP()) {
-			resolver.setClassname(ConfigurableLDAPResolver.class.getCanonicalName());
-		} else if (config.getPiptype().isCSV()) {
-			resolver.setClassname(ConfigurableCSVResolver.class.getCanonicalName());
-		} else if (config.getPiptype().isHyperCSV()) {
-			resolver.setClassname(ConfigurableJDBCResolver.class.getCanonicalName());
-		}
-		//
-		// Bring up the editor window
-		//
-		PIPResolverComponent.editResolver(((XacmlAdminUI)UI.getCurrent()).getPIPResolvers().createEntityItem(resolver));
-		
-	}
-	
-	public static void	editResolver(final EntityItem<PIPResolver> entity) {
-		
-		final PIPResolverEditorWindow window = new PIPResolverEditorWindow(entity);
-		window.setModal(true);
-		window.center();
-		if (entity.isPersistent()) {
-			window.setCaption("Edit Resolver");
-		} else {
-			window.setCaption("Create Resolver");
-		}
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user click "save"?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// Adding a new entity?
-				//
-				if (entity.isPersistent() == false) {
-					//
-					// Yes - let's official add it
-					//
-					((XacmlAdminUI)UI.getCurrent()).getPIPResolvers().addEntity(entity.getEntity());
-					((XacmlAdminUI)UI.getCurrent()).refreshPIPConfiguration();
-				}
-			}
-		});
-		UI.getCurrent().addWindow(window);
-	}
-
-	public static void publishConfiguration(EntityItem<PIPConfiguration> config) {
-		Properties properties = config.getEntity().generateProperties(Integer.toString(config.getEntity().getId()));
-		
-		try {
-			ByteArrayOutputStream os = new ByteArrayOutputStream();
-			properties.store(os, "");
-			if (logger.isDebugEnabled()) {
-				logger.debug(os.toString());
-			}
-		} catch (IOException e) { //NOPMD
-			// TODO - Handle, Log or NOPMD
-			// TODO - Will vaadin display error?
-		}
-	}
-		
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(false);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// tableResolvers
-		tableResolvers = new Table();
-		tableResolvers.setCaption("Resolvers");
-		tableResolvers.setImmediate(false);
-		tableResolvers.setWidth("-1px");
-		tableResolvers.setHeight("-1px");
-		mainLayout.addComponent(tableResolvers);
-		
-		return mainLayout;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/RangeEditorComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/RangeEditorComponent.java
deleted file mode 100644
index d07aa34..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/RangeEditorComponent.java
+++ /dev/null
@@ -1,599 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.components;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.ConstraintValue;
-import org.apache.openaz.xacml.admin.util.AdminNotification;
-import org.apache.openaz.xacml.api.Identifier;
-import org.apache.openaz.xacml.api.XACML3;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.validator.DoubleRangeValidator;
-import com.vaadin.data.validator.IntegerRangeValidator;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Panel;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-
-public class RangeEditorComponent extends CustomComponent {
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Panel panelTester;
-	@AutoGenerated
-	private VerticalLayout verticalLayout_2;
-	@AutoGenerated
-	private Button buttonValidate;
-	@AutoGenerated
-	private TextField textFieldTestInput;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayout_2;
-	@AutoGenerated
-	private TextField textFieldMax;
-	@AutoGenerated
-	private ComboBox comboBoxMax;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayout_1;
-	@AutoGenerated
-	private TextField textFieldMin;
-	@AutoGenerated
-	private ComboBox comboBoxMin;
-	private static final long serialVersionUID = -1L;
-	private static final Log logger	= LogFactory.getLog(RangeEditorComponent.class);
-	private final RangeEditorComponent self = this;
-	private final Attribute attribute;
-	private Identifier datatype;
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	public RangeEditorComponent(Attribute attribute, Identifier datatype) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Save our attribute
-		//
-		this.attribute = attribute;
-		this.datatype = datatype;
-		//
-		// Finish initialization
-		//
-		this.initializeCombos();	
-		this.initializeTextFields();
-		this.initializeTest();
-		this.setupDatatype(this.datatype);
-	}
-	
-	private void initializeCombos() {
-		//
-		// Add the 2 possible values into each combo box
-		//
-		this.comboBoxMin.setNullSelectionAllowed(true);
-		this.comboBoxMin.addItem("minInclusive");
-		this.comboBoxMin.addItem("minExclusive");		
-		this.comboBoxMax.addItem("maxInclusive");
-		this.comboBoxMax.addItem("maxExclusive");
-		//
-		// Find any current values
-		//
-		for (ConstraintValue value : this.attribute.getConstraintValues()) {
-			if (value.getProperty().equals("minInclusive") ||
-				value.getProperty().equals("minExclusive")) {
-				//
-				// If it hasn't been set yet
-				//
-				if (this.comboBoxMin.getData() == null) {
-					//
-					// Select the appropriate combo value
-					//
-					this.comboBoxMin.select(value.getProperty());
-					//
-					// Save the object
-					//
-					this.comboBoxMin.setData(value);
-					//
-					// Setup the text field
-					//
-					this.textFieldMin.setValue(value.getValue());
-				} else {
-					//
-					// Extra value in there, this shouldn't happen. But this
-					// is here just in case
-					//
-					logger.warn("Extra min value found: " + value.getProperty() + " " + value.getValue());
-				}
-			} else if (value.getProperty().equals("maxInclusive") ||
-					value.getProperty().equals("maxExclusive")) {
-				//
-				// Check if it hasn't been set yet
-				//
-				if (this.comboBoxMax.getData() == null) {
-					//
-					// Select the appropriate combo value
-					//
-					this.comboBoxMax.select(value.getProperty());
-					//
-					// Save the object
-					//
-					this.comboBoxMax.setData(value);
-					//
-					// Setup the text field
-					//
-					this.textFieldMax.setValue(value.getValue());
-				} else {
-					//
-					// Extra value in there, this shouldn't happen. But this
-					// is here just in case
-					//
-					logger.warn("Extra max value found: " + value.getProperty() + " " + value.getValue());
-				}
-			} else {
-				logger.warn("Non-range value found: " + value.getProperty() + " " + value.getValue());
-			}
-		}
-		//
-		// Were there values?
-		//
-		if (this.comboBoxMin.getData() == null) {
-			//
-			// Put a new empty value in there
-			//
-			ConstraintValue value = new ConstraintValue("minInclusive", null);
-			//
-			// Associate it with the attribute
-			//
-			value.setAttribute(this.attribute);
-			//
-			// Make sure the attribute has it in its list
-			//
-			this.attribute.addConstraintValue(value);
-			//
-			// Save it in the combo
-			//
-			this.comboBoxMin.setData(value);
-			//
-			// Disable text field
-			//
-			this.textFieldMin.setEnabled(false);
-		}
-		if (this.comboBoxMax.getData() == null) {
-			//
-			// Put a new empty value in there
-			//
-			ConstraintValue value = new ConstraintValue("maxInclusive", null);
-			//
-			// Associate it with the attribute
-			//
-			value.setAttribute(this.attribute);
-			//
-			// Make sure the attribute has it in its list
-			//
-			this.attribute.addConstraintValue(value);
-			//
-			// Save it in the combo
-			//
-			this.comboBoxMax.setData(value);
-			//
-			// Disable text field
-			//
-			this.textFieldMax.setEnabled(false);
-		}
-		//
-		// Respond to combo changes
-		//
-		this.setupComboText(this.comboBoxMin, this.textFieldMin);
-		this.setupComboText(this.comboBoxMax, this.textFieldMax);
-	}
-	
-	private void setupComboText(final ComboBox box, final TextField text) {
-		//
-		// Respond to combo changes
-		//
-		box.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				//
-				// Get the new value
-				//
-				String property = (String) box.getValue();
-				//
-				// Get our constraint object
-				//
-				ConstraintValue value = (ConstraintValue) box.getData();
-				//
-				// Update our object
-				//
-				if (property == null) {
-					//
-					// Clear the text field and disable it
-					//
-					text.setEnabled(false);
-					text.setValue(null);
-				} else {
-					//
-					// Change the property name
-					//
-					value.setProperty(property);
-					//
-					// Focus to the text field and enable it
-					//
-					text.setEnabled(true);
-					text.focus();
-				}
-			}
-		});
-		
-	}
-	
-	private void initializeTextFields() {
-		this.textFieldMin.setNullRepresentation("");
-		this.textFieldMin.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				//
-				// Get our min object
-				//
-				ConstraintValue value = (ConstraintValue) self.comboBoxMin.getData();
-				//
-				// Save its new value
-				//
-				value.setValue(self.textFieldMin.getValue());
-			}			
-		});
-		this.textFieldMax.setNullRepresentation("");
-		this.textFieldMax.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				//
-				// Get our max object
-				//
-				ConstraintValue value = (ConstraintValue) self.comboBoxMax.getData();
-				//
-				// Save its new value
-				//
-				value.setValue(self.textFieldMax.getValue());
-			}
-			
-		});
-	}
-	
-	private void initializeTest() {
-		this.textFieldTestInput.setNullRepresentation("");
-		this.textFieldTestInput.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				if (self.textFieldTestInput.getValue() != null && self.textFieldTestInput.getValue().length() > 0) {
-					self.buttonValidate.setEnabled(true);
-				} else {
-					self.buttonValidate.setEnabled(false);
-				}
-			}
-		});
-				
-		this.buttonValidate.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				//
-				// Create our validator and add it into the text
-				//
-				Validator validator = self.setupValidator(self.datatype);
-				if (validator == null) {
-					logger.warn("Could not create a validator");
-					return;
-				}
-				self.textFieldTestInput.addValidator(validator);
-				//
-				// Initiate the validation
-				//
-				try {
-					self.textFieldTestInput.validate();
-					//
-					// If we get here, then it validated!
-					//
-					AdminNotification.info("Success! Value is in range");
-				} catch (InvalidValueException e) {
-					AdminNotification.warn("Failed, Value is NOT in range");
-				}
-				//
-				// Remove the validator
-				//
-				self.textFieldTestInput.removeValidator(validator);
-			}			
-		});
-	}
-	
-	private Validator setupValidator(Identifier id) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("setupValidator: " + id);
-		}
-		//
-		// Get our min/max objects
-		//
-		ConstraintValue min = (ConstraintValue) self.comboBoxMin.getData();
-		ConstraintValue max = (ConstraintValue) self.comboBoxMax.getData();
-		Object minObject = self.comboBoxMin.getConvertedValue();
-		Object maxObject = self.comboBoxMax.getConvertedValue();
-		logger.debug("Converted values: " + minObject + " " + maxObject);
-		//
-		// Get our min/max values
-		//
-		String minValue = self.textFieldMin.getValue();
-		String maxValue = self.textFieldMax.getValue();
-		//
-		// What is our datatype?
-		//
-		if (id.equals(XACML3.ID_DATATYPE_INTEGER)) {
-			Integer minimum = null;
-			Integer maximum = null;
-			boolean minInclusive = true;
-			boolean maxInclusive = true;
-			if (min.getProperty() != null) {
-				if (minValue != null && minValue.length() > 0) {
-					minimum = Integer.parseInt(minValue);
-				}
-				if (min.getProperty().equals("minInclusive")) {
-					minInclusive = true;
-				} else if (min.getProperty().equals("minExclusive")) {
-					minInclusive = false;
-				}
-			}
-			if (max.getProperty() != null) {
-				if (maxValue != null && maxValue.length() > 0) {
-					maximum = Integer.parseInt(maxValue);
-				}
-				if (max.getProperty().equals("maxInclusive")) {
-					maxInclusive = true;
-				} else if (max.getProperty().equals("maxExclusive")) {
-					maxInclusive = false;
-				}
-			}
-			IntegerRangeValidator validator = new IntegerRangeValidator("The value is NOT within the range", minimum, maximum);
-			validator.setMinValueIncluded(minInclusive);
-			validator.setMaxValueIncluded(maxInclusive);
-			return validator;
-		}
-		if (id.equals(XACML3.ID_DATATYPE_DOUBLE)) {
-			Double minimum = null;
-			Double maximum = null;
-			boolean minInclusive = true;
-			boolean maxInclusive = true;
-			if (min.getProperty() != null) {
-				if (minValue != null && minValue.length() > 0) {
-					minimum = Double.parseDouble(minValue);
-				}
-				if (min.getProperty().equals("minInclusive")) {
-					minInclusive = true;
-				} else if (min.getProperty().equals("minExclusive")) {
-					minInclusive = false;
-				}
-			}
-			if (max.getProperty() != null) {
-				if (maxValue != null && maxValue.length() > 0) {
-					maximum = Double.parseDouble(maxValue);
-				}
-				if (max.getProperty().equals("maxInclusive")) {
-					maxInclusive = true;
-				} else if (max.getProperty().equals("maxExclusive")) {
-					maxInclusive = false;
-				}
-			}
-			DoubleRangeValidator validator = new DoubleRangeValidator("The value is NOT within the range", minimum, maximum);
-			validator.setMinValueIncluded(minInclusive);
-			validator.setMaxValueIncluded(maxInclusive);
-			return validator;
-		}
-		
-		return null;
-	}
-	
-	public void	setupDatatype(Identifier datatype) {
-		if (logger.isTraceEnabled()) {
-			logger.trace("setupDatatype: " + datatype);
-		}
-		this.datatype = datatype;
-		if (datatype.equals(XACML3.ID_DATATYPE_INTEGER)) {
-			this.textFieldMin.setConverter(Integer.class);
-			this.textFieldMax.setConverter(Integer.class);
-			this.textFieldTestInput.setConverter(Integer.class);
-			return;
-		}
-		if (datatype.equals(XACML3.ID_DATATYPE_DOUBLE)) {
-			this.textFieldMin.setConverter(Double.class);
-			this.textFieldMax.setConverter(Double.class);
-			this.textFieldTestInput.setConverter(Double.class);
-			return;
-		}
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// horizontalLayout_1
-		horizontalLayout_1 = buildHorizontalLayout_1();
-		mainLayout.addComponent(horizontalLayout_1);
-		mainLayout.setExpandRatio(horizontalLayout_1, 1.0f);
-		
-		// horizontalLayout_2
-		horizontalLayout_2 = buildHorizontalLayout_2();
-		mainLayout.addComponent(horizontalLayout_2);
-		mainLayout.setExpandRatio(horizontalLayout_2, 1.0f);
-		
-		// panelTester
-		panelTester = buildPanelTester();
-		mainLayout.addComponent(panelTester);
-		mainLayout.setExpandRatio(panelTester, 1.0f);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayout_1() {
-		// common part: create layout
-		horizontalLayout_1 = new HorizontalLayout();
-		horizontalLayout_1.setImmediate(false);
-		horizontalLayout_1.setWidth("-1px");
-		horizontalLayout_1.setHeight("-1px");
-		horizontalLayout_1.setMargin(false);
-		horizontalLayout_1.setSpacing(true);
-		
-		// comboBoxMin
-		comboBoxMin = new ComboBox();
-		comboBoxMin.setCaption("Minimum Type");
-		comboBoxMin.setImmediate(true);
-		comboBoxMin.setDescription("Select the type for the minimum.");
-		comboBoxMin.setWidth("-1px");
-		comboBoxMin.setHeight("-1px");
-		horizontalLayout_1.addComponent(comboBoxMin);
-		
-		// textFieldMin
-		textFieldMin = new TextField();
-		textFieldMin.setCaption("Minimum Value");
-		textFieldMin.setImmediate(true);
-		textFieldMin.setDescription("Enter a value for the minimum.");
-		textFieldMin.setWidth("-1px");
-		textFieldMin.setHeight("-1px");
-		textFieldMin.setInvalidAllowed(false);
-		textFieldMin.setInputPrompt("eg. 1");
-		horizontalLayout_1.addComponent(textFieldMin);
-		horizontalLayout_1
-				.setComponentAlignment(textFieldMin, new Alignment(9));
-		
-		return horizontalLayout_1;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayout_2() {
-		// common part: create layout
-		horizontalLayout_2 = new HorizontalLayout();
-		horizontalLayout_2.setImmediate(false);
-		horizontalLayout_2.setWidth("-1px");
-		horizontalLayout_2.setHeight("-1px");
-		horizontalLayout_2.setMargin(false);
-		horizontalLayout_2.setSpacing(true);
-		
-		// comboBoxMax
-		comboBoxMax = new ComboBox();
-		comboBoxMax.setCaption("Maximum Type");
-		comboBoxMax.setImmediate(true);
-		comboBoxMax.setDescription("Select the type for the maximum.");
-		comboBoxMax.setWidth("-1px");
-		comboBoxMax.setHeight("-1px");
-		horizontalLayout_2.addComponent(comboBoxMax);
-		
-		// textFieldMax
-		textFieldMax = new TextField();
-		textFieldMax.setCaption("Maximum Value");
-		textFieldMax.setImmediate(true);
-		textFieldMax.setDescription("Enter a value for the maxmum.");
-		textFieldMax.setWidth("-1px");
-		textFieldMax.setHeight("-1px");
-		textFieldMax.setInvalidAllowed(false);
-		textFieldMax.setInputPrompt("eg. 100");
-		horizontalLayout_2.addComponent(textFieldMax);
-		
-		return horizontalLayout_2;
-	}
-
-	@AutoGenerated
-	private Panel buildPanelTester() {
-		// common part: create layout
-		panelTester = new Panel();
-		panelTester.setCaption("Test Range Values");
-		panelTester.setImmediate(true);
-		panelTester.setWidth("-1px");
-		panelTester.setHeight("-1px");
-		
-		// verticalLayout_2
-		verticalLayout_2 = buildVerticalLayout_2();
-		panelTester.setContent(verticalLayout_2);
-		
-		return panelTester;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildVerticalLayout_2() {
-		// common part: create layout
-		verticalLayout_2 = new VerticalLayout();
-		verticalLayout_2.setImmediate(false);
-		verticalLayout_2.setWidth("100.0%");
-		verticalLayout_2.setHeight("100.0%");
-		verticalLayout_2.setMargin(false);
-		verticalLayout_2.setSpacing(true);
-		
-		// textFieldTestInput
-		textFieldTestInput = new TextField();
-		textFieldTestInput.setCaption("Value");
-		textFieldTestInput.setImmediate(true);
-		textFieldTestInput.setDescription("Enter a value to test against.");
-		textFieldTestInput.setWidth("-1px");
-		textFieldTestInput.setHeight("-1px");
-		textFieldTestInput.setInputPrompt("eg. 50");
-		verticalLayout_2.addComponent(textFieldTestInput);
-		
-		// buttonValidate
-		buttonValidate = new Button();
-		buttonValidate.setCaption("Test");
-		buttonValidate.setImmediate(true);
-		buttonValidate
-				.setDescription("Click to test if value is within the range.");
-		buttonValidate.setWidth("-1px");
-		buttonValidate.setHeight("-1px");
-		verticalLayout_2.addComponent(buttonValidate);
-		verticalLayout_2.setComponentAlignment(buttonValidate,
-				new Alignment(48));
-		
-		return verticalLayout_2;
-	}
-	
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/RegexpEditorComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/RegexpEditorComponent.java
deleted file mode 100644
index 968719a..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/RegexpEditorComponent.java
+++ /dev/null
@@ -1,246 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.components;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.ConstraintType;
-import org.apache.openaz.xacml.admin.jpa.ConstraintValue;
-import org.apache.openaz.xacml.admin.util.AdminNotification;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.validator.RegexpValidator;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.Panel;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-
-public class RegexpEditorComponent extends CustomComponent {
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-
-	@AutoGenerated
-	private Panel panelTester;
-
-	@AutoGenerated
-	private VerticalLayout verticalLayout_2;
-
-	@AutoGenerated
-	private Button buttonTest;
-
-	@AutoGenerated
-	private TextField textFieldTestValue;
-
-	@AutoGenerated
-	private TextField textFieldExpression;
-
-	private static final long serialVersionUID = -1L;
-	private static final Log logger	= LogFactory.getLog(RegexpEditorComponent.class);
-	private RegexpEditorComponent self = this;
-	private final Attribute attribute;
-	private ConstraintValue value = null;
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	public RegexpEditorComponent(Attribute attribute) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		
-		this.attribute = attribute;
-		
-		initializeTextField();
-		initializeTestPanel();
-	}
-	
-	private void initializeTextField() {
-		//
-		// Find our reg expression value if it exists
-		//
-		for (ConstraintValue value : this.attribute.getConstraintValues()) {
-			if (value.getProperty().equals(ConstraintType.REGEXP_TYPE)) {
-				if (this.value == null) {
-					this.textFieldExpression.setValue(value.getValue());
-					this.value = value;
-				} else {
-					logger.warn("Multiple regexp constraint values: " + value);
-					value.setAttribute(null);
-					this.attribute.removeConstraintValue(value);
-				}
-			} else {
-				value.setAttribute(null);
-				this.attribute.removeConstraintValue(value);
-			}
-		}
-		//
-		// Was something found?
-		//
-		if (this.value == null) {
-			ConstraintValue newValue = new ConstraintValue(ConstraintType.REGEXP_TYPE, "");
-			newValue.setAttribute(this.attribute);
-			this.attribute.addConstraintValue(newValue);
-			this.value = newValue;
-		}
-		//
-		// Save the values when they changes
-		//
-		this.textFieldExpression.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.value.setValue(self.textFieldExpression.getValue());
-			}
-		});
-	}
-	
-	private void initializeTestPanel() {
-		this.textFieldTestValue.setNullRepresentation("");
-		
-		this.buttonTest.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				String testValue = self.textFieldTestValue.getValue();
-				if (testValue == null || testValue.length() == 0) {
-					return;
-				}
-				String regExp = self.textFieldExpression.getValue();
-				if (regExp == null || regExp.length() == 0) {
-					return;
-				}
-				//
-				// Create a validator
-				//
-				Validator validator = new RegexpValidator(regExp, true, "Regular Expression does NOT match.");
-				//
-				// Add it
-				//
-				self.textFieldTestValue.addValidator(validator);
-				//
-				// Validate
-				//
-				try {
-					self.textFieldTestValue.validate();
-					AdminNotification.info("Success! Regular Expression Matches");
-				} catch (InvalidValueException e) {
-					AdminNotification.warn("Failed, Regular Expression does NOT match");
-				}
-				//
-				// Remove the validator
-				//
-				self.textFieldTestValue.removeValidator(validator);
-			}
-		});
-	}
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldExpression
-		textFieldExpression = new TextField();
-		textFieldExpression.setCaption("Regular Expression");
-		textFieldExpression.setImmediate(true);
-		textFieldExpression
-				.setDescription("Create a regular expression used to constrain attribute values.");
-		textFieldExpression.setWidth("-1px");
-		textFieldExpression.setHeight("-1px");
-		textFieldExpression.setInvalidAllowed(false);
-		textFieldExpression.setInputPrompt("eg. [a-zA-Z0-9]");
-		mainLayout.addComponent(textFieldExpression);
-		mainLayout.setExpandRatio(textFieldExpression, 1.0f);
-		
-		// panelTester
-		panelTester = buildPanelTester();
-		mainLayout.addComponent(panelTester);
-		mainLayout.setExpandRatio(panelTester, 1.0f);
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private Panel buildPanelTester() {
-		// common part: create layout
-		panelTester = new Panel();
-		panelTester.setCaption("Test The Expression");
-		panelTester.setImmediate(false);
-		panelTester.setWidth("-1px");
-		panelTester.setHeight("-1px");
-		
-		// verticalLayout_2
-		verticalLayout_2 = buildVerticalLayout_2();
-		panelTester.setContent(verticalLayout_2);
-		
-		return panelTester;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildVerticalLayout_2() {
-		// common part: create layout
-		verticalLayout_2 = new VerticalLayout();
-		verticalLayout_2.setImmediate(false);
-		verticalLayout_2.setWidth("100.0%");
-		verticalLayout_2.setHeight("100.0%");
-		verticalLayout_2.setMargin(false);
-		
-		// textFieldTestValue
-		textFieldTestValue = new TextField();
-		textFieldTestValue.setCaption("Test Value");
-		textFieldTestValue.setImmediate(true);
-		textFieldTestValue
-				.setDescription("Enter a value to match against the regular expression.");
-		textFieldTestValue.setWidth("-1px");
-		textFieldTestValue.setHeight("-1px");
-		textFieldTestValue.setInputPrompt("eg. example");
-		verticalLayout_2.addComponent(textFieldTestValue);
-		
-		// buttonTest
-		buttonTest = new Button();
-		buttonTest.setCaption("Test");
-		buttonTest.setImmediate(true);
-		buttonTest.setWidth("-1px");
-		buttonTest.setHeight("-1px");
-		verticalLayout_2.addComponent(buttonTest);
-		verticalLayout_2.setComponentAlignment(buttonTest, new Alignment(48));
-		
-		return verticalLayout_2;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/SQLPIPConfigurationComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/SQLPIPConfigurationComponent.java
deleted file mode 100644
index 7b2b501..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/components/SQLPIPConfigurationComponent.java
+++ /dev/null
@@ -1,763 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.components;
-
-import java.sql.Connection;
-import java.sql.DriverManager;
-import java.sql.SQLException;
-import java.util.HashSet;
-import java.util.Set;
-
-import javax.naming.Context;
-import javax.naming.InitialContext;
-import javax.naming.NamingException;
-import javax.sql.DataSource;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.PIPConfigParam;
-import org.apache.openaz.xacml.admin.jpa.PIPConfiguration;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventListener;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventNotifier;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.server.Page;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.Notification;
-import com.vaadin.ui.Notification.Type;
-import com.vaadin.ui.PasswordField;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-
-public class SQLPIPConfigurationComponent extends CustomComponent implements FormChangedEventNotifier {
-	
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-
-	@AutoGenerated
-	private Button buttonTest;
-
-	@AutoGenerated
-	private PasswordField textFieldPassword;
-
-	@AutoGenerated
-	private TextField textFieldUser;
-
-	@AutoGenerated
-	private TextField textFieldConnectionURL;
-
-	@AutoGenerated
-	private ComboBox comboBoxSQLDriver;
-
-	@AutoGenerated
-	private TextField textFieldDataSource;
-
-	@AutoGenerated
-	private ComboBox comboBoxConnectionType;
-
-	public static final String	CLASSNAME = "org.apache.openaz.xacml.std.pip.engines.jdbc.JDBCEngine";
-	
-	public static final String	SQL_TYPE = "type";
-	public static final String	SQL_TYPE_JDBC = "jdbc";
-	public static final String	SQL_TYPE_JNDI = "jndi";
-	public static final String	SQL_DATASOURCE = "datasource";
-	public static final String	SQL_DRIVER = "jdbc.driver";
-	public static final String	SQL_URL = "jdbc.url";
-	public static final String	SQL_USER = "jdbc.conn.user";
-	public static final String	SQL_PASSWORD = "jdbc.conn.password";
-	
-	//
-	// These are the drivers that we are initially supporting and testing.
-	// Other JDBC drivers may work fine, but we will wait until we test
-	// with those drivers before adding them to this list.
-	//
-	public static final String	SQL_DRIVER_MYSQL = "com.mysql.jdbc.Driver";
-	public static final String	SQL_DRIVER_POSTGRESQL = "org.postgresql.Driver";
-	public static final String	SQL_DRIVER_H2 = "org.h2.Driver";
-	public static final String	SQL_DRIVER_HYPER = "org.hsqldb.jdbc.JDBCDriver";
-	public static final String	SQL_DRIVER_SQL_SERVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
-	public static String[]	SQL_DRIVERS = new String[] {SQL_DRIVER_MYSQL, SQL_DRIVER_POSTGRESQL, SQL_DRIVER_H2, SQL_DRIVER_HYPER, SQL_DRIVER_SQL_SERVER};
-
-	public static final String	SQL_DRIVER_MYSQL_URL = "jdbc:mysql://localhost:3306/";
-	public static final String	SQL_DRIVER_POSTGRESQL_URL = "jdbc:postgresql://localhost:5432/";
-	public static final String	SQL_DRIVER_H2_URL = "jdbc:h2:file:/";
-	public static final String	SQL_DRIVER_HYPER_URL = "jdbc:hsqldb:file:/";
-	public static final String	SQL_DRIVER_SQL_SERVER_URL = "jdbc:sqlserver://localhost:1433/";
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(SQLPIPConfigurationComponent.class);
-
-	private final SQLPIPConfigurationComponent self = this;
-	private final BasicNotifier notifier = new BasicNotifier();
-	private final EntityItem<PIPConfiguration> entity;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 * @param configParamField 
-	 */
-	public SQLPIPConfigurationComponent(EntityItem<PIPConfiguration> entity) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Save
-		//
-		this.entity = entity;
-		//
-		// Initialize
-		//
-		this.initialize();
-		//
-		// Finish 
-		//
-		this.reset();
-	}
-	
-	protected void initialize() {
-		if (logger.isDebugEnabled()) {
-			logger.debug("initializing " + this.entity.getEntity().toString());
-		}
-		//
-		// Iterate any existing values, save them in the data field for each
-		// GUI object.
-		//
-		Set<PIPConfigParam> unneeded = new HashSet<PIPConfigParam>();
-		for (PIPConfigParam param : this.entity.getEntity().getPipconfigParams()) {
-			//
-			// Sanity check
-			//
-			if (param.getParamName() == null) {
-				logger.warn("Null parameter name found.");
-				unneeded.add(param);
-				continue;
-			}
-			if (param.getParamName().equals(SQL_TYPE)) {
-				this.comboBoxConnectionType.setData(param);
-			} else if (param.getParamName().equals(SQL_DATASOURCE)) {
-				this.textFieldDataSource.setData(param);
-			} else if (param.getParamName().equals(SQL_DRIVER)) {
-				this.comboBoxSQLDriver.setData(param);
-			} else if (param.getParamName().equals(SQL_URL)) {
-				this.textFieldConnectionURL.setData(param);
-			} else if (param.getParamName().equals(SQL_USER)) {
-				this.textFieldUser.setData(param);
-			} else if (param.getParamName().equals(SQL_PASSWORD)) {
-				this.textFieldPassword.setData(param);
-			} else {
-				unneeded.add(param);
-			}
-		}
-		//
-		// Get rid of parameters that are not needed
-		//
-		if (unneeded.isEmpty() == false) {
-			this.entity.getEntity().getPipconfigParams().removeAll(unneeded);
-		}
-		//
-		// Now finish initializing the GUI objects
-		//
-		this.initializeEntity();
-		this.initializeTypeCombo();
-		this.initializeSQLDriverCombo();
-		this.initializeText();
-		this.initializeButtons();
-	}
-	
-	protected void initializeEntity() {
-		//
-		// Initialize the entity
-		//
-		this.entity.getEntity().setClassname(CLASSNAME);
-		this.entity.getEntity().setRequiresResolvers(true);
-	}
-	
-	protected void initializeTypeCombo() {
-		//
-		// Setup GUI properties
-		//
-		this.comboBoxConnectionType.setImmediate(true);
-		this.comboBoxConnectionType.setNullSelectionAllowed(false);
-		this.comboBoxConnectionType.setRequired(true);
-		this.comboBoxConnectionType.setRequiredError("You must select a connection type.");
-		//
-		// Add the possible items
-		//
-		this.comboBoxConnectionType.addItem(SQL_TYPE_JDBC);
-		this.comboBoxConnectionType.addItem(SQL_TYPE_JNDI);
-		//
-		// Respond to events
-		//
-		this.comboBoxConnectionType.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.comboBoxConnectionType.getData();
-				if (param == null) {
-					param = new PIPConfigParam(SQL_TYPE);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.comboBoxConnectionType.setData(param);
-				}
-				param.setParamValue(self.comboBoxConnectionType.getValue().toString());
-				self.reset();
-				self.fireFormChangedEvent();
-			}
-		});
-		//
-		// Set its default selection. If there isn't one, then we default to JDBC.
-		//
-		PIPConfigParam param = (PIPConfigParam) this.comboBoxConnectionType.getData();
-		if (param == null) {
-			param = new PIPConfigParam(SQL_TYPE, SQL_TYPE_JDBC);
-			this.entity.getEntity().addPipconfigParam(param);
-			this.comboBoxConnectionType.setData(param);
-		}
-		this.comboBoxConnectionType.select(param.getParamValue());
-	}
-	
-	protected void initializeSQLDriverCombo() {
-		//
-		// GUI properties
-		//
-		this.comboBoxSQLDriver.setImmediate(true);
-		this.comboBoxSQLDriver.setRequired(true);
-		this.comboBoxConnectionType.setRequiredError("You must select a JDBC Driver");
-		this.comboBoxSQLDriver.setInputPrompt("Eg. com.mysql.jdbc.Driver");
-		//
-		// Add some common driver values. These are the drivers we have tested with so far.
-		//
-		for (String driver : SQL_DRIVERS) {
-			this.comboBoxSQLDriver.addItem(driver);
-		}
-		//
-		// Setup the default selection
-		//
-		PIPConfigParam param = (PIPConfigParam) this.comboBoxSQLDriver.getData();
-		if (param != null) {
-			this.comboBoxSQLDriver.setValue(param.getParamValue());
-			//
-			// Check if its there (the value could be something other than what we
-			// have setup in our list of defaults.)
-			//
-			boolean bFound = false;
-			for (Object id : this.comboBoxSQLDriver.getItemIds()) {
-				Item item = this.comboBoxSQLDriver.getItem(id);
-				if (item.toString().equals(param.getParamValue())) {
-					bFound = true;
-					break;
-				}
-			}
-			if (! bFound) {
-				//
-				// It's not one of our defaults, no problem. Add it in.
-				//
-				this.comboBoxSQLDriver.addItem(param.getParamValue());
-				this.comboBoxSQLDriver.setValue(param.getParamValue());
-			}
-		}
-		//
-		// Allow new items
-		//
-		this.comboBoxSQLDriver.setNewItemsAllowed(true);
-		//
-		// Respond to selection changes
-		//
-		this.comboBoxSQLDriver.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.comboBoxSQLDriver.getData();
-				if (param == null) {
-					param = new PIPConfigParam(SQL_DRIVER, self.comboBoxSQLDriver.getValue().toString());
-					self.entity.getEntity().addPipconfigParam(param);
-					self.comboBoxSQLDriver.setData(param);
-				}
-				//
-				// Was something unselected?
-				//
-				if (self.comboBoxSQLDriver.getValue() == null) {
-					param.setParamValue(null);
-				} else {
-					param.setParamValue(self.comboBoxSQLDriver.getValue().toString());
-					//
-					// See if we should pre-populate the driver URL
-					//
-					self.setupDriverURL(self.comboBoxSQLDriver.getValue().toString());
-				}
-				//
-				// Fire
-				//
-				self.fireFormChangedEvent();
-			}
-		});
-	}
-	
-	protected void initializeText() {
-		//
-		// GUI properties
-		//
-		this.textFieldDataSource.setImmediate(true);
-		this.textFieldDataSource.setNullRepresentation("");
-		this.textFieldDataSource.setRequired(true);
-		this.textFieldDataSource.setRequiredError("The name of the JNDI Resource is needed.");
-		//
-		// Get its initial value
-		//
-		PIPConfigParam param = (PIPConfigParam) this.textFieldDataSource.getData();
-		if (param != null) {
-			this.textFieldDataSource.setValue(param.getParamValue());
-		}
-		//
-		// Respond to value changes
-		//
-		this.textFieldDataSource.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldDataSource.getData();
-				if (param == null) {
-					param = new PIPConfigParam(SQL_DATASOURCE, self.textFieldDataSource.getValue());
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldDataSource.setData(param);
-				}
-				param.setParamValue(self.textFieldDataSource.getValue());
-				self.fireFormChangedEvent();
-			}
-		});
-		//
-		// Setup GUI properties
-		//
-		this.textFieldConnectionURL.setImmediate(true);
-		this.textFieldConnectionURL.setNullRepresentation("");
-		this.textFieldConnectionURL.setRequired(true);
-		this.textFieldConnectionURL.setRequiredError("A URL is needed to connect to the database.");
-		//
-		// Set its default value
-		//
-		param = (PIPConfigParam) this.textFieldConnectionURL.getData();
-		if (param != null) {
-			this.textFieldConnectionURL.setValue(param.getParamValue());
-		}
-		//
-		// Respond to value changes
-		//
-		this.textFieldConnectionURL.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldConnectionURL.getData();
-				if (param == null) {
-					param = new PIPConfigParam(SQL_URL);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldConnectionURL.setData(param);
-				}
-				param.setParamValue(self.textFieldConnectionURL.getValue());
-				self.fireFormChangedEvent();
-			}
-		});
-		//
-		// Set GUI properties
-		//
-		this.textFieldUser.setImmediate(true);
-		this.textFieldUser.setNullRepresentation("");
-		this.textFieldUser.setRequired(true);
-		this.textFieldUser.setRequiredError("User name is required.");
-		//
-		// Setup its default value
-		//
-		param = (PIPConfigParam) self.textFieldUser.getData();
-		if (param != null) {
-			this.textFieldUser.setValue(param.getParamValue());
-		}
-		//
-		// Respond to value changes
-		//
-		this.textFieldUser.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldUser.getData();
-				if (param == null) {
-					param = new PIPConfigParam(SQL_USER);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldUser.setData(param);
-				}
-				param.setParamValue(self.textFieldUser.getValue());
-				self.fireFormChangedEvent();
-			}
-		});
-		//
-		// Initialize GUI properties
-		//
-		this.textFieldPassword.setImmediate(true);
-		this.textFieldPassword.setNullRepresentation("");
-		//
-		// Set its default value
-		//
-		param = (PIPConfigParam) self.textFieldPassword.getData();
-		if (param != null) {
-			this.textFieldPassword.setValue(param.getParamValue());
-		}
-		//
-		// Respond to value change events
-		//
-		this.textFieldPassword.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				PIPConfigParam param = (PIPConfigParam) self.textFieldPassword.getData();
-				if (param == null) {
-					param = new PIPConfigParam(SQL_PASSWORD);
-					self.entity.getEntity().addPipconfigParam(param);
-					self.textFieldPassword.setData(param);
-				}
-				param.setParamValue(self.textFieldPassword.getValue());
-				self.fireFormChangedEvent();
-			}			
-		});
-	}
-	
-	protected void initializeButtons() {
-		this.buttonTest.setImmediate(true);
-		this.buttonTest.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				Object id = self.comboBoxConnectionType.getValue();
-				if (id == null) {
-					logger.warn("No combo box selection");
-					return;
-				}				
-				if (id.toString().equals(SQL_TYPE_JDBC)) {
-					self.testJDBCConnection();
-				} else if (id.toString().equals(SQL_TYPE_JNDI)) {
-					self.testJNDIConnection();
-				}
-			}			
-		});
-	}
-	
-	protected void setupDriverURL(String value) {
-		if (value.equals(SQL_DRIVER_MYSQL)) {
-			this.textFieldConnectionURL.setValue(SQL_DRIVER_MYSQL_URL);
-		} else if (value.equals(SQL_DRIVER_POSTGRESQL)) {
-			this.textFieldConnectionURL.setValue(SQL_DRIVER_POSTGRESQL_URL);
-		} else if (value.equals(SQL_DRIVER_H2)) {
-			this.textFieldConnectionURL.setValue(SQL_DRIVER_H2_URL);
-		} else if (value.equals(SQL_DRIVER_HYPER)) {
-			this.textFieldConnectionURL.setValue(SQL_DRIVER_HYPER_URL);
-		} else if (value.equals(SQL_DRIVER_SQL_SERVER)) {
-			this.textFieldConnectionURL.setValue(SQL_DRIVER_SQL_SERVER_URL);
-		}
-	}
-	
-	protected void testJNDIConnection() {
-		try {
-			Context initialContext = new InitialContext();
-			DataSource dataSource = (DataSource) initialContext.lookup(this.textFieldDataSource.getValue());
-			try (Connection connection = dataSource.getConnection()) {
-				new Notification("Success!",
-					    "Connection Established!",
-					    Type.HUMANIZED_MESSAGE, true)
-					    .show(Page.getCurrent());			
-			}
-		} catch (NamingException e) {
-			logger.error(e);
-			new Notification("JNDI Naming Exception",
-				    "<br/>" + e.getLocalizedMessage() + "<br/>Is the context defined in this J2EE Container instance?",
-				    Type.ERROR_MESSAGE, true)
-				    .show(Page.getCurrent());
-		} catch (SQLException e) {
-			logger.error(e);
-			new Notification("SQL Exception",
-				    "<br/>" + e.getLocalizedMessage() + "<br/>Are the configuration parameters correct?",
-				    Type.ERROR_MESSAGE, true)
-				    .show(Page.getCurrent());
-		}
-	}
-
-	protected void testJDBCConnection() {
-		try {
-			if (this.comboBoxSQLDriver.getValue() != null) {
-				Class.forName(this.comboBoxSQLDriver.getValue().toString());
-			} else {
-				throw new ClassNotFoundException("Please select a JDBC driver to load.");
-			}
-		} catch (ClassNotFoundException e) {
-			logger.error(e);
-			new Notification("Driver Exception",
-				    "<br/>" + e.getLocalizedMessage() + "<br/>Is the JDBC driver's jar in the J2EE container path?",
-				    Type.ERROR_MESSAGE, true)
-				    .show(Page.getCurrent());
-			return;
-		}
-		Connection connection = null;
-		try {
-			connection = DriverManager.getConnection(this.textFieldConnectionURL.getValue(), this.textFieldUser.getValue(), this.textFieldPassword.getValue());
-			new Notification("Success!",
-				    "Connection Established!",
-				    Type.HUMANIZED_MESSAGE, true)
-				    .show(Page.getCurrent());
-		} catch (SQLException e) {
-			logger.error(e);
-			new Notification("SQL Exception",
-				    "<br/>" + e.getLocalizedMessage() + "<br/>Are the configuration parameters correct?",
-				    Type.ERROR_MESSAGE, true)
-				    .show(Page.getCurrent());
-		} finally {
-			if (connection != null) {
-				try {
-					connection.close();
-				} catch (SQLException idontcare) { //NOPMD
-				}
-			}
-		}
-	}
-
-	protected void reset() {
-		Object id = this.comboBoxConnectionType.getValue();
-		if (id == null) {
-			logger.warn("Can't reset combo hasn't selected anything.");
-			return;
-		}
-		if (id.toString().equals(SQL_TYPE_JDBC)) {
-			//
-			//
-			//
-			this.textFieldDataSource.setVisible(false);
-			this.textFieldDataSource.setRequired(false);
-			//
-			//
-			//
-			this.textFieldConnectionURL.setVisible(true);
-			this.textFieldConnectionURL.setRequired(true);
-			this.comboBoxSQLDriver.setVisible(true);
-			this.comboBoxSQLDriver.setRequired(true);
-			this.textFieldUser.setVisible(true);
-			this.textFieldUser.setRequired(true);
-			this.textFieldPassword.setVisible(true);
-		} else if (id.toString().equals(SQL_TYPE_JNDI)) {
-			//
-			//
-			//
-			this.textFieldDataSource.setVisible(true);
-			this.textFieldDataSource.setRequired(true);
-			//
-			//
-			//
-			this.textFieldConnectionURL.setVisible(false);
-			this.textFieldConnectionURL.setRequired(false);
-			this.comboBoxSQLDriver.setVisible(false);
-			this.comboBoxSQLDriver.setRequired(false);
-			this.textFieldUser.setVisible(false);
-			this.textFieldUser.setRequired(false);
-			this.textFieldPassword.setVisible(false);
-		} else {
-			logger.warn("Unknown SQL type selection: " + id);
-		}
-	}
-	
-	public void validate() throws InvalidValueException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("validate");
-		}
-		this.comboBoxConnectionType.validate();
-		this.textFieldDataSource.validate();
-		this.textFieldConnectionURL.validate();
-		this.comboBoxSQLDriver.validate();
-		this.textFieldPassword.validate();
-		this.textFieldUser.validate();
-	}
-	
-	public void commit()  throws SourceException, InvalidValueException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("commit");
-		}
-		this.comboBoxConnectionType.commit();
-		
-		Object id = this.comboBoxConnectionType.getValue();
-		if (id == null) {
-			logger.warn("Can't reset combo hasn't selected anything.");
-			return;
-		}
-		if (id.toString().equals(SQL_TYPE_JDBC)) {
-			this.textFieldConnectionURL.commit();
-			this.comboBoxSQLDriver.commit();
-			this.textFieldPassword.commit();
-			this.textFieldUser.commit();
-			
-			this.textFieldDataSource.setData(null);
-			this.entity.getEntity().getPipconfigParams().remove(SQL_DATASOURCE);
-
-		} else if (id.toString().equals(SQL_TYPE_JNDI)) {
-
-			this.textFieldDataSource.commit();
-
-			this.textFieldConnectionURL.setData(null);
-			this.comboBoxSQLDriver.setData(null);
-			this.textFieldPassword.setData(null);
-			this.textFieldUser.setData(null);
-			/* ???
-			this.entity.getEntity().getPipconfigParams().remove(SQL_TYPE);
-			this.entity.getEntity().getPipconfigParams().remove(SQL_DRIVER);
-			this.entity.getEntity().getPipconfigParams().remove(SQL_URL);
-			this.entity.getEntity().getPipconfigParams().remove(SQL_USER);
-			this.entity.getEntity().getPipconfigParams().remove(SQL_PASSWORD);
-			*/
-		}
-	}
-	
-	public void discard() throws SourceException {
-		if (logger.isDebugEnabled()) {
-			logger.debug("discard");
-		}
-		this.textFieldDataSource.setData(null);
-		this.textFieldConnectionURL.setData(null);
-		this.comboBoxSQLDriver.setData(null);
-		this.textFieldPassword.setData(null);
-		this.textFieldUser.setData(null);
-
-		this.entity.getEntity().getPipconfigParams().remove(SQL_TYPE);
-		this.entity.getEntity().getPipconfigParams().remove(SQL_DATASOURCE);
-		this.entity.getEntity().getPipconfigParams().remove(SQL_DRIVER);
-		this.entity.getEntity().getPipconfigParams().remove(SQL_URL);
-		this.entity.getEntity().getPipconfigParams().remove(SQL_USER);
-		this.entity.getEntity().getPipconfigParams().remove(SQL_PASSWORD);
-	}
-
-	@Override
-	public boolean addListener(FormChangedEventListener listener) {
-		return this.notifier.addListener(listener);
-	}
-
-	@Override
-	public boolean removeListener(FormChangedEventListener listener) {
-		return this.notifier.removeListener(listener);
-	}
-
-	@Override
-	public void fireFormChangedEvent() {
-		this.notifier.fireFormChangedEvent();
-	}
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(false);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// comboBoxConnectionType
-		comboBoxConnectionType = new ComboBox();
-		comboBoxConnectionType.setCaption("Type of SQL Connection");
-		comboBoxConnectionType.setImmediate(false);
-		comboBoxConnectionType.setWidth("-1px");
-		comboBoxConnectionType.setHeight("-1px");
-		mainLayout.addComponent(comboBoxConnectionType);
-		
-		// textFieldDataSource
-		textFieldDataSource = new TextField();
-		textFieldDataSource.setCaption("Data Source");
-		textFieldDataSource.setImmediate(false);
-		textFieldDataSource.setWidth("-1px");
-		textFieldDataSource.setHeight("-1px");
-		mainLayout.addComponent(textFieldDataSource);
-		mainLayout.setExpandRatio(textFieldDataSource, 1.0f);
-		
-		// comboBoxSQLDriver
-		comboBoxSQLDriver = new ComboBox();
-		comboBoxSQLDriver.setCaption("JDBC Driver");
-		comboBoxSQLDriver.setImmediate(false);
-		comboBoxSQLDriver.setWidth("-1px");
-		comboBoxSQLDriver.setHeight("-1px");
-		mainLayout.addComponent(comboBoxSQLDriver);
-		mainLayout.setExpandRatio(comboBoxSQLDriver, 1.0f);
-		
-		// textFieldConnectionURL
-		textFieldConnectionURL = new TextField();
-		textFieldConnectionURL.setCaption("Connection URL");
-		textFieldConnectionURL.setImmediate(false);
-		textFieldConnectionURL.setWidth("-1px");
-		textFieldConnectionURL.setHeight("-1px");
-		mainLayout.addComponent(textFieldConnectionURL);
-		mainLayout.setExpandRatio(textFieldConnectionURL, 1.0f);
-		
-		// textFieldUser
-		textFieldUser = new TextField();
-		textFieldUser.setCaption("User");
-		textFieldUser.setImmediate(false);
-		textFieldUser.setWidth("-1px");
-		textFieldUser.setHeight("-1px");
-		mainLayout.addComponent(textFieldUser);
-		mainLayout.setExpandRatio(textFieldUser, 1.0f);
-		
-		// textFieldPassword
-		textFieldPassword = new PasswordField();
-		textFieldPassword.setCaption("Password");
-		textFieldPassword.setImmediate(false);
-		textFieldPassword.setWidth("-1px");
-		textFieldPassword.setHeight("-1px");
-		mainLayout.addComponent(textFieldPassword);
-		mainLayout.setExpandRatio(textFieldPassword, 1.0f);
-		
-		// buttonTest
-		buttonTest = new Button();
-		buttonTest.setCaption("Test Connection");
-		buttonTest.setImmediate(true);
-		buttonTest.setWidth("-1px");
-		buttonTest.setHeight("-1px");
-		mainLayout.addComponent(buttonTest);
-		mainLayout.setComponentAlignment(buttonTest, new Alignment(48));
-		
-		return mainLayout;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/ApplyParametersChangedListener.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/ApplyParametersChangedListener.java
deleted file mode 100644
index da86e03..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/ApplyParametersChangedListener.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.events;
-
-import org.apache.openaz.xacml.admin.jpa.FunctionArgument;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ApplyType;
-
-public interface ApplyParametersChangedListener {
-	
-	void applyParameterChanged(ApplyType apply, ApplyType parent, FunctionArgument argument, Object container);
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/ApplyParametersChangedNotifier.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/ApplyParametersChangedNotifier.java
deleted file mode 100644
index 2491e18..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/ApplyParametersChangedNotifier.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.events;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.apache.openaz.xacml.admin.jpa.FunctionArgument;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ApplyType;
-
-public interface ApplyParametersChangedNotifier {
-
-	boolean	addListener(ApplyParametersChangedListener listener);
-	
-	boolean	removeListener(ApplyParametersChangedListener listener);
-	
-	void fireEvent(ApplyType apply, ApplyType parent, FunctionArgument argument, Object container);
-	
-	class BasicNotifier implements ApplyParametersChangedNotifier {
-		Collection<ApplyParametersChangedListener> listeners = null;
-		
-		@Override
-		public boolean addListener(ApplyParametersChangedListener listener) {
-			if (this.listeners == null) {
-				this.listeners = new ArrayList<ApplyParametersChangedListener>();
-			}
-			return this.listeners.add(listener);
-		}
-
-		@Override
-		public boolean removeListener(ApplyParametersChangedListener listener) {
-			if (this.listeners == null) {
-				return false;
-			}
-			return this.listeners.remove(listener);
-		}
-
-		@Override
-		public void fireEvent(ApplyType apply, ApplyType parent, FunctionArgument argument, Object container) {
-			if (this.listeners == null) {
-				return;
-			}
-			for (ApplyParametersChangedListener listener : this.listeners) {
-				listener.applyParameterChanged(apply, parent, argument, container);
-			}
-		}
-		
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/AttributeChangedEventListener.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/AttributeChangedEventListener.java
deleted file mode 100644
index 10fb9a2..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/AttributeChangedEventListener.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.events;
-
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-
-public interface AttributeChangedEventListener {
-	void attributeChanged(Attribute attribute);
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/AttributeChangedEventNotifier.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/AttributeChangedEventNotifier.java
deleted file mode 100644
index da7606f..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/AttributeChangedEventNotifier.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.events;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-
-public interface AttributeChangedEventNotifier {
-
-	boolean	addListener(AttributeChangedEventListener listener);
-	
-	boolean removeListener(AttributeChangedEventListener listener);
-
-	void	fireAttributeChanged(Attribute attribute);
-	
-	void commit();
-	
-	Attribute	getAttribute();
-	
-	class BasicNotifier implements AttributeChangedEventNotifier {
-		Collection<AttributeChangedEventListener>	listeners = null;
-
-		@Override
-		public boolean addListener(AttributeChangedEventListener listener) {
-			if (this.listeners == null) {
-				this.listeners = new ArrayList<AttributeChangedEventListener>();
-			}
-			return this.listeners.add(listener);
-		}
-
-		@Override
-		public boolean removeListener(AttributeChangedEventListener listener) {
-			if (this.listeners == null) {
-				return false;
-			}
-			return this.listeners.remove(listener);
-		}
-
-		@Override
-		public void fireAttributeChanged(Attribute attribute) {
-			if (this.listeners == null) {
-				return;
-			}
-			for (AttributeChangedEventListener listener : this.listeners) {
-				listener.attributeChanged(attribute);
-			}
-		}
-		
-		public void commit() {
-			
-		}
-
-		public Attribute	getAttribute() {
-			return null;
-		}
-		
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/FormChangedEventListener.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/FormChangedEventListener.java
deleted file mode 100644
index 4637ee7..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/FormChangedEventListener.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.events;
-
-public interface FormChangedEventListener {
-	void onFormChanged();
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/FormChangedEventNotifier.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/FormChangedEventNotifier.java
deleted file mode 100644
index 1b8ba9d..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/events/FormChangedEventNotifier.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.events;
-
-import java.util.ArrayList;
-import java.util.Collection;
-
-public interface FormChangedEventNotifier {
-	boolean	addListener(FormChangedEventListener listener);
-	boolean	removeListener(FormChangedEventListener listener);
-	void		fireFormChangedEvent();
-	
-	class BasicNotifier implements FormChangedEventNotifier {
-		Collection<FormChangedEventListener> listeners = null;
-
-		@Override
-		public boolean addListener(FormChangedEventListener listener) {
-			if (this.listeners == null) {
-				this.listeners = new ArrayList<FormChangedEventListener>();
-			}
-			return this.listeners.add(listener);
-		}
-
-		@Override
-		public boolean removeListener(FormChangedEventListener listener) {
-			if (this.listeners == null) {
-				this.listeners = new ArrayList<FormChangedEventListener>();
-			}
-			return this.listeners.remove(listener);
-		}
-
-		@Override
-		public void fireFormChangedEvent() {
-			if (this.listeners == null) {
-				return;
-			}
-			for (FormChangedEventListener listener : this.listeners) {
-				listener.onFormChanged();
-			}
-		}
-		
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/ConfigParamField.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/ConfigParamField.java
deleted file mode 100644
index c91a192..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/ConfigParamField.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.fields;
-
-import java.util.Collection;
-
-import org.apache.openaz.xacml.admin.jpa.PIPConfiguration;
-import org.apache.openaz.xacml.admin.jpa.PIPType;
-import org.apache.openaz.xacml.admin.view.components.CSVPIPConfigurationComponent;
-import org.apache.openaz.xacml.admin.view.components.CustomPIPConfigurationComponent;
-import org.apache.openaz.xacml.admin.view.components.HyperCSVPIPConfigurationComponent;
-import org.apache.openaz.xacml.admin.view.components.LDAPPIPConfigurationComponent;
-import org.apache.openaz.xacml.admin.view.components.SQLPIPConfigurationComponent;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventListener;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.ui.Component;
-import com.vaadin.ui.CustomField;
-import com.vaadin.ui.VerticalLayout;
-
-public class ConfigParamField extends CustomField<Object> implements FormChangedEventListener {
-	private static final long serialVersionUID = 1L;
-	private final EntityItem<PIPConfiguration> entityConfig;
-	private VerticalLayout mainLayout = new VerticalLayout();
-
-	public ConfigParamField(EntityItem<PIPConfiguration> config) {
-		//
-		// Save
-		//
-		this.entityConfig = config;
-		//
-		// Make sure we can auto-fit
-		//
-		this.setWidth("-1px");
-		this.mainLayout.setWidth("-1px");
-	}
-
-	public Component resetContent(PIPType pipType) {
-		//
-		// Remove all the layout
-		//
-		this.mainLayout.removeAllComponents();
-		this.mainLayout.setDescription("Custom Field Layout");
-		//
-		// Is there a type?
-		//
-		if (pipType == null) {
-			return this.mainLayout;
-		}
-		//
-		// Setup the layout based on the type
-		//
-		Component c = null;
-		String type = pipType.getType();
-		if (type.equals(PIPType.TYPE_SQL)) {
-			SQLPIPConfigurationComponent comp = new SQLPIPConfigurationComponent(this.entityConfig);
-			comp.addListener(this);
-			c = comp;
-		} else if (type.equals(PIPType.TYPE_LDAP)) {
-			LDAPPIPConfigurationComponent comp = new LDAPPIPConfigurationComponent(this.entityConfig);
-			comp.addListener(this);
-			c = comp;
-		} else if (type.equals(PIPType.TYPE_CSV)) {
-			CSVPIPConfigurationComponent comp = new CSVPIPConfigurationComponent(this.entityConfig);
-			comp.addListener(this);
-			c = comp;
-		} else if (type.equals(PIPType.TYPE_HYPERCSV)) {
-			HyperCSVPIPConfigurationComponent comp = new HyperCSVPIPConfigurationComponent(this.entityConfig);
-			comp.addListener(this);
-			c = comp;
-		} else if (type.equals(PIPType.TYPE_CUSTOM)) {
-			CustomPIPConfigurationComponent comp = new CustomPIPConfigurationComponent(this.entityConfig);
-			comp.addListener(this);
-			c = comp;
-		}
-		if (c != null) {
-			this.mainLayout.addComponent(c);
-		}
-		//
-		// Done
-		//
-		return this.mainLayout;
-	}
-	
-	@Override
-	protected Component initContent() {
-		return this.resetContent(this.entityConfig.getEntity().getPiptype());
-	}
-
-	@Override
-	public void validate() throws InvalidValueException {
-		if (this.mainLayout.getComponentCount() == 0) {
-			return;
-		}
-		Component c = this.mainLayout.getComponent(0);
-		if (c instanceof SQLPIPConfigurationComponent) {
-			((SQLPIPConfigurationComponent)c).validate();
-		} else if (c instanceof LDAPPIPConfigurationComponent) {
-			((LDAPPIPConfigurationComponent)c).validate();
-		} else if (c instanceof CSVPIPConfigurationComponent) {
-			((CSVPIPConfigurationComponent)c).validate();
-		} else if (c instanceof HyperCSVPIPConfigurationComponent) {
-			((HyperCSVPIPConfigurationComponent)c).validate();
-		} else if (c instanceof CustomPIPConfigurationComponent) {
-			((CustomPIPConfigurationComponent)c).validate();
-		}
-		super.validate();
-	}
-
-	@Override
-	public void commit() throws SourceException, InvalidValueException {
-		if (this.mainLayout.getComponentCount() == 0) {
-			return;
-		}
-		Component c = this.mainLayout.getComponent(0);
-		if (c instanceof SQLPIPConfigurationComponent) {
-			((SQLPIPConfigurationComponent)c).commit();
-		} else if (c instanceof LDAPPIPConfigurationComponent) {
-			((LDAPPIPConfigurationComponent)c).commit();
-		} else if (c instanceof CSVPIPConfigurationComponent) {
-			((CSVPIPConfigurationComponent)c).commit();
-		} else if (c instanceof HyperCSVPIPConfigurationComponent) {
-			((HyperCSVPIPConfigurationComponent)c).commit();
-		} else if (c instanceof CustomPIPConfigurationComponent) {
-			((CustomPIPConfigurationComponent)c).commit();
-		}
-		super.commit();
-	}
-
-	@Override
-	public Class<?> getType() {
-		return Collection.class;
-	}
-
-	@Override
-	public void onFormChanged() {
-		this.fireEvent(new com.vaadin.ui.Field.ValueChangeEvent(this));
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/ConstraintField.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/ConstraintField.java
deleted file mode 100644
index 2004510..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/ConstraintField.java
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.fields;
-
-import java.util.Collection;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.ConstraintType;
-import org.apache.openaz.xacml.admin.view.components.EnumerationEditorComponent;
-import org.apache.openaz.xacml.admin.view.components.RangeEditorComponent;
-import org.apache.openaz.xacml.admin.view.components.RegexpEditorComponent;
-import org.apache.openaz.xacml.api.Identifier;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.ui.Component;
-import com.vaadin.ui.CustomField;
-import com.vaadin.ui.VerticalLayout;
-
-public class ConstraintField extends CustomField<Object> {
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(ConstraintField.class);
-	
-	private VerticalLayout mainLayout = new VerticalLayout();
-	private EntityItem<Attribute>	attributeEntity;
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public ConstraintField(EntityItem<Attribute> entityItem) {
-		//
-		// Save our Attribute that we are editing
-		//
-		this.attributeEntity = entityItem;
-	}
-	
-	public void	resetDatatype(Identifier id) {
-		if (logger.isDebugEnabled()) {
-			logger.debug("resetDatatype " + id);
-		}
-		if (this.mainLayout.getComponentCount() == 0) {
-			return;
-		}
-		Component component = this.mainLayout.getComponent(0);
-		if (component != null && component instanceof RangeEditorComponent) {
-			((RangeEditorComponent) component).setupDatatype(id);
-		}
-		if (component != null && component instanceof EnumerationEditorComponent) {
-			((EnumerationEditorComponent) component).setupDatatype(id);
-		}
-	}
-	
-	public Component resetContent(ConstraintType type, Identifier datatype) {
-		//
-		// Remove all existing components
-		//
-		this.mainLayout.removeAllComponents();
-		//
-		// What are we constrained to?
-		//
-		if (type == null || type.getConstraintType() == null) {
-			//
-			// No constraint defined
-			//
-			this.attributeEntity.getEntity().removeAllConstraintValues();
-			return mainLayout;
-		}
-		if (type.getConstraintType().equals("Enumeration")) {
-			mainLayout.addComponent(new EnumerationEditorComponent(this.attributeEntity.getEntity(), datatype));
-		} else if (type.getConstraintType().equals("Range")) {
-			mainLayout.addComponent(new RangeEditorComponent(this.attributeEntity.getEntity(), datatype));
-		} else if (type.getConstraintType().equals("Regular Expression")) {
-			mainLayout.addComponent(new RegexpEditorComponent(this.attributeEntity.getEntity()));
-		}
-		return mainLayout;
-	}
-
-	@Override
-	protected Component initContent() {
-		return this.resetContent(this.attributeEntity.getEntity().getConstraintType(), this.attributeEntity.getEntity().getDatatypeBean().getIdentifer());
-	}
-
-	@Override
-	public Class<?> getType() {
-		return Collection.class;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/DesignatorSelectorField.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/DesignatorSelectorField.java
deleted file mode 100644
index 62c7ffa..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/DesignatorSelectorField.java
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.fields;
-
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.ui.Component;
-import com.vaadin.ui.CustomField;
-import com.vaadin.ui.OptionGroup;
-
-public class DesignatorSelectorField extends CustomField<Object> {
-	private static final long serialVersionUID = 1L;
-	private final DesignatorSelectorField self = this;
-	private final OptionGroup selectDesignator = new OptionGroup("Type of attribute");
-
-	public DesignatorSelectorField(EntityItem<Attribute> attributeEntity) {
-		this.selectDesignator.setImmediate(true);
-		this.selectDesignator.addItem(Attribute.ATTRIBUTE_DESIGNATOR);
-		this.selectDesignator.addItem(Attribute.ATTRIBUTE_SELECTOR);
-		if (attributeEntity.getEntity().isDesignator()) {
-			this.selectDesignator.select(Attribute.ATTRIBUTE_DESIGNATOR);
-		} else {
-			this.selectDesignator.select(Attribute.ATTRIBUTE_SELECTOR);
-		}
-		//
-		// Listen when designator vs selector changes
-		//
-		this.selectDesignator.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(
-					com.vaadin.data.Property.ValueChangeEvent event) {
-				Object value = self.selectDesignator.getValue();
-				if (value != null) {
-					if (value.toString().equals(Attribute.ATTRIBUTE_DESIGNATOR)) {
-						self.setValue('1');
-					} else if (value.toString().equals(Attribute.ATTRIBUTE_SELECTOR)) {
-						self.setValue('0');
-					}
-				}
-			}
-		});
-	}
-
-	@Override
-	protected Component initContent() {
-		return this.selectDesignator;
-	}
-
-	@Override
-	public Class<? extends Object> getType() {
-		return Character.class;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/ExpressionField.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/ExpressionField.java
deleted file mode 100644
index d1f250b..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/ExpressionField.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.fields;
-
-import java.util.Collection;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.vaadin.ui.Component;
-import com.vaadin.ui.CustomField;
-
-
-public class ExpressionField extends CustomField<Object> {
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(ExpressionField.class); //NOPMD
-	
-	@Override
-	protected Component initContent() {
-		// TODO Auto-generated method stub
-		return null;
-	}
-
-	@Override
-	public Class<? extends Object> getType() {
-		return Collection.class;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/OaExpressionsField.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/OaExpressionsField.java
deleted file mode 100644
index f5ca9fd..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/OaExpressionsField.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.fields;
-
-import java.util.Collection;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.Obadvice;
-import org.apache.openaz.xacml.admin.view.components.OaExpressionsEditorComponent;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.ui.Component;
-import com.vaadin.ui.CustomField;
-import com.vaadin.ui.UI;
-
-public class OaExpressionsField extends CustomField<Object> {
-	private static final long serialVersionUID = 1L;
-	private final EntityItem<Obadvice> obad;
-
-	public OaExpressionsField(EntityItem<Obadvice> obad) {
-		this.obad = obad;
-	}
-
-	@Override
-	protected Component initContent() {
-		return new OaExpressionsEditorComponent(this.obad, ((XacmlAdminUI)UI.getCurrent()).getObadviceExpressions());
-	}
-
-	@Override
-	public Class<? extends Object> getType() {
-		return Collection.class;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/ResolverParamField.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/ResolverParamField.java
deleted file mode 100644
index 9986dc7..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/fields/ResolverParamField.java
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.fields;
-
-import java.util.Collection;
-
-import org.apache.openaz.xacml.admin.jpa.PIPResolver;
-import org.apache.openaz.xacml.admin.view.components.PIPParameterComponent;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventListener;
-import org.apache.openaz.xacml.admin.view.windows.PIPSQLResolverEditorWindow;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.ui.Component;
-import com.vaadin.ui.CustomField;
-import com.vaadin.ui.VerticalLayout;
-
-public class ResolverParamField extends CustomField<Object> implements FormChangedEventListener {
-	private static final long serialVersionUID = 1L;
-	private final EntityItem<PIPResolver> entity;
-	private VerticalLayout mainLayout = new VerticalLayout();
-
-	public ResolverParamField(EntityItem<PIPResolver> entity) {
-		this.entity = entity;
-		//
-		// Make sure we can auto-fit
-		//
-		this.setWidth("-1px");
-		this.mainLayout.setWidth("-1px");
-	}
-
-	@Override
-	public void onFormChanged() {
-		this.fireEvent(new com.vaadin.ui.Field.ValueChangeEvent(this));
-	}
-
-	@Override
-	protected Component initContent() {
-		Component c = null;
-		if (this.entity.getEntity().getPipconfiguration().getPiptype().isSQL() ||
-			this.entity.getEntity().getPipconfiguration().getPiptype().isHyperCSV() ||
-			this.entity.getEntity().getPipconfiguration().getPiptype().isLDAP() ||
-			this.entity.getEntity().getPipconfiguration().getPiptype().isCSV() ) {
-			//
-			//
-			//
-			PIPSQLResolverEditorWindow comp = new PIPSQLResolverEditorWindow(this.entity);
-			comp.addListener(this);
-			c = comp;
-		} else {
-			//
-			//
-			//
-			PIPParameterComponent comp = new PIPParameterComponent(this.entity.getEntity());
-			comp.addListener(this);
-			c = comp;
-		}
-		if (c != null) {
-			this.mainLayout.addComponent(c);
-		}
-		return this.mainLayout;
-	}
-
-	
-	@Override
-	public void discard() throws SourceException {
-		if (this.mainLayout.getComponentCount() == 0) {
-			return;
-		}
-		Component c = this.mainLayout.getComponent(0);
-		if (c instanceof PIPSQLResolverEditorWindow) {
-			((PIPSQLResolverEditorWindow)c).discard();
-		}
-		super.discard();
-	}
-
-	@Override
-	public void validate() throws InvalidValueException {
-		if (this.mainLayout.getComponentCount() == 0) {
-			return;
-		}
-		Component c = this.mainLayout.getComponent(0);
-		if (c instanceof PIPSQLResolverEditorWindow) {
-			((PIPSQLResolverEditorWindow)c).validate();
-		}
-		super.validate();
-	}
-
-	@Override
-	public void commit() throws SourceException, InvalidValueException {
-		if (this.mainLayout.getComponentCount() == 0) {
-			return;
-		}
-		Component c = this.mainLayout.getComponent(0);
-		if (c instanceof PIPSQLResolverEditorWindow) {
-			((PIPSQLResolverEditorWindow)c).commit();
-		}
-		super.commit();
-	}
-
-	@Override
-	public Class<? extends Object> getType() {
-		return Collection.class;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/AnyURIValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/AnyURIValidator.java
deleted file mode 100644
index 1101f23..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/AnyURIValidator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import java.net.URI;
-import java.net.URISyntaxException;
-
-import com.vaadin.data.Validator;
-
-public class AnyURIValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public AnyURIValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof String) {
-			try {
-				new URI((String) value);
-			} catch (URISyntaxException e) {
-				throw new InvalidValueException(e.getLocalizedMessage());
-			}
-		} else
-			throw new InvalidValueException("Unrecognized URI");
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/Base64BinaryValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/Base64BinaryValidator.java
deleted file mode 100644
index 362a5d9..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/Base64BinaryValidator.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-// import org.apache.commons.codec.DecoderException;
-import org.apache.commons.codec.binary.Base64;
-
-import com.vaadin.data.Validator;
-
-public class Base64BinaryValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public Base64BinaryValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof String) {
-			// try {
-				new Base64().decode((String) value);
-			// Base64().decode(String) inherited from 
-			// org.apache.commons.codec.binary.BaseNCodec
-			// does not throw DecoderException in version 1.10
-			// of org.apache.commons.codec (the version we are
-			// using).  This may need to be uncommented in later
-			// versions.
-			//
-			// TODO - Since this does not throw an exception under
-			//        any circumstance, I question whether it is
-			//        a valid method of validating the input value.
-			//
-			// } catch (DecoderException e) {
-			// 	throw new InvalidValueException(e.getLocalizedMessage());
-			// }
-		} else
-			throw new InvalidValueException("Unrecognized Base64 Binary");
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/BooleanValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/BooleanValidator.java
deleted file mode 100644
index 0e2c8c1..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/BooleanValidator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import com.vaadin.data.Validator;
-
-public class BooleanValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public BooleanValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof Boolean) {
-			return;
-		}
-		if (value.toString().equalsIgnoreCase("true") ||
-			value.toString().equalsIgnoreCase("false") ||
-			value.toString().equalsIgnoreCase("0") ||
-			value.toString().equalsIgnoreCase("1")) {
-			return;
-		}
-		throw new InvalidValueException("Unrecognized boolean");
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DNSNameValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DNSNameValidator.java
deleted file mode 100644
index 3d2c8d0..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DNSNameValidator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import java.text.ParseException;
-
-import org.apache.openaz.xacml.std.datatypes.RFC2396DomainName;
-import com.vaadin.data.Validator;
-
-public class DNSNameValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public DNSNameValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof String) {
-			try {
-				RFC2396DomainName.newInstance((String) value);
-			} catch (ParseException e) {
-				throw new InvalidValueException(e.getLocalizedMessage());
-			}
-		} else
-			throw new InvalidValueException("Unrecognized DNS Name");
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DateTimeValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DateTimeValidator.java
deleted file mode 100644
index 4bdea6e..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DateTimeValidator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import java.text.ParseException;
-
-import org.apache.openaz.xacml.std.datatypes.ISO8601DateTime;
-import com.vaadin.data.Validator;
-
-public class DateTimeValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public DateTimeValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof String) {
-			try {
-				ISO8601DateTime.fromISO8601DateTimeString((String) value);
-			} catch (ParseException e) {
-				throw new InvalidValueException(e.getLocalizedMessage());
-			}
-		} else
-			throw new InvalidValueException("Unrecognized DateTime");
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DateValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DateValidator.java
deleted file mode 100644
index 0d217e4..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DateValidator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import java.text.ParseException;
-
-import org.apache.openaz.xacml.std.datatypes.ISO8601Date;
-import com.vaadin.data.Validator;
-
-public class DateValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public DateValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof String) {
-			try {
-				ISO8601Date.fromISO8601DateString((String) value);
-			} catch (ParseException e) {
-				throw new InvalidValueException(e.getLocalizedMessage());
-			}
-		} else
-			throw new InvalidValueException("Unrecognized Date");
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DayTimeDurationValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DayTimeDurationValidator.java
deleted file mode 100644
index f8aaa6b..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DayTimeDurationValidator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import java.text.ParseException;
-
-import org.apache.openaz.xacml.std.datatypes.XPathDayTimeDuration;
-import com.vaadin.data.Validator;
-
-public class DayTimeDurationValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public DayTimeDurationValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof String) {
-			try {
-				XPathDayTimeDuration.newInstance((String) value);
-			} catch (ParseException e) {
-				throw new InvalidValueException(e.getLocalizedMessage());
-			}
-		} else
-			throw new InvalidValueException("Unrecognized DayTimeDuration");
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DoubleValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DoubleValidator.java
deleted file mode 100644
index a0fc0dd..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/DoubleValidator.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import com.vaadin.data.Validator;
-
-public class DoubleValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public DoubleValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof Double) {
-			return;
-		}
-		try {
-			Double.parseDouble(value.toString());
-		} catch (NumberFormatException e) {
-			throw new InvalidValueException(e.getLocalizedMessage());
-		}
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/HexBinaryValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/HexBinaryValidator.java
deleted file mode 100644
index e8065b1..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/HexBinaryValidator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import org.apache.commons.codec.DecoderException;
-
-import org.apache.openaz.xacml.std.datatypes.HexBinary;
-import com.vaadin.data.Validator;
-
-public class HexBinaryValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public HexBinaryValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof String) {
-			try {
-				HexBinary.newInstance((String) value);
-			} catch (DecoderException e) {
-				throw new InvalidValueException(e.getLocalizedMessage());
-			}
-		} else
-			throw new InvalidValueException("Unrecognized HexBinary");
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/IntegerValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/IntegerValidator.java
deleted file mode 100644
index 3996819..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/IntegerValidator.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import com.vaadin.data.Validator;
-
-public class IntegerValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public IntegerValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof Integer) {
-			return;
-		}
-		try {
-			Integer.parseInt(value.toString());
-		} catch (NumberFormatException e) {
-			throw new InvalidValueException(e.getLocalizedMessage());
-		}
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/IpAddressValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/IpAddressValidator.java
deleted file mode 100644
index 72aa772..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/IpAddressValidator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import java.text.ParseException;
-
-import org.apache.openaz.xacml.std.datatypes.IPAddress;
-import com.vaadin.data.Validator;
-
-public class IpAddressValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public IpAddressValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof String) {
-			try {
-				IPAddress.newInstance((String) value);
-			} catch (ParseException e) {
-				throw new InvalidValueException(e.getLocalizedMessage());
-			}
-		} else
-			throw new InvalidValueException("Unrecognized IP Address");
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/RFC822NameValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/RFC822NameValidator.java
deleted file mode 100644
index 4211cd7..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/RFC822NameValidator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import java.text.ParseException;
-
-import org.apache.openaz.xacml.std.datatypes.RFC822Name;
-import com.vaadin.data.Validator;
-
-public class RFC822NameValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public RFC822NameValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof String) {
-			try {
-				RFC822Name.newInstance((String) value);
-			} catch (ParseException e) {
-				throw new InvalidValueException(e.getLocalizedMessage());
-			}
-		} else
-			throw new InvalidValueException("Unrecognized RFC822 Name");
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/StringValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/StringValidator.java
deleted file mode 100644
index 7d03d38..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/StringValidator.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import com.vaadin.data.Validator;
-
-public class StringValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public StringValidator() {
-		// TODO Auto-generated constructor stub
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		// TODO Auto-generated method stub
-		
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/TimeValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/TimeValidator.java
deleted file mode 100644
index b93dafe..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/TimeValidator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import java.text.ParseException;
-
-import org.apache.openaz.xacml.std.datatypes.ISO8601Time;
-import com.vaadin.data.Validator;
-
-public class TimeValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public TimeValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof String) {
-			try {
-				ISO8601Time.fromISO8601TimeString((String) value);
-			} catch (ParseException e) {
-				throw new InvalidValueException(e.getLocalizedMessage());
-			}
-		} else
-			throw new InvalidValueException("Unrecognized Time");
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/ValidatorFactory.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/ValidatorFactory.java
deleted file mode 100644
index 354d662..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/ValidatorFactory.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.api.XACML3;
-import com.vaadin.data.Validator;
-
-public class ValidatorFactory {
-
-	public static Validator	newInstance(Datatype datatype) {
-		
-		if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_ANYURI)) {
-			return new AnyURIValidator();
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_BASE64BINARY)) {
-			return new Base64BinaryValidator();
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_BOOLEAN)) {
-			return new BooleanValidator();
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_DATE)) {
-			return new DateValidator();
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_DATETIME)) {
-			return new DateTimeValidator();
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_DAYTIMEDURATION)) {
-			return new DayTimeDurationValidator();
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_DNSNAME)) {
-			return new DNSNameValidator();
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_DOUBLE)) {
-			return new DoubleValidator();
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_HEXBINARY)) {
-			return new HexBinaryValidator();
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_INTEGER)) {
-			return new IntegerValidator();
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_IPADDRESS)) {
-			return new IpAddressValidator();
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_RFC822NAME)) {
-			return new RFC822NameValidator();
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_STRING)) {
-			return new StringValidator();
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_TIME)) {
-			return new TimeValidator();
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_X500NAME)) {
-			return new X500NameValidator();
-		/*
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_XPATHEXPRESSION)) {
-			
-		*/
-		} else if (datatype.getIdentifer().equals(XACML3.ID_DATATYPE_YEARMONTHDURATION)) {
-			return new YearMonthDurationValidator();
-		}
-		
-		return null;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/X500NameValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/X500NameValidator.java
deleted file mode 100644
index 977a13d..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/X500NameValidator.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import javax.security.auth.x500.X500Principal;
-
-import com.vaadin.data.Validator;
-
-public class X500NameValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public X500NameValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof String) {
-			try {
-				new X500Principal((String) value);
-			} catch (IllegalArgumentException e) {
-				throw new InvalidValueException(e.getLocalizedMessage());
-			}
-		} else
-			throw new InvalidValueException("Unrecognized X500 Name");
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/YearMonthDurationValidator.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/YearMonthDurationValidator.java
deleted file mode 100644
index 8d53629..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/validators/YearMonthDurationValidator.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.validators;
-
-import java.text.ParseException;
-
-import org.apache.openaz.xacml.std.datatypes.XPathYearMonthDuration;
-import com.vaadin.data.Validator;
-
-public class YearMonthDurationValidator implements Validator {
-	private static final long serialVersionUID = 1L;
-
-	public YearMonthDurationValidator() {
-	}
-
-	@Override
-	public void validate(Object value) throws InvalidValueException {
-		if (value instanceof String) {
-			try {
-				XPathYearMonthDuration.newInstance((String) value);
-			} catch (ParseException e) {
-				throw new InvalidValueException(e.getLocalizedMessage());
-			}
-		} else
-			throw new InvalidValueException("Unrecognized YearMonthDuration");
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AdviceEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AdviceEditorWindow.java
deleted file mode 100644
index 802eb43..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AdviceEditorWindow.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.OptionGroup;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class AdviceEditorWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private OptionGroup optionGroupEffect;
-	@AutoGenerated
-	private TextField textFieldAdviceID;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final AdviceEditorWindow self = this;
-	private final AdviceExpressionType advice;
-	private boolean isSaved = false;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public AdviceEditorWindow(AdviceExpressionType advice) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save
-		//
-		this.advice = advice;
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize GUI
-		//
-		this.initialize();
-		this.initializeButton();
-		//
-		// Focus
-		//
-		this.textFieldAdviceID.focus();
-	}
-	
-	protected void initialize() {
-		//
-		// The text field for the advice ID
-		//
-		this.textFieldAdviceID.setNullRepresentation("");
-		if (this.advice.getAdviceId() == null) {
-			this.textFieldAdviceID.setValue(XacmlAdminUI.getDomain());
-		} else {
-			this.textFieldAdviceID.setValue(advice.getAdviceId());
-		}
-		this.textFieldAdviceID.setRequiredError("You must have an ID for the advice");
-		//
-		// The option
-		//
-		this.optionGroupEffect.setRequiredError("You must select Permit or Deny for the advice");
-		this.optionGroupEffect.addItem(EffectType.PERMIT);
-		this.optionGroupEffect.addItem(EffectType.DENY);
-		if (this.advice.getAppliesTo() == null) {
-			this.optionGroupEffect.select(EffectType.PERMIT);
-		} else {
-			if (this.advice.getAppliesTo().equals(EffectType.PERMIT)) {
-				this.optionGroupEffect.select(EffectType.PERMIT);
-			} else {
-				this.optionGroupEffect.select(EffectType.DENY);
-			}
-		}
-	}
-	
-	protected void initializeButton() {
-		this.buttonSave.setImmediate(true);
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Commit
-					//
-					self.textFieldAdviceID.commit();
-					self.optionGroupEffect.commit();
-					//
-					// all good, save everything
-					//
-					self.advice.setAdviceId(self.textFieldAdviceID.getValue());
-					self.advice.setAppliesTo((EffectType) self.optionGroupEffect.getValue());
-					//
-					// Set ourselves as saved
-					//
-					self.isSaved = true;
-					//
-					// Close the window
-					//
-					self.close();
-				} catch (SourceException | InvalidValueException e) { //NOPMD
-					//
-					// Vaadin displays the error
-					//
-				}
-			}			
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public AdviceExpressionType getAdvice() {
-		return this.advice;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldAdviceID
-		textFieldAdviceID = new TextField();
-		textFieldAdviceID.setCaption("Advice ID");
-		textFieldAdviceID.setImmediate(false);
-		textFieldAdviceID.setWidth("-1px");
-		textFieldAdviceID.setHeight("-1px");
-		textFieldAdviceID.setInvalidAllowed(false);
-		textFieldAdviceID.setRequired(true);
-		textFieldAdviceID.setInputPrompt("Eg. urn:com:foo:advice:sample");
-		mainLayout.addComponent(textFieldAdviceID);
-		
-		// optionGroupEffect
-		optionGroupEffect = new OptionGroup();
-		optionGroupEffect.setCaption("Applies To");
-		optionGroupEffect.setImmediate(false);
-		optionGroupEffect.setWidth("-1px");
-		optionGroupEffect.setHeight("-1px");
-		optionGroupEffect.setInvalidAllowed(false);
-		optionGroupEffect.setRequired(true);
-		mainLayout.addComponent(optionGroupEffect);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ApplyEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ApplyEditorWindow.java
deleted file mode 100644
index e8496e5..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ApplyEditorWindow.java
+++ /dev/null
@@ -1,600 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import java.util.List;
-import java.util.Map;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ApplyType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ConditionType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.jpa.FunctionArgument;
-import org.apache.openaz.xacml.admin.jpa.FunctionDefinition;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.admin.view.events.ApplyParametersChangedListener;
-import org.apache.openaz.xacml.admin.view.events.ApplyParametersChangedNotifier;
-import org.apache.openaz.xacml.api.XACML3;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Container;
-import com.vaadin.data.Container.Filter;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.util.BeanItemContainer;
-import com.vaadin.data.util.filter.Compare;
-import com.vaadin.data.util.filter.SimpleStringFilter;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class ApplyEditorWindow extends Window implements ApplyParametersChangedNotifier {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSelect;
-	@AutoGenerated
-	private Table tableFunction;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayout_1;
-	@AutoGenerated
-	private CheckBox checkBoxFilterIsBag;
-	@AutoGenerated
-	private ComboBox comboBoxDatatypeFilter;
-	@AutoGenerated
-	private TextField textFieldFilter;
-	@AutoGenerated
-	private TextArea textAreaDescription;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(ApplyEditorWindow.class);
-	private final ApplyEditorWindow self = this;
-	private final ApplyParametersChangedNotifier notifier = new ApplyParametersChangedNotifier.BasicNotifier();
-	private final BeanItemContainer<FunctionDefinition>	container = new BeanItemContainer<FunctionDefinition>(FunctionDefinition.class);
-	private final ApplyType apply;
-	private final ApplyType applyParent;
-	private final FunctionArgument argument;
-	private final Object parent;
-	private boolean isSaved = false;
-	private FunctionDefinition function = null;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 * @param parent 
-	 * @param parentApply 
-	 */
-	public ApplyEditorWindow(ApplyType apply, ApplyType parentApply, FunctionArgument argument, Object parent) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save
-		//
-		this.apply = apply;
-		this.applyParent = parentApply;
-		this.argument = argument;
-		this.parent = parent;
-		logger.info(this.apply + " " + this.applyParent + " " + this.argument + " " + this.parent);
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize
-		//
-		this.textAreaDescription.setValue(apply.getDescription());
-		this.textAreaDescription.setNullRepresentation("");
-		this.initializeButton();
-		this.initializeTable();
-		this.initializeFilters();
-		//
-		// focus
-		//
-		this.textFieldFilter.focus();
-	}
-	
-	protected void initializeTable() {
-		//
-		// Setup GUI properties
-		//
-		this.tableFunction.setImmediate(true);
-		this.tableFunction.setSelectable(true);
-		this.tableFunction.setNullSelectionAllowed(false);
-		this.tableFunction.setRequired(true);
-		this.tableFunction.setRequiredError("You MUST select a function for the Apply");
-		//
-		// Set its data source
-		//
-		this.tableFunction.setContainerDataSource(this.container);
-		this.tableFunction.setVisibleColumns(new Object[] {"xacmlid", "shortname", "datatypeBean", "isBagReturn"});
-		this.tableFunction.setColumnHeaders(new String[] {"Function Xacml ID", "ID", "Return Data Type", "Return Bag?"});
-		//
-		// Determine appropriate filters
-		//
-		Datatype datatypeId = null;
-		if (this.applyParent == null) {
-			if (this.parent instanceof ConditionType) {
-				//
-				// Only boolean functions allowed
-				//
-				datatypeId = JPAUtils.findDatatype(XACML3.ID_DATATYPE_BOOLEAN);
-			}
-		} else {
-			String parentFunction = this.applyParent.getFunctionId();
-			this.function = JPAUtils.findFunction(parentFunction);
-			if (this.function == null) {
-				throw new IllegalArgumentException("applyParent's function is not found:" + parentFunction);
-			}
-			if (this.argument == null) {
-				throw new IllegalArgumentException("Need to know what argument apply is ");
-			}
-			datatypeId = this.argument.getDatatypeBean();
-		}
-		Map<Datatype, List<FunctionDefinition>> functionMap = JPAUtils.getFunctionDatatypeMap();
-		if (datatypeId == null) {
-			//
-			// All functions are available
-			//
-			for (Datatype id : functionMap.keySet()) {
-				this.addTableEntries(functionMap.get(id));
-			}
-		} else {
-			for (Datatype id : functionMap.keySet()) {
-				if (id == null) {
-					if (datatypeId == null) {
-						this.addTableEntries(functionMap.get(id));
-						break;
-					}
-					continue;
-				}
-				if (id.getId() == datatypeId.getId()) {
-					this.addTableEntries(functionMap.get(id));
-					break;
-				}
-			}
-		}
-		//
-		// Setup double-click
-		//
-		this.tableFunction.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick()) {
-					self.selected();
-				}
-			}
-		});
-		//
-		// Value change listener
-		//
-		this.tableFunction.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				logger.info("valueChange " + self.tableFunction.getValue());
-				if (self.tableFunction.getValue() != null) {
-					self.buttonSelect.setEnabled(true);
-				} else {
-					self.buttonSelect.setEnabled(false);
-				}
-			}			
-		});
-		//
-		// Select current value if possible
-		//
-		if (this.apply != null && this.apply.getFunctionId() != null && this.apply.getFunctionId().isEmpty() == false) {
-			FunctionDefinition current = JPAUtils.findFunction(this.apply.getFunctionId());
-			if (current != null) {
-				this.tableFunction.select(current);
-				this.tableFunction.setCurrentPageFirstItemId(current);
-			} else {
-				logger.warn("Could not find function in table for " + this.apply.getFunctionId());
-			}
-		} else {
-			this.buttonSelect.setEnabled(false);
-		}
-	}
-	
-	protected void addTableEntries(List<FunctionDefinition> functions) {
-		if (functions == null) {
-			logger.warn("NULL list of functions, cannot add to table.");
-			return;
-		}
-		for (FunctionDefinition function : functions) {
-			//
-			// Just check if this function is available for this
-			// apply.
-			//
-//			if (XACMLFunctionValidator.isFunctionAvailable(function, this.apply, this.argument)) {
-				this.container.addBean(function);
-//			} else {
-//				if (logger.isDebugEnabled()) {
-//					logger.debug("Function not available: " + function);
-//				}
-//			}
-		}
-	}
-	
-	protected void initializeButton() {
-		this.buttonSelect.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.selected();
-			}
-		});
-	}
-	
-	protected void initializeFilters() {
-		this.textFieldFilter.setImmediate(true);
-		this.textFieldFilter.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-			SimpleStringFilter currentFilter = null;
-			
-			@Override
-			public void textChange(TextChangeEvent event) {
-				//
-				// Remove current filter
-				//
-				if (this.currentFilter != null) {
-					self.container.removeContainerFilter(this.currentFilter);
-					this.currentFilter = null;
-				}
-				//
-				// Get the text
-				//
-				String value = event.getText();
-				if (value != null && value.length() > 0) {
-					//
-					// Add the new filter
-					//
-					this.currentFilter = new SimpleStringFilter("shortname", value, true, false);
-					self.container.addContainerFilter(this.currentFilter);
-				}
-			}
-		});
-		
-		this.comboBoxDatatypeFilter.setContainerDataSource(((XacmlAdminUI) UI.getCurrent()).getDatatypes());
-		this.comboBoxDatatypeFilter.setImmediate(true);
-		this.comboBoxDatatypeFilter.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.comboBoxDatatypeFilter.setItemCaptionPropertyId("xacmlId");
-		this.comboBoxDatatypeFilter.setNullSelectionAllowed(true);
-		this.comboBoxDatatypeFilter.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-			Container.Filter currentFilter = null;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				//
-				// Remove current filter
-				//
-				if (this.currentFilter != null) {
-					self.container.removeContainerFilter(this.currentFilter);
-					this.currentFilter = null;
-				}
-				//
-				// Get the current selection
-				//
-				Object id = self.comboBoxDatatypeFilter.getValue();
-				if (id == null) {
-					return;
-				}
-				//
-				// Setup the filter
-				//
-				final Datatype datatype = ((XacmlAdminUI) UI.getCurrent()).getDatatypes().getItem(id).getEntity();
-				this.currentFilter = new Container.Filter() {
-					private static final long serialVersionUID = 1L;
-
-					@Override
-					public boolean passesFilter(Object itemId, Item item) throws UnsupportedOperationException {
-						if (itemId instanceof FunctionDefinition) {
-							Datatype dt = ((FunctionDefinition) itemId).getDatatypeBean();
-							if (dt == null) {
-								return false;
-							}
-							return dt.getXacmlId().equals(datatype.getXacmlId());
-						}
-						return false;
-					}
-					
-					@Override
-					public boolean appliesToProperty(Object propertyId) {
-						if (propertyId != null && propertyId.toString().equals("datatypeBean")) {
-							return true;
-						}
-						return false;
-					}
-				};
-				self.container.addContainerFilter(this.currentFilter);
-			}
-		});
-		
-		this.checkBoxFilterIsBag.setImmediate(true);
-		this.checkBoxFilterIsBag.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-			Filter currentFilter = null;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				//
-				// Remove current filter
-				//
-				if (this.currentFilter != null) {
-					self.container.removeContainerFilter(this.currentFilter);
-					this.currentFilter = null;
-				}
-				//
-				// Is it checked?
-				//
-				if (self.checkBoxFilterIsBag.getValue() == false) {
-					//
-					// Nope, get out of here
-					//
-					return;
-				}
-				//
-				// Add the filter
-				//
-				this.currentFilter = new Compare.Equal("isBagReturn", true);
-				self.container.addContainerFilter(this.currentFilter);
-			}
-		});
-	}
-	
-	protected	void	selected() {
-		//
-		// Is there a selected function?
-		//
-		try {
-			//
-			// Run the commit
-			//
-			this.textAreaDescription.commit();
-			this.tableFunction.commit();
-			//
-			// Commit worked, get the selected function
-			//
-			Object id = this.tableFunction.getValue();
-			//
-			// Sanity check, it *should* never be null
-			// unless someone changed the initialization code.
-			//
-			if (id == null || ! (id instanceof FunctionDefinition)) {
-				throw new InvalidValueException(this.tableFunction.getRequiredError());
-			}
-			//
-			// Get the actual function and save it into the apply
-			//
-			this.function = (FunctionDefinition) id;
-			this.apply.setDescription(this.textAreaDescription.getValue());
-			this.apply.setFunctionId(function.getXacmlid());
-		} catch (SourceException | InvalidValueException e) {
-			//
-			// Vaadin GUI will display message
-			//
-			return;
-		}
-		/**
-		//
-		// Make sure the arguments are good
-		//
-		final ApplyType copyApply = XACMLObjectCopy.copy(this.apply);
-		final ApplyArgumentsEditorWindow window = new ApplyArgumentsEditorWindow(copyApply, this.function);
-		window.setCaption("Define Arguments for " + this.function.getShortname());
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user click save?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// Save our arguments
-				//
-				self.apply.getExpression().clear();
-				self.apply.getExpression().addAll(copyApply.getExpression());
-				//
-				// We are saved
-				//
-				self.isSaved = true;
-				//
-				// Fire
-				//
-				self.fireEvent(self.apply, self.applyParent, self.argument, self.parent);
-				//
-				// Close the apply editor window
-				//
-				self.close();
-			}
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-		**/
-		//
-		// We are saved
-		//
-		self.isSaved = true;
-		//
-		// Fire
-		//
-		self.fireEvent(self.apply, self.applyParent, self.argument, self.parent);
-		//
-		// Close the apply editor window
-		//
-		self.close();
-	}
-
-	@Override
-	public boolean addListener(ApplyParametersChangedListener listener) {
-		return this.notifier.addListener(listener);
-	}
-
-	@Override
-	public boolean removeListener(ApplyParametersChangedListener listener) {
-		return this.notifier.removeListener(listener);
-	}
-
-	@Override
-	public void fireEvent(ApplyType apply, ApplyType parent, FunctionArgument argument, Object container) {
-		this.notifier.fireEvent(apply, parent, argument, container);
-	}
-
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public FunctionDefinition	getSelectedFunction() {
-		return this.function;
-	}
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// horizontalLayout_1
-		horizontalLayout_1 = buildHorizontalLayout_1();
-		mainLayout.addComponent(horizontalLayout_1);
-		
-		// tableFunction
-		tableFunction = new Table();
-		tableFunction.setCaption("Select A Function");
-		tableFunction.setImmediate(false);
-		tableFunction.setWidth("100.0%");
-		tableFunction.setHeight("-1px");
-		tableFunction.setInvalidAllowed(false);
-		tableFunction.setRequired(true);
-		mainLayout.addComponent(tableFunction);
-		mainLayout.setExpandRatio(tableFunction, 1.0f);
-		
-		// buttonSelect
-		buttonSelect = new Button();
-		buttonSelect.setCaption("Select and Continue");
-		buttonSelect.setImmediate(true);
-		buttonSelect.setWidth("-1px");
-		buttonSelect.setHeight("-1px");
-		mainLayout.addComponent(buttonSelect);
-		mainLayout.setComponentAlignment(buttonSelect, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayout_1() {
-		// common part: create layout
-		horizontalLayout_1 = new HorizontalLayout();
-		horizontalLayout_1.setImmediate(false);
-		horizontalLayout_1.setWidth("-1px");
-		horizontalLayout_1.setHeight("-1px");
-		horizontalLayout_1.setMargin(false);
-		horizontalLayout_1.setSpacing(true);
-		
-		// textAreaDescription
-		textAreaDescription = new TextArea();
-		textAreaDescription.setCaption("Enter A Description");
-		textAreaDescription.setImmediate(false);
-		textAreaDescription.setWidth("50.0%");
-		textAreaDescription.setHeight("-1px");
-		horizontalLayout_1.addComponent(textAreaDescription);
-		
-		// textFieldFilter
-		textFieldFilter = new TextField();
-		textFieldFilter.setCaption("Filter Function By ID");
-		textFieldFilter.setImmediate(false);
-		textFieldFilter.setWidth("-1px");
-		textFieldFilter.setHeight("-1px");
-		horizontalLayout_1.addComponent(textFieldFilter);
-		horizontalLayout_1.setComponentAlignment(textFieldFilter,
-				new Alignment(9));
-		
-		// comboBoxDatatypeFilter
-		comboBoxDatatypeFilter = new ComboBox();
-		comboBoxDatatypeFilter.setCaption("Filter By Data Type");
-		comboBoxDatatypeFilter.setImmediate(false);
-		comboBoxDatatypeFilter.setWidth("-1px");
-		comboBoxDatatypeFilter.setHeight("-1px");
-		horizontalLayout_1.addComponent(comboBoxDatatypeFilter);
-		horizontalLayout_1.setComponentAlignment(comboBoxDatatypeFilter,
-				new Alignment(9));
-		
-		// checkBoxFilterIsBag
-		checkBoxFilterIsBag = new CheckBox();
-		checkBoxFilterIsBag.setCaption("Is Bag Filter");
-		checkBoxFilterIsBag.setImmediate(false);
-		checkBoxFilterIsBag.setWidth("-1px");
-		checkBoxFilterIsBag.setHeight("-1px");
-		horizontalLayout_1.addComponent(checkBoxFilterIsBag);
-		horizontalLayout_1.setComponentAlignment(checkBoxFilterIsBag,
-				new Alignment(9));
-		
-		return horizontalLayout_1;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AttributeAssignmentExpressionEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AttributeAssignmentExpressionEditorWindow.java
deleted file mode 100644
index a9306fa..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AttributeAssignmentExpressionEditorWindow.java
+++ /dev/null
@@ -1,228 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeAssignmentExpressionType;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.Category;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class AttributeAssignmentExpressionEditorWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private Table tableCategories;
-	@AutoGenerated
-	private TextField textFieldIssuer;
-	@AutoGenerated
-	private TextField textFieldAttributeID;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final AttributeAssignmentExpressionEditorWindow self = this;
-	private final AttributeAssignmentExpressionType assignment;
-	private boolean isSaved = false;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public AttributeAssignmentExpressionEditorWindow(AttributeAssignmentExpressionType assignment) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save
-		//
-		this.assignment = assignment;
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize GUI
-		//
-		this.initializeText();
-		this.initializeTable();
-		this.initializeButton();
-		//
-		// Focus
-		//
-		this.textFieldAttributeID.focus();
-	}
-	
-	protected void initializeText() {
-		//
-		//
-		//
-		this.textFieldAttributeID.setNullRepresentation("");
-		if (this.assignment.getAttributeId() == null) {
-			this.textFieldAttributeID.setValue(XacmlAdminUI.getDomain());
-		} else {
-			this.textFieldAttributeID.setValue(this.assignment.getAttributeId());
-		}
-		this.textFieldAttributeID.setRequiredError("You must have an attribute id for the assignment expression.");
-		//
-		//
-		//
-		this.textFieldIssuer.setNullRepresentation("");
-		this.textFieldIssuer.setValue(this.assignment.getIssuer());
-	}
-	
-	protected void initializeTable() {
-		this.tableCategories.setContainerDataSource(((XacmlAdminUI) UI.getCurrent()).getCategories());
-		this.tableCategories.setVisibleColumns(new Object[] {"xacmlId"});
-		this.tableCategories.setColumnHeaders(new String[] {"XACML ID"});
-		this.tableCategories.setSelectable(true);
-		this.tableCategories.setNullSelectionAllowed(true);
-		this.tableCategories.setPageLength(((XacmlAdminUI) UI.getCurrent()).getCategories().size());
-	}
-	
-	protected void initializeButton() {
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Commit
-					//
-					self.textFieldAttributeID.commit();
-					self.textFieldIssuer.commit();
-					self.tableCategories.commit();
-					//
-					// Save
-					//
-					self.assignment.setAttributeId(self.textFieldAttributeID.getValue());
-					self.assignment.setIssuer(self.textFieldIssuer.getValue());
-					Object cat = self.tableCategories.getValue();
-					if (cat != null) {
-						EntityItem<Category> entity = ((XacmlAdminUI) UI.getCurrent()).getCategories().getItem(cat);
-						if (entity != null && entity.getEntity() != null) {
-							self.assignment.setCategory(entity.getEntity().getXacmlId());
-						} else {
-							self.assignment.setCategory(null);
-						}
-					} else {
-						self.assignment.setCategory(null);
-					}
-					//
-					// Set ourselves as saved
-					//
-					self.isSaved = true;
-					//
-					// close window
-					//
-					self.close();
-				} catch (SourceException e) { //NOPMD
-					//
-					// Vaadin displays error GUI
-					//
-				}
-			}
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public AttributeAssignmentExpressionType getAssignment () {
-		return this.assignment;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldAttributeID
-		textFieldAttributeID = new TextField();
-		textFieldAttributeID.setCaption("Attribute Assignment ID");
-		textFieldAttributeID.setImmediate(false);
-		textFieldAttributeID.setWidth("-1px");
-		textFieldAttributeID.setHeight("-1px");
-		textFieldAttributeID.setInvalidAllowed(false);
-		textFieldAttributeID.setRequired(true);
-		mainLayout.addComponent(textFieldAttributeID);
-		
-		// textFieldIssuer
-		textFieldIssuer = new TextField();
-		textFieldIssuer.setCaption("Issuer (Optional)");
-		textFieldIssuer.setImmediate(false);
-		textFieldIssuer.setWidth("-1px");
-		textFieldIssuer.setHeight("-1px");
-		textFieldIssuer.setNullSettingAllowed(true);
-		mainLayout.addComponent(textFieldIssuer);
-		
-		// tableCategories
-		tableCategories = new Table();
-		tableCategories.setCaption("Category (Optional)");
-		tableCategories.setImmediate(false);
-		tableCategories.setWidth("100.0%");
-		tableCategories.setHeight("-1px");
-		mainLayout.addComponent(tableCategories);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(false);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AttributeEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AttributeEditorWindow.java
deleted file mode 100644
index 62e9c1a..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AttributeEditorWindow.java
+++ /dev/null
@@ -1,336 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.ConstraintType;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.view.fields.ConstraintField;
-import org.apache.openaz.xacml.admin.view.fields.DesignatorSelectorField;
-import org.apache.openaz.xacml.api.Identifier;
-import org.apache.openaz.xacml.api.XACML3;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.addon.jpacontainer.fieldfactory.SingleSelectConverter;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.fieldgroup.FieldGroup;
-import com.vaadin.data.fieldgroup.FieldGroup.CommitException;
-import com.vaadin.data.fieldgroup.PropertyId;
-import com.vaadin.data.util.filter.Compare;
-import com.vaadin.data.util.filter.Not;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.shared.ui.combobox.FilteringMode;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.FormLayout;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.Window;
-
-public class AttributeEditorWindow extends Window {
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(AttributeEditorWindow.class);
-	private AttributeEditorWindow self = this;
-	
-	private boolean isSaved = false;
-	private Attribute attribute;
-	
-	private FormLayout mainLayout = new FormLayout();
-	
-	@PropertyId("isDesignator")
-	DesignatorSelectorField selectDesignator;
-	
-	@PropertyId("selectorPath")
-	TextField selectorPath = new TextField("Attribute Selector Path");
-	
-	@PropertyId("xacmlId")
-	TextField xacmlID = new TextField("XACML ID");
-
-	@PropertyId("categoryBean")
-	ComboBox category = new ComboBox("Category");
-	
-	@PropertyId("description")
-	TextArea descriptionField = new TextArea("Description");
-	
-	@PropertyId("datatypeBean")
-	ComboBox datatype = new ComboBox("DataType");
-	
-	@PropertyId("constraintType")
-	ComboBox constraintTypes = new ComboBox("Constraint Type");
-	
-	@PropertyId("constraintValues")
-	ConstraintField constraintValues;
-	
-	Button saveButton = new Button("Save");
-	
-	FieldGroup fieldGroup = null;
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public AttributeEditorWindow(EntityItem<Attribute> entityItem) {
-		//
-		// Save our attribute
-		//
-		this.attribute = entityItem.getEntity();
-		if (logger.isDebugEnabled()) {
-			logger.debug("Editing attribute: " + entityItem.getEntity().toString());
-		}
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Create our main layout
-		//
-		this.setContent(mainLayout);
-		//
-		// Finish setting up the main layout
-		//
-		this.mainLayout.setSpacing(true);
-		this.mainLayout.setMargin(true);
-		//
-		// Setup option group, binding the
-		// field group doesn't seem to work.
-		//
-		this.selectDesignator = new DesignatorSelectorField(entityItem);
-		this.selectDesignator.setCaption("Select the Attribute Type");
-		this.selectDesignator.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				Object value = self.selectDesignator.getValue();
-				if (value == null || ! (value instanceof Character)) {
-					self.selectorPath.setVisible(false);
-				}
-				if (((Character) value) == '1') {
-					self.selectorPath.setVisible(false);
-				} else {
-					self.selectorPath.setVisible(true);
-				}
-			}			
-		});
-		//
-		// Setup selector path
-		//
-		this.selectorPath.setImmediate(true);
-		this.selectorPath.setNullRepresentation("");
-		this.selectorPath.setWidth("100%");
-		//
-		// Setup the Category combo
-		//
-		this.category.setContainerDataSource(((XacmlAdminUI) UI.getCurrent()).getCategories());
-		this.category.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.category.setItemCaptionPropertyId("xacmlId");
-		this.category.setFilteringMode(FilteringMode.CONTAINS);
-		this.category.setImmediate(true);
-		this.category.setNullSelectionAllowed(false);
-		this.category.setConverter(new SingleSelectConverter<Object>(this.category));
-		//
-		// Setup the Datatype combo
-		//
-		this.datatype.setContainerDataSource(((XacmlAdminUI) UI.getCurrent()).getDatatypes());
-		this.datatype.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.datatype.setItemCaptionPropertyId("xacmlId");
-		this.datatype.setFilteringMode(FilteringMode.CONTAINS);
-		this.datatype.setImmediate(true);
-		this.datatype.setNullSelectionAllowed(false);
-		this.datatype.setConverter(new SingleSelectConverter<Object>(this.datatype));
-		//
-		// Setup the constraint type combo
-		//
-		this.constraintTypes.setContainerDataSource(((XacmlAdminUI) UI.getCurrent()).getConstraintTypes());
-		this.constraintTypes.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.constraintTypes.setItemCaptionPropertyId("constraintType");
-		this.constraintTypes.setFilteringMode(FilteringMode.CONTAINS);
-		this.constraintTypes.setImmediate(true);
-		this.constraintTypes.setNullSelectionAllowed(true);
-		this.constraintTypes.setConverter(new SingleSelectConverter<Object>(this.constraintTypes));
-		//
-		// Setup the constraint value custom field
-		//
-		this.constraintValues = new ConstraintField(entityItem);
-		//
-		// Finish laying out the main layout
-		//
-		this.mainLayout.addComponent(this.selectDesignator);
-		this.mainLayout.addComponent(this.selectorPath);
-		this.mainLayout.addComponent(this.xacmlID);
-		this.mainLayout.addComponent(this.category);
-		this.mainLayout.addComponent(this.descriptionField);
-		this.mainLayout.addComponent(this.datatype);
-		this.mainLayout.addComponent(this.constraintTypes);
-		this.mainLayout.addComponent(this.constraintValues);
-		//
-		// Now create our field group and bind our bean items
-		// This will populate the components with the attribute's
-		// current value.
-		//
-		this.fieldGroup = new FieldGroup(entityItem);
-		this.fieldGroup.bindMemberFields(this);
-		//
-		// Finishing setting up after the bind. There are some components
-		// where initializing the bind causes some properties to be reset.
-		//
-		this.xacmlID.setWidth("100%");
-		this.descriptionField.setNullRepresentation("");
-		this.descriptionField.setWidth("100%");
-		this.setupDatatype(this.attribute.getDatatypeBean().getIdentifer());
-		this.datatype.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				Identifier id = self.getCurrentDatatype();
-				if (id != null) {
-					self.setupDatatype(id);
-				}
-			}			
-		});
-		//
-		// Listen to when constraint type changes
-		//
-		this.constraintTypes.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				Object value = self.constraintTypes.getValue();
-				if (value == null) {
-					self.constraintValues.resetContent(null, self.getCurrentDatatype());
-				} else {
-					ConstraintType newValue = ((XacmlAdminUI) UI.getCurrent()).getConstraintTypes().getItem(value).getEntity();
-					self.constraintValues.resetContent(newValue, self.getCurrentDatatype());
-				}
-			}
-		});
-		//
-		// Setup our "SAVE" button to commit the fields
-		//
-		this.mainLayout.addComponent(this.saveButton);
-		this.mainLayout.setComponentAlignment(this.saveButton, Alignment.MIDDLE_CENTER);
-		this.saveButton.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// SAVE the latest values
-					//
-					fieldGroup.commit();
-					//
-					// Set that we did save the attribute
-					//
-					self.isSaved = true;
-					//
-					// Close the window
-					//
-					self.close();
-				} catch (CommitException e) {
-					logger.error("Failed to commit fields", e);
-				}
-			}
-			
-		});
-		//
-		// Add our close listener so we can discard anything that was changed.
-		//
-		this.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				if (self.isSaved == false) {
-					logger.info("discarding");
-					//
-					// Discard any changes to the existing JPA container entity
-					//
-					self.fieldGroup.discard();
-					//
-					// Make sure there are no filters on the container
-					//
-					((XacmlAdminUI) UI.getCurrent()).getConstraintTypes().removeAllContainerFilters();
-				}
-			}
-			
-		});
-		//
-		// Set focus
-		//
-		this.xacmlID.focus();
-	}
-	
-	private void setupDatatype(Identifier datatype) {
-		if (datatype.equals(XACML3.ID_DATATYPE_INTEGER) ||
-				datatype.equals(XACML3.ID_DATATYPE_DOUBLE)) {
-			((XacmlAdminUI) UI.getCurrent()).getConstraintTypes().removeAllContainerFilters();
-			this.constraintTypes.setEnabled(true);
-			this.constraintValues.resetDatatype(datatype);
-			return;
-		}
-		if (datatype.equals(XACML3.ID_DATATYPE_STRING)) {
-			((XacmlAdminUI) UI.getCurrent()).getConstraintTypes().addContainerFilter(new Not(new Compare.Equal("constraintType", ConstraintType.RANGE_TYPE)));
-			if (this.attribute.getConstraintType() != null && 
-					this.attribute.getConstraintType().getConstraintType() != null &&
-					this.attribute.getConstraintType().getConstraintType().equals(ConstraintType.RANGE_TYPE)) {
-				this.attribute.setConstraintType(null);
-			}
-			this.constraintValues.resetDatatype(datatype);
-			return;
-		}
-		//
-		// No constraint for all other datatypes
-		//
-		this.attribute.setConstraintType(null);
-		this.constraintTypes.select(null);
-		this.constraintTypes.setEnabled(false);
-	}
-	
-	private Identifier getCurrentDatatype() {
-		Object id = self.datatype.getValue();
-		if (id != null) {
-			EntityItem<Datatype> dt = ((XacmlAdminUI) UI.getCurrent()).getDatatypes().getItem(id);
-			if (dt != null) {
-				return dt.getEntity().getIdentifer();
-			}
-		}
-		return null;
-	}
-		
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AttributeSelectionWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AttributeSelectionWindow.java
deleted file mode 100644
index b1448bf..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AttributeSelectionWindow.java
+++ /dev/null
@@ -1,396 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeSelectorType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.admin.view.components.AttributeDictionarySelectorComponent;
-import org.apache.openaz.xacml.admin.view.components.AttributeSimpleCreatorComponent;
-import org.apache.openaz.xacml.admin.view.components.AttributeStandardSelectorComponent;
-import org.apache.openaz.xacml.admin.view.events.AttributeChangedEventListener;
-import org.apache.openaz.xacml.admin.view.events.AttributeChangedEventNotifier;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.OptionGroup;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class AttributeSelectionWindow extends Window implements AttributeChangedEventListener {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-	
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayoutAttribute;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayout_1;
-	@AutoGenerated
-	private VerticalLayout verticalLayout_2;
-	@AutoGenerated
-	private CheckBox checkBoxMustBePresent;
-	@AutoGenerated
-	private TextField textFieldIssuer;
-	@AutoGenerated
-	private OptionGroup optionGroupAttribute;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(AttributeSelectionWindow.class);
-	private final AttributeSelectionWindow self = this;
-	private final Datatype datatype;
-	private final Attribute defaultAttribute;
-	private AttributeChangedEventNotifier currentComponent = null;
-	private Attribute attribute = null;
-	private boolean isSaved = false;
-	
-	public static final String	ATTRIBUTE_OPTION_DICTIONARY = "Use Attribute From Dictionary";
-	public static final String	ATTRIBUTE_OPTION_STANDARD = "Use A Standard Attribute";
-	public static final String	ATTRIBUTE_OPTION_INPUT = "Input A New Attribute";
-	public static final String[] ATTRIBUTE_OPTIONS = new String[] {ATTRIBUTE_OPTION_DICTIONARY, ATTRIBUTE_OPTION_STANDARD, ATTRIBUTE_OPTION_INPUT};
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public AttributeSelectionWindow(Datatype datatype, Object defaultAttribute) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save data
-		//
-		this.datatype = datatype;
-		if (defaultAttribute == null) {
-			this.defaultAttribute = null;
-		} else {
-			//
-			// Given a default attribute
-			//
-			Attribute tempAttribute;
-			if (defaultAttribute instanceof AttributeDesignatorType) {
-				tempAttribute = JPAUtils.createAttribute((AttributeDesignatorType) defaultAttribute);
-			} else if (defaultAttribute instanceof AttributeSelectorType) {
-				tempAttribute = JPAUtils.createAttribute((AttributeSelectorType) defaultAttribute);
-			} else {
-				this.defaultAttribute = null;
-				throw new IllegalArgumentException("Selection window only works with designator or selector objects.");
-			}
-			//
-			// See if the attribute exists in our dictionary
-			//
-			Attribute dictionaryAttribute = JPAUtils.findAttribute(tempAttribute);
-			if (dictionaryAttribute != null) {
-				this.defaultAttribute = dictionaryAttribute;
-			} else {
-				this.defaultAttribute = tempAttribute;
-			}
-		}
-		//
-		// Close shortcut
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize GUI
-		//
-		this.initializeOption();
-		this.initializeButtons();
-		this.initializeAttribute();
-		//
-		// Setup attribute
-		//
-		this.resetAttributeOption();
-		//
-		// Focus
-		//
-	}
-	
-	protected void initializeOption() {
-		//
-		// Setup datasource and GUI properties
-		//
-		this.optionGroupAttribute.setImmediate(true);
-		this.optionGroupAttribute.addItem(ATTRIBUTE_OPTION_DICTIONARY);
-		this.optionGroupAttribute.addItem(ATTRIBUTE_OPTION_STANDARD);
-		this.optionGroupAttribute.addItem(ATTRIBUTE_OPTION_INPUT);
-		//
-		// Respond to events
-		//
-		this.optionGroupAttribute.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.resetAttributeOption();
-			}
-		});
-	}
-	
-	protected void initializeButtons() {
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Commit everything??
-					//
-					self.textFieldIssuer.commit();
-					self.checkBoxMustBePresent.commit();
-					self.currentComponent.commit();
-					//
-					// Save to the attribute
-					//
-					String issuer = self.textFieldIssuer.getValue();
-					if (issuer == null || issuer.length() == 0) {
-						self.attribute.setIssuer(null);
-					} else {
-						self.attribute.setIssuer(issuer);
-					}
-					self.attribute.setMustBePresent(self.checkBoxMustBePresent.getValue());
-					//
-					// Mark as saved
-					//
-					self.isSaved = true;
-					//
-					// Close the window
-					//
-					self.close();
-				} catch (SourceException | InvalidValueException e) { //NOPMD
-					//
-					// Vaadin displays the error
-					//
-				}
-			}
-		});
-	}
-		
-	protected void initializeAttribute() {
-		//
-		// Are we editing something?
-		//
-		if (this.defaultAttribute == null) {
-			//
-			// No, this is a new attribute being created
-			//
-			this.optionGroupAttribute.select(ATTRIBUTE_OPTION_STANDARD);
-			return;
-		}
-		//
-		// Yes, is it in our dictionary?
-		//
-		Attribute attribute = JPAUtils.findAttribute(this.defaultAttribute);
-		if (attribute != null) {
-			//
-			// Yes its in our dictionary
-			//
-			this.attribute = attribute;
-			this.optionGroupAttribute.select(ATTRIBUTE_OPTION_DICTIONARY);
-			return;
-		}
-		//
-		// Is it a standard attribute?
-		//
-		attribute = JPAUtils.isStandardAttribute(this.defaultAttribute);
-		if (attribute == null) {
-			//
-			// No, start editing via custom input attribute
-			//
-			this.attribute = this.defaultAttribute;
-			this.optionGroupAttribute.select(ATTRIBUTE_OPTION_INPUT);
-			return;
-		}
-		//
-		// Yes - its a standard attribute
-		//
-		this.attribute = attribute;
-		this.optionGroupAttribute.select(ATTRIBUTE_OPTION_STANDARD);
-	}
-	
-	protected void resetAttributeOption() {
-		//
-		// Remove GUI components from layout
-		//
-		this.horizontalLayoutAttribute.removeAllComponents();
-		this.currentComponent = null;
-		//
-		// Grab our currently selected option value
-		//
-		Object value = self.optionGroupAttribute.getValue();
-		//
-		// What is it set to?
-		//
-		if (value.toString().equals(ATTRIBUTE_OPTION_DICTIONARY)) {
-			this.currentComponent = new AttributeDictionarySelectorComponent(this.datatype, this.defaultAttribute);
-		} else if (value.toString().equals(ATTRIBUTE_OPTION_STANDARD)) {
-			this.currentComponent = new AttributeStandardSelectorComponent(this.datatype, this.defaultAttribute);
-		} else if (value.toString().equals(ATTRIBUTE_OPTION_INPUT)) {
-			this.currentComponent = new AttributeSimpleCreatorComponent(this.datatype, this.defaultAttribute);
-		} else {
-			logger.error("Unknown option" + value);
-			return;
-		}
-		this.currentComponent.addListener(this);
-		this.horizontalLayoutAttribute.addComponent((CustomComponent) this.currentComponent);
-		this.currentComponent.fireAttributeChanged(this.currentComponent.getAttribute());
-	}
-	
-	@Override
-	public void attributeChanged(Attribute attribute) {
-		if (logger.isDebugEnabled()) {
-			logger.debug("attributeChanged: " + attribute);
-		}
-		this.attribute = attribute;
-		if (attribute == null) {
-			this.buttonSave.setEnabled(false);
-		} else {
-			this.buttonSave.setEnabled(true);
-		}
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public Attribute	getAttribute() {
-		return this.attribute;
-	}
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// horizontalLayout_1
-		horizontalLayout_1 = buildHorizontalLayout_1();
-		mainLayout.addComponent(horizontalLayout_1);
-		
-		// horizontalLayoutAttribute
-		horizontalLayoutAttribute = new HorizontalLayout();
-		horizontalLayoutAttribute.setImmediate(false);
-		horizontalLayoutAttribute.setWidth("-1px");
-		horizontalLayoutAttribute.setHeight("-1px");
-		horizontalLayoutAttribute.setMargin(false);
-		mainLayout.addComponent(horizontalLayoutAttribute);
-		mainLayout.setExpandRatio(horizontalLayoutAttribute, 1.0f);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Select");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayout_1() {
-		// common part: create layout
-		horizontalLayout_1 = new HorizontalLayout();
-		horizontalLayout_1.setImmediate(false);
-		horizontalLayout_1.setWidth("-1px");
-		horizontalLayout_1.setHeight("-1px");
-		horizontalLayout_1.setMargin(false);
-		
-		// optionGroupAttribute
-		optionGroupAttribute = new OptionGroup();
-		optionGroupAttribute.setCaption("Attribute Source");
-		optionGroupAttribute.setImmediate(false);
-		optionGroupAttribute.setWidth("-1px");
-		optionGroupAttribute.setHeight("-1px");
-		optionGroupAttribute.setInvalidAllowed(false);
-		horizontalLayout_1.addComponent(optionGroupAttribute);
-		
-		// verticalLayout_2
-		verticalLayout_2 = buildVerticalLayout_2();
-		horizontalLayout_1.addComponent(verticalLayout_2);
-		
-		return horizontalLayout_1;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildVerticalLayout_2() {
-		// common part: create layout
-		verticalLayout_2 = new VerticalLayout();
-		verticalLayout_2.setImmediate(false);
-		verticalLayout_2.setWidth("-1px");
-		verticalLayout_2.setHeight("-1px");
-		verticalLayout_2.setMargin(true);
-		verticalLayout_2.setSpacing(true);
-		
-		// textFieldIssuer
-		textFieldIssuer = new TextField();
-		textFieldIssuer.setCaption("Issuer");
-		textFieldIssuer.setImmediate(false);
-		textFieldIssuer.setWidth("-1px");
-		textFieldIssuer.setHeight("-1px");
-		verticalLayout_2.addComponent(textFieldIssuer);
-		
-		// checkBoxMustBePresent
-		checkBoxMustBePresent = new CheckBox();
-		checkBoxMustBePresent.setCaption("Attribute Must Be Present");
-		checkBoxMustBePresent.setImmediate(false);
-		checkBoxMustBePresent.setWidth("-1px");
-		checkBoxMustBePresent.setHeight("-1px");
-		verticalLayout_2.addComponent(checkBoxMustBePresent);
-		
-		return verticalLayout_2;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AttributeValueEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AttributeValueEditorWindow.java
deleted file mode 100644
index 13ae0b1..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/AttributeValueEditorWindow.java
+++ /dev/null
@@ -1,320 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.admin.view.validators.ValidatorFactory;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.addon.jpacontainer.fieldfactory.SingleSelectConverter;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.shared.ui.combobox.FilteringMode;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class AttributeValueEditorWindow extends Window {
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private TextField textFieldValue;
-	@AutoGenerated
-	private ComboBox comboBoxDatatype;
-	private static final long serialVersionUID = 1L;
-	private final AttributeValueEditorWindow self = this;
-	private final Datatype datatypeRestriction;
-	private final AttributeValueType value;
-	private boolean isSaved = false;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public AttributeValueEditorWindow(AttributeValueType value, Datatype datatypeRestriction) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save
-		//
-		this.value = value;
-		this.datatypeRestriction = datatypeRestriction;
-		//
-		// Make sure the value has the same datatype as the restriction
-		//
-		if (this.datatypeRestriction != null) {
-			this.value.setDataType(this.datatypeRestriction.getXacmlId());
-		}
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize GUI
-		//
-		this.initializeCombo();
-		this.initializeTextField();
-		this.initializeButtons();
-		//
-		// Focus?
-		//
-		if (this.datatypeRestriction == null) {
-			this.comboBoxDatatype.focus();
-		} else {
-			this.textFieldValue.focus();
-		}
-	}
-	
-	protected void initializeCombo() {
-		this.comboBoxDatatype.setContainerDataSource(((XacmlAdminUI) UI.getCurrent()).getDatatypes());
-		this.comboBoxDatatype.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.comboBoxDatatype.setItemCaptionPropertyId("xacmlId");
-		this.comboBoxDatatype.setFilteringMode(FilteringMode.CONTAINS);
-		this.comboBoxDatatype.setImmediate(true);
-		this.comboBoxDatatype.setNullSelectionAllowed(false);
-		this.comboBoxDatatype.setConverter(new SingleSelectConverter<Object>(this.comboBoxDatatype));
-		//
-		// Select a value if its defined
-		//
-		if (this.datatypeRestriction != null) {
-			this.comboBoxDatatype.select(this.datatypeRestriction.getId());
-		} else if (this.value.getDataType() != null) {
-			this.comboBoxDatatype.select(JPAUtils.findDatatype(this.value.getDataType()).getId());
-		}
-		//
-		// Can the user change the datatype?
-		//
-		if (this.datatypeRestriction != null) {
-			this.comboBoxDatatype.setEnabled(false);
-			return;
-		}
-		//
-		// Listen to events
-		//
-		this.comboBoxDatatype.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				Object id = self.comboBoxDatatype.getValue();
-				assert id != null;
-				//
-				// Get the entity and save it
-				//
-				EntityItem<Datatype> entity = ((XacmlAdminUI) UI.getCurrent()).getDatatypes().getItem(id);
-				self.value.setDataType(entity.getEntity().getXacmlId());
-				//
-				// Reset the validator
-				//
-				self.textFieldValue.removeAllValidators();
-				Validator validator = ValidatorFactory.newInstance(entity.getEntity());
-				if (validator != null) {
-					self.textFieldValue.addValidator(validator);
-				}
-			}
-		});
-	}
-	
-	protected void initializeTextField() {
-		//
-		// GUI properties
-		//
-		this.textFieldValue.setImmediate(true);
-		this.textFieldValue.setNullRepresentation("");
-		//
-		// Setup validator
-		//
-		if (this.datatypeRestriction != null) {
-			Validator validator = ValidatorFactory.newInstance(this.datatypeRestriction);
-			if (validator != null) {
-				this.textFieldValue.addValidator(validator);
-			}
-		}
-		//
-		// Text change or Value Change?
-		//
-		this.textFieldValue.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				//
-				// Save the new value. TODO - assuming position 0 of content list.
-				//
-				self.saveValue(0, self.textFieldValue.getValue());
-				//
-				// Setup the save button
-				//
-				if (self.textFieldValue.getValue() == null || self.textFieldValue.getValue().isEmpty()) {
-					self.buttonSave.setEnabled(false);
-				} else {
-					self.buttonSave.setEnabled(true);
-				}
-			}
-		});
-		//
-		// Initialize the value
-		//
-		if (this.value != null && this.value.getContent().isEmpty() == false) {
-			//
-			// TODO - If there are multiple Content objects...Right now we work with the first one only.
-			//
-			this.textFieldValue.setValue(this.value.getContent().get(0).toString());
-		}
-	}
-	
-	protected void saveValue(int i, String value) {
-		//
-		// Get the content - TODO
-		//
-		if (this.value.getContent().isEmpty()) {
-			this.value.getContent().add(value);
-			return;
-		}
-		Object o = this.value.getContent().get(i);
-		if (o == null) {
-			//
-			// Add it into the list - ensure its a
-			//
-			assert this.value.getContent().size() == i;
-			this.value.getContent().add(value);
-		} else {
-			//
-			// Overwrite the previous object
-			//
-			this.value.getContent().set(i, value);
-		}
-	}
-
-	protected void initializeButtons() {
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Make sure it validates (i.e. call the Validators)
-					//
-					self.comboBoxDatatype.validate();
-					self.textFieldValue.validate();
-					//
-					// Yes
-					//
-					self.isSaved = true;
-					//
-					// Close
-					//
-					self.close();
-				} catch (InvalidValueException e) { //NOPMD
-					//
-					// Vaadin with update GUI displaying the error
-					//
-				}
-			}
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public String	getValue() {
-		return this.textFieldValue.getValue();
-	}
-	
-	public AttributeValueType	getAttribute() {
-		return this.value;
-	}
-	
-	public Datatype getDatatype() {
-		return JPAUtils.findDatatype(this.value.getDataType());
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// comboBoxDatatype
-		comboBoxDatatype = new ComboBox();
-		comboBoxDatatype.setCaption("Select Datatype");
-		comboBoxDatatype.setImmediate(false);
-		comboBoxDatatype.setWidth("-1px");
-		comboBoxDatatype.setHeight("-1px");
-		comboBoxDatatype.setInvalidAllowed(false);
-		comboBoxDatatype.setRequired(true);
-		mainLayout.addComponent(comboBoxDatatype);
-		
-		// textFieldValue
-		textFieldValue = new TextField();
-		textFieldValue.setCaption("Attribute Value");
-		textFieldValue.setImmediate(false);
-		textFieldValue.setWidth("100.0%");
-		textFieldValue.setHeight("-1px");
-		textFieldValue.setInvalidAllowed(false);
-		textFieldValue.setRequired(true);
-		mainLayout.addComponent(textFieldValue);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ColumnSelectionWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ColumnSelectionWindow.java
deleted file mode 100644
index b961a78..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ColumnSelectionWindow.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.validator.IntegerRangeValidator;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-// import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class ColumnSelectionWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private TextField textFieldColumn;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private boolean isSaved = false;
-	private ColumnSelectionWindow self = this;
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public ColumnSelectionWindow(Integer value) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Initialize
-		//
-		this.initialize();
-		//
-		// Set the value
-		//
-		if (value != null) {
-			this.textFieldColumn.setValue(value.toString());
-		} else {
-			this.textFieldColumn.setValue(Integer.toString(0));
-		}
-		//
-		// Shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		//
-		// Focus
-		//
-		this.textFieldColumn.focus();
-	}
-	
-	protected void initialize() {
-		this.initializeText();
-		this.initializeButton();
-	}
-
-	protected void initializeText() {
-		//
-		// Add a validator
-		//
-		this.textFieldColumn.addValidator(new IntegerRangeValidator("Please enter an integer greater than or equal to 0.", 0, null));
-		//
-		// Respond to text changing to setup the button
-		//
-		this.textFieldColumn.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				if (event.getText() != null && event.getText().isEmpty() == false) {
-					self.buttonSave.setEnabled(true);
-				} else {
-					self.buttonSave.setEnabled(false);
-				}
-			}
-		});
-	}
-	
-	protected void initializeButton() {
-		self.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Commit
-					//
-					self.textFieldColumn.commit();
-					//
-					// If we get here, the value is valid.
-					// Mark ourselves as saved and close the window
-					//
-					self.isSaved = true;
-					self.close();
-				} catch (SourceException | InvalidValueException e) { //NOPMD
-					//
-					// Vaadin will display error
-					//
-				}
-			}
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public Integer getColumn() {
-		try {
-			return Integer.parseInt(this.textFieldColumn.getValue());
-		} catch (NumberFormatException e) {
-			return null;
-		}
-	}
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldColumn
-		textFieldColumn = new TextField();
-		textFieldColumn.setCaption("Column");
-		textFieldColumn.setImmediate(false);
-		textFieldColumn.setDescription("0-based index into CSV line");
-		textFieldColumn.setWidth("-1px");
-		textFieldColumn.setHeight("-1px");
-		textFieldColumn.setRequired(true);
-		textFieldColumn.setInputPrompt("Eg. ‘0'");
-		mainLayout.addComponent(textFieldColumn);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(false);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/EditPDPGroupWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/EditPDPGroupWindow.java
deleted file mode 100644
index 468634c..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/EditPDPGroupWindow.java
+++ /dev/null
@@ -1,521 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.apache.openaz.xacml.admin.model.PDPPIPContainer;
-import org.apache.openaz.xacml.admin.model.PDPPolicyContainer;
-import org.apache.openaz.xacml.admin.util.AdminNotification;
-import org.apache.openaz.xacml.api.pap.PAPEngine;
-import org.apache.openaz.xacml.api.pap.PAPException;
-import org.apache.openaz.xacml.api.pap.PDPGroup;
-import org.apache.openaz.xacml.api.pap.PDPPIPConfig;
-import org.apache.openaz.xacml.api.pap.PDPPolicy;
-import org.apache.openaz.xacml.std.pap.StdPDPGroup;
-import org.apache.openaz.xacml.std.pap.StdPDPPolicy;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Validator;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.event.Action;
-import com.vaadin.event.Action.Handler;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class EditPDPGroupWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private Table tablePIP;
-	@AutoGenerated
-	private Table tablePolicies;
-	@AutoGenerated
-	private TextArea textDescription;
-	@AutoGenerated
-	private TextField textName;
-	
-	
-	private static final Action ADD_POLICY = 		new Action ("Add New Policy");
-	private static final Action REMOVE_POLICY = 	new Action ("Remove Policy");
-	private static final Action MAKE_ROOT = 		new Action ("Make Root");
-	private static final Action MAKE_REFERENCED = 	new Action ("Make Referenced");
-	
-	private static final Action EDIT_CONFIG = 		new Action("Edit Configurations");
-
-	//
-	// ?? Why is this static?
-	//
-	private static PDPPolicyContainer policyContainer;
-	private PDPPIPContainer pipContainer;
-	
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final EditPDPGroupWindow self = this;
-	private final StdPDPGroup group;
-	private boolean isSaved = false;
-	
-	// this is the version that contains all of the edits made by the user.
-	// it may be a copy of the original object (edited) or a new one.
-	private StdPDPGroup updatedObject;
-	
-	private PAPEngine papEngine;
-	private List<PDPGroup> groups;
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public EditPDPGroupWindow(StdPDPGroup group, List<PDPGroup> list, PAPEngine engine) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save pointers
-		//
-		this.group = group;
-		this.groups = list;
-		this.papEngine = engine;
-		//
-		// Initialize
-		//
-		this.initialize();
-		//
-		// Shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		//
-		// Focus
-		//
-		this.textName.focus();
-	}
-	
-	protected void initialize() {
-		this.initializeText();
-		this.initializeButton();
-		this.initializeTables();
-	}
-	
-	protected void initializeText() {
-		this.textName.setNullRepresentation("");
-		this.textDescription.setNullRepresentation("");
-		if (this.group != null) {
-			this.textName.setValue(this.group.getName());
-			this.textDescription.setValue(this.group.getDescription());
-		}
-		//
-		// Validation
-		//
-		this.textName.addValidator(new Validator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void validate(Object value) throws InvalidValueException {
-				assert value instanceof String;
-				if (value == null) {
-					throw new InvalidValueException("The name cannot be blank.");
-				}
-				// Group names must be unique so that user can distinguish between them (and we can create unique IDs from them)
-				for (PDPGroup g : self.groups) {
-					if (group != null && g.getId().equals(group.getId())) {
-						// ignore this group - we may or may not be changing the name
-						continue;
-					}
-					if (g.getName().equals(value.toString())) {
-						throw new InvalidValueException("Name must be unique");
-					}
-				}
-			}
-		});
-		this.textName.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				if (event.getText() == null || event.getText().isEmpty()) {
-					self.buttonSave.setEnabled(false);
-				} else {
-					self.buttonSave.setEnabled(true);
-				}
-			}
-		});
-	}
-	
-	protected void initializeTables() {
-		this.initializePolicyTable();
-		this.initializePIPTable();
-	}
-	
-	protected void initializePolicyTable() {
-		if (this.group == null) {
-			this.tablePolicies.setVisible(false);
-			return;
-		}
-		//
-		// GUI properties
-		//
-		EditPDPGroupWindow.policyContainer = new PDPPolicyContainer(group);
-		this.tablePolicies.setContainerDataSource(EditPDPGroupWindow.policyContainer);
-		this.tablePolicies.setVisibleColumns("Root", "Name", "Version", "Id");//, "Description");
-		this.tablePolicies.setPageLength(EditPDPGroupWindow.policyContainer.size() + 1);
-		this.tablePolicies.setSelectable(true);
-		this.tablePolicies.setSizeFull();
-		/*
-		 * Not in this release.
-		 * 
-		this.tablePolicies.setColumnCollapsingAllowed(true);
-		this.tablePolicies.setColumnCollapsed("Description", true);
-		//
-		// Generated columns
-		//
-		this.tablePolicies.addGeneratedColumn("Description", new ColumnGenerator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Object generateCell(Table source, Object itemId, Object columnId) {
-				TextArea area = new TextArea();
-				if (itemId != null && itemId instanceof PDPPolicy) {
-					area.setValue(((PDPPolicy)itemId).getDescription());
-				}
-				area.setNullRepresentation("");
-				area.setWidth("100.0%");
-				return area;
-			}
-		});
-		*/
-		//
-		// Actions
-		//
-		this.tablePolicies.addActionHandler(new Handler() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Action[] getActions(Object target, Object sender) {
-				if (target == null) {
-					return new Action[] {ADD_POLICY};
-				}
-				return new Action[] {ADD_POLICY, REMOVE_POLICY, MAKE_ROOT, MAKE_REFERENCED};
-			}
-
-			@Override
-			public void handleAction(Action action, Object sender, Object target) {
-				if (action == ADD_POLICY) {
-
-					final SelectWorkspacePoliciesWindow policiesWindow = new SelectWorkspacePoliciesWindow();
-					policiesWindow.setCaption("Select Policy to Add");
-					policiesWindow.setModal(true);
-					policiesWindow.addCloseListener(new CloseListener() {
-						private static final long serialVersionUID = 1L;
-					
-						@Override
-						public void windowClose(CloseEvent event) {
-							//
-							// Did the user hit save?
-							//
-							if (policiesWindow.isSaved() == false) {
-								return;
-							}
-							//
-							// Get the selected policy
-							//
-							StdPDPPolicy selectedPolicy = policiesWindow.getSelectedPolicy();
-							if (selectedPolicy != null) {
-
-								// do not allow multiple copies of same policy
-								for (Object existingPolicy : EditPDPGroupWindow.policyContainer.getItemIds()) {
-									if (selectedPolicy.getId().equals(((PDPPolicy)existingPolicy).getId())) {
-										AdminNotification.warn("Cannot re-add Policy with the same ID (i.e. same Name, source Sub-Domain and Version)");
-										return;
-									}
-								}
-								// copy policy to PAP
-								try {
-									papEngine.copyPolicy(selectedPolicy, self.group);
-								} catch (PAPException e) {
-									AdminNotification.warn("Unable to copy Policy '" + selectedPolicy.getPolicyId() + "' to PAP: " + e.getMessage());
-									return;
-								}
-								
-								// add Policy to group
-								EditPDPGroupWindow.policyContainer.addItem(selectedPolicy);
-								self.markAsDirtyRecursive();								
-							}
-						}
-					});
-					policiesWindow.center();
-					UI.getCurrent().addWindow(policiesWindow);
-					return;
-				}
-				if (action == REMOVE_POLICY) {
-					assert target != null;
-					PDPPolicy policy = (PDPPolicy)target;
-					EditPDPGroupWindow.policyContainer.removeItem(policy);
-					self.markAsDirtyRecursive();
-					return;
-				}
-				if (action == MAKE_ROOT) {
-					assert target != null;
-					assert target instanceof StdPDPPolicy;
-					StdPDPPolicy policy = (StdPDPPolicy)target;
-					EditPDPGroupWindow.policyContainer.getItem(policy).getItemProperty("Root").setValue(true);
-					self.markAsDirtyRecursive();
-					return;
-				}
-				if (action == MAKE_REFERENCED) {
-					assert target != null;
-					assert target instanceof StdPDPPolicy;
-					StdPDPPolicy policy = (StdPDPPolicy)target;
-					EditPDPGroupWindow.policyContainer.getItem(policy).getItemProperty("Root").setValue(false);
-					self.markAsDirtyRecursive();
-					return;
-				}
-				
-				AdminNotification.error("Unrecognized action '" + action + "' on target '" + target + "'");
-			}
-		});
-	}
-	
-	protected void initializePIPTable() {
-		if (this.group == null) {
-			this.tablePIP.setVisible(false);
-			return;
-		}
-		//
-		// Setup data source and GUI properties
-		//
-		this.pipContainer = new PDPPIPContainer(group);
-		this.tablePIP.setContainerDataSource(this.pipContainer);
-		this.tablePIP.setPageLength(this.pipContainer.size() + 2);
-		this.tablePIP.setSelectable(true);
-		this.tablePIP.setSizeFull();
-		//
-		// Add the action handler
-		//
-		this.tablePIP.addActionHandler(new Handler() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Action[] getActions(Object target, Object sender) {
-				return new Action[] {EDIT_CONFIG};
-			}
-
-			@Override
-			public void handleAction(Action action, Object sender, Object target) {
-				if (action == EDIT_CONFIG) {
-					self.editPIPConfiguration();
-					return;
-				}
-			}
-		});
-	}
-
-	protected void editPIPConfiguration() {
-		final SelectPIPConfigurationWindow window = new SelectPIPConfigurationWindow(this.group);
-		window.setCaption("Select PIP Configurations");
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user click save button?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// Yes - save the PIP configuration
-				//
-				Set<PDPPIPConfig> configs = window.getSelectedConfigs();
-				assert configs != null;
-				self.group.setPipConfigs(configs);
-				//
-				// Update the container
-				//
-				self.pipContainer.refresh();
-			}
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-
-	protected void initializeButton() {
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Validate
-					//
-					self.textName.commit();
-					//
-					// All good save everything
-					//
-					self.doSave();
-					//
-					// mark ourselves as saved
-					//
-					self.isSaved = true;
-					//
-					// Close the window
-					//
-					self.close();
-				} catch (InvalidValueException e) { //NOPMD
-					//
-					// Ignore, Vaadin will display our message
-					//
-				}
-			}
-		});
-	}
-	
-	protected void doSave() {
-		if (this.group == null) {
-			return;
-		}
-		StdPDPGroup updatedGroupObject = new StdPDPGroup(
-				this.group.getId(), 
-				this.group.isDefaultGroup(), 
-				this.textName.getValue(), 
-				this.textDescription.getValue(), 
-				null);
-		// replace the original set of Policies with the set from the container (possibly modified by the user)
-		Set<PDPPolicy> changedPolicies = new HashSet<PDPPolicy>();
-		changedPolicies.addAll((Collection<PDPPolicy>) EditPDPGroupWindow.policyContainer.getItemIds());
-		updatedGroupObject.setPolicies(changedPolicies);
-		updatedGroupObject.setPdps(this.group.getPdps());
-		// replace the original set of PIP Configs with the set from the container
-//TODO - get PIP Configs from a container used to support editing
-//			selfPDPObject.getPipConfigs().clear();
-//			selfPDPObject.getPipConfigs().addAll(containerGroup.getPipConfigs());
-		updatedGroupObject.setPipConfigs(this.group.getPipConfigs());
-		// copy those things that the user cannot change from the original to the new object
-		updatedGroupObject.setStatus(this.group.getStatus());
-		this.updatedObject = updatedGroupObject;			
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public String getGroupName() {
-		return this.textName.getValue();
-	}
-	
-	public String getGroupDescription() {
-		return this.textDescription.getValue();
-	}
-	
-	public PDPGroup getUpdatedObject() {
-		return this.updatedObject;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("100.0%");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textName
-		textName = new TextField();
-		textName.setCaption("Group Name");
-		textName.setImmediate(false);
-		textName.setWidth("-1px");
-		textName.setHeight("-1px");
-		textName.setRequired(true);
-		mainLayout.addComponent(textName);
-		
-		// textDescription
-		textDescription = new TextArea();
-		textDescription.setCaption("Group Description");
-		textDescription.setImmediate(false);
-		textDescription.setWidth("100.0%");
-		textDescription.setHeight("-1px");
-		textDescription.setNullSettingAllowed(true);
-		mainLayout.addComponent(textDescription);
-		mainLayout.setExpandRatio(textDescription, 1.0f);
-		
-		// tablePolicies
-		tablePolicies = new Table();
-		tablePolicies.setCaption("Policies");
-		tablePolicies.setImmediate(false);
-		tablePolicies.setWidth("-1px");
-		tablePolicies.setHeight("-1px");
-		mainLayout.addComponent(tablePolicies);
-		mainLayout.setExpandRatio(tablePolicies, 1.0f);
-		
-		// tablePIP
-		tablePIP = new Table();
-		tablePIP.setCaption("PIP Configurations");
-		tablePIP.setImmediate(false);
-		tablePIP.setWidth("-1px");
-		tablePIP.setHeight("-1px");
-		mainLayout.addComponent(tablePIP);
-		mainLayout.setExpandRatio(tablePIP, 1.0f);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/EditPDPWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/EditPDPWindow.java
deleted file mode 100644
index d2c40e9..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/EditPDPWindow.java
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.List;
-
-import org.apache.openaz.xacml.admin.util.AdminNotification;
-import org.apache.openaz.xacml.api.pap.PDP;
-import org.apache.openaz.xacml.api.pap.PDPGroup;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Validator;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.validator.RegexpValidator;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-import elemental.events.KeyboardEvent.KeyCode;
-
-public class EditPDPWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private TextArea textDescription;
-	@AutoGenerated
-	private TextField textName;
-	@AutoGenerated
-	private TextField textId;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final EditPDPWindow self = this;
-	private final PDP pdp;
-	private final List<PDPGroup> groups;
-	private boolean isSaved = false;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 * @param pdp 
-	 */
-	public EditPDPWindow(PDP pdp, List<PDPGroup> list) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save data
-		//
-		this.pdp = pdp;
-		this.groups = list;
-		//
-		// Initialize
-		//
-		this.initializeText();
-		this.initializeButton();
-		//
-		// Keyboard short
-		//
-		this.setCloseShortcut(KeyCode.ESC);
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		//
-		//  Focus
-		//
-		this.textId.focus();
-	}
-	
-	protected void initializeText() {
-		//
-		// Initialize values
-		//
-		if (this.pdp != null) {
-			this.textId.setValue(this.pdp.getId());
-			this.textName.setValue(this.pdp.getName());
-			this.textDescription.setValue(this.pdp.getDescription());
-		}
-		//
-		//
-		//
-		this.textId.setRequiredError("You must enter a valid id for the PDP.");
-		this.textId.setNullRepresentation("");
-		this.textId.addValidator(new RegexpValidator("[\\w=,]", false, "Please enter a valid URL with no whitespace or \"=\" or \",\" characters."));
-		this.textId.addValidator(new Validator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void validate(Object value) throws InvalidValueException {
-				//
-				// Cannot be null
-				//
-				if (value == null || value.toString().length() == 0) {
-					throw new InvalidValueException("ID cannot be null.");
-				}
-				//
-				// Make sure its a valid URL
-				//
-				try {
-					new URL(value.toString());
-				} catch (MalformedURLException e) {
-					throw new InvalidValueException("The PDP URL '" + value.toString() + "' is not a valid URL: '" + e.getMessage() +"'");
-				}
-			}
-		});
-		//
-		//
-		//
-		this.textName.setNullRepresentation("");
-		this.textName.addValidator(new Validator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void validate(Object value) throws InvalidValueException {
-				//
-				// If the value is null, set it to the id
-				//
-				if (value == null || value.toString().length() == 0) {
-					return;
-				}
-			}
-		});
-		//
-		//
-		//
-		this.textDescription.setNullRepresentation("");
-	}
-	
-	protected void initializeButton() {
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Do a commit
-					//
-					self.textName.commit();
-					self.textId.commit();
-					self.textDescription.commit();
-					//
-					// Should be a string, but to be safe
-					//
-					String id = self.textId.getValue();
-					String name = self.textName.getValue();
-					if (name == null || name.isEmpty()) {
-						self.textName.setValue(id);
-						name = id;
-					}
-					//
-					// ID must be unique.
-					// Also the Name must be unique AND not match any existing IDs
-					// because user uses the NAME to identify this PDP on the browser window, not the ID.
-					//
-					for (PDPGroup g : self.groups) {
-						for (PDP p : g.getPdps()) {
-							if (p.getId().equals(id)) {
-								if (self.pdp != null) {
-									//
-									// we are editing this pdp
-									//
-									continue;
-								}
-								throw new InvalidValueException("URL must be unique - the PDP '" + id + "' already exists in group '" + g.getName() + "'");
-							}
-							if (id.equals(p.getName())) {
-								throw new InvalidValueException("A previous PDP with URL '" + p.getId() + "' has been given the name '" + id + 
-										"'.  Please edit that PDP to change the name before creating a nwe PDP with this URL.");
-							}
-							if (name != null && name.length() > 0 && self.pdp == null && (p.getId().equals(name) || name.equals(p.getName()))) {
-								throw new InvalidValueException("Name must not be the same as another PDP's name OR another PDP's URL.");
-							}
-						}
-					}
-					//
-					// make sure name is NOT a URL, unless it is identical to the ID.
-					// (If it is a URL, then a later PDP might be created with that URL as it's ID, which would be confusing.)
-					//
-					if ( ! id.equals(name)) {
-						try {
-							new URL(name);
-							// if we get here the name is a URL but not identical to the id, which is not good
-							AdminNotification.warn("The Name must not be a URL unless it is the same as the PDP URL");
-							return;
-						} catch (Exception e) { //NOPMD
-							// ignore - we want to get here
-						}
-					}
-					//
-					// If we get here the inputs are ok
-					//
-					self.isSaved = true;
-					//
-					//
-					//
-					self.close();
-				} catch (SourceException | InvalidValueException e1) { //NOPMD
-					//
-					// Vaadin will display error
-					//
-				}
-			}
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public String getPDPId() {
-		return this.textId.getValue();
-	}
-	
-	public String getPDPName() {
-		return this.textName.getValue();
-	}
-	
-	public String getPDPDescription() {
-		return this.textDescription.getValue();
-	}
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textId
-		textId = new TextField();
-		textId.setCaption("PDP URL");
-		textId.setImmediate(false);
-		textId.setDescription("The URL is the ID of the PDP");
-		textId.setWidth("-1px");
-		textId.setHeight("-1px");
-		textId.setRequired(true);
-		textId.setInputPrompt("Eg. http://localhost:8080/pdp");
-		mainLayout.addComponent(textId);
-		
-		// textName
-		textName = new TextField();
-		textName.setCaption("PDP Name");
-		textName.setImmediate(false);
-		textName.setWidth("-1px");
-		textName.setHeight("-1px");
-		mainLayout.addComponent(textName);
-		
-		// textDescription
-		textDescription = new TextArea();
-		textDescription.setCaption("PDP Description");
-		textDescription.setImmediate(false);
-		textDescription.setWidth("100.0%");
-		textDescription.setHeight("-1px");
-		textDescription.setNullSettingAllowed(true);
-		mainLayout.addComponent(textDescription);
-		mainLayout.setExpandRatio(textDescription, 1.0f);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ExpressionBuilderComponent.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ExpressionBuilderComponent.java
deleted file mode 100644
index b231d70..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ExpressionBuilderComponent.java
+++ /dev/null
@@ -1,1078 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import java.util.Map;
-
-import javax.xml.bind.JAXBElement;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ApplyType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeAssignmentExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeSelectorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ConditionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.FunctionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObjectFactory;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableDefinitionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableReferenceType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.jpa.FunctionArgument;
-import org.apache.openaz.xacml.admin.jpa.FunctionDefinition;
-import org.apache.openaz.xacml.admin.model.ExpressionContainer;
-import org.apache.openaz.xacml.admin.util.AdminNotification;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.admin.util.XACMLFunctionValidator;
-import org.apache.openaz.xacml.admin.view.events.ApplyParametersChangedListener;
-import org.apache.openaz.xacml.util.XACMLObjectCopy;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Container.ItemSetChangeEvent;
-import com.vaadin.data.Container.ItemSetChangeListener;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.event.Action;
-import com.vaadin.event.Action.Handler;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.AbstractSelect.ItemDescriptionGenerator;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.Component;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.TreeTable;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class ExpressionBuilderComponent extends Window implements ApplyParametersChangedListener {
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private TreeTable treeExpressions;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayout_1;
-	@AutoGenerated
-	private CheckBox checkBoxShortName;
-	@AutoGenerated
-	private Button buttonClearAll;
-	@AutoGenerated
-	private Button buttonDeleteExpression;
-	@AutoGenerated
-	private Button buttonAddExpression;
-	/*
-	 * 
-	 * 
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(ExpressionBuilderComponent.class);
-	
-	private static final Action ADD_EXPRESSION = 	new Action ("Add Expression");
-	private static final Action EDIT_EXPRESSION = 	new Action ("Edit Expression");
-	private static final Action DELETE_EXPRESSION = new Action ("Delete Expression");
-	private static final Action ADD_ARGUMENT = 	new Action ("Add Argument");
-	private static final Action EDIT_ARGUMENT = 	new Action ("Edit Argument");
-	private static final Action DELETE_ARGUMENT = new Action ("Delete Argument");
-	
-	private final Object[] visibleColumns = new Object[] {ExpressionContainer.PROPERTY_NAME, ExpressionContainer.PROPERTY_ID, ExpressionContainer.PROPERTY_ID_SHORT, ExpressionContainer.PROPERTY_DATATYPE, ExpressionContainer.PROPERTY_DATATYPE_SHORT};
-	private final String[] columnHeaders = new String[] {"Name", "XCAML ID or Value", "XCAML ID or Value", "Data Type ID", "Data Type ID"};
-	
-	private final ExpressionBuilderComponent self = this;
-	private final Object parent;
-	private final Map<VariableDefinitionType, PolicyType> variables;
-	private final ExpressionContainer container;
-	private boolean isSaved = false;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public ExpressionBuilderComponent(Object parent, Object root, FunctionArgument argument, Map<VariableDefinitionType, PolicyType> variables) {
-		buildMainLayout();
-//		setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save our data
-		//
-		this.parent = parent;
-		this.variables = variables;
-		this.container = new ExpressionContainer(parent, root, argument);
-		//
-		// Make sure we support the parent object
-		//
-		if (this.isSupported() == false) {
-			throw new IllegalArgumentException("Unsupported object type");
-		}
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Finish our GUI initialization
-		//
-		this.initializeTree();
-		this.initializeButtons();
-		this.initializeCheckbox();
-		//
-		// Setup the buttons
-		//
-		this.setupButtons();
-	}
-	
-	private boolean isSupported() {
-		return this.isParentACondition() ||
-					this.isParentAVariable() ||
-					this.isParentAAssignment();
-	}
-	
-	private boolean	isParentACondition() {
-		return this.parent instanceof ConditionType;
-	}
-	
-	private boolean isParentAVariable() {
-		return this.parent instanceof VariableDefinitionType;
-	}
-	
-	private boolean isParentAAssignment() {
-		return this.parent instanceof AttributeAssignmentExpressionType;
-	}
-	
-	private void initializeTree() {
-		//
-		// Initialize GUI properties
-		//
-		this.treeExpressions.setImmediate(true);
-		this.treeExpressions.setSelectable(true);
-		//
-		// Initialize the data source
-		//
-		this.treeExpressions.setContainerDataSource(this.container);
-		this.treeExpressions.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.treeExpressions.setVisibleColumns(this.visibleColumns);
-		this.treeExpressions.setColumnHeaders(this.columnHeaders);
-		this.treeExpressions.setColumnCollapsingAllowed(true);
-		this.treeExpressions.setColumnCollapsed(ExpressionContainer.PROPERTY_ID, true);
-		this.treeExpressions.setColumnCollapsed(ExpressionContainer.PROPERTY_DATATYPE, true);
-		//
-		// Add our action handler
-		//
-		this.treeExpressions.addActionHandler(new Handler() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Action[] getActions(Object target, Object sender) {
-				if (target == null) {
-					if (self.container.size() == 0) {
-						return new Action[] {ADD_EXPRESSION};
-					}
-					return null;
-				}
-				if (target instanceof ApplyType && XACMLFunctionValidator.canHaveMoreArguments((ApplyType) target)) {
-					return new Action[] {ADD_ARGUMENT, EDIT_EXPRESSION, DELETE_EXPRESSION};
-				}
-				return new Action[] {EDIT_ARGUMENT, DELETE_ARGUMENT};
-			}
-
-			@Override
-			public void handleAction(Action action, Object sender, Object target) {
-				if (action == ADD_EXPRESSION && target == null) {
-					self.addExpression(null, null);
-				}
-				if (action == EDIT_EXPRESSION && target != null) {
-					self.editExpression(target, (ApplyType) self.container.getParent(target), (FunctionArgument) self.container.getArgument(target));
-				}
-				if (action == DELETE_EXPRESSION && target != null) {
-					self.deleteExpression(target);
-				}
-				if (action == ADD_ARGUMENT && target != null && target instanceof ApplyType) {
-					self.addArgument((ApplyType) target);
-				}
-				if (action == EDIT_ARGUMENT && target != null) {
-					self.editExpression(target, (ApplyType) self.container.getParent(target), (FunctionArgument) self.container.getArgument(target));
-				}
-				if (action == DELETE_ARGUMENT && target != null) {
-					self.deleteExpression(target);
-				}
-			}
-		});
-		//
-		// Listen to double-click item selections
-		//
-		this.treeExpressions.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick()) {
-					Object target = event.getItemId();//self.treeExpressions.getValue();
-					if (target == null) {
-						return;
-					}
-					self.editExpression(target, (ApplyType) self.container.getParent(target), (FunctionArgument) self.container.getArgument(target));
-				}
-			}
-		});
-		//
-		// Listen when the user selects a row
-		//
-		this.treeExpressions.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.setupButtons();
-			}			
-		});
-		//
-		// Listen to when the table contents change
-		//
-		this.treeExpressions.addItemSetChangeListener(new ItemSetChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void containerItemSetChange(ItemSetChangeEvent event) {
-				self.validateExpression();
-			}
-		});
-		//
-		// Expand columns automatically
-		//
-		this.treeExpressions.setColumnExpandRatio(ExpressionContainer.PROPERTY_NAME, 1.0f);
-		this.treeExpressions.setColumnExpandRatio(ExpressionContainer.PROPERTY_ID, 1.0f);
-		this.treeExpressions.setColumnExpandRatio(ExpressionContainer.PROPERTY_DATATYPE, 1.0f);
-		//
-		// Expand all the children
-		//
-		for (Object id : this.treeExpressions.getItemIds()) {
-			this.treeExpressions.setCollapsed(id, false);
-		}
-		//
-		// Have a description generator
-		//
-		this.treeExpressions.setItemDescriptionGenerator(new ItemDescriptionGenerator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public String generateDescription(Component source, Object itemId, Object propertyId) {
-				if (propertyId != null && propertyId.equals(ExpressionContainer.PROPERTY_NAME) && itemId instanceof ApplyType) {
-					return ((ApplyType) itemId).getDescription();
-				}
-				return null;
-			}
-		});
-	}
-	
-	private void initializeButtons() {
-		this.buttonClearAll.setImmediate(true);
-		this.buttonClearAll.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.clearAllExpressions();
-			}
-			
-		});
-		
-		this.buttonAddExpression.setImmediate(true);
-		this.buttonAddExpression.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				Object selected = self.treeExpressions.getValue();
-				if (selected == null) {
-					//
-					// Adding a root expression
-					//
-					self.addExpression(null, null);
-				} else {
-					//
-					// Adding an argument
-					//
-					if (selected instanceof ApplyType) {
-						//
-						// Get the function
-						//
-						self.addArgument((ApplyType) selected);
-					}
-				}
-			}			
-		});
-		
-		this.buttonDeleteExpression.setImmediate(true);
-		this.buttonDeleteExpression.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				Object id = self.treeExpressions.getValue();
-				if (id == null) {
-					logger.error("Delete button clicked on null selection");
-					return;
-				}
-				self.deleteExpression(id);
-			}
-			
-		});
-		
-		this.buttonSave.setImmediate(true);
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		this.buttonSave.setEnabled(false);
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				//
-				// TODO validate
-				//
-				//
-				// Mark that we are saved
-				//
-				self.isSaved = true;
-				//
-				// Close the window
-				//
-				self.close();
-			}
-		});		
-	}
-	
-	protected void initializeCheckbox() {
-		this.checkBoxShortName.setValue(true);
-		this.checkBoxShortName.setImmediate(true);
-		this.checkBoxShortName.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.treeExpressions.setColumnCollapsed(ExpressionContainer.PROPERTY_ID, self.checkBoxShortName.getValue());
-				self.treeExpressions.setColumnCollapsed(ExpressionContainer.PROPERTY_DATATYPE, self.checkBoxShortName.getValue());
-				self.treeExpressions.setColumnCollapsed(ExpressionContainer.PROPERTY_ID_SHORT, ! self.checkBoxShortName.getValue());
-				self.treeExpressions.setColumnCollapsed(ExpressionContainer.PROPERTY_DATATYPE_SHORT, ! self.checkBoxShortName.getValue());
-			}
-		});
-	}
-	
-	protected void setupButtons() {
-		if (this.treeExpressions.size() == 0) {
-			this.buttonAddExpression.setEnabled(true);
-			this.buttonClearAll.setEnabled(false);
-			this.buttonSave.setEnabled(false);
-		} else {
-			this.validateExpression();
-			this.buttonAddExpression.setEnabled(false);
-			this.buttonClearAll.setEnabled(true);
-		}
-		Object value = this.treeExpressions.getValue();
-		if (value == null) {
-			this.buttonDeleteExpression.setEnabled(false);
-		} else {
-			this.buttonDeleteExpression.setEnabled(true);
-		}
-	}
-	
-	protected void validateExpression() {
-		boolean valid = false;
-		boolean canHaveMore = false;
-		if (this.isParentACondition()) {
-			valid = XACMLFunctionValidator.validateCondition((ConditionType) this.parent);
-			canHaveMore = XACMLFunctionValidator.canHaveMoreArguments((ConditionType) this.parent);
-		} else if (this.isParentAVariable()) {
-			valid = XACMLFunctionValidator.validateVariable((VariableDefinitionType) this.parent);
-			canHaveMore = XACMLFunctionValidator.canHaveMoreArguments((VariableDefinitionType) this.parent);
-		} else if (this.isParentAAssignment()) {
-			valid = XACMLFunctionValidator.validateAssignment((AttributeAssignmentExpressionType)this.parent);
-			canHaveMore = XACMLFunctionValidator.canHaveMoreArguments((AttributeAssignmentExpressionType) this.parent);
-		}
-		if (logger.isDebugEnabled()) {
-			logger.debug("valid: " + valid + " canHaveMore: " + canHaveMore);
-		}
-//		this.buttonAddExpression.setEnabled(canHaveMore);
-		this.buttonSave.setEnabled(valid);
-	}
-	
-	protected void addArgument(final ApplyType parentApply) {
-		//
-		// Get the function
-		//
-		FunctionDefinition function = JPAUtils.findFunction(parentApply.getFunctionId());
-		if (function != null) {
-			FunctionArgument argument = XACMLFunctionValidator.getFunctionArgument(parentApply.getExpression().size() + 1, function);
-			if (logger.isDebugEnabled()) {
-				logger.debug("Add Argument: " + argument);
-			}
-			assert argument != null;
-			//
-			// Is this a high order bag function? And it's data type not defined? (most likely)
-			//
-			if (function.isHigherOrder() && argument.getDatatypeBean() == null) {
-				if (logger.isDebugEnabled()) {
-					logger.debug("isHighOrder and a null datatype bean");
-				}
-				//
-				// Get what the data type restriction should be
-				//
-				try {
-					assert parentApply.getExpression().size() > 0;
-					JAXBElement<?> element = parentApply.getExpression().get(0);
-					assert element != null && element.getValue() != null;
-					Object declaredFunction = element.getValue();
-					assert declaredFunction instanceof FunctionType;
-					FunctionDefinition declaredFunctionDefinition = JPAUtils.findFunction(((FunctionType) declaredFunction).getFunctionId());
-					assert declaredFunctionDefinition != null;
-					if (logger.isDebugEnabled()) {
-						logger.debug("declaredFunction is: " + declaredFunctionDefinition);
-					}
-					FunctionArgument declaredFunctionArgument = XACMLFunctionValidator.getFunctionArgument(parentApply.getExpression().size(), declaredFunctionDefinition);
-					assert declaredFunctionArgument != null;
-					if (logger.isDebugEnabled()) {
-						logger.debug("declaredFunctionArgument is: " + declaredFunctionArgument);
-					}
-					//
-					// Copy the argument
-					//
-					argument = new FunctionArgument(argument);
-					argument.setDatatypeBean(declaredFunctionArgument.getDatatypeBean());
-				} catch (Exception e) {
-					logger.error("Exception while determining parent apply's FunctionType argument datatype.");
-				}
-				
-			}
-			self.addExpression(parentApply, argument);
-		} else {
-			AdminNotification.error("ApplyType does not have a function defined. Please define that first.");
-		}
-
-	}
-
-	protected void addExpression(final ApplyType parentApply, final FunctionArgument argument) {
-		if (logger.isDebugEnabled()) {
-			logger.debug("Adding Expression: " + parentApply + " arg: " + argument);
-		}
-		//
-		// First we need to select what Expression They want
-		//
-		final ExpressionSelectionWindow selector = new ExpressionSelectionWindow(parentApply,
-																		this.isParentAAssignment(),
-																		(argument != null ? argument.isBag() : false),
-																		(argument != null ? ! argument.isBag() : false));
-		selector.setCaption("Select the Expression Type");
-		selector.setModal(true);
-		selector.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Was something selected?
-				//
-				String selection = selector.getSelection();
-				if (selection == null) {
-					return;
-				}
-				//
-				// What did the user select?
-				//
-				if (selection.equals(ExpressionSelectionWindow.OPTION_APPLY)) {
-					//
-					self.editApply(new ApplyType(), parentApply, argument);
-					//
-				} else if (selection.equals(ExpressionSelectionWindow.OPTION_DESIGNATOR)) {
-					//
-					self.editAttribute(new AttributeDesignatorType(), parentApply, argument);
-					//
-				} else if (selection.equals(ExpressionSelectionWindow.OPTION_SELECTOR) ) {
-					//
-					self.editAttribute(new AttributeSelectorType(), parentApply, argument);
-					//
-				} else if (selection.equals(ExpressionSelectionWindow.OPTION_VALUE)) {
-					//
-					self.editValue(new AttributeValueType(), parentApply, argument);
-					//
-				} else if (selection.equals(ExpressionSelectionWindow.OPTION_VARIABLE)) {
-					//
-					self.editVariable(new VariableReferenceType(), parentApply, argument);
-					//
-				}
-			}
-		});
-		selector.center();
-		UI.getCurrent().addWindow(selector);
-	}
-
-	protected void editApply(final ApplyType apply, final ApplyType parent, final FunctionArgument argument) {
-		if (logger.isDebugEnabled()) {
-			logger.debug("editApply: " + apply + " parent: " + parent + " :" + argument);
-		}
-		//
-		// Copy the apply and create its window
-		//
-		final ApplyType copyApply = XACMLObjectCopy.copy(apply);
-		final ApplyEditorWindow window = new ApplyEditorWindow(copyApply, parent, argument, self.parent);
-		window.setCaption("Edit The Apply Expression");
-		window.setModal(true);
-		//
-		// Set ourselves as an ApplyParametersChanged listener
-		//
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user save?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// Copy back the apply
-				//
-				apply.setDescription(copyApply.getDescription());
-				apply.setFunctionId(copyApply.getFunctionId());
-				//
-				// Get the function information
-				//
-				FunctionDefinition function = JPAUtils.findFunction(apply.getFunctionId());
-				assert function != null;
-				//
-				// Is this a new Apply?
-				//
-				if (self.container.containsId(apply)) {
-					//
-					// No - we are updating
-					//
-					self.container.updateItem(apply);
-				} else {
-					//
-					// Is this a higher-order bag function?
-					//
-					if (function.isHigherOrder()) {
-						//
-						// Have the user select a function for it
-						//
-						final FunctionSelectionWindow functionSelection = new FunctionSelectionWindow(null);
-						functionSelection.setCaption("Select Function");
-						functionSelection.setModal(true);
-						functionSelection.addCloseListener(new CloseListener() {
-							private static final long serialVersionUID = 1L;
-
-							@Override
-							public void windowClose(CloseEvent e) {
-								//
-								// Did the user save?
-								//
-								if (functionSelection.isSaved() == false) {
-									return;
-								}
-								//
-								// Get the function
-								//
-								String function = functionSelection.getSelectedFunction();
-								if (function == null || function.isEmpty()) {
-									logger.error("Function window said it was saved, but there was no function.");
-									return;
-								}
-								//
-								// Create the function object
-								//
-								FunctionType hoFunction = new FunctionType();
-								hoFunction.setFunctionId(function);
-								//
-								// Add it into the apply
-								//
-								apply.getExpression().add(new ObjectFactory().createFunction(hoFunction));
-								//
-								// New Item
-								//
-								Item item = self.container.addItem(apply, parent, argument);
-								assert item != null;
-								self.treeExpressions.setCollapsed(apply, false);
-								self.treeExpressions.select(apply);
-							}
-						});
-						functionSelection.center();
-						UI.getCurrent().addWindow(functionSelection);
-					} else {
-						//
-						// New Item
-						//
-						Item item = self.container.addItem(apply, parent, argument);
-						assert item != null;
-						self.treeExpressions.setCollapsed(apply, false);
-						self.treeExpressions.select(apply);
-					}
-				}
-			}
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-	
-	protected void editAttribute(final Object target, final ApplyType parent, final FunctionArgument argument) {
-		if (logger.isDebugEnabled()) {
-			logger.debug("editAttribute: " + target + " parent: " + parent + " :" + argument);
-		}
-		//
-		// Determine what the data type needs to be
-		//
-		Datatype datatype = null;
-		if (parent == null && this.isParentACondition()) {
-			datatype = JPAUtils.getBooleanDatatype();
-		} else {
-			if (argument != null) {
-				datatype = argument.getDatatypeBean();
-			}
-		}
-		//
-		// Copy the attribute
-		//
-		final Object copyAttribute = XACMLObjectCopy.deepCopy(target);
-		//
-		// Create the window
-		//
-		final AttributeSelectionWindow window = new AttributeSelectionWindow(datatype, copyAttribute);
-		if (target instanceof AttributeDesignatorType) {
-			window.setCaption("Edit Designator " + (((AttributeDesignatorType) target).getAttributeId() != null ? ((AttributeDesignatorType) target).getAttributeId() : ""));
-		} else {
-			window.setCaption("Edit Selector " + (((AttributeSelectorType) target).getContextSelectorId() != null ? ((AttributeSelectorType) target).getContextSelectorId() : ""));
-		}
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user hit save?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// Grab the attribute
-				//
-				Attribute attribute = window.getAttribute();
-				if (attribute == null) {
-					return;
-				}
-				//
-				// Save it back into the original
-				//
-				if (target instanceof AttributeDesignatorType) {
-					((AttributeDesignatorType)target).setAttributeId(attribute.getXacmlId());
-					((AttributeDesignatorType)target).setCategory(attribute.getCategoryBean().getXacmlId());
-					((AttributeDesignatorType)target).setDataType(attribute.getDatatypeBean().getXacmlId());
-					((AttributeDesignatorType)target).setIssuer(attribute.getIssuer());
-					((AttributeDesignatorType)target).setMustBePresent(attribute.isMustBePresent());
-				} else {
-					((AttributeSelectorType)target).setContextSelectorId(attribute.getXacmlId());
-					((AttributeSelectorType)target).setCategory(attribute.getCategoryBean().getXacmlId());
-					((AttributeSelectorType)target).setDataType(attribute.getDatatypeBean().getXacmlId());
-					((AttributeSelectorType)target).setPath(attribute.getSelectorPath());
-					((AttributeSelectorType)target).setMustBePresent(attribute.isMustBePresent());
-				}
-				//
-				// Is this a new item?
-				//
-				if (self.container.containsId(target)) {
-					//
-					// No, just update the container
-					//
-					self.container.updateItem(target);
-				} else {
-					//
-					// Yes a new item, add it in
-					//
-					//assert(self.container.addItem(JPAUtils.createDesignator(attribute), parent, argument) != null);
-					Item item = self.container.addItem(target, parent, argument);
-					assert item != null;
-					self.treeExpressions.select(target);
-				}
-			}
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-
-	protected void editValue(final AttributeValueType value, final ApplyType parent, final FunctionArgument argument) {
-		if (logger.isDebugEnabled()) {
-			logger.debug("editvalue: " + value + " parent: " + parent + " :" + argument);
-		}
-		//
-		// Copy the attribute value
-		//
-		final AttributeValueType copyValue = XACMLObjectCopy.copy(value);
-		//
-		// Get what the datatype should be
-		//
-		Datatype datatypeRestriction = null;
-		//
-		// Is this a root?
-		//
-		if (parent == null) {
-			//
-			// Check if our parent container is a condition
-			//
-			if (self.isParentACondition()) {
-				//
-				// We are only allowed to return boolean's
-				//
-				datatypeRestriction = JPAUtils.getBooleanDatatype();
-			}
-		} else {
-			//
-			// Are we an argument?
-			//
-			if (argument != null) {
-				//
-				// Yes - we are restricted to that argument's datatype
-				//
-				datatypeRestriction = argument.getDatatypeBean();
-			}
-		}
-		//
-		// Create the window
-		//
-		final AttributeValueEditorWindow window = new AttributeValueEditorWindow(copyValue, datatypeRestriction);
-		window.setCaption("Edit Attribute Value");
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user click save?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// Yes - get the value
-				//
-				value.getContent().clear();
-				for (Object o : copyValue.getContent()) {
-					value.getContent().add(o);
-				}
-				value.setDataType(copyValue.getDataType());
-				//
-				// Was this a new value?
-				//
-				if (self.container.containsId(value)) {
-					//
-					// No - update it
-					//
-					self.container.updateItem(value);
-				} else {
-					//
-					// Yes - add it in
-					//
-					Item item = self.container.addItem(value, parent, argument);
-					assert item != null;
-				}
-			}
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-
-	protected void editVariable(final VariableReferenceType variable, final ApplyType parent, final FunctionArgument argument) {
-		if (logger.isDebugEnabled()) {
-			logger.debug("editVariable: " + variable + " parent: " + parent + " :" + argument);
-		}
-		//
-		// Copy the variable
-		//
-		final VariableReferenceType copyVariable = XACMLObjectCopy.copy(variable);
-		//
-		// Create the window
-		//
-		final VariableReferenceEditorWindow window = new VariableReferenceEditorWindow(copyVariable, this.variables);
-		window.setCaption("Edit Variable Reference");
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user click save?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// Copy the variable changes back
-				//
-				variable.setVariableId(copyVariable.getVariableId());
-				//
-				// Is this a new one?
-				//
-				if (self.container.containsId(variable)) {
-					//
-					// No - update it
-					//
-					self.container.updateItem(variable);
-				} else {
-					//
-					// Yes - add it
-					//
-					Item item = self.container.addItem(variable, parent, argument);
-					assert item != null;
-				}
-			}
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-	
-	protected void editFunction(final FunctionType func, final ApplyType parent, final FunctionArgument argument) {
-		if (logger.isDebugEnabled()) {
-			logger.debug("editFunction: " + func + " parent: " + parent + " :" + argument);
-		}
-
-		final FunctionSelectionWindow functionSelection = new FunctionSelectionWindow((func != null ? func.getFunctionId() : null));
-		functionSelection.setCaption("Edit Function");
-		functionSelection.setModal(true);
-		functionSelection.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user save?
-				//
-				if (functionSelection.isSaved() == false) {
-					return;
-				}
-				//
-				// Get the function
-				//
-				String function = functionSelection.getSelectedFunction();
-				if (function == null || function.isEmpty()) {
-					logger.error("Function window said it was saved, but there was no function.");
-					return;
-				}
-				//
-				// New one?
-				//
-				if (func == null) {
-					//
-					// Create the function object
-					//
-					FunctionType hoFunction = new FunctionType();
-					hoFunction.setFunctionId(function);
-					//
-					// Add it into the apply
-					//
-					assert parent.getExpression().size() == 0;
-					parent.getExpression().add(new ObjectFactory().createFunction(hoFunction));
-					//
-					// New Item
-					//
-					Item item = self.container.addItem(func, parent, argument);
-					assert item != null;
-					self.treeExpressions.setCollapsed(parent, false);
-					self.treeExpressions.select(func);
-				} else {
-					//
-					// Editing an existing
-					//
-					func.setFunctionId(function);
-					self.container.updateItem(func);
-					//
-					// Warn user
-					//
-					if (parent.getExpression().size() > 1) {
-						AdminNotification.warn("You have updated the function ID. The rest of the arguments may be invalid for the function. Please verify the other arguments.");
-					}
-				}
-			}
-		});
-		functionSelection.center();
-		UI.getCurrent().addWindow(functionSelection);
-	}
-	
-	protected void editExpression(final Object target, final ApplyType parent, final FunctionArgument argument) {
-		if (target instanceof ApplyType) {
-			//
-			this.editApply((ApplyType) target, parent, argument);
-			//
-		} else if (target instanceof AttributeValueType) {
-			//
-			this.editValue((AttributeValueType) target,parent, argument);
-			//
-		} else if (target instanceof AttributeDesignatorType || target instanceof AttributeSelectorType) {
-			//
-			this.editAttribute(target, parent, argument);
-			//
-		} else if (target instanceof VariableReferenceType) {
-			//
-			this.editVariable((VariableReferenceType) target, parent, argument);
-			//
-		} else if (target instanceof FunctionType) {
-			//
-			this.editFunction((FunctionType) target, parent, argument);
-			//
-		}
-	}
-
-	protected void deleteExpression(Object target) {
-		if (this.container.isRoot(target)) {
-			if (this.treeExpressions.removeAllItems() == false) {
-				logger.error("Failed to remove everything.");
-			}
-		} else {
-			if (this.treeExpressions.removeItem(target) == false) {
-				logger.error("Failed to remove " + target);
-			}
-		}
-		this.setupButtons();
-	}
-	
-	protected void clearAllExpressions() {
-		if (this.treeExpressions.removeAllItems() == false) {
-			logger.error("Failed to remove everything.");
-		}
-		this.setupButtons();
-	}
-		
-	@Override
-	public void applyParameterChanged(ApplyType apply, ApplyType parent, FunctionArgument argument, Object container) {
-		logger.info("applyParameterChanged: " + apply + " " + parent + " " + argument + " " + container);
-		//
-		// TODO - figure out if this something being edited, or a new one
-		//
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("100%");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// horizontalLayout_1
-		horizontalLayout_1 = buildHorizontalLayout_1();
-		mainLayout.addComponent(horizontalLayout_1);
-		mainLayout.setExpandRatio(horizontalLayout_1, 1.0f);
-		
-		// treeExpressions
-		treeExpressions = new TreeTable();
-		treeExpressions.setImmediate(false);
-		treeExpressions.setWidth("100.0%");
-		treeExpressions.setHeight("-1px");
-		mainLayout.addComponent(treeExpressions);
-		mainLayout.setExpandRatio(treeExpressions, 1.0f);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayout_1() {
-		// common part: create layout
-		horizontalLayout_1 = new HorizontalLayout();
-		horizontalLayout_1.setImmediate(false);
-		horizontalLayout_1.setWidth("-1px");
-		horizontalLayout_1.setHeight("-1px");
-		horizontalLayout_1.setMargin(false);
-		horizontalLayout_1.setSpacing(true);
-		
-		// buttonAddExpression
-		buttonAddExpression = new Button();
-		buttonAddExpression.setCaption("Add Expression");
-		buttonAddExpression.setImmediate(true);
-		buttonAddExpression.setWidth("-1px");
-		buttonAddExpression.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonAddExpression);
-		
-		// buttonDeleteExpression
-		buttonDeleteExpression = new Button();
-		buttonDeleteExpression.setCaption("Delete Expression");
-		buttonDeleteExpression.setImmediate(true);
-		buttonDeleteExpression.setWidth("-1px");
-		buttonDeleteExpression.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonDeleteExpression);
-		
-		// buttonClearAll
-		buttonClearAll = new Button();
-		buttonClearAll.setCaption("Clear All");
-		buttonClearAll.setImmediate(true);
-		buttonClearAll.setDescription("Clears all the expressions.");
-		buttonClearAll.setWidth("-1px");
-		buttonClearAll.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonClearAll);
-		
-		// checkBoxShortName
-		checkBoxShortName = new CheckBox();
-		checkBoxShortName.setCaption("Display Short XACML ID's");
-		checkBoxShortName.setImmediate(false);
-		checkBoxShortName
-				.setDescription("If checked, the right-most string of the function and datatype URI's will only be displayed.");
-		checkBoxShortName.setWidth("-1px");
-		checkBoxShortName.setHeight("-1px");
-		horizontalLayout_1.addComponent(checkBoxShortName);
-		
-		return horizontalLayout_1;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ExpressionEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ExpressionEditorWindow.java
deleted file mode 100644
index 0ee6eea..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ExpressionEditorWindow.java
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.Tree;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class ExpressionEditorWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Tree treeExpression;
-	@AutoGenerated
-	private ComboBox comboBox;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public ExpressionEditorWindow() {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-
-		// TODO add user code here
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// comboBox
-		comboBox = new ComboBox();
-		comboBox.setImmediate(false);
-		comboBox.setWidth("-1px");
-		comboBox.setHeight("-1px");
-		mainLayout.addComponent(comboBox);
-		
-		// treeExpression
-		treeExpression = new Tree();
-		treeExpression.setImmediate(false);
-		treeExpression.setWidth("100.0%");
-		treeExpression.setHeight("-1px");
-		mainLayout.addComponent(treeExpression);
-		mainLayout.setExpandRatio(treeExpression, 1.0f);
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ExpressionSelectionWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ExpressionSelectionWindow.java
deleted file mode 100644
index d7bfeb0..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ExpressionSelectionWindow.java
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ApplyType;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.OptionGroup;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class ExpressionSelectionWindow extends Window {
-
-	public static String	OPTION_APPLY = "Apply";
-	public static String	OPTION_VALUE = "Attribute Value";
-	public static String	OPTION_DESIGNATOR = "Attribute Designator";
-	public static String	OPTION_SELECTOR = "Attribute Selector";
-	public static String	OPTION_VARIABLE = "Variable Reference";
-	
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private OptionGroup optionGroupExpression;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final ExpressionSelectionWindow self = this;
-	boolean isSaved = false;
-	String selection = null;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 * @param parentApply 
-	 */
-	// TODO - Refactor.  Unused formal parameter parentApply.  Either determine
-	// whether this is unnecessary and remove it (including removing it from all 
-	// constructor consumers), or use it.
-	// NOTE: parentApply was originally used by passing to private initializeOption method.
-	//       However, the parameter was unused by that method also.
-	//       Setting to NOPMD for now.
-	public ExpressionSelectionWindow(ApplyType parentApply, boolean isAttributeAssignment, boolean mustBeBag, boolean mustBeValue) { //NOPMD
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Finish GUI initialization
-		//
-		// this.initializeOption(parentApply, isAttributeAssignment, mustBeBag, mustBeValue);
-		this.initializeOption(isAttributeAssignment, mustBeBag, mustBeValue);
-		this.initializeButtons();
-	}
-	
-	// private void initializeOption(ApplyType parentApply, boolean isAttributeAssignment, boolean mustBeBag, boolean mustBeValue) {
-	private void initializeOption(boolean isAttributeAssignment, boolean mustBeBag, boolean mustBeValue) {
-//		if (!isAttributeAssignment) {
-			this.optionGroupExpression.addItem(OPTION_APPLY);
-//		}
-		if (!mustBeBag || mustBeValue) {
-			this.optionGroupExpression.addItem(OPTION_VALUE);
-		}
-		if (mustBeBag || !mustBeValue) {
-			this.optionGroupExpression.addItem(OPTION_DESIGNATOR);
-			this.optionGroupExpression.addItem(OPTION_SELECTOR);
-		}
-		this.optionGroupExpression.addItem(OPTION_VARIABLE);
-		//
-		// Default Selection
-		//
-		if (!isAttributeAssignment) {
-			this.optionGroupExpression.select(OPTION_APPLY);
-		} else {
-			if (!mustBeBag || mustBeValue) {
-				this.optionGroupExpression.select(OPTION_VALUE);
-			} else {
-				this.optionGroupExpression.select(OPTION_DESIGNATOR);
-			}
-		}
-	}
-	
-	private void initializeButtons() {
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.isSaved = true;
-				self.selection = self.optionGroupExpression.getValue().toString();
-				self.close();
-			}			
-		});
-	}
-	
-	public String	getSelection() {
-		if (this.isSaved == false) {
-			return null;
-		}
-		return this.selection;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// optionGroupExpression
-		optionGroupExpression = new OptionGroup();
-		optionGroupExpression
-				.setCaption("Select One Of The Following Types of Expressions");
-		optionGroupExpression.setImmediate(false);
-		optionGroupExpression.setWidth("-1px");
-		optionGroupExpression.setHeight("-1px");
-		mainLayout.addComponent(optionGroupExpression);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Select");
-		buttonSave.setImmediate(false);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(24));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/FunctionSelectionWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/FunctionSelectionWindow.java
deleted file mode 100644
index 80d33b8..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/FunctionSelectionWindow.java
+++ /dev/null
@@ -1,314 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.util.filter.SimpleStringFilter;
-import com.vaadin.data.util.sqlcontainer.SQLContainer;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class FunctionSelectionWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private Table tableFunctions;
-	@AutoGenerated
-	private TextField textFieldFilter;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(FunctionSelectionWindow.class);
-	private final FunctionSelectionWindow self = this;
-	private final String defaultFunctionID;
-	private String selectedFunction = null;
-	private boolean isSaved = false;
-	private static SQLContainer highOrderFunctions = ((XacmlAdminUI) UI.getCurrent()).getHigherOrderBagContainer();
-	/*
-	 * Seems that when this view is created it may or may not be upper case.
-	 */
-	private static String PROPERTY_SHORTNAME = "shortname";
-	private static String PROPERTY_XACMLID = "xacmlid";
-	
-	static {
-		for (Object prop : FunctionSelectionWindow.highOrderFunctions.getContainerPropertyIds()) {
-			logger.info("SQL Container Property Id: " + prop.toString());
-			if (prop.toString().equalsIgnoreCase(PROPERTY_SHORTNAME)) {
-				PROPERTY_SHORTNAME = prop.toString();
-			} else if (prop.toString().equalsIgnoreCase(PROPERTY_XACMLID)) {
-				PROPERTY_XACMLID = prop.toString();
-			}
-		}
-		
-	}
-	
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public FunctionSelectionWindow(String defaultFunction) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save
-		//
-		this.defaultFunctionID = defaultFunction;
-		//
-		// Close shortcut
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize GUI
-		//
-		this.initializeTextField();
-		this.initializeFunctions();
-		this.initializeButtons();
-		//
-		// Set our focus
-		//
-		this.tableFunctions.focus();
-	}
-
-	protected void initializeTextField() {
-		//
-		// Initialize GUI settings
-		//
-		this.textFieldFilter.setImmediate(true);
-		//
-		// Respond to the text change events
-		//
-		this.textFieldFilter.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-			SimpleStringFilter currentFilter = null;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				//
-				// Remove current filter
-				//
-				if (this.currentFilter != null) {
-					FunctionSelectionWindow.highOrderFunctions.removeContainerFilter(this.currentFilter);
-					this.currentFilter = null;
-				}
-				//
-				// Get the text
-				//
-				String value = event.getText();
-				if (value != null && value.length() > 0) {
-					//
-					// Add the new filter
-					//
-					this.currentFilter = new SimpleStringFilter(PROPERTY_SHORTNAME, value, true, false);
-					FunctionSelectionWindow.highOrderFunctions.addContainerFilter(this.currentFilter);
-				}
-			}
-		});
-	}
-	protected void initializeFunctions() {
-		//
-		// Setup data source. Make sure there are no current filters
-		//
-		FunctionSelectionWindow.highOrderFunctions.removeAllContainerFilters();
-		this.tableFunctions.setContainerDataSource(FunctionSelectionWindow.highOrderFunctions);
-		//
-		// Initialize GUI properties
-		//
-		this.tableFunctions.setImmediate(true);
-		this.tableFunctions.setNullSelectionAllowed(false);
-		this.tableFunctions.setRequired(true);
-		this.tableFunctions.setRequiredError("Please select a function.");
-		this.tableFunctions.setSelectable(true);
-		this.tableFunctions.setPageLength(15);
-		this.tableFunctions.setVisibleColumns(new Object[] {PROPERTY_SHORTNAME, PROPERTY_XACMLID});
-		this.tableFunctions.setColumnHeaders(new String[] {"Short Function Name", "Xacml ID"});
-		//
-		// Respond to selection events
-		//
-		this.tableFunctions.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				Object id = self.tableFunctions.getValue();
-				if (id != null) {
-					Item item = FunctionSelectionWindow.highOrderFunctions.getItem(id);
-					if (item == null) {
-						return;
-					}
-					Property<?> property = item.getItemProperty(PROPERTY_XACMLID);
-					if (property == null) {
-						return;
-					}
-					selectedFunction = property.getValue().toString();
-					self.buttonSave.setEnabled(true);
-				} else {
-					self.buttonSave.setEnabled(false);
-				}
-			}			
-		});
-		//
-		// Respond to double-click events
-		//
-		this.tableFunctions.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick()) {
-					self.doSave();
-				}
-			}
-		});
-		//
-		// Setup the default selection
-		//
-		this.buttonSave.setEnabled(false);
-		if (this.defaultFunctionID != null) {
-			for (Object id : FunctionSelectionWindow.highOrderFunctions.getItemIds()) {
-				Item item = FunctionSelectionWindow.highOrderFunctions.getItem(id);
-				if (item != null) {
-					Property<?> property = item.getItemProperty(PROPERTY_XACMLID);
-					if (property != null && property.getValue().toString().equals(this.defaultFunctionID)) {
-						this.tableFunctions.select(id);
-						break;
-					}
-				}
-			}
-		}
-	}
-
-	protected void initializeButtons() {
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.doSave();
-			}		
-		});
-	}
-	
-	protected void doSave() {
-		try {
-			//
-			// Commit changes
-			//
-			self.tableFunctions.commit();
-			//
-			// We are saved
-			//
-			self.isSaved = true;
-			//
-			// Close the window
-			//
-			self.close();
-		} catch (SourceException | InvalidValueException e) { //NOPMD
-			//
-			// Nothing to do, Vaadin highlights
-			//
-		}
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public String getSelectedFunction() {
-		return this.selectedFunction;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldFilter
-		textFieldFilter = new TextField();
-		textFieldFilter.setCaption("Filter");
-		textFieldFilter.setImmediate(false);
-		textFieldFilter.setWidth("-1px");
-		textFieldFilter.setHeight("-1px");
-		mainLayout.addComponent(textFieldFilter);
-		
-		// tableFunctions
-		tableFunctions = new Table();
-		tableFunctions.setImmediate(false);
-		tableFunctions.setDescription("Functions To Select From");
-		tableFunctions.setWidth("100.0%");
-		tableFunctions.setHeight("-1px");
-		mainLayout.addComponent(tableFunctions);
-		mainLayout.setExpandRatio(tableFunctions, 1.0f);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/GitConflictResolver.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/GitConflictResolver.java
deleted file mode 100644
index cd75c07..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/GitConflictResolver.java
+++ /dev/null
@@ -1,67 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.VerticalLayout;
-
-public class GitConflictResolver extends CustomComponent {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public GitConflictResolver() {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-
-		// TODO add user code here
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(false);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/GitPushWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/GitPushWindow.java
deleted file mode 100644
index 492d8b9..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/GitPushWindow.java
+++ /dev/null
@@ -1,356 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import java.io.File;
-import java.io.IOException;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.eclipse.jgit.api.Git;
-import org.eclipse.jgit.api.Status;
-import org.eclipse.jgit.api.errors.GitAPIException;
-import org.eclipse.jgit.dircache.DirCache;
-import org.eclipse.jgit.dircache.DirCacheEntry;
-import org.eclipse.jgit.errors.NoWorkTreeException;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.model.GitStatusContainer;
-import org.apache.openaz.xacml.admin.model.GitStatusContainer.GitEntry;
-import org.apache.openaz.xacml.admin.model.GitStatusContainer.StatusItem;
-import org.apache.openaz.xacml.admin.util.AdminNotification;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Item;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.Table.ColumnGenerator;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class GitPushWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonPush;
-	@AutoGenerated
-	private Table tableChanges;
-	@AutoGenerated
-	private TextArea textAreaComments;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(GitPushWindow.class);
-	private final GitPushWindow self = this;
-	private final GitStatusContainer container;
-	private final Git git;
-	private final File target;
-	private boolean isSaved = false;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 * @param git 
-	 * @param status 
-	 */
-	public GitPushWindow(Git git, File target, Status status) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save data
-		//
-		this.git = git;
-		this.target = target;
-		this.container = new GitStatusContainer(status);
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize GUI
-		//
-		this.initializeText();
-		this.initializeTable(status);
-		this.initializeButtons();
-		//
-		//  Focus
-		//
-		this.textAreaComments.focus();
-	}
-	
-	protected void initializeText() {
-		this.textAreaComments.setImmediate(true);
-		this.textAreaComments.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				if (event.getText().isEmpty()) {
-					self.buttonPush.setEnabled(false);
-				} else {
-					if (self.container.getConflictCount() == 0) {
-						self.buttonPush.setEnabled(true);
-					} else {
-						self.buttonPush.setEnabled(false);
-					}
-				}
-			}			
-		});
-	}
-
-	protected void initializeTable(Status status) {
-		//
-		// Setup the table
-		//
-		this.tableChanges.setContainerDataSource(this.container);
-		this.tableChanges.setPageLength(this.container.size());
-		this.tableChanges.setImmediate(true);
-		//
-		// Generate column
-		//
-		this.tableChanges.addGeneratedColumn("Entry", new ColumnGenerator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Object generateCell(Table source, Object itemId, Object columnId) {
-				Item item = self.container.getItem(itemId);
-				assert item != null;
-				if (item instanceof StatusItem) {
-					return self.generateGitEntryComponent(((StatusItem) item).getGitEntry());
-				}
-				assert item instanceof StatusItem;
-				return null;
-			}
-		});
-	}
-	
-	protected Object generateGitEntryComponent(final GitEntry entry) {
-		//
-		// If its conflicting, take care of it
-		//
-		if (entry.isConflicting()) {
-			return this.generateConflictingEntry(entry);
-		}
-		if (entry.isUntracked()) {
-			return this.generateUntrackedEntry(entry);
-		}
-		/*
-		if (entry.isChanged() ||
-			entry.isModified() ||
-			entry.isUncommitted()) {
-			return this.generateUncommittedEntry(entry);
-		}
-		*/
-		return null;
-	}
-	
-	protected Object generateConflictingEntry(final GitEntry entry) {
-		Button resolve = new Button("Resolve");
-		resolve.setImmediate(true);
-		resolve.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-		
-			}
-		});
-		return resolve;
-	}
-	
-	protected Object generateUntrackedEntry(final GitEntry entry) {
-		Button add = new Button("Add");
-		add.setImmediate(true);
-		add.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					DirCache cache = self.git.add().addFilepattern(entry.getName()).call();
-					DirCacheEntry cacheEntry = cache.getEntry(entry.getName());
-					assert cacheEntry != null;
-					if (cacheEntry == null) {
-						return;
-					}
-					if (cacheEntry.isMerged()) {
-						self.refreshStatus();
-					}
-				} catch (GitAPIException e) {
-					String error = "Failed to add: " + e.getLocalizedMessage();
-					logger.error(error);
-					AdminNotification.error(error);
-				}
-			}
-		});
-		return add;
-	}
-	
-	protected Object generateUncommittedEntry(final GitEntry entry) {
-		Button commit = new Button("Commit");
-		commit.setImmediate(true);
-		commit.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-			}
-		});
-		return commit;
-	}
-	
-	protected void initializeButtons() {
-		this.buttonPush.setEnabled(false);
-		this.buttonPush.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Commit
-					//
-					self.textAreaComments.commit();
-					//
-					// Mark as saved
-					//
-					self.isSaved = true;
-					//
-					// Close the window
-					//
-					self.close();
-				} catch(SourceException | InvalidValueException idontcare) { //NOPMD
-					//
-					// Vaadin will highlight the failed requirement or validation
-					//
-				}
-			}			
-		});
-	}
-	
-	protected void	refreshStatus() {
-		try {
-			//
-			// Grab our working repository
-			//
-			Path repoPath = ((XacmlAdminUI)getUI()).getUserGitPath();
-			final Git git = Git.open(repoPath.toFile());
-			//
-			// Get our status
-			//
-			final String base;
-			Status status;
-			if (target == null) {
-				base = ".";
-			} else {
-				Path relativePath = repoPath.relativize(Paths.get(target.getPath()));
-				base = relativePath.toString();
-			}
-			if (logger.isDebugEnabled()) {
-				logger.debug("Status on base: " + base);
-			}
-			status = git.status().addPath(base).call();
-			//
-			// Pass it to our container
-			//
-			this.container.refreshStatus(status);
-			this.tableChanges.refreshRowCache();
-		} catch (NoWorkTreeException | IOException | GitAPIException e) {
-			String error = "Failed to refresh status: " + e.getLocalizedMessage();
-			logger.error(error);
-		}
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public String getComment() {
-		return this.textAreaComments.getValue();
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textAreaComments
-		textAreaComments = new TextArea();
-		textAreaComments.setCaption("Add Comments");
-		textAreaComments.setImmediate(false);
-		textAreaComments
-				.setDescription("Enter comments that reflect the changes you have made to the repository domains and/or policy files.");
-		textAreaComments.setWidth("400px");
-		textAreaComments.setHeight("-1px");
-		textAreaComments.setInvalidAllowed(false);
-		textAreaComments.setRequired(true);
-		textAreaComments
-				.setInputPrompt("Eg. Add new rule for employees in marketing department.");
-		mainLayout.addComponent(textAreaComments);
-		
-		// tableChanges
-		tableChanges = new Table();
-		tableChanges.setCaption("Changes To Be Pushed");
-		tableChanges.setImmediate(false);
-		tableChanges.setWidth("100.0%");
-		tableChanges.setHeight("-1px");
-		mainLayout.addComponent(tableChanges);
-		mainLayout.setExpandRatio(tableChanges, 1.0f);
-		
-		// buttonPush
-		buttonPush = new Button();
-		buttonPush.setCaption("Push Changes");
-		buttonPush.setImmediate(true);
-		buttonPush.setWidth("-1px");
-		buttonPush.setHeight("-1px");
-		mainLayout.addComponent(buttonPush);
-		mainLayout.setComponentAlignment(buttonPush, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/GitSynchronizeWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/GitSynchronizeWindow.java
deleted file mode 100644
index da2edf7..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/GitSynchronizeWindow.java
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import java.io.IOException;
-import java.nio.file.Path;
-
-import org.eclipse.jgit.api.Git;
-// import org.eclipse.jgit.api.MergeResult;
-import org.eclipse.jgit.api.PullResult;
-// import org.eclipse.jgit.api.RebaseResult;
-import org.eclipse.jgit.api.errors.GitAPIException;
-// import org.eclipse.jgit.transport.FetchResult;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class GitSynchronizeWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSynchronize;
-	@AutoGenerated
-	private TextArea textAreaResults;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final GitSynchronizeWindow self = this;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public GitSynchronizeWindow() {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		//
-		//
-		this.initializeButtons();
-	}
-	
-	protected void initializeButtons() {
-		this.buttonSynchronize.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				if (self.buttonSynchronize.getCaption().equals("Synchronize")) {
-					self.synchronize();
-				} else {
-					self.close();
-				}
-			}			
-		});
-	}
-	
-	protected void synchronize() {
-		//
-		// Grab our working repository
-		//
-		Path repoPath = ((XacmlAdminUI)getUI()).getUserGitPath();
-		try {
-			final Git git = Git.open(repoPath.toFile());
-			
-			PullResult result = git.pull().call();
-			// FetchResult fetch = result.getFetchResult();
-			// MergeResult merge = result.getMergeResult();
-			// RebaseResult rebase = result.getRebaseResult();
-			if (result.isSuccessful()) {
-				//
-				// TODO add more notification
-				//
-				this.textAreaResults.setValue("Successful!");
-			} else {
-				//
-				// TODO
-				//
-				this.textAreaResults.setValue("Failed.");
-			}
-		} catch (IOException | GitAPIException e) {
-			e.printStackTrace();
-		}
-		this.buttonSynchronize.setCaption("Ok");
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textAreaResults
-		textAreaResults = new TextArea();
-		textAreaResults.setCaption("Synch Results");
-		textAreaResults.setImmediate(false);
-		textAreaResults.setWidth("462px");
-		textAreaResults.setHeight("222px");
-		mainLayout.addComponent(textAreaResults);
-		
-		// buttonSynchronize
-		buttonSynchronize = new Button();
-		buttonSynchronize.setCaption("Synchronize");
-		buttonSynchronize.setImmediate(true);
-		buttonSynchronize.setWidth("-1px");
-		buttonSynchronize.setHeight("-1px");
-		mainLayout.addComponent(buttonSynchronize);
-		mainLayout.setComponentAlignment(buttonSynchronize, new Alignment(24));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/MatchEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/MatchEditorWindow.java
deleted file mode 100644
index eafb7e0..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/MatchEditorWindow.java
+++ /dev/null
@@ -1,304 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.MatchType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.Datatype;
-import org.apache.openaz.xacml.admin.view.events.AttributeChangedEventListener;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Item;
-import com.vaadin.data.Property;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.util.filter.Compare;
-import com.vaadin.data.util.sqlcontainer.SQLContainer;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class MatchEditorWindow extends Window implements AttributeChangedEventListener {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-	
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private Table tableFunctions;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(MatchEditorWindow.class);
-	private final MatchEditorWindow self = this;
-	private final MatchType match;
-	private final Datatype datatype;
-	private boolean isSaved = false;
-	private static SQLContainer matchFunctions = ((XacmlAdminUI) UI.getCurrent()).getMatchFunctionContainer();
-		
-	private static String PROPERTY_SHORTNAME = "shortname";
-	private static String PROPERTY_XACMLID = "xacmlid";
-	private static String PROPERTY_ARG2_DATATYPE = "arg2_datatype";
-	
-	static {
-		//
-		// H2 seems to insist on capitalizing, even with the no uppercase switch.
-		//
-		for (Object prop : MatchEditorWindow.matchFunctions.getContainerPropertyIds()) {
-			logger.info("SQL Container Property Id: " + prop.toString());
-			if (prop.toString().equalsIgnoreCase(PROPERTY_SHORTNAME)) {
-				PROPERTY_SHORTNAME = prop.toString();
-			} else if (prop.toString().equalsIgnoreCase(PROPERTY_XACMLID)) {
-				PROPERTY_XACMLID = prop.toString();
-			} else if (prop.toString().equalsIgnoreCase(PROPERTY_ARG2_DATATYPE)) {
-				PROPERTY_ARG2_DATATYPE = prop.toString();
-			}
-		}
-		
-	}
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public MatchEditorWindow(MatchType match, Datatype datatype) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save our data
-		//
-		this.match = match;
-		this.datatype = datatype;
-		//
-		// Close shortcut
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize GUI
-		//
-		this.initializeFunctions();
-		this.initializeButtons();
-		//
-		// Set our focus
-		//
-		this.tableFunctions.focus();
-	}
-	
-	protected void initializeFunctions() {
-		//
-		// Setup datasource and GUI properties
-		//
-		this.tableFunctions.setContainerDataSource(MatchEditorWindow.matchFunctions);
-		this.tableFunctions.setImmediate(true);
-		this.tableFunctions.setNullSelectionAllowed(false);
-		this.tableFunctions.setRequired(true);
-		this.tableFunctions.setRequiredError("Please select a function.");
-		this.tableFunctions.setSelectable(true);
-		this.tableFunctions.setPageLength(15);
-		this.tableFunctions.setVisibleColumns(PROPERTY_SHORTNAME, PROPERTY_XACMLID);
-		this.tableFunctions.setColumnHeaders(new String[] {"Short Function Name", "Xacml ID"});
-		//
-		// Filter out functions where ARG2 is the given datatype. NOTE: The
-		// AttributeDesignator/AttributeSelector is the 2nd argument.
-		//
-		MatchEditorWindow.matchFunctions.removeAllContainerFilters();
-		MatchEditorWindow.matchFunctions.addContainerFilter(new Compare.Equal(PROPERTY_ARG2_DATATYPE, this.datatype.getId()));
-		//
-		// Respond to selection events
-		//
-		this.tableFunctions.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				Object id = self.tableFunctions.getValue();
-				if (id != null) {
-					Item item = MatchEditorWindow.matchFunctions.getItem(id);
-					if (item == null) {
-						return;
-					}
-					Property<?> property = item.getItemProperty(PROPERTY_XACMLID);
-					if (property == null) {
-						return;
-					}
-					self.match.setMatchId(property.getValue().toString());
-					self.buttonSave.setEnabled(true);
-				} else {
-					self.buttonSave.setEnabled(false);
-				}
-			}			
-		});
-		//
-		// Respond to double-click events
-		//
-		this.tableFunctions.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick()) {
-					self.doSave();
-				}
-			}
-		});
-		//
-		// Default selection
-		//
-		this.buttonSave.setEnabled(false);
-		if (this.match.getMatchId() != null) {
-			for (Object id : MatchEditorWindow.matchFunctions.getItemIds()) {
-				Item item = MatchEditorWindow.matchFunctions.getItem(id);
-				if (item != null) {
-					Property<?> property = item.getItemProperty(PROPERTY_XACMLID);
-					if (property != null && property.getValue().toString().equals(this.match.getMatchId())) {
-						this.tableFunctions.select(id);
-						break;
-					}
-				}
-			}
-		}
-	}
-	
-	protected void initializeButtons() {
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.doSave();
-			}		
-		});
-	}
-	
-	protected void doSave() {
-		try {
-			//
-			// Commit changes
-			//
-			self.tableFunctions.commit();
-			//
-			// We are saved
-			//
-			self.isSaved = true;
-			//
-			// Close the window
-			//
-			self.close();
-		} catch (SourceException | InvalidValueException e) {
-			return;
-		}
-	}
-	
-	@Override
-	public void attributeChanged(Attribute attribute) {
-		if (logger.isDebugEnabled()) {
-			logger.debug("attributeChanged: " + attribute);
-		}
-		//
-		// Remove all filters.
-		//
-		MatchEditorWindow.matchFunctions.removeAllContainerFilters();
-		if (attribute == null) {
-			return;
-		}
-		//
-		// Get the datatype for the attribute
-		//
-		Datatype datatype = attribute.getDatatypeBean();
-		if (logger.isDebugEnabled()) {
-			logger.debug("datatype: " + datatype.getId());
-		}
-		//
-		// Filter out functions where ARG2 is the datatype. The
-		// AttributeDesignator/AttributeSelector is the 2nd arg.
-		//
-		MatchEditorWindow.matchFunctions.addContainerFilter(new Compare.Equal(PROPERTY_ARG2_DATATYPE, datatype.getId()));
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public MatchType getMatch() {
-		return this.match;
-	}
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// tableFunctions
-		tableFunctions = new Table();
-		tableFunctions.setCaption("Function");
-		tableFunctions.setImmediate(true);
-		tableFunctions
-				.setDescription("Select a function for matching the attribute.");
-		tableFunctions.setWidth("100.0%");
-		tableFunctions.setHeight("-1px");
-		tableFunctions.setInvalidAllowed(false);
-		tableFunctions.setRequired(true);
-		mainLayout.addComponent(tableFunctions);
-		mainLayout.setExpandRatio(tableFunctions, 1.0f);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ObadviceEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ObadviceEditorWindow.java
deleted file mode 100644
index 960a2b7..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ObadviceEditorWindow.java
+++ /dev/null
@@ -1,184 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import org.apache.openaz.xacml.admin.jpa.Obadvice;
-import org.apache.openaz.xacml.admin.view.fields.OaExpressionsField;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.fieldgroup.FieldGroup;
-import com.vaadin.data.fieldgroup.FieldGroup.CommitException;
-import com.vaadin.data.fieldgroup.PropertyId;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.FormLayout;
-import com.vaadin.ui.OptionGroup;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.Window;
-
-public class ObadviceEditorWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	private static final long serialVersionUID = 1L;
-	private ObadviceEditorWindow self = this;
-
-	private FormLayout mainLayout = new FormLayout();
-	
-	@PropertyId("type")
-	OptionGroup typeOption = new OptionGroup("Type");
-
-	@PropertyId("xacmlId")
-	TextField xacmlID = new TextField("Obligation Id");
-
-	@PropertyId("description")
-	TextArea descriptionField = new TextArea("Description");
-	
-	@PropertyId("fulfillOn")
-	OptionGroup fulfillOption = new OptionGroup("Fullfill On");
-	
-	@PropertyId("obadviceExpressions")
-	OaExpressionsField expressionsField; 
-	//Table tableExpressions = new Table("Attribute Assignments");
-	
-	Button saveButton = new Button("Save");
-	
-	private FieldGroup fieldGroup = null;
-	private final EntityItem<Obadvice> obad;
-	private boolean isSaved = false;
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 * @param caption 
-	 */
-	public ObadviceEditorWindow(EntityItem<Obadvice> obad) {
-		this.setContent(mainLayout);
-		//
-		// Save
-		//
-		this.obad = obad;
-		//
-		// Initialize main layout
-		//
-		this.mainLayout.setMargin(true);
-		this.mainLayout.setWidth("-1px");
-		//
-		// Initialize components
-		//
-		this.typeOption.setNullSelectionAllowed(false);
-		this.typeOption.setImmediate(true);
-		this.typeOption.setDescription("Select whether this is an obligation or advice");
-		this.typeOption.addItem("Obligation");
-		this.typeOption.addItem("Advice");
-		
-		this.fulfillOption.setNullSelectionAllowed(true);
-		this.fulfillOption.setDescription("Optionally restrict the use of the obligation/advice to a Permit or a Deny");
-		this.fulfillOption.addItem("Permit");
-		this.fulfillOption.addItem("Deny");
-
-		this.descriptionField.setNullRepresentation("");
-		
-		this.expressionsField = new OaExpressionsField(this.obad);
-		//
-		// Add our form components
-		//
-		this.mainLayout.addComponent(this.typeOption);
-		this.mainLayout.addComponent(this.fulfillOption);
-		this.mainLayout.addComponent(this.xacmlID);
-		this.mainLayout.addComponent(this.descriptionField);
-		this.mainLayout.addComponent(this.expressionsField);
-//		this.mainLayout.addComponent(this.tableExpressions);
-		this.mainLayout.addComponent(this.saveButton);
-		//
-		// Now bind those fields to the data
-		//
-		this.fieldGroup = new FieldGroup(obad);
-		this.fieldGroup.bindMemberFields(this);
-		//
-		// Finish setting up
-		//
-		this.initializeButtons();
-		this.initializeOptions();
-		//
-		// Set focus
-		//
-		this.xacmlID.focus();
-	}
-	
-	private void initializeButtons() {
-		this.saveButton.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					fieldGroup.commit();
-					self.isSaved = true;
-					self.close();
-				} catch (CommitException e) {
-					e.printStackTrace();
-				}
-			}
-			
-		});
-	}
-	
-	private void initializeOptions() {
-		self.setIDCaption();
-		this.typeOption.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.setIDCaption();
-			}
-			
-		});
-	}
-	
-	private void setIDCaption() {
-		String value = (String) self.typeOption.getValue();
-		if (value.equals("Obligation")) {
-			self.xacmlID.setCaption("Obligation Id");
-		} else {
-			self.xacmlID.setCaption("Advice Id");
-		}		
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public void	discard() {
-		//
-		//  May be discarded automatically??
-		//
-		this.fieldGroup.discard();
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ObligationAdviceEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ObligationAdviceEditorWindow.java
deleted file mode 100644
index 21c2d45..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ObligationAdviceEditorWindow.java
+++ /dev/null
@@ -1,817 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import java.util.Map;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AdviceExpressionsType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ApplyType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeAssignmentExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeSelectorType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeValueType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionsType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableDefinitionType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.model.ObligationAdviceContainer;
-import org.apache.openaz.xacml.util.XACMLObjectCopy;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.event.Action;
-import com.vaadin.event.Action.Handler;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.AbstractSelect.ItemDescriptionGenerator;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Component;
-import com.vaadin.ui.HorizontalLayout;
-import com.vaadin.ui.TreeTable;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class ObligationAdviceEditorWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private TreeTable tableExpressions;
-	@AutoGenerated
-	private HorizontalLayout horizontalLayout_1;
-	@AutoGenerated
-	private Button buttonClear;
-	@AutoGenerated
-	private Button buttonRemove;
-	@AutoGenerated
-	private Button buttonAdd;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(ObligationAdviceEditorWindow.class);
-	private final ObligationAdviceEditorWindow self = this;
-	private final Object root;
-	private final Map<VariableDefinitionType, PolicyType> variables;
-	private ObligationAdviceContainer container;
-	private boolean isSaved = false;
-
-	private static final Action ADD_OBLIGATION =		new Action ("Add Obligation");
-	private static final Action ADD_ADVICE =			new Action ("Add Advice");
-	private static final Action ADD_EXPRESSION =		new Action ("Add Expression");
-	private static final Action ADD_ATTRIBUTE =			new Action ("Add Attribute");
-	private static final Action EDIT_OBLIGATION =		new Action ("Edit Obligation");
-	private static final Action EDIT_ADVICE =			new Action ("Edit Advice");
-	private static final Action EDIT_EXPRESSION =		new Action ("Edit Expression");
-	private static final Action EDIT_ATTRIBUTE =		new Action ("Edit Attribute");
-	private static final Action REMOVE_OBLIGATION =		new Action ("Remove Obligation");
-	private static final Action REMOVE_ADVICE	 =		new Action ("Remove Advice");
-	private static final Action REMOVE_EXPRESSION =		new Action ("Remove Expression");
-	private static final Action REMOVE_ATTRIBUTE =		new Action ("Remove Attribute");
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public ObligationAdviceEditorWindow(Object root, Map<VariableDefinitionType, PolicyType> variables) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save
-		//
-		if (! (root instanceof ObligationExpressionsType) &&
-			! (root instanceof AdviceExpressionsType) ) {
-			throw new IllegalArgumentException("This window supports Obligation or Advice Expressions only.");
-		}
-		this.root = root;
-		this.variables = variables;
-		this.container = new ObligationAdviceContainer(this.root);
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize GUI
-		//
-		this.initializeTable();
-		this.initializeButtons();
-		this.setupButtons();
-		//
-		// Focus
-		//
-		this.tableExpressions.focus();
-	}
-
-	protected void initializeTable() {
-		//
-		// GUI properties
-		//
-		this.tableExpressions.setImmediate(true);
-		//
-		// Set the container
-		//
-		this.tableExpressions.setContainerDataSource(this.container);
-		this.tableExpressions.setVisibleColumns(new Object[] {ObligationAdviceContainer.PROPERTY_NAME, 
-																ObligationAdviceContainer.PROPERTY_ID_SHORT, 
-																ObligationAdviceContainer.PROPERTY_EFFECT,
-																ObligationAdviceContainer.PROPERTY_CATEGORY_SHORT,
-																ObligationAdviceContainer.PROPERTY_DATATYPE_SHORT});
-		this.tableExpressions.setColumnHeaders(new String[] {"Name", "ID or Value", (this.root instanceof ObligationExpressionsType ? "Effect" : "Applies"), "Category", "Data Type"});
-		//this.tableExpressions.setColumnExpandRatio(ObligationAdviceContainer.PROPERTY_NAME, 1.0f);
-		//this.tableExpressions.setColumnExpandRatio(ObligationAdviceContainer.PROPERTY_ID_SHORT, 1.0f);
-		//this.tableExpressions.setColumnWi
-		this.tableExpressions.setSelectable(true);
-		//
-		// Expand it out
-		//
-		for (Object item : this.tableExpressions.getItemIds()) {
-			this.tableExpressions.setCollapsed(item, false);
-			for (Object child : this.tableExpressions.getChildren(item)) {
-				this.tableExpressions.setCollapsed(child, false);
-			}
-		}
-		this.tableExpressions.setPageLength(this.container.size() + 3);
-		//
-		// Respond to events
-		//
-		this.tableExpressions.addActionHandler(new Handler() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Action[] getActions(Object target, Object sender) {
-				if (target == null) {
-					if (self.root instanceof ObligationExpressionsType) {
-						return new Action[] {ADD_OBLIGATION};
-					}
-					if (self.root instanceof AdviceExpressionsType) {
-						return new Action[] {ADD_ADVICE};
-					}
-				}
-				if (target instanceof ObligationExpressionType) {
-					return new Action[] {EDIT_OBLIGATION, REMOVE_OBLIGATION, ADD_EXPRESSION};
-				}
-				if (target instanceof AdviceExpressionType) {
-					return new Action[] {EDIT_ADVICE, REMOVE_ADVICE, ADD_EXPRESSION};
-				}
-				if (target instanceof AttributeAssignmentExpressionType) {
-					return new Action[] {EDIT_EXPRESSION, REMOVE_EXPRESSION, ADD_ATTRIBUTE};
-				}
-				if (target instanceof AttributeValueType ||
-					target instanceof AttributeDesignatorType ||
-					target instanceof AttributeSelectorType ||
-					target instanceof ApplyType) {
-					return new Action[] {EDIT_ATTRIBUTE, REMOVE_ATTRIBUTE};
-				}
-				return null;
-			}
-
-			@Override
-			public void handleAction(Action action, Object sender, Object target) {
-				if (action == ADD_OBLIGATION) {
-					self.editObligation(null);
-					return;
-				}
-				if (action == EDIT_OBLIGATION) {
-					assert target instanceof ObligationExpressionType;
-					self.editObligation((ObligationExpressionType) target);
-					return;
-				}
-				if (action == REMOVE_OBLIGATION) {
-					assert target instanceof ObligationExpressionType;
-					if (self.container.removeItem(target) == false) {
-						logger.error("Failed to remove obligation");
-						assert false;
-					}
-					return;
-				}
-				if (action == ADD_ADVICE) {
-					self.editAdvice(null);
-					return;
-				}
-				if (action == EDIT_ADVICE) {
-					assert target instanceof AdviceExpressionType;
-					self.editAdvice((AdviceExpressionType) target);
-					return;
-				}
-				if (action == REMOVE_ADVICE) {
-					assert target instanceof AdviceExpressionType;
-					if (self.container.removeItem(target) == false) {
-						logger.error("Failed to remove advice");
-						assert false;
-					}
-					return;
-				}
-				if (action == ADD_EXPRESSION) {
-					assert target instanceof ObligationExpressionType || target instanceof AdviceExpressionType;
-					self.editExpression(null, target);
-					return;
-				}
-				if (action == EDIT_EXPRESSION) {
-					assert target instanceof AttributeAssignmentExpressionType;
-					self.editExpression((AttributeAssignmentExpressionType) target, self.container.getParent(target));
-					return;
-				}
-				if (action == REMOVE_EXPRESSION) {
-					assert target instanceof AttributeAssignmentExpressionType;
-					if (self.container.removeItem(target) == false) {
-						logger.error("Failed to remove expression");
-						assert false;
-					}
-					return;
-				}
-				if (action == ADD_ATTRIBUTE) {
-					assert target instanceof AttributeAssignmentExpressionType;
-					self.editAttribute(null, (AttributeAssignmentExpressionType) target);
-					return;
-				}
-				if (action == EDIT_ATTRIBUTE) {
-					assert target instanceof AttributeValueType ||
-							target instanceof AttributeDesignatorType ||
-							target instanceof AttributeSelectorType ||
-							target instanceof ApplyType;
-					self.editAttribute(target, (AttributeAssignmentExpressionType) self.container.getParent(target));
-					return;
-				}
-				if (action == REMOVE_ATTRIBUTE) {
-					assert target instanceof AttributeValueType ||
-							target instanceof AttributeDesignatorType ||
-							target instanceof AttributeSelectorType ||
-							target instanceof ApplyType;
-					if (self.container.removeItem(target) == false) {
-						logger.error("Failed to remove attribute");
-						assert false;
-					}
-					return;
-				}
-			}
-		});
-		//
-		// Respond to selections
-		//
-		this.tableExpressions.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.setupButtons();
-			}
-		});
-		this.tableExpressions.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick()) {
-					if (event.getSource() instanceof AdviceExpressionType) {
-						self.editAdvice((AdviceExpressionType) event.getSource());
-					} else if (event.getSource() instanceof ObligationExpressionType) {
-						self.editObligation((ObligationExpressionType) event.getSource());
-					} else if (event.getSource() instanceof AttributeAssignmentExpressionType) {
-						self.editExpression((AttributeAssignmentExpressionType) event.getSource(), self.container.getParent(event.getSource()));
-					} else {
-						self.editAttribute(event.getSource(), (AttributeAssignmentExpressionType) self.container.getParent(event.getSource())); 
-					}
-				}
-			}			
-		});
-		//
-		// Implement a description generator, to display the full XACML ID.
-		//
-		this.tableExpressions.setItemDescriptionGenerator(new ItemDescriptionGenerator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public String generateDescription(Component source, Object itemId, Object propertyId) {
-				if (propertyId == ObligationAdviceContainer.PROPERTY_ID_SHORT) {
-					if (itemId instanceof AdviceExpressionType) {
-						return ((AdviceExpressionType) itemId).getAdviceId();
-					}
-					if (itemId instanceof ObligationExpressionType) {
-						return ((ObligationExpressionType) itemId).getObligationId();
-					}
-					if (itemId instanceof AttributeAssignmentExpressionType) {
-						return ((AttributeAssignmentExpressionType) itemId).getAttributeId();
-					}
-					if (itemId instanceof AttributeDesignatorType) {
-						return ((AttributeDesignatorType) itemId).getAttributeId();
-					}
-					if (itemId instanceof AttributeSelectorType) {
-						return ((AttributeSelectorType) itemId).getContextSelectorId();
-					}
-					if (itemId instanceof ApplyType) {
-						return ((ApplyType) itemId).getDescription();
-					}
-				}
-				if (propertyId == ObligationAdviceContainer.PROPERTY_CATEGORY_SHORT) {
-					if (itemId instanceof AttributeAssignmentExpressionType) {
-						return ((AttributeAssignmentExpressionType) itemId).getCategory();
-					}
-					if (itemId instanceof AttributeDesignatorType) {
-						return ((AttributeDesignatorType) itemId).getCategory();
-					}
-					if (itemId instanceof AttributeSelectorType) {
-						return ((AttributeSelectorType) itemId).getCategory();
-					}
-					if (itemId instanceof ApplyType) {
-						return null;
-					}
-				}
-				if (propertyId == ObligationAdviceContainer.PROPERTY_DATATYPE_SHORT) {
-					if (itemId instanceof AttributeValueType) {
-						return ((AttributeValueType) itemId).getDataType();
-					}
-					if (itemId instanceof AttributeDesignatorType) {
-						return ((AttributeDesignatorType) itemId).getDataType();
-					}
-					if (itemId instanceof AttributeSelectorType) {
-						return ((AttributeSelectorType) itemId).getDataType();
-					}
-					/*
-					if (itemId instanceof ApplyType) {
-						//
-						// TODO - get the datatype for the function
-						//
-					}
-					*/
-				}
-				return null;
-			}
-		});
-	}
-	
-	protected void initializeButtons() {
-		this.buttonAdd.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				if (self.tableExpressions.getValue() == null) {
-					//
-					// Add new root advice or obligation
-					//
-					if (self.root instanceof AdviceExpressionsType) {
-						self.editAdvice(null);
-					} else {
-						self.editObligation(null);
-					}
-				} else {
-					//
-					// Add new assignment expression
-					//
-					self.editExpression(null, self.tableExpressions.getValue());
-				}
-			}			
-		});
-		
-		this.buttonRemove.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				Object object = self.tableExpressions.getValue();
-				if (object != null) {
-					if (object instanceof AttributeValueType ||
-						object instanceof AttributeDesignatorType ||
-						object instanceof AttributeSelectorType ||
-						object instanceof ApplyType) {
-						if (self.container.removeItem(self.container.getParent(object)) == false) {
-							logger.error("Failed to remove attribute value/des/sel/apply");
-							assert false;
-						}
-					} else {
-						if (self.container.removeItem(object) == false) {
-							logger.error("Failed to remove object");
-							assert false;
-						}
-					}
-				} else {
-					logger.error("This code should never get executed if the button was properly disabled.");
-				}
-			}			
-		});
-		
-		this.buttonClear.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				Object object = self.tableExpressions.getValue();
-				if (object == null) {
-					if (self.container.removeAllItems() == false) {
-						logger.error("Failed to remove all items");
-						assert false;
-					}
-				} else {
-					if (self.container.removeAllAssignments() == false) {
-						logger.error("Failed to remove all assignments");
-						assert false;
-					}
-				}
-			}			
-		});
-		
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				//
-				// Mark ourselves as saved
-				//
-				self.isSaved = true;
-				//
-				// Close the window
-				//
-				self.close();
-			}			
-		});
-	}
-	
-	protected void setupButtons() {
-		Object target = this.tableExpressions.getValue();
-		if (target == null) {
-			if (this.root instanceof AdviceExpressionsType) {
-				this.buttonAdd.setVisible(true);
-				this.buttonAdd.setCaption("Add Advice");
-				this.buttonRemove.setCaption("Remove Advice");
-				this.buttonClear.setCaption("Clear All Advice");
-				this.buttonClear.setVisible(true);
-			} else {
-				this.buttonAdd.setVisible(true);
-				this.buttonAdd.setCaption("Add Obligation");
-				this.buttonRemove.setCaption("Remove Obligation");
-				this.buttonClear.setCaption("Clear All Obligations");
-				this.buttonClear.setVisible(true);
-			}
-			this.buttonRemove.setEnabled(false);
-		} else {
-			if (target instanceof AdviceExpressionType ||
-				target instanceof ObligationExpressionType) {
-				this.buttonAdd.setVisible(true);
-				this.buttonAdd.setCaption("Add Assignment");
-				if (target instanceof AdviceExpressionType) {
-					this.buttonRemove.setCaption("Remove Advice");
-				} else {
-					this.buttonRemove.setCaption("Remove Obligation");
-				}
-				this.buttonClear.setCaption("Clear All Assignments");
-				this.buttonClear.setVisible(true);
-			} else {
-				this.buttonAdd.setVisible(false);
-				this.buttonRemove.setCaption("Remove Assignment");
-				this.buttonClear.setVisible(false);
-			}
-			this.buttonRemove.setEnabled(true);
-		}
-		if (this.tableExpressions.size() == 0) {
-			this.buttonClear.setEnabled(false);
-		} else {
-			this.buttonClear.setEnabled(true);
-		}
-	}
-	
-	protected void editAttribute(Object target, final AttributeAssignmentExpressionType parent) {
-		//
-		// Make a copy
-		//
-		final AttributeAssignmentExpressionType copyAssignment = (parent == null ? new AttributeAssignmentExpressionType() : XACMLObjectCopy.copy(parent));
-		//
-		// Prompt user for attribute right away
-		//
-		final ExpressionBuilderComponent builder = new ExpressionBuilderComponent(copyAssignment, copyAssignment.getExpression() != null ? copyAssignment.getExpression().getValue() : null, null, self.variables);
-		builder.setCaption("Define Assignment Attribute");
-		builder.setModal(true);
-		builder.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user save?
-				//
-				if (builder.isSaved() == false) {
-					return;
-				}
-				//
-				// Yes - update it
-				//
-				parent.setExpression(copyAssignment.getExpression());
-				if (parent.getExpression() != null) {
-					self.container.removeItem(parent.getExpression().getValue());
-				}
-				self.container.addItem(copyAssignment.getExpression().getValue(), parent);
-				//
-				// Set the table size
-				//
-				self.tableExpressions.setPageLength(self.container.size() + 1);
-			}
-		});
-		builder.center();
-		UI.getCurrent().addWindow(builder);
-	}
-
-	protected void editExpression(final AttributeAssignmentExpressionType assignment, final Object parent) {
-		//
-		// Copy
-		//
-		final AttributeAssignmentExpressionType copyAssignment = (assignment == null ? new AttributeAssignmentExpressionType() : XACMLObjectCopy.copy(assignment));
-		//
-		// Create the window
-		//
-		final AttributeAssignmentExpressionEditorWindow window = new AttributeAssignmentExpressionEditorWindow(copyAssignment);
-		window.setCaption(assignment == null ? "Create Attribute Assignment" : "Edit Attribute Assignment");
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user click save?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// Was this a new assignment?
-				//
-				if (assignment == null) {
-					//
-					// Prompt user for attribute right away
-					//
-					final ExpressionBuilderComponent builder = new ExpressionBuilderComponent(copyAssignment, null, null, self.variables);
-					builder.setCaption("Define Assignment Attribute");
-					builder.setModal(true);
-					builder.addCloseListener(new CloseListener() {
-						private static final long serialVersionUID = 1L;
-
-						@Override
-						public void windowClose(CloseEvent e) {
-							//
-							// Did the user save?
-							//
-							if (builder.isSaved() == false) {
-								return;
-							}
-							//
-							// Yes - add it to the container
-							//
-							if (self.container.addItem(copyAssignment, parent) == null) {
-								logger.error("Failed to add copy assignment");
-								assert false;
-							}
-							//
-							// Set the table size
-							//
-							self.tableExpressions.setPageLength(self.container.size() + 1);
-						}
-					});
-					builder.center();
-					UI.getCurrent().addWindow(builder);
-				} else {
-					//
-					// No - copy back the data
-					//
-					assignment.setAttributeId(copyAssignment.getAttributeId());
-					assignment.setIssuer(assignment.getIssuer());
-					assignment.setCategory(copyAssignment.getCategory());
-					//
-					// Update the container
-					//
-					self.container.updateItem(assignment);
-				}
-			}
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-
-	protected void editAdvice(final AdviceExpressionType advice) {
-		//
-		// Copy the advice
-		//
-		final AdviceExpressionType copyAdvice = (advice == null ? new AdviceExpressionType() : XACMLObjectCopy.copy(advice));
-		//
-		// Setup the window
-		//
-		final AdviceEditorWindow window = new AdviceEditorWindow(copyAdvice);
-		window.setCaption("Edit Advice");
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Is it saved?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// Was this a new object?
-				//
-				if (advice == null) {
-					//
-					// New - add it to the container
-					//
-					if (self.container.addItem(copyAdvice) == null) {
-						logger.error("failed to add advice");
-						assert false;
-					}
-					//
-					// Set the table size
-					//
-					self.tableExpressions.setPageLength(self.container.size() + 1);
-				} else {
-					//
-					// No - copy it back
-					//
-					advice.setAdviceId(copyAdvice.getAdviceId());
-					advice.setAppliesTo(copyAdvice.getAppliesTo());
-					//
-					// Update
-					//
-					self.container.updateItem(advice);
-				}
-			}
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-
-	protected void editObligation(final ObligationExpressionType obligation) {
-		//
-		// Copy the advice
-		//
-		final ObligationExpressionType copyObligation = (obligation == null ? new ObligationExpressionType() : XACMLObjectCopy.copy(obligation));
-		//
-		// Setup the window
-		//
-		final ObligationEditorWindow window = new ObligationEditorWindow(copyObligation);
-		window.setCaption("Edit Obligation");
-		window.setModal(true);
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Is it saved?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// Was this a new object?
-				//
-				if (obligation == null) {
-					//
-					// New - add it to the container
-					//
-					if (self.container.addItem(copyObligation) == null) {
-						logger.error("Failed to add obligation");
-						assert false;
-					}
-					//
-					// Set the table size
-					//
-					self.tableExpressions.setPageLength(self.container.size() + 1);
-				} else {
-					//
-					// No - copy it back
-					//
-					obligation.setObligationId(copyObligation.getObligationId());
-					obligation.setFulfillOn(copyObligation.getFulfillOn());
-					//
-					// Update
-					//
-					self.container.updateItem(obligation);
-				}
-			}
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public Object getRootObject() {
-		return this.root;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("100%");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// horizontalLayout_1
-		horizontalLayout_1 = buildHorizontalLayout_1();
-		mainLayout.addComponent(horizontalLayout_1);
-		
-		// tableExpressions
-		tableExpressions = new TreeTable();
-		tableExpressions.setCaption("Expressions");
-		tableExpressions.setImmediate(false);
-		tableExpressions.setWidth("100%");
-		tableExpressions.setHeight("-1px");
-		mainLayout.addComponent(tableExpressions);
-		mainLayout.setExpandRatio(tableExpressions, 1.0f);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(false);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-	@AutoGenerated
-	private HorizontalLayout buildHorizontalLayout_1() {
-		// common part: create layout
-		horizontalLayout_1 = new HorizontalLayout();
-		horizontalLayout_1.setImmediate(false);
-		horizontalLayout_1.setWidth("-1px");
-		horizontalLayout_1.setHeight("-1px");
-		horizontalLayout_1.setMargin(false);
-		horizontalLayout_1.setSpacing(true);
-		
-		// buttonAdd
-		buttonAdd = new Button();
-		buttonAdd.setCaption("Add Expression");
-		buttonAdd.setImmediate(false);
-		buttonAdd.setWidth("-1px");
-		buttonAdd.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonAdd);
-		
-		// buttonRemove
-		buttonRemove = new Button();
-		buttonRemove.setCaption("Remove Expression");
-		buttonRemove.setImmediate(false);
-		buttonRemove.setWidth("-1px");
-		buttonRemove.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonRemove);
-		
-		// buttonClear
-		buttonClear = new Button();
-		buttonClear.setCaption("Clear Expressions");
-		buttonClear.setImmediate(false);
-		buttonClear.setWidth("-1px");
-		buttonClear.setHeight("-1px");
-		horizontalLayout_1.addComponent(buttonClear);
-		
-		return horizontalLayout_1;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ObligationEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ObligationEditorWindow.java
deleted file mode 100644
index dac4eda..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/ObligationEditorWindow.java
+++ /dev/null
@@ -1,208 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.ObligationExpressionType;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.OptionGroup;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class ObligationEditorWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private OptionGroup optionGroupFullfillOn;
-	@AutoGenerated
-	private TextField textFieldObligationID;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final ObligationEditorWindow self = this;
-	private final ObligationExpressionType obligation;
-	private boolean isSaved = false;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public ObligationEditorWindow(ObligationExpressionType obligation) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save
-		//
-		this.obligation = obligation;
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize GUI
-		//
-		this.initialize();
-		this.initializeButton();
-		//
-		// Focus
-		//
-		this.textFieldObligationID.focus();
-	}
-	
-	protected void initialize() {
-		//
-		// The text field for the advice ID
-		//
-		this.textFieldObligationID.setNullRepresentation("");
-		if (this.obligation.getObligationId() == null) {
-			this.textFieldObligationID.setValue(XacmlAdminUI.getDomain());
-		} else {
-			this.textFieldObligationID.setValue(obligation.getObligationId());
-		}
-		this.textFieldObligationID.setRequiredError("You must have an ID for the obligation");
-		//
-		// The option
-		//
-		this.optionGroupFullfillOn.setRequiredError("You must select Permit or Deny for the obligation");
-		this.optionGroupFullfillOn.addItem(EffectType.PERMIT);
-		this.optionGroupFullfillOn.addItem(EffectType.DENY);
-		if (this.obligation.getFulfillOn() == null) {
-			this.optionGroupFullfillOn.select(EffectType.PERMIT);
-		} else {
-			if (this.obligation.getFulfillOn().equals(EffectType.PERMIT)) {
-				this.optionGroupFullfillOn.select(EffectType.PERMIT);
-			} else {
-				this.optionGroupFullfillOn.select(EffectType.DENY);
-			}
-		}
-	}
-	
-	protected void initializeButton() {
-		this.buttonSave.setImmediate(true);
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Commit
-					//
-					self.textFieldObligationID.commit();
-					self.optionGroupFullfillOn.commit();
-					//
-					// all good, save everything
-					//
-					self.obligation.setObligationId(self.textFieldObligationID.getValue());
-					self.obligation.setFulfillOn((EffectType) self.optionGroupFullfillOn.getValue());
-					//
-					// Set ourselves as saved
-					//
-					self.isSaved = true;
-					//
-					// Close the window
-					//
-					self.close();
-				} catch (SourceException | InvalidValueException e) { //NOPMD
-					//
-					// Vaadin displays the error
-					//
-				}
-			}			
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public ObligationExpressionType getAdvice() {
-		return this.obligation;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldObligationID
-		textFieldObligationID = new TextField();
-		textFieldObligationID.setCaption("Obligation ID");
-		textFieldObligationID.setImmediate(false);
-		textFieldObligationID.setWidth("-1px");
-		textFieldObligationID.setHeight("-1px");
-		textFieldObligationID.setInvalidAllowed(false);
-		textFieldObligationID.setRequired(true);
-		textFieldObligationID.setInputPrompt("Eg. urn:com:foo:obligation:sample");
-		mainLayout.addComponent(textFieldObligationID);
-		
-		// optionGroupFullfillOn
-		optionGroupFullfillOn = new OptionGroup();
-		optionGroupFullfillOn.setCaption("Fulfill On");
-		optionGroupFullfillOn.setImmediate(false);
-		optionGroupFullfillOn.setWidth("-1px");
-		optionGroupFullfillOn.setHeight("-1px");
-		optionGroupFullfillOn.setInvalidAllowed(false);
-		optionGroupFullfillOn.setRequired(true);
-		mainLayout.addComponent(optionGroupFullfillOn);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PDPStatusWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PDPStatusWindow.java
deleted file mode 100644
index de279a3..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PDPStatusWindow.java
+++ /dev/null
@@ -1,264 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.api.pap.PDPPIPConfig;
-import org.apache.openaz.xacml.api.pap.PDPPolicy;
-import org.apache.openaz.xacml.api.pap.PDPStatus;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class PDPStatusWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-
-
-	@AutoGenerated
-	private Button buttonOK;
-
-
-	@AutoGenerated
-	private Table table;
-
-
-	private PDPStatus status;
-	
-	
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(PDPStatusWindow.class);
-	private final PDPStatusWindow self = this;
-
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PDPStatusWindow(PDPStatus status) {
-		buildMainLayout();
-		setContent(mainLayout);
-		//setCompositionRoot(mainLayout);
-		//
-		// Save
-		//
-		this.status = status;
-		//
-		// Setup shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		this.buttonOK.setClickShortcut(KeyCode.ENTER);
-		//
-		// Initialize
-		//
-		try {
-			this.initialize();
-			this.initializeButton();
-		} catch (Exception e) {
-			logger.error("Initialize exception: " + e);
-		}
-		//
-		//  Focus
-		//
-		this.buttonOK.focus();
-	}
-	
-	protected void initialize() {
-		//
-		// Setup the table - real simple
-		//
-		this.table.addContainerProperty("Property", Label.class, null);
-		this.table.addContainerProperty("Value", TextArea.class, null);
-		//
-		// Set the status
-		//
-		StringBuilder builder;
-		int rows;
-		Integer id = 1;
-		this.table.addItem(new Object[] {new Label("Status"), this.createTextArea(this.status.getStatus().toString(), 1)}, id++);
-		//
-		// Setup Errors
-		//
-		builder = new StringBuilder();
-		rows = 0;
-		for (String error : this.status.getLoadErrors()) {
-			builder.append(error);
-			builder.append(System.lineSeparator());
-			rows++;
-		}
-		if (rows == 0) {
-			rows = 1;
-		}
-		this.table.addItem(new Object[] {new Label("Errors"), this.createTextArea(builder.toString(), rows)}, id++);
-		//
-		// Setup Errors
-		//
-		builder = new StringBuilder();
-		rows = 0;
-		for (String error : this.status.getLoadWarnings()) {
-			builder.append(error);
-			builder.append(System.lineSeparator());
-			rows++;
-		}
-		if (rows == 0) {
-			rows = 1;
-		}
-		this.table.addItem(new Object[] {new Label("Warnings"), this.createTextArea(builder.toString(), rows)}, id++);
-		//
-		// Setup the loaded policy table
-		//
-		builder = new StringBuilder();
-		rows = 0;
-		for (PDPPolicy policy : this.status.getLoadedPolicies()) {
-			builder.append(policy.getName());
-			builder.append(System.lineSeparator());
-			rows++;
-		}
-		if (rows == 0) {
-			rows = 1;
-		}
-		this.table.addItem(new Object[] {new Label("Policies Loaded"), this.createTextArea(builder.toString(), rows)}, id++);
-		//
-		// Setup the Failed policy table
-		//
-		builder = new StringBuilder();
-		rows = 0;
-		for (PDPPolicy policy : this.status.getFailedPolicies()) {
-			builder.append(policy.getName());
-			builder.append(System.lineSeparator());
-			rows++;
-		}
-		if (rows == 0) {
-			rows = 1;
-		}
-		this.table.addItem(new Object[] {new Label("Policies Failed To Load"), this.createTextArea(builder.toString(), rows)}, id++);
-		//
-		// Setup the Loaded PIP configuration table
-		//
-		builder = new StringBuilder();
-		rows = 0;
-		for (PDPPIPConfig config : this.status.getLoadedPipConfigs()) {
-			builder.append(config.getName());
-			builder.append(System.lineSeparator());
-			rows++;
-		}
-		if (rows == 0) {
-			rows = 1;
-		}
-		this.table.addItem(new Object[] {new Label("Loaded PIP Configurations"), this.createTextArea(builder.toString(), rows)}, id++);
-		//
-		// Setup the Failed PIP configuration table
-		//
-		builder = new StringBuilder();
-		rows = 0;
-		for (PDPPIPConfig config : this.status.getFailedPipConfigs()) {
-			builder.append(config.getName());
-			builder.append(System.lineSeparator());
-			rows++;
-		}
-		if (rows == 0) {
-			rows = 1;
-		}
-		this.table.addItem(new Object[] {new Label("Failed PIP Configurations"), this.createTextArea(builder.toString(), rows)}, id++);
-		//
-		// Set the length
-		//
-		table.setPageLength(id - 1);
-		table.setReadOnly(true);
-		table.setSizeFull();
-	}
-	
-	protected TextArea	createTextArea(String value, int lines) {
-		TextArea area = new TextArea();
-		area.setValue(value);
-		area.setNullRepresentation("");
-		area.setSizeFull();
-		area.setReadOnly(true);
-		area.setRows(lines);
-		return area;
-	}
-	
-	protected void initializeButton() {
-		this.buttonOK.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				self.close();
-			}
-		});
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("100.0%");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// table
-		table = new Table();
-		table.setCaption("Status");
-		table.setImmediate(false);
-		table.setWidth("100.0%");
-		table.setHeight("-1px");
-		mainLayout.addComponent(table);
-		
-		// buttonOK
-		buttonOK = new Button();
-		buttonOK.setCaption("Ok");
-		buttonOK.setImmediate(true);
-		buttonOK.setWidth("-1px");
-		buttonOK.setHeight("-1px");
-		mainLayout.addComponent(buttonOK);
-		mainLayout.setComponentAlignment(buttonOK, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-	
-	
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPConfigurationEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPConfigurationEditorWindow.java
deleted file mode 100644
index 08f9306..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPConfigurationEditorWindow.java
+++ /dev/null
@@ -1,364 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import java.util.Locale;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.PIPConfiguration;
-import org.apache.openaz.xacml.admin.jpa.PIPType;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.admin.view.fields.ConfigParamField;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.addon.jpacontainer.fieldfactory.SingleSelectConverter;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.fieldgroup.FieldGroup;
-import com.vaadin.data.fieldgroup.FieldGroup.CommitException;
-import com.vaadin.data.fieldgroup.PropertyId;
-import com.vaadin.data.util.converter.Converter;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.GridLayout;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.Window;
-
-public class PIPConfigurationEditorWindow extends Window {
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(PIPConfigurationEditorWindow.class);
-	private final PIPConfigurationEditorWindow self = this;
-	private final EntityItem<PIPConfiguration> entity;
-	private FieldGroup fieldGroup;
-	private boolean isSaved = false;
-	
-	private GridLayout grid = new GridLayout(2,6);
-	
-	@PropertyId("piptype")
-	ComboBox comboType = new ComboBox("Type");
-	
-	@PropertyId("name")
-	TextField fieldName = new TextField("Name");
-	
-	@PropertyId("description")
-	TextArea areaDescription = new TextArea("Description");
-
-	@PropertyId("issuer")
-	TextField fieldIssuer = new TextField("Issuer");
-	
-	@PropertyId("requiresResolvers")
-	CheckBox requiresResolvers = new CheckBox("Requires Resolvers");
-	
-	@PropertyId("pipconfigParams")
-	ConfigParamField paramField = null;
-	
-	Button	buttonSave = new Button("Save");
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PIPConfigurationEditorWindow(EntityItem<PIPConfiguration> entity) {
-		//
-		// Our base component
-		//
-		this.setContent(this.grid);
-		this.grid.setMargin(true);
-		this.grid.setSpacing(true);
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Save
-		//
-		this.entity = entity;
-		//
-		// Check if a brand new object and set the default
-		// pip type.
-		//
-		if (this.entity.getEntity().getPiptype() == null) {
-			this.entity.getEntity().setPiptype(JPAUtils.getPIPType(PIPType.TYPE_SQL));
-		}
-
-		//
-		// Initialize GUI components
-		//
-		this.initialize();
-		//
-		// Add components
-		//
-		this.grid.addComponent(this.comboType, 0, 0);
-		this.grid.addComponent(this.fieldName, 0, 1);
-		this.grid.addComponent(this.fieldIssuer, 0, 2);
-		this.grid.addComponent(this.areaDescription, 0, 3);
-		this.grid.addComponent(this.requiresResolvers, 0, 4);
-		this.grid.addComponent(this.paramField, 1, 0, 1, 4);
-		this.grid.addComponent(this.buttonSave, 0, 5, 1, 5);
-		//
-		// Bind and initialize
-		//
-		this.initializeFields();
-		//
-		// Post initialize
-		//
-		this.initializeButtons();
-		//
-		// Set focus
-		//
-		this.fieldName.focus();
-		//
-		// Initially call this to see if the entity is already
-		// saveable
-		//
-		this.formChanged();
-	}
-	
-	protected void initialize() {
-		//
-		//
-		//
-		this.fieldName.setImmediate(true);
-		this.fieldName.setNullRepresentation("");
-		this.fieldName.setRequired(true);
-		this.fieldName.setRequiredError("Enter a name for the configuration");
-		this.fieldName.setInputPrompt("Eg. \"Company LDAP Server\" or \"MySQL Customer DB\"");
-
-		this.fieldIssuer.setNullRepresentation("");
-		this.fieldIssuer.setRequired(false);
-		this.fieldIssuer.setInputPrompt("Eg. urn:com:sample:hr");
-		
-		this.areaDescription.setNullRepresentation("");
-		this.areaDescription.setRequired(false);
-		this.areaDescription.setInputPrompt("Optionally write a description for this configuration.");
-		this.areaDescription.setRows(3);
-		this.areaDescription.setWidth("100%");
-		//
-		//
-		//
-		this.requiresResolvers.setConverter(new Converter<Boolean, Object>() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public Object convertToModel(Boolean value,
-					Class<? extends Object> targetType, Locale locale)
-					throws Converter.ConversionException {
-				if (targetType.isAssignableFrom(java.lang.Character.class)) {
-					if (value) {
-						return '1';
-					} else {
-						return '0';
-					}
-				}
-				return null;
-			}
-
-			@Override
-			public Boolean convertToPresentation(Object value,
-					Class<? extends Boolean> targetType, Locale locale)
-					throws Converter.ConversionException {
-				if (value instanceof Character) {
-					return ((Character) value) == '1';
-				}
-				return null;
-			}
-
-			@Override
-			public Class<Object> getModelType() {
-				return Object.class;
-			}
-
-			@Override
-			public Class<Boolean> getPresentationType() {
-				return Boolean.class;
-			}
-		});
-		//
-		//
-		//
-		this.comboType.setContainerDataSource(((XacmlAdminUI)UI.getCurrent()).getPIPTypes());
-		this.comboType.setImmediate(true);
-		this.comboType.setConverter(new SingleSelectConverter<Object>(this.comboType));
-		this.comboType.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.comboType.setItemCaptionPropertyId("type");
-		this.comboType.setNullSelectionAllowed(false);
-		this.comboType.setRequired(true);
-		this.comboType.setRequiredError("You need to identify what type of configuration this is.");
-		//
-		//
-		//
-		this.paramField = new ConfigParamField(this.entity);
-		this.paramField.setValidationVisible(false);
-	}
-	
-	protected void initializeFields() {
-		//
-		// Now create our field group and bind our fields.
-		// This will populate the components with the
-		// current value if we are editing an entity.
-		//
-		this.fieldGroup = new FieldGroup(this.entity);
-		this.fieldGroup.bindMemberFields(this);
-		//
-		//
-		//
-		this.fieldName.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				self.formChanged();
-			}
-			
-		});
-		this.fieldName.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.formChanged();
-			}			
-		});
-		//
-		//
-		//
-		this.paramField.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.formChanged();
-			}			
-		});
-		//
-		// Only custom PIP configurations should be allowed to
-		// check the "requires resolvers" box. We know that the
-		// SQL/LDAP/HyperSQL/CSV resolver already do require resolvers.
-		//
-		if (this.entity.getEntity().getPiptype().isCustom() == false) {
-			this.requiresResolvers.setEnabled(false);
-		}
-		//
-		// Finish GUI intialization
-		//
-		if (this.entity.isPersistent()) {
-			//
-			// The user is editing something, don't let them change
-			// the type
-			//
-			this.comboType.setReadOnly(true);
-		}
-		this.comboType.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				//
-				// Get the new value
-				//
-				Object id = self.comboType.getValue();
-				EntityItem<PIPType> type = null;
-				if (id != null) {
-					type = ((XacmlAdminUI) UI.getCurrent()).getPIPTypes().getItem(id);
-				}
-				//
-				// Have our custom field reset itself
-				//
-				self.paramField.resetContent(type != null ? type.getEntity() : null);
-				//
-				// Do we need to display the requires resolver check box?
-				//
-				if (type != null && type.getEntity().isCustom()) {
-					self.requiresResolvers.setEnabled(true);
-					self.requiresResolvers.setRequired(true);
-					self.requiresResolvers.setValue(self.entity.getEntity().requiresResolvers());
-				} else {
-					self.requiresResolvers.setEnabled(false);
-					self.requiresResolvers.setRequired(false);
-				}
-				//
-				// Re-center the form
-				//
-				self.center();
-				//
-				// Check if we can enable the save button
-				//
-				self.formChanged();
-			}			
-		});
-	}
-		
-	protected void formChanged() {
-		if (this.fieldGroup.isValid() || this.entity.isModified()) {
-			this.buttonSave.setEnabled(true);
-		} else {
-			this.buttonSave.setEnabled(false);
-		}
-	}
-	
-	protected void initializeButtons() {
-		this.grid.setComponentAlignment(this.buttonSave, Alignment.BOTTOM_CENTER);
-		this.buttonSave.setImmediate(true);
-		this.buttonSave.setEnabled(false);
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Commit changes
-					//
-					self.fieldGroup.commit();
-					//
-					// Save
-					//
-					self.isSaved = true;
-					//
-					// We can close
-					//
-					self.close();
-				} catch (CommitException e) {
-					logger.warn("Couldn't commit, the save button should NOT be enabled.");
-				}
-			}			
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPCustomResolverEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPCustomResolverEditorWindow.java
deleted file mode 100644
index e024d0e..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPCustomResolverEditorWindow.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.VerticalLayout;
-
-public class PIPCustomResolverEditorWindow extends CustomComponent {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PIPCustomResolverEditorWindow() {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(false);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPImportWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPImportWindow.java
deleted file mode 100644
index 650ed09..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPImportWindow.java
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.ui.Upload;
-import com.vaadin.ui.Upload.Receiver;
-import com.vaadin.ui.Upload.SucceededEvent;
-import com.vaadin.ui.Upload.SucceededListener;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class PIPImportWindow extends Window implements Receiver, SucceededListener  {
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-	private static final Log logger	= LogFactory.getLog(PolicyUploadWindow.class);
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-
-	@AutoGenerated
-	private Upload upload;
-
-	private static final long serialVersionUID = 1L;
-	private String filename = null;
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PIPImportWindow() {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Set ourselves up
-		//
-		this.upload.addSucceededListener(this);
-		this.upload.setReceiver(this);
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// upload_1
-		upload = new Upload();
-		upload.setImmediate(false);
-		upload.setWidth("-1px");
-		upload.setHeight("-1px");
-		mainLayout.addComponent(upload);
-		
-		return mainLayout;
-	}
-
-	@Override
-	public void uploadSucceeded(SucceededEvent event) {
-		this.filename = event.getFilename();
-		this.close();
-	}
-
-	@Override
-	public OutputStream receiveUpload(String filename, String mimeType) {
-		//
-		// Try to create the output stream
-		//
-		try {
-			return new FileOutputStream(filename);
-		} catch (FileNotFoundException e) {
-			logger.error("Failed to create uploaded file", e);
-		}
-		return null;
-	}
-	
-	public String	getUploadedFile() {
-		return this.filename;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPParamEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPParamEditorWindow.java
deleted file mode 100644
index 70942c2..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPParamEditorWindow.java
+++ /dev/null
@@ -1,261 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import org.apache.openaz.xacml.admin.jpa.PIPConfigParam;
-import org.apache.openaz.xacml.admin.jpa.PIPResolverParam;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class PIPParamEditorWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private TextField textFieldValue;
-	@AutoGenerated
-	private TextField textFieldName;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final PIPParamEditorWindow self = this;
-	private final Object config;
-	private boolean isSaved = false;
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PIPParamEditorWindow(Object config) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save parameters
-		//
-		this.config = config;
-		//
-		// Initialize
-		//
-		this.initialize();
-		//
-		// close shortcut
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// focus
-		//
-		this.textFieldName.focus();
-	}
-	
-	protected void initialize() {
-		//
-		// GUI properties
-		//
-		this.textFieldName.setImmediate(true);
-		this.textFieldName.setNullRepresentation("");
-		this.textFieldValue.setImmediate(true);
-		this.textFieldValue.setNullRepresentation("");
-		//
-		// Now setup based on the object
-		//
-		if (this.config instanceof PIPConfigParam) {
-			this.initializePIPConfiguration();
-		} else if (this.config instanceof PIPResolverParam) {
-			this.initializePIPResolver();
-		} else {
-			throw new IllegalArgumentException("Unknown object");
-		}
-		this.initializeButtons();
-		this.setupButtons();
-	}
-	
-	protected void initializePIPConfiguration() {
-		final PIPConfigParam param = (PIPConfigParam) this.config;
-		//
-		// setup the name
-		//
-		this.textFieldName.setValue(param.getParamName());	
-		this.textFieldName.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				param.setParamName(self.textFieldName.getValue());
-				self.setupButtons();
-			}
-		});
-		//
-		// setup the value
-		//
-		this.textFieldValue.setValue(param.getParamValue());	
-		this.textFieldValue.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				param.setParamValue(self.textFieldValue.getValue());
-				self.setupButtons();
-			}
-		});
-	}
-	
-	protected void initializePIPResolver() {
-		final PIPResolverParam param = (PIPResolverParam) this.config;
-		//
-		// setup the name
-		//
-		this.textFieldName.setValue(param.getParamName());	
-		this.textFieldName.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				param.setParamName(self.textFieldName.getValue());
-				self.setupButtons();
-			}
-		});
-		//
-		// setup the value
-		//
-		this.textFieldValue.setValue(param.getParamValue());	
-		this.textFieldValue.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				param.setParamValue(self.textFieldValue.getValue());
-				self.setupButtons();
-			}
-		});
-	}
-	
-	protected void initializeButtons() {
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Commit the values
-					//
-					self.textFieldName.commit();
-					self.textFieldValue.commit();
-					//
-					// Done, save
-					//
-					self.isSaved = true;
-					//
-					// Close
-					//
-					self.close();
-				} catch (SourceException | InvalidValueException e) { //NOPMD
-					//
-					// Vaadin will display error
-					//
-				}
-			}
-		});
-	}
-	
-	protected void setupButtons() {
-		if (this.textFieldName.getValue() != null && this.textFieldValue.getValue() != null) {
-			this.buttonSave.setEnabled(true);
-		} else {
-			this.buttonSave.setEnabled(false);
-		}
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public Object getParameter() {
-		return this.config;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldName
-		textFieldName = new TextField();
-		textFieldName.setCaption("Parameter Name");
-		textFieldName.setImmediate(false);
-		textFieldName.setWidth("-1px");
-		textFieldName.setHeight("-1px");
-		textFieldName.setInvalidAllowed(false);
-		textFieldName.setRequired(true);
-		mainLayout.addComponent(textFieldName);
-		
-		// textFieldValue
-		textFieldValue = new TextField();
-		textFieldValue.setCaption("Parameter Value");
-		textFieldValue.setImmediate(false);
-		textFieldValue.setWidth("-1px");
-		textFieldValue.setHeight("-1px");
-		textFieldValue.setInvalidAllowed(false);
-		textFieldValue.setRequired(true);
-		mainLayout.addComponent(textFieldValue);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPResolverEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPResolverEditorWindow.java
deleted file mode 100644
index 530fddb..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPResolverEditorWindow.java
+++ /dev/null
@@ -1,226 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.PIPResolver;
-import org.apache.openaz.xacml.admin.view.fields.ResolverParamField;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.fieldgroup.FieldGroup;
-import com.vaadin.data.fieldgroup.FieldGroup.CommitException;
-import com.vaadin.data.fieldgroup.PropertyId;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.GridLayout;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.Window;
-
-public class PIPResolverEditorWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(PIPResolverEditorWindow.class);
-	private final PIPResolverEditorWindow self = this;
-	
-	private final EntityItem<PIPResolver> entity;
-	private FieldGroup fieldGroup;
-	private boolean isSaved = false;
-	private GridLayout grid = new GridLayout(2,4);
-	
-	@PropertyId("name")
-	TextField fieldName = new TextField("Name");
-	
-	@PropertyId("description")
-	TextArea areaDescription = new TextArea("Description");
-
-	@PropertyId("issuer")
-	TextField fieldIssuer = new TextField("Issuer");
-	
-	@PropertyId("pipresolverParams")
-	ResolverParamField paramField;
-	
-	Button	buttonSave = new Button("Save");
-
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PIPResolverEditorWindow(EntityItem<PIPResolver> entity) {
-		//
-		// Our base component
-		//
-		this.setContent(this.grid);
-		this.grid.setMargin(true);
-		this.grid.setSpacing(true);
-		//
-		// Save
-		//
-		this.entity = entity;
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize
-		//
-		this.initialize();
-		//
-		// Add components
-		//
-		this.grid.addComponent(this.fieldName, 0, 0);
-		this.grid.addComponent(this.fieldIssuer, 0, 1);
-		this.grid.addComponent(this.areaDescription, 0, 2);
-		this.grid.addComponent(this.paramField, 1, 0, 1, 2);
-		this.grid.addComponent(this.buttonSave, 0, 3, 1, 3);
-		//
-		// Bind and initialize
-		//
-		this.initializeFields();
-		//
-		// Post initialize
-		//
-		this.initializeButtons();
-		//
-		// Set focus
-		//
-		this.fieldName.focus();
-		//
-		// Initially call this to see if the entity is already
-		// saveable
-		//
-		this.formChanged();
-	}
-	
-	protected void initialize() {
-		//
-		//
-		//
-		this.fieldName.setImmediate(true);
-		this.fieldName.setNullRepresentation("");
-		this.fieldName.setRequired(true);
-		this.fieldName.setRequiredError("Enter a name for the resolver");
-		this.fieldName.setInputPrompt("Eg. \"Resolve employee type\"");
-
-		this.fieldIssuer.setNullRepresentation("");
-		this.fieldIssuer.setRequired(false);
-		this.fieldIssuer.setInputPrompt("Eg. urn:com:sample:hr");
-		
-		this.areaDescription.setNullRepresentation("");
-		this.areaDescription.setRequired(false);
-		this.areaDescription.setInputPrompt("Optionally write a description for this resolver.");
-		this.areaDescription.setRows(3);
-		this.areaDescription.setWidth("100%");
-		//
-		// Create our field
-		//
-		this.paramField = new ResolverParamField(this.entity);
-		//this.paramField.setValidationVisible(false);
-	}
-	
-	protected void initializeFields() {
-		//
-		// Now create our field group and bind our fields.
-		// This will populate the components with the
-		// current value if we are editing an entity.
-		//
-		this.fieldGroup = new FieldGroup(this.entity);
-		this.fieldGroup.bindMemberFields(this);
-		//
-		//
-		//
-		this.fieldName.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				self.formChanged();
-			}
-		});
-		//
-		//
-		//
-		this.paramField.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.formChanged();
-			}			
-		});
-	}
-
-	protected void formChanged() {
-		if (this.fieldGroup.isValid() || this.entity.isModified()) {
-			this.buttonSave.setEnabled(true);
-		} else {
-			this.buttonSave.setEnabled(false);
-		}
-	}
-	
-	protected void initializeButtons() {
-		this.grid.setComponentAlignment(this.buttonSave, Alignment.BOTTOM_CENTER);
-		this.buttonSave.setImmediate(true);
-		this.buttonSave.setEnabled(false);
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Commit changes
-					//
-					self.fieldGroup.commit();
-					//
-					// Save
-					//
-					self.isSaved = true;
-					//
-					// We can close
-					//
-					self.close();
-				} catch (CommitException e) {
-					logger.warn("Couldn't commit, the save button should NOT be enabled.");
-				}
-			}			
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPSQLResolverEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPSQLResolverEditorWindow.java
deleted file mode 100644
index 2fb4a25..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PIPSQLResolverEditorWindow.java
+++ /dev/null
@@ -1,1199 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import java.io.Serializable;
-import java.util.ArrayList;
-import java.util.List;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.AttributeDesignatorType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.jpa.Attribute;
-import org.apache.openaz.xacml.admin.jpa.PIPResolver;
-import org.apache.openaz.xacml.admin.jpa.PIPResolverParam;
-import org.apache.openaz.xacml.admin.util.AdminNotification;
-import org.apache.openaz.xacml.admin.util.XACMLConstants;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventListener;
-import org.apache.openaz.xacml.admin.view.events.FormChangedEventNotifier;
-import org.apache.openaz.xacml.api.XACML3;
-import org.apache.openaz.xacml.std.pip.engines.csv.ConfigurableCSVResolver;
-import org.apache.openaz.xacml.std.pip.engines.jdbc.ConfigurableJDBCResolver;
-import org.apache.openaz.xacml.std.pip.engines.ldap.ConfigurableLDAPResolver;
-import com.google.common.base.Joiner;
-import com.google.common.base.Splitter;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.util.BeanItem;
-import com.vaadin.data.util.BeanItemContainer;
-import com.vaadin.event.Action;
-import com.vaadin.event.Action.Handler;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window.CloseEvent;
-import com.vaadin.ui.Window.CloseListener;
-
-public class PIPSQLResolverEditorWindow extends CustomComponent implements FormChangedEventNotifier, Handler {
-	
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-
-	@AutoGenerated
-	private Table tableAttributes;
-
-	@AutoGenerated
-	private Table tableRequiredAttributes;
-
-	@AutoGenerated
-	private CheckBox checkBoxShortIds;
-
-	@AutoGenerated
-	private TextField textFieldFilter;
-
-	@AutoGenerated
-	private TextField textFieldBase;
-
-	@AutoGenerated
-	private TextArea textAreaSelect;
-
-	private final Action ADD_ATTRIBUTE = new Action("Add Attribute");
-	private final Action EDIT_ATTRIBUTE = new Action("Edit Attribute");
-	private final Action CLONE_ATTRIBUTE = new Action("Clone Attribute");
-	private final Action REMOVE_ATTRIBUTE = new Action("Remove Attribute");
-	
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	/**
-	 * 
-	 */
-	
-	protected class ResolverAttribute implements Serializable {
-		private static final long serialVersionUID = 1L;
-		String	identifier = null;
-		String	prefix = null;
-		PIPResolverParam	id = null;
-		PIPResolverParam	category = null;
-		PIPResolverParam	datatype = null;
-		PIPResolverParam	issuer = null;
-		PIPResolverParam	column = null;
-		
-		public ResolverAttribute(String prefix, String identifier) {
-			this.prefix = prefix;
-			this.identifier = identifier;
-		}
-		
-		public ResolverAttribute(String prefix, String identifier, ResolverAttribute target) {
-			this(prefix, identifier);
-			this.setId(target.getId());
-			this.setCategory(target.getCategory());
-			this.setDatatype(target.getDatatype());
-			this.setIssuer(target.getIssuer());
-			this.setColumn(target.getColumn());
-			this.setResolver(target.id.getPipresolver());
-		}
-
-		public String	getIdentifier() {
-			return this.identifier;
-		}
-		
-		public String	getId() {
-			if (this.id == null) {
-				return null;
-			}
-			return this.id.getParamValue();
-		}
-		
-		public String	getShortId() {
-			String id = this.getId();
-			if (id == null) {
-				return null;
-			}
-			return XACMLConstants.extractShortName(id);
-		}
-		
-		public PIPResolverParam getIdParam() {
-			return this.id;
-		}
-		
-		public void		setId(String id) {
-			if (this.id == null) {
-				this.id = new PIPResolverParam();
-				this.id.setParamName(this.prefix + this.identifier + ".id");
-			}
-			this.id.setParamValue(id);
-		}
-		
-		public void		setId(PIPResolverParam param) {
-			this.id = param;
-		}
-		
-		public String	getCategory() {
-			if (this.category == null) {
-				return null;
-			}
-			return this.category.getParamValue();
-		}
-		
-		public String	getShortCategory() {
-			String category = this.getCategory();
-			if (category == null) {
-				return null;
-			}
-			return XACMLConstants.extractShortName(category);
-		}
-		
-		public PIPResolverParam	getCategoryParam() {
-			return this.category;
-		}
-		
-		public void		setCategory(String category) {
-			if (this.category == null) {
-				this.category = new PIPResolverParam();
-				this.category.setParamName(this.prefix + this.identifier + ".category");
-			}
-			this.category.setParamValue(category);
-		}
-		
-		public void setCategory(PIPResolverParam param) {
-			this.category = param;
-		}
-		
-		public String	getDatatype() {
-			if (this.datatype == null) {
-				return null;
-			}
-			return this.datatype.getParamValue();
-		}
-		
-		public String	getShortDatatype() {
-			String dt = this.getDatatype();
-			if (dt == null) {
-				return null;
-			}
-			return XACMLConstants.extractShortName(dt);
-		}
-		
-		public PIPResolverParam getDatatypeParam() {
-			return this.datatype;
-		}
-		
-		public void		setDatatype(String datatype) {
-			if (this.datatype == null) {
-				this.datatype = new PIPResolverParam();
-				this.datatype.setParamName(this.prefix + this.identifier + ".datatype");
-			}
-			this.datatype.setParamValue(datatype);
-		}
-		
-		public void		setDatatype(PIPResolverParam param) {
-			this.datatype = param;
-		}
-		
-		public String	getIssuer() {
-			if (this.issuer == null) {
-				return null;
-			}
-			return this.issuer.getParamValue();
-		}
-		
-		public String	getShortIssuer() {
-			String issuer = this.getIssuer();
-			if (issuer == null) {
-				return null;
-			}
-			return XACMLConstants.extractShortName(issuer);
-		}
-		
-		public PIPResolverParam getIssuerParam() {
-			return this.issuer;
-		}
-		
-		public void		setIssuer(String issuer) {
-			if (this.issuer == null) {
-				this.issuer = new PIPResolverParam();
-				this.issuer.setParamName(this.prefix + this.identifier + ".issuer");
-			}
-			this.issuer.setParamValue(issuer);
-		}
-
-		public void		setIssuer(PIPResolverParam param) {
-			this.issuer = param;
-		}
-		
-		public Integer		getColumn() {
-			if (this.column == null) {
-				return null;
-			}
-			try {
-				return Integer.parseInt(this.column.getParamValue());
-			} catch (NumberFormatException e) {
-				logger.error("Failed to set column: " + e);
-				return null;
-			}
-		}
-		
-		public PIPResolverParam getColumnParam() {
-			return this.column;
-		}
-		
-		public void	setColumn(Integer col) {
-			if (this.column == null) {
-				this.column = new PIPResolverParam();
-				this.column.setParamName(this.prefix + this.identifier + "column");
-			}
-			this.column.setParamValue(col.toString());
-		}
-		
-		public void setColumn(PIPResolverParam param) {
-			this.column = param;
-		}
-
-		public void setResolver(PIPResolver resolver) {
-			if (this.id != null) {
-				this.id.setPipresolver(resolver);
-			}
-			if (this.category != null) {
-				this.category.setPipresolver(resolver);
-			}
-			if (this.datatype != null) {
-				this.datatype.setPipresolver(resolver);
-			}
-			if (this.issuer != null) {
-				this.issuer.setPipresolver(resolver);
-			}
-			if (this.column != null) {
-				this.column.setPipresolver(resolver);
-			}
-		}
-	}	
-	
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(PIPSQLResolverEditorWindow.class);
-	private final PIPSQLResolverEditorWindow self = this;
-	private final EntityItem<PIPResolver> entity;
-	private final BeanItemContainer<ResolverAttribute> fieldsContainer = new BeanItemContainer<ResolverAttribute>(ResolverAttribute.class);
-	private final BeanItemContainer<ResolverAttribute> parametersContainer = new BeanItemContainer<ResolverAttribute>(ResolverAttribute.class);
-	private final BasicNotifier notifier = new BasicNotifier();
-	boolean isSaved = false;
-	String fieldPrefix;
-	String parameterPrefix;
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PIPSQLResolverEditorWindow(EntityItem<PIPResolver> entity) {
-		buildMainLayout();
-		setCompositionRoot(mainLayout);
-		//
-		// Save
-		//
-		this.entity = entity;
-		//
-		// Initialize
-		//
-		this.initialize();
-	}
-	
-	protected boolean isSQL() {
-		if (this.entity.getEntity().getPipconfiguration().getPiptype().isSQL() ||
-			this.entity.getEntity().getPipconfiguration().getPiptype().isHyperCSV()) {
-			return true;
-		}
-		return false;
-	}
-	
-	protected boolean isLDAP() {
-		return this.entity.getEntity().getPipconfiguration().getPiptype().isLDAP();
-	}
-	
-	protected boolean isCSV() {
-		return this.entity.getEntity().getPipconfiguration().getPiptype().isCSV();
-	}
-	
-	protected void initialize() {
-		//
-		// Initialize entity
-		//
-		this.initializeEntity();
-		//
-		// Go through the parameters, save them into a
-		// properties object.
-		//
-		boolean sourceInitialized = false;
-		boolean attributeInitialized = false;
-		for (PIPResolverParam param : this.entity.getEntity().getPipresolverParams()) {
-			//
-			// Look for ones we know about
-			//
-			if (param.getParamName().equalsIgnoreCase("select")) {
-				this.textAreaSelect.setValue(param.getParamValue());
-				this.textAreaSelect.setData(param);
-			} else if (param.getParamName().equals("fields") || param.getParamName().equals("filter.view")) {
-				this.initializeSourceTable(param.getParamValue());
-				this.tableRequiredAttributes.setData(param);
-				sourceInitialized = true;
-			} else if (param.getParamName().equals("parameters") || param.getParamName().equals("filter.parameters")) {
-				this.initializeAttributeTable(param.getParamValue());
-				this.tableAttributes.setData(param);
-				attributeInitialized = true;
-			} else if (param.getParamName().equalsIgnoreCase("base")) {
-				this.textFieldBase.setValue(param.getParamValue());
-				this.textFieldBase.setData(param);
-			} else if (param.getParamName().equalsIgnoreCase("filter")) {
-				this.textFieldFilter.setValue(param.getParamValue());
-				this.textFieldFilter.setData(param);
-			}
-		}
-		//
-		// Initialize GUI
-		//
-		this.initializeText();
-		this.initializeCheckBox();
-		//
-		// Verify the tables get setup, if this is a new object
-		// then they haven't been.
-		//
-		if (sourceInitialized == false) {
-			this.initializeSourceTable("");
-		}
-		if (attributeInitialized == false) {
-			this.initializeAttributeTable("");
-		}
-	}
-	
-	protected void initializeEntity() {
-		//
-		// Make sure the classname is set correctly
-		//
-		if (this.isSQL()) {
-			//
-			//
-			//
-			this.fieldPrefix = "field.";
-			this.parameterPrefix = "parameter.";
-			this.entity.getEntity().setClassname(ConfigurableJDBCResolver.class.getCanonicalName());
-		} else if (this.isLDAP()) {
-			//
-			//
-			//
-			this.fieldPrefix = "filter.view.";
-			this.parameterPrefix = "filter.parameters.";
-			this.entity.getEntity().setClassname(ConfigurableLDAPResolver.class.getCanonicalName());
-		} else if (this.isCSV()) {
-			//
-			//
-			//
-			this.fieldPrefix = "field.";
-			this.parameterPrefix = "parameter.";
-			this.entity.getEntity().setClassname(ConfigurableCSVResolver.class.getCanonicalName());
-		}
-	}
-	
-	protected void initializeText() {
-		//
-		// Are we SQL or LDAP?
-		//
-		if (this.isSQL()) {
-			//
-			// Turn these off
-			//
-			this.textFieldBase.setRequired(false);
-			this.textFieldBase.setVisible(false);
-			this.textFieldFilter.setRequired(false);
-			this.textFieldFilter.setVisible(false);
-			//
-			// GUI properties
-			//
-			this.textAreaSelect.setImmediate(true);
-			//
-			// Respond to changes
-			//
-			this.textAreaSelect.addValueChangeListener(new ValueChangeListener() {
-				private static final long serialVersionUID = 1L;
-	
-				@Override
-				public void valueChange(ValueChangeEvent event) {
-					PIPResolverParam param = (PIPResolverParam) self.textAreaSelect.getData();
-					if (param == null) {
-						param = new PIPResolverParam();
-						param.setPipresolver(self.entity.getEntity());
-						param.setParamName("select");
-						self.entity.getEntity().addPipresolverParam(param);
-						self.textAreaSelect.setData(param);
-					}
-					param.setParamValue(self.textAreaSelect.getValue());
-					self.fireFormChangedEvent();
-				}			
-			});
-		} else if (this.isLDAP()) {
-			//
-			// Turn these off
-			//
-			this.textAreaSelect.setRequired(false);
-			this.textAreaSelect.setVisible(false);
-			//
-			//
-			//
-			this.textFieldBase.setImmediate(true);
-			this.textFieldBase.addValueChangeListener(new ValueChangeListener() {
-				private static final long serialVersionUID = 1L;
-				
-				@Override
-				public void valueChange(ValueChangeEvent event) {
-					PIPResolverParam param = (PIPResolverParam) self.textFieldBase.getData();
-					if (param == null) {
-						param = new PIPResolverParam();
-						param.setPipresolver(self.entity.getEntity());
-						param.setParamName("base");
-						self.entity.getEntity().addPipresolverParam(param);
-						self.textFieldBase.setData(param);
-					}
-					param.setParamValue(self.textFieldBase.getValue());
-					self.fireFormChangedEvent();
-				}			
-			});
-			//
-			//
-			//
-			this.textFieldFilter.setImmediate(true);
-			this.textFieldFilter.addValueChangeListener(new ValueChangeListener() {
-				private static final long serialVersionUID = 1L;
-				
-				@Override
-				public void valueChange(ValueChangeEvent event) {
-					PIPResolverParam param = (PIPResolverParam) self.textFieldFilter.getData();
-					if (param == null) {
-						param = new PIPResolverParam();
-						param.setPipresolver(self.entity.getEntity());
-						param.setParamName("filter");
-						self.entity.getEntity().addPipresolverParam(param);
-						self.textFieldFilter.setData(param);
-					}
-					param.setParamValue(self.textFieldFilter.getValue());
-					self.fireFormChangedEvent();
-				}			
-			});
-		} else if (this.isCSV()) {
-			//
-			// Turn these off
-			//
-			this.textAreaSelect.setRequired(false);
-			this.textAreaSelect.setVisible(false);
-			this.textFieldBase.setRequired(false);
-			this.textFieldBase.setVisible(false);
-			this.textFieldFilter.setRequired(false);
-			this.textFieldFilter.setVisible(false);
-		}
-	}
-	
-	protected void initializeCheckBox() {
-		this.checkBoxShortIds.setValue(true);
-		this.checkBoxShortIds.setImmediate(true);
-		this.checkBoxShortIds.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				if (self.checkBoxShortIds.getValue()) {
-					self.tableRequiredAttributes.setColumnCollapsed("id", true);
-					self.tableRequiredAttributes.setColumnCollapsed("category", true);
-					self.tableRequiredAttributes.setColumnCollapsed("datatype", true);
-					self.tableRequiredAttributes.setColumnCollapsed("shortId", false);
-					self.tableRequiredAttributes.setColumnCollapsed("shortCategory", false);
-					self.tableRequiredAttributes.setColumnCollapsed("shortDatatype", false);
-				} else {
-					self.tableRequiredAttributes.setColumnCollapsed("id", false);
-					self.tableRequiredAttributes.setColumnCollapsed("category", false);
-					self.tableRequiredAttributes.setColumnCollapsed("datatype", false);
-					self.tableRequiredAttributes.setColumnCollapsed("shortId", true);
-					self.tableRequiredAttributes.setColumnCollapsed("shortCategory", true);
-					self.tableRequiredAttributes.setColumnCollapsed("shortDatatype", true);
-				}
-			}			
-		});
-	}
-	
-	protected void initializeSourceTable(String fields) {
-		//
-		// Add data into the container
-		//
-		this.populateData(this.fieldPrefix, fields, this.fieldsContainer);
-		//
-		// Set GUI properties
-		//
-		this.tableRequiredAttributes.setContainerDataSource(this.fieldsContainer);
-		this.tableRequiredAttributes.setPageLength((this.fieldsContainer.size() == 0 ? 3 : this.fieldsContainer.size() + 1));
-		this.tableRequiredAttributes.setSizeFull();
-		this.tableRequiredAttributes.setColumnCollapsingAllowed(true);
-		this.tableRequiredAttributes.setVisibleColumns(new Object[] {"identifier", "id", "category", "datatype", "shortId", "shortCategory", "shortDatatype"});
-		this.tableRequiredAttributes.setColumnHeaders(new String[] {"Field", "Attribute Id", "Category", "Data Type", "Attribute Id", "Category", "Data Type"});
-		this.tableRequiredAttributes.setColumnCollapsed("id", true);
-		this.tableRequiredAttributes.setColumnCollapsed("category", true);
-		this.tableRequiredAttributes.setColumnCollapsed("datatype", true);
-		this.tableRequiredAttributes.setSelectable(true);
-		//
-		// Setup its handler
-		//
-		this.tableRequiredAttributes.addActionHandler(this);
-		//
-		// Respond to events
-		//
-		this.tableRequiredAttributes.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick()) {
-					Object id = event.getItemId();
-					if (id == null) {
-						//
-						// Really shouldn't get here
-						//
-						return;
-					}
-					BeanItem<ResolverAttribute> beanItem = self.fieldsContainer.getItem(id);
-					if (beanItem == null) {
-						//
-						// Again, shouldn't get here
-						//
-						return;
-					}
-					self.editAttribute(self.tableRequiredAttributes, beanItem.getBean());
-				}
-			}
-		});
-	}
-	
-	protected void initializeAttributeTable(String parameters) {
-		//
-		// Add data into the container
-		//
-		this.populateData(this.parameterPrefix, parameters, this.parametersContainer);
-		//
-		// setup gui properties
-		//
-		this.tableAttributes.setContainerDataSource(this.parametersContainer);
-		this.tableAttributes.setPageLength(this.parametersContainer.size() + 1);
-		this.tableAttributes.setSizeFull();
-		this.tableAttributes.setColumnCollapsingAllowed(true);
-		this.tableAttributes.setVisibleColumns(new Object[] {"identifier", "id", "category", "datatype", "shortId", "shortCategory", "shortDatatype"});
-		this.tableAttributes.setColumnHeaders(new String[] {"Position", "Attribute Id", "Category", "Data Type", "Attribute Id", "Category", "Data Type"});
-		this.tableAttributes.setColumnCollapsed("id", true);
-		this.tableAttributes.setColumnCollapsed("category", true);
-		this.tableAttributes.setColumnCollapsed("datatype", true);
-		this.tableAttributes.setSelectable(true);
-		//
-		// Setup its handler
-		//
-		this.tableAttributes.addActionHandler(this);
-		//
-		// Respond to events
-		//
-		this.tableAttributes.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick()) {
-					Object id = event.getItemId();
-					if (id == null) {
-						//
-						// Really shouldn't get here
-						//
-						return;
-					}
-					BeanItem<ResolverAttribute> beanItem = self.parametersContainer.getItem(id);
-					if (beanItem == null) {
-						//
-						// Again, shouldn't get here
-						//
-						return;
-					}
-					self.editAttribute(self.tableAttributes, beanItem.getBean());
-				}
-			}
-		});
-	}
-	
-	protected void populateData(String prefix, String list, BeanItemContainer<ResolverAttribute> container) {
-		for (String field : Splitter.on(',').trimResults().omitEmptyStrings().split(list)) {
-			//
-			// Create a bean for this field
-			//
-			ResolverAttribute bean = new ResolverAttribute(prefix, field);
-			//
-			// Now try to find the attribute information
-			//
-			for (PIPResolverParam param : this.entity.getEntity().getPipresolverParams()) {
-				if (param.getParamName().equals(prefix + field + ".id")) {
-					bean.setId(param);
-				} else if (param.getParamName().equals(prefix + field + ".category")) {
-					bean.setCategory(param);
-				} else if (param.getParamName().equals(prefix + field + ".datatype")) {
-					bean.setDatatype(param);
-				} else if (param.getParamName().equals(prefix + field + ".issuer")) {
-					bean.setIssuer(param);
-				} else if (param.getParamName().equals(prefix + field + ".column")) {
-					bean.setColumn(param);
-				}
-			}
-			container.addBean(bean);
-		}
-	}
-
-	@Override
-	public Action[] getActions(Object target, Object sender) {
-		if (target == null) {
-			return new Action[] {ADD_ATTRIBUTE};
-		}
-		return new Action[] {EDIT_ATTRIBUTE, CLONE_ATTRIBUTE, REMOVE_ATTRIBUTE};
-	}
-
-	@Override
-	public void handleAction(Action action, Object sender, Object target) {
-		if (action == ADD_ATTRIBUTE) {
-			if (sender.equals(this.tableRequiredAttributes)) {
-				this.editAttribute(self.tableRequiredAttributes, null);
-			} else {
-				this.editAttribute(self.tableAttributes, null);
-			}
-			return;
-		}
-		if (action == EDIT_ATTRIBUTE) {
-			assert target instanceof ResolverAttribute;
-			if (sender.equals(this.tableRequiredAttributes)) {
-				this.editAttribute(self.tableRequiredAttributes, (ResolverAttribute) target);
-			} else {
-				this.editAttribute(self.tableAttributes, (ResolverAttribute) target);
-			}
-			return;
-		}
-		if (action == CLONE_ATTRIBUTE) {
-			assert target instanceof ResolverAttribute;
-			try {
-				//
-				// Which table?
-				//
-				if (sender.equals(this.tableRequiredAttributes)) {
-					//
-					// Clone the attribute giving it a new
-					// field name.
-					//
-					ResolverAttribute clone = new ResolverAttribute(this.fieldPrefix, this.getNextField(), (ResolverAttribute) target);
-					//
-					// Add it to the container
-					//
-					this.fieldsContainer.addBean(clone);
-					//
-					// Reset the page length so we can see it and have room
-					// to add another.
-					//
-					this.tableRequiredAttributes.setPageLength(this.fieldsContainer.size() + 1);
-					//
-					// Select it
-					//
-					this.tableRequiredAttributes.select(clone);
-				} else {
-					//
-					// Clone the attribute giving it a new
-					// field name.
-					//
-					ResolverAttribute clone = new ResolverAttribute(this.parameterPrefix, this.getNextParameter(), (ResolverAttribute) target);
-					//
-					// Add it to the container
-					//
-					this.parametersContainer.addBean(clone);
-					//
-					// Reset the page length so we can see it and have room
-					// to add another.
-					//
-					this.tableAttributes.setPageLength(this.parametersContainer.size() + 1);
-					//
-					// Select it
-					//
-					this.tableAttributes.select(clone);
-				}
-				//
-				// We have changed
-				//
-				this.fireFormChangedEvent();
-			} catch (Exception e) {
-				logger.error("Failed to clone: " + e);
-			}
-			return;
-		}
-		if (action == REMOVE_ATTRIBUTE) {
-			assert target instanceof ResolverAttribute;
-			//
-			// Help method to remove the attribute
-			//
-			this.removeAttribute((ResolverAttribute) target);
-			//
-			// Which table?
-			//
-			if (sender.equals(this.tableRequiredAttributes)) {
-				//
-				// Now remove it from the table
-				//
-				this.tableRequiredAttributes.removeItem(target);
-			} else {
-				//
-				// Now remove it from the table
-				//
-				this.tableAttributes.removeItem(target);
-			}
-			//
-			// we have changed
-			//
-			this.fireFormChangedEvent();
-			return;
-		}
-	}
-
-	protected void removeAttribute(ResolverAttribute target) {
-		this.entity.getEntity().removePipresolverParam(target.getIdParam());
-		this.entity.getEntity().removePipresolverParam(target.getCategoryParam());
-		this.entity.getEntity().removePipresolverParam(target.getDatatypeParam());
-		this.entity.getEntity().removePipresolverParam(target.getIssuerParam());
-	}
-
-	protected void editAttribute(final Table table, final ResolverAttribute request) {
-		if (this.isCSV()) {
-			this.editCSVAttribute(table, request);
-		} else {
-			this.editResolverAttribute(table, request, null);
-		}
-	}
-	
-	protected void editCSVAttribute(final Table table, final ResolverAttribute request) {
-		assert this.isCSV();
-		//
-		// Prompt for the column
-		//
-		final ColumnSelectionWindow window = new ColumnSelectionWindow((request != null ? request.getColumn() : 0));
-		if (request == null) {
-			window.setCaption("Input the CSV Column for the new attribute");
-		} else {
-			window.setCaption("Edit the CSV Column for the attribute");
-		}
-		window.setModal(true);
-		window.center();
-		window.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent e) {
-				//
-				// Did the user save?
-				//
-				if (window.isSaved() == false) {
-					return;
-				}
-				//
-				// Save it if its not a new
-				//
-				if (request != null) {
-					request.setColumn(window.getColumn());
-				}
-				//
-				// Now we select the attribute, pass the column
-				// in case this is a brand new attribute. Yeah its messy.
-				//
-				self.editResolverAttribute(table, request, window.getColumn());
-			}
-		});
-		window.center();
-		UI.getCurrent().addWindow(window);
-	}
-
-	protected void editResolverAttribute(final Table table, final ResolverAttribute request, final Integer column) {
-		//
-		// Provide objects to the attribute selection window
-		//
-		AttributeDesignatorType designator = new AttributeDesignatorType();
-		if (request == null) {
-			designator.setAttributeId(XACML3.ID_SUBJECT_SUBJECT_ID.stringValue());
-			designator.setCategory(XACML3.ID_SUBJECT_CATEGORY_ACCESS_SUBJECT.stringValue());
-			designator.setDataType(XACML3.ID_DATATYPE_STRING.stringValue());
-			designator.setIssuer(this.entity.getEntity().getIssuer());
-		} else {
-			designator.setAttributeId(request.getId());
-			designator.setCategory(request.getCategory());
-			designator.setDataType(request.getDatatype());
-			designator.setIssuer(request.getIssuer());
-		}
-		//
-		// Have user select an attribute
-		//
-		final AttributeSelectionWindow selection = new AttributeSelectionWindow(null, designator);
-		selection.setModal(true);
-		selection.setCaption("Select Attribute");
-		selection.addCloseListener(new CloseListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void windowClose(CloseEvent event) {
-				//
-				// User click Save button?
-				//
-				if (selection.isSaved() == false) {
-					return;
-				}
-				//
-				// Yes - get the final attribute
-				//
-				Attribute attribute = selection.getAttribute();
-				//
-				// Is it a new one?
-				//
-				if (request == null) {
-					try {
-						//
-						// Create a new bean
-						//
-						ResolverAttribute bean = null;
-						if (table.equals(self.tableRequiredAttributes)) {
-							bean = new ResolverAttribute(self.fieldPrefix, self.getNextField());
-						} else {
-							bean = new ResolverAttribute(self.parameterPrefix, self.getNextParameter());
-						}
-						bean.setId(attribute.getXacmlId());
-						bean.setCategory(attribute.getCategoryBean().getXacmlId());
-						bean.setDatatype(attribute.getDatatypeBean().getXacmlId());
-						if (attribute.getIssuer() != null) {
-							bean.setIssuer(attribute.getIssuer());
-						}
-						if (column != null) {
-							bean.setColumn(column);
-						}
-						//
-						// Add it to the resolver
-						//
-						bean.setResolver(self.entity.getEntity());
-						self.entity.getEntity().addPipresolverParam(bean.getIdParam());
-						self.entity.getEntity().addPipresolverParam(bean.getCategoryParam());
-						self.entity.getEntity().addPipresolverParam(bean.getDatatypeParam());
-						if (bean.getIssuer() != null) {
-							self.entity.getEntity().addPipresolverParam(bean.getIssuerParam());
-						}
-						//
-						// Which table?
-						//
-						if (table.equals(self.tableRequiredAttributes)) {
-							//
-							// Add to table
-							//
-							self.fieldsContainer.addBean(bean);
-							//
-							// Reset the page length
-							//
-							self.tableRequiredAttributes.setPageLength(self.fieldsContainer.size() + 1);
-						} else if (table.equals(self.tableAttributes)) {
-							//
-							// Add to table
-							//
-							self.parametersContainer.addBean(bean);
-							//
-							// Reset the page length
-							//
-							self.tableAttributes.setPageLength(self.parametersContainer.size() + 1);
-						}
-						if (logger.isDebugEnabled()) {
-							logger.debug("Added new attribute: " + bean);
-						}
-					} catch (Exception e) {
-						logger.error(e);
-						AdminNotification.error("Unable to add another required attribute field");
-					}
-				} else {
-					//
-					// Update the table entry
-					//
-					request.setId(attribute.getXacmlId());
-					request.setCategory(attribute.getCategoryBean().getXacmlId());
-					request.setDatatype(attribute.getDatatypeBean().getXacmlId());
-					request.setIssuer(attribute.getIssuer());
-					//
-					// Let the table know
-					//
-					table.refreshRowCache();
-				}
-				//
-				// we have changed
-				//
-				self.fireFormChangedEvent();
-			}
-		});
-		selection.center();
-		UI.getCurrent().addWindow(selection);
-	}
-	
-	protected String	getNextField() throws Exception {
-		//
-		// Start at the next index number. NOTE: The GUI needs
-		// to use numbers to index the fields.
-		//
-		int index = this.tableRequiredAttributes.size() + 1;
-		//
-		// Really if we get to 100, that's an insane number of fields
-		// needed for a SQL query.
-		//
-		while (index < 100) {
-			String field = String.format("%02d", index);
-			boolean exists = false;
-			for (Object id : this.tableRequiredAttributes.getItemIds()) {
-				@SuppressWarnings("unchecked")
-				BeanItem<ResolverAttribute> required = (BeanItem<ResolverAttribute>) this.tableRequiredAttributes.getItem(id);
-				if (required.getBean().getIdentifier().equals(field)) {
-					exists = true;
-					index++;
-					break;
-				}
-			}
-			if (exists == false) {
-				return field;
-			}
-		}
-		//
-		// Sanity check
-		//
-		throw new Exception("Unable to find a next field name. Are there too many fields?");
-	}
-	
-	protected String	getNextParameter() throws Exception {
-		//
-		// Start at the next index number. NOTE: The GUI needs
-		// to use numbers to index the fields.
-		//
-		int index = this.tableAttributes.size() + 1;
-		//
-		// Really if we get to 100, that's an insane number of fields
-		// needed for a SQL query.
-		//
-		while (index < 100) {
-			String field = String.format("%02d", index);
-			boolean exists = false;
-			for (Object id : this.tableAttributes.getItemIds()) {
-				@SuppressWarnings("unchecked")
-				BeanItem<ResolverAttribute> required = (BeanItem<ResolverAttribute>) this.tableAttributes.getItem(id);
-				if (required.getBean().getIdentifier().equals(field)) {
-					exists = true;
-					index++;
-					break;
-				}
-			}
-			if (exists == false) {
-				return field;
-			}
-		}
-		//
-		// Sanity check
-		//
-		throw new Exception("Unable to find a next parameter name. Are there too many parameters?");
-	}
-	
-	public void discard() throws SourceException {
-		if (this.isSQL()) {
-			this.textAreaSelect.discard();
-		} else if (this.isLDAP()) {
-			this.textFieldBase.discard();
-			this.textFieldFilter.discard();
-		// } else if (this.isCSV()) {
-		}
-	}
-	
-	public void validate() throws InvalidValueException {
-		if (this.isSQL()) {
-			this.textAreaSelect.validate();
-		} else if (this.isLDAP()) {
-			this.textFieldBase.validate();
-			this.textFieldFilter.validate();
-		//} else if (this.isCSV()) {
-			
-		}
-	}
-	
-	public void commit() throws SourceException, InvalidValueException {
-		//
-		// Commit required fields
-		//
-		if (this.isSQL()) {
-			this.textAreaSelect.commit();
-		} else if (this.isLDAP()) {
-			this.textFieldBase.commit();
-			this.textFieldFilter.commit();
-		// } else if (this.isCSV()) {
-		}
-		//
-		// Setup the fields
-		//
-		{
-			List<String> fields = new ArrayList<String>(this.fieldsContainer.size());
-			for (ResolverAttribute attribute : this.fieldsContainer.getItemIds()) {
-				fields.add(attribute.getIdentifier());
-			}
-			PIPResolverParam param = (PIPResolverParam) this.tableRequiredAttributes.getData();
-			if (param == null) {
-				param = new PIPResolverParam();
-				if (this.isSQL()) {
-					param.setParamName("fields");
-				} else if (this.isLDAP()) {
-					param.setParamName("filter.view");
-				} else if (this.isCSV()) {
-					param.setParamName("fields");
-				}
-				this.entity.getEntity().addPipresolverParam(param);
-				this.tableRequiredAttributes.setData(param);
-			}
-			param.setParamValue(Joiner.on(',').join(fields));
-		}
-		//
-		// Setup the parameters
-		//
-		{
-			List<String> parameters = new ArrayList<String>(this.parametersContainer.size());
-			for (ResolverAttribute attribute : this.parametersContainer.getItemIds()) {
-				parameters.add(attribute.getIdentifier());
-			}
-			PIPResolverParam param = (PIPResolverParam) this.tableAttributes.getData();
-			if (param == null) {
-				param = new PIPResolverParam();
-				if (this.isSQL()) {
-					param.setParamName("parameters");
-				} else if (this.isLDAP()) {
-					param.setParamName("filter.parameters");
-				} else if (this.isCSV()) {
-					param.setParamName("parameters");
-				}
-				this.entity.getEntity().addPipresolverParam(param);
-				this.tableAttributes.setData(param);
-			}
-			param.setParamValue(Joiner.on(',').join(parameters));
-		}
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	@Override
-	public boolean addListener(FormChangedEventListener listener) {
-		return this.notifier.addListener(listener);
-	}
-
-	@Override
-	public boolean removeListener(FormChangedEventListener listener) {
-		return this.notifier.removeListener(listener);
-	}
-
-	@Override
-	public void fireFormChangedEvent() {
-		this.notifier.fireFormChangedEvent();
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textAreaSelect
-		textAreaSelect = new TextArea();
-		textAreaSelect.setCaption("SQL Select Statement");
-		textAreaSelect.setImmediate(false);
-		textAreaSelect.setWidth("100.0%");
-		textAreaSelect.setHeight("-1px");
-		textAreaSelect.setInvalidAllowed(false);
-		textAreaSelect.setRequired(true);
-		mainLayout.addComponent(textAreaSelect);
-		mainLayout.setExpandRatio(textAreaSelect, 1.0f);
-		
-		// textFieldBase
-		textFieldBase = new TextField();
-		textFieldBase.setCaption("Base DN");
-		textFieldBase.setImmediate(false);
-		textFieldBase.setWidth("-1px");
-		textFieldBase.setHeight("-1px");
-		mainLayout.addComponent(textFieldBase);
-		
-		// textFieldFilter
-		textFieldFilter = new TextField();
-		textFieldFilter.setCaption("Filter");
-		textFieldFilter.setImmediate(false);
-		textFieldFilter.setWidth("-1px");
-		textFieldFilter.setHeight("-1px");
-		mainLayout.addComponent(textFieldFilter);
-		
-		// checkBoxShortIds
-		checkBoxShortIds = new CheckBox();
-		checkBoxShortIds.setCaption("Display short id’s.");
-		checkBoxShortIds.setImmediate(false);
-		checkBoxShortIds.setWidth("-1px");
-		checkBoxShortIds.setHeight("-1px");
-		mainLayout.addComponent(checkBoxShortIds);
-		
-		// tableRequiredAttributes
-		tableRequiredAttributes = new Table();
-		tableRequiredAttributes.setCaption("Attributes Returned");
-		tableRequiredAttributes.setImmediate(false);
-		tableRequiredAttributes.setWidth("-1px");
-		tableRequiredAttributes.setHeight("-1px");
-		mainLayout.addComponent(tableRequiredAttributes);
-		
-		// tableAttributes
-		tableAttributes = new Table();
-		tableAttributes.setCaption("Parameters - Attributes Needed (i.e. ?)");
-		tableAttributes.setImmediate(false);
-		tableAttributes.setWidth("-1px");
-		tableAttributes.setHeight("-1px");
-		tableAttributes.setInvalidAllowed(false);
-		tableAttributes.setRequired(true);
-		mainLayout.addComponent(tableAttributes);
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicyEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicyEditorWindow.java
deleted file mode 100644
index f9d70c8..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicyEditorWindow.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.RuleAlgorithms;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.api.XACML3;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.validator.RegexpValidator;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.ListSelect;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class PolicyEditorWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private TextArea textAreaDescription;
-	@AutoGenerated
-	private ListSelect listSelectAlgorithm;
-	@AutoGenerated
-	private TextField textFieldVersion;
-	@AutoGenerated
-	private Label labelID;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final PolicyEditorWindow self = this;
-	private final PolicyType policy;
-	private JPAContainer<RuleAlgorithms> algorithms = ((XacmlAdminUI)UI.getCurrent()).getRuleAlgorithms();
-	private boolean isSaved = false;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PolicyEditorWindow(PolicyType policy) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save
-		//
-		this.policy = policy;
-		//
-		// Close shortcut
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize GUI
-		//
-		this.initializeLabel();
-		this.initializeText();
-		this.initializeSelect();
-		this.initializeButton();
-		//
-		// Focus
-		//
-		this.textAreaDescription.focus();
-	}
-	
-	protected void initializeLabel() {
-		if (this.policy.getPolicyId() == null) {
-			this.policy.setPolicyId(((XacmlAdminUI)UI.getCurrent()).newPolicyID());
-		}
-		this.labelID.setValue(this.policy.getPolicyId());
-	}
-	
-	protected void initializeText() {
-		//
-		//
-		//
-		this.textAreaDescription.setNullRepresentation("");
-		this.textAreaDescription.setValue(this.policy.getDescription());
-		//
-		//
-		//
-		if (this.policy.getVersion() == null) {
-			this.policy.setVersion("1");
-		}
-		this.textFieldVersion.setRequiredError("The exact format is: ((\\d+|\\*)\\.)*(\\d+|\\*|\\+)");
-		this.textFieldVersion.addValidator(new RegexpValidator("((\\d+|\\*)\\.)*(\\d+|\\*|\\+)", true, "The version MUST a number optionally separated by '.' eg. 1 or 1.0 or 1.1.1 etc."));
-		this.textFieldVersion.setValue(this.policy.getVersion());
-	}
-	
-	protected void initializeSelect() {
-		this.listSelectAlgorithm.setContainerDataSource(this.algorithms);
-		this.listSelectAlgorithm.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.listSelectAlgorithm.setItemCaptionPropertyId("xacmlId");
-		this.listSelectAlgorithm.setNullSelectionAllowed(false);
-		
-		if (this.policy.getRuleCombiningAlgId() == null) {
-			this.policy.setRuleCombiningAlgId(XACML3.ID_RULE_FIRST_APPLICABLE.stringValue());
-		}
-		this.listSelectAlgorithm.setValue(JPAUtils.findRuleAlgorithm(this.policy.getRuleCombiningAlgId()).getId());
-	}
-	
-	protected void initializeButton() {
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Commit
-					//
-					self.listSelectAlgorithm.commit();
-					self.textFieldVersion.commit();
-					self.textAreaDescription.commit();
-					//
-					// Save everything
-					//
-					self.policy.setDescription(self.textAreaDescription.getValue());
-					self.policy.setVersion(self.textFieldVersion.getValue());
-					Object id = self.listSelectAlgorithm.getValue();
-					self.policy.setRuleCombiningAlgId(algorithms.getItem(id).getEntity().getXacmlId());
-					//
-					// Mark ourselves as saved
-					//
-					self.isSaved = true;
-					//
-					// Close window
-					//
-					self.close();
-				} catch (SourceException | InvalidValueException e) { //NOPMD
-					//
-					// VAADIN will show the required error message to the user
-					//
-				}
-			}
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public PolicyType getPolicySet() {
-		return this.policy;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// labelID
-		labelID = new Label();
-		labelID.setCaption("Policy Set ID");
-		labelID.setImmediate(false);
-		labelID.setWidth("100.0%");
-		labelID.setHeight("-1px");
-		labelID.setValue("Label");
-		mainLayout.addComponent(labelID);
-		
-		// textFieldVersion
-		textFieldVersion = new TextField();
-		textFieldVersion.setCaption("Version");
-		textFieldVersion.setImmediate(false);
-		textFieldVersion
-				.setDescription("The format is numbers only separated by decimal point.");
-		textFieldVersion.setWidth("-1px");
-		textFieldVersion.setHeight("-1px");
-		textFieldVersion.setInvalidAllowed(false);
-		textFieldVersion.setRequired(true);
-		textFieldVersion.setInputPrompt("Eg. 1 or 1.0 or 1.0.0 etc.");
-		mainLayout.addComponent(textFieldVersion);
-		
-		// listSelectAlgorithm
-		listSelectAlgorithm = new ListSelect();
-		listSelectAlgorithm.setCaption("Policy Combining Algorithm");
-		listSelectAlgorithm.setImmediate(false);
-		listSelectAlgorithm.setWidth("100.0%");
-		listSelectAlgorithm.setHeight("-1px");
-		listSelectAlgorithm.setInvalidAllowed(false);
-		listSelectAlgorithm.setRequired(true);
-		mainLayout.addComponent(listSelectAlgorithm);
-		
-		// textAreaDescription
-		textAreaDescription = new TextArea();
-		textAreaDescription.setCaption("Description");
-		textAreaDescription.setImmediate(false);
-		textAreaDescription.setWidth("100.0%");
-		textAreaDescription.setHeight("-1px");
-		mainLayout.addComponent(textAreaDescription);
-		mainLayout.setExpandRatio(textAreaDescription, 1.0f);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicyNameEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicyNameEditorWindow.java
deleted file mode 100644
index 73149cc..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicyNameEditorWindow.java
+++ /dev/null
@@ -1,369 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicySetType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.TargetType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.PolicyAlgorithms;
-import org.apache.openaz.xacml.admin.jpa.RuleAlgorithms;
-import org.apache.openaz.xacml.api.XACML3;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.addon.jpacontainer.JPAContainerItem;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.ComboBox;
-import com.vaadin.ui.FormLayout;
-import com.vaadin.ui.OptionGroup;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.Window;
-
-public class PolicyNameEditorWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(PolicyNameEditorWindow.class);
-	private final PolicyNameEditorWindow self = this;
-	private Object data = null;
-	private String filename = null;
-	private boolean isSaved = false;
-	
-	@AutoGenerated
-	private FormLayout mainLayout;
-	@AutoGenerated
-	private ComboBox comboAlgorithms;
-	@AutoGenerated
-	private OptionGroup optionPolicySet;
-	@AutoGenerated
-	private TextArea textAreaDescription;
-	@AutoGenerated
-	private TextField textFieldPolicyName;
-	@AutoGenerated
-	private Button buttonSave;
-	
-	JPAContainer<PolicyAlgorithms> policyAlgorithms;
-	JPAContainer<RuleAlgorithms> ruleAlgorithms;
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PolicyNameEditorWindow(String filename, Object policyData, JPAContainer<PolicyAlgorithms> policyAlgs, JPAContainer<RuleAlgorithms> ruleAlgs) {
-		buildMainLayout();
-		setContent(mainLayout);
-		
-		this.mainLayout.setMargin(true);
-
-		this.filename = filename;
-		this.data = policyData;
-		this.policyAlgorithms = policyAlgs;
-		this.ruleAlgorithms = ruleAlgs;
-		
-		this.optionPolicySet.addItem("Policy Set");
-		this.optionPolicySet.addItem("Policy");
-
-		this.comboAlgorithms.setNewItemsAllowed(false);
-		this.comboAlgorithms.setNullSelectionAllowed(false);
-		this.comboAlgorithms.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.comboAlgorithms.setItemCaptionPropertyId("xacmlId");
-		//
-		// Setup the policy filename
-		//
-		this.textFieldPolicyName.setImmediate(true);
-		this.textFieldPolicyName.setNullRepresentation("");
-		if (filename != null) {
-			this.textFieldPolicyName.setValue(filename);
-		}
-		this.textFieldPolicyName.addValidator(new Validator() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void validate(Object value) throws InvalidValueException {
-				if (value instanceof String) {
-					String filename = (String) value;
-					if (filename.endsWith(".xml")) {
-						filename = filename.substring(0, filename.length() - 4);
-					}
-					if (filename.length() == 0) {
-						throw new InvalidValueException("Invalid filename.");
-					}
-					if (filename.indexOf('.') != -1) {
-						throw new InvalidValueException("Please do not use a \'.\' in the filename.");
-					}
-				}
-			}
-			
-		});
-		this.textFieldPolicyName.setValidationVisible(true);
-		//
-		// Are we editing or creating?
-		//
-		if (this.data != null) {
-			//
-			// We are editing
-			//
-			if (this.data instanceof PolicySetType) {
-				this.optionPolicySet.setValue("Policy Set");
-				this.optionPolicySet.setVisible(false);
-				this.textAreaDescription.setValue(((PolicySetType)this.data).getDescription());
-				this.comboAlgorithms.setContainerDataSource(policyAlgs);
-				for (Object object : this.policyAlgorithms.getItemIds()) {
-					PolicyAlgorithms a = (PolicyAlgorithms) this.policyAlgorithms.getItem(object).getEntity();
-					if (a.getXacmlId().equals(((PolicySetType)this.data).getPolicyCombiningAlgId())) {
-						this.comboAlgorithms.select(object);
-						break;
-					}
-				}
-			}
-			if (this.data instanceof PolicyType) {
-				this.optionPolicySet.setValue("Policy");
-				this.optionPolicySet.setVisible(false);
-				this.textAreaDescription.setValue(((PolicyType)this.data).getDescription());
-				this.comboAlgorithms.setContainerDataSource(ruleAlgs);
-				for (Object object : this.ruleAlgorithms.getItemIds()) {
-					RuleAlgorithms a = (RuleAlgorithms) this.ruleAlgorithms.getItem(object).getEntity();
-					if (a.getXacmlId().equals(((PolicyType)this.data).getRuleCombiningAlgId())) {
-						this.comboAlgorithms.select(object);
-						break;
-					}
-				}
-			}
-		} else {
-			//
-			// Creating a new policy
-			//
-			this.optionPolicySet.setValue("Policy Set");
-			this.comboAlgorithms.setContainerDataSource(policyAlgs);
-			this.comboAlgorithms.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-			this.comboAlgorithms.setItemCaptionPropertyId("xacmlId");
-			for (Object object : this.policyAlgorithms.getItemIds()) {
-				PolicyAlgorithms a = (PolicyAlgorithms) this.policyAlgorithms.getItem(object).getEntity();
-				if (a.getXacmlId().equals(XACML3.ID_POLICY_FIRST_APPLICABLE.stringValue())) {
-					this.comboAlgorithms.select(object);
-					break;
-				}
-			}
-			
-			this.optionPolicySet.addValueChangeListener(new ValueChangeListener() {
-				private static final long serialVersionUID = 1L;
-
-				@Override
-				public void valueChange(ValueChangeEvent event) {
-					if (self.optionPolicySet.getValue().toString().equals("Policy Set")) {
-						self.comboAlgorithms.setContainerDataSource(self.policyAlgorithms);
-						for (Object object : self.policyAlgorithms.getItemIds()) {
-							PolicyAlgorithms a = (PolicyAlgorithms) self.policyAlgorithms.getItem(object).getEntity();
-							if (a.getXacmlId().equals(XACML3.ID_POLICY_FIRST_APPLICABLE.stringValue())) {
-								self.comboAlgorithms.select(object);
-								break;
-							}
-						}
-					} else if (self.optionPolicySet.getValue().toString().equals("Policy")) {
-						self.comboAlgorithms.setContainerDataSource(self.ruleAlgorithms);
-						for (Object object : self.ruleAlgorithms.getItemIds()) {
-							RuleAlgorithms a = (RuleAlgorithms) self.ruleAlgorithms.getItem(object).getEntity();
-							if (a.getXacmlId().equals(XACML3.ID_RULE_FIRST_APPLICABLE.stringValue())) {
-								self.comboAlgorithms.select(object);
-								break;
-							}
-						}
-					}					
-				}
-				
-			});
-		}
-
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				//
-				// Make sure the policy filename was valid
-				//
-				if (self.textFieldPolicyName.isValid() == false) {
-					return;
-				}
-				//
-				// Grab the filename (NOTE: The user may or may not
-				// have changed the name).
-				//
-				self.filename = self.textFieldPolicyName.getValue();
-				//
-				// Make sure the filename ends with an extension
-				//
-				if (self.filename.endsWith(".xml") == false) {
-					self.filename = self.filename + ".xml";
-				}
-				//
-				// Set ourselves as saved
-				//
-				self.isSaved = true;
-				//
-				// Now grab the policy file's data
-				//
-				if (self.data == null) {
-					//
-					// This is a brand new Policy
-					//
-					if (self.optionPolicySet.getValue().toString().equals("Policy Set")) {
-						PolicySetType policySet = new PolicySetType();
-						policySet.setVersion("1");
-						policySet.setPolicySetId(((XacmlAdminUI)getUI()).newPolicyID());
-						policySet.setTarget(new TargetType());
-						self.data = policySet;
-					} else if (self.optionPolicySet.getValue().toString().equals("Policy")) {
-						PolicyType policy = new PolicyType();
-						policy.setVersion("1");
-						policy.setPolicyId(((XacmlAdminUI)getUI()).newPolicyID());
-						policy.setTarget(new TargetType());
-						self.data = policy;
-					} else {
-						logger.error("Policy option NOT setup correctly.");
-					}
-				}
-				if (self.data != null) {
-					//
-					// Save off everything
-					//
-					if (self.data instanceof PolicySetType) {
-						((PolicySetType)self.data).setDescription(self.textAreaDescription.getValue());
-						Object a = self.comboAlgorithms.getValue();
-						PolicyAlgorithms alg = (PolicyAlgorithms) ((JPAContainerItem<?>)self.comboAlgorithms.getItem(a)).getEntity();
-						((PolicySetType)self.data).setPolicyCombiningAlgId(alg.getXacmlId());
-					} else if (self.data instanceof PolicyType) {
-						((PolicyType)self.data).setDescription(self.textAreaDescription.getValue());
-						Object a = self.comboAlgorithms.getValue();
-						RuleAlgorithms alg = (RuleAlgorithms) ((JPAContainerItem<?>)self.comboAlgorithms.getItem(a)).getEntity();
-						((PolicyType)self.data).setRuleCombiningAlgId(alg.getXacmlId());
-					} else {
-						logger.error("Unsupported data object." + self.data.getClass().getCanonicalName());
-					}
-				}
-				//
-				// Now we can close the window
-				//
-				self.close();
-			}
-		});
-		
-		this.textFieldPolicyName.focus();
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public Object getPolicyData() {
-		if (this.isSaved) {
-			return this.data;
-		}
-		return null;
-	}
-	
-	public String getPolicyFilename() {
-		if (this.isSaved) {
-			return this.filename;
-		}
-		return null;
-	}
-
-	@AutoGenerated
-	private FormLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new FormLayout();
-		mainLayout.setImmediate(false);
-		
-		// textFieldPolicyName
-		textFieldPolicyName = new TextField();
-		textFieldPolicyName.setCaption("Policy File Name");
-		textFieldPolicyName.setImmediate(true);
-		textFieldPolicyName.setWidth("-1px");
-		textFieldPolicyName.setHeight("-1px");
-		textFieldPolicyName.setInputPrompt("Enter filename eg. foobar.xml");
-		textFieldPolicyName.setRequired(true);
-		mainLayout.addComponent(textFieldPolicyName);
-		
-		// textAreaDescription
-		textAreaDescription = new TextArea();
-		textAreaDescription.setCaption("Description");
-		textAreaDescription.setImmediate(false);
-		textAreaDescription.setWidth("100%");
-		textAreaDescription.setHeight("-1px");
-		textAreaDescription
-				.setInputPrompt("Enter a description for the Policy/PolicySet.");
-		textAreaDescription.setNullSettingAllowed(true);
-		mainLayout.addComponent(textAreaDescription);
-		
-		// optionPolicySet
-		optionPolicySet = new OptionGroup();
-		optionPolicySet.setCaption("Policy or PolicySet?");
-		optionPolicySet.setImmediate(true);
-		optionPolicySet
-				.setDescription("Is the root level a Policy or Policy Set.");
-		optionPolicySet.setWidth("-1px");
-		optionPolicySet.setHeight("-1px");
-		optionPolicySet.setRequired(true);
-		mainLayout.addComponent(optionPolicySet);
-		
-		// comboAlgorithms
-		comboAlgorithms = new ComboBox();
-		comboAlgorithms.setCaption("Combining Algorithm");
-		comboAlgorithms.setImmediate(false);
-		comboAlgorithms.setDescription("Select the combining algorithm.");
-		comboAlgorithms.setWidth("-1px");
-		comboAlgorithms.setHeight("-1px");
-		comboAlgorithms.setRequired(true);
-		mainLayout.addComponent(comboAlgorithms);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicySetEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicySetEditorWindow.java
deleted file mode 100644
index af2ae20..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicySetEditorWindow.java
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicySetType;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.PolicyAlgorithms;
-import org.apache.openaz.xacml.admin.util.JPAUtils;
-import org.apache.openaz.xacml.api.XACML3;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.validator.RegexpValidator;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.ListSelect;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class PolicySetEditorWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private TextArea textAreaDescription;
-	@AutoGenerated
-	private ListSelect listSelectAlgorithm;
-	@AutoGenerated
-	private TextField textFieldVersion;
-	@AutoGenerated
-	private Label labelID;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final PolicySetEditorWindow self = this;
-	private final PolicySetType policySet;
-	private JPAContainer<PolicyAlgorithms> algorithms = ((XacmlAdminUI)UI.getCurrent()).getPolicyAlgorithms();
-	private boolean isSaved = false;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PolicySetEditorWindow(PolicySetType policySet) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save
-		//
-		this.policySet = policySet;
-		//
-		// Close shortcut
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize GUI
-		//
-		this.initializeLabel();
-		this.initializeText();
-		this.initializeSelect();
-		this.initializeButton();
-		//
-		// Focus
-		//
-		this.textAreaDescription.focus();
-	}
-	
-	protected void initializeLabel() {
-		if (this.policySet.getPolicySetId() == null) {
-			this.policySet.setPolicySetId(((XacmlAdminUI)UI.getCurrent()).newPolicyID());
-		}
-		this.labelID.setValue(this.policySet.getPolicySetId());
-	}
-	
-	protected void initializeText() {
-		//
-		//
-		//
-		this.textAreaDescription.setNullRepresentation("");
-		this.textAreaDescription.setValue(this.policySet.getDescription());
-		//
-		//
-		//
-		if (this.policySet.getVersion() == null) {
-			this.policySet.setVersion("1");
-		}
-		this.textFieldVersion.setRequiredError("The exact format is: ((\\d+|\\*)\\.)*(\\d+|\\*|\\+)");
-		this.textFieldVersion.addValidator(new RegexpValidator("((\\d+|\\*)\\.)*(\\d+|\\*|\\+)", true, "The version MUST a number optionally separated by '.' eg. 1 or 1.0 or 1.1.1 etc."));
-		this.textFieldVersion.setValue(this.policySet.getVersion());
-	}
-	
-	protected void initializeSelect() {
-		this.listSelectAlgorithm.setContainerDataSource(this.algorithms);
-		this.listSelectAlgorithm.setItemCaptionMode(ItemCaptionMode.PROPERTY);
-		this.listSelectAlgorithm.setItemCaptionPropertyId("xacmlId");
-		this.listSelectAlgorithm.setNullSelectionAllowed(false);
-		
-		if (this.policySet.getPolicyCombiningAlgId() == null) {
-			this.policySet.setPolicyCombiningAlgId(XACML3.ID_POLICY_FIRST_APPLICABLE.stringValue());
-		}
-		this.listSelectAlgorithm.setValue(JPAUtils.findPolicyAlgorithm(this.policySet.getPolicyCombiningAlgId()).getId());
-	}
-	
-	protected void initializeButton() {
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Commit
-					//
-					self.listSelectAlgorithm.commit();
-					self.textFieldVersion.commit();
-					self.textAreaDescription.commit();
-					//
-					// Save everything
-					//
-					self.policySet.setDescription(self.textAreaDescription.getValue());
-					self.policySet.setVersion(self.textFieldVersion.getValue());
-					Object id = self.listSelectAlgorithm.getValue();
-					self.policySet.setPolicyCombiningAlgId(algorithms.getItem(id).getEntity().getXacmlId());
-					//
-					// Mark ourselves as saved
-					//
-					self.isSaved = true;
-					//
-					// Close window
-					//
-					self.close();
-				} catch (SourceException | InvalidValueException e) { //NOPMD
-					//
-					// VAADIN will show the required error message to the user
-					//
-				}
-			}
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public PolicySetType getPolicySet() {
-		return this.policySet;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// labelID
-		labelID = new Label();
-		labelID.setCaption("Policy Set ID");
-		labelID.setImmediate(false);
-		labelID.setWidth("100.0%");
-		labelID.setHeight("-1px");
-		labelID.setValue("Label");
-		mainLayout.addComponent(labelID);
-		
-		// textFieldVersion
-		textFieldVersion = new TextField();
-		textFieldVersion.setCaption("Version");
-		textFieldVersion.setImmediate(false);
-		textFieldVersion
-				.setDescription("The format is numbers only separated by decimal point.");
-		textFieldVersion.setWidth("-1px");
-		textFieldVersion.setHeight("-1px");
-		textFieldVersion.setInvalidAllowed(false);
-		textFieldVersion.setRequired(true);
-		textFieldVersion.setInputPrompt("Eg. 1 or 1.0 or 1.0.0 etc.");
-		mainLayout.addComponent(textFieldVersion);
-		
-		// listSelectAlgorithm
-		listSelectAlgorithm = new ListSelect();
-		listSelectAlgorithm.setCaption("Policy Combining Algorithm");
-		listSelectAlgorithm.setImmediate(false);
-		listSelectAlgorithm.setWidth("100.0%");
-		listSelectAlgorithm.setHeight("-1px");
-		listSelectAlgorithm.setInvalidAllowed(false);
-		listSelectAlgorithm.setRequired(true);
-		mainLayout.addComponent(listSelectAlgorithm);
-		
-		// textAreaDescription
-		textAreaDescription = new TextArea();
-		textAreaDescription.setCaption("Description");
-		textAreaDescription.setImmediate(false);
-		textAreaDescription.setWidth("100.0%");
-		textAreaDescription.setHeight("-1px");
-		mainLayout.addComponent(textAreaDescription);
-		mainLayout.setExpandRatio(textAreaDescription, 1.0f);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicyUploadWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicyUploadWindow.java
deleted file mode 100644
index 06afe28..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/PolicyUploadWindow.java
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import java.io.FileNotFoundException;
-import java.io.FileOutputStream;
-import java.io.OutputStream;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.CheckBox;
-import com.vaadin.ui.Upload;
-import com.vaadin.ui.Upload.Receiver;
-import com.vaadin.ui.Upload.SucceededEvent;
-import com.vaadin.ui.Upload.SucceededListener;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class PolicyUploadWindow extends Window implements Receiver, SucceededListener {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private CheckBox checkBoxImportAdvice;
-	@AutoGenerated
-	private CheckBox checkBoxImportObligations;
-	@AutoGenerated
-	private CheckBox checkBoxIgnoreStandard;
-	@AutoGenerated
-	private CheckBox checkBoxImportAttributes;
-	@AutoGenerated
-	private Upload upload;
-	private static final long serialVersionUID = 1L;
-	private final PolicyUploadWindow self = this;
-	private static final Log logger	= LogFactory.getLog(PolicyUploadWindow.class);
-	private Path directory = null;
-	private Path newfile = null;
-	private boolean succeeded = false;
-
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public PolicyUploadWindow(Path directory) {
-		buildMainLayout();
-		//
-		// Create our main layout
-		//
-		this.setContent(mainLayout);
-		//
-		// Finish setting up the main layout
-		//
-		this.mainLayout.setSpacing(true);
-		this.mainLayout.setMargin(true);
-		
-		this.checkBoxImportAdvice.setValue(true);
-		this.checkBoxIgnoreStandard.setValue(true);
-		this.checkBoxImportAttributes.setValue(true);
-		this.checkBoxImportObligations.setValue(true);
-		
-		this.directory = directory;
-
-		this.upload.addSucceededListener(this);
-		this.upload.setReceiver(this);
-		
-		this.checkBoxImportAttributes.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				if (self.checkBoxImportAttributes.getValue()) {
-					self.checkBoxIgnoreStandard.setEnabled(true);
-				} else {
-					self.checkBoxIgnoreStandard.setEnabled(false);
-				}
-			}
-			
-		});
-	}
-	
-	@Override
-	public OutputStream receiveUpload(String filename, String mimeType) {
-		//
-		// Validate the mime type
-		//
-		if (! mimeType.equalsIgnoreCase("text/xml")) {
-			return null;
-		}
-		//
-		// Create its new full path
-		//
-		this.newfile = Paths.get(self.directory.toString(), filename);
-		//
-		// Does it already exist?
-		//
-		if (Files.exists(this.newfile)) {
-			//
-			// TODO Prompt them to overwrite and/or bump the version???
-			//
-			return null;
-		}
-		//
-		// Try to create the output stream
-		//
-		try {
-			return new FileOutputStream(this.newfile.toFile());
-		} catch (FileNotFoundException e) {
-			logger.error("Failed to create uploaded file", e);
-		}
-		return null;
-	}
-	
-	@Override
-	public void uploadSucceeded(SucceededEvent event) {
-		if (logger.isDebugEnabled()) {
-			logger.debug("upload succeeded");
-		}
-		this.succeeded = true;
-		this.close();
-	}
-
-	public Path	getUploadedFile() {
-		if (this.succeeded) {
-			return this.newfile;
-		}
-		return null;
-	}
-	
-	public boolean importAttributes() {
-		return this.checkBoxImportAttributes.getValue();
-	}
-	
-	public boolean importObligations() {
-		return this.checkBoxImportObligations.getValue();
-	}
-	
-	public boolean importAdvice() {
-		return this.checkBoxImportAdvice.getValue();
-	}
-	
-	public boolean ignoreStandard() {
-		return this.checkBoxIgnoreStandard.getValue();
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// upload
-		upload = new Upload();
-		upload.setCaption("Upload Xacml Policy File");
-		upload.setImmediate(false);
-		upload.setWidth("-1px");
-		upload.setHeight("-1px");
-		mainLayout.addComponent(upload);
-		
-		// checkBoxImportAttributes
-		checkBoxImportAttributes = new CheckBox();
-		checkBoxImportAttributes
-				.setCaption("Import attributes into attribute dictionary.");
-		checkBoxImportAttributes.setImmediate(false);
-		checkBoxImportAttributes.setWidth("-1px");
-		checkBoxImportAttributes.setHeight("-1px");
-		mainLayout.addComponent(checkBoxImportAttributes);
-		
-		// checkBoxIgnoreStandard
-		checkBoxIgnoreStandard = new CheckBox();
-		checkBoxIgnoreStandard.setCaption("Ignore Standard Attributes");
-		checkBoxIgnoreStandard.setImmediate(false);
-		checkBoxIgnoreStandard.setWidth("-1px");
-		checkBoxIgnoreStandard.setHeight("-1px");
-		mainLayout.addComponent(checkBoxIgnoreStandard);
-		mainLayout.setComponentAlignment(checkBoxIgnoreStandard, new Alignment(
-				20));
-		
-		// checkBoxImportObligations
-		checkBoxImportObligations = new CheckBox();
-		checkBoxImportObligations
-				.setCaption("Import obligations into obligation dictionary.");
-		checkBoxImportObligations.setImmediate(false);
-		checkBoxImportObligations.setWidth("-1px");
-		checkBoxImportObligations.setHeight("-1px");
-		mainLayout.addComponent(checkBoxImportObligations);
-		
-		// checkBoxImportAdvice
-		checkBoxImportAdvice = new CheckBox();
-		checkBoxImportAdvice
-				.setCaption("Import advice into advice dictionary.");
-		checkBoxImportAdvice.setImmediate(false);
-		checkBoxImportAdvice.setWidth("-1px");
-		checkBoxImportAdvice.setHeight("-1px");
-		mainLayout.addComponent(checkBoxImportAdvice);
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/RenamePolicyFileWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/RenamePolicyFileWindow.java
deleted file mode 100644
index 3b9ade9..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/RenamePolicyFileWindow.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-// import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class RenamePolicyFileWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private TextField textFieldFilename;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private RenamePolicyFileWindow self = this;
-	private String newFilename = null;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public RenamePolicyFileWindow(String currentFilename) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize the text field
-		//
-		this.textFieldFilename.setValue(currentFilename);
-		this.textFieldFilename.setImmediate(true);
-		this.textFieldFilename.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				if (event.getText() == null || event.getText().isEmpty()) {
-					self.buttonSave.setEnabled(false);
-				} else {
-					self.buttonSave.setEnabled(true);
-				}
-			}
-		});
-		//
-		// Initialize the button
-		//
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				//
-				// Save the value
-				//
-				self.newFilename = self.textFieldFilename.getValue();
-				//
-				// Make sure it ends with .xml
-				//
-				if (self.newFilename.endsWith(".xml") == false) {
-					self.newFilename = self.newFilename + ".xml";
-				}
-				//
-				// Close the window
-				//
-				self.close();
-			}
-		});
-		this.textFieldFilename.focus();
-	}
-	
-	public String getNewFilename() {
-		return this.newFilename;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldFilename
-		textFieldFilename = new TextField();
-		textFieldFilename.setCaption("Policy File Name");
-		textFieldFilename.setImmediate(false);
-		textFieldFilename.setWidth("-1px");
-		textFieldFilename.setHeight("-1px");
-		mainLayout.addComponent(textFieldFilename);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(false);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(24));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/RuleEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/RuleEditorWindow.java
deleted file mode 100644
index e6baf44..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/RuleEditorWindow.java
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.EffectType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.RuleType;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.Label;
-import com.vaadin.ui.OptionGroup;
-import com.vaadin.ui.TextArea;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class RuleEditorWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private TextArea textAreaDescription;
-	@AutoGenerated
-	private OptionGroup optionGroupEffect;
-	@AutoGenerated
-	private Label labelRuleID;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final RuleEditorWindow self = this;
-	private final RuleType rule;
-	private boolean isSaved = false;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public RuleEditorWindow(RuleType rule) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save
-		//
-		this.rule = rule;
-		//
-		// Close shortcut
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize
-		//
-		this.initializeLabel();
-		this.initializeOption();
-		this.initializeText();
-		this.initializeButton();
-	}
-	
-	protected void initializeLabel() {
-		if (this.rule.getRuleId() == null) {
-			this.rule.setRuleId(((XacmlAdminUI)UI.getCurrent()).newRuleID());
-		}
-		this.labelRuleID.setValue(this.rule.getRuleId());
-	}
-
-	protected void initializeOption() {
-		this.optionGroupEffect.setRequiredError("You MUST select an effect (Permit or Deny for the rule.");
-		this.optionGroupEffect.addItem("Permit");
-		this.optionGroupEffect.addItem("Deny");
-		if (this.rule.getEffect() == null) {
-			this.rule.setEffect(EffectType.PERMIT);
-		}
-		if (this.rule.getEffect() == EffectType.PERMIT) {
-			this.optionGroupEffect.setValue("Permit");
-		} else {
-			this.optionGroupEffect.setValue("Deny");
-		}
-	}
-
-	protected void initializeText() {
-		this.textAreaDescription.setValue(this.rule.getDescription());
-	}
-
-	protected void initializeButton() {
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Commit
-					//
-					self.optionGroupEffect.commit();
-					self.textAreaDescription.commit();
-					//
-					// Save everything
-					//
-					if (self.optionGroupEffect.getValue() == "Permit") {
-						self.rule.setEffect(EffectType.PERMIT);
-					} else {
-						self.rule.setEffect(EffectType.DENY);
-					}
-					self.rule.setDescription(self.textAreaDescription.getValue());
-					//
-					// Set ourselves as saved
-					//
-					self.isSaved = true;
-					//
-					// Close the window
-					//
-					self.close();
-				} catch (SourceException | InvalidValueException e) { //NOPMD
-					//
-					// VAADIN will show the required error message to the user
-					//
-				}
-			}			
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public RuleType getRule() {
-		return this.rule;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// labelRuleID
-		labelRuleID = new Label();
-		labelRuleID.setCaption("Rule ID");
-		labelRuleID.setImmediate(false);
-		labelRuleID.setWidth("100.0%");
-		labelRuleID.setHeight("-1px");
-		labelRuleID.setValue("Label");
-		mainLayout.addComponent(labelRuleID);
-		mainLayout.setExpandRatio(labelRuleID, 1.0f);
-		
-		// optionGroupEffect
-		optionGroupEffect = new OptionGroup();
-		optionGroupEffect.setCaption("Choose the effect.");
-		optionGroupEffect.setImmediate(false);
-		optionGroupEffect.setWidth("-1px");
-		optionGroupEffect.setHeight("-1px");
-		optionGroupEffect.setInvalidAllowed(false);
-		optionGroupEffect.setRequired(true);
-		mainLayout.addComponent(optionGroupEffect);
-		
-		// textAreaDescription
-		textAreaDescription = new TextArea();
-		textAreaDescription.setCaption("Enter a description for the Rule.");
-		textAreaDescription.setImmediate(false);
-		textAreaDescription.setWidth("100.0%");
-		textAreaDescription.setHeight("-1px");
-		textAreaDescription.setNullSettingAllowed(true);
-		textAreaDescription.setNullRepresentation("");
-		mainLayout.addComponent(textAreaDescription);
-		mainLayout.setExpandRatio(textAreaDescription, 1.0f);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/SelectPDPGroupWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/SelectPDPGroupWindow.java
deleted file mode 100644
index fd3d8cb..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/SelectPDPGroupWindow.java
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import java.util.Set;
-
-import org.apache.openaz.xacml.api.pap.PDPGroup;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.AbstractSelect.ItemCaptionMode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.ListSelect;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class SelectPDPGroupWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private ListSelect listSelectPDPGroup;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final SelectPDPGroupWindow self = this;
-	
-	private boolean saved = false;
-	
-	private PDPGroup selectedGroup = null;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	// TODO - Refactor.  Unused formal parameter: caption. Either determine
-	// that this parameter is unnecessary and remove it (including removing
-	// it from all constructor method consumers), or use it.
-	// NOTE: Setting to NOPMD for now.
-	public SelectPDPGroupWindow(Set<PDPGroup> groups, String caption) { //NOPMD
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Setup the shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		//
-		// initialize
-		//
-		this.initialize(groups);
-		//
-		// Focus
-		//
-		this.listSelectPDPGroup.focus();
-		//
-		// setup the button
-		//
-		this.setupButtons();
-	}
-	
-	protected void initialize(Set<PDPGroup> groups) {
-		//
-		// Initialize the list
-		//
-		this.initializeSelect(groups);
-		//
-		// Buttons
-		//
-		this.initializeButtons();
-	}
-	
-	protected void initializeButtons() {
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				//
-				// Get the selected value
-				//
-				self.selectedGroup = (PDPGroup) self.listSelectPDPGroup.getValue();
-				assert self.selectedGroup != null;
-				//
-				// Mark ourselves as saved
-				//
-				self.saved = true;
-				//
-				// Close window
-				//
-				self.close();
-			}
-		});
-	}
-	
-	public boolean isSaved() {
-		return saved;
-	}
-	
-	public PDPGroup selectedGroup() {
-		return this.selectedGroup;
-	}
-	
-	private void initializeSelect(Set<PDPGroup> groups) {
-		//
-		// Initialize GUI properties
-		//
-		this.listSelectPDPGroup.setImmediate(true);
-		this.listSelectPDPGroup.setItemCaptionMode(ItemCaptionMode.EXPLICIT);
-		this.listSelectPDPGroup.setNullSelectionAllowed(false);
-		this.listSelectPDPGroup.setNewItemsAllowed(false);
-		this.listSelectPDPGroup.setMultiSelect(false);
-		//
-		// Add items
-		//
-		for (PDPGroup group : groups) {
-			this.listSelectPDPGroup.addItem(group);
-			this.listSelectPDPGroup.setItemCaption(group, group.getName());
-		}
-		//
-		// Listen to events
-		//
-		this.listSelectPDPGroup.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				self.setupButtons();
-			}
-		});
-	}
-	
-	protected void setupButtons() {
-		if (self.listSelectPDPGroup.getValue() == null) {
-			self.buttonSave.setEnabled(false);
-		} else {
-			self.buttonSave.setEnabled(true);
-		}
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// listSelectPDPGroup
-		listSelectPDPGroup = new ListSelect();
-		listSelectPDPGroup.setImmediate(false);
-		listSelectPDPGroup.setWidth("-1px");
-		listSelectPDPGroup.setHeight("-1px");
-		listSelectPDPGroup.setInvalidAllowed(false);
-		listSelectPDPGroup.setRequired(true);
-		mainLayout.addComponent(listSelectPDPGroup);
-		mainLayout.setExpandRatio(listSelectPDPGroup, 1.0f);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/SelectPIPConfigurationWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/SelectPIPConfigurationWindow.java
deleted file mode 100644
index dfa92ee..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/SelectPIPConfigurationWindow.java
+++ /dev/null
@@ -1,217 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Set;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.jpa.PIPConfiguration;
-import org.apache.openaz.xacml.api.pap.PDPGroup;
-import org.apache.openaz.xacml.api.pap.PDPPIPConfig;
-import org.apache.openaz.xacml.std.pap.StdPDPPIPConfig;
-import com.vaadin.addon.jpacontainer.EntityItem;
-import com.vaadin.addon.jpacontainer.JPAContainer;
-import com.vaadin.addon.jpacontainer.provider.CachingLocalEntityProvider;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-// import com.vaadin.ui.CustomComponent;
-import com.vaadin.ui.Table;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class SelectPIPConfigurationWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private Table table;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(SelectPIPConfigurationWindow.class);
-	private final SelectPIPConfigurationWindow self = this;
-	private final JPAContainer<PIPConfiguration>	container = new JPAContainer<PIPConfiguration>(PIPConfiguration.class);
-	private boolean isSaved = false;
-	private Set<PDPPIPConfig> selectedConfigs = null;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public SelectPIPConfigurationWindow(PDPGroup group) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Initialize
-		//
-		this.initialize(group);
-	}
-	
-	protected void initialize(PDPGroup group) {
-		//
-		// Setup the container
-		//
-		this.container.setEntityProvider(new CachingLocalEntityProvider<PIPConfiguration>(PIPConfiguration.class, ((XacmlAdminUI)UI.getCurrent()).getEntityManager()));
-
-		this.initializeTable(group);
-		this.initializeButton();
-	}
-
-	protected void initializeTable(PDPGroup group) {
-		//
-		// GUI properties
-		//
-		this.table.setContainerDataSource(this.container);
-		this.table.setImmediate(true);
-		this.table.setSelectable(true);
-		this.table.setMultiSelect(true);
-		this.table.setPageLength(this.container.size() > 10 ? 10 : this.container.size());
-		this.table.setVisibleColumns("name", "description");
-		//
-		// Pre-select the group's configurations
-		//
-		for (PDPPIPConfig config : group.getPipConfigs()) {
-			try {
-				Integer id = Integer.parseInt(config.getId());
-				if (this.container.containsId(id)) {
-					this.table.select(id);
-				}
-			} catch (NumberFormatException e) {
-				logger.error("invalid config id: " + config.getId());
-			}
-		}
-	}
-
-	protected void initializeButton() {
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				//
-				// Commit the table so we have everything that was selected
-				//
-				self.table.commit();
-				//
-				// We are going to fill this structure
-				//
-				self.selectedConfigs = new HashSet<PDPPIPConfig>();
-				//
-				// Get all the selected values
-				//
-				Object values = self.table.getValue();
-				if (values != null && values instanceof Collection) {
-					Collection<?> ids = (Collection<?>) values;
-					for (Object id : ids) {
-						//
-						// Get the entity
-						//
-						EntityItem<PIPConfiguration> entity = self.container.getItem(id);
-						PIPConfiguration config = entity.getEntity();
-						//
-						// Create object needed by PAP REST
-						//
-						StdPDPPIPConfig pipConfig = new StdPDPPIPConfig();
-						pipConfig.setId(Integer.toString(config.getId()));
-						pipConfig.setClassname(config.getClassname());
-						pipConfig.setName(config.getName());
-						pipConfig.setDescription(config.getDescription());
-						Map<String, String> map = config.getConfiguration(null);
-						pipConfig.setValues(map);
-						//
-						// Add it to the saved Set
-						//
-						self.selectedConfigs.add(pipConfig);
-					}
-				}
-				//
-				// Mark ourselves as saved
-				//
-				self.isSaved = true;
-				//
-				// Close the window
-				//
-				self.close();
-			}
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public Set<PDPPIPConfig> getSelectedConfigs() {
-		return this.selectedConfigs;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// table
-		table = new Table();
-		table.setCaption("PIP Configurations");
-		table.setImmediate(false);
-		table.setWidth("-1px");
-		table.setHeight("-1px");
-		mainLayout.addComponent(table);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(false);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/SelectWorkspacePoliciesWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/SelectWorkspacePoliciesWindow.java
deleted file mode 100644
index 93cea8c..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/SelectWorkspacePoliciesWindow.java
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import java.io.File;
-import java.io.FilenameFilter;
-import java.io.IOException;
-import java.net.URI;
-import java.nio.file.Files;
-import java.nio.file.Path;
-import java.nio.file.Paths;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import org.apache.openaz.xacml.admin.XacmlAdminUI;
-import org.apache.openaz.xacml.admin.model.GitRepositoryContainer;
-import org.apache.openaz.xacml.admin.model.GitRepositoryContainer.FileItem;
-import org.apache.openaz.xacml.admin.util.AdminNotification;
-import org.apache.openaz.xacml.std.pap.StdPDPPolicy;
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.event.ItemClickEvent;
-import com.vaadin.event.ItemClickEvent.ItemClickListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.TreeTable;
-import com.vaadin.ui.UI;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class SelectWorkspacePoliciesWindow extends Window {
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-
-	@AutoGenerated
-	private Button buttonSave;
-
-	@AutoGenerated
-	private TreeTable treeWorkspace;
-
-	private static Log	logger	= LogFactory.getLog(SelectWorkspacePoliciesWindow.class);
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final SelectWorkspacePoliciesWindow self = this;
-	private GitRepositoryContainer treeContainer;
-	private boolean isSaved = false;
-	private StdPDPPolicy selectedPolicy = null;
-	
-	
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public SelectWorkspacePoliciesWindow() {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		//
-		//
-		//
-		this.initializeTree();
-		this.initializeButton();
-		//
-		//
-		//
-		this.treeWorkspace.focus();
-	}
-	
-	protected void initializeTree() {
-		//
-		// This is where the user's Git repository is located
-		//
-		final Path gitPath = ((XacmlAdminUI)UI.getCurrent()).getUserGitPath();
-		//
-		// Create our Git file system container
-		//
-		this.treeContainer = new GitRepositoryContainer(gitPath, gitPath.toFile());
-		//
-		// Create our own filter to filter out File extensions and
-		// also the Git directory.
-		//
-		this.treeContainer.setFilter(new FilenameFilter() {
-
-			@Override
-			public boolean accept(File dir, String name) {
-				//
-				// We don't want any of the hidden files
-				//
-				if (name.startsWith(".git") || name.equals(".DS_Store")) {
-					return false;
-				}
-				//
-				// We definitely want xml files
-				//
-				if (name.endsWith(".xml")) {
-					return true;
-				}
-				//
-				// We should test if its a directory, we want those
-				// included.
-				//
-				Path path = Paths.get(dir.getAbsolutePath(), name);
-				if (Files.isDirectory(path)) {
-					return true;
-				}
-				logger.warn("Filtering out: " + path.toString());
-				return false;
-			}
-			
-		});
-		//
-		// Set TreeTables datasource as our git container
-		//
-		this.treeWorkspace.setContainerDataSource(this.treeContainer);
-		//
-		// Setup other properties etc.
-		//
-		this.treeWorkspace.setItemIconPropertyId("Icon");
-		this.treeWorkspace.setVisibleColumns(new Object[]{"Name", "Version", "Size", "Last Modified", "Status"});
-		this.treeWorkspace.setSizeFull();
-		this.treeWorkspace.setSelectable(true);
-		this.treeWorkspace.setEditable(false);
-		//
-		// Expand the first couple of directories
-		//
-		for (Object id : this.treeWorkspace.getItemIds()) {
-			this.treeWorkspace.setCollapsed(id, false);
-			for (Object child : this.treeWorkspace.getChildren(id)) {
-				this.treeWorkspace.setCollapsed(child, false);
-			}
-		}
-		//
-		// Respond to table selections
-		//
-		this.treeWorkspace.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				if (self.treeWorkspace.getValue() != null) {
-					self.buttonSave.setEnabled(true);
-				} else {
-					self.buttonSave.setEnabled(false);
-				}
-			}
-		});
-		//
-		// Double-click events
-		//
-		this.treeWorkspace.addItemClickListener(new ItemClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void itemClick(ItemClickEvent event) {
-				if (event.isDoubleClick()) {
-					//
-					// Save and close
-					//
-					self.doSave();
-				}
-			}
-		});
-	}
-	
-	protected void initializeButton() {
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				assert treeWorkspace.getValue() != null;
-				//
-				// Save everything
-				//
-				self.doSave();
-			}
-		});
-	}
-	
-	protected void doSave() {
-		//
-		// Get the current selection
-		//
-		FileItem selectedItem = (FileItem) this.treeWorkspace.getItem(this.treeWorkspace.getValue());
-		//
-		//
-		//
-		assert selectedItem != null;
-		if (selectedItem == null) {
-			return;
-		}
-		
-		// create the id of the target file
-		
-		// Our standard for file naming is:
-		//		<domain>.<filename>.<version>.xml
-		
-		// since the file name usually has a ".xml", we need to strip that before adding the other parts
-		String name = selectedItem.getName();
-		String id = name;
-		if (id.endsWith(".xml")) {
-			id = id.substring(0, id.length() - 4);
-		}
-		
-		// add on the version string
-
-		String version = selectedItem.getVersion();
-		id += "." + version;
-		
-		// put the .xml on the end
-		id += ".xml";
-		
-		// tack on the domain in front.  Do this one level at a time until we reach one of the roots
-	
-
-		File parentFile = selectedItem.getFile();
-		while ((parentFile = (File) this.treeWorkspace.getParent(parentFile)) != null) {
-			if (this.treeContainer.isRoot(parentFile)) {
-				break;
-			}
-			id = parentFile.getName() + "." + id;
-		}
-		
-		// Default policy to be Root policy;  user can change to deferred later
-		URI selectedURI = selectedItem.getFile().toURI();
-		try {
-			//
-			// Create the policy
-			//
-			this.selectedPolicy = new StdPDPPolicy(id, true, name, selectedURI);
-			//
-			// Mark ourselves as saved
-			//
-			this.isSaved = true;
-		} catch (IOException e) {
-			logger.error("Unable to create policy '" + id + "': " + e.getMessage());
-			AdminNotification.warn("Unable to create policy '" + id + "': " + e.getMessage());
-		}
-
-		//
-		// Close the window
-		//
-		this.close();
-	}
-
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public StdPDPPolicy getSelectedPolicy() {
-		return this.selectedPolicy;
-	}
-
-	
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// treeWorkspace
-		treeWorkspace = new TreeTable();
-		treeWorkspace.setCaption("Select Policy(s) for PDP Group");
-		treeWorkspace.setImmediate(true);
-		treeWorkspace.setWidth("100.0%");
-		treeWorkspace.setHeight("-1px");
-		mainLayout.addComponent(treeWorkspace);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(false);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-
-	
-	
-	
-	
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/SubDomainEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/SubDomainEditorWindow.java
deleted file mode 100644
index 0e38a67..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/SubDomainEditorWindow.java
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.vaadin.annotations.AutoGenerated;
-// import com.vaadin.data.Property.ValueChangeEvent;
-// import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.data.validator.RegexpValidator;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.FormLayout;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.Window;
-
-public class SubDomainEditorWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private FormLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private TextField textFieldSubdomain;
-
-	//
-	// Full domain pattern:
-	// "^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])(.([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9]))*$";
-	//
-	// We just want one part of it.
-	//
-	private static final String SUBDOMAIN_NAME_PATTERN = "^([a-zA-Z0-9]|[a-zA-Z0-9][a-zA-Z0-9-]{0,61}[a-zA-Z0-9])$";
-	private static final String ERROR_MESSAGE = "Either enter a single subdomain via RFC1123 - letters, digits and a hyphen. Cannot start or end with a hyphen.";
-	
-	private static final long serialVersionUID = 1L;
-	private static final Log logger	= LogFactory.getLog(SubDomainEditorWindow.class);
-	private final SubDomainEditorWindow self = this;
-	private boolean saved = false;
-	private String subdomain = null;
-	
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public SubDomainEditorWindow(String subdomain) {
-		buildMainLayout();
-		setContent(mainLayout);
-		//
-		// Save
-		//
-		this.subdomain = subdomain;
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize
-		//
-		this.initializeTextField();
-		this.initializeButtons();
-		//
-		// Focus
-		//
-		this.textFieldSubdomain.focus();
-	}
-	
-	protected void initializeTextField() {
-		this.textFieldSubdomain.setRequired(true);
-		this.textFieldSubdomain.setRequiredError("Please enter a valid sub domain");
-		//
-		// Validate the name entered
-		//
-		this.textFieldSubdomain.addValidator(new RegexpValidator(SUBDOMAIN_NAME_PATTERN, true, ERROR_MESSAGE) {
-			private static final long serialVersionUID = 1L;
-			
-		});
-		//
-		// Respond to events
-		//
-		this.textFieldSubdomain.setImmediate(true);
-		this.textFieldSubdomain.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				if (event.getText() != null && event.getText().length() > 0) {
-					self.buttonSave.setEnabled(true);
-				} else {
-					self.buttonSave.setEnabled(false);
-				}
-			}
-			
-		});
-	}
-	
-	protected void initializeButtons() {
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		this.buttonSave.setEnabled(false);
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Make sure the text is valid
-					//
-					self.textFieldSubdomain.validate();
-					//
-					// Parse our the subdomain parts
-					//
-					self.subdomain = self.textFieldSubdomain.getValue();
-					self.saved = true;
-					//
-					// Close it up
-					//
-					self.close();
-				} catch (InvalidValueException e) {
-					logger.error(e);
-				}
-			}
-			
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.saved;
-	}
-	
-	public String	getSubDomain() {
-		return this.subdomain;
-	}
-
-	@AutoGenerated
-	private FormLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new FormLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldSubdomain
-		textFieldSubdomain = new TextField();
-		textFieldSubdomain.setCaption("Enter Sub Domain");
-		textFieldSubdomain.setImmediate(false);
-		textFieldSubdomain
-				.setDescription("You can enter sub domain name - do not use spaces or wildcard characters.");
-		textFieldSubdomain.setWidth("-1px");
-		textFieldSubdomain.setHeight("-1px");
-		textFieldSubdomain.setInvalidAllowed(false);
-		textFieldSubdomain
-				.setInputPrompt("Examples: sales hr business marketing.");
-		mainLayout.addComponent(textFieldSubdomain);
-		mainLayout.setExpandRatio(textFieldSubdomain, 1.0f);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/VariableDefinitionEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/VariableDefinitionEditorWindow.java
deleted file mode 100644
index bec843e..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/VariableDefinitionEditorWindow.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableDefinitionType;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class VariableDefinitionEditorWindow extends Window {
-
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private TextField textFieldID;
-	/**
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private final VariableDefinitionEditorWindow self = this;
-	private final VariableDefinitionType variable;
-	private boolean isSaved = false;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public VariableDefinitionEditorWindow(VariableDefinitionType variable) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save
-		//
-		this.variable = variable;
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize
-		//
-		this.initializeText();
-		this.initializeButton();
-		//
-		// Initial focus
-		//
-		this.textFieldID.focus();
-	}
-	
-	protected void initializeText() {
-		//
-		// Initialize GUI properties
-		//
-		this.textFieldID.setImmediate(true);
-		//
-		// Listen to changes
-		//
-		this.textFieldID.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				if (event.getText() != null && event.getText().isEmpty() == false) {
-					self.buttonSave.setEnabled(true);
-				} else {
-					self.buttonSave.setEnabled(false);
-				}
-			}
-			
-		});
-		this.textFieldID.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				if (self.textFieldID.getValue() != null && self.textFieldID.getValue().isEmpty() == false) {
-					self.buttonSave.setEnabled(true);
-				} else {
-					self.buttonSave.setEnabled(false);
-				}
-			}			
-		});
-		//
-		// Set the value
-		//
-		this.textFieldID.setValue(variable.getVariableId());
-	}
-	
-	protected void initializeButton() {
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Commit it
-					//
-					self.textFieldID.commit();
-					//
-					// Save it
-					//
-					self.variable.setVariableId(self.textFieldID.getValue());
-					self.isSaved = true;
-					//
-					// Close window
-					//
-					self.close();
-				} catch (SourceException | InvalidValueException e) { //NOPMD
-					// Vaadin will display error
-					// TODO - Verify that Vaadin will display error and update this
-					//        inline documentation accordingly
-				}
-			}			
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public VariableDefinitionType getVariable() {
-		return this.variable;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// textFieldID
-		textFieldID = new TextField();
-		textFieldID.setCaption("Variable ID");
-		textFieldID.setImmediate(false);
-		textFieldID.setWidth("-1px");
-		textFieldID.setHeight("-1px");
-		textFieldID.setInvalidAllowed(false);
-		textFieldID.setRequired(true);
-		textFieldID.setNullRepresentation("");
-		mainLayout.addComponent(textFieldID);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save and Continue");
-		buttonSave.setImmediate(false);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/VariableReferenceEditorWindow.java b/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/VariableReferenceEditorWindow.java
deleted file mode 100644
index 53b47c4..0000000
--- a/openaz-xacml-pap-admin/src/main/java/org/apache/openaz/xacml/admin/view/windows/VariableReferenceEditorWindow.java
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- *
- */
-
-package org.apache.openaz.xacml.admin.view.windows;
-
-import java.util.Map;
-
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.PolicyType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableDefinitionType;
-import oasis.names.tc.xacml._3_0.core.schema.wd_17.VariableReferenceType;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-
-import com.vaadin.annotations.AutoGenerated;
-import com.vaadin.data.Buffered.SourceException;
-import com.vaadin.data.Property.ValueChangeEvent;
-import com.vaadin.data.Property.ValueChangeListener;
-import com.vaadin.data.Validator.InvalidValueException;
-import com.vaadin.event.FieldEvents.TextChangeEvent;
-import com.vaadin.event.FieldEvents.TextChangeListener;
-import com.vaadin.event.ShortcutAction.KeyCode;
-import com.vaadin.ui.Alignment;
-import com.vaadin.ui.Button;
-import com.vaadin.ui.Button.ClickEvent;
-import com.vaadin.ui.Button.ClickListener;
-import com.vaadin.ui.ListSelect;
-import com.vaadin.ui.TextField;
-import com.vaadin.ui.VerticalLayout;
-import com.vaadin.ui.Window;
-
-public class VariableReferenceEditorWindow extends Window {
-	/*- VaadinEditorProperties={"grid":"RegularGrid,20","showGrid":true,"snapToGrid":true,"snapToObject":true,"movingGuides":false,"snappingDistance":10} */
-
-	@AutoGenerated
-	private VerticalLayout mainLayout;
-	@AutoGenerated
-	private Button buttonSave;
-	@AutoGenerated
-	private TextField textFieldVariable;
-	@AutoGenerated
-	private ListSelect listSelectVariables;
-	/*
-	 * 
-	 */
-	private static final long serialVersionUID = 1L;
-	private static Log logger	= LogFactory.getLog(VariableReferenceEditorWindow.class);
-	private final VariableReferenceEditorWindow self = this;
-	private final VariableReferenceType variable;
-	private boolean isSaved = false;
-	/**
-	 * The constructor should first build the main layout, set the
-	 * composition root and then do any custom initialization.
-	 *
-	 * The constructor will not be automatically regenerated by the
-	 * visual editor.
-	 */
-	public VariableReferenceEditorWindow(VariableReferenceType variable, Map<VariableDefinitionType, PolicyType> variables) {
-		buildMainLayout();
-		//setCompositionRoot(mainLayout);
-		setContent(mainLayout);
-		//
-		// Save parameters
-		//
-		this.variable = variable;
-		//
-		// Set our shortcuts
-		//
-		this.setCloseShortcut(KeyCode.ESCAPE);
-		//
-		// Initialize
-		//
-		this.initializeTextField();
-		this.initializeSelect(variables);
-		this.initializeButtons();
-		//
-		// Focus
-		//
-		this.textFieldVariable.focus();
-	}
-	
-	protected void initializeTextField() {
-		this.textFieldVariable.setImmediate(true);
-		this.textFieldVariable.setNullRepresentation("");
-		this.textFieldVariable.addTextChangeListener(new TextChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void textChange(TextChangeEvent event) {
-				if (event.getText() != null && event.getText().isEmpty() == false) {
-					self.buttonSave.setEnabled(true);
-				} else {
-					self.buttonSave.setEnabled(false);
-				}
-			}
-			
-		});
-		this.textFieldVariable.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				String value = self.textFieldVariable.getValue();
-				if (value == null || value.isEmpty()) {
-					self.buttonSave.setEnabled(false);
-				} else {
-					self.buttonSave.setEnabled(true);
-				}
-			}
-		});
-		if (this.variable != null) {
-			this.textFieldVariable.setValue(this.variable.getVariableId());
-		}
-	}
-
-	protected void initializeSelect(Map<VariableDefinitionType, PolicyType> vars) {
-		//
-		// Add existing variables into the table
-		//
-		if (vars != null) {
-			for (VariableDefinitionType var : vars.keySet()) {
-				this.listSelectVariables.addItem(var.getVariableId());
-			}
-		}
-		//
-		// Respond to changes
-		//
-		this.listSelectVariables.setImmediate(true);
-		this.listSelectVariables.addValueChangeListener(new ValueChangeListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void valueChange(ValueChangeEvent event) {
-				Object value = self.listSelectVariables.getValue();
-				if (value != null) {
-					self.textFieldVariable.setValue(value.toString());
-				}
-			}			
-		});
-	}
-	
-	protected void initializeButtons() {
-		this.buttonSave.setClickShortcut(KeyCode.ENTER);
-		this.buttonSave.addClickListener(new ClickListener() {
-			private static final long serialVersionUID = 1L;
-
-			@Override
-			public void buttonClick(ClickEvent event) {
-				try {
-					//
-					// Commit
-					//
-					self.textFieldVariable.commit();
-					//
-					// Now we can save
-					//
-					self.isSaved = true;
-					self.variable.setVariableId(self.textFieldVariable.getValue());
-					//
-					// And close the window
-					//
-					self.close();
-				} catch (SourceException | InvalidValueException e) {
-					logger.error("Commit variable id: " + e);
-				}
-			}			
-		});
-	}
-	
-	public boolean isSaved() {
-		return this.isSaved;
-	}
-	
-	public VariableReferenceType getVariableReference() {
-		return this.variable;
-	}
-
-	@AutoGenerated
-	private VerticalLayout buildMainLayout() {
-		// common part: create layout
-		mainLayout = new VerticalLayout();
-		mainLayout.setImmediate(false);
-		mainLayout.setWidth("-1px");
-		mainLayout.setHeight("-1px");
-		mainLayout.setMargin(true);
-		mainLayout.setSpacing(true);
-		
-		// top-level component properties
-		setWidth("-1px");
-		setHeight("-1px");
-		
-		// listSelectVariables
-		listSelectVariables = new ListSelect();
-		listSelectVariables.setCaption("Defined Variables");
-		listSelectVariables.setImmediate(false);
-		listSelectVariables.setWidth("100.0%");
-		listSelectVariables.setHeight("-1px");
-		mainLayout.addComponent(listSelectVariables);
-		mainLayout.setExpandRatio(listSelectVariables, 1.0f);
-		
-		// textFieldVariable
-		textFieldVariable = new TextField();
-		textFieldVariable.setCaption("Variable");
-		textFieldVariable.setImmediate(false);
-		textFieldVariable.setWidth("-1px");
-		textFieldVariable.setHeight("-1px");
-		textFieldVariable.setInvalidAllowed(false);
-		textFieldVariable.setRequired(true);
-		textFieldVariable.setInputPrompt("Eg. \"12345\" or \"myVariable1\"");
-		mainLayout.addComponent(textFieldVariable);
-		mainLayout.setExpandRatio(textFieldVariable, 1.0f);
-		
-		// buttonSave
-		buttonSave = new Button();
-		buttonSave.setCaption("Save");
-		buttonSave.setImmediate(true);
-		buttonSave.setWidth("-1px");
-		buttonSave.setHeight("-1px");
-		mainLayout.addComponent(buttonSave);
-		mainLayout.setComponentAlignment(buttonSave, new Alignment(48));
-		
-		return mainLayout;
-	}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/resources/META-INF/data.sql b/openaz-xacml-pap-admin/src/main/resources/META-INF/data.sql
deleted file mode 100644
index a679b4d..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/META-INF/data.sql
+++ /dev/null
@@ -1,723 +0,0 @@
-INSERT INTO ConstraintType (id, constraint_type, description) VALUES (1,'Range','Set a range of min and/or max integer/double values the attribute can be set to during policy creation.');
-INSERT INTO ConstraintType (id, constraint_type, description) VALUES (2,'Regular Expression','Define a regular expression the attribute must match against during policy creation.');
-INSERT INTO ConstraintType (id, constraint_type, description) VALUES (3,'Enumeration','Enumerate a set of values that the attribute may be set to during policy creation.');
-
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (4,'subject','S','urn:oasis:names:tc:xacml:1.0:subject-category:intermediary-subject','intermediary-subject');
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (5,'resource','S','urn:oasis:names:tc:xacml:3.0:attribute-category:resource','resource');
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (6,'subject','S','urn:oasis:names:tc:xacml:1.0:subject-category:codebase','codebase');
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (7,'action','S','urn:oasis:names:tc:xacml:3.0:attribute-category:action','action');
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (8,'subject','S','urn:oasis:names:tc:xacml:1.0:subject-category:access-subject','access-subject');
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (9,'environment','S','urn:oasis:names:tc:xacml:3.0:attribute-category:environment','environment');
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (10,'subject','S','urn:oasis:names:tc:xacml:1.0:subject-category:requesting-machine','requesting-machine');
-INSERT INTO Category (id, grouping, is_standard, xacml_id, short_name) VALUES (11,'subject','S','urn:oasis:names:tc:xacml:1.0:subject-category:recipient-subject','recipient-subject');
-
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (12,'S','integer','http://www.w3.org/2001/XMLSchema#integer');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (13,'S','base64Binary','http://www.w3.org/2001/XMLSchema#base64Binary');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (14,'S','x500Name','urn:oasis:names:tc:xacml:1.0:data-type:x500Name');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (15,'S','dayTimeDuration','http://www.w3.org/2001/XMLSchema#dayTimeDuration');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (16,'S','time','http://www.w3.org/2001/XMLSchema#time');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (17,'S','dnsName','urn:oasis:names:tc:xacml:2.0:data-type:dnsName');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (18,'S','boolean','http://www.w3.org/2001/XMLSchema#boolean');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (19,'S','dateTime','http://www.w3.org/2001/XMLSchema#dateTime');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (20,'S','rfc822Name','urn:oasis:names:tc:xacml:1.0:data-type:rfc822Name');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (21,'S','date','http://www.w3.org/2001/XMLSchema#date');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (22,'S','ipAddress','urn:oasis:names:tc:xacml:2.0:data-type:ipAddress');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (23,'S','yearMonthDuration','http://www.w3.org/2001/XMLSchema#yearMonthDuration');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (24,'S','hexBinary','http://www.w3.org/2001/XMLSchema#hexBinary');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (25,'S','double','http://www.w3.org/2001/XMLSchema#double');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (26,'S','string','http://www.w3.org/2001/XMLSchema#string');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (27,'S','anyURI','http://www.w3.org/2001/XMLSchema#anyURI');
-INSERT INTO Datatype (id, is_standard, short_name, xacml_id) VALUES (28,'S','xpathExpression','urn:oasis:names:tc:xacml:3.0:data-type:xpathExpression');
-
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (29,'S','ordered-deny-overrides','urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:ordered-deny-overrides');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (30,'S','on-permit-apply-second','urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:on-permit-apply-second');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (31,'S','deny-overrides','urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:deny-overrides');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (32,'S','permit-unless-deny','urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:permit-unless-deny');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (33,'S','deny-unless-permit','urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:deny-unless-permit');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (34,'S','permit-overrides','urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:permit-overrides');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (35,'S','only-one-applicable','urn:oasis:names:tc:xacml:1.0:policy-combining-algorithm:only-one-applicable');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (36,'S','first-applicable','urn:oasis:names:tc:xacml:1.0:policy-combining-algorithm:first-applicable');
-INSERT INTO PolicyAlgorithms (id, is_standard, short_name, xacml_id) VALUES (37,'S','ordered-permit-overrides','urn:oasis:names:tc:xacml:3.0:policy-combining-algorithm:ordered-permit-overrides');
-
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (38,'S','permit-unless-deny','urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-unless-deny');
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (39,'S','permit-overrides','urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:permit-overrides');
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (40,'S','deny-overrides','urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-overrides');
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (41,'S','ordered-permit-overrides','urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:ordered-permit-overrides');
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (42,'S','deny-unless-permit','urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-unless-permit');
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (43,'S','ordered-deny-overrides','urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:ordered-deny-overrides');
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (44,'S','only-one-applicable','urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:only-one-applicable');
-INSERT INTO RuleAlgorithms (id, is_standard, short_name, xacml_id) VALUES (45,'S','first-applicable','urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable');
-
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (1,'integer-greater-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:integer-greater-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (2,'integer-subtract','urn:oasis:names:tc:xacml:1.0:function:integer-subtract',12,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (3,'double-to-integer','urn:oasis:names:tc:xacml:1.0:function:double-to-integer',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (4,'integer-one-and-only','urn:oasis:names:tc:xacml:1.0:function:integer-one-and-only',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (5,'double-one-and-only','urn:oasis:names:tc:xacml:1.0:function:double-one-and-only',25,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (6,'string-equal','urn:oasis:names:tc:xacml:1.0:function:string-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (7,'string-equal-ignore-case','urn:oasis:names:tc:xacml:3.0:function:string-equal-ignore-case',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (8,'string-starts-with','urn:oasis:names:tc:xacml:3.0:function:string-starts-with',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (9,'string-ends-with','urn:oasis:names:tc:xacml:3.0:function: string-ends-with',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (10,'string-concatenate','urn:oasis:names:tc:xacml:2.0:function:string-concatenate',26,0,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (11,'boolean-from-string','urn:oasis:names:tc:xacml:3.0:function:boolean-from-string',18,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (12,'string-from-boolean','urn:oasis:names:tc:xacml:3.0:function:string-from-boolean',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (13,'integer-from-string','urn:oasis:names:tc:xacml:3.0:function:integer-from-string',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (14,'string-from-integer','urn:oasis:names:tc:xacml:3.0:function:string-from-integer',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (15,'double-from-string','urn:oasis:names:tc:xacml:3.0:function:double-from-string',25,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (16,'string-from-double','urn:oasis:names:tc:xacml:3.0:function:string-from-double',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (17,'time-from-string','urn:oasis:names:tc:xacml:3.0:function:time-from-string',16,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (18,'string-from-time','urn:oasis:names:tc:xacml:3.0:function:string-from-time',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (19,'date-from-string','urn:oasis:names:tc:xacml:3.0:function:date-from-string',21,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (20,'string-from-date','urn:oasis:names:tc:xacml:3.0:function:string-from-date',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (21,'dateTime-from-string','urn:oasis:names:tc:xacml:3.0:function:dateTime-from-string',19,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (22,'string-from-dateTime','urn:oasis:names:tc:xacml:3.0:function:string-from-dateTime',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (23,'anyURI-from-string','urn:oasis:names:tc:xacml:3.0:function:anyURI-from-string',27,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (24,'string-from-anyURI','urn:oasis:names:tc:xacml:3.0:function:string-from-anyURI',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (25,'dayTimeDuration-from-string','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-from-string',15,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (26,'string-from-dayTimeDuration','urn:oasis:names:tc:xacml:3.0:function:string-from-dayTimeDuration',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (27,'yearMonthDuration-from-string','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-from-string',23,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (28,'string-from-yearMonthDuration','urn:oasis:names:tc:xacml:3.0:function:string-from-yearMonthDuration',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (29,'x500Name-from-string','urn:oasis:names:tc:xacml:3.0:function:x500Name-from-string',14,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (30,'string-from-x500Name','urn:oasis:names:tc:xacml:3.0:function:string-from-x500Name',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (31,'rfc822Name-from-string','urn:oasis:names:tc:xacml:3.0:function:rfc822Name-from-string',20,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (32,'string-from-rfc822Name','urn:oasis:names:tc:xacml:3.0:function:string-from-rfc822Name',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (33,'ipAddress-from-string','urn:oasis:names:tc:xacml:3.0:function:ipAddress-from-string',22,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (34,'string-from-ipAddress','urn:oasis:names:tc:xacml:3.0:function:string-from-ipAddress',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (35,'dnsName-from-string','urn:oasis:names:tc:xacml:3.0:function:dnsName-from-string',17,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (36,'string-from-dnsName','urn:oasis:names:tc:xacml:3.0:function:string-from-dnsName',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (37,'anyURI-starts-with','urn:oasis:names:tc:xacml:3.0:function:anyURI-starts-with',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (38,'anyURI-ends-with','urn:oasis:names:tc:xacml:3.0:function:anyURI-ends-with',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (39,'string-contains','urn:oasis:names:tc:xacml:3.0:function:string-contains',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (40,'anyURI-contains','urn:oasis:names:tc:xacml:3.0:function:anyURI-contains',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (41,'string-substring','urn:oasis:names:tc:xacml:3.0:function:string-substring',26,0,0,3,3,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (42,'anyURI-substring','urn:oasis:names:tc:xacml:3.0:function:anyURI-substring',26,0,0,3,3,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (43,'boolean-equal','urn:oasis:names:tc:xacml:1.0:function:boolean-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (44,'integer-equal','urn:oasis:names:tc:xacml:1.0:function:integer-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (45,'double-equal','urn:oasis:names:tc:xacml:1.0:function:double-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (46,'date-equal','urn:oasis:names:tc:xacml:1.0:function:date-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (47,'time-equal','urn:oasis:names:tc:xacml:1.0:function:time-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (48,'dateTime-equal','urn:oasis:names:tc:xacml:1.0:function:dateTime-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (49,'dayTimeDuration-equal','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (50,'yearMonthDuration-equal','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (51,'anyURI-equal','urn:oasis:names:tc:xacml:1.0:function:anyURI-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (52,'x500Name-equal','urn:oasis:names:tc:xacml:1.0:function:x500Name-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (53,'rfc822Name-equal','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (54,'hexBinary-equal','urn:oasis:names:tc:xacml:1.0:function:hexBinary-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (55,'base64Binary-equal','urn:oasis:names:tc:xacml:1.0:function:base64Binary-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (56,'integer-add','urn:oasis:names:tc:xacml:1.0:function:integer-add',12,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (57,'double-add','urn:oasis:names:tc:xacml:1.0:function:double-add',25,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (58,'double-subtract','urn:oasis:names:tc:xacml:1.0:function:double-subtract',25,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (59,'integer-multiply','urn:oasis:names:tc:xacml:1.0:function:integer-multiply',12,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (60,'double-multiply','urn:oasis:names:tc:xacml:1.0:function:double-multiply',25,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (61,'integer-divide','urn:oasis:names:tc:xacml:1.0:function:integer-divide',12,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (62,'double-divide','urn:oasis:names:tc:xacml:1.0:function:double-divide',25,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (63,'integer-mod','urn:oasis:names:tc:xacml:1.0:function:integer-mod',12,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (64,'integer-abs','urn:oasis:names:tc:xacml:1.0:function:integer-abs',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (65,'double-abs','urn:oasis:names:tc:xacml:1.0:function:double-abs',25,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (66,'round','urn:oasis:names:tc:xacml:1.0:function:round',25,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (67,'floor','urn:oasis:names:tc:xacml:1.0:function:floor',25,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (68,'string-normalize-space','urn:oasis:names:tc:xacml:1.0:function:string-normalize-space',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (69,'string-normalize-to-lower-case','urn:oasis:names:tc:xacml:1.0:function:string-normalize-to-lower-case',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (70,'integer-to-double','urn:oasis:names:tc:xacml:1.0:function:integer-to-double',25,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (71,'integer-greater-than','urn:oasis:names:tc:xacml:1.0:function:integer-greater-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (72,'integer-less-than','urn:oasis:names:tc:xacml:1.0:function:integer-less-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (73,'integer-less-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:integer-less-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (74,'double-greater-than','urn:oasis:names:tc:xacml:1.0:function:double-greater-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (75,'double-greater-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:double-greater-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (76,'double-less-than','urn:oasis:names:tc:xacml:1.0:function:double-less-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (77,'double-less-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:double-less-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (78,'dateTime-add-dayTimeDuration','urn:oasis:names:tc:xacml:3.0:function:dateTime-add-dayTimeDuration',19,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (79,'dateTime-add-yearMonthDuration','urn:oasis:names:tc:xacml:3.0:function:dateTime-add-yearMonthDuration',19,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (80,'dateTime-subtract-dayTimeDuration','urn:oasis:names:tc:xacml:3.0:function:dateTime-subtract-dayTimeDuration',19,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (81,'dateTime-subtract-yearMonthDuration','urn:oasis:names:tc:xacml:3.0:function:dateTime-subtract-yearMonthDuration',19,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (82,'date-add-yearMonthDuration','urn:oasis:names:tc:xacml:3.0:function:date-add-yearMonthDuration',21,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (83,'date-subtract-yearMonthDuration','urn:oasis:names:tc:xacml:3.0:function:date-subtract-yearMonthDuration',21,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (84,'string-greater-than','urn:oasis:names:tc:xacml:1.0:function:string-greater-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (85,'string-greater-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:string-greater-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (86,'string-less-than','urn:oasis:names:tc:xacml:1.0:function:string-less-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (87,'string-less-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:string-less-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (88,'time-greater-than','urn:oasis:names:tc:xacml:1.0:function:time-greater-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (89,'time-greater-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:time-greater-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (90,'time-less-than','urn:oasis:names:tc:xacml:1.0:function:time-less-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (91,'time-less-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:time-less-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (92,'time-in-range','urn:oasis:names:tc:xacml:2.0:function:time-in-range',18,0,0,3,3,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (93,'dateTime-greater-than','urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (94,'dateTime-greater-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:dateTime-greater-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (95,'dateTime-less-than','urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (96,'dateTime-less-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:dateTime-less-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (97,'date-greater-than','urn:oasis:names:tc:xacml:1.0:function:date-greater-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (98,'date-greater-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:date-greater-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (99,'date-less-than','urn:oasis:names:tc:xacml:1.0:function:date-less-than',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (100,'date-less-than-or-equal','urn:oasis:names:tc:xacml:1.0:function:date-less-than-or-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (101,'string-one-and-only','urn:oasis:names:tc:xacml:1.0:function:string-one-and-only',26,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (102,'string-bag-size','urn:oasis:names:tc:xacml:1.0:function:string-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (103,'string-is-in','urn:oasis:names:tc:xacml:1.0:function:string-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (104,'string-bag','urn:oasis:names:tc:xacml:1.0:function:string-bag',26,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (105,'integer-bag-size','urn:oasis:names:tc:xacml:1.0:function:integer-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (106,'integer-is-in','urn:oasis:names:tc:xacml:1.0:function:integer-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (107,'integer-bag','urn:oasis:names:tc:xacml:1.0:function:integer-bag',12,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (108,'double-bag-size','urn:oasis:names:tc:xacml:1.0:function:double-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (109,'double-is-in','urn:oasis:names:tc:xacml:1.0:function:double-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (110,'double-bag','urn:oasis:names:tc:xacml:1.0:function:double-bag',25,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (111,'boolean-one-and-only','urn:oasis:names:tc:xacml:1.0:function:boolean-one-and-only',18,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (112,'boolean-bag-size','urn:oasis:names:tc:xacml:1.0:function:boolean-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (113,'boolean-is-in','urn:oasis:names:tc:xacml:1.0:function:boolean-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (114,'boolean-bag','urn:oasis:names:tc:xacml:1.0:function:boolean-bag',18,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (115,'time-one-and-only','urn:oasis:names:tc:xacml:1.0:function:time-one-and-only',16,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (116,'time-bag-size','urn:oasis:names:tc:xacml:1.0:function:time-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (117,'time-is-in','urn:oasis:names:tc:xacml:1.0:function:time-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (118,'time-bag','urn:oasis:names:tc:xacml:1.0:function:time-bag',16,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (119,'date-one-and-only','urn:oasis:names:tc:xacml:1.0:function:date-one-and-only',21,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (120,'date-bag-size','urn:oasis:names:tc:xacml:1.0:function:date-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (121,'date-is-in','urn:oasis:names:tc:xacml:1.0:function:date-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (122,'date-bag','urn:oasis:names:tc:xacml:1.0:function:date-bag',21,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (123,'dateTime-one-and-only','urn:oasis:names:tc:xacml:1.0:function:dateTime-one-and-only',19,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (124,'dateTime-bag-size','urn:oasis:names:tc:xacml:1.0:function:dateTime-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (125,'dateTime-is-in','urn:oasis:names:tc:xacml:1.0:function:dateTime-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (126,'dateTime-bag','urn:oasis:names:tc:xacml:1.0:function:dateTime-bag',19,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (127,'anyURI-one-and-only','urn:oasis:names:tc:xacml:1.0:function:anyURI-one-and-only',27,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (128,'anyURI-bag-size','urn:oasis:names:tc:xacml:1.0:function:anyURI-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (129,'anyURI-is-in','urn:oasis:names:tc:xacml:1.0:function:anyURI-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (130,'anyURI-bag','urn:oasis:names:tc:xacml:1.0:function:anyURI-bag',27,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (131,'hexBinary-one-and-only','urn:oasis:names:tc:xacml:1.0:function:hexBinary-one-and-only',24,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (132,'hexBinary-bag-size','urn:oasis:names:tc:xacml:1.0:function:hexBinary-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (133,'hexBinary-is-in','urn:oasis:names:tc:xacml:1.0:function:hexBinary-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (134,'hexBinary-bag','urn:oasis:names:tc:xacml:1.0:function:hexBinary-bag',24,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (135,'base64Binary-one-and-only','urn:oasis:names:tc:xacml:1.0:function:base64Binary-one-and-only',13,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (136,'base64Binary-bag-size','urn:oasis:names:tc:xacml:1.0:function:base64Binary-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (137,'base64Binary-is-in','urn:oasis:names:tc:xacml:1.0:function:base64Binary-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (138,'base64Binary-bag','urn:oasis:names:tc:xacml:1.0:function:base64Binary-bag',13,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (139,'dayTimeDuration-one-and-only','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-one-and-only',15,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (140,'dayTimeDuration-bag-size','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (141,'dayTimeDuration-is-in','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (142,'dayTimeDuration-bag','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-bag',15,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (143,'yearMonthDuration-one-and-only','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-one-and-only',23,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (144,'yearMonthDuration-bag-size','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (145,'yearMonthDuration-is-in','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (146,'yearMonthDuration-bag','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-bag',23,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (147,'x500Name-one-and-only','urn:oasis:names:tc:xacml:1.0:function:x500Name-one-and-only',14,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (148,'x500Name-bag-size','urn:oasis:names:tc:xacml:1.0:function:x500Name-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (149,'x500Name-is-in','urn:oasis:names:tc:xacml:1.0:function:x500Name-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (150,'x500Name-bag','urn:oasis:names:tc:xacml:1.0:function:x500Name-bag',14,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (151,'rfc822Name-one-and-only','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-one-and-only',20,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (152,'rfc822Name-bag-size','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (153,'rfc822Name-is-in','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (154,'rfc822Name-bag','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-bag',20,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (155,'ipAddress-one-and-only','urn:oasis:names:tc:xacml:2.0:function:ipAddress-one-and-only',22,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (156,'ipAddress-bag-size','urn:oasis:names:tc:xacml:2.0:function:ipAddress-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (157,'ipAddress-is-in','urn:oasis:names:tc:xacml:2.0:function:ipAddress-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (158,'ipAddress-bag','urn:oasis:names:tc:xacml:2.0:function:ipAddress-bag',22,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (159,'dnsName-one-and-only','urn:oasis:names:tc:xacml:2.0:function:dnsName-one-and-only',17,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (160,'dnsName-bag-size','urn:oasis:names:tc:xacml:2.0:function:dnsName-bag-size',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (161,'dnsName-is-in','urn:oasis:names:tc:xacml:2.0:function:dnsName-is-in',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (162,'dnsName-bag','urn:oasis:names:tc:xacml:2.0:function:dnsName-bag',17,1,0,1,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (163,'string-regexp-match','urn:oasis:names:tc:xacml:1.0:function:string-regexp-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (164,'anyURI-regexp-match','urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (165,'ipAddress-regexp-match','urn:oasis:names:tc:xacml:2.0:function:ipAddress-regexp-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (166,'dnsName-regexp-match','urn:oasis:names:tc:xacml:2.0:function:dnsName-regexp-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (167,'rfc822Name-regexp-match','urn:oasis:names:tc:xacml:2.0:function:rfc822Name-regexp-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (168,'x500Name-regexp-match','urn:oasis:names:tc:xacml:2.0:function:x500Name-regexp-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (169,'string-intersection','urn:oasis:names:tc:xacml:1.0:function:string-intersection',26,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (170,'string-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:string-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (171,'string-union','urn:oasis:names:tc:xacml:1.0:function:string-union',26,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (172,'string-subset','urn:oasis:names:tc:xacml:1.0:function:string-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (173,'string-set-equals','urn:oasis:names:tc:xacml:1.0:function:string-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (174,'integer-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:integer-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (175,'integer-union','urn:oasis:names:tc:xacml:1.0:function:integer-union',12,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (176,'integer-subset','urn:oasis:names:tc:xacml:1.0:function:integer-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (177,'integer-set-equals','urn:oasis:names:tc:xacml:1.0:function:integer-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (178,'double-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:double-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (179,'double-union','urn:oasis:names:tc:xacml:1.0:function:double-union',25,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (180,'double-subset','urn:oasis:names:tc:xacml:1.0:function:double-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (181,'double-set-equals','urn:oasis:names:tc:xacml:1.0:function:double-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (182,'boolean-intersection','urn:oasis:names:tc:xacml:1.0:function:boolean-intersection',18,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (183,'boolean-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:boolean-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (184,'boolean-union','urn:oasis:names:tc:xacml:1.0:function:boolean-union',18,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (185,'boolean-subset','urn:oasis:names:tc:xacml:1.0:function:boolean-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (186,'boolean-set-equals','urn:oasis:names:tc:xacml:1.0:function:boolean-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (187,'time-intersection','urn:oasis:names:tc:xacml:1.0:function:time-intersection',16,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (188,'time-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:time-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (189,'time-union','urn:oasis:names:tc:xacml:1.0:function:time-union',16,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (190,'time-subset','urn:oasis:names:tc:xacml:1.0:function:time-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (191,'time-set-equals','urn:oasis:names:tc:xacml:1.0:function:time-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (192,'date-intersection','urn:oasis:names:tc:xacml:1.0:function:date-intersection',21,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (193,'date-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:date-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (194,'date-union','urn:oasis:names:tc:xacml:1.0:function:date-union',21,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (195,'date-subset','urn:oasis:names:tc:xacml:1.0:function:date-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (196,'date-set-equals','urn:oasis:names:tc:xacml:1.0:function:date-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (197,'dateTime-intersection','urn:oasis:names:tc:xacml:1.0:function:dateTime-intersection',19,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (198,'dateTime-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:dateTime-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (199,'dateTime-union','urn:oasis:names:tc:xacml:1.0:function:dateTime-union',19,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (200,'dateTime-subset','urn:oasis:names:tc:xacml:1.0:function:dateTime-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (201,'dateTime-set-equals','urn:oasis:names:tc:xacml:1.0:function:dateTime-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (202,'anyURI-intersection','urn:oasis:names:tc:xacml:1.0:function:anyURI-intersection',27,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (203,'anyURI-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:anyURI-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (204,'anyURI-union','urn:oasis:names:tc:xacml:1.0:function:anyURI-union',27,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (205,'anyURI-subset','urn:oasis:names:tc:xacml:1.0:function:anyURI-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (206,'anyURI-set-equals','urn:oasis:names:tc:xacml:1.0:function:anyURI-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (207,'hexBinary-intersection','urn:oasis:names:tc:xacml:1.0:function:hexBinary-intersection',24,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (208,'hexBinary-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:hexBinary-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (209,'hexBinary-union','urn:oasis:names:tc:xacml:1.0:function:hexBinary-union',24,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (210,'hexBinary-subset','urn:oasis:names:tc:xacml:1.0:function:hexBinary-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (211,'hexBinary-set-equals','urn:oasis:names:tc:xacml:1.0:function:hexBinary-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (212,'base64Binary-intersection','urn:oasis:names:tc:xacml:1.0:function:base64Binary-intersection',13,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (213,'base64Binary-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:base64Binary-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (214,'base64Binary-union','urn:oasis:names:tc:xacml:1.0:function:base64Binary-union',13,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (215,'base64Binary-subset','urn:oasis:names:tc:xacml:1.0:function:base64Binary-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (216,'base64Binary-set-equals','urn:oasis:names:tc:xacml:1.0:function:base64Binary-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (217,'dayTimeDuration-intersection','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-intersection',15,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (218,'dayTimeDuration-at-least-one-member-of','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (219,'dayTimeDuration-union','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-union',15,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (220,'dayTimeDuration-subset','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (221,'dayTimeDuration-set-equals','urn:oasis:names:tc:xacml:3.0:function:dayTimeDuration-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (222,'yearMonthDuration-intersection','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-intersection',23,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (223,'yearMonthDuration-at-least-one-member-of','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (224,'yearMonthDuration-union','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-union',23,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (225,'yearMonthDuration-subset','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (226,'yearMonthDuration-set-equals','urn:oasis:names:tc:xacml:3.0:function:yearMonthDuration-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (227,'x500Name-intersection','urn:oasis:names:tc:xacml:1.0:function:x500Name-intersection',14,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (228,'x500Name-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:x500Name-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (229,'x500Name-union','urn:oasis:names:tc:xacml:1.0:function:x500Name-union',14,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (230,'x500Name-subset','urn:oasis:names:tc:xacml:1.0:function:x500Name-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (231,'x500Name-set-equals','urn:oasis:names:tc:xacml:1.0:function:x500Name-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (232,'rfc822Name-intersection','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-intersection',20,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (233,'rfc822Name-at-least-one-member-of','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-at-least-one-member-of',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (234,'rfc822Name-union','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-union',20,1,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (235,'rfc822Name-subset','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-subset',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (236,'rfc822Name-set-equals','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-set-equals',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (237,'x500Name-match','urn:oasis:names:tc:xacml:1.0:function:x500Name-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (238,'rfc822Name-match','urn:oasis:names:tc:xacml:1.0:function:rfc822Name-match',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (239,'integer-intersection','urn:oasis:names:tc:xacml:1.0:function:integer-intersection',12,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (240,'double-intersection','urn:oasis:names:tc:xacml:1.0:function:double-intersection',25,1,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (241,'or','urn:oasis:names:tc:xacml:1.0:function:or',18,0,0,0,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (242,'and','urn:oasis:names:tc:xacml:1.0:function:and',18,0,0,0,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (243,'n-of','urn:oasis:names:tc:xacml:1.0:function:n-of',18,0,0,2,-1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (244,'not','urn:oasis:names:tc:xacml:1.0:function:not',18,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (245,'any-of','urn:oasis:names:tc:xacml:3.0:function:any-of',18,0,1,2,-1,1,-1,1);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (246,'all-of','urn:oasis:names:tc:xacml:3.0:function:all-of',18,0,1,2,-1,1,-1,1);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (247,'any-of-any','urn:oasis:names:tc:xacml:3.0:function:any-of-any',18,0,1,2,-1,1,-1,0);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (248,'all-of-any','urn:oasis:names:tc:xacml:1.0:function:all-of-any',18,0,1,3,3,2,2,1);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (249,'any-of-all','urn:oasis:names:tc:xacml:1.0:function:any-of-all',18,0,1,3,3,2,2,1);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (250,'all-of-all','urn:oasis:names:tc:xacml:1.0:function:all-of-all',18,0,1,3,3,2,2,1);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (251,'map','urn:oasis:names:tc:xacml:3.0:function:map',NULL,1,1,2,-1,1,-1,1);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (252,'xpath-node-count','urn:oasis:names:tc:xacml:3.0:function:xpath-node-count',12,0,0,1,1,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (253,'xpath-node-equal','urn:oasis:names:tc:xacml:3.0:function:xpath-node-equal',18,0,0,2,2,NULL,NULL,NULL);
-INSERT INTO FunctionDefinition (id, short_name, xacml_id, return_datatype, is_bag_return, is_higher_order, arg_lb, arg_ub, ho_arg_lb, ho_arg_ub, ho_primitive) VALUES (254,'xpath-node-match','urn:oasis:names:tc:xacml:3.0:function:xpath-node-match',18,0,0,2,2,NULL,NULL,NULL);
-
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (1,0,1,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (2,0,1,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (3,0,2,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (4,0,2,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (5,0,3,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (6,1,4,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (7,1,5,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (8,0,6,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (9,0,6,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (10,0,7,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (11,0,7,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (12,0,8,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (13,0,8,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (14,0,9,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (15,0,9,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (16,0,10,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (17,0,11,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (18,0,12,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (19,0,13,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (20,0,14,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (21,0,15,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (22,0,16,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (23,0,17,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (24,0,18,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (25,0,19,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (26,0,20,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (27,0,21,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (28,0,22,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (29,0,23,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (30,0,24,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (31,0,25,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (32,0,26,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (33,0,27,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (34,0,28,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (35,0,29,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (36,0,30,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (37,0,31,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (38,0,32,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (39,0,33,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (40,0,34,1,22);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (41,0,35,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (42,0,36,1,17);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (43,0,37,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (44,0,37,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (45,0,38,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (46,0,38,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (47,0,39,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (48,0,39,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (49,0,40,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (50,0,40,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (51,0,41,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (52,0,41,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (53,0,41,3,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (54,0,42,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (55,0,42,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (56,0,42,3,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (57,0,43,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (58,0,43,2,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (59,0,44,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (60,0,44,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (61,0,45,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (62,0,45,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (63,0,46,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (64,0,46,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (65,0,47,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (66,0,47,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (67,0,48,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (68,0,48,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (69,0,49,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (70,0,49,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (71,0,50,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (72,0,50,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (73,0,51,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (74,0,51,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (75,0,52,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (76,0,52,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (77,0,53,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (78,0,53,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (79,0,54,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (80,0,54,2,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (81,0,55,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (82,0,55,2,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (83,0,56,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (84,0,56,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (85,0,57,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (86,0,57,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (89,0,58,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (90,0,58,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (91,0,59,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (92,0,59,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (93,0,60,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (94,0,60,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (95,0,61,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (96,0,61,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (97,0,62,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (98,0,62,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (99,0,63,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (100,0,63,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (101,0,64,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (102,0,65,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (103,0,66,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (104,0,67,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (125,0,68,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (126,0,69,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (128,0,70,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (129,0,71,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (130,0,71,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (131,0,72,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (132,0,72,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (133,0,73,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (134,0,73,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (135,0,74,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (136,0,74,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (137,0,75,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (138,0,75,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (139,0,76,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (140,0,76,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (141,0,77,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (142,0,77,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (143,0,78,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (144,0,78,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (145,0,79,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (146,0,79,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (147,0,80,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (148,0,80,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (149,0,81,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (150,0,81,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (151,0,82,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (152,0,82,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (153,0,83,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (154,0,83,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (155,0,84,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (156,0,84,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (157,0,85,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (158,0,85,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (159,0,86,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (160,0,86,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (161,0,87,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (162,0,87,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (163,0,88,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (164,0,88,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (165,0,89,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (166,0,89,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (167,0,90,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (168,0,90,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (169,0,91,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (170,0,91,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (171,0,92,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (172,0,92,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (173,0,93,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (174,0,93,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (175,0,94,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (176,0,94,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (177,0,95,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (178,0,95,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (179,0,96,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (180,0,96,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (181,0,97,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (182,0,97,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (183,0,98,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (184,0,98,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (185,0,99,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (186,0,99,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (187,0,100,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (188,0,100,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (189,1,101,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (190,1,102,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (191,0,103,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (192,1,103,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (193,0,104,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (194,1,105,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (195,0,106,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (196,1,106,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (197,0,107,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (198,1,108,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (199,0,109,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (200,1,109,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (201,0,110,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (202,1,111,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (203,1,112,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (204,0,113,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (205,1,113,2,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (206,0,114,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (207,1,115,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (208,1,116,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (209,0,117,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (210,1,117,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (211,0,118,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (212,1,119,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (213,1,120,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (214,0,121,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (215,1,121,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (216,0,122,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (217,1,123,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (218,1,124,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (219,0,125,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (220,1,125,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (221,0,126,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (222,1,127,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (223,1,128,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (224,0,129,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (225,1,129,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (226,0,130,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (227,1,131,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (228,1,132,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (229,0,133,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (230,1,133,2,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (231,0,134,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (232,1,135,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (233,1,136,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (234,0,137,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (235,1,137,2,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (236,0,138,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (237,1,139,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (238,1,140,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (239,0,141,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (240,1,141,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (241,0,142,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (242,1,143,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (243,1,144,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (244,1,145,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (245,0,145,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (246,0,146,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (247,1,147,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (248,1,148,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (249,0,149,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (250,1,149,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (251,0,150,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (252,1,151,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (253,1,152,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (254,0,153,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (255,1,153,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (256,0,154,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (257,1,155,1,22);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (258,1,156,1,22);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (259,0,157,1,22);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (260,1,157,2,22);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (261,0,158,1,22);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (262,1,159,1,17);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (263,1,160,1,17);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (264,0,161,1,17);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (265,1,161,2,17);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (266,0,162,1,17);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (267,0,163,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (268,0,163,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (269,0,164,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (270,0,164,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (271,0,165,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (272,0,165,2,22);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (273,0,166,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (274,0,166,2,17);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (275,0,167,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (276,0,167,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (277,0,168,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (278,0,168,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (279,1,169,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (280,1,169,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (281,1,170,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (282,1,170,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (283,1,171,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (284,1,172,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (285,1,172,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (286,1,173,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (287,1,173,2,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (288,1,174,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (289,1,174,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (290,1,175,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (292,1,176,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (293,1,176,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (294,1,177,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (295,1,177,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (296,1,178,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (297,1,178,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (298,1,179,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (299,1,180,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (300,1,180,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (301,1,181,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (302,1,181,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (303,1,182,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (304,1,182,2,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (305,1,183,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (306,1,183,2,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (307,1,184,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (308,1,185,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (309,1,185,2,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (310,1,186,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (311,1,186,2,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (312,1,187,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (313,1,187,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (314,1,188,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (315,1,188,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (316,1,189,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (317,1,190,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (318,1,190,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (319,1,191,1,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (320,1,191,2,16);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (321,1,192,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (322,1,192,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (323,1,193,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (324,1,193,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (325,1,194,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (326,1,195,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (327,1,195,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (328,1,196,1,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (329,1,196,2,21);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (330,1,197,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (331,1,197,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (332,1,198,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (333,1,198,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (334,1,199,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (335,1,200,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (336,1,200,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (337,1,201,1,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (338,1,201,2,19);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (339,1,202,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (340,1,202,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (341,1,203,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (342,1,203,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (343,1,204,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (344,1,205,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (345,1,205,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (346,1,206,1,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (347,1,206,2,27);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (348,1,207,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (349,1,207,2,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (350,1,208,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (351,1,208,2,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (352,1,209,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (353,1,210,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (354,1,210,2,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (355,1,211,1,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (356,1,211,2,24);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (357,1,212,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (358,1,212,2,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (359,1,213,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (360,1,213,2,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (361,1,214,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (362,1,215,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (363,1,215,2,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (364,1,216,1,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (365,1,216,2,13);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (366,1,217,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (367,1,217,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (368,1,218,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (369,1,218,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (370,1,219,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (371,1,220,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (372,1,220,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (373,1,221,1,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (374,1,221,2,15);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (375,1,222,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (376,1,222,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (377,1,223,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (378,1,223,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (380,1,224,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (381,1,225,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (382,1,225,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (383,1,226,2,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (384,1,226,1,23);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (385,1,227,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (386,1,227,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (387,1,228,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (388,1,228,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (389,1,229,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (390,1,230,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (391,1,230,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (392,1,231,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (393,1,231,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (394,1,232,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (395,1,232,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (396,1,233,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (397,1,233,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (398,1,234,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (399,1,235,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (400,1,235,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (401,1,236,1,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (402,1,236,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (403,0,237,1,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (404,0,237,2,14);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (405,0,238,1,26);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (406,0,238,2,20);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (407,1,239,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (408,1,239,2,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (409,1,240,1,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (410,1,240,2,25);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (411,0,241,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (412,0,242,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (413,0,243,1,12);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (414,0,243,2,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (415,0,244,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (416,0,245,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (417,0,245,2,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (418,1,245,3,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (419,0,246,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (420,0,246,2,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (421,1,246,3,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (422,0,247,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (423,1,247,2,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (424,1,247,3,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (433,0,248,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (434,1,248,2,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (435,1,248,3,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (436,0,249,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (437,1,249,2,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (438,1,249,3,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (439,0,250,1,18);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (440,1,250,2,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (441,1,250,3,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (442,0,251,1,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (447,1,251,2,NULL);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (448,0,252,1,28);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (449,0,253,1,28);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (450,0,253,2,28);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (451,0,254,1,28);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (452,0,254,2,28);
-INSERT INTO FunctionArguments (id, is_bag, function_id, arg_index, datatype_id) VALUES (453,0,92,3,16);
-
-INSERT INTO PIPType VALUES (500,'SQL'), (501,'LDAP'), (502,'CSV'), (503,'Hyper-CSV'), (504,'Custom');
diff --git a/openaz-xacml-pap-admin/src/main/resources/META-INF/drop.sql b/openaz-xacml-pap-admin/src/main/resources/META-INF/drop.sql
deleted file mode 100644
index 8aee7ee..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/META-INF/drop.sql
+++ /dev/null
@@ -1,21 +0,0 @@
-DROP TABLE IF EXISTS AttributeAssignment;
-DROP TABLE IF EXISTS ConstraintValues;
-DROP TABLE IF EXISTS ObadviceExpressions;
-DROP TABLE IF EXISTS Attribute;
-DROP TABLE IF EXISTS Category;
-DROP TABLE IF EXISTS ConstraintType;
-DROP VIEW IF EXISTS match_functions;
-DROP VIEW IF EXISTS higherorder_bag_functions;
-DROP VIEW IF EXISTS function_flattener;
-DROP TABLE IF EXISTS FunctionArguments;
-DROP TABLE IF EXISTS FunctionDefinition;
-DROP TABLE IF EXISTS Datatype;
-DROP TABLE IF EXISTS Obadvice;
-DROP TABLE IF EXISTS PIPConfigParams;
-DROP TABLE IF EXISTS PIPResolverParams;
-DROP TABLE IF EXISTS PIPResolver;
-DROP TABLE IF EXISTS PIPConfiguration;
-DROP TABLE IF EXISTS PIPType;
-DROP TABLE IF EXISTS PolicyAlgorithms;
-DROP TABLE IF EXISTS RuleAlgorithms;
-DROP TABLE IF EXISTS SEQUENCE;
\ No newline at end of file
diff --git a/openaz-xacml-pap-admin/src/main/resources/META-INF/empty.sql b/openaz-xacml-pap-admin/src/main/resources/META-INF/empty.sql
deleted file mode 100644
index e69de29..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/META-INF/empty.sql
+++ /dev/null
diff --git a/openaz-xacml-pap-admin/src/main/resources/META-INF/persistence.xml b/openaz-xacml-pap-admin/src/main/resources/META-INF/persistence.xml
deleted file mode 100644
index 79594a9..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/META-INF/persistence.xml
+++ /dev/null
@@ -1,55 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<persistence version="2.1" xmlns="http://xmlns.jcp.org/xml/ns/persistence" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/persistence http://xmlns.jcp.org/xml/ns/persistence/persistence_2_1.xsd">
-	<persistence-unit name="XACML-PAP-ADMIN">
-		<class>org.apache.openaz.xacml.admin.jpa.Attribute</class>
-		<class>org.apache.openaz.xacml.admin.jpa.AttributeAssignment</class>
-		<class>org.apache.openaz.xacml.admin.jpa.Category</class>
-		<class>org.apache.openaz.xacml.admin.jpa.ConstraintType</class>
-		<class>org.apache.openaz.xacml.admin.jpa.ConstraintValue</class>
-		<class>org.apache.openaz.xacml.admin.jpa.Datatype</class>
-		<class>org.apache.openaz.xacml.admin.jpa.Obadvice</class>
-		<class>org.apache.openaz.xacml.admin.jpa.ObadviceExpression</class>
-		<class>org.apache.openaz.xacml.admin.jpa.PolicyAlgorithms</class>
-		<class>org.apache.openaz.xacml.admin.jpa.RuleAlgorithms</class>
-		<class>org.apache.openaz.xacml.admin.jpa.FunctionArgument</class>
-		<class>org.apache.openaz.xacml.admin.jpa.FunctionDefinition</class>
-		<class>org.apache.openaz.xacml.admin.jpa.PIPConfigParam</class>
-		<class>org.apache.openaz.xacml.admin.jpa.PIPConfiguration</class>
-		<class>org.apache.openaz.xacml.admin.jpa.PIPResolver</class>
-		<class>org.apache.openaz.xacml.admin.jpa.PIPResolverParam</class>
-		<class>org.apache.openaz.xacml.admin.jpa.PIPType</class>
-		<properties>
-			<!-- 
-				The properties defined below are the default settings to be used when someone initially
-				wants to start working with the XACML-PAP-ADMIN web gui. They are not intended for production
-				use.
-				
-				They are setup to drop and create the tables and then load an initial set of data into the database
-				every time the application is deployed. So if you add anything to the dictionaries or PIP
-				configuration, they will get lost upon each deployment. It uses an H2 database engine configured
-				for a local file so you don't have to setup you're own SQL database environment to start.
-				
-				Instead of modifying this file directly, please refer to the xacml.admin.properties file for
-				customizing the application settings.
-				
-			 -->
-			<property name="javax.persistence.schema-generation.database.action" value="drop-and-create"/>
-			<property name="javax.persistence.schema-generation.create-source" value="metadata-then-script"/>
-			<property name="javax.persistence.schema-generation.create-script-source" value="META-INF/views.sql" />
-			<property name="javax.persistence.schema-generation.drop-source" value="script"/>
-			<property name="javax.persistence.schema-generation.drop-script-source" value="META-INF/drop.sql" />
-			<property name="javax.persistence.sql-load-script-source" value="META-INF/data.sql" />
-			
-			<!-- 
-			
-			These properties should be set in the xacml.admin.properties file, so they can be re-used by non-JPA
-			database functionality.
-			
-			<property name="javax.persistence.jdbc.driver" value="org.h2.Driver"/>
-			<property name="javax.persistence.jdbc.url" value="jdbc:h2:file:sql/xacml"/>
-			<property name="javax.persistence.jdbc.user" value="sa"/>
-			<property name="javax.persistence.jdbc.password" value=""/>
-			 -->
-		</properties>
-	</persistence-unit>
-</persistence>
diff --git a/openaz-xacml-pap-admin/src/main/resources/META-INF/views.sql b/openaz-xacml-pap-admin/src/main/resources/META-INF/views.sql
deleted file mode 100644
index 7c4a820..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/META-INF/views.sql
+++ /dev/null
@@ -1,6 +0,0 @@
-
-CREATE VIEW match_functions AS SELECT D.ID AS id, D.SHORT_NAME AS shortname, D.XACML_ID AS xacmlid,	D.RETURN_DATATYPE AS return_datatype, D.IS_BAG_RETURN AS is_bag_return,	D.ARG_LB AS arg_lb,	D.ARG_UB AS arg_ub,	A1.IS_BAG AS arg1_isbag, A1.DATATYPE_ID AS arg1_datatype, A2.IS_BAG AS arg2_isbag,	A2.DATATYPE_ID AS arg2_datatype FROM (FunctionDefinition D left join FunctionArguments A1 on (A1.FUNCTION_ID = D.ID and A1.ARG_INDEX = 1) left join FunctionArguments A2 on (A2.FUNCTION_ID = D.ID and A2.ARG_INDEX = 2)) where (D.ARG_LB = 2 and D.ARG_UB = 2 and D.RETURN_DATATYPE = 18 and A1.IS_BAG = 0) order by D.SHORT_NAME;
-
-CREATE VIEW function_flattener AS SELECT D.ID AS id, D.SHORT_NAME AS shortname, D.RETURN_DATATYPE AS return_datatype, D.IS_BAG_RETURN AS is_bag_return, D.IS_HIGHER_ORDER AS is_higher_order, D.ARG_LB AS arg_lb, D.ARG_UB AS arg_ub, A1.IS_BAG AS arg1_isbag, A1.DATATYPE_ID AS arg1_datatype, A2.IS_BAG AS arg2_isbag, A2.DATATYPE_ID AS arg2_datatype, A3.IS_BAG AS arg3_isbag, A3.DATATYPE_ID AS arg3_datatype FROM (FunctionDefinition D left join FunctionArguments A1 ON (A1.FUNCTION_ID = D.ID and A1.ARG_INDEX = 1) left join FunctionArguments A2 ON (A2.FUNCTION_ID = D.ID and A2.ARG_INDEX = 2) LEFT JOIN FunctionArguments A3 ON (A3.FUNCTION_ID = D.ID and A3.ARG_INDEX = 3)) ORDER BY D.ID;
-
-CREATE VIEW higherorder_bag_functions AS SELECT * FROM function_flattener WHERE is_higher_order = 1 AND is_bag_return = 1 AND return_datatype=18 AND arg_lb=2 AND arg_ub=2 AND arg1_isbag = 1 AND (arg2_isbag = 1 OR arg2_isbag IS NULL);
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/addons.scss b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/addons.scss
deleted file mode 100644
index a5670b7..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/addons.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-/* This file is automatically managed and will be overwritten from time to time. */
-/* Do not manually edit this file. */
-
-/* Import and include this mixin into your project theme to include the addon themes */
-@mixin addons {
-}
-
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/favicon.ico b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/favicon.ico
deleted file mode 100644
index bfd212e..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/favicon.ico
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/MenuSeparator.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/MenuSeparator.png
deleted file mode 100644
index 9980604..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/MenuSeparator.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/add.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/add.png
deleted file mode 100644
index c7443d1..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/add.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/advice-16.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/advice-16.png
deleted file mode 100644
index 3de9e04..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/advice-16.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/advice-32.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/advice-32.png
deleted file mode 100644
index a3c243b..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/advice-32.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_blu_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_blu_rgb.png
deleted file mode 100644
index bc7ad9e..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_blu_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_dkblu_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_dkblu_rgb.png
deleted file mode 100644
index ef73ffa..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_dkblu_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_grn_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_grn_rgb.png
deleted file mode 100644
index 7b22aa8..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_grn_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_mag_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_mag_rgb.png
deleted file mode 100644
index e0592a6..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_mag_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_org_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_org_rgb.png
deleted file mode 100644
index 65e4985..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_approval_icon_org_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_blu_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_blu_rgb.png
deleted file mode 100644
index 282bba6..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_blu_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_dkblu_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_dkblu_rgb.png
deleted file mode 100644
index c033369..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_dkblu_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_grn_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_grn_rgb.png
deleted file mode 100644
index 05787f5..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_grn_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_mag_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_mag_rgb.png
deleted file mode 100644
index 8d207b9..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_mag_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_org_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_org_rgb.png
deleted file mode 100644
index f735262..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_lock_icon_org_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_blu_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_blu_rgb.png
deleted file mode 100644
index 5feb76c..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_blu_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_dkblu_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_dkblu_rgb.png
deleted file mode 100644
index 69f72f9..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_dkblu_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_grn_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_grn_rgb.png
deleted file mode 100644
index 758257f..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_grn_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_mag_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_mag_rgb.png
deleted file mode 100644
index 247d066..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_mag_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_org_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_org_rgb.png
deleted file mode 100644
index 993faab..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_protect_icon_org_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_blu_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_blu_rgb.png
deleted file mode 100644
index a5e228f..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_blu_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_dkblu_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_dkblu_rgb.png
deleted file mode 100644
index d8239e1..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_dkblu_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_grn_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_grn_rgb.png
deleted file mode 100644
index 6e249f7..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_grn_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_mag_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_mag_rgb.png
deleted file mode 100644
index b4fc229..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_mag_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_org_rgb.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_org_rgb.png
deleted file mode 100644
index b7f0fa7..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/att_support_icon_org_rgb.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/combine.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/combine.png
deleted file mode 100644
index ffeec58..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/combine.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/condition-16.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/condition-16.png
deleted file mode 100644
index fa300a8..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/condition-16.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/condition-32.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/condition-32.png
deleted file mode 100644
index 2d8ba95..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/condition-32.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/deny-16.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/deny-16.png
deleted file mode 100644
index 234f9f5..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/deny-16.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/deny-32.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/deny-32.png
deleted file mode 100644
index 1c53527..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/deny-32.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/key.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/key.png
deleted file mode 100644
index 732d7b6..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/key.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/link.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/link.png
deleted file mode 100644
index c35c84d..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/link.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/obligation-16.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/obligation-16.png
deleted file mode 100644
index a1533f2..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/obligation-16.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/obligation-32.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/obligation-32.png
deleted file mode 100644
index 189cc11..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/obligation-32.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/permit-16.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/permit-16.png
deleted file mode 100644
index 4524177..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/permit-16.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/permit-32.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/permit-32.png
deleted file mode 100644
index a11fffd..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/permit-32.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/policy.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/policy.png
deleted file mode 100644
index 99cd51b..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/policy.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/policyset.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/policyset.png
deleted file mode 100644
index 64693e2..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/policyset.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/refresh.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/refresh.png
deleted file mode 100644
index 4a23967..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/refresh.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/remove.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/remove.png
deleted file mode 100644
index 945e15c..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/remove.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/rule.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/rule.png
deleted file mode 100644
index 01e9c68..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/rule.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/target-green-16.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/target-green-16.png
deleted file mode 100644
index 48f3b6c..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/target-green-16.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/target-green-32.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/target-green-32.png
deleted file mode 100644
index 7386e4f..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/target-green-32.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/target.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/target.png
deleted file mode 100644
index 74a6ca2..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/target.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/variable-16.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/variable-16.png
deleted file mode 100644
index 43e92f9..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/variable-16.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/variable-32.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/variable-32.png
deleted file mode 100644
index c4affb6..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/icons/variable-32.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/img/att.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/img/att.png
deleted file mode 100644
index 9f6e629..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/img/att.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/img/att_globe_rgb_grd_pos.png b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/img/att_globe_rgb_grd_pos.png
deleted file mode 100644
index 8f612a7..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/img/att_globe_rgb_grd_pos.png
+++ /dev/null
Binary files differ
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/styles.scss b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/styles.scss
deleted file mode 100644
index 77baa29..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/styles.scss
+++ /dev/null
@@ -1,9 +0,0 @@
-@import "addons.scss";
-@import "xacml_pap_admin.scss";
-
-/* This file prefixes all rules with the theme name to avoid causing conflicts with other themes. */
-/* The actual styles should be defined in xacml_pap_admin.scss */
-.xacml_pap_admin {
-  @include addons;
-  @include xacml_pap_admin;
-}
diff --git a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/xacml_pap_admin.scss b/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/xacml_pap_admin.scss
deleted file mode 100644
index fb29c5d..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/VAADIN/themes/xacml_pap_admin/xacml_pap_admin.scss
+++ /dev/null
@@ -1,42 +0,0 @@
-/* Import the reindeer theme.*/
-/* This only allows us to use the mixins defined in it and does not add any styles by itself. */
-@import "../reindeer/reindeer.scss";
-
-/* This contains all of your theme.*/
-/* If somebody wants to extend the theme she will include this mixin. */
-@mixin xacml_pap_admin {
-  /* Include all the styles from the reindeer theme */
-  @include reindeer;
-
-  /* Insert your theme rules here */
-  
-  .v-textfield-dashing {
-    border:     thin dashed;
-    background: white; /* Has shading image by default */
-	}
-	
-/* Lay the options horizontally */
-.v-select-optiongroup-horizontal .v-select-option {
-    display: inline-block;
-}
-
-/* Avoid wrapping if the layout is too tight */
-.v-select-optiongroup-horizontal {
-    white-space: nowrap;
-}
-
-/* Some extra spacing is needed */
-.v-select-optiongroup-horizontal
-  .v-select-option.v-radiobutton {
-    padding-right: 10px;
-}
-
-.v-textfield { 
-	min-width:400px;
-}
-
-.v-textarea { 
-	min-width:250px;
-}
-
-}
diff --git a/openaz-xacml-pap-admin/src/main/resources/log4j.properties b/openaz-xacml-pap-admin/src/main/resources/log4j.properties
deleted file mode 100644
index aeee9f8..0000000
--- a/openaz-xacml-pap-admin/src/main/resources/log4j.properties
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Use this properties for debugging and development.
-#
-#
-# Set root logger level
-log4j.rootLogger=DEBUG, MAIN_LOG
-
-# console is set to be a ConsoleAppender.
-log4j.appender.MAIN_LOG=org.apache.log4j.ConsoleAppender
-
-# A1 uses PatternLayout.
-log4j.appender.MAIN_LOG.layout=org.apache.log4j.PatternLayout
-log4j.appender.MAIN_LOG.layout.ConversionPattern=%d{yyyy_MM_dd_HH_mm_ss_SSS} [%t] %-5p %l- %m%n
diff --git a/openaz-xacml-pap-admin/src/main/webapp/WEB-INF/web.xml b/openaz-xacml-pap-admin/src/main/webapp/WEB-INF/web.xml
deleted file mode 100644
index 9e06c81..0000000
--- a/openaz-xacml-pap-admin/src/main/webapp/WEB-INF/web.xml
+++ /dev/null
@@ -1,63 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<!--
- Licensed to the Apache Software Foundation (ASF) under one or more
-  contributor license agreements.  See the NOTICE file distributed with
-  this work for additional information regarding copyright ownership.
-  The ASF licenses this file to You under the Apache License, Version 2.0
-  (the "License"); you may not use this file except in compliance with
-  the License.  You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
-  Unless required by applicable law or agreed to in writing, software
-  distributed under the License is distributed on an "AS IS" BASIS,
-  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  See the License for the specific language governing permissions and
-  limitations under the License.
--->
-
-<web-app xmlns="http://java.sun.com/xml/ns/javaee"
-  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-  xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
-                      http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd"
-  version="3.0"
-  metadata-complete="true">
-
-  <display-name>Apache OpenAZ</display-name>
-  <description></description>
-	<welcome-file-list>
-		<welcome-file>index.html</welcome-file>
-		<welcome-file>index.htm</welcome-file>
-		<welcome-file>index.jsp</welcome-file>
-		<welcome-file>default.html</welcome-file>
-		<welcome-file>default.htm</welcome-file>
-		<welcome-file>default.jsp</welcome-file>
-	</welcome-file-list>
-
-
-	<!-- Policy Engine PAP Administration -->
-	<servlet>
-		<servlet-name>PePapAdmin</servlet-name>
-
-		<!-- <servlet-class>com.vaadin.server.VaadinServlet</servlet-class> -->
-		<servlet-class>org.apache.openaz.xacml.admin.XacmlAdminServlet</servlet-class>
-
-		<init-param>
-			<description>Vaadin UI Class: XacmlAdminUI</description>
-			<param-name>UI</param-name>
-			<param-value>org.apache.openaz.xacml.admin.XacmlAdminUI</param-value>
-		</init-param>
-
-		<init-param>
-			<description>The location of the properties file holding configuration information.</description>
-			<param-name>XACML_PROPERTIES_NAME</param-name>
-			<param-value>/opt/app/xacml/etc/xacml.admin.properties</param-value>
-		</init-param>
-
-	</servlet>
-
-	<servlet-mapping>
-		<servlet-name>PePapAdmin</servlet-name>
-		<url-pattern>/*</url-pattern>
-	</servlet-mapping>
-</web-app>