Configure locarepo
authorMathieu Baudier <mbaudier@argeo.org>
Thu, 24 Feb 2011 13:02:18 +0000 (13:02 +0000)
committerMathieu Baudier <mbaudier@argeo.org>
Thu, 24 Feb 2011 13:02:18 +0000 (13:02 +0000)
git-svn-id: https://svn.argeo.org/commons/trunk@4186 4cfe0d0a-d680-48aa-b62c-e0a02a3f76cc

server/modules/org.argeo.jackrabbit.localrepo/META-INF/MANIFEST.MF
server/modules/org.argeo.jackrabbit.localrepo/META-INF/spring/jackrabbit-osgi.xml [deleted file]
server/modules/org.argeo.jackrabbit.localrepo/META-INF/spring/jackrabbit.xml [deleted file]
server/modules/org.argeo.jackrabbit.localrepo/META-INF/spring/localrepo-osgi.xml [new file with mode: 0644]
server/modules/org.argeo.jackrabbit.localrepo/META-INF/spring/localrepo.xml [new file with mode: 0644]
server/modules/org.argeo.jackrabbit.localrepo/localrepo.properties
server/modules/org.argeo.jackrabbit.localrepo/repository-h2.xml
server/modules/org.argeo.jackrabbit.localrepo/repository-postgresql.xml
server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/ArgeoJcrConstants.java [new file with mode: 0644]
server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/DefaultRepositoryRegister.java
server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/RepositoryRegister.java

index 9e035e21b51adcf2a1fe1ad01a3fb8a8a6cbc4ac..25fedeac48c3da1c49d2f5abbe5c8bf58ae3765b 100644 (file)
@@ -3,10 +3,13 @@ Bundle-ManifestVersion: 2
 Bundle-Name: Jackrabbit Local Repository
 Bundle-SymbolicName: org.argeo.jackrabbit.localrepo
 Bundle-Version: 0.2.3.SNAPSHOT
-Import-Package: javax.jcr,
org.apache.jackrabbit.core,
- org.apache.jackrabbit.core.config,
- org.apache.lucene.util;version="2.4.1",
+Import-Package: com.mysql.jdbc;version="[5.0.0,6.0.0)";resolution:=optional,
javax.jcr;version="[2.0.0,3.0.0)",
+ org.apache.jackrabbit.core;version="[2.0.0,3.0.0)",
+ org.apache.jackrabbit.core.config;version="[2.0.0,3.0.0)",
  org.apache.xalan.processor,
  org.argeo.jackrabbit,
