Seam SVN: r12776 - modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2010-05-24 04:58:55 -0400 (Mon, 24 May 2010)
New Revision: 12776
Added:
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/IdentityEntityName.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/IdentityEntityType.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/IdentityEntityValue.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RelationshipFrom.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RelationshipTo.java
Removed:
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityName.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityValue.java
Log:
idm entity annotations
Deleted: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityName.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityName.java 2010-05-24 08:35:28 UTC (rev 12775)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityName.java 2010-05-24 08:58:55 UTC (rev 12776)
@@ -1,23 +0,0 @@
-package org.jboss.seam.security.annotations.management;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- *
- * @author Shane Bryzak
- */
-@Target({METHOD,FIELD})
-@Documented
-@Retention(RUNTIME)
-@Inherited
-public @interface EntityName
-{
-
-}
Deleted: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityValue.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityValue.java 2010-05-24 08:35:28 UTC (rev 12775)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityValue.java 2010-05-24 08:58:55 UTC (rev 12776)
@@ -1,23 +0,0 @@
-package org.jboss.seam.security.annotations.management;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- *
- * @author Shane Bryzak
- */
-@Target({METHOD,FIELD})
-@Documented
-@Retention(RUNTIME)
-@Inherited
-public @interface EntityValue
-{
-
-}
Copied: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/IdentityEntityName.java (from rev 12775, modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityName.java)
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/IdentityEntityName.java (rev 0)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/IdentityEntityName.java 2010-05-24 08:58:55 UTC (rev 12776)
@@ -0,0 +1,23 @@
+package org.jboss.seam.security.annotations.management;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * @author Shane Bryzak
+ */
+@Target({METHOD,FIELD})
+@Documented
+@Retention(RUNTIME)
+@Inherited
+public @interface IdentityEntityName
+{
+
+}
Added: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/IdentityEntityType.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/IdentityEntityType.java (rev 0)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/IdentityEntityType.java 2010-05-24 08:58:55 UTC (rev 12776)
@@ -0,0 +1,22 @@
+package org.jboss.seam.security.annotations.management;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * @author Shane Bryzak
+ */
+@Target({METHOD,FIELD})
+@Documented
+@Retention(RUNTIME)
+@Inherited
+public @interface IdentityEntityType {
+
+}
Copied: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/IdentityEntityValue.java (from rev 12775, modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityValue.java)
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/IdentityEntityValue.java (rev 0)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/IdentityEntityValue.java 2010-05-24 08:58:55 UTC (rev 12776)
@@ -0,0 +1,23 @@
+package org.jboss.seam.security.annotations.management;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * @author Shane Bryzak
+ */
+@Target({METHOD,FIELD})
+@Documented
+@Retention(RUNTIME)
+@Inherited
+public @interface IdentityEntityValue
+{
+
+}
Added: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RelationshipFrom.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RelationshipFrom.java (rev 0)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RelationshipFrom.java 2010-05-24 08:58:55 UTC (rev 12776)
@@ -0,0 +1,24 @@
+package org.jboss.seam.security.annotations.management;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * @author Shane Bryzak
+ *
+ */
+@Target({METHOD,FIELD})
+@Documented
+@Retention(RUNTIME)
+@Inherited
+public @interface RelationshipFrom
+{
+
+}
Added: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RelationshipTo.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RelationshipTo.java (rev 0)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RelationshipTo.java 2010-05-24 08:58:55 UTC (rev 12776)
@@ -0,0 +1,23 @@
+package org.jboss.seam.security.annotations.management;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * @author Shane Bryzak
+ *
+ */
+@Target({METHOD,FIELD})
+@Documented
+@Retention(RUNTIME)
+@Inherited
+public @interface RelationshipTo {
+
+}
14 years
Seam SVN: r12775 - in modules/security/trunk: api/src/main/java/org/jboss/seam/security/annotations/permission and 4 other directories.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2010-05-24 04:35:28 -0400 (Mon, 24 May 2010)
New Revision: 12775
Added:
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityName.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityValue.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionRecipient.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionRecipientType.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/management/MembershipCache.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/management/PasswordEncoder.java
modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java
modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/MembershipCacheImpl.java
modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/PasswordHashEncoder.java
Removed:
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/MemberOf.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/PasswordSalt.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RoleConditional.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RoleGroup.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RoleType.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserEnabled.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserFirstName.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserLastName.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserPassword.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserPrincipal.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionDiscriminator.java
modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionUser.java
Modified:
modules/security/trunk/api/src/main/java/org/jboss/seam/security/management/IdentityManager.java
modules/security/trunk/impl/src/main/java/org/jboss/seam/security/jaas/SeamLoginModule.java
modules/security/trunk/impl/src/main/java/org/jboss/seam/security/permission/JpaPermissionStore.java
Log:
refactor annotations, add PasswordEncoder, MembershipCache interfaces, start work on new JpaIdentityStore implementation
Added: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityName.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityName.java (rev 0)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityName.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -0,0 +1,23 @@
+package org.jboss.seam.security.annotations.management;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * @author Shane Bryzak
+ */
+@Target({METHOD,FIELD})
+@Documented
+@Retention(RUNTIME)
+@Inherited
+public @interface EntityName
+{
+
+}
Added: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityValue.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityValue.java (rev 0)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/EntityValue.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -0,0 +1,23 @@
+package org.jboss.seam.security.annotations.management;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * @author Shane Bryzak
+ */
+@Target({METHOD,FIELD})
+@Documented
+@Retention(RUNTIME)
+@Inherited
+public @interface EntityValue
+{
+
+}
Deleted: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/MemberOf.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/MemberOf.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/MemberOf.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -1,24 +0,0 @@
-package org.jboss.seam.security.annotations.management;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Flags an entity field or method as representing the group memberships for a role
- *
- * @author Shane Bryzak
- */
-@Target({METHOD,FIELD})
-@Documented
-@Retention(RUNTIME)
-@Inherited
-public @interface MemberOf
-{
-
-}
Deleted: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/PasswordSalt.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/PasswordSalt.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/PasswordSalt.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -1,24 +0,0 @@
-package org.jboss.seam.security.annotations.management;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * The salt value used to produce the password hash
- *
- * @author Shane Bryzak
- */
-@Target({METHOD,FIELD})
-@Documented
-@Retention(RUNTIME)
-@Inherited
-public @interface PasswordSalt
-{
-
-}
Deleted: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RoleConditional.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RoleConditional.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RoleConditional.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -1,24 +0,0 @@
-package org.jboss.seam.security.annotations.management;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Flags an entity field or method as representing whether a role is conditional or not
- *
- * @author Shane Bryzak
- */
-@Target({METHOD,FIELD})
-@Documented
-@Retention(RUNTIME)
-@Inherited
-public @interface RoleConditional
-{
-
-}
Deleted: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RoleGroup.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RoleGroup.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RoleGroup.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -1,23 +0,0 @@
-package org.jboss.seam.security.annotations.management;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Flags an entity field or method as representing the name of the role group
- *
- * @author Shane Bryzak
- */
-@Target({METHOD,FIELD})
-@Documented
-@Retention(RUNTIME)
-@Inherited
-public @interface RoleGroup {
-
-}
Deleted: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RoleType.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RoleType.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/RoleType.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -1,24 +0,0 @@
-package org.jboss.seam.security.annotations.management;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Flags an entity field or method as representing the name of a role
- *
- * @author Shane Bryzak
- */
-@Target({METHOD,FIELD})
-@Documented
-@Retention(RUNTIME)
-@Inherited
-public @interface RoleType
-{
-
-}
Deleted: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserEnabled.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserEnabled.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserEnabled.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -1,24 +0,0 @@
-package org.jboss.seam.security.annotations.management;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Flags an entity field or method as representing the enabled status of a user
- *
- * @author Shane Bryzak
- */
-@Target({METHOD,FIELD})
-@Documented
-@Retention(RUNTIME)
-@Inherited
-public @interface UserEnabled
-{
-
-}
Deleted: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserFirstName.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserFirstName.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserFirstName.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -1,24 +0,0 @@
-package org.jboss.seam.security.annotations.management;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Flags an entity field or method as representing the first name of a user
- *
- * @author Shane Bryzak
- */
-@Target({METHOD,FIELD})
-@Documented
-@Retention(RUNTIME)
-@Inherited
-public @interface UserFirstName
-{
-
-}
Deleted: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserLastName.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserLastName.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserLastName.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -1,24 +0,0 @@
-package org.jboss.seam.security.annotations.management;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Flags an entity field or method as representing the last name of a user
- *
- * @author Shane Bryzak
- */
-@Target({METHOD,FIELD})
-@Documented
-@Retention(RUNTIME)
-@Inherited
-public @interface UserLastName
-{
-
-}
Deleted: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserPassword.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserPassword.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserPassword.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -1,32 +0,0 @@
-package org.jboss.seam.security.annotations.management;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Flags an entity field or method as representing the password for a user
- *
- * @author Shane Bryzak
- */
-@Target({METHOD,FIELD})
-@Documented
-@Retention(RUNTIME)
-@Inherited
-public @interface UserPassword
-{
- /**
- * The hash algorithm, only used if there is no @PasswordSalt property specified
- */
- String hash() default "";
-
- /**
- * Number of iterations for generating the password hash
- */
- int iterations() default 1000;
-}
Deleted: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserPrincipal.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserPrincipal.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/management/UserPrincipal.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -1,24 +0,0 @@
-package org.jboss.seam.security.annotations.management;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Flags an entity field or method as representing the principal (username) for a user
- *
- * @author Shane Bryzak
- */
-@Target({METHOD,FIELD})
-@Documented
-@Retention(RUNTIME)
-@Inherited
-public @interface UserPrincipal
-{
-
-}
Deleted: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionDiscriminator.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionDiscriminator.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionDiscriminator.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -1,26 +0,0 @@
-package org.jboss.seam.security.annotations.permission;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Flags an entity field or method as representing the discriminator column in a permission table
- * that contains permissions for both roles and users.
- *
- * @author Shane Bryzak
- */
-@Target({METHOD,FIELD})
-@Documented
-@Retention(RUNTIME)
-@Inherited
-public @interface PermissionDiscriminator
-{
- String userValue() default "user";
- String roleValue() default "role";
-}
Added: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionRecipient.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionRecipient.java (rev 0)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionRecipient.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -0,0 +1,24 @@
+package org.jboss.seam.security.annotations.permission;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ * Flags an entity field or method as representing the recipient of a permission.
+ *
+ * @author Shane Bryzak
+ */
+@Target({METHOD,FIELD})
+@Documented
+@Retention(RUNTIME)
+@Inherited
+public @interface PermissionRecipient
+{
+
+}
Added: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionRecipientType.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionRecipientType.java (rev 0)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionRecipientType.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -0,0 +1,22 @@
+package org.jboss.seam.security.annotations.permission;
+
+import static java.lang.annotation.ElementType.FIELD;
+import static java.lang.annotation.ElementType.METHOD;
+import static java.lang.annotation.RetentionPolicy.RUNTIME;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.Inherited;
+import java.lang.annotation.Retention;
+import java.lang.annotation.Target;
+
+/**
+ *
+ * @author Shane Bryzak
+ */
+@Target({METHOD,FIELD})
+@Documented
+@Retention(RUNTIME)
+@Inherited
+public @interface PermissionRecipientType {
+
+}
Deleted: modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionUser.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionUser.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/annotations/permission/PermissionUser.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -1,25 +0,0 @@
-package org.jboss.seam.security.annotations.permission;
-
-import static java.lang.annotation.ElementType.FIELD;
-import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.RetentionPolicy.RUNTIME;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.Inherited;
-import java.lang.annotation.Retention;
-import java.lang.annotation.Target;
-
-/**
- * Flags an entity field or method as representing the principal (username) that a permission is
- * assigned to.
- *
- * @author Shane Bryzak
- */
-@Target({METHOD,FIELD})
-@Documented
-@Retention(RUNTIME)
-@Inherited
-public @interface PermissionUser
-{
-
-}
Modified: modules/security/trunk/api/src/main/java/org/jboss/seam/security/management/IdentityManager.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/management/IdentityManager.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/management/IdentityManager.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -1,6 +1,5 @@
package org.jboss.seam.security.management;
-import java.security.Principal;
import java.util.List;
import org.picketlink.idm.api.Group;
Added: modules/security/trunk/api/src/main/java/org/jboss/seam/security/management/MembershipCache.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/management/MembershipCache.java (rev 0)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/management/MembershipCache.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -0,0 +1,11 @@
+package org.jboss.seam.security.management;
+
+/**
+ * Caches user membership for roles and groups
+ *
+ * @author Shane Bryzak
+ */
+public interface MembershipCache
+{
+
+}
Added: modules/security/trunk/api/src/main/java/org/jboss/seam/security/management/PasswordEncoder.java
===================================================================
--- modules/security/trunk/api/src/main/java/org/jboss/seam/security/management/PasswordEncoder.java (rev 0)
+++ modules/security/trunk/api/src/main/java/org/jboss/seam/security/management/PasswordEncoder.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -0,0 +1,29 @@
+package org.jboss.seam.security.management;
+
+import java.util.Map;
+
+/**
+ * Encodes user passwords for persistent storage
+ *
+ * @author Shane Bryzak
+ *
+ */
+public interface PasswordEncoder
+{
+ /**
+ * Encodes the specified password
+ *
+ * @param password
+ * @return
+ */
+ String encodePassword(String password);
+
+ /**
+ * Encodes the specified password using the provided options
+ *
+ * @param password
+ * @param options
+ * @return
+ */
+ String encodePassword(String password, Map options);
+}
Modified: modules/security/trunk/impl/src/main/java/org/jboss/seam/security/jaas/SeamLoginModule.java
===================================================================
--- modules/security/trunk/impl/src/main/java/org/jboss/seam/security/jaas/SeamLoginModule.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/impl/src/main/java/org/jboss/seam/security/jaas/SeamLoginModule.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -1,8 +1,5 @@
package org.jboss.seam.security.jaas;
-import static org.jboss.seam.security.IdentityImpl.ROLES_GROUP;
-
-import java.security.acl.Group;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
@@ -20,7 +17,6 @@
import org.jboss.seam.security.callbacks.IdentityCallback;
import org.jboss.seam.security.callbacks.IdentityManagerCallback;
import org.jboss.seam.security.management.IdentityManager;
-
import org.picketlink.idm.api.Role;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
Added: modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java
===================================================================
--- modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java (rev 0)
+++ modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/JpaIdentityStore.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -0,0 +1,202 @@
+package org.jboss.seam.security.management;
+
+import java.io.Serializable;
+import java.util.List;
+
+import javax.enterprise.context.ApplicationScoped;
+
+import org.picketlink.idm.api.Group;
+import org.picketlink.idm.api.IdentityType;
+import org.picketlink.idm.api.Role;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * IdentityStore implementation that allows identity related data to be
+ * persisted in a database via JPA
+ *
+ * @author Shane Bryzak
+ */
+public @ApplicationScoped class JpaIdentityStore implements IdentityStore, Serializable
+{
+ private static final long serialVersionUID = 7729139146633529501L;
+
+ private Logger log = LoggerFactory.getLogger(JpaIdentityStore.class);
+
+ private Class<?> identityObjectEntity;
+ private Class<?> identityObjectRelationshipEntity;
+ private Class<?> identityObjectCredentialEntity;
+ private Class<?> identityObjectAttributeEntity;
+
+ @Inject PasswordEncoder passwordEncoder;
+
+ public boolean addUserToGroup(String username, Group group)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean authenticate(String username, String password)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean changePassword(String username, String password)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean createGroup(String name, String groupType)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean createRoleType(String roleType)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean createUser(String username, String password)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean createUser(String username, String password,
+ String firstname, String lastname)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean deleteGroup(String name, String groupType)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean deleteRoleType(String roleType)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean deleteUser(String username)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean disableUser(String username)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean enableUser(String username)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public Group findGroup(String name, String groupType)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List<String> findUsers()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List<String> findUsers(String filter)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean grantRole(String username, String roleType, Group group)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean isUserEnabled(String username)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public List<String> listGrantableRoleTypes()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List<Role> listGrantedRoles(String username)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List<IdentityType> listGroupMembers(Group group)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List<Role> listImpliedRoles(String username)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List<IdentityType> listRoleMembers(String roleType, Group group)
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public List<String> listRoleTypes()
+ {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ public boolean removeUserFromGroup(String username, Group group)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean revokeRole(String username, String roleType, Group group)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean roleTypeExists(String roleType)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean supportsFeature(Feature feature)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ public boolean userExists(String username)
+ {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+}
Added: modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/MembershipCacheImpl.java
===================================================================
--- modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/MembershipCacheImpl.java (rev 0)
+++ modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/MembershipCacheImpl.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -0,0 +1,10 @@
+package org.jboss.seam.security.management;
+
+/**
+ *
+ * @author Shane Bryzak
+ */
+public class MembershipCacheImpl implements MembershipCache
+{
+
+}
Added: modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/PasswordHashEncoder.java
===================================================================
--- modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/PasswordHashEncoder.java (rev 0)
+++ modules/security/trunk/impl/src/main/java/org/jboss/seam/security/management/PasswordHashEncoder.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -0,0 +1,45 @@
+package org.jboss.seam.security.management;
+
+import java.util.Map;
+
+/**
+ * Default password encoder, creates password hashes.
+ *
+ * @author Shane Bryzak
+ *
+ */
+public class PasswordHashEncoder implements PasswordEncoder
+{
+ private String passwordHash;
+ private int passwordIterations = 1000;
+
+ public String getPasswordHash()
+ {
+ return passwordHash;
+ }
+
+ public void setPasswordHash(String passwordHash)
+ {
+ this.passwordHash = passwordHash;
+ }
+
+ public int getPasswordIterations()
+ {
+ return passwordIterations;
+ }
+
+ public void setPasswordIterations(int passwordIterations)
+ {
+ this.passwordIterations = passwordIterations;
+ }
+
+ public String encodePassword(String password)
+ {
+ return encodePassword(password, null);
+ }
+
+ public String encodePassword(String password, Map options)
+ {
+ return null;
+ }
+}
Modified: modules/security/trunk/impl/src/main/java/org/jboss/seam/security/permission/JpaPermissionStore.java
===================================================================
--- modules/security/trunk/impl/src/main/java/org/jboss/seam/security/permission/JpaPermissionStore.java 2010-05-23 09:42:58 UTC (rev 12774)
+++ modules/security/trunk/impl/src/main/java/org/jboss/seam/security/permission/JpaPermissionStore.java 2010-05-24 08:35:28 UTC (rev 12775)
@@ -18,10 +18,10 @@
import org.jboss.seam.security.RoleImpl;
import org.jboss.seam.security.annotations.permission.PermissionAction;
-import org.jboss.seam.security.annotations.permission.PermissionDiscriminator;
+import org.jboss.seam.security.annotations.permission.PermissionRecipient;
+import org.jboss.seam.security.annotations.permission.PermissionRecipientType;
import org.jboss.seam.security.annotations.permission.PermissionRole;
import org.jboss.seam.security.annotations.permission.PermissionTarget;
-import org.jboss.seam.security.annotations.permission.PermissionUser;
import org.jboss.seam.security.management.IdentityManager;
//import org.jboss.seam.security.management.JpaIdentityStore;
import org.jboss.seam.security.permission.PermissionMetadata.ActionSet;
@@ -46,12 +46,12 @@
private Class<?> userPermissionClass;
private Class<?> rolePermissionClass;
- private AnnotatedBeanProperty<PermissionUser> userProperty;
+ private AnnotatedBeanProperty<PermissionRecipient> recipientProperty;
private AnnotatedBeanProperty<PermissionRole> roleProperty;
private AnnotatedBeanProperty<PermissionTarget> targetProperty;
private AnnotatedBeanProperty<PermissionAction> actionProperty;
- private AnnotatedBeanProperty<PermissionDiscriminator> discriminatorProperty;
+ private AnnotatedBeanProperty<PermissionRecipientType> recipientTypeProperty;
private AnnotatedBeanProperty<PermissionTarget> roleTargetProperty;
private AnnotatedBeanProperty<PermissionAction> roleActionProperty;
@@ -84,7 +84,7 @@
protected void initProperties()
{
- userProperty = new AnnotatedBeanProperty<PermissionUser>(userPermissionClass, PermissionUser.class);
+ recipientProperty = new AnnotatedBeanProperty<PermissionRecipient>(userPermissionClass, PermissionRecipient.class);
targetProperty = new AnnotatedBeanProperty<PermissionTarget>(userPermissionClass, PermissionTarget.class);
actionProperty = new AnnotatedBeanProperty<PermissionAction>(userPermissionClass, PermissionAction.class);
@@ -104,12 +104,12 @@
roleProperty = new AnnotatedBeanProperty<PermissionRole>(userPermissionClass, PermissionRole.class);
if (roleProperty.isSet())
{
- discriminatorProperty = new AnnotatedBeanProperty<PermissionDiscriminator>(userPermissionClass,
- PermissionDiscriminator.class);
+ recipientTypeProperty = new AnnotatedBeanProperty<PermissionRecipientType>(userPermissionClass,
+ PermissionRecipientType.class);
}
}
- if (!userProperty.isSet())
+ if (!recipientProperty.isSet())
{
throw new RuntimeException("Invalid userPermissionClass " + userPermissionClass.getName() +
" - required annotation @PermissionUser not found on any Field or Method.");
@@ -135,7 +135,7 @@
" - required annotation @PermissionAction not found on any Field or Method.");
}
}
- else if (!discriminatorProperty.isSet())
+ else if (!recipientTypeProperty.isSet())
{
throw new RuntimeException("Invalid userPermissionClass " + userPermissionClass.getName() +
" - no rolePermissionClass set and @PermissionDiscriminator annotation not found on " +
@@ -198,16 +198,16 @@
if (recipient != null)
{
q.append(conditionsAdded ? " and p." : " where p.");
- q.append(isRole ? roleProperty.getName() : userProperty.getName());
+ q.append(isRole ? roleProperty.getName() : recipientProperty.getName());
q.append(" = :recipient");
conditionsAdded = true;
}
// If there is no discrimination, then don't add such a condition to the query
- if (!discrimination.equals(Discrimination.either) && discriminatorProperty != null)
+ if (!discrimination.equals(Discrimination.either) && recipientTypeProperty != null)
{
q.append(conditionsAdded ? " and p." : " where p.");
- q.append(discriminatorProperty.getName());
+ q.append(recipientTypeProperty.getName());
q.append(" = :discriminator");
conditionsAdded = true;
}
@@ -232,7 +232,7 @@
if (recipient != null) query.setParameter("recipient", resolvePrincipalEntity(recipient));
- if (!discrimination.equals(Discrimination.either) && discriminatorProperty != null)
+ if (!discrimination.equals(Discrimination.either) && recipientTypeProperty != null)
{
query.setParameter("discriminator", getDiscriminatorValue(
discrimination.equals(Discrimination.role)));
@@ -339,7 +339,7 @@
return true;
}
- if (!discriminatorProperty.isSet())
+ if (!recipientTypeProperty.isSet())
{
throw new RuntimeException("Could not grant permission, rolePermissionClass not set");
}
@@ -373,14 +373,15 @@
}
else
{
- userProperty.setValue(instance, resolvePrincipalEntity(recipient));
+ recipientProperty.setValue(instance, resolvePrincipalEntity(recipient));
}
- if (discriminatorProperty.isSet())
+ if (recipientTypeProperty.isSet())
{
- PermissionDiscriminator discriminator = discriminatorProperty.getAnnotation();
- discriminatorProperty.setValue(instance, recipientIsRole ? discriminator.roleValue() :
- discriminator.userValue());
+ PermissionRecipientType discriminator = recipientTypeProperty.getAnnotation();
+ // TODO need to populate the correct recipient type
+ //recipientTypeProperty.setValue(instance, recipientIsRole ? discriminator.roleValue() :
+ // discriminator.userValue());
}
lookupEntityManager().persist(instance);
@@ -514,8 +515,10 @@
private String getDiscriminatorValue(boolean isRole)
{
- PermissionDiscriminator discriminator = discriminatorProperty.getAnnotation();
- return isRole ? discriminator.roleValue() : discriminator.userValue();
+ PermissionRecipientType discriminator = recipientTypeProperty.getAnnotation();
+ // TODO fix
+ //return isRole ? discriminator.roleValue() : discriminator.userValue();
+ return null;
}
/**
@@ -620,7 +623,7 @@
Map<String,Principal> principalCache = new HashMap<String,Principal>();
- boolean useDiscriminator = rolePermissionClass == null && discriminatorProperty.isSet();
+ boolean useDiscriminator = rolePermissionClass == null && recipientTypeProperty.isSet();
Map<String,Object> identifierCache = null;
@@ -657,9 +660,11 @@
{
boolean isUser = true;
- if (useDiscriminator &&
- discriminatorProperty.getAnnotation().roleValue().equals(
- discriminatorProperty.getValue(permission)))
+ // TODO fix
+ if (useDiscriminator //&&
+ //recipientTypeProperty.getAnnotation().roleValue().equals(
+ // recipientTypeProperty.getValue(permission)))
+ )
{
isUser = false;
}
@@ -731,7 +736,7 @@
private Principal lookupPrincipal(Map<String,Principal> cache, Object permission, boolean isUser)
{
- Principal principal = resolvePrincipal(isUser ? userProperty.getValue(permission) :
+ Principal principal = resolvePrincipal(isUser ? recipientProperty.getValue(permission) :
roleProperty.getValue(permission), isUser);
String key = (isUser ? "u:" : "r:") + principal.getName();
14 years
Seam SVN: r12773 - in modules/security/trunk/examples/idmconsole: src/main/java/org/jboss/seam/security/examples and 3 other directories.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2010-05-23 05:36:43 -0400 (Sun, 23 May 2010)
New Revision: 12773
Added:
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/action/
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/util/
Removed:
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/action/
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/util/
Modified:
modules/security/trunk/examples/idmconsole/
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObject.java
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectCredential.java
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectCredentialType.java
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectRelationship.java
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectRelationshipType.java
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectType.java
Log:
rename package
Property changes on: modules/security/trunk/examples/idmconsole
___________________________________________________________________
Name: svn:ignore
+ target
.classpath
.project
.settings
Copied: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/action (from rev 12772, modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/action)
Copied: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model (from rev 12772, modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model)
Modified: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObject.java
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObject.java 2010-05-23 08:36:33 UTC (rev 12772)
+++ modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObject.java 2010-05-23 09:36:43 UTC (rev 12773)
@@ -1,4 +1,4 @@
-package org.jboss.seam.security.examples.seamspace.model;
+package org.jboss.seam.security.examples.idmconsole.model;
import java.io.Serializable;
Modified: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectCredential.java
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectCredential.java 2010-05-23 08:36:33 UTC (rev 12772)
+++ modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectCredential.java 2010-05-23 09:36:43 UTC (rev 12773)
@@ -1,4 +1,4 @@
-package org.jboss.seam.security.examples.seamspace.model;
+package org.jboss.seam.security.examples.idmconsole.model;
import java.io.Serializable;
Modified: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectCredentialType.java
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectCredentialType.java 2010-05-23 08:36:33 UTC (rev 12772)
+++ modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectCredentialType.java 2010-05-23 09:36:43 UTC (rev 12773)
@@ -1,4 +1,4 @@
-package org.jboss.seam.security.examples.seamspace.model;
+package org.jboss.seam.security.examples.idmconsole.model;
import java.io.Serializable;
Modified: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectRelationship.java
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectRelationship.java 2010-05-23 08:36:33 UTC (rev 12772)
+++ modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectRelationship.java 2010-05-23 09:36:43 UTC (rev 12773)
@@ -1,4 +1,4 @@
-package org.jboss.seam.security.examples.seamspace.model;
+package org.jboss.seam.security.examples.idmconsole.model;
import java.io.Serializable;
Modified: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectRelationshipType.java
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectRelationshipType.java 2010-05-23 08:36:33 UTC (rev 12772)
+++ modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectRelationshipType.java 2010-05-23 09:36:43 UTC (rev 12773)
@@ -1,4 +1,4 @@
-package org.jboss.seam.security.examples.seamspace.model;
+package org.jboss.seam.security.examples.idmconsole.model;
import java.io.Serializable;
Modified: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectType.java
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectType.java 2010-05-23 08:36:33 UTC (rev 12772)
+++ modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/model/IdentityObjectType.java 2010-05-23 09:36:43 UTC (rev 12773)
@@ -1,4 +1,4 @@
-package org.jboss.seam.security.examples.seamspace.model;
+package org.jboss.seam.security.examples.idmconsole.model;
import java.io.Serializable;
Copied: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/idmconsole/util (from rev 12772, modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/util)
14 years
Seam SVN: r12772 - in modules/security/trunk/examples: idmconsole and 17 other directories.
by seam-commits@lists.jboss.org
Author: shane.bryzak(a)jboss.com
Date: 2010-05-23 04:36:33 -0400 (Sun, 23 May 2010)
New Revision: 12772
Added:
modules/security/trunk/examples/idmconsole/
modules/security/trunk/examples/idmconsole/pom.xml
modules/security/trunk/examples/idmconsole/src/
modules/security/trunk/examples/idmconsole/src/main/
modules/security/trunk/examples/idmconsole/src/main/java/
modules/security/trunk/examples/idmconsole/src/main/java/org/
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/action/
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObject.java
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectCredential.java
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectCredentialType.java
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectRelationship.java
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectRelationshipType.java
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectType.java
modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/util/
modules/security/trunk/examples/idmconsole/src/main/resources/
modules/security/trunk/examples/idmconsole/src/main/resources/META-INF/
modules/security/trunk/examples/idmconsole/src/main/resources/META-INF/idmconsole-ds.xml
modules/security/trunk/examples/idmconsole/src/main/resources/META-INF/persistence.xml
modules/security/trunk/examples/idmconsole/src/main/resources/import.sql
modules/security/trunk/examples/idmconsole/src/main/webapp/
modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/
modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/beans.xml
modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/classes/
modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/classes/seam-beans.xml
modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/faces-config.xml
modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/kbaseconfig.properties
modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/kbuilderconfig.properties
modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/security-rules.drl
modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/web.xml
modules/security/trunk/examples/idmconsole/src/main/webapp/hashgen.xhtml
modules/security/trunk/examples/idmconsole/src/main/webapp/home.xhtml
modules/security/trunk/examples/idmconsole/src/main/webapp/images/
modules/security/trunk/examples/idmconsole/src/main/webapp/images/bg_button.png
modules/security/trunk/examples/idmconsole/src/main/webapp/images/checkmark.png
modules/security/trunk/examples/idmconsole/src/main/webapp/images/cross.png
modules/security/trunk/examples/idmconsole/src/main/webapp/images/ellipsis.png
modules/security/trunk/examples/idmconsole/src/main/webapp/images/no_image.png
modules/security/trunk/examples/idmconsole/src/main/webapp/index.html
modules/security/trunk/examples/idmconsole/src/main/webapp/profile.xhtml
modules/security/trunk/examples/idmconsole/src/main/webapp/register.xhtml
modules/security/trunk/examples/idmconsole/src/main/webapp/register2.xhtml
modules/security/trunk/examples/idmconsole/src/main/webapp/roledetail.page.xml
modules/security/trunk/examples/idmconsole/src/main/webapp/roledetail.xhtml
modules/security/trunk/examples/idmconsole/src/main/webapp/rolemanager.page.xml
modules/security/trunk/examples/idmconsole/src/main/webapp/rolemanager.xhtml
modules/security/trunk/examples/idmconsole/src/main/webapp/security.xhtml
modules/security/trunk/examples/idmconsole/src/main/webapp/security_error.xhtml
modules/security/trunk/examples/idmconsole/src/main/webapp/style/
modules/security/trunk/examples/idmconsole/src/main/webapp/style/advertising.png
modules/security/trunk/examples/idmconsole/src/main/webapp/style/btn_newpermission.png
modules/security/trunk/examples/idmconsole/src/main/webapp/style/btn_newrole.png
modules/security/trunk/examples/idmconsole/src/main/webapp/style/btn_newuser.png
modules/security/trunk/examples/idmconsole/src/main/webapp/style/cal-next.png
modules/security/trunk/examples/idmconsole/src/main/webapp/style/cal-prev.png
modules/security/trunk/examples/idmconsole/src/main/webapp/style/date.css
modules/security/trunk/examples/idmconsole/src/main/webapp/style/divider.png
modules/security/trunk/examples/idmconsole/src/main/webapp/style/manage_roles.png
modules/security/trunk/examples/idmconsole/src/main/webapp/style/manage_users.png
modules/security/trunk/examples/idmconsole/src/main/webapp/style/padlock.png
modules/security/trunk/examples/idmconsole/src/main/webapp/style/seamspace.css
modules/security/trunk/examples/idmconsole/src/main/webapp/style/seamspace.png
modules/security/trunk/examples/idmconsole/src/main/webapp/style/security.css
modules/security/trunk/examples/idmconsole/src/main/webapp/style/table_header.png
modules/security/trunk/examples/idmconsole/src/main/webapp/style/trash.png
modules/security/trunk/examples/idmconsole/src/main/webapp/template.xhtml
modules/security/trunk/examples/idmconsole/src/main/webapp/test.xhtml
modules/security/trunk/examples/idmconsole/src/main/webapp/userdetail.xhtml
modules/security/trunk/examples/idmconsole/src/main/webapp/usermanager.page.xml
modules/security/trunk/examples/idmconsole/src/main/webapp/usermanager.xhtml
modules/security/trunk/examples/idmconsole/src/main/webapp/welcome.xhtml
Log:
create new security example, identity management console
Added: modules/security/trunk/examples/idmconsole/pom.xml
===================================================================
--- modules/security/trunk/examples/idmconsole/pom.xml (rev 0)
+++ modules/security/trunk/examples/idmconsole/pom.xml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,132 @@
+<?xml version="1.0"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+
+ <parent>
+ <groupId>org.jboss.seam.security</groupId>
+ <artifactId>seam-security-parent</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ </parent>
+
+ <groupId>org.jboss.seam.security</groupId>
+ <artifactId>seam-security-idmconsole-example</artifactId>
+ <packaging>war</packaging>
+ <version>3.0.0-SNAPSHOT</version>
+ <name>Seam Security IDM Console Example</name>
+
+ <dependencies>
+ <!--dependency>
+ <groupId>org.testng</groupId>
+ <artifactId>testng</artifactId>
+ <scope>test</scope>
+ <classifier>jdk15</classifier>
+ </dependency-->
+
+ <dependency>
+ <groupId>javax.enterprise</groupId>
+ <artifactId>cdi-api</artifactId>
+ <scope>provided</scope>
+ <version>1.0</version>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.faces</groupId>
+ <artifactId>jsf-api</artifactId>
+ <version>2.0.2-FCS</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.hibernate</groupId>
+ <artifactId>hibernate-validator</artifactId>
+ <version>4.0.0.GA</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.seam.security</groupId>
+ <artifactId>seam-security-api</artifactId>
+ <version>${project.version}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.seam.security</groupId>
+ <artifactId>seam-security-impl</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.jboss.seam.xml</groupId>
+ <artifactId>seam-xml-bean-config</artifactId>
+ <version>3.0.0-SNAPSHOT</version>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.persistence</groupId>
+ <artifactId>persistence-api</artifactId>
+ <version>1.0</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.transaction</groupId>
+ <artifactId>jta</artifactId>
+ <version>1.1</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.validation</groupId>
+ <artifactId>validation-api</artifactId>
+ <version>1.0.0.GA</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>servlet-api</artifactId>
+ <version>2.5</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.glassfish.web</groupId>
+ <artifactId>el-impl</artifactId>
+ <scope>runtime</scope>
+ <version>2.1.2-b04</version>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.el</groupId>
+ <artifactId>el-api</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
+ </dependencies>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.5</source>
+ <target>1.5</target>
+ </configuration>
+ </plugin>
+
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-war-plugin</artifactId>
+ <version>2.0</version>
+ <configuration>
+ <warName>idmconsole</warName>
+ </configuration>
+ </plugin>
+
+ </plugins>
+ </build>
+
+</project>
+
Added: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObject.java
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObject.java (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObject.java 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,56 @@
+package org.jboss.seam.security.examples.seamspace.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+
+import org.picketlink.idm.spi.model.IdentityObjectType;
+
+/**
+ *
+ * @author Shane Bryzak
+ */
+@Entity
+public class IdentityObject implements Serializable
+{
+ private static final long serialVersionUID = 9158638400039584710L;
+
+ private Long id;
+ private String name;
+ private IdentityObjectType type;
+
+ @Id @GeneratedValue
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ @ManyToOne
+ public IdentityObjectType getType()
+ {
+ return type;
+ }
+
+ public void setIdentityObjectType(IdentityObjectType type)
+ {
+ this.type = type;
+ }
+}
Added: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectCredential.java
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectCredential.java (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectCredential.java 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,65 @@
+package org.jboss.seam.security.examples.seamspace.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+
+/**
+ *
+ * @author Shane Bryzak
+ */
+@Entity
+public class IdentityObjectCredential implements Serializable
+{
+ private static final long serialVersionUID = -3322215745174559505L;
+
+ private Long id;
+ private IdentityObject identityObject;
+ private IdentityObjectCredentialType credentialType;
+ private String value;
+
+ @Id @GeneratedValue
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ @ManyToOne
+ public IdentityObject getIdentityObject()
+ {
+ return identityObject;
+ }
+
+ public void setIdentityObject(IdentityObject identityObject)
+ {
+ this.identityObject = identityObject;
+ }
+
+ public IdentityObjectCredentialType getCredentialType()
+ {
+ return credentialType;
+ }
+
+ public void setCredentialType(IdentityObjectCredentialType credentialType)
+ {
+ this.credentialType = credentialType;
+ }
+
+ public String getValue()
+ {
+ return value;
+ }
+
+ public void setValue(String value)
+ {
+ this.value = value;
+ }
+}
Added: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectCredentialType.java
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectCredentialType.java (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectCredentialType.java 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,41 @@
+package org.jboss.seam.security.examples.seamspace.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+/**
+ *
+ * @author Shane Bryzak
+ */
+@Entity
+public class IdentityObjectCredentialType implements Serializable
+{
+ private static final long serialVersionUID = 5838571410529001763L;
+
+ private Long id;
+ private String name;
+
+ @Id @GeneratedValue
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+}
Added: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectRelationship.java
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectRelationship.java (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectRelationship.java 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,78 @@
+package org.jboss.seam.security.examples.seamspace.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+import javax.persistence.ManyToOne;
+
+/**
+ *
+ * @author Shane Bryzak
+ */
+@Entity
+public class IdentityObjectRelationship implements Serializable
+{
+ private static final long serialVersionUID = -677485940440910431L;
+
+ private Long id;
+ private String name;
+ private IdentityObjectRelationshipType relationshipType;
+ private IdentityObject fromObject;
+ private IdentityObject toObject;
+
+ @Id @GeneratedValue
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+
+ @ManyToOne
+ public IdentityObjectRelationshipType getRelationshipType()
+ {
+ return relationshipType;
+ }
+
+ public void setRelationshipType(IdentityObjectRelationshipType relationshipType)
+ {
+ this.relationshipType = relationshipType;
+ }
+
+ @ManyToOne
+ public IdentityObject getFromObject()
+ {
+ return fromObject;
+ }
+
+ public void setFromObject(IdentityObject fromObject)
+ {
+ this.fromObject = fromObject;
+ }
+
+ @ManyToOne
+ public IdentityObject getToObject()
+ {
+ return toObject;
+ }
+
+ public void setToObject(IdentityObject toObject)
+ {
+ this.toObject = toObject;
+ }
+}
Added: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectRelationshipType.java
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectRelationshipType.java (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectRelationshipType.java 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,41 @@
+package org.jboss.seam.security.examples.seamspace.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+/**
+ *
+ * @author Shane Bryzak
+ */
+@Entity
+public class IdentityObjectRelationshipType implements Serializable
+{
+ private static final long serialVersionUID = -718615269633367747L;
+
+ private Long id;
+ private String name;
+
+ @Id @GeneratedValue
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+}
Added: modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectType.java
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectType.java (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/java/org/jboss/seam/security/examples/seamspace/model/IdentityObjectType.java 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,41 @@
+package org.jboss.seam.security.examples.seamspace.model;
+
+import java.io.Serializable;
+
+import javax.persistence.Entity;
+import javax.persistence.GeneratedValue;
+import javax.persistence.Id;
+
+/**
+ *
+ * @author Shane Bryzak
+ */
+@Entity
+public class IdentityObjectType implements Serializable
+{
+ private static final long serialVersionUID = -3128517252383691733L;
+
+ private Long id;
+ private String name;
+
+ @Id @GeneratedValue
+ public Long getId()
+ {
+ return id;
+ }
+
+ public void setId(Long id)
+ {
+ this.id = id;
+ }
+
+ public String getName()
+ {
+ return name;
+ }
+
+ public void setName(String name)
+ {
+ this.name = name;
+ }
+}
Added: modules/security/trunk/examples/idmconsole/src/main/resources/META-INF/idmconsole-ds.xml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/resources/META-INF/idmconsole-ds.xml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/resources/META-INF/idmconsole-ds.xml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE datasources
+ PUBLIC "-//JBoss//DTD JBOSS JCA Config 1.5//EN"
+ "http://www.jboss.org/j2ee/dtd/jboss-ds_1_5.dtd">
+<datasources>
+
+ <local-tx-datasource>
+ <jndi-name>idmconsoleDatasource</jndi-name>
+ <use-java-context>false</use-java-context>
+ <connection-url>jdbc:hsqldb:.</connection-url>
+ <driver-class>org.hsqldb.jdbcDriver</driver-class>
+ <user-name>sa</user-name>
+ <password></password>
+ </local-tx-datasource>
+
+</datasources>
Added: modules/security/trunk/examples/idmconsole/src/main/resources/META-INF/persistence.xml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/resources/META-INF/persistence.xml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/resources/META-INF/persistence.xml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<persistence xmlns="http://java.sun.com/xml/ns/persistence"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/persistence http://java.sun.com/xml/ns/persistence/persistence_1_0.xsd"
+ version="1.0">
+ <persistence-unit name="idmconsole">
+ <jta-data-source>idmconsoleDatasource</jta-data-source>
+ <properties>
+ <property name="hibernate.hbm2ddl.auto" value="create-drop"/>
+ <property name="hibernate.show_sql" value="true"/>
+ <property name="hibernate.transaction.manager_lookup_class" value="org.hibernate.transaction.JBossTransactionManagerLookup"/>
+ </properties>
+ </persistence-unit>
+</persistence>
Added: modules/security/trunk/examples/idmconsole/src/main/resources/import.sql
===================================================================
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/beans.xml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/beans.xml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/beans.xml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:s="urn:java:seam:core"
+ xmlns:security="urn:java:org.jboss.seam.security"
+ xmlns:idm="urn:java:org.jboss.seam.security.management"
+ xmlns:seamspace="urn:java:org.jboss.seam.security.examples.seamspace"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+ http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+ <!--idm:IdentityManager>
+ <s:extends/>
+ <idm:identityStore>
+ <s:Inject/>
+ <s:New>org.jboss.seam.security.management.JpaIdentityStore</s:New>
+ </idm:identityStore>
+ </idm:IdentityManager-->
+
+ <interceptors>
+ <class>org.jboss.seam.transaction.JtaTxInterceptor</class>
+ </interceptors>
+
+</beans>
\ No newline at end of file
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/classes/seam-beans.xml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/classes/seam-beans.xml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/classes/seam-beans.xml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,70 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://java.sun.com/xml/ns/javaee"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:s="urn:java:seam:core"
+ xmlns:security="urn:java:org.jboss.seam.security"
+ xmlns:idm="urn:java:org.jboss.seam.security.management"
+ xmlns:permission="urn:java:org.jboss.seam.security.permission"
+ xmlns:drools="urn:java:org.jboss.seam.drools"
+ xmlns:seamspace="urn:java:org.jboss.seam.security.examples.seamspace"
+ xmlns:drools-config="urn:java:org.jboss.seam.drools.config"
+ xmlns:drools-qualifier="urn:java:org.jboss.seam.drools.qualifier"
+ xsi:schemaLocation="http://java.sun.com/xml/ns/javaee
+ http://java.sun.com/xml/ns/javaee/beans_1_0.xsd">
+
+ <!--idm:IdentityManagerImpl>
+ <s:specializes/>
+ <idm:identityStore>
+ <s:Inject/>
+ <s:type>
+ <idm:JpaIdentityStore/>
+ </s:type>
+ </idm:identityStore>
+ </idm:IdentityManagerImpl>
+
+ <idm:JpaIdentityStore>
+ <s:specializes/>
+ <idm:userEntityClass>org.jboss.seam.security.examples.seamspace.model.MemberAccount</idm:userEntityClass>
+ <idm:roleEntityClass>org.jboss.seam.security.examples.seamspace.model.MemberRole</idm:roleEntityClass>
+ </idm:JpaIdentityStore>
+
+ <permission:JpaPermissionStore>
+ <s:specializes/>
+ <permission:userPermissionClass>org.jboss.seam.security.examples.seamspace.model.AccountPermission</permission:userPermissionClass>
+ </permission:JpaPermissionStore-->
+
+ <drools-config:KnowledgeBaseConfig>
+ <s:overrides/>
+ <drools-qualifier:KBaseConfig value="security-rules-config"/>
+ <drools-config:knowledgeBuilderConfig>kbuilderconfig.properties</drools-config:knowledgeBuilderConfig>
+ <drools-config:knowledgeBaseConfig>kbaseconfig.properties</drools-config:knowledgeBaseConfig>
+ <drools-config:ruleResources>
+ <s:value>classpath:security-rules.drl:DRL</s:value>
+ </drools-config:ruleResources>
+ <drools-config:eventListeners>
+ <s:value>org.drools.event.knowledgebase.DefaultKnowledgeBaseEventListener</s:value>
+ </drools-config:eventListeners>
+ </drools-config:KnowledgeBaseConfig>
+
+ <drools:KnowledgeBaseProducer>
+ <s:specializes/>
+ <drools:produceKBase>
+ <drools-qualifier:KBase value="permission-rules"/>
+ <s:parameters>
+ <drools-config:KnowledgeBaseConfig>
+ <s:Inject/>
+ <drools-qualifier:KBaseConfig value="security-rules-config"/>
+ </drools-config:KnowledgeBaseConfig>
+ </s:parameters>
+ </drools:produceKBase>
+ </drools:KnowledgeBaseProducer>
+
+ <!--permission:RuleBasedPermissionResolver>
+ <s:specializes/>
+ <permission:securityRules>
+ <drools-qualifier:KBase value="permission-rules"/>
+ <s:Inject/>
+ </permission:securityRules>
+ </permission:RuleBasedPermissionResolver-->
+
+</beans>
\ No newline at end of file
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/faces-config.xml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/faces-config.xml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/faces-config.xml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- This file is not required if you don't need any extra configuration. -->
+<faces-config version="2.0"
+ 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-facesconfig_2_0.xsd">
+
+ <!-- Write your navigation rules here. You are encouraged to use CDI for creating @Named managed beans. -->
+
+ <navigation-rule>
+ <from-view-id>/usermanager.xhtml</from-view-id>
+
+ <navigation-case>
+ <from-action>#{userAction.createUser}</from-action>
+ <if>#{true}</if>
+ <to-view-id>/userdetail.xhtml</to-view-id>
+ <redirect/>
+ </navigation-case>
+
+ </navigation-rule>
+
+ <navigation-rule>
+ <from-view-id>/userdetail.xhtml</from-view-id>
+
+ <navigation-case>
+ <from-action>#{userAction.save}</from-action>
+ <from-outcome>success</from-outcome>
+ <if>#{true}</if>
+ <to-view-id>/usermanager.xhtml</to-view-id>
+ <redirect/>
+ </navigation-case>
+
+ </navigation-rule>
+
+</faces-config>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/kbaseconfig.properties
===================================================================
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/kbuilderconfig.properties
===================================================================
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/security-rules.drl
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/security-rules.drl (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/security-rules.drl 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,247 @@
+package SeamSpacePermissions;
+
+dialect 'mvel'
+
+import java.security.Principal;
+
+import org.jboss.seam.security.permission.PermissionCheck;
+import org.jboss.seam.security.permission.RoleCheck;
+import org.jboss.seam.security.Role;
+
+import org.jboss.seam.security.examples.seamspace.model.BlogComment;
+import org.jboss.seam.security.examples.seamspace.model.Member;
+import org.jboss.seam.security.examples.seamspace.model.MemberAccount;
+import org.jboss.seam.security.examples.seamspace.model.MemberBlog;
+import org.jboss.seam.security.examples.seamspace.model.MemberFriend;
+import org.jboss.seam.security.examples.seamspace.model.MemberImage;
+
+# These rules allow members to manage permissions on their own images
+
+rule ManageImagePermissions
+ no-loop
+ activation-group "permissions"
+when
+ acct: MemberAccount()
+ image: MemberImage(mbr : member -> (mbr.memberId.equals(acct.member.memberId)))
+ check: PermissionCheck(target == image, action == "seam.read-permissions", granted == false)
+then
+ check.grant();
+end
+
+rule GrantImagePermissions
+ no-loop
+ activation-group "permissions"
+when
+ acct: MemberAccount()
+ image: MemberImage(mbr : member -> (mbr.memberId.equals(acct.member.memberId)))
+ check: PermissionCheck(target == image, action == "seam.grant-permission", granted == false)
+then
+ check.grant();
+end
+
+# Allow all users to read the available roles
+
+rule ReadRoles
+ no-loop
+ activation-group "permissions"
+when
+ check: PermissionCheck(target == "seam.role", action == "read", granted == false)
+ Role(name == "user")
+then
+ check.grant();
+end
+
+# This rule allows a member to delete their own images
+
+rule DeleteImage
+ no-loop
+ activation-group "permissions"
+when
+ acct: MemberAccount()
+ image: MemberImage(mbr : member -> (mbr.memberId.equals(acct.member.memberId)))
+ check: PermissionCheck(target == image, action == "delete", granted == false)
+then
+ check.grant();
+end
+
+# This rule allows members to revoke permissions on their images to other users/roles
+
+rule RevokeImagePermissions
+ no-loop
+ activation-group "permissions"
+when
+ acct: MemberAccount()
+ image: MemberImage(mbr : member -> (mbr.memberId.equals(acct.member.memberId)))
+ check: PermissionCheck(target == image, action == "seam.revoke-permission", granted == false)
+then
+ check.grant();
+end
+
+rule ViewProfileImage
+ no-loop
+ activation-group "permissions"
+when
+ image: MemberImage()
+ check: PermissionCheck(target == image, action == "view", granted == false)
+ eval( image.getMember().getPicture() == image )
+then
+ check.grant();
+end
+
+rule FriendViewImage
+ no-loop
+ activation-group "permissions"
+when
+ acct: MemberAccount()
+ image: MemberImage(mbr : member -> (mbr.isFriend(acct.member)))
+ PermissionCheck(target == image, action == "view")
+ role: RoleCheck(name == "friends")
+then
+ role.grant();
+end
+
+rule GuestViewImage
+ no-loop
+ activation-group "permissions"
+when
+ image: MemberImage()
+ PermissionCheck(target == image, action == "view")
+ role: RoleCheck(name == "guest")
+then
+ role.grant();
+end
+
+rule ViewMyImages
+ no-loop
+ activation-group "permissions"
+when
+ acct: MemberAccount()
+ image: MemberImage(mbr : member -> (mbr.memberId.equals(acct.member.memberId)))
+ check: PermissionCheck(target == image, action == "view")
+then
+ check.grant();
+end
+
+rule RestrictCommentPage
+ no-loop
+ activation-group "permissions"
+when
+ check: PermissionCheck(target == "/comment.xhtml", granted == false)
+ Role(name == "user")
+then
+ check.grant();
+end
+
+rule CanCreateBlogComment
+ no-loop
+ activation-group "permissions"
+when
+ blog: MemberBlog()
+ check: PermissionCheck(target == blog, action == "create", granted == false)
+ Role(name == "user")
+then
+ check.grant();
+end
+
+rule CreateBlogComment
+ no-loop
+ activation-group "permissions"
+when
+ check: PermissionCheck(target == "blogComment", action == "insert", granted == false)
+ Role(name == "user")
+then
+ check.grant();
+end
+
+# This rule grants permission for users to create their own blog entries
+rule CreateBlog
+ no-loop
+ activation-group "permissions"
+when
+ mbr: Member()
+ acct: MemberAccount(member.memberId == mbr.memberId)
+ check: PermissionCheck(target.memberId == mbr.memberId, action == "createBlog", granted == false)
+then
+ check.grant();
+end
+
+# This rule grants permission for users to upload pictures to their profile
+rule UploadImage
+ no-loop
+ activation-group "permissions"
+when
+ mbr: Member()
+ acct: MemberAccount(member.memberId == mbr.memberId)
+ check: PermissionCheck(target.memberId == mbr.memberId, action == "uploadImage", granted == false)
+then
+ check.grant();
+end
+
+rule InsertMemberBlog
+ no-loop
+ activation-group "permissions"
+when
+ acct: MemberAccount()
+ blog: MemberBlog(member == acct.member)
+ check: PermissionCheck(target == blog, action == "insert", granted == false)
+then
+ check.grant();
+end
+
+rule CreateFriendComment
+ no-loop
+ activation-group "permissions"
+when
+ acct: MemberAccount()
+ member: Member() //friends contains acct.member)
+ check: PermissionCheck(target == member, action == "createFriendComment", granted == false)
+then
+ check.grant();
+end
+
+rule CreateFriendRequest
+ no-loop
+ activation-group "permissions"
+when
+ acct: MemberAccount()
+ member: Member() //friends not contains acct.member)
+ check: PermissionCheck(target == member, action == "createFriendRequest", granted == false)
+then
+ check.grant();
+end
+
+rule CreateAccount
+ no-loop
+ activation-group "permissions"
+when
+ check: PermissionCheck(target == "seam.account", action == "create", granted == false)
+ Role(name == "admin")
+then
+ check.grant();
+end
+
+/*****************************************************************************************
+
+ The Following Rules are for Identity Management
+
+******************************************************************************************/
+
+rule ManageUsers
+ no-loop
+ activation-group "permissions"
+when
+ check: PermissionCheck(target == "seam.user", granted == false)
+ Role(name == "admin")
+then
+ check.grant();
+end
+
+rule ManageRoles
+ no-loop
+ activation-group "permissions"
+when
+ check: PermissionCheck(target == "seam.role", granted == false)
+ Role(name == "admin")
+then
+ check.grant();
+end
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/web.xml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/web.xml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/WEB-INF/web.xml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<web-app version="2.5"
+ 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_2_5.xsd">
+
+ <display-name>IDM Console Example</display-name>
+
+ <!-- JSF -->
+
+ <servlet>
+ <servlet-name>Faces Servlet</servlet-name>
+ <servlet-class>javax.faces.webapp.FacesServlet</servlet-class>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>Faces Servlet</servlet-name>
+ <url-pattern>*.jsf</url-pattern>
+ </servlet-mapping>
+
+</web-app>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/hashgen.xhtml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/hashgen.xhtml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/hashgen.xhtml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,49 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:s="http://jboss.com/products/seam/taglib">
+
+ <ui:composition template="template.xhtml">
+ <ui:define name="content">
+ <h1>Password Hash Generator</h1>
+
+ <p>
+ This page uses the methods in JpaIdentityStore to generate password hash values that you can
+ use in your own application's import.sql to create default accounts for your application.
+ </p>
+
+ <p>
+ Please note that you must have a property annotated @PasswordSalt for these hash values to work!
+ </p>
+
+ <h:form>
+
+ <div class="formRow">
+ <h:outputLabel for="password">Enter a password</h:outputLabel>
+ <h:inputText id="password" value="#{hashGenerator.password}" required="true" styleClass="wide"/>
+ <div class="validationError"><h:message for="password"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="salt">Password salt</h:outputLabel>
+ <h:inputText id="salt" value="#{hashGenerator.passwordSalt}" required="false" styleClass="wide"/>
+ <span>(Leave blank to generate a random salt)</span>
+ <div class="validationError"><h:message for="salt"/></div>
+ </div>
+
+ <h:commandButton action="#{hashGenerator.generate}" value="Generate hash"/>
+
+ </h:form>
+
+ <h2>Results</h2>
+
+ <div>Generated hash (hex encoded): <pre>#{hashGenerator.passwordHash}</pre></div>
+
+ <div>Example SQL:<br/><textarea style="width:640px;height:50px">#{hashGenerator.sql}</textarea></div>
+
+ </ui:define>
+
+ </ui:composition>
+</html>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/home.xhtml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/home.xhtml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/home.xhtml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,68 @@
+<!DOCTYPE composition PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+ <ui:composition template="/template.xhtml">
+
+ <ui:define name="content">
+ <div id="contentMain">
+ <h1>Identity Management Console</h1>
+
+ </div>
+
+ <div id="contentDivider">
+ </div>
+
+ <div id="contentSide">
+ <div class="advertising"></div>
+
+ <h:form id="loginForm" rendered="#{not identity.loggedIn}">
+ <div class="memberLogin">
+ <div class="loginHeader">Member Login</div>
+
+ <h:messages id="messages" globalOnly="true"/>
+
+ <div class="loginRow">
+ <h:outputLabel for="name" value="Username" styleClass="loginLabel"/>
+ <h:inputText id="name" value="#{credentials.username}"/>
+ </div>
+
+ <div class="validationMsg">
+ <h:message for="name"/>
+ </div>
+
+ <div class="loginRow">
+ <h:outputLabel for="password" value="Password" styleClass="loginLabel"/>
+ <h:inputSecret id="password" value="#{credentials.password}" redisplay="true"/>
+ </div>
+
+ <div class="validationMsg">
+ <h:message for="password"/>
+ </div>
+
+ <div class="loginRow">
+ <h:outputLabel for="rememberMe" value="Remember me" styleClass="loginLabel"/>
+ <h:selectBooleanCheckbox id="rememberMe" value="#{rememberMe.enabled}"/>
+ </div>
+
+ <div class="buttons">
+ <h:commandButton id="login" value="LOGIN" action="#{identity.login}" styleClass="loginButton"/>
+ </div>
+
+ <br class="clear"/>
+
+ </div>
+
+ <span>Tip: You can log in using <b>demo/demo</b> as the username/password</span>
+ </h:form>
+
+ </div>
+
+ </ui:define>
+
+ </ui:composition>
+</html>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/images/bg_button.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/images/bg_button.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/images/checkmark.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/images/checkmark.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/images/cross.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/images/cross.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/images/ellipsis.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/images/ellipsis.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/images/no_image.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/images/no_image.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/index.html
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/index.html (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/index.html 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,5 @@
+<html>
+<head>
+ <meta http-equiv="Refresh" content="0; URL=home.jsf">
+</head>
+</html>
\ No newline at end of file
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/profile.xhtml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/profile.xhtml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/profile.xhtml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,123 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core">
+
+ <ui:composition template="template.xhtml">
+ <ui:define name="content">
+
+ <div class="errors"><h:messages globalOnly="true"/></div>
+
+ <ui:fragment rendered="#{profileAction.selectedMember == null}">
+ <div>Sorry, but this member does not exist.</div>
+ </ui:fragment>
+
+ <ui:fragment rendered="#{profileAction.selectedMember != null}">
+ <div id="memberCard">
+ <h1>#{profileAction.selectedMember.memberName}'s profile</h1>
+
+ <ui:fragment rendered="#{profileAction.selectedMember.picture ne null}">
+ <div id="memberCardPicture">
+ <h:graphicImage value="/content/images?id=#{profileAction.selectedMember.picture.imageId}&width=170"/>
+ </div>
+ </ui:fragment>
+
+ <div id="memberCardText">
+ <span class="tagline">"#{profileAction.selectedMember.tagline}"</span><br/><br/>
+ #{profileAction.selectedMember.gender.descr}<br/>
+ #{profileAction.selectedMember.age}<br/>
+ #{profileAction.selectedMember.location}<br/>
+ </div>
+
+ <br style="clear:both"/>
+
+ View My:
+ <h:link outcome="/pictures.xhtml" value="Pics">
+ <f:param name="name" value="#{profileAction.selectedMember.memberName}"/>
+ </h:link>
+ </div>
+
+ <div id="memberBlog">
+ <div class="sectionHeader">#{profileAction.selectedMember.memberName}'s latest blog entries</div>
+
+ <ui:repeat value="#{profileAction.latestBlogs}" var="latestBlog">
+ <div class="blogSummary">#{latestBlog.title}
+ (<h:link outcome="/blogentry.xhtml" value="view more">
+ <f:param name="name" value="#{profileAction.selectedMember.memberName}"/>
+ <f:param name="blogId" value="#{latestBlog.blogId}"/>
+ </h:link>)
+ </div>
+ </ui:repeat>
+
+ [<h:link id="viewBlog" outcome="/blog.xhtml" value="View all blog entries" propagation="none">
+ <f:param name="name" value="#{profileAction.selectedMember.memberName}"/>
+ </h:link>]
+
+ <ui:fragment rendered="#{identity.hasPermission(profileAction.selectedMember, 'createBlog')}">
+ <span>
+ [<h:link id="createBlog" action="#{blog.createEntry}" value="Create new blog entry"/>]
+ </span>
+ </ui:fragment>
+ </div>
+
+ <div id="memberFriends">
+ <div class="sectionHeader">#{profileAction.selectedMember.memberName}'s friends</div>
+
+ <ui:repeat value="#{profile.friends}" var="f">
+ <div class="friend">
+
+ <h:link outcome="/profile.xhtml">
+ <f:param name="name" value="#{f.memberName}"/>
+ #{f.memberName}<br/>
+ <h:graphicImage value="/content/images?id=#{f.picture.imageId}&width=90"/>
+ </h:link>
+
+ </div>
+ </ui:repeat>
+
+ <br class="clear"/>
+
+ <ui:fragment rendered="#{profileAction.selectedMember.memberId != authenticatedMember.memberId and identity.hasPermission(selectedMember, 'createFriendRequest')}">
+ <span>
+ [<h:link outcome="/friendrequest.xhtml" action="#{friendAction.createRequest}" value="Send a friend request"/>]
+ </span>
+ </ui:fragment>
+
+ </div>
+
+ <div id="friendComments">
+ <div class="sectionHeader">#{profileAction.selectedMember.memberName}'s friend's comments</div>
+
+ <ui:repeat value="#{profile.friendComments}" var="c">
+ <table class="friendComments">
+ <tr>
+ <td class="friendCommentor">
+ <h:link outcome="/profile.xhtml">
+ <f:param name="name" value="#{c.friend.memberName}"/>
+ #{c.friend.memberName}<br/>
+ <h:graphicImage value="/content/images?id=#{c.friend.picture.imageId}&width=90"/>
+ </h:link>
+ </td>
+
+ <td style="text-align: left">
+ <b>#{c.formattedCommentDate}</b><br/>
+ <p><h:outputText value="#{c.comment}"/></p>
+ </td>
+ </tr>
+ </table>
+ </ui:repeat>
+
+ <ui:fragment rendered="#{identity.hasPermission(profileAction.selectedMember, 'createFriendComment')}">
+ <span>
+ [<h:link outcome="/friendcomment.xhtml" value="Add Comment"/>]
+ </span>
+ </ui:fragment>
+ </div>
+
+ </ui:fragment>
+
+ </ui:define>
+
+ </ui:composition>
+</html>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/register.xhtml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/register.xhtml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/register.xhtml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,103 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:s="http://jboss.com/products/seam/taglib"
+ xmlns:rich="http://richfaces.org/rich">
+
+ <ui:composition template="template.xhtml">
+ <ui:define name="content">
+ <div id="contentMain">
+ <div class="errors"><h:messages globalOnly="true"/></div>
+
+ <p>
+ Already a member? <s:link view="/home.seam" value="Click here to log in" propagation="none"/>
+ </p>
+
+ <div id="register">
+ <div class="registerHeader">
+ JOIN SEAMSPACE HERE!
+ </div>
+
+ <h:form styleClass="register">
+ <s:validateAll>
+ <div class="formRow">
+ <h:outputLabel for="email">Email address<em>*</em></h:outputLabel>
+ <h:inputText id="email" value="#{register.member.email}" required="true" styleClass="wide"/>
+ <div class="validationError"><h:message for="email"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="firstName">First name<em>*</em></h:outputLabel>
+ <h:inputText id="firstName" value="#{register.member.firstName}" required="true"/>
+ <div class="validationError"><h:message for="firstName"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="lastName">Last name<em>*</em></h:outputLabel>
+ <h:inputText id="lastName" value="#{register.member.lastName}" required="true"/>
+ <div class="validationError"><h:message for="lastName"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="memberName">Nick name<em>*</em></h:outputLabel>
+ <h:inputText id="memberName" value="#{register.member.memberName}" required="true"/>
+ <div class="validationError"><h:message for="memberName"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="username">Username<em>*</em></h:outputLabel>
+ <h:inputText id="username" value="#{register.username}" required="true"/>
+ <div class="validationError"><h:message for="username"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="password">Password<em>*</em></h:outputLabel>
+ <h:inputSecret id="password" value="#{register.password}" required="true"/>
+ <div class="validationError"><h:message for="password"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="confirmPassword">Confirm password<em>*</em></h:outputLabel>
+ <h:inputSecret id="confirmPassword" value="#{register.confirm}" required="true"/>
+ <div class="validationError"><h:message for="confirmPassword"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="gender">Gender<em>*</em></h:outputLabel>
+ <h:selectOneRadio id="gender" value="#{register.gender}" required="true">
+ <f:selectItem itemValue="Male" itemLabel="Male" />
+ <f:selectItem itemValue="Female" itemLabel="Female" />
+ </h:selectOneRadio>
+ <div class="validationError"><h:message for="gender"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="dob">Date of birth<em>*</em></h:outputLabel>
+ <rich:calendar id="dob" value="#{register.member.dob}" required="true" datePattern="MM/dd/yyyy" buttonIcon="images/ellipsis.png" />
+ <div class="validationError"><h:message for="dob"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="verifyCaptcha"><h:graphicImage value="/seam/resource/captcha"/><em>*</em></h:outputLabel>
+ <h:inputText id="verifyCaptcha" value="#{captcha.response}" required="true"/>
+ <div class="validationError"><h:message for="verifyCaptcha"/></div>
+ </div>
+
+ </s:validateAll>
+
+ <div class="buttons">
+ <h:commandButton value="Next" action="#{register.next}" styleClass="registerButton"/>
+ </div>
+
+ </h:form>
+
+ <br class="clear"/>
+ </div>
+ </div>
+
+ </ui:define>
+
+ </ui:composition>
+</html>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/register2.xhtml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/register2.xhtml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/register2.xhtml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,42 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:s="http://jboss.com/products/seam/taglib">
+
+ <ui:composition template="template.xhtml">
+ <ui:define name="content">
+ <div id="contentMain">
+ <div class="errors"><h:messages globalOnly="true"/></div>
+
+ <div id="register">
+ <div class="registerHeader">
+ JOIN SEAMSPACE HERE!
+ </div>
+
+ <h:form styleClass="register" enctype="multipart/form-data">
+ <s:validateAll>
+
+ <div class="formRow">
+ <h:outputLabel for="picture">Member photo</h:outputLabel>
+ <s:fileUpload id="picture" data="#{register.picture}" accept="image/png"
+ contentType="#{register.pictureContentType}" />
+ <div class="validationError"><h:message for="picture"/></div>
+ </div>
+
+ </s:validateAll>
+
+ <div class="buttons">
+ <h:commandButton value="Upload" action="#{register.uploadPicture}" styleClass="registerButton"/>
+ </div>
+
+ </h:form>
+
+ <br class="clear"/>
+ </div>
+ </div>
+
+ </ui:define>
+
+ </ui:composition>
+</html>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/roledetail.page.xml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/roledetail.page.xml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/roledetail.page.xml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,9 @@
+<page xmlns="http://jboss.com/products/seam/pages"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.2.xsd">
+ <navigation from-action="#{roleAction.save}">
+ <rule if-outcome="success">
+ <redirect view-id="/rolemanager.xhtml"/>
+ </rule>
+ </navigation>
+</page>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/roledetail.xhtml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/roledetail.xhtml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/roledetail.xhtml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,55 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:rich="http://richfaces.org/rich"
+ xmlns:s="http://jboss.com/products/seam/taglib">
+
+ <ui:composition template="template.xhtml">
+
+ <ui:define name="head">
+ <link href="style/security.css" rel="stylesheet" type="text/css"/>
+ </ui:define>
+
+ <ui:define name="content">
+
+ <div id="contentMain">
+
+ <h2>Role Details</h2>
+
+ <h:messages globalOnly="true"/>
+
+ <h:form id="role">
+
+ <div class="formRow">
+ <h:outputLabel for="role" value="Role" styleClass="formLabel"/>
+ <h:inputText id="name" value="#{roleAction.role}" readonly="#{identityManager.userExists(roleAction.role)}"/>
+ <div class="validationError"><h:message for="role"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="groups" value="Member of" styleClass="formLabel"/>
+ <div class="selectMany">
+ <h:selectManyCheckbox id="roles" value="#{roleAction.groups}" layout="pageDirection" styleClass="roles">
+ <s:selectItems value="#{roleAction.assignableRoles}" var="role" label="#{role}"/>
+ </h:selectManyCheckbox>
+ </div>
+ <div class="validationError"><h:message for="groups"/></div>
+ </div>
+
+ <div class="formButtons">
+ <h:commandButton id="save" value="Save" action="#{roleAction.save}" styleClass="formButton"/>
+ <s:button id="cancel" view="/rolemanager.xhtml" value="Cancel" propagation="end" styleClass="formButton"/>
+ </div>
+
+ <br class="clear"/>
+
+ </h:form>
+
+ </div>
+
+ </ui:define>
+
+ </ui:composition>
+</html>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/rolemanager.page.xml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/rolemanager.page.xml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/rolemanager.page.xml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,14 @@
+<page xmlns="http://jboss.com/products/seam/pages"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.2.xsd"
+ action="#{roleSearch.loadRoles}">
+ <restrict>#{s:hasPermission('seam.role', 'read')}</restrict>
+
+ <navigation from-action="#{roleAction.createRole}">
+ <redirect view-id="/roledetail.xhtml"/>
+ </navigation>
+
+ <navigation from-action="#{roleAction.editRole(roleSearch.selectedRole)}">
+ <redirect view-id="/roledetail.xhtml"/>
+ </navigation>
+</page>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/rolemanager.xhtml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/rolemanager.xhtml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/rolemanager.xhtml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,60 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:s="http://jboss.com/products/seam/taglib">
+
+ <ui:composition template="template.xhtml">
+
+ <ui:define name="head">
+ <link href="style/security.css" rel="stylesheet" type="text/css"/>
+ </ui:define>
+
+ <ui:define name="content">
+
+ <script type="text/javascript">
+ function confirmDelete() {
+ return confirm("Are you sure you wish to delete this role? This action cannot be undone.");
+ }
+ </script>
+
+ <div id="contentMain">
+
+ <h2>Role Manager</h2>
+
+ <h:button id="newRole" action="#{roleAction.createRole}" styleClass="newrole" rendered="#{identity.hasPermission('seam.account', 'create')}"/>
+
+ <h:dataTable
+ id="threads"
+ value="#{roles}"
+ var="role"
+ styleClass="security"
+ cellspacing="0"
+ headerClass="header"
+ rowClasses="odd,even"
+ columnClasses=",,action">
+ <h:column width="auto">
+ <f:facet name="header">Role</f:facet>
+ #{role}
+ </h:column>
+ <h:column id="roles" width="auto">
+ <f:facet name="header">Member Of</f:facet>
+ #{roleSearch.getRoleGroups(role)}
+ </h:column>
+ <h:column width="auto">
+ <f:facet name="header">Action</f:facet>
+ <s:fragment rendered="#{identity.hasPermission('seam.role', 'update')}">
+ <s:link id="edit" value="Edit" action="#{roleAction.editRole(roleSearch.selectedRole)}"/><span> | </span>
+ </s:fragment>
+ <s:link id="delete" value="Delete" action="#{identityManager.deleteRole(roleSearch.selectedRole)}"
+ rendered="#{identity.hasPermission('seam.role', 'delete')}"
+ onclick="return confirmDelete()"/>
+ </h:column>
+ </h:dataTable>
+ </div>
+
+ </ui:define>
+
+ </ui:composition>
+</html>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/security.xhtml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/security.xhtml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/security.xhtml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core"
+ xmlns:s="http://jboss.com/products/seam/taglib">
+
+ <ui:composition template="template.xhtml">
+
+ <ui:define name="head">
+ <link href="style/security.css" rel="stylesheet" type="text/css"/>
+ </ui:define>
+
+ <ui:define name="content">
+
+ <div id="contentMain">
+
+ <h2>Security</h2>
+
+ <h:button id="manageUsers" outcome="/usermanager.xhtml" styleClass="manageusers" value="Manage Users"/><br/>
+ <h:button id="manageRoles" outcome="/rolemanager.xhtml" styleClass="manageroles" value="Manage Roles"/>
+
+ </div>
+
+ </ui:define>
+
+ </ui:composition>
+</html>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/security_error.xhtml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/security_error.xhtml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/security_error.xhtml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:s="http://jboss.com/products/seam/taglib">
+
+ <ui:composition template="template.xhtml">
+ <ui:define name="content">
+
+ <h1>A Security Error has occurred</h1>
+
+ <div class="errors"><h:messages globalOnly="true"/></div>
+
+ </ui:define>
+
+ </ui:composition>
+</html>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/advertising.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/style/advertising.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/btn_newpermission.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/style/btn_newpermission.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/btn_newrole.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/style/btn_newrole.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/btn_newuser.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/style/btn_newuser.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/cal-next.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/style/cal-next.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/cal-prev.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/style/cal-prev.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/date.css
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/style/date.css (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/style/date.css 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,185 @@
+div.seam-date
+{
+ margin-top: 5px;
+ border: 1px solid #AAAAAA;
+ background: #fff url(../img/input.bg.gif) 0 0 repeat-x;
+ background-color: #FFFFFF;
+ color: #505050;
+ font-family: Tahoma, Arial, Helvetica, sans-serif;
+ font-size: 12px;
+}
+
+table.seam-date td {
+ font-family: Tahoma, Arial, Helvetica, sans-serif;
+ font-weight: 11px;
+}
+
+.seam-date-monthNames
+{
+ width: 70px;
+ border: 1px solid #dddddd;
+ border-right: 3px solid #444444;
+ border-bottom: 3px solid #444444;
+ background-color: #ffffff;
+ font-size: 12px;
+ cursor: pointer;
+ font-family: Tahoma, Arial, Helvetica, sans-serif;
+ font-weight: normal;
+}
+
+a.seam-date-monthNameLink, a.seam-date-monthNameLink:visited
+{
+ text-align: center;
+ display: block;
+ color: #555555;
+}
+
+a.seam-date-monthNameLink:hover
+{
+ background-color: #CCCCCC;
+ color: red;
+}
+
+.seam-date-years
+{
+ height: 10em;
+ overflow: auto;
+ width: 60px;
+ border: 1px solid #dddddd;
+ border-right: 3px solid #444444;
+ border-bottom: 3px solid #444444;
+ background-color: #ffffff;
+ font-size: 12px;
+ cursor: pointer;
+ font-family: Tahoma, Arial, Helvetica, sans-serif;
+ font-weight: normal;
+}
+
+a.seam-date-yearLink, a.seam-date-yearLink:visited
+{
+ text-align: center;
+ display: block;
+ color: #555555;
+}
+
+a.seam-date-yearLink:hover
+{
+ background-color: #CCCCCC;
+ color: red;
+}
+
+tr.seam-date-header
+{
+ padding: 2px 0px 2px 0px;
+}
+
+td.seam-date-header
+{
+ padding: 0px 8px 0px 8px;
+ text-align: center;
+ color: gray;
+ font-family: Tahoma, Arial, Helvetica, sans-serif;
+ font-weight: bold;
+ font-size: 12px;
+}
+
+td.seam-date-header-prevMonth
+{
+ background-image: url("cal-prev.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding: 0px 2px 0px 2px;
+ width: 17px;
+ height: 16px;
+ margin-left: 2px;
+}
+
+td.seam-date-header-nextMonth
+{
+ background-image: url("cal-next.png");
+ background-repeat: no-repeat;
+ background-position: center;
+ padding: 0px 2px 0px 2px;
+ width: 17px;
+ height: 16px;
+ margin-right: 2px;
+}
+
+tr.seam-date-headerDays
+{
+ color: white;
+ font-weight: normal;
+}
+
+tr.seam-date-headerDays > td
+{
+ background-color: #CCCCCC;
+ border: 1px solid #AAAAAA;
+ color: white;
+ text-align: center;
+ width: 26px;
+}
+
+tr.seam-date-footer
+{
+ background-color: white;
+ color: #505050;
+ font-weight: bold;
+}
+
+tr.seam-date-footer > td
+{
+ text-align: center;
+}
+
+td.seam-date-inMonth
+{
+ background-color: white;
+ color: black;
+ font-weight: normal;
+ cursor: pointer;
+ border: 1px solid #ece9d8;
+}
+
+td.seam-date-outMonth
+{
+ background-color: white;
+ color: #999999;
+ font-weight: normal;
+ cursor: pointer;
+ border: 1px solid #ece9d8;
+}
+
+td.seam-date-selected
+{
+ background-color: #CCCCCC;
+ border: 1px solid #AAAAAA;
+ color: black;
+ font-weight: normal;
+}
+
+td.seam-date-dayOff-inMonth
+{
+ background-color: #efefef;
+ color: black;
+ font-weight: normal;
+ cursor: pointer;
+ border: 1px solid #ece9d8;
+}
+
+td.seam-date-dayOff-outMonth
+{
+ background-color: #efefef;
+ color: #999999;
+ font-weight: normal;
+ cursor: pointer;
+ border: 1px solid #ece9d8;
+}
+
+td.seam-date-hover
+{
+ background-color: #CCCCCC;
+ border: 1px solid #AAAAAA;
+ cursor: pointer;
+ color: red;
+}
\ No newline at end of file
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/divider.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/style/divider.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/manage_roles.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/style/manage_roles.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/manage_users.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/style/manage_users.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/padlock.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/style/padlock.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/seamspace.css
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/style/seamspace.css (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/style/seamspace.css 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,600 @@
+body {
+ font-family: verdana, arial, sans-serif, helvetica;
+ background-color: #e5e5e5;
+ font-size:11px;
+ margin: 0;
+}
+
+h1, h2, h3 {
+ margin-top: 2px;
+ margin-bottom: 6px;
+}
+
+#header {
+ margin-left: auto;
+ margin-right: auto;
+ background: url(seamspace.png) left top no-repeat;
+ height: 100px;
+ width: 800px;
+ background-color: #003399;
+}
+
+#menubar {
+ margin-left: auto;
+ margin-right: auto;
+ overflow: none;
+ height: 17px;
+ width: 800px;
+ background-color: #5a8cc0;
+ text-align: center;
+ padding-top: 3px;
+}
+
+#content {
+ padding-top: 10px;
+ margin-left: auto;
+ margin-right: auto;
+ width: 800px;
+ background-color: #ffffff;
+ min-height: 800px;
+}
+
+#content a, #content a:visited {
+ font-weight: bold;
+ color: #003399;
+}
+
+#content a:hover {
+ font-weight: bold;
+ color: #7799dd;
+}
+
+#contentMain {
+ float: left;
+ width: 430px;
+ margin-left: 10px;
+ margin-top: 10px;
+}
+
+#contentDivider {
+ float: left;
+ background: url(divider.png) repeat-y top left;
+ height: 100%;
+ width: 10px;
+}
+
+#contentSide {
+ float: left;
+ width: 310px;
+ margin-left: 10px;
+ margin-top: 10px;
+ margin-right: 10px;
+}
+
+#memberCard {
+ width: 350px;
+ float: left;
+ margin-left: 10px;
+ border: 2px solid #eeeeee;
+ background-color: #f5f5f5;
+ padding: 2px;
+}
+
+#memberCardPicture {
+ width: 170px;
+ float: left;
+}
+
+#memberCardText {
+ width: 170px;
+ float: right;
+}
+
+#memberBlog {
+ width: 400px;
+ float: right;
+ margin-right: 10px;
+ border: 2px solid #eeeeee;
+ padding: 2px;
+}
+
+#blogMemberCard {
+ width: 140px;
+ float: left;
+ margin-left: 10px;
+ border: 2px solid #eeeeee;
+ background-color: #f5f5f5;
+ padding: 2px;
+ text-align: center;
+}
+
+#blog {
+ float: right;
+ width: 600px;
+ margin-right: 10px;
+ padding: 2px;
+}
+
+#memberFriends {
+ width: 400px;
+ float: right;
+ margin-right: 10px;
+ margin-top: 12px;
+ border: 2px solid #eeeeee;
+ padding: 2px;
+}
+
+div.friend {
+ float: left;
+ width: 99px;
+ text-align: center;
+}
+
+#friendComments {
+ width: 400px;
+ float: right;
+ margin-right: 10px;
+ margin-top: 12px;
+ border: 2px solid #eeeeee;
+ padding: 2px;
+}
+
+table.friendComments {
+ width: 100%;
+}
+
+table.friendComments td {
+ border: 1px solid #dddddd;
+ background-color: #eeeeee;
+ text-align: center;
+ vertical-align: top;
+}
+
+td.friendCommentor {
+ width: 100px;
+}
+
+div.friendRequest {
+ background-color: #bbddff;
+ width: 600px;
+ float: right;
+ margin-right: 10px;
+ border: 2px solid #eeeeee;
+ padding: 4px;
+}
+
+div.friendRequest textarea {
+ font-family: verdana, arial, sans-serif, helvetica;
+ font-size:11px;
+ margin: 4px 12px 8px 0px;
+ width: 560px;
+ height: 120px;
+}
+
+div.blogSummary {
+ padding: 0px 2px 4px 2px;
+ margin-bottom: 8px;
+}
+
+div.blogEntry {
+ background-color: #bbddff;
+ padding: 8px 8px 8px 8px;
+ margin-bottom: 12px;
+}
+
+div.blogEntry label {
+ font-weight: bold;
+}
+
+div.blogEntry input.title {
+ width: 560px;
+}
+
+div.blogEntry textarea {
+ font-family: verdana, arial, sans-serif, helvetica;
+ font-size:11px;
+ margin: 4px 12px 8px 0px;
+ width: 560px;
+ height: 120px;
+}
+
+div.blogDate {
+ font-weight: bold;
+ margin-bottom: 8px;
+}
+
+div.blogTitle {
+ font-weight: bold;
+ margin-left: 24px;
+ margin-bottom: 8px;
+}
+
+div.blogText {
+ margin-left: 24px;
+ margin-bottom: 8px;
+ text-align: justify;
+}
+
+div.blogFooter {
+ margin-bottom: 8px;
+}
+
+table.blogComment {
+ margin-bottom: 2px;
+ width: 100%;
+}
+
+td.blogCommentor {
+ width: 160px;
+ background-color: #ff9933;
+ text-align: center;
+ vertical-align: top;
+}
+
+td.blogCommentText {
+ background-color: #ffddbb;
+ padding: 12px 4px 4px 8px;
+}
+
+div.commentEntry {
+ background-color: #ff9933;
+ padding: 4px 4px 4px 4px;
+}
+
+div.commentEntry label {
+ font-weight: bold;
+ color: #ffffff;
+ margin-bottom: 4px;
+}
+
+div.commentEntry textarea {
+ font-family: verdana, arial, sans-serif, helvetica;
+ font-size:11px;
+ margin: 8px 12px 8px 6px;
+ width: 560px;
+ height: 120px;
+}
+
+div.buttons {
+ float: right;
+}
+
+input.action {
+ display: inline;
+ margin-right: 8px;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ border: 1px solid #003399;
+ background-color: #ffffff;
+ color: #003399;
+ font-size: 10px;
+ padding: 3px 8px 3px 8px;
+}
+
+div.headerRight {
+ float: right;
+ width: 440px;
+ padding-right: 4px;
+ padding-top: 4px;
+}
+
+div.headerMenu {
+ float: right;
+}
+
+div.advertising {
+ background: url(advertising.png) no-repeat top left;
+ width: 307px;
+ height: 86px;
+}
+
+div.sectionHeader {
+ font-weight: bold;
+ font-size: normal;
+ background-color: #eeeeee;
+ padding: 2px 2px 2px 2px;
+ margin-bottom: 12px;
+}
+
+span.tagline {
+ font-style: italic;
+}
+
+a, a:visited, a:hover {
+ color: #ffffff;
+ text-decoration: none;
+ padding-left: 2px;
+ padding-right: 2px;
+}
+
+#header a:hover {
+ text-decoration: underline;
+}
+
+#search {
+ margin-top: 2px;
+}
+
+#search a:hover {
+ margin-bottom: 4px;
+ text-decoration: none;
+}
+
+input.searchField {
+ width: 290px;
+}
+
+input.searchButton {
+ width: 140px;
+}
+
+#menubar a:hover {
+ color: #003399;
+ text-decoration: underline;
+}
+
+div.memberLogin {
+ margin-top: 16px;
+ width: 300px;
+ border: 1px solid #003399;
+ padding: 0px;
+}
+
+div.loginHeader {
+ color: #ffffff;
+ font-weight: bold;
+ background-color: #003399;
+ height: 18px;
+ padding: 2px 2px 2px 2px;
+}
+
+div.newMembers {
+ width: 300px;
+ margin-top: 8px;
+ border: 1px solid #ffcc99;
+}
+
+div.newMembersHeader {
+ font-weight: bold;
+ background-color: #ffcc99;
+ height: 18px;
+ padding: 2px 2px 2px 2px;
+}
+
+div.newMember {
+ float: left;
+ width: 99px;
+ text-align: center;
+}
+
+div.newMember img {
+ border: none;
+}
+
+div.loginRow {
+ padding-top: 2px;
+ padding-bottom: 2px;
+}
+
+label.loginLabel {
+ float: left;
+ width: 100px;
+ padding: 2px 2px 2px 2px;
+}
+
+div.buttons {
+ float: right;
+ margin-right: 60px;
+}
+
+input.loginButton {
+ display: inline;
+ margin-right: 8px;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ border: 1px solid #003399;
+ background-color: #ffffff;
+ color: #003399;
+ font-size: 10px;
+ padding: 3px 8px 3px 8px;
+}
+
+input.registerButton {
+ display: inline;
+ margin-top: 4px;
+ margin-bottom: 4px;
+ border: 1px solid #ffa76d;
+ background-color: #ff6600;
+ color: #ffffff;
+ font-size: 10px;
+ padding: 3px 8px 3px 8px;
+}
+
+div.loginRow input[type='text'], div.loginRow input[type='password'] {
+ width: 180px;
+}
+
+.clear {
+ clear: both;
+ font-size: 0px;
+}
+
+.divider {
+ color: #aaaaaa;
+}
+
+div.errors {
+ color: #ff0000;
+ font-weight: bold;
+ font-size: normal;
+}
+
+div.errors ul {
+ list-style: none;
+}
+
+#register {
+ float: left;
+ width: 400px;
+ border: 1px solid #5a8cc0;
+}
+
+div.registerHeader {
+ font-size: normal;
+ font-weight: bold;
+ color: #ffffff;
+ background-color: #5a8cc0;
+ padding: 8px 4px 8px 12px;
+}
+
+form.register label {
+ float: left;
+ display: block;
+ vertical-align: top;
+ width: 120px;
+ margin-top: 2px;
+}
+
+form.register input.wide {
+ width: 240px;
+}
+
+form.register em {
+ font-size: normal;
+ font-weight: bold;
+ color: #ff0000;
+}
+
+form.register div.validationError {
+ margin-left: 120px;
+ font-weight: bold;
+ color: #ff0000;
+}
+
+img.ellipsis {
+ width: 18px;
+ height: 18px;
+ border: none;
+ margin-bottom: 2px;
+ margin-left: 2px;
+ vertical-align: bottom;
+ cursor: pointer;
+}
+
+div.seam-date {
+ background-color: #ffffff;
+ border: 1px solid #5a8cc0;
+}
+
+td.seam-date-hover {
+ background-color: #5a8cc0;
+ color: #ffffff;
+ cursor: pointer;
+}
+
+quote {
+ border: 1px solid #fac289;
+ margin: 4px 8px 4px 8px;
+ padding: 12px 12px 12px 12px;
+ background-color: #fbf4ec;
+ display: block;
+}
+
+/* General form styles */
+
+div.formRow {
+ padding: 3px 4px 3px 2px;
+ clear: both;
+}
+
+div.formRow label {
+ float: left;
+ width: 120px;
+ padding: 2px 2px 2px 2px;
+}
+
+div.formRow input[type='text'] {
+ width: 120px;
+}
+
+div.formRow input[type='password'] {
+ width: 120px;
+}
+
+div.validationError {
+ margin-left: 120px;
+ font-weight: bold;
+ color: #ff0000;
+}
+
+.roles {
+ width: 120px;
+ border: 1px solid #7F9DB9;
+ background-color: #E7EDF7;
+}
+
+div.selectMany label {
+ float: none;
+}
+
+.formButton {
+ background: url(../images/bg_button.png) top left repeat-x;
+ border: 1px solid #003399;
+ font-size: small;
+ font-weight: bold;
+ color: #000000;
+ margin-right: 8px;
+ padding-left: 4px;
+ padding-right: 4px;
+}
+
+div.formButtons {
+ float: right;
+ padding: 4px 8px 16px 2px;
+}
+
+div.memberPictures {
+ float: right;
+ width: 600px;
+ margin-right: 10px;
+ padding: 2px;
+ background-color: #000000;
+ border: 1px solid #aaaaaa;
+ padding: 8px 8px 8px 8px;
+}
+
+div.memberPictureCard {
+ width: 140px;
+ float: left;
+ margin-left: 10px;
+ border: 2px solid #eeeeee;
+ background-color: #f5f5f5;
+ padding: 2px;
+ text-align: center;
+}
+
+div.thumbnail {
+ width: 110px;
+ background-color: #333333;
+ padding: 10px 10px 10px 10px;
+ margin: 8px 8px 8px 8px;
+ float: left;
+ text-align: center;
+}
+
+input.padlock {
+ background: url(padlock.png) top left no-repeat;
+ width: 14px;
+ height: 20px;
+ float: left;
+ border: 0px;
+ margin-left: 10px;
+}
+
+input.trash {
+ background: url(trash.png) top left no-repeat;
+ width: 20px;
+ height: 20px;
+ float: left;
+ border: 0px;
+}
\ No newline at end of file
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/seamspace.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/style/seamspace.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/security.css
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/style/security.css (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/style/security.css 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,126 @@
+input.newuser {
+ background: url(btn_newuser.png) top left no-repeat;
+ height: 39px;
+ width: 113px;
+ margin: 4px 4px 4px 4px;
+ border: 0px;
+ cursor: pointer;
+}
+
+input.newrole {
+ background: url(btn_newrole.png) top left no-repeat;
+ height: 39px;
+ width: 113px;
+ margin: 4px 4px 4px 4px;
+ border: 0px;
+ cursor: pointer;
+}
+
+input.newpermission {
+ background: url(btn_newpermission.png) top left no-repeat;
+ height: 39px;
+ width: 113px;
+ margin: 4px 4px 4px 4px;
+ border: 0px;
+ cursor: pointer;
+}
+
+input.manageusers {
+ display: block;
+ background: url(manage_users.png) top left no-repeat;
+ height: 88px;
+ width: 300px;
+ padding-left: 10px;
+ font-size: 19px;
+ font-weight: bold;
+ color: #333333;
+ border: 0px;
+ cursor: pointer;
+ margin-top: 20px;
+ margin-left: 20px;
+}
+
+input.manageroles {
+ display: block;
+ background: url(manage_roles.png) top left no-repeat;
+ height: 88px;
+ width: 300px;
+ padding-left: 10px;
+ font-size: 19px;
+ font-weight: bold;
+ color: #333333;
+ border: 0px;
+ cursor: pointer;
+ margin-top: 20px;
+ margin-left: 20px;
+}
+
+.roles {
+ width: 120px;
+ border: 1px solid #7F9DB9;
+ background-color: #E7EDF7;
+}
+
+div.selectMany label {
+ float: none;
+}
+
+.formButton {
+ background: url(../images/bg_button.png) top left repeat-x;
+ border: 1px solid #003399;
+ font-size: small;
+ font-weight: bold;
+ color: #000000;
+ margin-right: 8px;
+ padding-left: 4px;
+ padding-right: 4px;
+}
+
+div.formButtons {
+ float: right;
+ padding: 4px 8px 16px 2px;
+}
+
+div.checkmark {
+ background: url(../images/checkmark.png) top left no-repeat;
+ width: 14px;
+ height: 15px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+div.cross {
+ background: url(../images/cross.png) top left no-repeat;
+ width: 14px;
+ height: 15px;
+ margin-left: auto;
+ margin-right: auto;
+}
+
+table.security {
+ border: 1px solid black;
+ width: 500px;
+}
+
+th.header {
+ background: url(table_header.png) top left repeat-x;
+ color: #ffffff;
+ padding-top: 3px;
+ padding-bottom: 3px;
+}
+
+tr.odd {
+ background-color: #ffffff;
+}
+
+tr.even {
+ background-color: #E9F5FF;
+}
+
+td.enabled {
+ text-align: center;
+}
+
+td.action {
+ text-align: right;
+}
\ No newline at end of file
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/table_header.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/style/table_header.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/style/trash.png
===================================================================
(Binary files differ)
Property changes on: modules/security/trunk/examples/idmconsole/src/main/webapp/style/trash.png
___________________________________________________________________
Name: svn:mime-type
+ application/octet-stream
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/template.xhtml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/template.xhtml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/template.xhtml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,68 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core">
+
+ <head>
+ <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
+ <title>SeamSpace</title>
+ <link href="style/seamspace.css" rel="stylesheet" type="text/css"/>
+ <link href="style/date.css" rel="stylesheet" type="text/css"/>
+ <ui:insert name="head"/>
+ </head>
+
+ <body>
+
+ <div id="header">
+ <div class="headerRight">
+ <div class="headerMenu">
+
+ <h:form>
+ <ui:fragment rendered="#{identity.loggedIn}">
+ <h:link id="profile" outcome="/profile.xhtml" value="My Profile" propagation="none">
+ <f:param name="name" value="#{authenticatedMember.memberName}"/>
+ </h:link>
+ <h:outputText styleClass="divider" value=" | "/>
+ </ui:fragment>
+
+ <ui:fragment rendered="#{identity.hasRole('admin')}">
+ <h:link id="security" outcome="/security.xhtml" value="Security" propagation="none"/>
+ <h:outputText styleClass="divider" value=" | "/>
+ </ui:fragment>
+
+ <h:commandLink id="logout" action="#{identity.logout}" value="Log out" rendered="#{identity.loggedIn}"/>
+
+ <h:outputLink id="login" value="home.seam" rendered="#{not identity.loggedIn}">Log in</h:outputLink>
+ </h:form>
+ </div>
+ <br style="clear:both"/>
+ <h:form>
+ <div>
+ <a href="#">SeamSpace</a><h:outputText styleClass="divider" value=" | "/>
+ <a href="#">People</a><h:outputText styleClass="divider" value=" | "/>
+ <a href="#">Music</a><h:outputText styleClass="divider" value=" | "/>
+ <a href="#">Blogs</a>
+ </div>
+ <div id="search">
+ <h:inputText type="text" styleClass="searchField"/>
+ <h:commandButton value="Search SeamSpace" onclick="javascript:alert('This feature coming soon!');return false" styleClass="searchButton"/>
+ </div>
+ </h:form>
+ </div>
+ </div>
+
+ <div id="menubar">
+ <h:link outcome="/home.xhtml" value="Home"/><h:outputText styleClass="divider" value=" | "/>
+ <h:link value="Browse" onclick="javascript:alert('This feature coming soon!');return false"/><h:outputText styleClass="divider" value=" | "/>
+ <h:link value="Blog" onclick="javascript:alert('This feature coming soon!');return false"/><h:outputText styleClass="divider" value=" | "/>
+ <h:link value="Music" onclick="javascript:alert('This feature coming soon!');return false"/>
+ </div>
+
+ <div id="content">
+ <ui:insert name="content"/>
+ </div>
+
+ </body>
+</html>
+
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/test.xhtml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/test.xhtml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/test.xhtml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,13 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:ui="http://java.sun.com/jsf/facelets">
+ <h:head>
+ <title>Java EE 6 Starter Application</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ </h:head>
+ <h:body>
+ <h:outputLabel value="Hello World!"/>
+ </h:body>
+</html>
\ No newline at end of file
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/userdetail.xhtml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/userdetail.xhtml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/userdetail.xhtml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,82 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core">
+
+ <ui:composition template="template.xhtml">
+
+ <ui:define name="head">
+ <link href="style/security.css" rel="stylesheet" type="text/css"/>
+ </ui:define>
+
+ <ui:define name="content">
+
+ <div id="contentMain">
+
+ <h2>User Details</h2>
+
+ <h:messages globalOnly="true"/>
+
+ <h:form id="user">
+
+ <div class="formRow">
+ <h:outputLabel for="firstname" value="First name" styleClass="formLabel"/>
+ <h:inputText id="firstname" value="#{userAction.firstname}"/>
+ <div class="validationError"><h:message for="firstname"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="lastname" value="Last name" styleClass="formLabel"/>
+ <h:inputText id="lastname" value="#{userAction.lastname}"/>
+ <div class="validationError"><h:message for="lastname"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="username" value="Username" styleClass="formLabel"/>
+ <h:inputText id="username" value="#{userAction.username}"/>
+ <div class="validationError"><h:message for="username"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="password" value="Password" styleClass="formLabel"/>
+ <h:inputSecret id="password" value="#{userAction.password}"/>
+ <div class="validationError"><h:message for="password"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="confirm" value="Confirm password" styleClass="formLabel"/>
+ <h:inputSecret id="confirm" value="#{userAction.confirm}"/>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="roles" value="Member of" styleClass="formLabel"/>
+ <div class="selectMany">
+ <h:selectManyCheckbox id="roles" value="#{userAction.roles}" layout="pageDirection" styleClass="roles">
+ <f:selectItems value="#{identityManager.grantableRoles}" var="role" label="#{role}"/>
+ </h:selectManyCheckbox>
+ </div>
+ <div class="validationError"><h:message for="roles"/></div>
+ </div>
+
+ <div class="formRow">
+ <h:outputLabel for="enabled" value="Account enabled" styleClass="formLabel"/>
+ <h:selectBooleanCheckbox id="enabled" value="#{userAction.enabled}"/>
+ </div>
+
+ <div class="formButtons">
+ <h:commandButton id="save" value="Save" action="#{userAction.save}" styleClass="formButton"/>
+ <h:button id="cancel" outcome="/usermanager.xhtml" action="#{conversation.end}" value="Cancel" styleClass="formButton"/>
+ </div>
+
+ <br class="clear"/>
+
+ </h:form>
+
+ </div>
+
+ </ui:define>
+
+ </ui:composition>
+</html>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/usermanager.page.xml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/usermanager.page.xml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/usermanager.page.xml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,14 @@
+<page xmlns="http://jboss.com/products/seam/pages"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://jboss.com/products/seam/pages http://jboss.com/products/seam/pages-2.2.xsd"
+ action="#{userSearch.loadUsers}">
+ <restrict>#{s:hasPermission('seam.user', 'read')}</restrict>
+
+ <navigation from-action="#{userAction.createUser}">
+ <redirect view-id="/userdetail.xhtml"/>
+ </navigation>
+
+ <navigation from-action="#{userAction.editUser(userSearch.selectedUser)}">
+ <redirect view-id="/userdetail.xhtml"/>
+ </navigation>
+</page>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/usermanager.xhtml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/usermanager.xhtml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/usermanager.xhtml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,76 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html"
+ xmlns:f="http://java.sun.com/jsf/core">
+
+ <ui:composition template="template.xhtml">
+
+ <ui:define name="head">
+ <link href="style/security.css" rel="stylesheet" type="text/css"/>
+ </ui:define>
+
+ <ui:define name="content">
+
+ <f:event type="preRenderView" listener="#{userSearch.loadUsers}"/>
+
+ <script type="text/javascript">
+ function confirmDelete() {
+ return confirm("Are you sure you wish to delete this user? This action cannot be undone.");
+ }
+ </script>
+
+ <div id="contentMain">
+
+ <h2>User Manager</h2>
+
+ <h:form>
+ <h:commandButton id="newUser" action="#{userAction.createUser}" styleClass="newuser" rendered="#{identity.hasPermission('seam.account', 'create')}"/>
+ </h:form>
+
+ <h:dataTable
+ id="threads"
+ value="#{userSearch.users}"
+ var="user"
+ styleClass="security"
+ cellspacing="0"
+ headerClass="header"
+ rowClasses="odd,even"
+ columnClasses=",,enabled,action">
+ <h:column width="auto">
+ <f:facet name="header">
+ User name
+ </f:facet>
+ #{user}
+ </h:column>
+ <h:column width="auto">
+ <f:facet name="header">
+ Member Of
+ </f:facet>
+ #{userSearch.getUserRoles(user)}
+ </h:column>
+ <h:column id="enabled" width="auto">
+ <f:facet name="header">
+ Enabled
+ </f:facet>
+ <div class="#{identityManager.isUserEnabled(user) ? 'checkmark' : 'cross'}"/>
+ </h:column>
+ <h:column id="action" width="auto">
+ <f:facet name="header">
+ Action
+ </f:facet>
+
+ <ui:fragment rendered="#{identity.hasPermission('seam.user', 'update')}">
+ <h:link id="edit" value="Edit" action="#{userAction.editUser(userSearch.selectedUser)}"/><span> | </span>
+ </ui:fragment>
+ <h:link id="delete" value="Delete" action="#{identityManager.deleteUser(userSearch.selectedUser)}"
+ rendered="#{identity.hasPermission('seam.user', 'delete')}"
+ onclick="return confirmDelete()"/>
+ </h:column>
+ </h:dataTable>
+ </div>
+
+ </ui:define>
+
+ </ui:composition>
+</html>
Added: modules/security/trunk/examples/idmconsole/src/main/webapp/welcome.xhtml
===================================================================
--- modules/security/trunk/examples/idmconsole/src/main/webapp/welcome.xhtml (rev 0)
+++ modules/security/trunk/examples/idmconsole/src/main/webapp/welcome.xhtml 2010-05-23 08:36:33 UTC (rev 12772)
@@ -0,0 +1,17 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml"
+ xmlns:ui="http://java.sun.com/jsf/facelets"
+ xmlns:h="http://java.sun.com/jsf/html">
+
+<head>
+ <title>SeamSpace</title>
+</head>
+
+<body>
+ <h1>Login successful!</h1>
+
+ <div class="errors"><h:messages globalOnly="true"/></div>
+
+</body>
+</html>
+
14 years
Seam SVN: r12771 - in modules/drools/trunk/impl/src: main/java/org/jboss/seam/drools/config and 1 other directories.
by seam-commits@lists.jboss.org
Author: tsurdilovic
Date: 2010-05-21 15:38:14 -0400 (Fri, 21 May 2010)
New Revision: 12771
Modified:
modules/drools/trunk/impl/src/main/java/org/jboss/seam/drools/KnowledgeSessionProducer.java
modules/drools/trunk/impl/src/main/java/org/jboss/seam/drools/StatefulKnowledgeSessionWrapper.java
modules/drools/trunk/impl/src/main/java/org/jboss/seam/drools/config/RuleResources.java
modules/drools/trunk/impl/src/test/resources/org/jboss/seam/drools/test/cep/CEPTest-beans.xml
Log:
added stateful knowledge session wrapper
Modified: modules/drools/trunk/impl/src/main/java/org/jboss/seam/drools/KnowledgeSessionProducer.java
===================================================================
--- modules/drools/trunk/impl/src/main/java/org/jboss/seam/drools/KnowledgeSessionProducer.java 2010-05-21 02:44:30 UTC (rev 12770)
+++ modules/drools/trunk/impl/src/main/java/org/jboss/seam/drools/KnowledgeSessionProducer.java 2010-05-21 19:38:14 UTC (rev 12771)
@@ -79,7 +79,7 @@
addEventListeners(ksession);
addWorkItemHandlers(ksession);
addFactProviders(ksession);
-
+
return ksession;
}
Modified: modules/drools/trunk/impl/src/main/java/org/jboss/seam/drools/StatefulKnowledgeSessionWrapper.java
===================================================================
--- modules/drools/trunk/impl/src/main/java/org/jboss/seam/drools/StatefulKnowledgeSessionWrapper.java 2010-05-21 02:44:30 UTC (rev 12770)
+++ modules/drools/trunk/impl/src/main/java/org/jboss/seam/drools/StatefulKnowledgeSessionWrapper.java 2010-05-21 19:38:14 UTC (rev 12771)
@@ -21,6 +21,8 @@
*/
package org.jboss.seam.drools;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
import java.io.Externalizable;
import java.io.IOException;
import java.io.ObjectInput;
@@ -33,6 +35,10 @@
import org.drools.event.process.ProcessEventListener;
import org.drools.event.rule.AgendaEventListener;
import org.drools.event.rule.WorkingMemoryEventListener;
+import org.drools.marshalling.Marshaller;
+import org.drools.marshalling.MarshallerFactory;
+import org.drools.marshalling.ObjectMarshallingStrategy;
+import org.drools.marshalling.ObjectMarshallingStrategyAcceptor;
import org.drools.runtime.Environment;
import org.drools.runtime.ExecutionResults;
import org.drools.runtime.ExitPoint;
@@ -52,7 +58,7 @@
*
* @author Tihomir Surdilovic
*/
-public class StatefulKnowledgeSessionWrapper implements StatefulKnowledgeSession, Externalizable
+public class StatefulKnowledgeSessionWrapper implements StatefulKnowledgeSession, Externalizable
{
private StatefulKnowledgeSession ksession;
@@ -88,14 +94,27 @@
public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException
{
- // TODO Auto-generated method stub
+ byte[] bytes = new byte[in.available()];
+ in.read(bytes);
+ ByteArrayInputStream bais = new ByteArrayInputStream( bytes );
+ KnowledgeBase kbase = (KnowledgeBase) in.readObject();
+ Marshaller marshaller = createSerializableMarshaller( kbase );
+ ksession = marshaller.unmarshall(bais);
+ bais.close();
}
public void writeExternal(ObjectOutput out) throws IOException
{
- // TODO Auto-generated method stub
-
+ Marshaller marshaller = createSerializableMarshaller( ksession.getKnowledgeBase() );
+
+ ByteArrayOutputStream bos = new ByteArrayOutputStream();
+ marshaller.marshall( bos, ksession );
+ final byte[] b = bos.toByteArray();
+ bos.close();
+
+ out.write(b);
+ out.writeObject(ksession.getKnowledgeBase());
}
public FactHandle getFactHandle(Object object)
@@ -226,7 +245,7 @@
public <T extends SessionClock> T getSessionClock()
{
// http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6302954
- return ksession.<T>getSessionClock();
+ return ksession.<T> getSessionClock();
}
public void registerExitPoint(String name, ExitPoint exitPoint)
@@ -325,4 +344,12 @@
ksession.halt();
}
+ private Marshaller createSerializableMarshaller(KnowledgeBase knowledgeBase)
+ {
+ ObjectMarshallingStrategyAcceptor acceptor = MarshallerFactory.newClassFilterAcceptor(new String[] { "*.*" });
+ ObjectMarshallingStrategy strategy = MarshallerFactory.newSerializeMarshallingStrategy(acceptor);
+ Marshaller marshaller = MarshallerFactory.newMarshaller(knowledgeBase, new ObjectMarshallingStrategy[] { strategy });
+ return marshaller;
+ }
+
}
Modified: modules/drools/trunk/impl/src/main/java/org/jboss/seam/drools/config/RuleResources.java
===================================================================
--- modules/drools/trunk/impl/src/main/java/org/jboss/seam/drools/config/RuleResources.java 2010-05-21 02:44:30 UTC (rev 12770)
+++ modules/drools/trunk/impl/src/main/java/org/jboss/seam/drools/config/RuleResources.java 2010-05-21 19:38:14 UTC (rev 12771)
@@ -23,8 +23,6 @@
import java.util.regex.Pattern;
-import org.drools.io.Resource;
-
/**
*
* @author Tihomir Surdilovic
Modified: modules/drools/trunk/impl/src/test/resources/org/jboss/seam/drools/test/cep/CEPTest-beans.xml
===================================================================
--- modules/drools/trunk/impl/src/test/resources/org/jboss/seam/drools/test/cep/CEPTest-beans.xml 2010-05-21 02:44:30 UTC (rev 12770)
+++ modules/drools/trunk/impl/src/test/resources/org/jboss/seam/drools/test/cep/CEPTest-beans.xml 2010-05-21 19:38:14 UTC (rev 12771)
@@ -30,5 +30,4 @@
<s:value>classpath;ceptest.drl;DRL</s:value>
</d:resources>
</d:CEPPseudoClockRuleResources>
-
</beans>
14 years, 1 month
Seam SVN: r12770 - in modules/jms/trunk: impl/src/main/java/org/jboss/seam/jms/impl/inject and 1 other directories.
by seam-commits@lists.jboss.org
Author: jganoff
Date: 2010-05-20 22:44:30 -0400 (Thu, 20 May 2010)
New Revision: 12770
Modified:
modules/jms/trunk/api/src/main/java/org/jboss/seam/jms/annotations/JmsSession.java
modules/jms/trunk/impl/src/main/java/org/jboss/seam/jms/impl/inject/SessionProducer.java
modules/jms/trunk/impl/src/test/java/org/jboss/seam/jms/test/inject/InjectConnectionTest.java
Log:
JmsSession is no longer a qualifier
Modified: modules/jms/trunk/api/src/main/java/org/jboss/seam/jms/annotations/JmsSession.java
===================================================================
--- modules/jms/trunk/api/src/main/java/org/jboss/seam/jms/annotations/JmsSession.java 2010-05-21 01:50:38 UTC (rev 12769)
+++ modules/jms/trunk/api/src/main/java/org/jboss/seam/jms/annotations/JmsSession.java 2010-05-21 02:44:30 UTC (rev 12770)
@@ -23,7 +23,6 @@
import static java.lang.annotation.ElementType.FIELD;
import static java.lang.annotation.ElementType.METHOD;
-import static java.lang.annotation.ElementType.TYPE;
import static java.lang.annotation.ElementType.PARAMETER;
import static java.lang.annotation.RetentionPolicy.RUNTIME;
@@ -31,23 +30,22 @@
import java.lang.annotation.Retention;
import java.lang.annotation.Target;
-import javax.enterprise.util.Nonbinding;
-import javax.inject.Qualifier;
-
/**
- * Seam 3 JMS Qualifier for {@link javax.jms.Session} types
+ * Specifies configuration for injected {@link javax.jms.Session}
*
* @author Jordan Ganoff
*/
-@Qualifier
@Documented
-@Target( { FIELD, METHOD, TYPE, PARAMETER })
+@Target( { FIELD, METHOD, PARAMETER })
@Retention(RUNTIME)
public @interface JmsSession
{
- @Nonbinding
- public abstract boolean transacted() default false;
-
- @Nonbinding
- public abstract int acknowledgementType() default javax.jms.Session.AUTO_ACKNOWLEDGE;
+ /**
+ * @see javax.jms.Session#getTransacted()
+ */
+ boolean transacted() default false;
+ /**
+ * @see javax.jms.Session#getAcknowledgeMode()
+ */
+ int acknowledgementMode() default javax.jms.Session.AUTO_ACKNOWLEDGE;
}
Modified: modules/jms/trunk/impl/src/main/java/org/jboss/seam/jms/impl/inject/SessionProducer.java
===================================================================
--- modules/jms/trunk/impl/src/main/java/org/jboss/seam/jms/impl/inject/SessionProducer.java 2010-05-21 01:50:38 UTC (rev 12769)
+++ modules/jms/trunk/impl/src/main/java/org/jboss/seam/jms/impl/inject/SessionProducer.java 2010-05-21 02:44:30 UTC (rev 12770)
@@ -21,8 +21,6 @@
*/
package org.jboss.seam.jms.impl.inject;
-import static org.jboss.seam.jms.impl.inject.InjectionUtil.getExpectedQualifier;
-
import javax.enterprise.context.RequestScoped;
import javax.enterprise.inject.Disposes;
import javax.enterprise.inject.Produces;
@@ -37,17 +35,17 @@
class SessionProducer
{
@Produces
- public Session getGenericSession(InjectionPoint ip, Connection c) throws JMSException
- {
- return c.createSession(false, Session.AUTO_ACKNOWLEDGE);
- }
-
- @Produces
- @JmsSession
public Session getSession(InjectionPoint ip, Connection c) throws JMSException
{
- JmsSession s = getExpectedQualifier(JmsSession.class, ip.getQualifiers());
- return c.createSession(s.transacted(), s.acknowledgementType());
+ if (ip != null && ip.getAnnotated().isAnnotationPresent(JmsSession.class))
+ {
+ JmsSession s = ip.getAnnotated().getAnnotation(JmsSession.class);
+ return c.createSession(s.transacted(), s.acknowledgementMode());
+ }
+ else
+ {
+ return c.createSession(false, Session.AUTO_ACKNOWLEDGE);
+ }
}
public void closeSession(@Disposes Session s) throws JMSException
Modified: modules/jms/trunk/impl/src/test/java/org/jboss/seam/jms/test/inject/InjectConnectionTest.java
===================================================================
--- modules/jms/trunk/impl/src/test/java/org/jboss/seam/jms/test/inject/InjectConnectionTest.java 2010-05-21 01:50:38 UTC (rev 12769)
+++ modules/jms/trunk/impl/src/test/java/org/jboss/seam/jms/test/inject/InjectConnectionTest.java 2010-05-21 02:44:30 UTC (rev 12770)
@@ -24,10 +24,12 @@
import javax.enterprise.inject.Instance;
import javax.inject.Inject;
import javax.jms.Connection;
+import javax.jms.JMSException;
import javax.jms.Session;
import org.jboss.arquillian.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
+import org.jboss.seam.jms.annotations.JmsSession;
import org.jboss.seam.jms.test.Util;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.Assert;
@@ -52,6 +54,10 @@
@Inject
private Instance<Session> s;
+
+ @Inject
+ @JmsSession(transacted=false, acknowledgementMode=Session.CLIENT_ACKNOWLEDGE)
+ private Instance<Session> configuredSession;
@Test
public void injectConnection()
@@ -70,5 +76,13 @@
{
Assert.assertEquals(c.get(), c2.get());
}
-
+
+ @Test
+ public void configuredSession() throws JMSException
+ {
+ Session s = configuredSession.get();
+ Assert.assertNotNull(s);
+ Assert.assertFalse(s.getTransacted());
+ Assert.assertEquals(Session.CLIENT_ACKNOWLEDGE, s.getAcknowledgeMode());
+ }
}
14 years, 1 month
Seam SVN: r12769 - modules/jms/trunk/docs/reference/src/main/docbook/en-US.
by seam-commits@lists.jboss.org
Author: jganoff
Date: 2010-05-20 21:50:38 -0400 (Thu, 20 May 2010)
New Revision: 12769
Modified:
modules/jms/trunk/docs/reference/src/main/docbook/en-US/routing.xml
Log:
Updated routing documentation to explain how to use the new EventRouting API.
Modified: modules/jms/trunk/docs/reference/src/main/docbook/en-US/routing.xml
===================================================================
--- modules/jms/trunk/docs/reference/src/main/docbook/en-US/routing.xml 2010-05-21 00:35:18 UTC (rev 12768)
+++ modules/jms/trunk/docs/reference/src/main/docbook/en-US/routing.xml 2010-05-21 01:50:38 UTC (rev 12769)
@@ -30,117 +30,96 @@
of events to JMS destinations and translating received messages from JMS destinations back into CDI events. The
sections of this chapter will describe how to achieve both.
</para>
-
- <section id="routing.egress">
- <title>Routing CDI Events to JMS</title>
-
+
+ <section id="routing.bridge">
+ <title>Event Routing</title>
+
<para>
- The act of simply sending a message to a JMS destination involves a few players: Connection, Session,
- Destination, and the message itself. Surely you can inject all required resources and perform the forwarding
- yourself but that takes away from the whole reason you're using a tool in the first place! Let's let a little
- configuration do the work for us.
+ Simply sending or receiving a message over JMS involves a few players: Connection, Session, Destination, and
+ the message itself. Surely you can inject all required resources and perform the routing yourself but that
+ takes away from the whole reason you're using a tool in the first place! Let's let a little configuration do
+ the work for us.
</para>
+
+ <section id="routing.bridge.route">
+ <title>Routes</title>
+
+ <para>
+ Routing CDI events to and from JMS can be configured by defining a <literal>Route</literal>. As you would
+ normally create an observer method for an event you can define a route to control which events get
+ forwarded to what destination. Or conversely, what message types sent to which destinations generate CDI
+ events.
- <section id="routing.egress.config">
- <title>Configuration</title>
+ <programlisting role="Java">public interface Route
+ {
+ public <D extends Destination> Route connectTo(Class<D> d, D destination);
+ public Route addQualifiers(Annotation... qualifiers);
+ }</programlisting>
+ </para>
+
<para>
- Introducing the <literal>JmsForwarding</literal> interface:
- <programlisting role="Java">@Named
-@ApplicationScoped
-public interface JmsForwarding
+ Routes allows for simple mapping of event types, complete with qualifiers, to a set of destinations. They
+ can be configured by adding qualifiers and providing destinations they should interact with and are created
+ from an <literal>EventBridge</literal>. Here's a simple route that forwards CDI events on to a queue:
+
+ <programlisting role="Java">@Inject EventBridge bridge;
+@EventRouting public Route registerMyRoute()
{
- public Set<? extends Destination> getDestinations();
- public Type getEventType();
- public Set<Annotation> getQualifiers();
+ return bridge.createRoute(RouteType.EGRESS, MyEvent.class).connectTo(Queue.class, myQueue);
}</programlisting>
</para>
+ </section>
+
+ <section id="routing.bridge.eventrouting">
+ <title>@EventRouting</title>
<para>
- The <literal>JmsForwarding</literal> interface allows for simple mapping of event types, complete with
- qualifiers, to a set of destinations. Every bean found implementing <literal>JmsForwarding</literal> will be
- used to create a bridge from CDI to the JMS world, forwarding all events that match the event type and
- qualifiers returned.
+ Routes are registered by returning them from a bean method annotated with <literal>@EventRouting</literal>:
+
+ <programlisting role="Java">@Inject EventBridge bridge;
+@EventRouting public Route myConfig()
+{
+ return bridge.createRoute(RouteType.INGRESS, MyEvent.class).connectTo(Queue.class, myTopic);
+}</programlisting>
</para>
+ </section>
+ </section>
- <caution>
- <para>
- <literal>JmsForwarding.getQualifiers()</literal> should only return annotations that are in fact
- qualifiers. If not, Seam JMS will detect the problem and treat it as a deployment problem.
- </para>
- </caution>
+ <section id="routing.egress">
+ <title>Routing CDI Events to JMS</title>
- <tip>
- <para>
- Since your <literal>JmsForwarding</literal> objects are CDI Beans you can use dependency injection to
- obtain the destinations you wish to forward to.
- </para>
- </tip>
- </section>
+ <para>
+ Forwarding CDI events to JMS is configured by creating an egress route. Let's say you wanted to forward all
+ <literal>MyEvent</literal> events with <literal>@Bridged</literal> qualifier to the queue
+ <literal>jms/EventQueue</literal>. Simple, register a route:
+
+ <programlisting role="Java">@Inject EventBridge bridge;
+@Inject @JmsDestination(jndiName="jms/EventQueue") Queue eventQueue;
+AnnotationLiteral<Bridged> BRIDGED = new AnnotationLiteral<Bridged>() {};
+@EventRouting public Route registerMyEventRoute()
+{
+ return bridge.createRoute(RouteType.EGRESS, MyEvent.class).addQualifiers(BRIDGED).connectTo(Queue.class, eventQueue);
+}</programlisting>
+ </para>
<section id="routing.egress.usage">
<title>Usage</title>
<para>
- With your configuration bean defined you can simply fire events that match a configuration's event type and
+ With your routing defined you can simply fire events that match the route's payload type and
qualifiers and these events will be forwarded over JMS as object messages.
- <programlisting role="Java">@Inject @Bridged Event<MyObject> event;
+ <programlisting role="Java">@Inject @Bridged Event<MyEvent> event;
...
-event.fire(myObject);</programlisting>
+event.fire(myEvent);</programlisting>
</para>
</section>
-
- <section id="routing.egress.sample">
- <title>Egress Routing Sample</title>
-
- <para>
- Here's a sample configuration that will match any <literal>MyObject</literal> event fired with the
- qualifier <literal>@Bridged</literal>:
-
- <programlisting role="Java">@Named
-@ApplicationScoped
-public class MyForwarding implements JmsForwarding
-{
- @Inject @MyTopic private Topic t;
-
- public Set<? extends Destination> getDestinations()
- {
- return Collections.singleton(t);
- }
-
- public Type getEventType()
- {
- return MyObject.class;
- }
-
- public Set<Annotation> getQualifiers()
- {
- return Collections.<Annotation> singleton(new AnnotationLiteral<Bridged>(){});
- }
-}</programlisting>
- </para>
-
- <para>
- And here's an event that will be sent to JMS due to the configuration above:
- <programlisting role="Java">@Inject @Bridged Event<MyObject> event;
-...
-event.fire(myObject);</programlisting>
- </para>
-
- <para>
- TODO Reference to example showing this off
- </para>
- </section>
</section>
<section id="routing.ingress">
<title>CDI Events from JMS Messages</title>
<para>
-
- </para>
-
- <para>
TODO Add documentation when implemented
</para>
</section>
14 years, 1 month
Seam SVN: r12768 - modules/jms/trunk.
by seam-commits@lists.jboss.org
Author: jganoff
Date: 2010-05-20 20:35:18 -0400 (Thu, 20 May 2010)
New Revision: 12768
Modified:
modules/jms/trunk/distribution.txt
Log:
Small update to distribution command
Modified: modules/jms/trunk/distribution.txt
===================================================================
--- modules/jms/trunk/distribution.txt 2010-05-20 23:59:41 UTC (rev 12767)
+++ modules/jms/trunk/distribution.txt 2010-05-21 00:35:18 UTC (rev 12768)
@@ -1,5 +1,5 @@
To create the Seam JMS distribution, run the following Maven command:
-mvn clean package -Drelease
+mvn clean package -Pdocs,dist
Release binaries will be produced in: dist/target
\ No newline at end of file
14 years, 1 month
Seam SVN: r12767 - modules/jms/trunk/docs/reference/src/main/docbook/en-US.
by seam-commits@lists.jboss.org
Author: jganoff
Date: 2010-05-20 19:59:41 -0400 (Thu, 20 May 2010)
New Revision: 12767
Modified:
modules/jms/trunk/docs/reference/src/main/docbook/en-US/installation.xml
Log:
Fixed project group id in Installation documentation.
Modified: modules/jms/trunk/docs/reference/src/main/docbook/en-US/installation.xml
===================================================================
--- modules/jms/trunk/docs/reference/src/main/docbook/en-US/installation.xml 2010-05-20 23:58:16 UTC (rev 12766)
+++ modules/jms/trunk/docs/reference/src/main/docbook/en-US/installation.xml 2010-05-20 23:59:41 UTC (rev 12767)
@@ -42,7 +42,7 @@
</para>
<programlisting role="XML"><![CDATA[<dependency>
- <groupId>org.jboss.seam</groupId>
+ <groupId>org.jboss.seam.jms</groupId>
<artifactId>seam-jms</artifactId>
<version>${seam.jms.version}</version>
</dependency>]]></programlisting>
14 years, 1 month