javax.servlet.http,
javax.servlet.resources,
org.argeo.server.jackrabbit.webdav,
- org.argeo.server.jcr,
+ org.argeo.jcr,
org.argeo.server.jcr.mvc,
org.argeo.server.json,
org.argeo.server.mvc,
<property name="resourceAdapter" ref="resourceAdapter" />
</bean>
- <bean id="resourceAdapter" class="org.argeo.server.jcr.JcrResourceAdapter">
- <property name="repository" ref="repository" />
- <property name="username" value="demo" />
- <property name="password" value="demo" />
+ <bean id="resourceAdapter" class="org.argeo.jcr.JcrResourceAdapter">
+ <property name="session" ref="jcrSession" />
+ </bean>
+
+ <bean id="jcrSession" class="org.argeo.jcr.ThreadBoundJcrSessionFactory">
+ <property name="repository" ref="jcrRepository" />
</bean>
<bean id="viewResolver" class="org.argeo.server.mvc.SerializingViewResolver">
}
- // private Session session;
-
@Override
public void init() throws ServletException {
super.init();
}
setResourceConfig(resourceConfig);
}
-
- // try {
- // session().getWorkspace().getObservationManager().addEventListener(
- // this, Event.NODE_ADDED, "/", true, null, null, false);
- // if (log.isDebugEnabled())
- // log.debug("Registered listener");
- // } catch (Exception e) {
- // throw new ArgeoException("Cannot register event listener", e);
- // }
}
- @SuppressWarnings("restriction")
@Override
protected void service(HttpServletRequest request,
HttpServletResponse response) throws ServletException, IOException {
}
}
- // public void onEvent(EventIterator events) {
- // while (events.hasNext()) {
- // Event event = events.nextEvent();
- // log.debug(event);
- // }
- //
- // }
-
- // protected Session session() {
- // if (session == null)
- // try {
- // session = getRepository().login(
- // new SimpleCredentials("demo", "demo".toCharArray()));
- // } catch (Exception e) {
- // throw new ArgeoException("Cannot open session", e);
- // }
- // return session;
- // }
-
public Repository getRepository() {
return repository;
}
Manifest-Version: 1.0\r
Created-By: 1.5.0_16 (Sun Microsystems Inc.)\r
Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt\r
-Import-Package: javax.activation;version="1.1",javax.jcr;version="1.0"\r
- ,javax.jcr.nodetype;version="1.0",javax.jcr.observation;version="1.0"\r
- ,javax.jcr.query;version="1.0",javax.jcr.version;version="1.0",javax.\r
- servlet;version="2.5",javax.servlet.http;version="2.5",javax.xml.pars\r
- ers,javax.xml.transform,javax.xml.transform.dom,javax.xml.transform.s\r
- tream,org.apache.commons.fileupload;version="1.2",org.apache.commons.\r
- fileupload.disk;version="1.2",org.apache.commons.fileupload.servlet;v\r
- ersion="1.2",org.apache.commons.io;version="1.4",org.apache.commons.l\r
- ogging;version="1.1",org.argeo;version="0.1",org.argeo.jcr;version="0\r
- .1",org.argeo.server;version="0.1",org.argeo.server.jcr;version="0.1"\r
- ,org.argeo.server.jcr.mvc;version="0.1",org.argeo.server.mvc;version=\r
- "0.1",org.springframework.beans;version="2.5",org.springframework.bea\r
- ns.factory;version="2.5",org.springframework.core.io;version="2.5",or\r
- g.springframework.stereotype;version="2.5",org.springframework.ui;ver\r
- sion="2.5",org.springframework.web.bind.annotation;version="2.5",org.\r
- springframework.web.context.request;version="2.5",org.springframework\r
- .xml.dom;version="1.5",org.w3c.dom,org.xml.sax\r
+Import-Package: javax.activation;version="1.1",\r
+ javax.jcr;version="1.0",\r
+ javax.jcr.nodetype;version="1.0",\r
+ javax.jcr.observation;version="1.0",\r
+ javax.jcr.query;version="1.0",\r
+ javax.jcr.version;version="1.0",\r
+ javax.servlet;version="2.5",\r
+ javax.servlet.http;version="2.5",\r
+ javax.xml.parsers,\r
+ javax.xml.transform,\r
+ javax.xml.transform.dom,\r
+ javax.xml.transform.stream,\r
+ org.apache.commons.fileupload;version="1.2",\r
+ org.apache.commons.fileupload.disk;version="1.2",\r
+ org.apache.commons.fileupload.servlet;version="1.2",\r
+ org.apache.commons.io;version="1.4",\r
+ org.apache.commons.logging;version="1.1",\r
+ org.argeo;version="0.1",\r
+ org.argeo.jcr;version="0.1",\r
+ org.argeo.server;version="0.1",\r
+ org.argeo.server.jackrabbit.unit;version="0.1.3.SNAPSHOT-r3520",\r
+ org.argeo.server.jcr;version="0.1",\r
+ org.argeo.server.jcr.mvc;version="0.1",\r
+ org.argeo.server.mvc;version="0.1",\r
+ org.springframework.beans;version="2.5",\r
+ org.springframework.beans.factory;version="2.5",\r
+ org.springframework.core.io;version="2.5",\r
+ org.springframework.stereotype;version="2.5",\r
+ org.springframework.ui;version="2.5",\r
+ org.springframework.web.bind.annotation;version="2.5",\r
+ org.springframework.web.context.request;version="2.5",\r
+ org.springframework.xml.dom;version="1.5",\r
+ org.w3c.dom,\r
+ org.xml.sax\r
Bundle-RequiredExecutionEnvironment: J2SE-1.5\r
Export-Package: org.argeo.jcr;uses:="org.springframework.beans,javax.j\r
cr,org.argeo,javax.jcr.query,org.apache.commons.logging,javax.jcr.nod\r
--- /dev/null
+package org.argeo.jcr;
+
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.observation.Event;
+import javax.jcr.observation.EventIterator;
+import javax.jcr.observation.EventListener;
+import javax.jcr.observation.ObservationManager;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.ArgeoException;
+
+/** To be overridden */
+public class DefaultJcrListener implements EventListener {
+ private final static Log log = LogFactory.getLog(DefaultJcrListener.class);
+ private Session session;
+ private String path = "/";
+ private Boolean deep = true;
+
+ public void start() {
+ try {
+ addEventListener(session().getWorkspace().getObservationManager());
+ if (log.isDebugEnabled())
+ log.debug("Registered JCR event listener on " + path);
+ } catch (Exception e) {
+ throw new ArgeoException("Cannot register event listener", e);
+ }
+ }
+
+ public void stop() {
+ try {
+ session().getWorkspace().getObservationManager()
+ .removeEventListener(this);
+ if (log.isDebugEnabled())
+ log.debug("Unregistered JCR event listener on " + path);
+ } catch (Exception e) {
+ throw new ArgeoException("Cannot unregister event listener", e);
+ }
+ }
+
+ /** Default is listen to all events */
+ protected Integer getEvents() {
+ return Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED
+ | Event.PROPERTY_CHANGED | Event.PROPERTY_REMOVED;
+ }
+
+ /** To be overidden */
+ public void onEvent(EventIterator events) {
+ while (events.hasNext()) {
+ Event event = events.nextEvent();
+ log.debug(event);
+ }
+ }
+
+ /** To be overidden */
+ protected void addEventListener(ObservationManager observationManager)
+ throws RepositoryException {
+ observationManager.addEventListener(this, getEvents(), path, deep,
+ null, null, false);
+ }
+
+ private Session session() {
+ return session;
+ }
+
+ public void setPath(String path) {
+ this.path = path;
+ }
+
+ public void setDeep(Boolean deep) {
+ this.deep = deep;
+ }
+
+ public void setSession(Session session) {
+ this.session = session;
+ }
+
+}
--- /dev/null
+package org.argeo.jcr;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.List;
+
+import javax.activation.MimetypesFileTypeMap;
+import javax.jcr.Node;
+import javax.jcr.Property;
+import javax.jcr.RepositoryException;
+import javax.jcr.Session;
+import javax.jcr.version.Version;
+import javax.jcr.version.VersionHistory;
+import javax.jcr.version.VersionIterator;
+
+import org.apache.commons.io.FilenameUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.argeo.ArgeoException;
+import org.springframework.core.io.Resource;
+
+public class JcrResourceAdapter {
+ private final static Log log = LogFactory.getLog(JcrResourceAdapter.class);
+
+ private Session session;
+
+ private Boolean versioning = true;
+ private String defaultEncoding = "UTF-8";
+
+ // private String restoreBase = "/.restore";
+
+ public void mkdirs(String path) {
+ JcrUtils.mkdirs(session(), path, "nt:folder", versioning);
+ }
+
+ public void create(String path, Resource file, String mimeType) {
+ try {
+ create(path, file.getInputStream(), mimeType);
+ } catch (IOException e) {
+ throw new ArgeoException("Cannot read " + file, e);
+ }
+ }
+
+ public void create(String path, InputStream in, String mimeType) {
+ try {
+ if (session().itemExists(path)) {
+ throw new ArgeoException("Node " + path + " already exists.");
+ }
+
+ int index = path.lastIndexOf('/');
+ String parentPath = path.substring(0, index);
+ if (parentPath.equals(""))
+ parentPath = "/";
+ String fileName = path.substring(index + 1);
+ if (!session().itemExists(parentPath))
+ throw new ArgeoException("Parent folder of node " + path
+ + " does not exist: " + parentPath);
+
+ Node folderNode = (Node) session().getItem(parentPath);
+ Node fileNode = folderNode.addNode(fileName, "nt:file");
+
+ Node contentNode = fileNode.addNode("jcr:content", "nt:resource");
+ if (mimeType != null)
+ contentNode.setProperty("jcr:mimeType", mimeType);
+ contentNode.setProperty("jcr:encoding", defaultEncoding);
+ contentNode.setProperty("jcr:data", in);
+ Calendar lastModified = Calendar.getInstance();
+ // lastModified.setTimeInMillis(file.lastModified());
+ contentNode.setProperty("jcr:lastModified", lastModified);
+ // resNode.addMixin("mix:referenceable");
+
+ if (versioning)
+ fileNode.addMixin("mix:versionable");
+
+ session().save();
+
+ if (versioning)
+ fileNode.checkin();
+
+ if (log.isDebugEnabled())
+ log.debug("Created " + path);
+ } catch (Exception e) {
+ throw new ArgeoException("Cannot create node for " + path, e);
+ }
+
+ }
+
+ public void update(String path, Resource file) {
+ try {
+ update(path, file.getInputStream());
+ } catch (IOException e) {
+ throw new ArgeoException("Cannot read " + file, e);
+ }
+ }
+
+ public void update(String path, InputStream in) {
+ try {
+
+ if (!session().itemExists(path)) {
+ String type = new MimetypesFileTypeMap()
+ .getContentType(FilenameUtils.getName(path));
+ create(path, in, type);
+ return;
+ }
+
+ Node fileNode = (Node) session().getItem(path);
+ Node contentNode = fileNode.getNode("jcr:content");
+ fileNode.checkout();
+ contentNode.setProperty("jcr:data", in);
+ Calendar lastModified = Calendar.getInstance();
+ // lastModified.setTimeInMillis(file.lastModified());
+ contentNode.setProperty("jcr:lastModified", lastModified);
+
+ session().save();
+ fileNode.checkin();
+
+ if (log.isDebugEnabled())
+ log.debug("Updated " + path);
+ } catch (Exception e) {
+ throw new ArgeoException("Cannot update node " + path, e);
+ }
+ }
+
+ public List<Calendar> listVersions(String path) {
+ if (!versioning)
+ throw new ArgeoException("Versioning is not activated");
+
+ try {
+ List<Calendar> versions = new ArrayList<Calendar>();
+ Node fileNode = (Node) session().getItem(path);
+ VersionHistory history = fileNode.getVersionHistory();
+ for (VersionIterator it = history.getAllVersions(); it.hasNext();) {
+ Version version = (Version) it.next();
+ versions.add(version.getCreated());
+ if (log.isTraceEnabled()) {
+ log.debug(version);
+ // debug(version);
+ }
+ }
+ return versions;
+ } catch (Exception e) {
+ throw new ArgeoException("Cannot list version of node " + path, e);
+ }
+ }
+
+ public InputStream retrieve(String path) {
+ try {
+ Node node = (Node) session().getItem(path + "/jcr:content");
+ Property property = node.getProperty("jcr:data");
+ return property.getStream();
+ } catch (Exception e) {
+ throw new ArgeoException("Cannot retrieve " + path, e);
+ }
+ }
+
+ public synchronized InputStream retrieve(String path, Integer revision) {
+ if (!versioning)
+ throw new ArgeoException("Versioning is not activated");
+
+ try {
+ Node fileNode = (Node) session().getItem(path);
+ VersionHistory history = fileNode.getVersionHistory();
+ int count = 0;
+ Version version = null;
+ for (VersionIterator it = history.getAllVersions(); it.hasNext();) {
+ version = (Version) it.next();
+ if (count == revision + 1) {
+ InputStream in = fromVersion(version);
+ if (log.isDebugEnabled())
+ log.debug("Retrieved " + path + " at revision "
+ + revision);
+ return in;
+ }
+ count++;
+ }
+ } catch (Exception e) {
+ throw new ArgeoException("Cannot retrieve version " + revision
+ + " of " + path, e);
+ }
+
+ throw new ArgeoException("Version " + revision
+ + " does not exist for node " + path);
+ }
+
+ protected InputStream fromVersion(Version version)
+ throws RepositoryException {
+ Node frozenNode = version.getNode("jcr:frozenNode");
+ InputStream in = frozenNode.getNode("jcr:content").getProperty(
+ "jcr:data").getStream();
+ return in;
+ }
+
+ protected Session session() {
+ return session;
+ }
+
+ public void setVersioning(Boolean versioning) {
+ this.versioning = versioning;
+ }
+
+ public void setDefaultEncoding(String defaultEncoding) {
+ this.defaultEncoding = defaultEncoding;
+ }
+
+ protected String fill(Integer number) {
+ int size = 4;
+ String str = number.toString();
+ for (int i = str.length(); i < size; i++) {
+ str = "0" + str;
+ }
+ return str;
+ }
+
+ public void setSession(Session session) {
+ this.session = session;
+ }
+
+
+}
+++ /dev/null
-package org.argeo.server.jcr;
-
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.SimpleCredentials;
-import javax.jcr.observation.Event;
-import javax.jcr.observation.EventIterator;
-import javax.jcr.observation.EventListener;
-import javax.jcr.observation.ObservationManager;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.ArgeoException;
-
-/** To be overridden */
-public class DefaultJcrListener implements EventListener {
- private final static Log log = LogFactory.getLog(DefaultJcrListener.class);
- private Session session;
- private Repository repository;
- private String path = "/";
- private Boolean deep = true;
- private String username = "demo";
- private String password = "demo";
-
- public void start() {
- try {
- addEventListener(session().getWorkspace().getObservationManager());
- if (log.isDebugEnabled())
- log.debug("Registered JCR event listener on " + path);
- } catch (Exception e) {
- throw new ArgeoException("Cannot register event listener", e);
- }
- }
-
- public void stop() {
- try {
- session().getWorkspace().getObservationManager()
- .removeEventListener(this);
- if (log.isDebugEnabled())
- log.debug("Unregistered JCR event listener on " + path);
- } catch (Exception e) {
- throw new ArgeoException("Cannot unregister event listener", e);
- }
- }
-
- /** Default is listen to all events */
- protected Integer getEvents() {
- return Event.NODE_ADDED | Event.NODE_REMOVED | Event.PROPERTY_ADDED
- | Event.PROPERTY_CHANGED | Event.PROPERTY_REMOVED;
- }
-
- /** To be overidden */
- public void onEvent(EventIterator events) {
- while (events.hasNext()) {
- Event event = events.nextEvent();
- log.debug(event);
- }
- }
-
- /** To be overidden */
- protected void addEventListener(ObservationManager observationManager)
- throws RepositoryException {
- observationManager.addEventListener(this, getEvents(), path, deep,
- null, null, false);
- }
-
- protected Session session() {
- if (session == null)
- try {
- session = repository.login(new SimpleCredentials(username,
- password.toCharArray()));
- } catch (Exception e) {
- throw new ArgeoException("Cannot open session", e);
- }
- return session;
- }
-
- public void setRepository(Repository repository) {
- this.repository = repository;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public void setPath(String path) {
- this.path = path;
- }
-
- public void setDeep(Boolean deep) {
- this.deep = deep;
- }
-
-}
+++ /dev/null
-package org.argeo.server.jcr;
-
-import java.io.IOException;
-import java.io.InputStream;
-import java.util.ArrayList;
-import java.util.Calendar;
-import java.util.List;
-
-import javax.activation.MimetypesFileTypeMap;
-import javax.jcr.Node;
-import javax.jcr.Property;
-import javax.jcr.Repository;
-import javax.jcr.RepositoryException;
-import javax.jcr.Session;
-import javax.jcr.SimpleCredentials;
-import javax.jcr.version.Version;
-import javax.jcr.version.VersionHistory;
-import javax.jcr.version.VersionIterator;
-
-import org.apache.commons.io.FilenameUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.ArgeoException;
-import org.argeo.jcr.JcrUtils;
-import org.springframework.beans.factory.DisposableBean;
-import org.springframework.beans.factory.InitializingBean;
-import org.springframework.core.io.Resource;
-
-public class JcrResourceAdapter implements InitializingBean, DisposableBean {
- private final static Log log = LogFactory.getLog(JcrResourceAdapter.class);
-
- private Repository repository;
-
- private String username;
- private String password;
-
- private Session session;
-
- private Boolean versioning = true;
- private String defaultEncoding = "UTF-8";
-
- // private String restoreBase = "/.restore";
-
- public void mkdirs(String path) {
- JcrUtils.mkdirs(session(), path, "nt:folder", versioning);
- }
-
- public void create(String path, Resource file, String mimeType) {
- try {
- create(path, file.getInputStream(), mimeType);
- } catch (IOException e) {
- throw new ArgeoException("Cannot read " + file, e);
- }
- }
-
- public void create(String path, InputStream in, String mimeType) {
- try {
- if (session().itemExists(path)) {
- throw new ArgeoException("Node " + path + " already exists.");
- }
-
- int index = path.lastIndexOf('/');
- String parentPath = path.substring(0, index);
- if (parentPath.equals(""))
- parentPath = "/";
- String fileName = path.substring(index + 1);
- if (!session().itemExists(parentPath))
- throw new ArgeoException("Parent folder of node " + path
- + " does not exist: " + parentPath);
-
- Node folderNode = (Node) session().getItem(parentPath);
- Node fileNode = folderNode.addNode(fileName, "nt:file");
-
- Node contentNode = fileNode.addNode("jcr:content", "nt:resource");
- if (mimeType != null)
- contentNode.setProperty("jcr:mimeType", mimeType);
- contentNode.setProperty("jcr:encoding", defaultEncoding);
- contentNode.setProperty("jcr:data", in);
- Calendar lastModified = Calendar.getInstance();
- // lastModified.setTimeInMillis(file.lastModified());
- contentNode.setProperty("jcr:lastModified", lastModified);
- // resNode.addMixin("mix:referenceable");
-
- if (versioning)
- fileNode.addMixin("mix:versionable");
-
- session().save();
-
- if (versioning)
- fileNode.checkin();
-
- if (log.isDebugEnabled())
- log.debug("Created " + path);
- } catch (Exception e) {
- throw new ArgeoException("Cannot create node for " + path, e);
- }
-
- }
-
- public void update(String path, Resource file) {
- try {
- update(path, file.getInputStream());
- } catch (IOException e) {
- throw new ArgeoException("Cannot read " + file, e);
- }
- }
-
- public void update(String path, InputStream in) {
- try {
-
- if (!session().itemExists(path)) {
- String type = new MimetypesFileTypeMap()
- .getContentType(FilenameUtils.getName(path));
- create(path, in, type);
- return;
- }
-
- Node fileNode = (Node) session().getItem(path);
- Node contentNode = fileNode.getNode("jcr:content");
- fileNode.checkout();
- contentNode.setProperty("jcr:data", in);
- Calendar lastModified = Calendar.getInstance();
- // lastModified.setTimeInMillis(file.lastModified());
- contentNode.setProperty("jcr:lastModified", lastModified);
-
- session().save();
- fileNode.checkin();
-
- if (log.isDebugEnabled())
- log.debug("Updated " + path);
- } catch (Exception e) {
- throw new ArgeoException("Cannot update node " + path, e);
- }
- }
-
- public List<Calendar> listVersions(String path) {
- if (!versioning)
- throw new ArgeoException("Versioning is not activated");
-
- try {
- List<Calendar> versions = new ArrayList<Calendar>();
- Node fileNode = (Node) session().getItem(path);
- VersionHistory history = fileNode.getVersionHistory();
- for (VersionIterator it = history.getAllVersions(); it.hasNext();) {
- Version version = (Version) it.next();
- versions.add(version.getCreated());
- if (log.isTraceEnabled()) {
- log.debug(version);
- // debug(version);
- }
- }
- return versions;
- } catch (Exception e) {
- throw new ArgeoException("Cannot list version of node " + path, e);
- }
- }
-
- public InputStream retrieve(String path) {
- try {
- Node node = (Node) session().getItem(path + "/jcr:content");
- Property property = node.getProperty("jcr:data");
- return property.getStream();
- } catch (Exception e) {
- throw new ArgeoException("Cannot retrieve " + path, e);
- }
- }
-
- public synchronized InputStream retrieve(String path, Integer revision) {
- if (!versioning)
- throw new ArgeoException("Versioning is not activated");
-
- try {
- Node fileNode = (Node) session().getItem(path);
- VersionHistory history = fileNode.getVersionHistory();
- int count = 0;
- Version version = null;
- for (VersionIterator it = history.getAllVersions(); it.hasNext();) {
- version = (Version) it.next();
- if (count == revision + 1) {
- InputStream in = fromVersion(version);
- if (log.isDebugEnabled())
- log.debug("Retrieved " + path + " at revision "
- + revision);
- return in;
- }
- count++;
- }
- } catch (Exception e) {
- throw new ArgeoException("Cannot retrieve version " + revision
- + " of " + path, e);
- }
-
- throw new ArgeoException("Version " + revision
- + " does not exist for node " + path);
- }
-
- protected InputStream fromVersion(Version version)
- throws RepositoryException {
- Node frozenNode = version.getNode("jcr:frozenNode");
- InputStream in = frozenNode.getNode("jcr:content").getProperty(
- "jcr:data").getStream();
- return in;
- }
-
- protected Session session() {
- return session;
- }
-
- public void afterPropertiesSet() throws Exception {
- session = repository.login(new SimpleCredentials(username, password
- .toCharArray()));
- }
-
- public void destroy() throws Exception {
- session.logout();
- }
-
- public void setRepository(Repository repository) {
- this.repository = repository;
- }
-
- public void setUsername(String username) {
- this.username = username;
- }
-
- public void setPassword(String password) {
- this.password = password;
- }
-
- public void setVersioning(Boolean versioning) {
- this.versioning = versioning;
- }
-
- public void setDefaultEncoding(String defaultEncoding) {
- this.defaultEncoding = defaultEncoding;
- }
-
- protected String fill(Integer number) {
- int size = 4;
- String str = number.toString();
- for (int i = str.length(); i < size; i++) {
- str = "0" + str;
- }
- return str;
- }
-}
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
-import java.util.Map;
import javax.jcr.Item;
import javax.jcr.NodeIterator;
import org.apache.commons.fileupload.servlet.ServletFileUpload;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.argeo.jcr.JcrResourceAdapter;
import org.argeo.server.ServerAnswer;
-import org.argeo.server.jcr.JcrResourceAdapter;
import org.argeo.server.mvc.MvcConstants;
import org.springframework.core.io.ByteArrayResource;
import org.springframework.stereotype.Controller;
import java.util.Calendar;
import java.util.List;
+import javax.jcr.SimpleCredentials;
+
import org.apache.commons.io.IOUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.argeo.jcr.JcrResourceAdapter;
import org.argeo.server.jackrabbit.unit.AbstractJcrTestCase;
import org.springframework.core.io.ClassPathResource;
import org.springframework.core.io.Resource;
protected void setUp() throws Exception {
super.setUp();
jra = new JcrResourceAdapter();
- jra.setRepository(getRepository());
- jra.setUsername("demo");
- jra.setPassword("demo");
- jra.afterPropertiesSet();
- }
-
- @Override
- protected void tearDown() throws Exception {
- jra.destroy();
- super.tearDown();
+ jra.setSession(getRepository().login(
+ new SimpleCredentials("demo", "demo".toCharArray())));
}
protected File getRepositoryFile() throws Exception {