+ org.argeo.jcr,
+ 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
diff --git a/server/modules/org.argeo.jackrabbit.localrepo/META-INF/spring/jackrabbit-osgi.xml b/server/modules/org.argeo.jackrabbit.localrepo/META-INF/spring/jackrabbit-osgi.xml
deleted file mode 100644 (file)
index 7a3c71a..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>\r
-<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
-       xsi:schemaLocation="http://www.springframework.org/schema/osgi  \r
-       http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
-       http://www.springframework.org/schema/beans   \r
-       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">\r
-\r
-       <service ref="remoteJcrRepository" interface="javax.jcr.Repository">\r
-               <service-properties>\r
-                       <beans:entry key="argeo.jcr.repository.name" value="local" />\r
-               </service-properties>\r
-       </service>\r
-\r
-\r
-</beans:beans>
\ No newline at end of file
diff --git a/server/modules/org.argeo.jackrabbit.localrepo/META-INF/spring/jackrabbit.xml b/server/modules/org.argeo.jackrabbit.localrepo/META-INF/spring/jackrabbit.xml
deleted file mode 100644 (file)
index 0ac070e..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"
-       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
-
-       <bean
-               class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
-               <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
-               <property name="ignoreUnresolvablePlaceholders" value="true" />
-               <property name="locations">
-                       <value>osgibundle:jackrabbit.properties</value>
-               </property>
-       </bean>
-
-       <bean id="localJcrRepository" class="org.argeo.jackrabbit.JackrabbitContainer">
-               <property name="uri"
-                       value="http://localhost:7070/org.argeo.server.jcr.webapp/remoting/repo" />
-               <property name="homeDirectory" value="${slc.jackrabbit.home}" />
-               <property name="configuration" value="${slc.jackrabbit.configuration}" />
-               <property name="variables" value="osgibundle:/jackrabbit.properties" />
-               <property name="namespaces">
-                       <map>
-                               <entry key="argeo" value="http://www.argeo.org/argeo" />
-                       </map>
-               </property>
-               <property name="cndFiles">
-                       <list>
-                               <value>classpath:/org/argeo/jcr/argeo.cnd</value>
-                       </list>
-               </property>
-       </bean>
-</beans>
\ No newline at end of file
diff --git a/server/modules/org.argeo.jackrabbit.localrepo/META-INF/spring/localrepo-osgi.xml b/server/modules/org.argeo.jackrabbit.localrepo/META-INF/spring/localrepo-osgi.xml
new file mode 100644 (file)
index 0000000..aa1f1e0
--- /dev/null
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>\r
+<beans:beans xmlns="http://www.springframework.org/schema/osgi"\r
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:beans="http://www.springframework.org/schema/beans"\r
+       xmlns:util="http://www.springframework.org/schema/util"\r
+       xsi:schemaLocation="http://www.springframework.org/schema/osgi  \r
+       http://www.springframework.org/schema/osgi/spring-osgi-1.1.xsd\r
+       http://www.springframework.org/schema/beans   \r
+       http://www.springframework.org/schema/beans/spring-beans-2.5.xsd\r
+       http://www.springframework.org/schema/util\r
+       http://www.springframework.org/schema/util/spring-util-2.5.xsd">\r
+\r
+       <service ref="localJcrRepository" interface="javax.jcr.Repository">\r
+               <service-properties>\r
+                       <beans:entry value="local">\r
+                               <beans:key>\r
+                                       <util:constant\r
+                                               static-field="org.argeo.jcr.ArgeoJcrConstants.JCR_REPOSITORY_ALIAS" />\r
+                               </beans:key>\r
+                       </beans:entry>\r
+               </service-properties>\r
+       </service>\r
+\r
+\r
+</beans:beans>
\ No newline at end of file
diff --git a/server/modules/org.argeo.jackrabbit.localrepo/META-INF/spring/localrepo.xml b/server/modules/org.argeo.jackrabbit.localrepo/META-INF/spring/localrepo.xml
new file mode 100644 (file)
index 0000000..431482e
--- /dev/null
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<beans xmlns="http://www.springframework.org/schema/beans"
+       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd">
+
+       <bean
+               class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
+               <property name="systemPropertiesModeName" value="SYSTEM_PROPERTIES_MODE_OVERRIDE" />
+               <property name="locations">
+                       <value>osgibundle:localrepo.properties</value>
+               </property>
+       </bean>
+
+       <bean id="localJcrRepository" class="org.argeo.jackrabbit.JackrabbitContainer">
+               <property name="uri" value="${argeo.localrepo.uri}" />
+               <property name="homeDirectory" value="${argeo.localrepo.home}" />
+               <property name="configuration" value="${argeo.localrepo.configuration}" />
+               <property name="variables" value="osgibundle:/localrepo.properties" />
+               <property name="namespaces">
+                       <map>
+                               <entry key="argeo" value="http://www.argeo.org/argeo" />
+                       </map>
+               </property>
+               <property name="cndFiles">
+                       <list>
+                               <value>classpath:/org/argeo/jcr/argeo.cnd</value>
+                       </list>
+               </property>
+       </bean>
+</beans>
\ No newline at end of file
index c046ca46d195adcb153ac354d370166262413155..e582e60c09220e682a0be0de7256f25743aac2a4 100644 (file)
@@ -1 +1,14 @@
-argeo.localrepo.configuration=osgibundle:repository.xml
\ No newline at end of file
+argeo.localrepo.home=${user.home}/.argeo/localrepo
+
+## H2 Embedded (DEFAULT)
+argeo.localrepo.configuration=osgibundle:repository-h2.xml
+argeo.localrepo.dburl=jdbc:h2:file:${rep.home}/h2/localrepo_db
+argeo.localrepo.dbuser=sa
+argeo.localrepo.dbpassword=
+
+## Remote
+# Remote repository URI (overrides other configurations if not empty)
+argeo.localrepo.uri=
+
+# ADVANCED
+argeo.localrepo.maxPoolSize=10
\ No newline at end of file
index 7b1d3bf24ece42599b06c6f1bb675d7cd95e34fa..e6e8ac5fa72b3c2125cae7d655581c56776488e2 100644 (file)
@@ -2,63 +2,80 @@
 <!DOCTYPE Repository PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 1.6//EN"
                             "http://jackrabbit.apache.org/dtd/repository-2.0.dtd">
 <Repository>
