Refactoring some photark objects as Components, and properly adding dependencies and scope
git-svn-id: https://svn.apache.org/repos/asf/incubator/photark/trunk@923086 13f79535-47bb-0310-9956-ffa450edef68
diff --git a/photark-filesystem/src/main/java/org/apache/photark/filesystem/impl/GalleryImpl.java b/photark-filesystem/src/main/java/org/apache/photark/filesystem/impl/GalleryImpl.java
index 2d9c600..65228e2 100644
--- a/photark-filesystem/src/main/java/org/apache/photark/filesystem/impl/GalleryImpl.java
+++ b/photark-filesystem/src/main/java/org/apache/photark/filesystem/impl/GalleryImpl.java
@@ -21,62 +21,64 @@
import java.io.File;
import java.net.URL;
+import java.util.logging.Logger;
import org.apache.photark.services.album.Album;
-import org.apache.photark.services.gallery.AbsGalleryImpl;
+import org.apache.photark.services.gallery.BaseGalleryImpl;
import org.apache.photark.services.gallery.Gallery;
import org.oasisopen.sca.annotation.Init;
-public class GalleryImpl extends AbsGalleryImpl implements Gallery {
-
- public GalleryImpl(){
-
- }
-
- public GalleryImpl(String name){
- super(name);
- }
-
-
- @Init
- public void init() {
- System.out.println(">>> Initializing fileSystem Gallery");
- try {
- URL galleryURL = this.getClass().getClassLoader().getResource(name);
- if(galleryURL == null) {
- // Accomodate for J2EE classpath that starts in WEB-INF\classes
- galleryURL = this.getClass().getClassLoader().getResource("../../" + name);
- }
- if(galleryURL == null) {
- // Workaroud for Google apps Engine
- String galleryDir = System.getProperty("user.dir") + "/" + name;
- galleryURL = new URL("file://" + galleryDir);
- }
+public class GalleryImpl extends BaseGalleryImpl implements Gallery {
+ private static final Logger logger = Logger.getLogger(GalleryImpl.class.getName());
- if(galleryURL != null) {
- File album = new File(galleryURL.toURI());
- if (album.isDirectory() && album.exists()) {
- File[] albums = album.listFiles();
- for(File albumFile : albums) {
- if(! albumFile.getName().startsWith(".")) {
- if(albumFile.isDirectory() && albumFile.exists()) {
- Album newAlbum = new org.apache.photark.filesystem.impl.AlbumImpl();
- newAlbum.setName(albumFile.getName());
- newAlbum.setLocation(albumFile.getPath());
- this.albums.add(newAlbum);
- }
- }
- }
- }
- }
- } catch (Exception e) {
- // FIXME: ignore for now
- e.printStackTrace();
- }
- initialized = true;
- }
-
- public void addAlbum(String albumName){
-
- }
+ public GalleryImpl(){
+
+ }
+
+ public GalleryImpl(String name){
+ super(name);
+ }
+
+
+ @Init
+ public void init() {
+ logger.info("Initializing fileSystem Gallery");
+ try {
+ URL galleryURL = this.getClass().getClassLoader().getResource(name);
+ if(galleryURL == null) {
+ // Accomodate for J2EE classpath that starts in WEB-INF\classes
+ galleryURL = this.getClass().getClassLoader().getResource("../../" + name);
+ }
+ if(galleryURL == null) {
+ // Workaroud for Google apps Engine
+ String galleryDir = System.getProperty("user.dir") + "/" + name;
+ galleryURL = new URL("file://" + galleryDir);
+ }
+
+ if(galleryURL != null) {
+ File album = new File(galleryURL.toURI());
+ if (album.isDirectory() && album.exists()) {
+ File[] albums = album.listFiles();
+ for(File albumFile : albums) {
+ if(! albumFile.getName().startsWith(".")) {
+ if(albumFile.isDirectory() && albumFile.exists()) {
+ Album newAlbum = new org.apache.photark.filesystem.impl.AlbumImpl();
+ newAlbum.setName(albumFile.getName());
+ newAlbum.setLocation(albumFile.getPath());
+ this.albums.add(newAlbum);
+ }
+ }
+ }
+ }
+ }
+ } catch (Exception e) {
+ // FIXME: ignore for now
+ e.printStackTrace();
+ }
+ initialized = true;
+ }
+
+ public void addAlbum(String albumName){
+
+ }
}
\ No newline at end of file
diff --git a/photark-jcr/src/main/java/org/apache/photark/jcr/JCRRepositoryManager.java b/photark-jcr/src/main/java/org/apache/photark/jcr/JCRRepositoryManager.java
new file mode 100644
index 0000000..883f91c
--- /dev/null
+++ b/photark-jcr/src/main/java/org/apache/photark/jcr/JCRRepositoryManager.java
@@ -0,0 +1,97 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+package org.apache.photark.jcr;
+
+import java.io.IOException;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+
+import javax.jcr.LoginException;
+import javax.jcr.Repository;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.SimpleCredentials;
+
+import org.apache.jackrabbit.core.TransientRepository;
+import org.oasisopen.sca.annotation.Destroy;
+import org.oasisopen.sca.annotation.EagerInit;
+import org.oasisopen.sca.annotation.Init;
+import org.oasisopen.sca.annotation.Scope;
+
+/**
+ * A JCR Repository Manager that controls access to JCR session
+ * This is a singleton component controlled by the SCA Runtime via scope composite
+ */
+@Scope("COMPOSITE")
+@EagerInit
+public class JCRRepositoryManager {
+ private static final Logger logger = Logger.getLogger(JCRRepositoryManager.class.getName());
+
+ /** JCR Repository **/
+ private static Repository repository;
+ /** JCR Repository Session **/
+ private static Session session;
+
+ public JCRRepositoryManager() throws IOException {
+ logger.log(Level.INFO,"JCRRepositoryManager Constructor : " + this.hashCode());
+ }
+
+ @Init
+ public void init() {
+ initializeRepository();
+ }
+
+ @Destroy
+ public void destroy() {
+ logger.log(Level.INFO,"Shutting down JCR repository");
+ session.logout();
+ session = null;
+ repository = null;
+ }
+
+ /**
+ * Retrieve current JCR Session
+ *
+ * @return A valid Session object
+ * @throws RepositoryException
+ * @throws LoginException
+ */
+ public Session getSession() throws LoginException, RepositoryException {
+ if( session == null) {
+ initializeRepository();
+ }
+ return session;
+ }
+
+ /**
+ * Initialize the JCR Repository
+ */
+ private synchronized void initializeRepository() {
+ logger.fine("Initializing JCR repository");
+ try {
+ if( repository == null) {
+ repository = new TransientRepository();
+ }
+ session = repository.login(new SimpleCredentials("photarkUser", "passwordDoesNotMatter".toCharArray()));
+ } catch (Exception e) {
+ logger.log(Level.INFO, ">>>Error initializing JCR repository : " + e.getMessage(), e);
+ }
+ }
+}
\ No newline at end of file
diff --git a/photark-jcr/src/main/java/org/apache/photark/services/album/jcr/AlbumImpl.java b/photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRAlbumImpl.java
similarity index 80%
rename from photark-jcr/src/main/java/org/apache/photark/services/album/jcr/AlbumImpl.java
rename to photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRAlbumImpl.java
index 261c29b..78e4889 100644
--- a/photark-jcr/src/main/java/org/apache/photark/services/album/jcr/AlbumImpl.java
+++ b/photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRAlbumImpl.java
@@ -17,7 +17,7 @@
* under the License.
*/
-package org.apache.photark.services.album.jcr;
+package org.apache.photark.jcr.services;
import java.io.File;
import java.io.FileInputStream;
@@ -27,6 +27,7 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
+import java.util.logging.Logger;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
@@ -34,28 +35,33 @@
import javax.jcr.Session;
import org.apache.photark.Image;
+import org.apache.photark.jcr.JCRRepositoryManager;
import org.apache.photark.services.album.Album;
import org.apache.photark.services.album.ImageFilter;
-import org.apache.photark.services.gallery.jcr.JCRSession;
+import org.oasisopen.sca.annotation.Destroy;
import org.oasisopen.sca.annotation.Init;
import org.oasisopen.sca.annotation.Property;
-public class AlbumImpl implements Album {
+public class JCRAlbumImpl implements Album {
+ private static final Logger logger = Logger.getLogger(JCRAlbumImpl.class.getName());
+
+ private JCRRepositoryManager repositoryManager;
+
private String gallery;
private String name;
private String location;
- private Session session = JCRSession.getSession();
private boolean initialized;
private static Map<String, Album> albums = new HashMap<String, Album>();
- public synchronized static Album createAlbum(String name) {
+ public synchronized static Album createAlbum(JCRRepositoryManager repositoryManager, String name) {
if (!albums.containsKey(name)) {
- albums.put(name, new AlbumImpl(name));
+ albums.put(name, new JCRAlbumImpl(repositoryManager,name));
}
return albums.get(name);
}
- public AlbumImpl(String name) {
+ public JCRAlbumImpl(JCRRepositoryManager repositoryManager, String name) {
+ this.repositoryManager = repositoryManager;
this.name = name;
}
@@ -66,14 +72,15 @@
*/
@Init
public synchronized void init() {
- System.out.println(">>> Initializing JCR Album");
+ logger.info("Initializing JCR Album");
try {
URL albumURL = this.getClass().getClassLoader().getResource(getLocation());
if (albumURL == null) {
String loc = "../../" + getLocation();
albumURL = this.getClass().getClassLoader().getResource(loc);
}
-
+
+ Session session = repositoryManager.getSession();
if (albumURL != null) {
try {
File album = new File(albumURL.toURI());
@@ -103,9 +110,16 @@
} catch (Exception e) {
// FIXME: ignore for now
e.printStackTrace();
+ } finally {
+ //repositoryManager.releaseSession();
}
initialized = true;
}
+
+ @Destroy
+ public void destroy() {
+ //repositoryManager.releaseSession();
+ }
@Property
public void setGallery(String gallery) {
@@ -132,7 +146,7 @@
}
public void setLocation(String location) {
- System.out.println("inside setLocation:location:" + location);
+ logger.info("inside setLocation:location:" + location);
this.location = location;
}
@@ -142,6 +156,7 @@
}
List<String> pictures = new ArrayList<String>();
try {
+ Session session = repositoryManager.getSession();
Node root = session.getRootNode();
Node albumNode = root.getNode(name);
NodeIterator nodes = albumNode.getNodes();
@@ -155,6 +170,8 @@
} catch (Exception e) {
// FIXME: ignore for now
e.printStackTrace();
+ } finally {
+ //repositoryManager.releaseSession();
}
String[] pictureArray = new String[pictures.size()];
@@ -164,6 +181,7 @@
public void removeNodes() {
try {
+ Session session = repositoryManager.getSession();
Node root = session.getRootNode();
NodeIterator nodes = root.getNodes();
while (nodes.hasNext()) {
@@ -177,12 +195,15 @@
} catch (Exception e) {
// FIXME: ignore for now
e.printStackTrace();
+ } finally {
+ //repositoryManager.releaseSession();
}
}
public void addPicture(Image picture) {
try {
+ Session session = repositoryManager.getSession();
Node root = session.getRootNode();
Node albumNode = root.getNode(name);
Node picNode = albumNode.addNode(picture.getName());
@@ -193,11 +214,14 @@
session.save();
} catch (RepositoryException e) {
e.printStackTrace();
+ } finally {
+ //repositoryManager.releaseSession();
}
}
public void deletePicture(Image picture) {
try {
+ Session session = repositoryManager.getSession();
Node root = session.getRootNode();
Node albumNode = root.getNode(name);
Node picNode = albumNode.addNode(picture.getName());
@@ -205,6 +229,8 @@
session.save();
} catch (RepositoryException e) {
e.printStackTrace();
+ } finally {
+ //repositoryManager.releaseSession();
}
}
@@ -217,10 +243,12 @@
* @throws RepositoryException
*/
private Node getAlbumNode(String name) throws RepositoryException {
+ Session session = repositoryManager.getSession();
Node root = session.getRootNode();
- if (root.hasNode(name))
+ if (root.hasNode(name)) {
return root.getNode(name);
- else
+ } else {
return root.addNode(name);
+ }
}
}
diff --git a/photark-jcr/src/main/java/org/apache/photark/services/gallery/jcr/GalleryImpl.java b/photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRGalleryImpl.java
similarity index 67%
rename from photark-jcr/src/main/java/org/apache/photark/services/gallery/jcr/GalleryImpl.java
rename to photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRGalleryImpl.java
index 59026eb..e597922 100644
--- a/photark-jcr/src/main/java/org/apache/photark/services/gallery/jcr/GalleryImpl.java
+++ b/photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRGalleryImpl.java
@@ -17,35 +17,47 @@
* under the License.
*/
-package org.apache.photark.services.gallery.jcr;
+package org.apache.photark.jcr.services;
import java.io.File;
import java.net.URL;
+import java.util.logging.Logger;
import javax.jcr.Node;
import javax.jcr.NodeIterator;
import javax.jcr.RepositoryException;
import javax.jcr.Session;
+import org.apache.photark.jcr.JCRRepositoryManager;
import org.apache.photark.services.album.Album;
-import org.apache.photark.services.album.jcr.AlbumImpl;
-import org.apache.photark.services.gallery.AbsGalleryImpl;
+import org.apache.photark.services.gallery.BaseGalleryImpl;
import org.apache.photark.services.gallery.Gallery;
import org.oasisopen.sca.annotation.Init;
+import org.oasisopen.sca.annotation.Reference;
+import org.oasisopen.sca.annotation.Scope;
-public class GalleryImpl extends AbsGalleryImpl implements Gallery {
+@Scope("COMPOSITE")
+public class JCRGalleryImpl extends BaseGalleryImpl implements Gallery {
+ private static final Logger logger = Logger.getLogger(JCRGalleryImpl.class.getName());
+
+ private JCRRepositoryManager repositoryManager;
- public GalleryImpl() {
+ public JCRGalleryImpl() {
}
+
+ @Reference(name="repositoryManager")
+ protected void setRepositoryManager(JCRRepositoryManager repositoryManager) {
+ this.repositoryManager = repositoryManager;
+ }
- public GalleryImpl(String name) {
+ public JCRGalleryImpl(String name) {
super(name);
}
@Init
public void init() {
- System.out.println(">>> Initializing JCR Gallery");
+ logger.info("Initializing JCR Gallery");
try {
URL galleryURL = this.getClass().getClassLoader().getResource(name);
if (galleryURL == null) {
@@ -60,9 +72,9 @@
for (File albumFile : albums) {
if (!albumFile.getName().startsWith(".")) {
if (albumFile.isDirectory() && albumFile.exists()) {
- Album newAlbum = AlbumImpl.createAlbum(albumFile.getName());
+ Album newAlbum = JCRAlbumImpl.createAlbum(repositoryManager, albumFile.getName());
newAlbum.setName(albumFile.getName());
- ((AlbumImpl)newAlbum).setGallery(name);
+ ((JCRAlbumImpl)newAlbum).setGallery(name);
this.albums.add(newAlbum);
}
}
@@ -74,13 +86,13 @@
// FIXME: ignore for now
e.printStackTrace();
}
-
+
initialized = true;
}
-
+
private void getAlbumsFromJcrRepository() {
try {
- Session session = JCRSession.getSession();
+ Session session = repositoryManager.getSession();
Node rootNode = session.getRootNode();
NodeIterator albumNodes = rootNode.getNodes();
while (albumNodes.hasNext()) {
@@ -89,29 +101,38 @@
continue;
}
String albumName = albumNode.getName();
- Album album = AlbumImpl.createAlbum(albumName);
+ Album album = JCRAlbumImpl.createAlbum(repositoryManager, albumName);
if (!albums.contains(album)) {
albums.add(album);
}
}
} catch (RepositoryException e) {
e.printStackTrace();
+ } finally {
+ //repositoryManager.releaseSession();
}
}
public void addAlbum(String albumName) {
- Session session = JCRSession.getSession();
try {
+ Session session = repositoryManager.getSession();
Node rootNode = session.getRootNode();
if (rootNode.hasNode(albumName)) {
- System.out.println("This album is already in gallery");
+ logger.info("This album is already in gallery");
return;
}
// add album to the root
rootNode.addNode(albumName);
session.save();
+ // add album to the list of albums
+ Album album = JCRAlbumImpl.createAlbum(repositoryManager, albumName);
+ if (!albums.contains(album)) {
+ albums.add(album);
+ }
} catch (RepositoryException e) {
e.printStackTrace();
+ } finally {
+ //repositoryManager.releaseSession();
}
}
}
diff --git a/photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRImageCollectionImpl.java b/photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRImageCollectionImpl.java
index 1a4423c..ac36c61 100644
--- a/photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRImageCollectionImpl.java
+++ b/photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRImageCollectionImpl.java
@@ -19,7 +19,9 @@
package org.apache.photark.jcr.services;
+import java.io.IOException;
import java.io.InputStream;
+import java.util.logging.Logger;
import javax.jcr.Node;
import javax.jcr.PathNotFoundException;
@@ -27,12 +29,13 @@
import javax.jcr.Session;
import org.apache.commons.lang.StringUtils;
+import org.apache.photark.jcr.JCRRepositoryManager;
import org.apache.photark.services.ImageCollection;
-import org.apache.photark.services.gallery.jcr.JCRSession;
import org.apache.tuscany.sca.data.collection.Entry;
import org.apache.tuscany.sca.data.collection.NotFoundException;
import org.oasisopen.sca.annotation.Destroy;
import org.oasisopen.sca.annotation.Init;
+import org.oasisopen.sca.annotation.Reference;
import org.oasisopen.sca.annotation.Scope;
import org.oasisopen.sca.annotation.Service;
@@ -43,19 +46,34 @@
@Scope("COMPOSITE")
@Service(ImageCollection.class)
public class JCRImageCollectionImpl implements ImageCollection {
- private Session session = JCRSession.getSession();
-
- @Init
- public void init() {
- }
+ private static final Logger logger = Logger.getLogger(JCRImageCollectionImpl.class.getName());
- @Destroy
- public void destroy() {
- }
+ private JCRRepositoryManager repositoryManager;
public JCRImageCollectionImpl() {
}
+
+ @Reference(name="repositoryManager")
+ protected void setRepositoryManager(JCRRepositoryManager repositoryManager) {
+ this.repositoryManager = repositoryManager;
+ }
+
+
+ @Init
+ public void init() {
+ try {
+ repositoryManager = new JCRRepositoryManager();
+ } catch (IOException e) {
+ // FIXME: ignore for now
+ e.printStackTrace();
+ }
+ }
+
+ @Destroy
+ public void destroy() {
+ //repositoryManager.releaseSession();
+ }
public InputStream get(String key) throws NotFoundException {
String sub = StringUtils.substringAfter(key, "gallery/");
@@ -63,6 +81,7 @@
String albumName = stringArray[0];
InputStream inStream = null;
try {
+ Session session = repositoryManager.getSession();
Node root = session.getRootNode();
Node albumNode = root.getNode(albumName);
String image = stringArray[1];
@@ -73,6 +92,8 @@
e.printStackTrace();
} catch (RepositoryException e) {
e.printStackTrace();
+ } finally {
+ //repositoryManager.releaseSession();
}
return inStream;
}
@@ -90,7 +111,7 @@
}
public String post(String key, InputStream inputStream) {
- System.out.println("insdie post:" + key);
+ logger.info("insdie post:" + key);
return key;
}
diff --git a/photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRImageUploadServiceImpl.java b/photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRImageUploadServiceImpl.java
index b89ebe3..68da44a 100644
--- a/photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRImageUploadServiceImpl.java
+++ b/photark-jcr/src/main/java/org/apache/photark/jcr/services/JCRImageUploadServiceImpl.java
@@ -43,12 +43,12 @@
import org.apache.commons.fileupload.disk.DiskFileItemFactory;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.photark.Image;
+import org.apache.photark.jcr.JCRRepositoryManager;
import org.apache.photark.jcr.util.ArchiveFileExtractor;
import org.apache.photark.services.album.Album;
-import org.apache.photark.services.album.jcr.AlbumImpl;
import org.apache.photark.services.gallery.Gallery;
-import org.apache.photark.services.gallery.jcr.GalleryImpl;
import org.oasisopen.sca.annotation.Init;
+import org.oasisopen.sca.annotation.Reference;
import org.oasisopen.sca.annotation.Scope;
import org.oasisopen.sca.annotation.Service;
@@ -66,8 +66,12 @@
private String supportedImageTypes[] = {".jpg", ".jpeg", ".png", ".gif"};
+ private JCRRepositoryManager repositoryManager;
+
private ServletFileUpload upload;
+ private Gallery gallery;
+
/**
* Initialize the component.
*/
@@ -77,6 +81,20 @@
upload.setSizeMax(MAX_UPLOAD_ZIP_IN_MEGS * 1024 * 1024);
}
+ public JCRImageUploadServiceImpl() {
+
+ }
+
+ @Reference(name="repositoryManager")
+ protected void setRepositoryManager(JCRRepositoryManager repositoryManager) {
+ this.repositoryManager = repositoryManager;
+ }
+
+ @Reference(name="gallery")
+ protected void setGallery(Gallery gallery) {
+ this.gallery = gallery;
+ }
+
@Override
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
response.setContentType("text/html");
@@ -85,7 +103,7 @@
out.write("<html><body><h1>Photark Upload Service</h1></body></html>");
}
-
+ @SuppressWarnings("unchecked")
@Override
public void doPost(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setContentType("text/html");
@@ -151,11 +169,11 @@
out.write(sb.toString());
} catch (FileUploadException e) {
- System.out.println("Error: " + e.getMessage());
- e.printStackTrace();
+ logger.info("Error uploading file : " + e.getMessage());
+ response.sendError(HttpServletResponse.SC_BAD_REQUEST, "Error uploading file : " + e.getMessage());
} catch (Exception e) {
- System.out.println("Error: " + e.getMessage());
- e.printStackTrace();
+ logger.info("Error uploading file : " + e.getMessage());
+ response.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, "Error uploading file : " + e.getMessage());
}
}
@@ -164,9 +182,8 @@
* @param picture Picture
*/
private void addPictureToAlbum(String albumName, Image image) {
- Gallery gallery = new GalleryImpl();
gallery.addAlbum(albumName);
- Album album = new AlbumImpl(albumName);
+ Album album = new JCRAlbumImpl(repositoryManager, albumName);
album.addPicture(image);
}
@@ -182,7 +199,7 @@
streamFactory.createArchiveInputStream(inStream);
return true;
} catch (ArchiveException e) {
- e.printStackTrace();
+ logger.info("File is not an archive");
}
return false;
}
diff --git a/photark-jcr/src/main/java/org/apache/photark/services/gallery/jcr/JCRSession.java b/photark-jcr/src/main/java/org/apache/photark/services/gallery/jcr/JCRSession.java
deleted file mode 100644
index 88552f0..0000000
--- a/photark-jcr/src/main/java/org/apache/photark/services/gallery/jcr/JCRSession.java
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License. You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations
- * under the License.
- */
-
-package org.apache.photark.services.gallery.jcr;
-
-import java.io.IOException;
-
-import javax.jcr.LoginException;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.SimpleCredentials;
-
-import org.apache.jackrabbit.core.TransientRepository;
-
-public class JCRSession {
-
- private static Session session;
-
- private static void initSession() {
- try {
- Repository repository = new TransientRepository();
- session = repository.login(new SimpleCredentials("username", "password".toCharArray()));
- } catch (LoginException e) {
- e.printStackTrace();
- } catch (IOException e) {
- e.printStackTrace();
- } catch (RepositoryException e) {
- e.printStackTrace();
- }
- }
-
- public synchronized static Session getSession() {
- if (session == null) {
- initSession();
- }
- return session;
- }
-
- public void releaseSession() {
- if(session != null) {
- session.logout();
- }
- }
-
- public void destroy() {
- releaseSession();
- }
-}
diff --git a/photark-webapp/src/main/webapp/WEB-INF/web.composite b/photark-webapp/src/main/webapp/WEB-INF/web.composite
index e2aad0b..d601732 100644
--- a/photark-webapp/src/main/webapp/WEB-INF/web.composite
+++ b/photark-webapp/src/main/webapp/WEB-INF/web.composite
@@ -24,12 +24,14 @@
<!-- Facade component for Gallery -->
<component name="Gallery">
- <implementation.java class="org.apache.photark.services.gallery.jcr.GalleryImpl"/>
+ <implementation.java class="org.apache.photark.jcr.services.JCRGalleryImpl"/>
<property name="name">gallery</property>
<service name="Gallery">
<interface.java interface="org.apache.photark.services.gallery.Gallery"/>
+ <binding.sca name="local"/>
<tuscany:binding.jsonrpc uri="/GalleryService"/>
</service>
+ <reference name="repositoryManager" target="RepositoryManager"/>
</component>
<!-- Component responsible for providing REST access to images -->
@@ -37,7 +39,8 @@
<implementation.java class="org.apache.photark.jcr.services.JCRImageCollectionImpl"/>
<service name="ImageCollection">
<tuscany:binding.http uri="/gallery"/>
- </service>
+ </service>
+ <reference name="repositoryManager" target="RepositoryManager"/>
</component>
<!-- Component responsible for providing upload support for gallery/album -->
@@ -45,6 +48,15 @@
<implementation.java class="org.apache.photark.jcr.services.JCRImageUploadServiceImpl"/>
<service name="Servlet">
<tuscany:binding.http uri="/admin/upload"/>
- </service>
- </component>
+ </service>
+ <reference name="repositoryManager" target="RepositoryManager"/>
+ <reference name="gallery" target="Gallery">
+ <binding.sca name="local"/>
+ </reference>
+ </component>
+
+ <!-- Component responsible for providing JCR Management Support -->
+ <component name="RepositoryManager">
+ <implementation.java class="org.apache.photark.jcr.JCRRepositoryManager"/>
+ </component>
</composite>
diff --git a/photark/src/main/java/org/apache/photark/services/gallery/AbsGalleryImpl.java b/photark/src/main/java/org/apache/photark/services/gallery/BaseGalleryImpl.java
similarity index 87%
rename from photark/src/main/java/org/apache/photark/services/gallery/AbsGalleryImpl.java
rename to photark/src/main/java/org/apache/photark/services/gallery/BaseGalleryImpl.java
index e274796..8057bbe 100644
--- a/photark/src/main/java/org/apache/photark/services/gallery/AbsGalleryImpl.java
+++ b/photark/src/main/java/org/apache/photark/services/gallery/BaseGalleryImpl.java
@@ -21,22 +21,24 @@
import java.util.ArrayList;
import java.util.List;
+import java.util.logging.Logger;
import org.apache.photark.services.album.Album;
import org.oasisopen.sca.annotation.Property;
-public abstract class AbsGalleryImpl implements Gallery {
-
+public abstract class BaseGalleryImpl {
+ private static final Logger logger = Logger.getLogger(BaseGalleryImpl.class.getName());
+
protected String name;
private String location;
protected boolean initialized;
protected List<Album> albums = new ArrayList<Album>();
- public AbsGalleryImpl() {
+ public BaseGalleryImpl() {
}
- public AbsGalleryImpl(String name) {
+ public BaseGalleryImpl(String name) {
this.name = name;
}
@@ -51,9 +53,9 @@
this.name = name;
}
- public void addAlbum(Album album) {
-
- }
+ //public void addAlbum(Album album) {
+ //
+ //}
public Album[] getAlbums() {
if (!initialized) {
@@ -74,7 +76,7 @@
if (pictures.length > 0) {
return albumLookup.getPictures()[0];
} else {
- System.out.println("No Album Cover Picture found for album:" + albumName);
+ logger.info("No Album Cover Picture found for album:" + albumName);
return null;
}
} else {