Author: sascharodekamp
Date: Mon Mar 7 10:50:31 2011 New Revision: 1078740 URL: http://svn.apache.org/viewvc?rev=1078740&view=rev Log: Update - Readd the 'jcr' folder, because of the faild commit @Rev1078930 Here is the orig msg.: Update - Moved the Jackrabbit implementation to a more common folder called "jcr" (JavaContentRepository), updated the Jackrabbit Lib to version 2.2.4 and fixed the build process, there was a reference to the framework/lib folder missing. Added: ofbiz/branches/jackrabbit20100709/framework/jcr/ ofbiz/branches/jackrabbit20100709/framework/jcr/build.xml ofbiz/branches/jackrabbit20100709/framework/jcr/config/ ofbiz/branches/jackrabbit20100709/framework/jcr/config/jackrabbit.xml ofbiz/branches/jackrabbit20100709/framework/jcr/config/jcr-repositories.xml ofbiz/branches/jackrabbit20100709/framework/jcr/lib/ ofbiz/branches/jackrabbit20100709/framework/jcr/lib/concurrent-1.3.4.jar (with props) ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-api-2.2.4.jar (with props) ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-core-2.2.4.jar (with props) ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-jca-2.2.4.jar (with props) ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-jcr-commons-2.2.4.jar (with props) ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-spi-2.2.4.jar (with props) ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-spi-commons-2.2.4.jar (with props) ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jcr-2.0.jar (with props) ofbiz/branches/jackrabbit20100709/framework/jcr/lib/pdfbox-1.3.1.jar (with props) ofbiz/branches/jackrabbit20100709/framework/jcr/lib/slf4j-api-1.5.8.jar (with props) ofbiz/branches/jackrabbit20100709/framework/jcr/lib/slf4j-log4j12-1.5.8.jar (with props) ofbiz/branches/jackrabbit20100709/framework/jcr/lib/tika-core-0.8.jar (with props) ofbiz/branches/jackrabbit20100709/framework/jcr/lib/tika-parsers-0.8.jar (with props) ofbiz/branches/jackrabbit20100709/framework/jcr/ofbiz-component.xml ofbiz/branches/jackrabbit20100709/framework/jcr/src/ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/JackrabbitContainer.java ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/JcrRepositoryFactory.java ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/LocalRepositoryFactory.java ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/OFBizLoginModule.java ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/RepositoryFactory.java Modified: ofbiz/branches/jackrabbit20100709/framework/build.xml ofbiz/branches/jackrabbit20100709/framework/component-load.xml Modified: ofbiz/branches/jackrabbit20100709/framework/build.xml URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/build.xml?rev=1078740&r1=1078739&r2=1078740&view=diff ============================================================================== --- ofbiz/branches/jackrabbit20100709/framework/build.xml (original) +++ ofbiz/branches/jackrabbit20100709/framework/build.xml Mon Mar 7 10:50:31 2011 @@ -25,7 +25,7 @@ under the License. files="start/build.xml,base/build.xml,sql/build.xml, entity/build.xml,geronimo/build.xml, catalina/build.xml,jetty/build.xml, - security/build.xml,service/build.xml,jackrabbit/build.xml,entityext/build.xml, + security/build.xml,service/build.xml,jcr/build.xml,entityext/build.xml, webslinger/build.xml, bi/build.xml,minilang/build.xml, webapp/build.xml,guiapp/build.xml,widget/build.xml, Modified: ofbiz/branches/jackrabbit20100709/framework/component-load.xml URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/component-load.xml?rev=1078740&r1=1078739&r2=1078740&view=diff ============================================================================== --- ofbiz/branches/jackrabbit20100709/framework/component-load.xml (original) +++ ofbiz/branches/jackrabbit20100709/framework/component-load.xml Mon Mar 7 10:50:31 2011 @@ -31,7 +31,7 @@ under the License. <load-component component-location="common"/> <load-component component-location="service"/> <load-component component-location="entityext"/> - <load-component component-location="jackrabbit"/> + <load-component component-location="jcr"/> <load-component component-location="bi"/> <load-component component-location="birt"/> <load-component component-location="webapp"/> Added: ofbiz/branches/jackrabbit20100709/framework/jcr/build.xml URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/build.xml?rev=1078740&view=auto ============================================================================== --- ofbiz/branches/jackrabbit20100709/framework/jcr/build.xml (added) +++ ofbiz/branches/jackrabbit20100709/framework/jcr/build.xml Mon Mar 7 10:50:31 2011 @@ -0,0 +1,46 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +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. +--> + +<project name="OFBiz - JCR" default="jar" basedir="."> + <import file="../../common.xml"/> + + <!-- ================================================================== --> + <!-- Initialization of all property settings --> + <!-- ================================================================== --> + + <property name="desc" value="JCR Component"/> + <property name="name" value="ofbiz-jcr"/> + <property name="ofbiz.home.dir" value="../.."/> + + <path id="local.class.path"> + <fileset dir="${lib.dir}" includes="*.jar"/> + <fileset dir="../../framework/base/lib" includes="*.jar"/> + <fileset dir="../../framework/base/lib/commons" includes="*.jar"/> + <fileset dir="../../framework/base/build/lib" includes="*.jar"/> + <fileset dir="../../framework/entity/build/lib" includes="*.jar"/> + <fileset dir="../../framework/service/build/lib" includes="*.jar"/> + + </path> + + <target name="jar" depends="classes"> + <main-jar/> + <test-jar/> + </target> +</project> Added: ofbiz/branches/jackrabbit20100709/framework/jcr/config/jackrabbit.xml URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/config/jackrabbit.xml?rev=1078740&view=auto ============================================================================== --- ofbiz/branches/jackrabbit20100709/framework/jcr/config/jackrabbit.xml (added) +++ ofbiz/branches/jackrabbit20100709/framework/jcr/config/jackrabbit.xml Mon Mar 7 10:50:31 2011 @@ -0,0 +1,136 @@ +<?xml version="1.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. +--> + +<!DOCTYPE Repository + PUBLIC "-//The Apache Software Foundation//DTD Jackrabbit 2.0//EN" + "http://jackrabbit.apache.org/dtd/repository-2.0.dtd"> + +<!-- Example Repository Configuration File + Used by + - org.apache.jackrabbit.core.config.RepositoryConfigTest.java + - +--> +<Repository> + <!-- + virtual file system where the repository stores global state + (e.g. registered namespaces, custom node types, etc.) + --> + <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> + <param name="path" value="${rep.home}/repository"/> + </FileSystem> + + <!-- + data store configuration + --> + <DataStore class="org.apache.jackrabbit.core.data.FileDataStore"/> + + <!-- + security configuration + --> + <Security appName="Jackrabbit"> + <!-- + security manager: + class: FQN of class implementing the JackrabbitSecurityManager interface + --> + <SecurityManager class="org.apache.jackrabbit.core.security.simple.SimpleSecurityManager" workspaceName="security"> + <!-- + workspace access: + class: FQN of class implementing the WorkspaceAccessManager interface + --> + <!-- <WorkspaceAccessManager class="..."/> --> + <!-- <param name="config" value="${rep.home}/security.xml"/> --> + </SecurityManager> + + <!-- + access manager: + class: FQN of class implementing the AccessManager interface + --> + <AccessManager class="org.apache.jackrabbit.core.security.simple.SimpleAccessManager"> + <!-- <param name="config" value="${rep.home}/access.xml"/> --> + </AccessManager> + + <LoginModule class="org.ofbiz.jackrabbit.OFBizLoginModule"/> + </Security> + + <!-- + location of workspaces root directory and name of default workspace + --> + <Workspaces rootPath="${rep.home}/workspaces" defaultWorkspace="default"/> + <!-- + workspace configuration template: + used to create the initial workspace if there's no workspace yet + --> + <Workspace name="${wsp.name}"> + <!-- + virtual file system of the workspace: + class: FQN of class implementing the FileSystem interface + --> + <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> + <param name="path" value="${wsp.home}"/> + </FileSystem> + <!-- + persistence manager of the workspace: + class: FQN of class implementing the PersistenceManager interface + --> + <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.DerbyPersistenceManager"> + <param name="url" value="jdbc:derby:${wsp.home}/db;create=true"/> + <param name="schemaObjectPrefix" value="${wsp.name}_"/> + </PersistenceManager> + <!-- + Search index and the file system it uses. + class: FQN of class implementing the QueryHandler interface + --> + <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex"> + <param name="path" value="${wsp.home}/index"/> + <param name="supportHighlighting" value="true"/> + </SearchIndex> + </Workspace> + + <!-- + Configures the versioning + --> + <Versioning rootPath="${rep.home}/version"> + <!-- + Configures the filesystem to use for versioning for the respective + persistence manager + --> + <FileSystem class="org.apache.jackrabbit.core.fs.local.LocalFileSystem"> + <param name="path" value="${rep.home}/version" /> + </FileSystem> + + <!-- + Configures the persistence manager to be used for persisting version state. + Please note that the current versioning implementation is based on + a 'normal' persistence manager, but this could change in future + implementations. + --> + <PersistenceManager class="org.apache.jackrabbit.core.persistence.pool.DerbyPersistenceManager"> + <param name="url" value="jdbc:derby:${rep.home}/version/db;create=true"/> + <param name="schemaObjectPrefix" value="version_"/> + </PersistenceManager> + </Versioning> + + <!-- + Search index for content that is shared repository wide + (/jcr:system tree, contains mainly versions) + --> + <SearchIndex class="org.apache.jackrabbit.core.query.lucene.SearchIndex"> + <param name="path" value="${rep.home}/repository/index"/> + <param name="supportHighlighting" value="true"/> + </SearchIndex> +</Repository> \ No newline at end of file Added: ofbiz/branches/jackrabbit20100709/framework/jcr/config/jcr-repositories.xml URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/config/jcr-repositories.xml?rev=1078740&view=auto ============================================================================== --- ofbiz/branches/jackrabbit20100709/framework/jcr/config/jcr-repositories.xml (added) +++ ofbiz/branches/jackrabbit20100709/framework/jcr/config/jcr-repositories.xml Mon Mar 7 10:50:31 2011 @@ -0,0 +1,41 @@ +<?xml version="1.0" encoding="UTF-8" ?> +<!-- +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. +--> + +<!-- Any number of JCR repositories can be configured in this file, + and this file can be located anywhere in the Java classpath. + + Each repository must have a unique name, and there must + be one repository named "default" - which is used when + no repository name is specified. + --> + +<jcr-repositories xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> + + <!-- A JCR Repository located using JNDI --> + <repository name="default" jndi-name="jcr/local"/> + + <!-- A JCR Repository created from a factory. The + class-name attribute contains the name of a class that + implements JcrRepositoryFactory. The name attribute is + passed to the factory's getInstance method. --> + <!-- + <repository name="foo" class-name="com.mydomain.fooRepoFactory"/> + --> +</jcr-repositories> Added: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/concurrent-1.3.4.jar URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/lib/concurrent-1.3.4.jar?rev=1078740&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/concurrent-1.3.4.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-api-2.2.4.jar URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-api-2.2.4.jar?rev=1078740&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-api-2.2.4.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-core-2.2.4.jar URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-core-2.2.4.jar?rev=1078740&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-core-2.2.4.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-jca-2.2.4.jar URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-jca-2.2.4.jar?rev=1078740&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-jca-2.2.4.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-jcr-commons-2.2.4.jar URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-jcr-commons-2.2.4.jar?rev=1078740&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-jcr-commons-2.2.4.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-spi-2.2.4.jar URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-spi-2.2.4.jar?rev=1078740&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-spi-2.2.4.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-spi-commons-2.2.4.jar URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-spi-commons-2.2.4.jar?rev=1078740&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jackrabbit-spi-commons-2.2.4.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jcr-2.0.jar URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jcr-2.0.jar?rev=1078740&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/jcr-2.0.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/pdfbox-1.3.1.jar URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/lib/pdfbox-1.3.1.jar?rev=1078740&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/pdfbox-1.3.1.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/slf4j-api-1.5.8.jar URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/lib/slf4j-api-1.5.8.jar?rev=1078740&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/slf4j-api-1.5.8.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/slf4j-log4j12-1.5.8.jar URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/lib/slf4j-log4j12-1.5.8.jar?rev=1078740&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/slf4j-log4j12-1.5.8.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/tika-core-0.8.jar URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/lib/tika-core-0.8.jar?rev=1078740&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/tika-core-0.8.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/tika-parsers-0.8.jar URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/lib/tika-parsers-0.8.jar?rev=1078740&view=auto ============================================================================== Binary file - no diff available. Propchange: ofbiz/branches/jackrabbit20100709/framework/jcr/lib/tika-parsers-0.8.jar ------------------------------------------------------------------------------ svn:mime-type = application/octet-stream Added: ofbiz/branches/jackrabbit20100709/framework/jcr/ofbiz-component.xml URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/ofbiz-component.xml?rev=1078740&view=auto ============================================================================== --- ofbiz/branches/jackrabbit20100709/framework/jcr/ofbiz-component.xml (added) +++ ofbiz/branches/jackrabbit20100709/framework/jcr/ofbiz-component.xml Mon Mar 7 10:50:31 2011 @@ -0,0 +1,29 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +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. +--> + +<ofbiz-component name="jcr" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/ofbiz-component.xsd"> + <resource-loader name="main" type="component"/> + <classpath type="dir" location="config"/> + <classpath type="jar" location="build/lib/*"/> + <classpath type="jar" location="lib/*"/> +</ofbiz-component> + Added: ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/JackrabbitContainer.java URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/JackrabbitContainer.java?rev=1078740&view=auto ============================================================================== --- ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/JackrabbitContainer.java (added) +++ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/JackrabbitContainer.java Mon Mar 7 10:50:31 2011 @@ -0,0 +1,129 @@ +/******************************************************************************* + * 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.ofbiz.jcr; + +import java.io.File; +import java.net.MalformedURLException; +import java.net.URISyntaxException; +import java.net.URL; + +import javax.jcr.Credentials; +import javax.jcr.LoginException; +import javax.jcr.Repository; +import javax.jcr.RepositoryException; +import javax.jcr.Session; +import javax.jcr.SimpleCredentials; +import javax.naming.Context; +import javax.naming.InitialContext; +import javax.naming.NamingException; +import javax.naming.Reference; + +import org.apache.jackrabbit.core.TransientRepository; +import org.ofbiz.base.container.Container; +import org.ofbiz.base.container.ContainerConfig; +import org.ofbiz.base.container.ContainerException; +import org.ofbiz.base.location.FlexibleLocation; +import org.ofbiz.base.util.Debug; +import org.ofbiz.entity.Delegator; +import org.ofbiz.entity.DelegatorFactory; +import org.ofbiz.entity.GenericEntityException; +import org.ofbiz.entity.GenericValue; + +/** + * A container for a local JCR-compliant content repository. The current + * implementation uses Apache Jackrabbit. + */ +public class JackrabbitContainer implements Container { + + public static final String module = JackrabbitContainer.class.getName(); + + private static File homeDir = null; + private static File jackrabbitConfigFile = null; + private static String jndiName; + protected static Repository repository; + private static Session session; + + @Override + public void init(String[] args, String configFile) throws ContainerException { + ContainerConfig.Container cc = ContainerConfig.getContainer("jackrabbit", configFile); + String homeDirURL; + try { + homeDirURL = ContainerConfig.getPropertyValue(cc, "repHomeDir", "runtime/data/jackrabbit/"); + jndiName = ContainerConfig.getPropertyValue(cc, "jndiName", "jcr/local"); + homeDir = new File(homeDirURL); + URL jackrabbitConfigUrl = FlexibleLocation.resolveLocation(ContainerConfig.getPropertyValue(cc, "configFilePath", "framework/jackrabbit/config/jackrabbit.xml")); + jackrabbitConfigFile = new File(jackrabbitConfigUrl.toURI()); + + } catch (MalformedURLException e) { + Debug.logError(e, module); + } catch (URISyntaxException e) { + Debug.logError(e, module); + } + } + + @Override + public boolean start() throws ContainerException { + repository = new TransientRepository(jackrabbitConfigFile, homeDir); + try { + Delegator delegator = DelegatorFactory.getDelegator("default"); + GenericValue userLogin = delegator.findOne("UserLogin", true, "userLoginId", "system"); + // Open a session to get the repo running + session = JackrabbitContainer.getUserSession(userLogin); + } catch (LoginException e) { + Debug.logError(e, module); + } catch (RepositoryException e) { + Debug.logError(e, module); + } catch (GenericEntityException e) { + Debug.logError(e, module); + } + try { + Reference ref = new Reference(Repository.class.getName(), LocalRepositoryFactory.class.getName(), null); + Context context = new InitialContext(); + context.bind(jndiName, ref); + } catch (NamingException e) { + Debug.logError(e, module); + } + // Test JNDI bind + RepositoryFactory.getRepository(); + return true; + } + + @Override + public void stop() throws ContainerException { + try { + Context context = new InitialContext(); + context.unbind(jndiName); + } catch (NamingException e) { + Debug.logError(e, module); + } + if (session != null) { + session.logout(); + } + if (repository != null) { + // Not needed - Jackrabbit shuts down when the session is closed +// repository.shutdown(); + } + } + + public static Session getUserSession(GenericValue userLogin) throws RepositoryException { + String currentPassword = userLogin.getString("currentPassword") == null ? "" : userLogin.getString("currentPassword"); + Credentials creds = new SimpleCredentials(userLogin.getString("userLoginId"), currentPassword.toCharArray()); + return repository.login(creds); + } +} Added: ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/JcrRepositoryFactory.java URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/JcrRepositoryFactory.java?rev=1078740&view=auto ============================================================================== --- ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/JcrRepositoryFactory.java (added) +++ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/JcrRepositoryFactory.java Mon Mar 7 10:50:31 2011 @@ -0,0 +1,30 @@ +/******************************************************************************* + * 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.ofbiz.jcr; + +import javax.jcr.Repository; + +public interface JcrRepositoryFactory { + /** + * + * @param repositoryName The name specified in the <code>jcr-repositories.xml</code> file + * @return + */ + Repository getInstance(String repositoryName); +} Added: ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/LocalRepositoryFactory.java URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/LocalRepositoryFactory.java?rev=1078740&view=auto ============================================================================== --- ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/LocalRepositoryFactory.java (added) +++ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/LocalRepositoryFactory.java Mon Mar 7 10:50:31 2011 @@ -0,0 +1,45 @@ +/******************************************************************************* + * 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.ofbiz.jcr; + +import java.util.Hashtable; + +import javax.jcr.Repository; +import javax.naming.Context; +import javax.naming.Name; +import javax.naming.Reference; +import javax.naming.spi.ObjectFactory; + +/** + * A JNDI <code>ObjectFactory</code> that returns a <code>javax.jcr.Repository</code> + * instance. + */ +public class LocalRepositoryFactory implements ObjectFactory { + + @Override + public Object getObjectInstance(Object obj, Name name, Context nameCtx, Hashtable<?, ?> environment) throws Exception { + if (obj instanceof Reference) { + Reference ref = (Reference)obj; + if (ref.getClassName().equals(Repository.class.getName())) { + return JackrabbitContainer.repository; + } + } + return null; + } +} Added: ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/OFBizLoginModule.java URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/OFBizLoginModule.java?rev=1078740&view=auto ============================================================================== --- ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/OFBizLoginModule.java (added) +++ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/OFBizLoginModule.java Mon Mar 7 10:50:31 2011 @@ -0,0 +1,146 @@ +/******************************************************************************* + * 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.ofbiz.jcr; + +import java.io.IOException; +import java.util.Map; + +import javax.security.auth.Subject; +import javax.security.auth.callback.Callback; +import javax.security.auth.callback.CallbackHandler; +import javax.security.auth.callback.NameCallback; +import javax.security.auth.callback.PasswordCallback; +import javax.security.auth.callback.UnsupportedCallbackException; +import javax.security.auth.login.LoginException; +import javax.security.auth.spi.LoginModule; + +import javolution.util.FastMap; + +import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.UtilValidate; +import org.ofbiz.entity.Delegator; +import org.ofbiz.entity.DelegatorFactory; +import org.ofbiz.entity.GenericEntityException; +import org.ofbiz.entity.GenericValue; +import org.ofbiz.service.GenericDispatcher; +import org.ofbiz.service.GenericServiceException; +import org.ofbiz.service.LocalDispatcher; +import org.ofbiz.service.ServiceUtil; + +public class OFBizLoginModule implements LoginModule { + + public static final String module = OFBizLoginModule.class.getName(); + + protected Subject subject; + protected CallbackHandler callbackHandler; + protected Map<String, ?> sharedState; + protected Map<String, ?> options; + + private Delegator delegator; + private LocalDispatcher dispatcher; + + private GenericValue userLogin; + + @Override + public boolean abort() throws LoginException { + return logout(); + } + + @Override + public boolean commit() throws LoginException { + if (userLogin != null) { + return true; + } + return false; + } + + @Override + public void initialize(Subject subject, CallbackHandler callbackHandler, Map<String, ?> sharedState, Map<String, ?> options) { + // get the delegator + delegator = DelegatorFactory.getDelegator("default"); + + // get the dispatcher + dispatcher = GenericDispatcher.getLocalDispatcher("auth-dispatcher", delegator); + + this.subject = subject; + this.callbackHandler = callbackHandler; + this.sharedState = sharedState; + this.options = options; + + if (options != null) { + for (Map.Entry<String, ?> option : options.entrySet()) { + Debug.logWarning("OFBizLoginModule does not support provided option [" + option.getKey() + "] with value [" + option.getValue() + "], ignoring", module); + } + } + } + + @Override + public boolean login() throws LoginException { + NameCallback nameCallback = new NameCallback("userLoginId"); + PasswordCallback passwordCallback = new PasswordCallback("currentPassword", false); + Callback[] callbacks = new Callback[]{nameCallback, passwordCallback}; + try { + callbackHandler.handle(callbacks); + } catch (IOException e) { + Debug.logError(e, module); + throw new LoginException(e.getMessage()); + } catch (UnsupportedCallbackException e) { + Debug.logError(e, module); + throw new LoginException(e.getMessage()); + } + + String userLoginId = nameCallback.getName(); + String password = String.valueOf(passwordCallback.getPassword()); + passwordCallback.clearPassword(); + // try matching against the encrypted password + try { + GenericValue newUserLogin = delegator.findOne("UserLogin", false, "userLoginId", userLoginId); + if (newUserLogin.getString("currentPassword") == null || newUserLogin.getString("currentPassword").equals(password)) { + userLogin = newUserLogin; + return true; + } + } catch (GenericEntityException e) { + Debug.logError(e, module); + } + // plain text password + if (UtilValidate.isNotEmpty(password)) { + Map<String, Object> loginCtx = FastMap.newInstance(); + loginCtx.put("login.username", userLoginId); + loginCtx.put("login.password", password); + try { + Map<String, ? extends Object> result = dispatcher.runSync("userLogin", loginCtx); + if (ServiceUtil.isSuccess(result)) { + userLogin = (GenericValue) result.get("userLogin"); + return true; + } + } catch (GenericServiceException e) { + Debug.logError(e, module); + throw new LoginException(e.getMessage()); + } + } + return false; + } + + @Override + public boolean logout() throws LoginException { + userLogin = null; + return true; + } + +} Added: ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/RepositoryFactory.java URL: http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/RepositoryFactory.java?rev=1078740&view=auto ============================================================================== --- ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/RepositoryFactory.java (added) +++ ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/RepositoryFactory.java Mon Mar 7 10:50:31 2011 @@ -0,0 +1,125 @@ +/******************************************************************************* + * 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.ofbiz.jcr; + +import java.io.IOException; +import java.net.URL; +import java.util.Collections; +import java.util.Enumeration; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +import javax.jcr.Repository; +import javax.naming.InitialContext; +import javax.naming.NamingException; + +import org.ofbiz.base.util.Debug; +import org.ofbiz.base.util.UtilValidate; +import org.ofbiz.base.util.UtilXml; +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public class RepositoryFactory { + + public static final String module = RepositoryFactory.class.getName(); + private static final Map<String, Repository> repositoryMap = createRepositoryMap(); + + private static Repository createFromFactory(String repositoryName, ClassLoader loader, String className) throws InstantiationException, IllegalAccessException, ClassNotFoundException { + JcrRepositoryFactory factory = (JcrRepositoryFactory) loader.loadClass(className).newInstance(); + return factory.getInstance(repositoryName); + } + + private static Map<String, Repository> createRepositoryMap() { + Map<String, Repository> result = new HashMap<String, Repository>(); + loadRepositories(result); + Debug.logInfo("Repositories loaded: " + result.size(), module); + return Collections.unmodifiableMap(result); + } + + /** + * Returns the default repository. + * + * @return + */ + public static Repository getRepository() { + return repositoryMap.get("default"); + } + + /** + * Returns the specified repository, or <code>null</code> if the + * specified repository doesn't exist. + * + * @param name + * @return + */ + public static Repository getRepository(String name) { + return repositoryMap.get(name); + } + + private static void loadRepositories(Map<String, Repository> map) { + ClassLoader loader = Thread.currentThread().getContextClassLoader(); + Enumeration<URL> resources; + try { + resources = loader.getResources("jcr-repositories.xml"); + } catch (IOException e) { + Debug.logError(e, "Could not load list of jcr-repositories.xml", module); + return; + } + while (resources.hasMoreElements()) { + URL repositoriesURL = resources.nextElement(); + Debug.logInfo("Loading repositories from: " + repositoriesURL, module); + Document doc = null; + try { + doc = UtilXml.readXmlDocument(repositoriesURL, false); + } catch (Exception e) { + Debug.logError(e, module); + continue; + } + Element resourceElement = doc.getDocumentElement(); + List<? extends Element> repositoryList = UtilXml.childElementList(resourceElement, "repository"); + for (Element element : repositoryList) { + String name = element.getAttribute("name"); + if (UtilValidate.isEmpty(name)) { + continue; + } + String jndiName = element.getAttribute("jndi-name"); + if (UtilValidate.isNotEmpty(jndiName)) { + try { + map.put(name, (Repository) new InitialContext().lookup(jndiName)); + } catch (NamingException e) { + Debug.logError(e, module); + } + continue; + } + String className = element.getAttribute("class-name"); + if (UtilValidate.isNotEmpty(className)) { + try { + map.put(name, createFromFactory(name, loader, className)); + } catch (Exception e) { + Debug.logError(e, module); + } + } + } + } + + } + + private RepositoryFactory() {} +} |
Free forum by Nabble | Edit this page |