-       <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
-               <param name="path" value="${rep.home}/repository" />
-       </FileSystem>
+       <!-- Shared datasource -->
+       <DataSources>
+               <DataSource name="dataSource">
+                       <param name="driver" value="org.h2.Driver" />
+                       <param name="url" value="${argeo.localrepo.dburl}" />
+                       <param name="user" value="${argeo.localrepo.dbuser}" />
+                       <param name="password" value="${argeo.localrepo.dbpassword}" />
+                       <param name="databaseType" value="h2" />
+                       <param name="maxPoolSize" value="${argeo.localrepo.maxPoolSize}" />
+               </DataSource>
+       </DataSources>
 
-       <Security appName="Jackrabbit">
-               <SecurityManager
-                       class="org.apache.jackrabbit.core.security.simple.SimpleSecurityManager"
-                       workspaceName="security">
-               </SecurityManager>
-               <AccessManager
-                       class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager">
-                       <!-- <param name="config" value="${rep.home}/access.xml"/> -->
-               </AccessManager>
-
-               <LoginModule
-                       class="org.springframework.security.providers.jaas.SecurityContextLoginModule">
-               </LoginModule>
-<!--           <LoginModule-->
-<!--                   class="org.apache.jackrabbit.core.security.simple.SimpleLoginModule">-->
-<!--                   <param name="anonymousId" value="anonymous" />-->
-<!--                   <param name="adminId" value="admin" />-->
-<!--           </LoginModule>-->
-       </Security>
+       <!-- File system and datastore -->
+       <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
+               <param name="dataSourceName" value="dataSource" />
+               <param name="schema" value="default" />
+               <param name="schemaObjectPrefix" value="fs_" />
+       </FileSystem>
+       <DataStore class="org.apache.jackrabbit.core.data.db.DbDataStore">
+               <param name="dataSourceName" value="dataSource" />
+               <param name="schemaObjectPrefix" value="ds_" />
+       </DataStore>
 
+       <!-- Workspace templates -->
        <Workspaces rootPath="${rep.home}/workspaces"
-               defaultWorkspace="default" />
-
+               defaultWorkspace="prod" />
        <Workspace name="${wsp.name}">
-               <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
-                       <param name="path" value="${wsp.home}" />
+               <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
+                       <param name="dataSourceName" value="dataSource" />
+                       <param name="schema" value="default" />
+                       <param name="schemaObjectPrefix" value="${wsp.name}_fs_" />
                </FileSystem>
                <PersistenceManager
                        class="org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager">
-                       <param name="url" value="jdbc:h2:file:${rep.home}/h2/sebi_db" />
-                       <param name="schemaObjectPrefix" value="${wsp.name}_" />
+                       <param name="dataSourceName" value="dataSource" />
+                       <param name="schemaObjectPrefix" value="${wsp.name}_pm_" />
                </PersistenceManager>
                <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
                        <param name="path" value="${wsp.home}/index" />
-                       <param name="extractorPoolSize" value="2" />
-                       <param name="supportHighlighting" value="true" />
                </SearchIndex>
        </Workspace>
 
