Hi Pierre,
the last patch had no functional changes. It just prepares the
repository loading for the following changes.

That the nt:unstructured node is not found seems do be another issue.
I will check that.

For further implementations we definitely should create a new branch.
But before creating it i wanted to clean up some code parts. By the
end of this week (tomorrow) i will create one, is this ok for you?

Thanks and regards,
Sascha


2012/4/26 Pierre Smits <pierre.sm...@gmail.com>:
> Sascha,
>
> I did a small test against this revision.
>
> Creating content in jcr works ok, but is still visible to other tenants.
>
> Upload of a file triggered following:
>
> The Following Errors Occurred:
>
> Error calling event: org.ofbiz.webapp.event.EventHandlerException: Problems
> processing event:
> org.apache.jackrabbit.ocm.exception.IncorrectPersistentClassException: Node
> type: nt:unstructured has no descriptor. (Node type: nt:unstructured has no
> descriptor.)
>
> Although the previous situation wasn't perfect, maybe we should implement
> and test first in the jcr branch before bringing it to trunk.
>
> Regards,
>
> Pierre
>
> Op 26 april 2012 13:18 schreef <sascharodek...@apache.org> het volgende:
>
>> Author: sascharodekamp
>> Date: Thu Apr 26 11:18:51 2012
>> New Revision: 1330779
>>
>> URL: http://svn.apache.org/viewvc?rev=1330779&view=rev
>> Log:
>> Clean Up the repository loding code. No functional changes.
>>
>> Added:
>>    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRJndi.java   (with
>> props)
>> Modified:
>>    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRContainer.java
>>    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactory.java
>>    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactoryUtil.java
>>
>>  ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryFactory.java
>>    ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryLoader.java
>>
>>  ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java
>>
>> Modified:
>> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRContainer.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRContainer.java?rev=1330779&r1=1330778&r2=1330779&view=diff
>>
>> ==============================================================================
>> --- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRContainer.java
>> (original)
>> +++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRContainer.java
>> Thu Apr 26 11:18:51 2012
>> @@ -18,20 +18,13 @@
>>
>>  *******************************************************************************/
>>  package org.ofbiz.jcr.loader;
>>
>> -import javax.jcr.Repository;
>>  import javax.jcr.RepositoryException;
>> -import javax.naming.Context;
>> -import javax.naming.NamingException;
>> -import javax.naming.Reference;
>> -import javax.naming.StringRefAddr;
>>
>>  import org.ofbiz.base.config.GenericConfigException;
>>  import org.ofbiz.base.config.ResourceLoader;
>>  import org.ofbiz.base.container.Container;
>>  import org.ofbiz.base.container.ContainerConfig;
>>  import org.ofbiz.base.container.ContainerException;
>> -import org.ofbiz.base.util.Debug;
>> -import org.ofbiz.base.util.JNDIContextFactory;
>>  import org.ofbiz.base.util.UtilXml;
>>  import org.w3c.dom.Element;
>>
>> @@ -44,18 +37,9 @@ public class JCRContainer implements Con
>>     public static final String module = JCRContainer.class.getName();
>>
>>     public static final String DEFAULT_JCR_CONFIG_PATH =
>> "framework/jcr/config/jcr-config.xml";
>> -    public static final String REP_HOME_DIR = "0";
>> -    public static final String CONFIG_FILE_PATH = "1";
>> -
>> -    private static String jndiName = null;
>> -    private static String factoryClassName = null;
>> -    private static String jcrContextName = null;
>>
>>     private static String configFilePath = null;
>>     private boolean removeRepositoryOnShutdown = false;
>> -    private String homeDir = null;
>> -
>> -    Context jndiContext = null;
>>
>>     /*
>>      * (non-Javadoc)
>> @@ -65,52 +49,12 @@ public class JCRContainer implements Con
>>      */
>>     @Override
>>     public void init(String[] args, String configFile) throws
>> ContainerException {
>> -        // get the container configuration
>> -        ContainerConfig.Container cc =
>> ContainerConfig.getContainer("jcr-container", configFile);
>> -        if (cc == null) {
>> -            throw new ContainerException("No jcr-container configuration
>> found in container config!");
>> -        }
>> -
>> -        // embedded properties
>> -        removeRepositoryOnShutdown = ContainerConfig.getPropertyValue(cc,
>> "removeRepositoryOnShutdown", false);
>> -        configFilePath = ContainerConfig.getPropertyValue(cc,
>> "configFilePath", DEFAULT_JCR_CONFIG_PATH);
>> -
>> -        Element configRootElement = null;
>> -        try {
>> -            configRootElement =
>> ResourceLoader.getXmlRootElement(configFilePath);
>> -        } catch (GenericConfigException e) {
>> -            throw new ContainerException("Could not load the jcr
>> configuration in file " + configFilePath, e);
>> -        }
>> -
>> -        if (configRootElement == null) {
>> -            throw new ContainerException("No jcr configuration found in
>> file " + configFilePath);
>> -        }
>> -
>> -        homeDir = UtilXml.childElementAttribute(configRootElement,
>> "home-dir", "path", "runtime/data/jcr/");
>> -        Element childElement =
>> UtilXml.firstChildElement(configRootElement, "jcr-context");
>> -        jcrContextName = UtilXml.elementAttribute(childElement, "name",
>> "default");
>> +        readContainerConfig(configFile);
>>
>> -        // find the default JCR implementation
>> -        for (Element curElement :
>> UtilXml.childElementList(configRootElement, "jcr")) {
>> -            if (jcrContextName.equals(curElement.getAttribute("name"))) {
>> -                factoryClassName = curElement.getAttribute("class");
>> -                jndiName = curElement.getAttribute("jndi-name");
>> -                break;
>> -            }
>> -        }
>> -
>> -        // get the default JCR factory
>> -        JCRFactory jcrFactory = JCRFactoryUtil.getJCRFactory();
>> -
>> -        if (jcrFactory == null) {
>> -            throw new ContainerException("Cannot load JCRFactory
>> implementation class");
>> -        }
>> +        Element configRootElement = getConfigFileRootElement();
>>
>> -        try {
>> -            jcrFactory.initialize(configRootElement);
>> -        } catch (RepositoryException e) {
>> -            throw new ContainerException("Cannot initialize JCRFactory
>> context", e);
>> -        }
>> +        Element factoryImplDefinition =
>> getJcrFactoryImplementationClassName(configRootElement);
>> +        initializeJcrFactory(configRootElement, factoryImplDefinition);
>>     }
>>
>>     /*
>> @@ -120,10 +64,7 @@ public class JCRContainer implements Con
>>      */
>>     @Override
>>     public boolean start() throws ContainerException {
>> -        JCRFactory jcrFactory = JCRFactoryUtil.getJCRFactory();
>> -        if (jcrFactory == null) {
>> -            throw new ContainerException("Cannot load JCRFactory
>> implementation class");
>> -        }
>> +        JCRFactory jcrFactory = getJCRFactory();
>>
>>         try {
>>             jcrFactory.start();
>> @@ -131,17 +72,6 @@ public class JCRContainer implements Con
>>             throw new ContainerException("Cannot start JCRFactory
>> context", e);
>>         }
>>
>> -        // get JNDI context
>> -        try {
>> -            jndiContext =
>> JNDIContextFactory.getInitialContext("localjndi");
>> -        } catch (GenericConfigException e) {
>> -            Debug.logError(e, module);
>> -        }
>> -
>> -        bindRepository();
>> -        // Test JNDI bind
>> -        RepositoryLoader.getRepository();
>> -
>>         return true;
>>     }
>>
>> @@ -152,10 +82,7 @@ public class JCRContainer implements Con
>>      */
>>     @Override
>>     public void stop() throws ContainerException {
>> -        JCRFactory jcrFactory = JCRFactoryUtil.getJCRFactory();
>> -        if (jcrFactory == null) {
>> -            throw new ContainerException("Cannot load JCRFactory
>> implementation class");
>> -        }
>> +        JCRFactory jcrFactory = getJCRFactory();
>>
>>         try {
>>             jcrFactory.stop(removeRepositoryOnShutdown);
>> @@ -164,40 +91,67 @@ public class JCRContainer implements Con
>>         }
>>     }
>>
>> -    /**
>> -     * returns the class name of the JCRFactory implementation
>> -     *
>> -     * @return
>> -     */
>> -    public static String getFactoryClassName() {
>> -        return factoryClassName;
>> -    }
>>
>>     public static String getConfigFilePath() {
>>         return configFilePath;
>>     }
>>
>> -    protected void bindRepository() {
>> -        if (this.jndiContext != null) {
>> -            try {
>> -                Reference ref = new Reference(Repository.class.getName(),
>> org.ofbiz.jcr.loader.RepositoryFactory.class.getName(), null);
>> -                ref.add(new StringRefAddr(REP_HOME_DIR, homeDir));
>> -                ref.add(new StringRefAddr(CONFIG_FILE_PATH,
>> configFilePath));
>> -                this.jndiContext.bind(jndiName, ref);
>> -                Debug.logInfo("Repository bound to JNDI as " + jndiName,
>> module);
>> -            } catch (NamingException ne) {
>> -                Debug.logError(ne, module);
>> -            }
>> +    private void readContainerConfig(String configFile) throws
>> ContainerException {
>> +        // get the container configuration
>> +        ContainerConfig.Container cc =
>> ContainerConfig.getContainer("jcr-container", configFile);
>> +        if (cc == null) {
>> +            throw new ContainerException("No jcr-container configuration
>> found in container config!");
>>         }
>> +
>> +        // embedded properties
>> +        removeRepositoryOnShutdown = ContainerConfig.getPropertyValue(cc,
>> "removeRepositoryOnShutdown", false);
>> +        configFilePath = ContainerConfig.getPropertyValue(cc,
>> "configFilePath", DEFAULT_JCR_CONFIG_PATH);
>>     }
>>
>> -    protected void unbindRepository(String name) {
>> -        if (this.jndiContext != null) {
>> -            try {
>> -                this.jndiContext.unbind(jndiName);
>> -            } catch (NamingException e) {
>> -                Debug.logError(e, module);
>> +    private Element getConfigFileRootElement() throws ContainerException {
>> +        Element configRootElement = null;
>> +        try {
>> +            configRootElement =
>> ResourceLoader.getXmlRootElement(configFilePath);
>> +        } catch (GenericConfigException e) {
>> +            throw new ContainerException("Could not load the jcr
>> configuration in file " + configFilePath, e);
>> +        }
>> +
>> +        if (configRootElement == null) {
>> +            throw new ContainerException("No jcr configuration found in
>> file " + configFilePath);
>> +        }
>> +        return configRootElement;
>> +    }
>> +
>> +    private Element getJcrFactoryImplementationClassName(Element
>> configRootElement) {
>> +        Element childElement =
>> UtilXml.firstChildElement(configRootElement, "jcr-context");
>> +        String jcrContextName = UtilXml.elementAttribute(childElement,
>> "name", "default");
>> +
>> +        // find the default JCR implementation
>> +        for (Element curElement :
>> UtilXml.childElementList(configRootElement, "jcr")) {
>> +            if (jcrContextName.equals(curElement.getAttribute("name"))) {
>> +                return curElement;
>>             }
>>         }
>> +
>> +        return null;
>> +    }
>> +
>> +    private void initializeJcrFactory(Element configRootElement, Element
>> factoryImplDefinition) throws ContainerException {
>> +
>>  JCRFactoryUtil.setJcrFactoryClassName(factoryImplDefinition.getAttribute("class"));
>> +        JCRFactory jcrFactory = getJCRFactory();
>> +
>> +        try {
>> +            jcrFactory.initialize(configRootElement,
>> factoryImplDefinition);
>> +        } catch (RepositoryException e) {
>> +            throw new ContainerException("Cannot initialize JCRFactory
>> context", e);
>> +        }
>> +    }
>> +
>> +    private JCRFactory getJCRFactory() throws ContainerException {
>> +        JCRFactory jcrFactory = JCRFactoryUtil.getJCRFactory();
>> +        if (jcrFactory == null) {
>> +            throw new ContainerException("Cannot load JCRFactory
>> implementation class");
>> +        }
>> +        return jcrFactory;
>>     }
>>  }
>>
>> Modified:
>> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactory.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactory.java?rev=1330779&r1=1330778&r2=1330779&view=diff
>>
>> ==============================================================================
>> --- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactory.java
>> (original)
>> +++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactory.java Thu
>> Apr 26 11:18:51 2012
>> @@ -29,9 +29,10 @@ public interface JCRFactory {
>>     /**
>>      *
>>      * @param configRootElement
>> +     * @param factoryImplDefinition
>>      * @throws RepositoryException
>>      */
>> -    public void initialize(Element configRootElement) throws
>> RepositoryException;
>> +    public void initialize(Element configRootElement, Element
>> factoryImplDefinition) throws RepositoryException;
>>
>>     /**
>>      *
>>
>> Modified:
>> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactoryUtil.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactoryUtil.java?rev=1330779&r1=1330778&r2=1330779&view=diff
>>
>> ==============================================================================
>> --- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactoryUtil.java
>> (original)
>> +++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRFactoryUtil.java
>> Thu Apr 26 11:18:51 2012
>> @@ -28,7 +28,8 @@ public class JCRFactoryUtil {
>>
>>     public static final String module = JCRFactoryUtil.class.getName();
>>
>> -    private static JCRFactory jcrFactory = null;
>> +    private static JCRFactory jcrFactory;
>> +    private static String jcrFactoryName;
>>
>>     /**
>>      *
>> @@ -43,7 +44,7 @@ public class JCRFactoryUtil {
>>                     ClassLoader loader =
>> Thread.currentThread().getContextClassLoader();
>>                     Class<?> c;
>>                     try {
>> -                        c =
>> loader.loadClass(JCRContainer.getFactoryClassName());
>> +                        c = loader.loadClass(jcrFactoryName);
>>                         jcrFactory = (JCRFactory) c.newInstance();
>>                     } catch (ClassNotFoundException e) {
>>                         Debug.logError(e, "Cannot get instance of the jcr
>> implementation", module);
>> @@ -70,4 +71,8 @@ public class JCRFactoryUtil {
>>
>>         return session;
>>     }
>> +
>> +    public static void setJcrFactoryClassName(String jcrFactoryClassName)
>> {
>> +        jcrFactoryName = jcrFactoryClassName;
>> +    }
>>  }
>>
>> Added: ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRJndi.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRJndi.java?rev=1330779&view=auto
>>
>> ==============================================================================
>> --- ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRJndi.java (added)
>> +++ ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRJndi.java Thu
>> Apr 26 11:18:51 2012
>> @@ -0,0 +1,70 @@
>> +package org.ofbiz.jcr.loader;
>> +
>> +import javax.jcr.Repository;
>> +import javax.naming.InitialContext;
>> +import javax.naming.NamingException;
>> +import javax.naming.Reference;
>> +import javax.naming.StringRefAddr;
>> +
>> +import org.ofbiz.base.config.GenericConfigException;
>> +import org.ofbiz.base.util.Debug;
>> +import org.ofbiz.base.util.JNDIContextFactory;
>> +
>> +public class JCRJndi {
>> +
>> +    public static final String module = JCRJndi.class.getName();
>> +
>> +    public final static String ADDR_TYPE_FOR_REPOSITORY_HOME_DIR =
>> "REPHOME";
>> +    public final String ADDR_TYPE_FOR_CONFIG_FILE_PATH = "CONFPATH";
>> +
>> +    private final String jndiName;
>> +    private final String configFilePath;
>> +    private final String repositoryHomeDir;
>> +
>> +    public JCRJndi(String configFilePath, String jndiName, String
>> repositoryHomeDir) {
>> +        this.configFilePath = configFilePath;
>> +        this.jndiName = jndiName;
>> +        this.repositoryHomeDir = repositoryHomeDir;
>> +    }
>> +
>> +    public void registerJcrToJndi() {
>> +        InitialContext jndiContext = null;
>> +
>> +        try {
>> +            jndiContext = getInitialContext();
>> +        } catch (GenericConfigException e) {
>> +            Debug.logError(e, module);
>> +        }
>> +
>> +        bindRepository(jndiContext);
>> +        // Test JNDI bind
>> +        RepositoryLoader.getRepository();
>> +    }
>> +
>> +    public void unbindRepository() {
>> +        try {
>> +            InitialContext jndiContext = getInitialContext();
>> +            jndiContext.unbind(jndiName);
>> +        } catch (NamingException e) {
>> +            Debug.logError(e, module);
>> +        } catch (GenericConfigException e) {
>> +            Debug.logError(e, module);
>> +        }
>> +    }
>> +
>> +    private InitialContext getInitialContext() throws
>> GenericConfigException {
>> +        return JNDIContextFactory.getInitialContext("default");
>> +    }
>> +
>> +    private void bindRepository(InitialContext jndiContext) {
>> +        try {
>> +            Reference ref = new Reference(Repository.class.getName(),
>> org.ofbiz.jcr.loader.RepositoryFactory.class.getName(), null);
>> +            ref.add(new StringRefAddr(ADDR_TYPE_FOR_REPOSITORY_HOME_DIR,
>> repositoryHomeDir));
>> +            ref.add(new StringRefAddr(ADDR_TYPE_FOR_CONFIG_FILE_PATH,
>> configFilePath));
>> +            jndiContext.bind(jndiName, ref);
>> +            Debug.logInfo("Repository bound to JNDI as " + jndiName,
>> module);
>> +        } catch (NamingException ne) {
>> +            Debug.logError(ne, module);
>> +        }
>> +    }
>> +}
>>
>> Propchange: ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/JCRJndi.java
>>
>> ------------------------------------------------------------------------------
>>    svn:mime-type = text/plain
>>
>> Modified:
>> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryFactory.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryFactory.java?rev=1330779&r1=1330778&r2=1330779&view=diff
>>
>> ==============================================================================
>> ---
>> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryFactory.java
>> (original)
>> +++
>> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryFactory.java
>> Thu Apr 26 11:18:51 2012
>> @@ -22,15 +22,15 @@ public class RepositoryFactory implement
>>         synchronized (cache) {
>>             Object instance = cache.get(obj);
>>             if (instance == null && obj instanceof Reference) {
>> -                Reference ref = (Reference) obj;
>> -                String repHomeDir =
>> ref.get(JCRContainer.REP_HOME_DIR).getContent().toString();
>> +                Reference reference = (Reference) obj;
>> +                String repHomeDir =
>> reference.get(JCRJndi.ADDR_TYPE_FOR_REPOSITORY_HOME_DIR).getContent().toString();
>>                 // check if the repository is already started, than use it
>>                 // otherwise create it
>>                 File lock = new File(repHomeDir);
>>                 if (lock.exists()) {
>>                     instance =
>> JcrUtils.getRepository(lock.toURI().toString());
>>                 } else {
>> -                    instance = new
>> TransientRepository(ref.get(JCRContainer.DEFAULT_JCR_CONFIG_PATH).getContent().toString(),
>> repHomeDir);
>> +                    instance = new
>> TransientRepository(reference.get(JCRContainer.DEFAULT_JCR_CONFIG_PATH).getContent().toString(),
>> repHomeDir);
>>                 }
>>
>>                 cache.put(obj, instance);
>>
>> Modified:
>> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryLoader.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryLoader.java?rev=1330779&r1=1330778&r2=1330779&view=diff
>>
>> ==============================================================================
>> ---
>> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryLoader.java
>> (original)
>> +++
>> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/RepositoryLoader.java
>> Thu Apr 26 11:18:51 2012
>> @@ -71,7 +71,7 @@ public class RepositoryLoader {
>>             String jndiName = curElement.getAttribute("jndi-name");
>>             if (UtilValidate.isNotEmpty(jndiName)) {
>>                 try {
>> -                    repos.put(name, (Repository)
>> JNDIContextFactory.getInitialContext("localjndi").lookup(jndiName));
>> +                    repos.put(name, (Repository)
>> JNDIContextFactory.getInitialContext("default").lookup(jndiName));
>>                 } catch (NamingException e) {
>>                     Debug.logError(e, module);
>>                 } catch (GenericConfigException e) {
>>
>> Modified:
>> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java
>> URL:
>> http://svn.apache.org/viewvc/ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java?rev=1330779&r1=1330778&r2=1330779&view=diff
>>
>> ==============================================================================
>> ---
>> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java
>> (original)
>> +++
>> ofbiz/trunk/framework/jcr/src/org/ofbiz/jcr/loader/jackrabbit/JCRFactoryImpl.java
>> Thu Apr 26 11:18:51 2012
>> @@ -47,7 +47,9 @@ import org.apache.jackrabbit.spi.QNodeTy
>>  import org.ofbiz.base.util.Debug;
>>  import org.ofbiz.base.util.UtilValidate;
>>  import org.ofbiz.base.util.UtilXml;
>> +import org.ofbiz.entity.Delegator;
>>  import org.ofbiz.jcr.loader.JCRFactory;
>> +import org.ofbiz.jcr.loader.JCRJndi;
>>  import org.ofbiz.jcr.orm.jackrabbit.data.JackrabbitArticle;
>>  import org.ofbiz.jcr.orm.jackrabbit.file.JackrabbitFile;
>>  import org.ofbiz.jcr.orm.jackrabbit.file.JackrabbitFolder;
>> @@ -71,21 +73,28 @@ public class JCRFactoryImpl implements J
>>
>>     protected static Repository repository = null;
>>     protected Session session = null;
>> +
>>     protected static Mapper mapper = null;
>>
>> +    private JCRJndi jndi;
>> +
>>     /*
>>      * (non-Javadoc)
>>      *
>>      * @see org.ofbiz.jcr.JCRFactory#initialize(org.w3c.dom.Element)
>>      */
>>     @Override
>> -    public void initialize(Element configRootElement) throws
>> RepositoryException {
>> +    public void initialize(Element configRootElement, Element
>> factoryImplDefinition) throws RepositoryException {
>> +        homeDir = UtilXml.childElementAttribute(configRootElement,
>> "home-dir", "path", "runtime/data/jcr/");
>> +        String factoryJndiName =
>> factoryImplDefinition.getAttribute("jndi-name");
>> +
>> +        jndi = new JCRJndi(jackrabbitConfigFile, factoryJndiName,
>> homeDir);
>> +
>>         Element childElement =
>> UtilXml.firstChildElement(configRootElement, "jcr-credentials");
>>         CREDENTIALS_USERNAME = UtilXml.elementAttribute(childElement,
>> "username", null);
>>         CREDENTIALS_PASSWORD = UtilXml.elementAttribute(childElement,
>> "password", null).toCharArray();
>>
>>         jackrabbitConfigFile =
>> UtilXml.childElementAttribute(configRootElement, "config-file-path",
>> "path", "framework/jcr/config/jackrabbit.xml");
>> -        homeDir = UtilXml.childElementAttribute(configRootElement,
>> "home-dir", "path", "runtime/data/jcr/");
>>     }
>>
>>     /*
>> @@ -113,6 +122,8 @@ public class JCRFactoryImpl implements J
>>         classes.add(JackrabbitArticle.class);
>>
>>         mapper = new AnnotationMapperImpl(classes);
>> +
>> +        jndi.registerJcrToJndi();
>>     }
>>
>>     /*
>> @@ -136,6 +147,8 @@ public class JCRFactoryImpl implements J
>>                 }
>>             }
>>         }
>> +
>> +        jndi.unbindRepository();
>>     }
>>
>>     /*
>> @@ -186,7 +199,7 @@ public class JCRFactoryImpl implements J
>>     /*
>>      * Register some new node types
>>      */
>> -    protected void registerNodeTypes(Session session) throws
>> InvalidNodeTypeDefException, javax.jcr.RepositoryException, IOException {
>> +    private void registerNodeTypes(Session session) throws
>> InvalidNodeTypeDefException, javax.jcr.RepositoryException, IOException {
>>         InputStream xml = new FileInputStream(CUSTOM_NODE_TYPES);
>>
>>         // HINT: throws InvalidNodeTypeDefException, IOException
>>
>>
>>



-- 

Sascha Rodekamp
    Visit the new german OFBiz Blog: http://www.ofbiz.biz
    Lynx-Consulting GmbH
    Johanniskirchplatz 6
    D-33615 Bielefeld
    http://www.lynx.de

Reply via email to