From 231507d4e7c8aa9676fd65bcd13d4558f78ff86f Mon Sep 17 00:00:00 2001 From: Mathieu Baudier Date: Sat, 25 Jun 2011 08:28:43 +0000 Subject: [PATCH] Fix issues with Jackrabbit git-svn-id: https://svn.argeo.org/commons/trunk@4601 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc --- .../META-INF/MANIFEST.MF | 4 +- .../META-INF/spring/noderepo-osgi.xml | 3 +- .../META-INF/spring/noderepo.xml | 11 +++++- .../argeo/jackrabbit/JackrabbitContainer.java | 39 +++++++++++++------ 4 files changed, 41 insertions(+), 16 deletions(-) diff --git a/server/modules/org.argeo.node.repo.jackrabbit/META-INF/MANIFEST.MF b/server/modules/org.argeo.node.repo.jackrabbit/META-INF/MANIFEST.MF index de0b81627..96ba75f7c 100644 --- a/server/modules/org.argeo.node.repo.jackrabbit/META-INF/MANIFEST.MF +++ b/server/modules/org.argeo.node.repo.jackrabbit/META-INF/MANIFEST.MF @@ -12,6 +12,8 @@ Import-Package: com.mysql.jdbc;version="[5.0.0,6.0.0)";resolution:=optional, org.argeo.jackrabbit, org.argeo.jcr, org.argeo.security, + org.argeo.security.core, org.h2;version="[1.0.0,2.0.0)";resolution:=optional, org.postgresql;version="[8.0.0,9.0.0)";resolution:=optional, - org.springframework.beans.factory.config + org.springframework.beans.factory.config, + org.springframework.security;version="2.0.6.RELEASE" diff --git a/server/modules/org.argeo.node.repo.jackrabbit/META-INF/spring/noderepo-osgi.xml b/server/modules/org.argeo.node.repo.jackrabbit/META-INF/spring/noderepo-osgi.xml index cc38a3451..f6e210b7c 100644 --- a/server/modules/org.argeo.node.repo.jackrabbit/META-INF/spring/noderepo-osgi.xml +++ b/server/modules/org.argeo.node.repo.jackrabbit/META-INF/spring/noderepo-osgi.xml @@ -10,7 +10,8 @@ http://www.springframework.org/schema/util/spring-util-2.5.xsd"> - + diff --git a/server/modules/org.argeo.node.repo.jackrabbit/META-INF/spring/noderepo.xml b/server/modules/org.argeo.node.repo.jackrabbit/META-INF/spring/noderepo.xml index ec8bfca74..02d697b24 100644 --- a/server/modules/org.argeo.node.repo.jackrabbit/META-INF/spring/noderepo.xml +++ b/server/modules/org.argeo.node.repo.jackrabbit/META-INF/spring/noderepo.xml @@ -11,7 +11,8 @@ - + @@ -26,6 +27,12 @@ classpath:/org/argeo/jcr/argeo.cnd - + + + + + + \ No newline at end of file diff --git a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitContainer.java b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitContainer.java index c897b6bea..d9cf424e6 100644 --- a/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitContainer.java +++ b/server/runtime/org.argeo.server.jackrabbit/src/main/java/org/argeo/jackrabbit/JackrabbitContainer.java @@ -171,6 +171,10 @@ public class JackrabbitContainer implements Repository, ResourceLoaderAware { /** Executes migrations, if needed. */ protected void migrate() { + // No migration to perform + if (dataModelMigrations.size() == 0) + return; + Boolean restartAndClearCaches = false; // migrate data @@ -365,15 +369,15 @@ public class JackrabbitContainer implements Repository, ResourceLoaderAware { // JCR REPOSITORY (delegated) public String getDescriptor(String key) { - return repository.getDescriptor(key); + return getRepository().getDescriptor(key); } public String[] getDescriptorKeys() { - return repository.getDescriptorKeys(); + return getRepository().getDescriptorKeys(); } public Session login() throws LoginException, RepositoryException { - Session session = repository.login(); + Session session = getRepository().login(); processNewSession(session); return session; } @@ -383,7 +387,7 @@ public class JackrabbitContainer implements Repository, ResourceLoaderAware { RepositoryException { Session session; try { - session = repository.login(credentials, workspaceName); + session = getRepository().login(credentials, workspaceName); } catch (NoSuchWorkspaceException e) { if (autocreateWorkspaces) session = createWorkspaceAndLogsIn(credentials, workspaceName); @@ -396,7 +400,7 @@ public class JackrabbitContainer implements Repository, ResourceLoaderAware { public Session login(Credentials credentials) throws LoginException, RepositoryException { - Session session = repository.login(credentials); + Session session = getRepository().login(credentials); processNewSession(session); return session; } @@ -405,7 +409,7 @@ public class JackrabbitContainer implements Repository, ResourceLoaderAware { NoSuchWorkspaceException, RepositoryException { Session session; try { - session = repository.login(workspaceName); + session = getRepository().login(workspaceName); } catch (NoSuchWorkspaceException e) { if (autocreateWorkspaces) session = createWorkspaceAndLogsIn(null, workspaceName); @@ -416,6 +420,17 @@ public class JackrabbitContainer implements Repository, ResourceLoaderAware { return session; } + /** Wraps access to the repository, making sure it is available. */ + protected Repository getRepository() { + if (repository == null) { + throw new ArgeoException( + "No repository initialized." + + " Was the init() method called?" + + " The dispose() method should also be called on shutdown."); + } + return repository; + } + protected synchronized void processNewSession(Session session) { try { NamespaceHelper namespaceHelper = new NamespaceHelper(session); @@ -433,10 +448,10 @@ public class JackrabbitContainer implements Repository, ResourceLoaderAware { String workspaceName) throws RepositoryException { if (workspaceName == null) throw new ArgeoException("No workspace specified."); - Session session = repository.login(credentials); + Session session = getRepository().login(credentials); session.getWorkspace().createWorkspace(workspaceName); session.logout(); - return repository.login(credentials, workspaceName); + return getRepository().login(credentials, workspaceName); } public void setResourceLoader(ResourceLoader resourceLoader) { @@ -444,19 +459,19 @@ public class JackrabbitContainer implements Repository, ResourceLoaderAware { } public boolean isStandardDescriptor(String key) { - return repository.isStandardDescriptor(key); + return getRepository().isStandardDescriptor(key); } public boolean isSingleValueDescriptor(String key) { - return repository.isSingleValueDescriptor(key); + return getRepository().isSingleValueDescriptor(key); } public Value getDescriptorValue(String key) { - return repository.getDescriptorValue(key); + return getRepository().getDescriptorValue(key); } public Value[] getDescriptorValues(String key) { - return repository.getDescriptorValues(key); + return getRepository().getDescriptorValues(key); } // BEANS METHODS -- 2.30.2