+       <!-- Versioning -->
        <Versioning rootPath="${rep.home}/version">
-               <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem">
-                       <param name="path" value="${rep.home}/version" />
+               <FileSystem class="org.apache.jackrabbit.core.fs.db.DbFileSystem">
+                       <param name="dataSourceName" value="dataSource" />
+                       <param name="schema" value="default" />
+                       <param name="schemaObjectPrefix" value="fs_ver_" />
                </FileSystem>
                <PersistenceManager
                        class="org.apache.jackrabbit.core.persistence.pool.H2PersistenceManager">
-                       <param name="url" value="jdbc:h2:file:${rep.home}/h2/sebi_version" />
-                       <param name="schemaObjectPrefix" value="version_" />
+                       <param name="dataSourceName" value="dataSource" />
+                       <param name="schemaObjectPrefix" value="pm_ver_" />
                </PersistenceManager>
        </Versioning>
 
+       <!-- Indexing -->
        <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex">
                <param name="path" value="${rep.home}/repository/index" />
                <param name="extractorPoolSize" value="2" />
                <param name="supportHighlighting" value="true" />
        </SearchIndex>
-</Repository>
+
+       <!-- Security -->
+       <Security appName="Jackrabbit">
+               <SecurityManager
+                       class="org.apache.jackrabbit.core.security.simple.SimpleSecurityManager"
+                       workspaceName="security">
+               </SecurityManager>
+               <AccessManager
+                       class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager">
+               </AccessManager>
+               <LoginModule
+                       class="org.springframework.security.providers.jaas.SecurityContextLoginModule">
+               </LoginModule>
+       </Security>
+</Repository>
\ No newline at end of file
index 9f95adf5ea99b935037ba2f9cef288cf3d3124b2..51ddfc503512ffe03ee1f245e20a8091a511c303 100644 (file)
@@ -6,11 +6,11 @@
        <DataSources>
                <DataSource name="dataSource">
                        <param name="driver" value="org.postgresql.Driver" />
-                       <param name="url" value="${slc.jackrabbit.dburl}" />
-                       <param name="user" value="${slc.jackrabbit.dbuser}" />
-                       <param name="password" value="${slc.jackrabbit.dbpassword}" />
+                       <param name="url" value="${argeo.localrepo.dburl}" />
+                       <param name="user" value="${argeo.localrepo.dbuser}" />
+                       <param name="password" value="${argeo.localrepo.dbpassword}" />
                        <param name="databaseType" value="postgresql" />
-                       <param name="maxPoolSize" value="10" />
+                       <param name="maxPoolSize" value="${argeo.localrepo.maxPoolSize}" />
                </DataSource>
        </DataSources>
 
                <AccessManager
                        class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager">
                </AccessManager>
-<!--            <LoginModule -->
-<!--            class="org.springframework.security.providers.jaas.SecurityContextLoginModule"> -->
-<!--            </LoginModule> -->
                <LoginModule
-                       class="org.apache.jackrabbit.core.security.simple.SimpleLoginModule">
-                       <param name="anonymousId" value="anonymous" />
-                       <param name="adminId" value="admin" />
+                       class="org.springframework.security.providers.jaas.SecurityContextLoginModule">
                </LoginModule>
        </Security>
 </Repository>
\ No newline at end of file
diff --git a/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/ArgeoJcrConstants.java b/server/runtime/org.argeo.server.jcr/src/main/java/org/argeo/jcr/ArgeoJcrConstants.java
new file mode 100644 (file)
index 0000000..1202268
--- /dev/null
@@ -0,0 +1,8 @@
+package org.argeo.jcr;
+
+/** JCR related constants*/
+public interface ArgeoJcrConstants {
+
+       public final static String JCR_REPOSITORY_ALIAS = "argeo.jcr.repository.alias";
+
+}
index fc2fb529dc1fd854c1ba282af5d4a065421fcedb..a39ab8751af77e6bfb819b2dfccbfb4ea4f498f9 100644 (file)
@@ -1,10 +1,8 @@
 package org.argeo.jcr;
 
 import java.util.Collections;
