From: Mathieu Baudier Date: Fri, 30 Apr 2010 08:41:52 +0000 (+0000) Subject: Split server Jackrabbit into JCR X-Git-Tag: argeo-commons-2.1.30~1616 X-Git-Url: https://git.argeo.org/?a=commitdiff_plain;h=0e11f046c7af8c6b95aa7372bd912455b40955d5;p=lgpl%2Fargeo-commons.git Split server Jackrabbit into JCR git-svn-id: https://svn.argeo.org/commons/trunk@3543 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- diff --git a/server/modules/org.argeo.server.jackrabbit.webdav/META-INF/MANIFEST.MF b/server/modules/org.argeo.server.jackrabbit.webdav/META-INF/MANIFEST.MF index fabe0aebb..0d0d056c1 100644 --- a/server/modules/org.argeo.server.jackrabbit.webdav/META-INF/MANIFEST.MF +++ b/server/modules/org.argeo.server.jackrabbit.webdav/META-INF/MANIFEST.MF @@ -6,7 +6,7 @@ Import-Package: javax.jcr, 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, diff --git a/server/modules/org.argeo.server.jackrabbit.webdav/WEB-INF/manager-servlet.xml b/server/modules/org.argeo.server.jackrabbit.webdav/WEB-INF/manager-servlet.xml index 8dd19947d..077b77bf1 100644 --- a/server/modules/org.argeo.server.jackrabbit.webdav/WEB-INF/manager-servlet.xml +++ b/server/modules/org.argeo.server.jackrabbit.webdav/WEB-INF/manager-servlet.xml @@ -13,10 +13,12 @@ - - - - + + + + + + diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/webdav/WebDavServlet.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/webdav/WebDavServlet.java index c7b42e6df..a2683a1fa 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/webdav/WebDavServlet.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/server/jackrabbit/webdav/WebDavServlet.java @@ -26,8 +26,6 @@ public class WebDavServlet extends SimpleWebdavServlet { } - // private Session session; - @Override public void init() throws ServletException { super.init(); @@ -42,18 +40,8 @@ public class WebDavServlet extends SimpleWebdavServlet { } 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 { @@ -68,25 +56,6 @@ public class WebDavServlet extends SimpleWebdavServlet { } } - // 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; } diff --git a/server/runtime/org.argeo.server.jcr/META-INF/MANIFEST.MF b/server/runtime/org.argeo.server.jcr/META-INF/MANIFEST.MF index 39e03ff76..29061a0b2 100644 --- a/server/runtime/org.argeo.server.jcr/META-INF/MANIFEST.MF +++ b/server/runtime/org.argeo.server.jcr/META-INF/MANIFEST.MF @@ -1,23 +1,40 @@ Manifest-Version: 1.0 Created-By: 1.5.0_16 (Sun Microsystems Inc.) Bundle-License: http://www.apache.org/licenses/LICENSE-2.0.txt -Import-Package: javax.activation;version="1.1",javax.jcr;version="1.0" - ,javax.jcr.nodetype;version="1.0",javax.jcr.observation;version="1.0" - ,javax.jcr.query;version="1.0",javax.jcr.version;version="1.0",javax. - servlet;version="2.5",javax.servlet.http;version="2.5",javax.xml.pars - ers,javax.xml.transform,javax.xml.transform.dom,javax.xml.transform.s - tream,org.apache.commons.fileupload;version="1.2",org.apache.commons. - fileupload.disk;version="1.2",org.apache.commons.fileupload.servlet;v - ersion="1.2",org.apache.commons.io;version="1.4",org.apache.commons.l - ogging;version="1.1",org.argeo;version="0.1",org.argeo.jcr;version="0 - .1",org.argeo.server;version="0.1",org.argeo.server.jcr;version="0.1" - ,org.argeo.server.jcr.mvc;version="0.1",org.argeo.server.mvc;version= - "0.1",org.springframework.beans;version="2.5",org.springframework.bea - ns.factory;version="2.5",org.springframework.core.io;version="2.5",or - g.springframework.stereotype;version="2.5",org.springframework.ui;ver - sion="2.5",org.springframework.web.bind.annotation;version="2.5",org. - springframework.web.context.request;version="2.5",org.springframework - .xml.dom;version="1.5",org.w3c.dom,org.xml.sax +Import-Package: javax.activation;version="1.1", + javax.jcr;version="1.0", + javax.jcr.nodetype;version="1.0", + javax.jcr.observation;version="1.0", + javax.jcr.query;version="1.0", + javax.jcr.version;version="1.0", + javax.servlet;version="2.5", + javax.servlet.http;version="2.5", + javax.xml.parsers, + javax.xml.transform, + javax.xml.transform.dom, + javax.xml.transform.stream, + org.apache.commons.fileupload;version="1.2", + org.apache.commons.fileupload.disk;version="1.2", + org.apache.commons.fileupload.servlet;version="1.2", + org.apache.commons.io;version="1.4", + org.apache.commons.logging;version="1.1", + org.argeo;version="0.1", + org.argeo.jcr;version="0.1", + org.argeo.server;version="0.1", + org.argeo.server.jackrabbit.unit;version="0.1.3.SNAPSHOT-r3520", + org.argeo.server.jcr;version="0.1", + org.argeo.server.jcr.mvc;version="0.1", + org.argeo.server.mvc;version="0.1", + org.springframework.beans;version="2.5", + org.springframework.beans.factory;version="2.5", + org.springframework.core.io;version="2.5", + org.springframework.stereotype;version="2.5", + org.springframework.ui;version="2.5", + org.springframework.web.bind.annotation;version="2.5", + org.springframework.web.context.request;version="2.5", + org.springframework.xml.dom;version="1.5", + org.w3c.dom, + org.xml.sax Bundle-RequiredExecutionEnvironment: J2SE-1.5 Export-Package: org.argeo.jcr;uses:="org.springframework.beans,javax.j cr,org.argeo,javax.jcr.query,org.apache.commons.logging,javax.jcr.nod diff --git a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/DefaultJcrListener.java b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/DefaultJcrListener.java new file mode 100644 index 000000000..85f495daa --- /dev/null +++ b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/DefaultJcrListener.java @@ -0,0 +1,79 @@ +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; + } + +} diff --git a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/JcrResourceAdapter.java b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/JcrResourceAdapter.java new file mode 100644 index 000000000..3c69e0b1e --- /dev/null +++ b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/JcrResourceAdapter.java @@ -0,0 +1,221 @@ +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 listVersions(String path) { + if (!versioning) + throw new ArgeoException("Versioning is not activated"); + + try { + List versions = new ArrayList(); + 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; + } + + +} diff --git a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/DefaultJcrListener.java b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/DefaultJcrListener.java deleted file mode 100644 index 4b233086d..000000000 --- a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/DefaultJcrListener.java +++ /dev/null @@ -1,99 +0,0 @@ -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; - } - -} diff --git a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/JcrResourceAdapter.java b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/JcrResourceAdapter.java deleted file mode 100644 index 020672b86..000000000 --- a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/JcrResourceAdapter.java +++ /dev/null @@ -1,246 +0,0 @@ -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 listVersions(String path) { - if (!versioning) - throw new ArgeoException("Versioning is not activated"); - - try { - List versions = new ArrayList(); - 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; - } -} diff --git a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/mvc/JcrBrowserController.java b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/mvc/JcrBrowserController.java index cddc8b01e..849fff1ed 100644 --- a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/mvc/JcrBrowserController.java +++ b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/mvc/JcrBrowserController.java @@ -3,7 +3,6 @@ package org.argeo.server.jcr.mvc; import java.util.ArrayList; import java.util.Arrays; import java.util.List; -import java.util.Map; import javax.jcr.Item; import javax.jcr.NodeIterator; diff --git a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/mvc/JcrManagerController.java b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/mvc/JcrManagerController.java index 37fca841c..7edd5378b 100644 --- a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/mvc/JcrManagerController.java +++ b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/server/jcr/mvc/JcrManagerController.java @@ -12,8 +12,8 @@ import org.apache.commons.fileupload.disk.DiskFileItemFactory; 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; diff --git a/server/runtime/org.argeo.server.jcr/src/test/java/org/argeo/server/jcr/JcrResourceAdapterTest.java b/server/runtime/org.argeo.server.jcr/src/test/java/org/argeo/server/jcr/JcrResourceAdapterTest.java index 1588fd7e0..65063e040 100644 --- a/server/runtime/org.argeo.server.jcr/src/test/java/org/argeo/server/jcr/JcrResourceAdapterTest.java +++ b/server/runtime/org.argeo.server.jcr/src/test/java/org/argeo/server/jcr/JcrResourceAdapterTest.java @@ -6,9 +6,12 @@ import java.text.SimpleDateFormat; 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; @@ -74,16 +77,8 @@ public class JcrResourceAdapterTest extends AbstractJcrTestCase { 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 {