X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Forg%2Fwamblee%2Fphotos%2Fmodel%2Fplumbing%2FProducer.java;h=f14c748f4d79e980aaf96de925ff63ad0f3ff92e;hb=0edd451bb32da41f5c54ec2acfb11a693f567ec9;hp=4e5b1da7b6a2a1540c3fb9c11bab938993f0dd09;hpb=06bf9182a5cd8b626d8e66c1fde4e8e6c722a0b5;p=photos diff --git a/src/main/java/org/wamblee/photos/model/plumbing/Producer.java b/src/main/java/org/wamblee/photos/model/plumbing/Producer.java index 4e5b1da..f14c748 100644 --- a/src/main/java/org/wamblee/photos/model/plumbing/Producer.java +++ b/src/main/java/org/wamblee/photos/model/plumbing/Producer.java @@ -38,7 +38,6 @@ import org.wamblee.io.InputResource; import org.wamblee.photos.concurrent.ConcurrentAlbum; import org.wamblee.photos.model.Album; import org.wamblee.photos.model.PhotoEntry; -import org.wamblee.photos.model.authorization.AuthorizedAlbum; import org.wamblee.photos.model.filesystem.FileSystemAlbum; import org.wamblee.photos.security.PageAuthorizationRule; import org.wamblee.photos.security.PhotoAuthorizationRule; @@ -74,12 +73,10 @@ import org.wamblee.security.authorization.jpa.JpaAuthorizationService; /** * @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"; @@ -104,16 +101,23 @@ public class Producer { @AllPhotos private Album allPhotos; - private Configuration getCOnfiguration() { + @Inject + @UserCache + private Cache userCache; + + @Inject + @PhotoCache + private Cache> photoCache; + + 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; } @@ -122,42 +126,56 @@ public class Producer { @ApplicationScoped public UserAdministration getUserAdmin() { LOGGER.info("Initializing user administration"); - try { - NameValidator passwordvalidator = new RegexpNameValidator(".{5,}", - "INVALID_PASSWORD", "Password must have at least 5 characters"); - InputResource cacheConfig = new ClassPathResource( - "META-INF/ehcache.xml"); - Cache userCache = new EhCache(cacheConfig, "users"); - MessageDigester passwordEncoder = new Md5HexMessageDigester(); - 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", + 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); + 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", + 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; - } catch (IOException e) { - throw new RuntimeException( - "Could not initialize user administration", e); + 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; + } + + @Produces + @ApplicationScoped + @UserCache + public Cache getUserCache() { + try { + InputResource cacheConfig = new ClassPathResource("META-INF/ehcache.xml"); + return new EhCache(cacheConfig, "users"); + } + catch (IOException e) { + throw new RuntimeException("Could not create user cache", e); + } + } + + @Produces + @ApplicationScoped + @PhotoCache + public Cache> getPhotoCache() { + try { + InputResource cacheConfig = new ClassPathResource("META-INF/ehcache.xml"); + return new EhCache>(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 @@ -169,25 +187,23 @@ public class Producer { 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; } @@ -199,37 +215,14 @@ public class Producer { LOGGER.info("Initializing photo album"); try { - File dir = new File(getCOnfiguration().getPath()); - InputResource cacheConfig = new ClassPathResource( - "META-INF/ehcache.xml"); - Cache> photoCache = new EhCache>( - cacheConfig, "photos"); + File dir = new File(getConfiguration().getPath()); Album fileSystemAlbum = new FileSystemAlbum(dir, "/", photoCache); Album concurrentAlbum = new ConcurrentAlbum(fileSystemAlbum); return concurrentAlbum; - } catch (IOException e) { - throw new RuntimeException("Could not initialize photo album", e); } - } - - @Produces - @SessionScoped - @AuthorizedPhotos - public Album getAuthorizedAlbum() { - LOGGER.info("Initializing authorized photos for current session"); - try { - InputResource cacheConfig = new ClassPathResource( - "META-INF/ehcache.xml"); - Cache userCache = new EhCache(cacheConfig, "users"); - Cache authorizedPhotoCache = new EhCache(cacheConfig, "photos"); - - AuthorizedAlbum album = new AuthorizedAlbum(allPhotos, - authorizationService, authorizedPhotoCache, session.getId()); - return album; - } catch (IOException e) { - throw new RuntimeException("Problem initializing authorized album", - e); + catch (IOException e) { + throw new RuntimeException("Could not initialize photo album", e); } } @@ -244,17 +237,15 @@ public class Producer { throw new RuntimeException("No authenticated user"); } String username = userPrincipal.getName(); - List users = entityManager - .createNamedQuery(User.QUERY_FIND_BY_NAME) - .setParameter(User.NAME_PARAM, username).getResultList(); + List 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); } - }