Sascha, Introducing this checked exception prevents JackrabbitFileHelper from compiling
Bilgin On 12 December 2011 10:48, <[email protected]> wrote: > Author: sascharodekamp > Date: Mon Dec 12 10:48:04 2011 > New Revision: 1213183 > > URL: http://svn.apache.org/viewvc?rev=1213183&view=rev > Log: > Add a new test and change the exception handling when reading content from > the repository. A Path not found exception will now be thrown, when a path > not exist. > > Modified: > > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/ContentReader.java > > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/JcrRepositoryAccessor.java > > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java > > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/JackrabbitRepositoryAccessor.java > > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/JcrDataHelper.java > > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitArticleHelper.java > > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/test/JackrabbitTests.java > > Modified: > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/ContentReader.java > URL: > http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/ContentReader.java?rev=1213183&r1=1213182&r2=1213183&view=diff > ============================================================================== > --- > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/ContentReader.java > (original) > +++ > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/ContentReader.java > Mon Dec 12 10:48:04 2011 > @@ -1,5 +1,6 @@ > package org.ofbiz.jcr.access; > > +import javax.jcr.PathNotFoundException; > import javax.jcr.RepositoryException; > import javax.jcr.query.QueryResult; > > @@ -15,8 +16,9 @@ public interface ContentReader { > * > * @param nodePath > * @return > + * @throws PathNotFoundException > */ > - OfbizRepositoryMapping getContentObject(String nodePath); > + OfbizRepositoryMapping getContentObject(String nodePath) throws > PathNotFoundException; > > /** > * Return an OfbizRepositoryMapping Object in the specified language and > @@ -28,8 +30,9 @@ public interface ContentReader { > * @param language > * @param version > * @return > + * @throws PathNotFoundException > */ > - OfbizRepositoryMapping getContentObject(String nodePath, String version); > + OfbizRepositoryMapping getContentObject(String nodePath, String version) > throws PathNotFoundException; > > /** > * Returns a tree of all content nodes (except folders and files) in the > > Modified: > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/JcrRepositoryAccessor.java > URL: > http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/JcrRepositoryAccessor.java?rev=1213183&r1=1213182&r2=1213183&view=diff > ============================================================================== > --- > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/JcrRepositoryAccessor.java > (original) > +++ > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/JcrRepositoryAccessor.java > Mon Dec 12 10:48:04 2011 > @@ -3,6 +3,7 @@ package org.ofbiz.jcr.access; > import java.util.List; > > import javax.jcr.ItemExistsException; > +import javax.jcr.PathNotFoundException; > import javax.jcr.RepositoryException; > import javax.jcr.Session; > import javax.jcr.query.QueryResult; > @@ -25,8 +26,9 @@ public interface JcrRepositoryAccessor { > * > * @param nodePath > * @return > + * @throws PathNotFoundException > */ > - OfbizRepositoryMapping getContentObject(String nodePath); > + OfbizRepositoryMapping getContentObject(String nodePath) throws > PathNotFoundException; > > /** > * Return an OfbizRepositoryMapping Object in the specified version from > the > @@ -36,8 +38,9 @@ public interface JcrRepositoryAccessor { > * @param language > * @param version > * @return > + * @throws PathNotFoundException > */ > - OfbizRepositoryMapping getContentObject(String nodePath, String version); > + OfbizRepositoryMapping getContentObject(String nodePath, String version) > throws PathNotFoundException; > > /** > * Stores the OfbizRepositoryMapping Class in the content repository. > > Modified: > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java > URL: > http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java?rev=1213183&r1=1213182&r2=1213183&view=diff > ============================================================================== > --- > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java > (original) > +++ > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/ContentReaderJackrabbit.java > Mon Dec 12 10:48:04 2011 > @@ -2,6 +2,7 @@ package org.ofbiz.jcr.access.jackrabbit; > > import javax.jcr.Node; > import javax.jcr.NodeIterator; > +import javax.jcr.PathNotFoundException; > import javax.jcr.RepositoryException; > import javax.jcr.query.Query; > import javax.jcr.query.QueryManager; > @@ -35,7 +36,7 @@ public class ContentReaderJackrabbit imp > * org.ofbiz.jcr.access.ContentReader#getContentObject(java.lang.String) > */ > @Override > - public OfbizRepositoryMapping getContentObject(String nodePath) { > + public OfbizRepositoryMapping getContentObject(String nodePath) throws > PathNotFoundException{ > nodePath = JcrUtilJackrabbit.createAbsoluteNodePath(nodePath); > OfbizRepositoryMapping orm = (OfbizRepositoryMapping) > ocm.getObject(nodePath); > try { > @@ -58,7 +59,7 @@ public class ContentReaderJackrabbit imp > * java.lang.String, java.lang.String) > */ > @Override > - public OfbizRepositoryMapping getContentObject(String nodePath, String > version) { > + public OfbizRepositoryMapping getContentObject(String nodePath, String > version) throws PathNotFoundException { > nodePath = JcrUtilJackrabbit.createAbsoluteNodePath(nodePath); > VersioningManager vm = new VersioningManagerJackrabbit(ocm); > if (!vm.checkIfVersionExist(nodePath, version)) { > > Modified: > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/JackrabbitRepositoryAccessor.java > URL: > http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/JackrabbitRepositoryAccessor.java?rev=1213183&r1=1213182&r2=1213183&view=diff > ============================================================================== > --- > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/JackrabbitRepositoryAccessor.java > (original) > +++ > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/access/jackrabbit/JackrabbitRepositoryAccessor.java > Mon Dec 12 10:48:04 2011 > @@ -3,6 +3,7 @@ package org.ofbiz.jcr.access.jackrabbit; > import java.util.List; > > import javax.jcr.ItemExistsException; > +import javax.jcr.PathNotFoundException; > import javax.jcr.RepositoryException; > import javax.jcr.Session; > import javax.jcr.query.QueryResult; > @@ -85,7 +86,7 @@ public class JackrabbitRepositoryAccesso > * org.ofbiz.jcr.orm.RepositoryAccess#getContentObject(java.lang.String) > */ > @Override > - public OfbizRepositoryMapping getContentObject(String nodePath) { > + public OfbizRepositoryMapping getContentObject(String nodePath) throws > PathNotFoundException { > ContentReader contentReader = new ContentReaderJackrabbit(this.ocm); > return contentReader.getContentObject(nodePath); > } > @@ -98,7 +99,7 @@ public class JackrabbitRepositoryAccesso > * java.lang.String) > */ > @Override > - public OfbizRepositoryMapping getContentObject(String nodePath, String > version) { > + public OfbizRepositoryMapping getContentObject(String nodePath, String > version) throws PathNotFoundException { > ContentReader contentReader = new ContentReaderJackrabbit(this.ocm); > return contentReader.getContentObject(nodePath, version); > } > > Modified: > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/JcrDataHelper.java > URL: > http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/JcrDataHelper.java?rev=1213183&r1=1213182&r2=1213183&view=diff > ============================================================================== > --- > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/JcrDataHelper.java > (original) > +++ > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/JcrDataHelper.java > Mon Dec 12 10:48:04 2011 > @@ -4,6 +4,7 @@ import java.util.Calendar; > import java.util.List; > > import javax.jcr.ItemExistsException; > +import javax.jcr.PathNotFoundException; > import javax.jcr.RepositoryException; > > import org.apache.jackrabbit.ocm.exception.ObjectContentManagerException; > @@ -17,11 +18,13 @@ public interface JcrDataHelper extends J > * > * @param contentPath > * @return content article object > - * @throws > + * @throws PathNotFoundException > + * @throws ClassCastException > */ > - public abstract JackrabbitArticle readContentFromRepository(String > contentPath) throws ClassCastException; > + public abstract JackrabbitArticle readContentFromRepository(String > contentPath) throws ClassCastException, PathNotFoundException; > > /** > + * @throws PathNotFoundException > * Read the article content object, in the passed language, from the > * repository. if the language is not available, the default language will > * be choose. Throws an Exception when the read content type is not an > @@ -29,11 +32,13 @@ public interface JcrDataHelper extends J > * > * @param contentPath > * @return content article object > - * @throws > + * @throws PathNotFoundException > + * @throws ClassCastException > */ > - public abstract JackrabbitArticle readContentFromRepository(String > contentPath, String language) throws ClassCastException; > + public abstract JackrabbitArticle readContentFromRepository(String > contentPath, String language) throws ClassCastException, > PathNotFoundException; > > /** > + * @throws PathNotFoundException > * Read the article content object, in the passed language and version, > from > * the repository. if the language is not available, the default language > * will be choose. Throws an Exception when the read content type is not > an > @@ -43,9 +48,10 @@ public interface JcrDataHelper extends J > * @param language > * @param version > * @return > - * @throws > + * @throws PathNotFoundException > + * @throws ClassCastException > */ > - public abstract JackrabbitArticle readContentFromRepository(String > contentPath, String language, String version) throws ClassCastException; > + public abstract JackrabbitArticle readContentFromRepository(String > contentPath, String language, String version) throws ClassCastException, > PathNotFoundException; > > /** > * Stores a new article content object in the repository. > > Modified: > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitArticleHelper.java > URL: > http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitArticleHelper.java?rev=1213183&r1=1213182&r2=1213183&view=diff > ============================================================================== > --- > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitArticleHelper.java > (original) > +++ > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/api/jackrabbit/JackrabbitArticleHelper.java > Mon Dec 12 10:48:04 2011 > @@ -69,7 +69,7 @@ public class JackrabbitArticleHelper ext > * .lang.String) > */ > @Override > - public JackrabbitArticle readContentFromRepository(String contentPath) > throws ClassCastException { > + public JackrabbitArticle readContentFromRepository(String contentPath) > throws ClassCastException, PathNotFoundException { > return readContentFromRepository(contentPath, ""); > } > > @@ -81,7 +81,7 @@ public class JackrabbitArticleHelper ext > * .lang.String, java.lang.String) > */ > @Override > - public JackrabbitArticle readContentFromRepository(String contentPath, > String language) throws ClassCastException { > + public JackrabbitArticle readContentFromRepository(String contentPath, > String language) throws ClassCastException, PathNotFoundException { > contentPath = determineContentLanguagePath(contentPath, language); > > OfbizRepositoryMapping orm = > super.access.getContentObject(contentPath); > @@ -102,7 +102,7 @@ public class JackrabbitArticleHelper ext > * .lang.String, java.lang.String, java.lang.String) > */ > @Override > - public JackrabbitArticle readContentFromRepository(String contentPath, > String language, String version) throws ClassCastException { > + public JackrabbitArticle readContentFromRepository(String contentPath, > String language, String version) throws ClassCastException, > PathNotFoundException { > contentPath = determineContentLanguagePath(contentPath, language); > OfbizRepositoryMapping orm = > super.access.getContentObject(contentPath, version); > > @@ -224,8 +224,9 @@ public class JackrabbitArticleHelper ext > * @param contentPath > * @param contentLanguage > * @return > + * @throws PathNotFoundException > */ > - private String determineContentLanguagePath(String contentPath, String > contentLanguage) { > + private String determineContentLanguagePath(String contentPath, String > contentLanguage) throws PathNotFoundException { > // return if only the root node path is requested > if (ConstantsJackrabbit.ROOTPATH.equals(contentPath)) { > return contentPath; > @@ -263,8 +264,9 @@ public class JackrabbitArticleHelper ext > * > * @param canonicalizedContentPath > * @return > + * @throws PathNotFoundException > */ > - private String determineFirstAvailableLanguageNode(String > canonicalizedContentPath) { > + private String determineFirstAvailableLanguageNode(String > canonicalizedContentPath) throws PathNotFoundException { > String contentPath = ""; > > try { > @@ -278,6 +280,8 @@ public class JackrabbitArticleHelper ext > } > } > childNodes = null; > + } catch(PathNotFoundException pnf) { > + throw new PathNotFoundException(pnf); > } catch (RepositoryException e) { > Debug.logError(e, module); > } > > Modified: > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/test/JackrabbitTests.java > URL: > http://svn.apache.org/viewvc/ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/test/JackrabbitTests.java?rev=1213183&r1=1213182&r2=1213183&view=diff > ============================================================================== > --- > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/test/JackrabbitTests.java > (original) > +++ > ofbiz/branches/jackrabbit20100709/framework/jcr/src/org/ofbiz/jcr/test/JackrabbitTests.java > Mon Dec 12 10:48:04 2011 > @@ -25,6 +25,8 @@ import java.util.GregorianCalendar; > import java.util.List; > import java.util.Map; > > +import javax.jcr.ItemExistsException; > +import javax.jcr.PathNotFoundException; > import javax.jcr.RepositoryException; > import javax.jcr.Session; > import javax.jcr.query.QueryResult; > @@ -32,6 +34,7 @@ import javax.jcr.query.QueryResult; > import javolution.util.FastMap; > import net.sf.json.JSONArray; > > +import org.apache.jackrabbit.ocm.exception.ObjectContentManagerException; > import org.apache.jackrabbit.ocm.manager.ObjectContentManager; > import org.apache.jackrabbit.ocm.manager.impl.ObjectContentManagerImpl; > import org.apache.jackrabbit.ocm.mapper.Mapper; > @@ -236,6 +239,7 @@ public class JackrabbitTests extends OFB > helper.storeContentInRepository("superhero", "de", "Batman", "The > best superhero!", new GregorianCalendar()); > > assertEquals("en", helper.readContentFromRepository("/news/tomorrow", > "").getLanguage()); > + assertEquals("en", > helper.readContentFromRepository("/news/tomorrow/en", "").getLanguage()); > assertEquals("en", helper.readContentFromRepository("/news/tomorrow", > "de").getLanguage()); > assertEquals("en", helper.readContentFromRepository("/news/tomorrow", > "en").getLanguage()); > > @@ -248,6 +252,23 @@ public class JackrabbitTests extends OFB > helper.closeContentSession(); > } > > + public void testLanguageDeterminationExpectedPathNotFoundException() > throws ObjectContentManagerException, ItemExistsException { > + JcrDataHelper helper = new JackrabbitArticleHelper(userLogin); > + helper.storeContentInRepository("news/tomorrow", "en", "The news for > tomorrow.", "Content.", new GregorianCalendar()); > + > + try { > + helper.readContentFromRepository("/news/tomorrow/fr", > "").getLanguage(); > + // if no exception is thrown, the test should fail > + assertTrue("A PathNotFoundException is thrown as expected", > false); > + } catch (PathNotFoundException pnf) { > + // check if the right excpetion is thrown (in jUnit 4 this could > be replaced by annotations) > + assertTrue("A PathNotFoundException is catched as expected.", > true); > + } > + > + helper.removeContentObject("/news"); > + helper.closeContentSession(); > + } > + > /* > * Test the File upload > */ > >
