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