import org.wamblee.inject.InjectorBuilder;
import org.wamblee.photos.model.Album;
import org.wamblee.security.authentication.UserAdministration;
+import org.wamblee.security.authorization.AuthorizationService;
/**
* @author Erik Brakkee
@Startup
public class Initializer {
- private static final Logger LOGGER = Logger.getLogger(Initializer.class
- .getName());
+ private static final Logger LOGGER = Logger.getLogger(Initializer.class
+ .getName());
- /**
- * We need this helper to do initialization of the beans from within the
- * post construct method. Injecting these objects into the initializer class
- * will lead to initialization outside of a transactional context and this
- * is does not work because and entity manager is required.
- *
- * @author Erik Brakkee
- *
- */
- public static class Helper {
- @Inject
- private UserAdministration userAdmin;
+ /**
+ * We need this helper to do initialization of the beans from within the
+ * post construct method. Injecting these objects into the initializer class
+ * will lead to initialization outside of a transactional context and this
+ * is does not work because and entity manager is required.
+ *
+ * @author Erik Brakkee
+ *
+ */
+ public static class Helper {
+ @Inject
+ private UserAdministration userAdmin;
- @Inject
- @AllPhotos
- private Album album;
+ @Inject
+ private AuthorizationService authorizationService;
- public void init() {
- userAdmin.getUserCount();
- album.size();
- }
- }
+ @Inject
+ @AllPhotos
+ private Album album;
- @PostConstruct
- public void scheduleInit() {
- LOGGER.info("Photo application initializing");
- // timerService.createTimer(1000, 1000, null);
- LOGGER.info("Initializing photo application");
- Helper helper = new Helper();
- InjectorBuilder.getInjector().inject(helper);
- helper.init();
- LOGGER.info("Initialized photo application");
- }
+ public void init() {
+ userAdmin.getUserCount();
+ album.size();
+ authorizationService.getRules();
+ }
+ }
+
+ @PostConstruct
+ public void scheduleInit() {
+ LOGGER.info("Photo application initializing");
+ // timerService.createTimer(1000, 1000, null);
+ LOGGER.info("Initializing photo application");
+ Helper helper = new Helper();
+ InjectorBuilder.getInjector().inject(helper);
+ helper.init();
+ LOGGER.info("Initialized photo application");
+ }
}
/**
* @author Erik Brakkee
- *
*/
public class Producer {
- private static final Logger LOGGER = Logger.getLogger(Producer.class
- .getName());
+ private static final Logger LOGGER = Logger.getLogger(Producer.class.getName());
private static final String APP_CONFIG_RESOURCE = "META-INF/org.wamblee.photos.properties";
@PhotoCache
private Cache<String, ArrayList<PhotoEntry>> photoCache;
- private Configuration getCOnfiguration() {
+ private Configuration getConfiguration() {
LOGGER.info("Initializing configuration");
Configuration config;
try {
- config = new Configuration(new ClassPathResource(
- APP_CONFIG_RESOURCE).getInputStream());
- } catch (IOException e) {
+ config = new Configuration(new ClassPathResource(APP_CONFIG_RESOURCE).getInputStream());
+ }
+ catch (IOException e) {
throw new RuntimeException(
- "Could not read application configuration property classpath resource " +
- APP_CONFIG_RESOURCE, e);
+ "Could not read application configuration property classpath resource " + APP_CONFIG_RESOURCE, e);
}
return config;
}
@ApplicationScoped
public UserAdministration getUserAdmin() {
LOGGER.info("Initializing user administration");
- NameValidator passwordvalidator = new RegexpNameValidator(".{5,}",
- "INVALID_PASSWORD", "Password must have at least 5 characters");
+ NameValidator passwordvalidator =
+ new RegexpNameValidator(".{5,}", "INVALID_PASSWORD", "Password must have at least 5 characters");
MessageDigester passwordEncoder = new Md5HexMessageDigester();
- UserSet userset = new JpaUserSet(userCache, passwordvalidator,
- passwordEncoder, entityManager);
+ UserSet userset = new JpaUserSet(userCache, passwordvalidator, passwordEncoder, entityManager);
GroupSet groupset = new JpaGroupSet(entityManager);
- NameValidator uservalidator = new RegexpNameValidator(
- "[a-zA-Z]+[a-zA-Z0-9]*", "INVALID_USERNAME",
- "User name must consist of alphanumeric characters only");
- NameValidator groupvalidator = new RegexpNameValidator(
- "[a-zA-Z]+[a-zA-Z0-9]*", "INVALID_GROUPNAME",
- "Group name must consist of alphanumeric characters only");
-
- UserAdministration admin = new UserAdministrationImpl(userset,
- groupset, uservalidator, groupvalidator);
- UserAdminInitializer initializer = new UserAdminInitializer(admin,
- new String[] { "erik", "admin" }, new String[] { "users",
- "administrators" }, new String[] { "abc123", "abc123" });
+ NameValidator uservalidator = new RegexpNameValidator("[a-zA-Z]+[a-zA-Z0-9]*", "INVALID_USERNAME",
+ "User name must consist of alphanumeric characters only");
+ NameValidator groupvalidator = new RegexpNameValidator("[a-zA-Z]+[a-zA-Z0-9]*", "INVALID_GROUPNAME",
+ "Group name must consist of alphanumeric characters only");
+
+ UserAdministration admin = new UserAdministrationImpl(userset, groupset, uservalidator, groupvalidator);
+ UserAdminInitializer initializer =
+ new UserAdminInitializer(admin, new String[]{"erik", "admin"}, new String[]{"users", "administrators"},
+ new String[]{"abc123", "abc123"});
return admin;
}
@UserCache
public Cache<String, User> getUserCache() {
try {
- InputResource cacheConfig = new ClassPathResource(
- "META-INF/ehcache.xml");
+ InputResource cacheConfig = new ClassPathResource("META-INF/ehcache.xml");
return new EhCache(cacheConfig, "users");
- } catch (IOException e) {
+ }
+ catch (IOException e) {
throw new RuntimeException("Could not create user cache", e);
}
}
@PhotoCache
public Cache<String, ArrayList<PhotoEntry>> getPhotoCache() {
try {
- InputResource cacheConfig = new ClassPathResource(
- "META-INF/ehcache.xml");
- return new EhCache<String, ArrayList<PhotoEntry>>(cacheConfig,
- "photos");
- } catch (IOException e) {
+ InputResource cacheConfig = new ClassPathResource("META-INF/ehcache.xml");
+ return new EhCache<String, ArrayList<PhotoEntry>>(cacheConfig, "photos");
+ }
+ catch (IOException e) {
throw new RuntimeException("Could not create photo cache", e);
}
}
@Produces
@ApplicationScoped
public AuthorizationService getAuthorizationService() {
+ LOGGER.info("Initializing authorization service");
OperationRegistry registry = new DefaultOperationRegistry(
- new Operation[] { new AllOperation(), new CreateOperation(),
- new DeleteOperation(), new ReadOperation(),
- new WriteOperation() });
+ new Operation[]{new AllOperation(), new CreateOperation(), new DeleteOperation(), new ReadOperation(),
+ new WriteOperation()});
UserAccessor userAccessor = new UserAccessor() {
@Override
return principal.getName();
}
};
- AuthorizationService service = new JpaAuthorizationService("DEFAULT",
- entityManager, userAccessor, userAdmin, 10000);
+ AuthorizationService service =
+ new JpaAuthorizationService("DEFAULT", entityManager, userAccessor, userAdmin, 10000);
AnyUserCondition anyUserCondition = new AnyUserCondition();
- GroupUserCondition adminUserCondition = new GroupUserCondition(
- "administrators");
+ GroupUserCondition adminUserCondition = new GroupUserCondition("administrators");
- PhotoAuthorizationRule photoEntryRule = new PhotoAuthorizationRule();
+ PhotoAuthorizationRule photoEntryRule = new PhotoAuthorizationRule(anyUserCondition);
// Pages that allow access by any authenticated user
- PageAuthorizationRule anyUserPageRule = new PageAuthorizationRule(
- AuthorizationResult.GRANTED, anyUserCondition, HomePage.class);
+ PageAuthorizationRule anyUserPageRule =
+ new PageAuthorizationRule(AuthorizationResult.GRANTED, anyUserCondition, HomePage.class);
- PageAuthorizationRule adminPageRule = new PageAuthorizationRule(
- AuthorizationResult.GRANTED, adminUserCondition);
+ PageAuthorizationRule adminPageRule =
+ new PageAuthorizationRule(AuthorizationResult.GRANTED, adminUserCondition);
- AuthorizationInitializer initializer = new AuthorizationInitializer(
- service, new AbstractAuthorizationRule[] { photoEntryRule,
- anyUserPageRule, adminPageRule });
+ AuthorizationInitializer initializer = new AuthorizationInitializer(service,
+ new AbstractAuthorizationRule[]{photoEntryRule, anyUserPageRule, adminPageRule});
return service;
}
LOGGER.info("Initializing photo album");
try {
- File dir = new File(getCOnfiguration().getPath());
+ File dir = new File(getConfiguration().getPath());
Album fileSystemAlbum = new FileSystemAlbum(dir, "/", photoCache);
Album concurrentAlbum = new ConcurrentAlbum(fileSystemAlbum);
return concurrentAlbum;
- } catch (IOException e) {
+ }
+ catch (IOException e) {
throw new RuntimeException("Could not initialize photo album", e);
}
}
throw new RuntimeException("No authenticated user");
}
String username = userPrincipal.getName();
- List<User> users = entityManager
- .createNamedQuery(User.QUERY_FIND_BY_NAME)
- .setParameter(User.NAME_PARAM, username).getResultList();
+ List<User> users =
+ entityManager.createNamedQuery(User.QUERY_FIND_BY_NAME).setParameter(User.NAME_PARAM, username)
+ .getResultList();
if (users.size() > 1) {
- throw new RuntimeException("More than one user found for '" +
- username + "'");
+ throw new RuntimeException("More than one user found for '" + username + "'");
}
if (users.isEmpty()) {
throw new RuntimeException("No authenticated user");
}
return users.get(0);
}
-
}
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-
package org.wamblee.photos.security;
import javax.persistence.DiscriminatorValue;
/**
* Type-safe construction of page authorization rule.
- *
- * @param aResult
- * Result.
- * @param aUserCondition
- * User condition.
- * @param aPageList
- * A list of page names.
+ *
+ * @param aResult Result.
+ * @param aUserCondition User condition.
+ * @param aPageList A list of page names.
*/
- public PageAuthorizationRule(AuthorizationResult aResult,
- UserCondition aUserCondition, Class<? extends BasePage>... aPageList) {
- super(aResult, aUserCondition, new RegexpPathCondition(
- getPageRegex(aPageList)), BasePage.class,
- new IsaOperationCondition(AllOperation.class));
+ public PageAuthorizationRule(AuthorizationResult aResult, UserCondition aUserCondition,
+ Class<? extends BasePage>... aPageList) {
+ super(aResult, aUserCondition, new RegexpPathCondition(getPageRegex(aPageList)), BasePage.class,
+ new IsaOperationCondition(AllOperation.class));
}
/**
* Converts a list of page names into a regular expression for the pages.
- *
- * @param aPageList
- * List of pages.
+ *
+ * @param aPageList List of pages.
* @return Regexp matching any of the given pagenames.
*/
private static String getPageRegex(Class<? extends BasePage>[] aPageList) {
super();
}
- /* (non-Javadoc)
- * @see org.wamblee.security.authorization.UrlAuthorizationRule#getResourcePath(java.lang.Object)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.wamblee.security.authorization.UrlAuthorizationRule#getResourcePath
+ * (java.lang.Object)
*/
@Override
protected String getResourcePath(Object aResource) {
package org.wamblee.photos.security;
import java.util.List;
-
import javax.inject.Inject;
import javax.persistence.DiscriminatorValue;
import javax.persistence.Entity;
import org.wamblee.security.authorization.Operation;
import org.wamblee.security.authorization.ReadOperation;
import org.wamblee.security.authorization.UrlAuthorizationRule;
+import org.wamblee.security.authorization.UserCondition;
/**
* Authorization rule for photos. A user has access to all albums owned by his
/**
* Constructs the authorization rule.
- *
*/
public PhotoAuthorizationRule() {
// Empty.
}
+ public PhotoAuthorizationRule(UserCondition aUserCondition) {
+ super(AuthorizationResult.GRANTED, aUserCondition, null, PhotoEntry.class, null);
+ }
+
@PostLoad
public void init() {
InjectorBuilder.getInjector().inject(this);
}
- /* (non-Javadoc)
- * @see org.wamblee.security.authorization.AuthorizationRule#getSupportedTypes()
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.wamblee.security.authorization.AuthorizationRule#getSupportedTypes()
*/
public Class[] getSupportedTypes() {
- return new Class[] { PhotoEntry.class };
+ return new Class[]{PhotoEntry.class};
}
- /* (non-Javadoc)
- * @see org.wamblee.security.authorization.AuthorizationRule#isAllowed(java.lang.Object, org.wamblee.security.authorization.Operation, org.wamblee.usermgt.User)
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.wamblee.security.authorization.AuthorizationRule#isAllowed(java.lang
+ * .Object, org.wamblee.security.authorization.Operation,
+ * org.wamblee.usermgt.User)
*/
- public AuthorizationResult isAllowed(Object aResource,
- Operation anOperation, String aUser) {
+ public AuthorizationResult isAllowed(Object aResource, Operation anOperation, String aUser) {
if (!(aResource instanceof PhotoEntry)) {
return AuthorizationResult.UNSUPPORTED_RESOURCE;
}
return ((PhotoEntry) aResource).getPath();
}
- /* (non-Javadoc)
+ /*
+ * (non-Javadoc)
+ *
* @see java.lang.Object#toString()
*/
@Override