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;