-import java.util.HashMap;
 import java.util.Map;
 import java.util.Observable;
-import java.util.SortedMap;
 import java.util.TreeMap;
 
 import javax.jcr.Repository;
@@ -25,15 +23,15 @@ public class DefaultRepositoryRegister extends Observable implements
        @SuppressWarnings("rawtypes")
        public synchronized Repository getRepository(Map parameters)
                        throws RepositoryException {
-               if (!parameters.containsKey(JCR_REPOSITORY_NAME))
-                       throw new RepositoryException("Parameter " + JCR_REPOSITORY_NAME
+               if (!parameters.containsKey(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS))
+                       throw new RepositoryException("Parameter " + ArgeoJcrConstants.JCR_REPOSITORY_ALIAS
                                        + " has to be defined.");
-               String name = parameters.get(JCR_REPOSITORY_NAME).toString();
-               if (!repositories.containsKey(name))
-                       throw new RepositoryException("No repository registered with name "
-                                       + name);
+               String alias = parameters.get(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS).toString();
+               if (!repositories.containsKey(alias))
+                       throw new RepositoryException(
+                                       "No repository registered with alias " + alias);
 
-               return repositories.get(name);
+               return repositories.get(alias);
        }
 
        /** Access to the read-only map */
@@ -45,37 +43,37 @@ public class DefaultRepositoryRegister extends Observable implements
        @SuppressWarnings("rawtypes")
        public synchronized void register(Repository repository, Map properties) {
                // TODO: also check bean name?
-               if (properties == null || !properties.containsKey(JCR_REPOSITORY_NAME)) {
+               if (properties == null || !properties.containsKey(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS)) {
                        log.warn("Cannot register a repository without property "
-                                       + JCR_REPOSITORY_NAME);
+                                       + ArgeoJcrConstants.JCR_REPOSITORY_ALIAS);
                        return;
                }
 
-               String name = properties.get(JCR_REPOSITORY_NAME).toString();
+               String alias = properties.get(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS).toString();
                Map<String, Repository> map = new TreeMap<String, Repository>(
                                repositories);
-               map.put(name, repository);
+               map.put(alias, repository);
                repositories = Collections.unmodifiableMap(map);
                setChanged();
-               notifyObservers(repository);
+               notifyObservers(alias);
        }
 
        /** Unregisters a service, typically called when OSGi services are unbound. */
        @SuppressWarnings("rawtypes")
        public synchronized void unregister(Repository repository, Map properties) {
                // TODO: also check bean name?
-               if (properties == null || !properties.containsKey(JCR_REPOSITORY_NAME)) {
+               if (properties == null || !properties.containsKey(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS)) {
                        log.warn("Cannot unregister a repository without property "
-                                       + JCR_REPOSITORY_NAME);
+                                       + ArgeoJcrConstants.JCR_REPOSITORY_ALIAS);
                        return;
                }
 
-               String name = properties.get(JCR_REPOSITORY_NAME).toString();
+               String alias = properties.get(ArgeoJcrConstants.JCR_REPOSITORY_ALIAS).toString();
                Map<String, Repository> map = new TreeMap<String, Repository>(
                                repositories);
-               map.put(name, repository);
+               map.put(alias, repository);
                repositories = Collections.unmodifiableMap(map);
                setChanged();
-               notifyObservers(repository);
+               notifyObservers(alias);
        }
 }
index 8f6e17ba60b9defb3263777a3e5de661b90194f3..9bada021ef83def0fb43fb6ba998c791dfaf4386 100644 (file)
@@ -7,8 +7,6 @@ import javax.jcr.RepositoryFactory;
 
 /** Allows to register repositories by name. */
 public interface RepositoryRegister extends RepositoryFactory {
-       public final static String JCR_REPOSITORY_NAME = "argeo.jcr.repository.name";
-
        /**
         * The registered {@link Repository} as a read-only map. Note that this
         * method should be called for each access in order to be sure to be up to