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 © 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>