Author: cziegeler Date: Tue Nov 17 15:29:32 2009 New Revision: 881337 URL: http://svn.apache.org/viewvc?rev=881337&view=rev Log: No need to use the slingtest module, nodetypes are not needed and resource resolver can easily be mocked.
Modified: sling/trunk/contrib/extensions/i18n/pom.xml sling/trunk/contrib/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java Modified: sling/trunk/contrib/extensions/i18n/pom.xml URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/i18n/pom.xml?rev=881337&r1=881336&r2=881337&view=diff ============================================================================== --- sling/trunk/contrib/extensions/i18n/pom.xml (original) +++ sling/trunk/contrib/extensions/i18n/pom.xml Tue Nov 17 15:29:32 2009 @@ -24,7 +24,6 @@ <groupId>org.apache.sling</groupId> <artifactId>sling</artifactId> <version>7</version> - <relativePath>../../../parent/pom.xml</relativePath> </parent> <artifactId>org.apache.sling.i18n</artifactId> @@ -83,7 +82,7 @@ <dependency> <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.jcr.api</artifactId> - <version>2.0.2-incubator</version> + <version>2.0.4</version> <scope>provided</scope> </dependency> <dependency> @@ -122,12 +121,6 @@ </dependency> <dependency> <groupId>org.apache.sling</groupId> - <artifactId>org.apache.sling.commons.slingtest</artifactId> - <version>0.9.1-SNAPSHOT</version> - <scope>test</scope> - </dependency> - <dependency> - <groupId>org.apache.sling</groupId> <artifactId>org.apache.sling.commons.testing</artifactId> <version>2.0.5-SNAPSHOT</version> <scope>test</scope> Modified: sling/trunk/contrib/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java URL: http://svn.apache.org/viewvc/sling/trunk/contrib/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java?rev=881337&r1=881336&r2=881337&view=diff ============================================================================== --- sling/trunk/contrib/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java (original) +++ sling/trunk/contrib/extensions/i18n/src/test/java/org/apache/sling/i18n/impl/JcrResourceBundleTest.java Tue Nov 17 15:29:32 2009 @@ -19,6 +19,8 @@ package org.apache.sling.i18n.impl; import java.util.Enumeration; +import java.util.HashMap; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.Locale; import java.util.Map; @@ -26,11 +28,18 @@ import javax.jcr.Node; import javax.jcr.NodeIterator; import javax.jcr.RepositoryException; +import javax.jcr.Value; +import javax.jcr.query.Query; +import javax.jcr.query.QueryResult; +import javax.jcr.query.RowIterator; +import javax.naming.NamingException; +import javax.servlet.http.HttpServletRequest; +import org.apache.sling.api.resource.Resource; import org.apache.sling.api.resource.ResourceResolver; -import org.apache.sling.commons.testing.SlingTestHelper; import org.apache.sling.commons.testing.jcr.RepositoryTestBase; import org.apache.sling.commons.testing.jcr.RepositoryUtil; +import org.apache.sling.jcr.resource.JcrResourceUtil; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -38,28 +47,123 @@ * Tests the {...@link JcrResourceBundle} class. */ public class JcrResourceBundleTest extends RepositoryTestBase { - + private static final Logger log = LoggerFactory.getLogger(JcrResourceBundleTest.class); protected ResourceResolver resolver; - + public void setUp() throws Exception { super.setUp(); - + cleanRepository(); - - SlingTestHelper.registerSlingNodeTypes(getSession()); + RepositoryUtil.registerNodeType(getSession(), getClass() .getResourceAsStream("/SLING-INF/nodetypes/jcrlanguage.cnd")); RepositoryUtil.registerNodeType(getSession(), getClass() .getResourceAsStream("/SLING-INF/nodetypes/message.cnd")); - resolver = SlingTestHelper.getResourceResolver(getRepository(), - getSession()); - + resolver = new ResourceResolver() { + + public Iterator<Resource> findResources(String query, + String language) { + // TODO Auto-generated method stub + return null; + } + + public Resource getResource(Resource base, String path) { + // TODO Auto-generated method stub + return null; + } + + public Resource getResource(String path) { + // TODO Auto-generated method stub + return null; + } + + public String[] getSearchPath() { + return new String[] {"/apps/", "/libs/"}; + } + + public Iterator<Resource> listChildren(Resource parent) { + // TODO Auto-generated method stub + return null; + } + + public String map(HttpServletRequest request, String resourcePath) { + // TODO Auto-generated method stub + return null; + } + + public String map(String resourcePath) { + // TODO Auto-generated method stub + return null; + } + + public Iterator<Map<String, Object>> queryResources(String query, + String language) { + try { + final Query q = getSession().getWorkspace().getQueryManager().createQuery(query, language); + final QueryResult result = q.execute(); + final String[] colNames = result.getColumnNames(); + final RowIterator rows = result.getRows(); + return new Iterator<Map<String, Object>>() { + public boolean hasNext() { + return rows.hasNext(); + }; + + public Map<String, Object> next() { + Map<String, Object> row = new HashMap<String, Object>(); + try { + Value[] values = rows.nextRow().getValues(); + for (int i = 0; i < values.length; i++) { + Value v = values[i]; + if (v != null) { + row.put(colNames[i], + JcrResourceUtil.toJavaObject(values[i])); + } + } + } catch (RepositoryException re) { + // ignore + } + return row; + } + + public void remove() { + throw new UnsupportedOperationException("remove"); + } + }; + } catch (NamingException ne) { + return null; + } catch (RepositoryException re) { + return null; + } + } + + public Resource resolve(HttpServletRequest request, String absPath) { + // TODO Auto-generated method stub + return null; + } + + public Resource resolve(HttpServletRequest request) { + // TODO Auto-generated method stub + return null; + } + + public Resource resolve(String absPath) { + // TODO Auto-generated method stub + return null; + } + + public <AdapterType> AdapterType adaptTo(Class<AdapterType> type) { + // TODO Auto-generated method stub + return null; + } + + }; + createTestContent(); } - + public void cleanRepository() throws Exception { NodeIterator nodes = getSession().getRootNode().getNodes(); while (nodes.hasNext()) { @@ -74,9 +178,9 @@ } getSession().save(); } - + // ---------------------------------------------------------------< test data helper > - + /** * Helper class for creating test data in a generic way. */ @@ -85,16 +189,16 @@ public String message; public boolean useNodeName; public String path; - + public Message(String path, String key, String message, boolean useNodeName) { this.path = path; this.key = key; this.message = message; this.useNodeName = useNodeName; } - + private static int nodeNameCounter = 0; - + public void add(Node languageNode) throws RepositoryException { Node node = languageNode; String[] pathElements = path.split("/"); @@ -113,19 +217,19 @@ node.setProperty("sling:message", message); } } - + // test data to add to the repository (use linked hash map for insertion order) public static final Map<String, Message> MESSAGES_DE = new LinkedHashMap<String, Message>(); public static final Map<String, Message> MESSAGES_EN = new LinkedHashMap<String, Message>(); public static final Map<String, Message> MESSAGES_DE_APPS = new LinkedHashMap<String, Message>(); public static final Map<String, Message> MESSAGES_DE_BASENAME = new LinkedHashMap<String, Message>(); - + public static void add(Map<String, Message> map, Message msg) { map.put(msg.key, msg); } - + public static final Message PARENT_MSG = new Message("", "untranslated", "means: not translated", false); - + // create test data static { // 1. direct child node of language node, using sling:key @@ -136,7 +240,7 @@ add(MESSAGES_DE, new Message("f", "fork", "Gabel", false)); // 4. nested node, using nodename add(MESSAGES_DE, new Message("s/p/o", "spoon", "Lšffel", true)); - + // 5. not present in DE add(MESSAGES_DE, PARENT_MSG); @@ -150,10 +254,10 @@ add(MESSAGES_DE_BASENAME, new Message(msg.path, msg.key, "BASENAME", msg.useNodeName)); } } - + public void createTestContent() throws Exception { Node i18n = getSession().getRootNode().addNode("libs", "nt:unstructured").addNode("i18n", "nt:unstructured"); - + // some DE content Node de = i18n.addNode("de", "nt:folder"); de.addMixin("mix:language"); @@ -162,7 +266,7 @@ msg.add(de); } getSession().save(); - + // some EN content (for parent bundling) Node en = i18n.addNode("en", "nt:folder"); en.addMixin("mix:language"); @@ -171,32 +275,30 @@ msg.add(en); } getSession().save(); - - //SlingTestHelper.printJCR(getSession()); } - + // ---------------------------------------------------------------< tests > - + public void test_getString() { JcrResourceBundle bundle = new JcrResourceBundle(new Locale("de"), null, resolver); for (Message msg : MESSAGES_DE.values()) { assertEquals(msg.message, bundle.getString(msg.key)); } } - + public void test_getObject() { JcrResourceBundle bundle = new JcrResourceBundle(new Locale("de"), null, resolver); for (Message msg : MESSAGES_DE.values()) { assertEquals(msg.message, (String) bundle.getObject(msg.key)); } } - + public void test_handle_missing_key() { // test if key is returned if no entry found in repo JcrResourceBundle bundle = new JcrResourceBundle(new Locale("de"), null, resolver); assertEquals("missing", bundle.getString("missing")); } - + public void test_getKeys() { JcrResourceBundle bundle = new JcrResourceBundle(new Locale("de"), null, resolver); Enumeration<String> keys = bundle.getKeys(); @@ -208,13 +310,13 @@ } assertEquals(MESSAGES_DE.size(), counter); } - + public void test_bundle_parenting() { // set parent of resource bundle, test if passed through JcrResourceBundle bundle = new JcrResourceBundle(new Locale("de"), null, resolver); JcrResourceBundle parentBundle = new JcrResourceBundle(new Locale("en"), null, resolver); bundle.setParent(parentBundle); - + assertEquals(PARENT_MSG.message, bundle.getObject(PARENT_MSG.key)); } @@ -228,13 +330,13 @@ msg.add(de); } getSession().save(); - + // test getString JcrResourceBundle bundle = new JcrResourceBundle(new Locale("de"), null, resolver); for (Message msg : MESSAGES_DE_APPS.values()) { assertEquals(msg.message, bundle.getString(msg.key)); } - + // test getKeys Enumeration<String> keys = bundle.getKeys(); int counter = 0; @@ -245,7 +347,7 @@ } assertEquals(MESSAGES_DE.size(), counter); } - + public void test_basename() throws Exception { // create another de lib with a basename set @@ -258,13 +360,13 @@ msg.add(de); } getSession().save(); - + // test getString JcrResourceBundle bundle = new JcrResourceBundle(new Locale("de"), "FOO", resolver); for (Message msg : MESSAGES_DE_BASENAME.values()) { assertEquals(msg.message, bundle.getString(msg.key)); } - + // test getKeys Enumeration<String> keys = bundle.getKeys(); int counter = 0;