Author: cihan
Date: Mon May  9 13:06:25 2011
New Revision: 1101008

URL: http://svn.apache.org/viewvc?rev=1101008&view=rev
Log:
STANBOL-188 Added OfflineAccessor that will be used by REST services. Using 
this accessor processors do not have to take specific action to handle offline 
updates. 

Added:
    
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccess.java
    
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/CMSObjectBuilder.java
    
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/NamingHelper.java
    
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/ObjectTypeBuilder.java
    
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/PropertyBuilder.java
    
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/PropertyDefinitionBuilder.java
    
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/repository/
    
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccessTest.java
Modified:
    incubator/stanbol/trunk/cmsadapter/core/pom.xml
    
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/RepositoryAccessManagerImpl.java
    
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/DobjectFactoryImpTest.java
    
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/MockOnlineAccess.java
    incubator/stanbol/trunk/cmsadapter/parent/pom.xml
    
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccessException.java

Modified: incubator/stanbol/trunk/cmsadapter/core/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/pom.xml?rev=1101008&r1=1101007&r2=1101008&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/pom.xml (original)
+++ incubator/stanbol/trunk/cmsadapter/core/pom.xml Mon May  9 13:06:25 2011
@@ -83,6 +83,10 @@
                        <groupId>org.slf4j</groupId>
                        <artifactId>slf4j-simple</artifactId>
                </dependency>
+               <dependency>
+                       <groupId>commons-collections</groupId>
+                       <artifactId>commons-collections</artifactId>
+               </dependency>
        </dependencies>
 </project>
 

Added: 
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccess.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccess.java?rev=1101008&view=auto
==============================================================================
--- 
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccess.java
 (added)
+++ 
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccess.java
 Mon May  9 13:06:25 2011
@@ -0,0 +1,321 @@
+package org.apache.stanbol.cmsadapter.core.repository;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.collections.map.MultiValueMap;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.CMSObject;
+import 
org.apache.stanbol.cmsadapter.servicesapi.model.web.ChildObjectDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ConnectionInfo;
+import 
org.apache.stanbol.cmsadapter.servicesapi.model.web.ObjectTypeDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.Property;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccess;
+import 
org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+
+public class OfflineAccess implements RepositoryAccess {
+
+    MultiValueMap nameMap = new MultiValueMap();
+    Map<String,CMSObject> cmsObjectMap = new HashMap<String,CMSObject>();
+    Map<String,PropertyDefinition> propDefinitionMap = new 
HashMap<String,PropertyDefinition>();
+    Map<String,ObjectTypeDefinition> typeDefinitionMap = new 
HashMap<String,ObjectTypeDefinition>();
+    // TODO find a more suitable solution
+    Map<Property,CMSObject> propertyMap = new HashMap<Property,CMSObject>();
+
+    public OfflineAccess(List<Object> repository) {
+        for (Object cmsObject : repository) {
+            if (cmsObject instanceof CMSObject) {
+                processCMSOBject((CMSObject) cmsObject);
+            } else if (cmsObject instanceof ObjectTypeDefinition) {
+                processObjectTypeDefinition((ObjectTypeDefinition) cmsObject);
+            } else if (cmsObject instanceof PropertyDefinition) {
+                processPropertyDefinition((PropertyDefinition) cmsObject);
+            } else {
+                throw new IllegalArgumentException("Offline accessor can not 
handle type "
+                                                   + 
cmsObject.getClass().getName());
+            }
+        }
+    }
+
+    private void processPropertyDefinition(PropertyDefinition propDef) {
+        propDefinitionMap.put(propDef.getUniqueRef(), propDef);
+    }
+
+    private void processObjectTypeDefinition(ObjectTypeDefinition typeDef) {
+        typeDefinitionMap.put(typeDef.getUniqueRef(), typeDef);
+        for (PropertyDefinition propDef : typeDef.getPropertyDefinition()) {
+            propDefinitionMap.put(propDef.getUniqueRef(), propDef);
+        }
+    }
+
+    private void processCMSOBject(CMSObject cmsObject) {
+        cmsObjectMap.put(cmsObject.getUniqueRef(), cmsObject);
+        if(!nameMap.containsValue(cmsObject.getLocalname(), cmsObject)){
+            nameMap.put(cmsObject.getLocalname(), cmsObject);
+        }
+
+        for (Property prop : cmsObject.getProperty()) {
+            propertyMap.put(prop, cmsObject);
+            propDefinitionMap.put(prop.getPropertyDefinition().getUniqueRef(), 
prop.getPropertyDefinition());
+        }
+
+        for (CMSObject child : cmsObject.getChildren()) {
+            processCMSOBject(child);
+        }
+    }
+
+    @Override
+    public Object getSession(ConnectionInfo connectionInfo) throws 
RepositoryAccessException {
+        throw new UnsupportedOperationException("Offline Repository Access 
does not handle connections");
+    }
+
+    @Override
+    public List<CMSObject> getNodeByPath(String path, Object session) throws 
RepositoryAccessException {
+        checkNullArgument(session);
+        return getNodeByPath(path);
+
+    }
+
+    @Override
+    public List<CMSObject> getNodeByPath(String path, ConnectionInfo 
connectionInfo) throws RepositoryAccessException {
+        checkNullArgument(connectionInfo);
+        return getNodeByPath(path);
+    }
+
+    private List<CMSObject> getNodeByPath(String path) {
+        List<CMSObject> nodes = new ArrayList<CMSObject>();
+        for (CMSObject cmsObject : cmsObjectMap.values()) {
+            if (matches(path, cmsObject.getPath())) {
+                nodes.add(cmsObject);
+            }
+        }
+
+        return nodes;
+    }
+
+    @Override
+    public List<CMSObject> getNodeById(String id, ConnectionInfo 
connectionInfo) throws RepositoryAccessException {
+        checkNullArgument(connectionInfo);
+        return getNodeById(id);
+    }
+
+    @Override
+    public List<CMSObject> getNodeById(String id, Object session) throws 
RepositoryAccessException {
+        checkNullArgument(session);
+        return getNodeById(id);
+    }
+
+    private List<CMSObject> getNodeById(String id) throws 
RepositoryAccessException {
+        CMSObject cmsObject = cmsObjectMap.get(id);
+        if (cmsObject == null) {
+            throw new RepositoryAccessException("No object with id=" + id);
+        } else {
+            return Arrays.asList(new CMSObject[] {cmsObject});
+        }
+    }
+
+    @Override
+    public List<CMSObject> getNodeByName(String name, Object session) throws 
RepositoryAccessException {
+        checkNullArgument(session);
+        return getNodeByName(name);
+    }
+
+    @Override
+    public List<CMSObject> getNodeByName(String name, ConnectionInfo 
connectionInfo) throws RepositoryAccessException {
+        checkNullArgument(connectionInfo);
+        return getNodeByName(name);
+    }
+
+    private List<CMSObject> getNodeByName(String name) {
+        List<CMSObject> nodes = (List<CMSObject>) nameMap.get(name);
+        if (nodes == null) {
+            nodes = Collections.emptyList();
+        }
+        return nodes;
+    }
+
+    @Override
+    public CMSObject getFirstNodeByPath(String path, ConnectionInfo 
connectionInfo) throws RepositoryAccessException {
+        checkNullArgument(connectionInfo);
+        return getFirstNodeByPath(path);
+    }
+
+    @Override
+    public CMSObject getFirstNodeByPath(String path, Object session) throws 
RepositoryAccessException {
+        checkNullArgument(session);
+        return getFirstNodeByPath(path);
+    }
+
+    private CMSObject getFirstNodeByPath(String path) {
+        for (CMSObject cmsObject : cmsObjectMap.values()) {
+            if (matches(path, cmsObject.getPath())) {
+                return cmsObject;
+            }
+        }
+        return null;
+    }
+
+    @Override
+    public CMSObject getFirstNodeById(String id, ConnectionInfo 
connectionInfo) throws RepositoryAccessException {
+        checkNullArgument(connectionInfo);
+        return getFirstNodeById(id);
+    }
+
+    @Override
+    public CMSObject getFirstNodeById(String id, Object session) throws 
RepositoryAccessException {
+        checkNullArgument(session);
+        return getFirstNodeById(id);
+    }
+
+    private CMSObject getFirstNodeById(String id) throws 
RepositoryAccessException {
+        return getNodeById(id).get(0);
+    }
+
+    @Override
+    public CMSObject getFirstNodeByName(String name, Object session) throws 
RepositoryAccessException {
+        checkNullArgument(session);
+        return getFirstNodeByName(name);
+    }
+
+    @Override
+    public CMSObject getFirstNodeByName(String name, ConnectionInfo 
connectionInfo) throws RepositoryAccessException {
+        checkNullArgument(connectionInfo);
+        return getFirstNodeByName(name);
+    }
+
+    private CMSObject getFirstNodeByName(String name) {
+        List<CMSObject> nodes = (List<CMSObject>) nameMap.get(name);
+        if (nodes == null || nodes.size() < 1) {
+            return null;
+        } else {
+            return nodes.get(0);
+        }
+    }
+
+    @Override
+    public List<CMSObject> getChildren(CMSObject node, Object session) throws 
RepositoryAccessException {
+        checkNullArgument(session);
+        return node.getChildren();
+    }
+
+    @Override
+    public ObjectTypeDefinition getObjectTypeDefinition(String typeRef, Object 
session) throws RepositoryAccessException {
+        checkNullArgument(session);
+        if (typeDefinitionMap.containsKey(typeRef)) {
+            return typeDefinitionMap.get(typeRef);
+        } else {
+            throw new RepositoryAccessException("No object type definition 
with id " + typeRef);
+        }
+    }
+
+    @Override
+    public List<Property> getProperties(CMSObject node, Object session) throws 
RepositoryAccessException {
+        checkNullArgument(session);
+        return node.getProperty();
+    }
+
+    @Override
+    public List<PropertyDefinition> 
getPropertyDefinitions(ObjectTypeDefinition instance, Object session) throws 
RepositoryAccessException {
+        checkNullArgument(session);
+        return instance.getPropertyDefinition();
+    }
+
+    @Override
+    public List<ObjectTypeDefinition> 
getParentTypeDefinitions(ObjectTypeDefinition instance, Object session) throws 
RepositoryAccessException {
+        // TODO Check if this interpreted correctly
+        checkNullArgument(session);
+        List<ObjectTypeDefinition> parentTypeDefinitions = new 
ArrayList<ObjectTypeDefinition>();
+        for (String parentRef : instance.getParentRef()) {
+            if (cmsObjectMap.containsKey(parentRef)) {
+                String parentTypeRef = 
cmsObjectMap.get(parentRef).getObjectTypeRef();
+                if (typeDefinitionMap.containsKey(parentTypeRef)) {
+                    
parentTypeDefinitions.add(typeDefinitionMap.get(parentTypeRef));
+                }
+            }
+        }
+
+        return parentTypeDefinitions;
+    }
+
+    @Override
+    public List<ChildObjectDefinition> 
getChildObjectTypeDefinitions(ObjectTypeDefinition instance,
+                                                                     Object 
session) throws RepositoryAccessException {
+        checkNullArgument(session);
+        return instance.getChildObjectDefinition();
+    }
+
+    @Override
+    public ObjectTypeDefinition getAllowableTypeDef(ChildObjectDefinition 
instance, Object session) throws RepositoryAccessException {
+        checkNullArgument(session);
+        String typeDefRef = instance.getAllowedObjectTypeDefRef();
+        if (typeDefinitionMap.containsKey(typeDefRef)) {
+            return typeDefinitionMap.get(typeDefRef);
+        } else {
+            throw new RepositoryAccessException("No type definition with id " 
+ typeDefRef);
+        }
+
+    }
+
+    @Override
+    public CMSObject getContainerObject(Property instance, Object session) 
throws RepositoryAccessException {
+        checkNullArgument(session);
+        if (propertyMap.containsKey(instance)) {
+            return propertyMap.get(instance);
+        } else {
+            throw new RepositoryAccessException("Container object for property 
not found");
+        }
+    }
+
+    @Override
+    public PropertyDefinition getPropertyDefinition(Property instance, Object 
session) throws RepositoryAccessException {
+        return instance.getPropertyDefinition();
+    }
+
+    @Override
+    public String getNamespaceURI(String prefix, Object session) throws 
RepositoryAccessException {
+        // TODO find a good solution here.
+        throw new UnsupportedOperationException(
+                "Offline Repository Access does not handle connections, thus 
prefixes can not be accessible");
+    }
+
+    @Override
+    public boolean canRetrieve(ConnectionInfo connectionInfo) {
+        throw new UnsupportedOperationException("Offline Repository Access 
does not handle connections");
+    }
+
+    @Override
+    public boolean canRetrieve(Object session) {
+        throw new UnsupportedOperationException("Offline Repository Access 
does not handle connections");
+    }
+
+    @Override
+    public CMSObject getParentByNode(CMSObject instance, Object session) 
throws RepositoryAccessException {
+        checkNullArgument(session);
+        String parentRef = instance.getParentRef();
+        if (cmsObjectMap.containsKey(parentRef)) {
+            return cmsObjectMap.get(parentRef);
+        } else {
+            throw new RepositoryAccessException("No object with id=" + 
parentRef);
+        }
+    }
+
+    private void checkNullArgument(Object argument) {
+        if (argument != null) {
+            throw new IllegalArgumentException(
+                    "Offline accessor can not handle non-null Session or 
Connection Info");
+        }
+    }
+
+    private boolean matches(String pathExpr, String realPath) {
+        // TODO implement
+        if (pathExpr.endsWith("%")) {
+            return realPath.contains(pathExpr.substring(0, pathExpr.length() - 
1));
+        } else {
+            return pathExpr.contentEquals(realPath);
+        }
+    }
+}

Modified: 
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/RepositoryAccessManagerImpl.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/RepositoryAccessManagerImpl.java?rev=1101008&r1=1101007&r2=1101008&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/RepositoryAccessManagerImpl.java
 (original)
+++ 
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/repository/RepositoryAccessManagerImpl.java
 Mon May  9 13:06:25 2011
@@ -57,6 +57,16 @@ public class RepositoryAccessManagerImpl
             }
         }
 
+        if (session instanceof List<?>) {
+            try {
+                return new OfflineAccess((List<Object>) session);
+            } catch (IllegalArgumentException e) {
+                logger.debug(e.getMessage());
+            }
+            logger.debug("Using offline accessor");
+
+        }
+
         logger.warn("No suitable repository access implementation for session 
{} ", session);
         return null;
     }

Added: 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/CMSObjectBuilder.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/CMSObjectBuilder.java?rev=1101008&view=auto
==============================================================================
--- 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/CMSObjectBuilder.java
 (added)
+++ 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/CMSObjectBuilder.java
 Mon May  9 13:06:25 2011
@@ -0,0 +1,51 @@
+package org.apache.stanbol.cmsadapter.core.decorated;
+
+import static 
org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.LOCAL_NAME;
+import static 
org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.NAMESPACE;
+import static org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.PATH;
+import static 
org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.UNIQUE_REF;
+
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.CMSObject;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ObjectFactory;
+
+// Unnecessarily, eagerly builds objects but OK for tests.
+public class CMSObjectBuilder {
+
+    private static ObjectFactory of = new ObjectFactory();
+    private CMSObject instance = of.createCMSObject();
+    private String prefix;
+
+    public CMSObjectBuilder(String prefix) {
+        this.prefix = prefix;
+        instance.setUniqueRef(prefix + UNIQUE_REF);
+        instance.setLocalname(prefix + LOCAL_NAME);
+        instance.setPath(prefix + PATH);
+    }
+
+    public CMSObjectBuilder(String prefix, String id, String name, String 
path) {
+        this.prefix = prefix;
+        instance.setUniqueRef(prefix + id);
+        instance.setLocalname(prefix + name);
+        instance.setPath(prefix + path);
+    }
+
+    public CMSObjectBuilder namespace() {
+        instance.setNamespace(prefix + NAMESPACE);
+        return this;
+    }
+
+    public CMSObjectBuilder namespace(String namespace) {
+        instance.setNamespace(prefix + namespace);
+        return this;
+    }
+
+    public CMSObjectBuilder child(CMSObject child) {
+        instance.getChildren().add(child);
+        return this;
+    }
+
+    public CMSObject build() {
+        return instance;
+    }
+
+}
\ No newline at end of file

Modified: 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/DobjectFactoryImpTest.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/DobjectFactoryImpTest.java?rev=1101008&r1=1101007&r2=1101008&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/DobjectFactoryImpTest.java
 (original)
+++ 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/DobjectFactoryImpTest.java
 Mon May  9 13:06:25 2011
@@ -1,12 +1,15 @@
 package org.apache.stanbol.cmsadapter.core.decorated;
 
+import static 
org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.LOCAL_NAME;
+import static 
org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.NAMESPACE;
+import static org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.PATH;
+import static 
org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.UNIQUE_REF;
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertNull;
 
 import java.util.List;
 
 import org.apache.stanbol.cmsadapter.servicesapi.model.web.CMSObject;
-import org.apache.stanbol.cmsadapter.servicesapi.model.web.ObjectFactory;
 import 
org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.AdapterMode;
 import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObject;
 import 
org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObjectAdapter;
@@ -20,11 +23,6 @@ import org.junit.rules.ExpectedException
 
 public class DobjectFactoryImpTest {
 
-    public static final String LOCAL_NAME = "localname";
-    public static final String PATH = "path";
-    public static final String UNIQUE_REF = "unique_ref";
-    public static final String ROOT_PARENT_REF = null;
-    public static final String NAMESPACE = "namespace";
     public static final String PREFIX_ROOT = "root_";
     public static final String PREFIX_CHILD_1 = "child_1_";
     public static final String PREFIX_CHILD_2 = "child_2_";
@@ -48,47 +46,6 @@ public class DobjectFactoryImpTest {
     @AfterClass
     public static void tearDownAfterClass() throws Exception {}
 
-    // Unnecessarily, eagerly builds objects but OK for tests.
-    public static class CMSObjectBuilder {
-        private static ObjectFactory of = new ObjectFactory();
-        private CMSObject instance = of.createCMSObject();
-        private String prefix;
-
-        public CMSObjectBuilder(String prefix) {
-            this.prefix = prefix;
-            instance.setUniqueRef(prefix + UNIQUE_REF);
-            instance.setLocalname(prefix + LOCAL_NAME);
-            instance.setPath(prefix + PATH);
-        }
-
-        public CMSObjectBuilder(String prefix, String id, String name, String 
path) {
-            this.prefix = prefix;
-            instance.setUniqueRef(prefix + id);
-            instance.setLocalname(prefix + name);
-            instance.setPath(prefix + path);
-        }
-
-        public CMSObjectBuilder namespace() {
-            instance.setNamespace(prefix + NAMESPACE);
-            return this;
-        }
-
-        public CMSObjectBuilder namespace(String namespace) {
-            instance.setNamespace(prefix + namespace);
-            return this;
-        }
-
-        public CMSObjectBuilder child(CMSObject child) {
-            instance.getChildren().add(child);
-            return this;
-        }
-
-        public CMSObject build() {
-            return instance;
-        }
-
-    }
-
     @Before
     public void setUp() {
         rootStripped = new CMSObjectBuilder(PREFIX_ROOT).namespace().build();
@@ -128,43 +85,43 @@ public class DobjectFactoryImpTest {
         DObject root = sOfflineAdapter.wrapAsDObject(rootStripped);
         assertNull(root.getParent());
     }
-    
+
     @Test
-    public void testDObjectChildsOnline() throws RepositoryAccessException{
+    public void testDObjectChildsOnline() throws RepositoryAccessException {
         DObject root = onlineAdapter.wrapAsDObject(rootStripped);
         List<DObject> children = root.getChildren();
         assertEquals(2, children.size());
     }
-    
+
     @Test
-    public void testDObjectChildsOffline() throws RepositoryAccessException{
+    public void testDObjectChildsOffline() throws RepositoryAccessException {
         DObject rootd = sOfflineAdapter.wrapAsDObject(root);
         List<DObject> children = rootd.getChildren();
         assertEquals(2, children.size());
     }
-    
+
     @Test
-    public void testDObjectChildsOfflineStripped() throws 
RepositoryAccessException{
+    public void testDObjectChildsOfflineStripped() throws 
RepositoryAccessException {
         DObject rootd = sOfflineAdapter.wrapAsDObject(rootStripped);
         List<DObject> children = rootd.getChildren();
         assertEquals(0, children.size());
     }
-    
+
     @Test
-    public void testDObjectChildsTOfflineStripped() throws 
RepositoryAccessException{
+    public void testDObjectChildsTOfflineStripped() throws 
RepositoryAccessException {
         DObject rootd = tOfflineAdapter.wrapAsDObject(root);
         List<DObject> children = rootd.getChildren();
         assertEquals(2, children.size());
     }
-    
-    @Test 
-    public void testDObjectTypeSOffline() throws RepositoryAccessException{
+
+    @Test
+    public void testDObjectTypeSOffline() throws RepositoryAccessException {
         DObject rootd = sOfflineAdapter.wrapAsDObject(root);
         assertNull(rootd.getObjectType());
     }
-    
-    @Test 
-    public void testDObjectTypeOnline() throws RepositoryAccessException{
+
+    @Test
+    public void testDObjectTypeOnline() throws RepositoryAccessException {
         DObject rootd = onlineAdapter.wrapAsDObject(rootStripped);
         expectedException.expect(RepositoryAccessException.class);
         rootd.getObjectType();

Modified: 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/MockOnlineAccess.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/MockOnlineAccess.java?rev=1101008&r1=1101007&r2=1101008&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/MockOnlineAccess.java
 (original)
+++ 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/MockOnlineAccess.java
 Mon May  9 13:06:25 2011
@@ -1,10 +1,10 @@
 package org.apache.stanbol.cmsadapter.core.decorated;
 
+import static 
org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.UNIQUE_REF;
+
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.List;
 
-import 
org.apache.stanbol.cmsadapter.core.decorated.DobjectFactoryImpTest.CMSObjectBuilder;
 import org.apache.stanbol.cmsadapter.servicesapi.model.web.CMSObject;
 import 
org.apache.stanbol.cmsadapter.servicesapi.model.web.ChildObjectDefinition;
 import org.apache.stanbol.cmsadapter.servicesapi.model.web.ConnectionInfo;
@@ -103,9 +103,7 @@ public class MockOnlineAccess implements
 
     @Override
     public List<CMSObject> getChildren(CMSObject node, Object session) throws 
RepositoryAccessException {
-        if (node == null
-            || !node.getUniqueRef().equals(
-                DobjectFactoryImpTest.PREFIX_ROOT + 
DobjectFactoryImpTest.UNIQUE_REF)) {
+        if (node == null || 
!node.getUniqueRef().equals(DobjectFactoryImpTest.PREFIX_ROOT + UNIQUE_REF)) {
             return null;
 
         } else {
@@ -118,7 +116,7 @@ public class MockOnlineAccess implements
     @Override
     public ObjectTypeDefinition getObjectTypeDefinition(String typeRef, Object 
session) throws RepositoryAccessException {
         // TODO Auto-generated method stub
-        if(typeRef == null){
+        if (typeRef == null) {
             throw new RepositoryAccessException("Null typeRef", null);
         }
         return null;

Added: 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/NamingHelper.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/NamingHelper.java?rev=1101008&view=auto
==============================================================================
--- 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/NamingHelper.java
 (added)
+++ 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/NamingHelper.java
 Mon May  9 13:06:25 2011
@@ -0,0 +1,10 @@
+package org.apache.stanbol.cmsadapter.core.decorated;
+
+public class NamingHelper {
+    
+    public static final String LOCAL_NAME = "localname";
+    public static final String PATH = "path";
+    public static final String UNIQUE_REF = "unique_ref";
+    public static final String ROOT_PARENT_REF = null;
+    public static final String NAMESPACE = "namespace";
+}

Added: 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/ObjectTypeBuilder.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/ObjectTypeBuilder.java?rev=1101008&view=auto
==============================================================================
--- 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/ObjectTypeBuilder.java
 (added)
+++ 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/ObjectTypeBuilder.java
 Mon May  9 13:06:25 2011
@@ -0,0 +1,41 @@
+package org.apache.stanbol.cmsadapter.core.decorated;
+
+import static 
org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.LOCAL_NAME;
+import static 
org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.NAMESPACE;
+import static 
org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.UNIQUE_REF;
+
+import 
org.apache.stanbol.cmsadapter.servicesapi.model.web.ChildObjectDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ObjectFactory;
+import 
org.apache.stanbol.cmsadapter.servicesapi.model.web.ObjectTypeDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition;
+
+public class ObjectTypeBuilder {
+    private static ObjectFactory of = new ObjectFactory();
+    private ObjectTypeDefinition instance = of.createObjectTypeDefinition();
+
+    public ObjectTypeBuilder(String prefix) {
+        instance.setUniqueRef(prefix + UNIQUE_REF);
+        instance.setLocalname(prefix + LOCAL_NAME);
+        instance.setNamespace(prefix + NAMESPACE);
+    }
+
+    public ObjectTypeBuilder parentRef(String parentRef) {
+        instance.getParentRef().add(parentRef);
+        return this;
+    }
+
+    public ObjectTypeBuilder propertyDefinition(PropertyDefinition propDef) {
+        instance.getPropertyDefinition().add(propDef);
+        return this;
+    }
+
+    public ObjectTypeBuilder childObjectDefinition(ChildObjectDefinition 
childDef) {
+        instance.getChildObjectDefinition().add(childDef);
+        return this;
+    }
+
+    public ObjectTypeDefinition build() {
+        return instance;
+    }
+
+}

Added: 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/PropertyBuilder.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/PropertyBuilder.java?rev=1101008&view=auto
==============================================================================
--- 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/PropertyBuilder.java
 (added)
+++ 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/PropertyBuilder.java
 Mon May  9 13:06:25 2011
@@ -0,0 +1,33 @@
+package org.apache.stanbol.cmsadapter.core.decorated;
+
+import static 
org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.LOCAL_NAME;
+
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.CMSObject;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ObjectFactory;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.Property;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition;
+
+public class PropertyBuilder {
+    private static ObjectFactory of = new ObjectFactory();
+    private Property instance = of.createProperty();
+
+    public PropertyBuilder(String prefix) {
+        instance.setLocalname(prefix + LOCAL_NAME);
+    }
+
+    public PropertyBuilder propertyDefinition(PropertyDefinition propDef) {
+        instance.setPropertyDefinition(propDef);
+        return this;
+    }
+    
+    
+    public PropertyBuilder containerObjectRef(CMSObject obj){
+        instance.setContainerObjectRef(obj.getUniqueRef());
+        return this;
+    }
+    
+    public Property build(){
+        return instance;
+    }
+    
+}

Added: 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/PropertyDefinitionBuilder.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/PropertyDefinitionBuilder.java?rev=1101008&view=auto
==============================================================================
--- 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/PropertyDefinitionBuilder.java
 (added)
+++ 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/PropertyDefinitionBuilder.java
 Mon May  9 13:06:25 2011
@@ -0,0 +1,24 @@
+package org.apache.stanbol.cmsadapter.core.decorated;
+
+import static 
org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.LOCAL_NAME;
+import static 
org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.NAMESPACE;
+import static 
org.apache.stanbol.cmsadapter.core.decorated.NamingHelper.UNIQUE_REF;
+
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ObjectFactory;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition;
+
+public class PropertyDefinitionBuilder {
+    private ObjectFactory of = new ObjectFactory();
+    private PropertyDefinition instance = of.createPropertyDefinition();
+
+    public PropertyDefinitionBuilder(String prefix) {
+        instance.setUniqueRef(prefix + UNIQUE_REF);
+        instance.setLocalname(prefix + LOCAL_NAME);
+        instance.setNamespace(prefix + NAMESPACE);
+    }
+
+    public PropertyDefinition build() {
+        return instance;
+    }
+
+}

Added: 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccessTest.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccessTest.java?rev=1101008&view=auto
==============================================================================
--- 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccessTest.java
 (added)
+++ 
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/repository/OfflineAccessTest.java
 Mon May  9 13:06:25 2011
@@ -0,0 +1,282 @@
+package org.apache.stanbol.cmsadapter.core.repository;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertSame;
+import static org.junit.Assert.assertTrue;
+import static org.junit.Assert.fail;
+
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.stanbol.cmsadapter.core.decorated.CMSObjectBuilder;
+import org.apache.stanbol.cmsadapter.core.decorated.ObjectTypeBuilder;
+import org.apache.stanbol.cmsadapter.core.decorated.PropertyBuilder;
+import org.apache.stanbol.cmsadapter.core.decorated.PropertyDefinitionBuilder;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.CMSObject;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.ConnectionInfo;
+import 
org.apache.stanbol.cmsadapter.servicesapi.model.web.ObjectTypeDefinition;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.Property;
+import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition;
+import 
org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+import org.junit.rules.ExpectedException;
+
+public class OfflineAccessTest {
+
+    private static final String PX_ROOT = "root";
+    private static final String PX_O_11 = "child11";
+    private static final String PX_O_12 = "child12";
+    private static final String PX_O_21 = "child21";
+    private static final String PX_O_13 = "child13";
+    private static final String PX_PD_1 = "propdef1";
+    private static final String PX_PD_2 = "propdef2";
+    private static final String PX_PD_3 = "propdef3";
+    private static final String PX_P_1 = "prop1";
+    private static final String PX_P_2 = "prop2";
+    // private static final String PX_P_3 = "prop3";
+    private static final String PX_OT_1 = "objectype1";
+    private static final String PX_OT_2 = "objectype2";
+    private static final String PX_OT_3 = "objectype3";
+    // Simulate an input repository(will be submitted through rest services)
+    private static List<Object> repository;
+    private static RepositoryAccessManagerImpl accessManager;
+    private static OfflineAccess offlineAccess;
+
+    @Rule
+    public ExpectedException expectedException = ExpectedException.none();
+
+    @BeforeClass
+    public static void setUpBeforeClass() throws Exception {
+        // initialize a dummy repository
+        repository = new ArrayList<Object>();
+        PropertyDefinition pd1 = new 
PropertyDefinitionBuilder(PX_PD_1).build();
+        PropertyDefinition pd2 = new 
PropertyDefinitionBuilder(PX_PD_2).build();
+        PropertyDefinition pd3 = new 
PropertyDefinitionBuilder(PX_PD_3).build();
+        Property p1 = new 
PropertyBuilder(PX_P_1).propertyDefinition(pd1).build();
+        Property p2 = new 
PropertyBuilder(PX_P_2).propertyDefinition(pd2).build();
+        CMSObject root = new CMSObjectBuilder(PX_ROOT).build();
+        CMSObject child11 = new CMSObjectBuilder(PX_O_11).build();
+        CMSObject child12 = new CMSObjectBuilder(PX_O_12).build();
+        CMSObject child21 = new CMSObjectBuilder(PX_O_21).build();
+        CMSObject child13 = new CMSObjectBuilder(PX_O_13).build();
+
+        ObjectTypeDefinition type1 = new 
ObjectTypeBuilder(PX_OT_1).propertyDefinition(pd1).build();
+        ObjectTypeDefinition type2 = new 
ObjectTypeBuilder(PX_OT_2).propertyDefinition(pd2).build();
+        ObjectTypeDefinition type3 = new 
ObjectTypeBuilder(PX_OT_3).propertyDefinition(pd3).build();
+
+        root.setObjectTypeRef(type1.getUniqueRef());
+        child11.setObjectTypeRef(type1.getUniqueRef());
+        child12.setObjectTypeRef(type2.getUniqueRef());
+        child13.setObjectTypeRef(type2.getUniqueRef());
+        child21.setObjectTypeRef(type3.getUniqueRef());
+
+        p1.setContainerObjectRef(root.getUniqueRef());
+        root.getProperty().add(p1);
+        root.getProperty().add(p2);
+
+        root.getChildren().add(child11);
+        child11.setParentRef(root.getUniqueRef());
+
+        root.getChildren().add(child12);
+        child12.setParentRef(root.getUniqueRef());
+
+        child11.getChildren().add(child21);
+        child21.setParentRef(child11.getUniqueRef());
+
+        // child13 has the same name as child11
+        root.getChildren().add(child13);
+        child13.setParentRef(root.getUniqueRef());
+        child13.setLocalname(child11.getLocalname());
+
+        processPaths(root);
+        repository.addAll(Arrays.asList(new Object[] {root, child11, child12, 
child13, child21, type1, type2,
+                                                      type3, pd1, pd2}));
+
+    }
+
+    @Test
+    public void testOfflineAccess() {
+        try {
+            offlineAccess = new OfflineAccess(repository);
+        } catch (Exception e) {
+            fail("Exception in constructor: " + e.getMessage());
+        }
+    }
+
+    @Test
+    public void testGetSession() throws RepositoryAccessException {
+        expectedException.expect(UnsupportedOperationException.class);
+        offlineAccess.getSession(new ConnectionInfo());
+    }
+
+    @Test
+    public void testGetNodeByPath() throws RepositoryAccessException {
+        List<CMSObject> real = offlineAccess.getNodeByPath("/", null);
+        // Check only the root is returned
+        assertEquals(1, real.size());
+        assertSame(repository.get(0), real.get(0));
+
+        List<CMSObject> all = offlineAccess.getNodeByPath("/%", null);
+        assertEquals(5, all.size());
+
+        expectedException.expect(IllegalArgumentException.class);
+        offlineAccess.getNodeByPath("/", new Object());
+    }
+
+    @Test
+    public void testGetNodeById() throws RepositoryAccessException {
+        CMSObject expected = (CMSObject) repository.get(0);
+        List<CMSObject> real = 
offlineAccess.getNodeById(expected.getUniqueRef(), null);
+
+        assertEquals(1, real.size());
+        assertSame(expected, real.get(0));
+
+        expectedException.expect(RepositoryAccessException.class);
+        real = offlineAccess.getNodeById(UUID.randomUUID().toString(), null);
+        assertEquals(0, real.size());
+
+    }
+
+    @Test
+    public void testGetNodeByName() throws RepositoryAccessException {
+        CMSObject c11 = (CMSObject) repository.get(1);
+        CMSObject c13 = (CMSObject) repository.get(3);
+
+        List<CMSObject> real = offlineAccess.getNodeByName(c11.getLocalname(), 
null);
+        assertEquals(2, real.size());
+        assertSame(c11, real.get(0));
+        assertSame(c13, real.get(1));
+
+        expectedException.expect(IllegalArgumentException.class);
+        offlineAccess.getNodeByName(UUID.randomUUID().toString(), new 
Object());
+    }
+
+    @Test
+    public void testGetFirstNodeByPath() throws RepositoryAccessException {
+        CMSObject real = offlineAccess.getFirstNodeByPath("/", null);
+        // Check only the root is returned
+        assertSame(repository.get(0), real);
+
+        CMSObject all = offlineAccess.getFirstNodeByPath("/%", null);
+        assertNotNull(all);
+
+        expectedException.expect(IllegalArgumentException.class);
+        offlineAccess.getFirstNodeByPath("/", new Object());
+    }
+
+    @Test
+    public void testGetFirstNodeById() throws RepositoryAccessException {
+        CMSObject expected = (CMSObject) repository.get(0);
+        CMSObject real = 
offlineAccess.getFirstNodeById(expected.getUniqueRef(), null);
+
+        assertSame(expected, real);
+
+        expectedException.expect(RepositoryAccessException.class);
+        real = offlineAccess.getFirstNodeById(UUID.randomUUID().toString(), 
null);
+
+    }
+
+    @Test
+    public void testGetFirstNodeByName() throws RepositoryAccessException {
+        CMSObject c11 = (CMSObject) repository.get(1);
+        CMSObject c13 = (CMSObject) repository.get(3);
+
+        CMSObject real = offlineAccess.getFirstNodeByName(c11.getLocalname(), 
null);
+        assertTrue(c11 == real || c13 == real);
+
+        expectedException.expect(IllegalArgumentException.class);
+        offlineAccess.getNodeByName(UUID.randomUUID().toString(), new 
Object());
+    }
+
+    @Test
+    public void testGetObjectTypeDefinition() throws RepositoryAccessException 
{
+        CMSObject root = (CMSObject) repository.get(0);
+        ObjectTypeDefinition expected = (ObjectTypeDefinition) 
repository.get(5);
+        ObjectTypeDefinition typeDef = 
offlineAccess.getObjectTypeDefinition(root.getObjectTypeRef(), null);
+        assertSame(expected, typeDef);
+
+        expectedException.expect(IllegalArgumentException.class);
+        offlineAccess.getObjectTypeDefinition(UUID.randomUUID().toString(), 
new Object());
+
+    }
+
+    /*
+     * TODO Implement when the semantics gets clear*
+     * 
+     * @Test public void testGetParentTypeDefinitions() {}
+     * 
+     * @Test public void testGetChildObjectTypeDefinitions() {}
+     * 
+     * @Test public void testGetAllowableTypeDef() {}
+     */
+    @Test
+    public void testGetContainerObject() throws RepositoryAccessException {
+        CMSObject root = (CMSObject) repository.get(0);
+        Property p = root.getProperty().get(0);
+        CMSObject real = offlineAccess.getContainerObject(p, null);
+        assertSame(root, real);
+        
+        expectedException.expect(IllegalArgumentException.class);
+        offlineAccess.getContainerObject(p, new Object());
+    }
+
+    @Test
+    public void testGetPropertyDefinition() throws RepositoryAccessException {
+        CMSObject root = (CMSObject) repository.get(0);
+        PropertyDefinition expected = (PropertyDefinition) repository.get(8);
+        Property p = root.getProperty().get(0);
+        PropertyDefinition propDef = offlineAccess.getPropertyDefinition(p, 
null);
+        assertSame(expected, propDef);
+        
+    }
+
+    @Test
+    public void testGetNamespaceURI() throws RepositoryAccessException {
+        expectedException.expect(UnsupportedOperationException.class);
+        offlineAccess.getNamespaceURI(null, null);
+    }
+
+    @Test
+    public void testCanRetrieveConnectionInfo() {
+        expectedException.expect(UnsupportedOperationException.class);
+        offlineAccess.canRetrieve((ConnectionInfo)null);
+    }
+
+    @Test
+    public void testCanRetrieveObject() {
+        expectedException.expect(UnsupportedOperationException.class);
+        offlineAccess.canRetrieve(null);
+    }
+
+    @Test
+    public void testGetParentByNode() throws RepositoryAccessException {
+        CMSObject child11 = (CMSObject) repository.get(1);
+        CMSObject root = (CMSObject) repository.get(0);
+        CMSObject parent = offlineAccess.getParentByNode(child11, null);
+        assertSame(root, parent);
+        
+        expectedException.expect(IllegalArgumentException.class);
+        offlineAccess.getParentByNode(child11, new Object());
+    }
+
+    // Helper for assigning CMSOBject paths
+    private static void processPaths(CMSObject root) {
+        String path = "/";
+        root.setPath(path);
+
+        processCMSObjectPath(root.getChildren(), path);
+    }
+
+    private static void processCMSObjectPath(List<CMSObject> cmsObjects, 
String path) {
+        for (CMSObject cmsObject : cmsObjects) {
+            String newPath = path + cmsObject.getLocalname();
+            cmsObject.setPath(newPath);
+            processCMSObjectPath(cmsObject.getChildren(), newPath + "/");
+        }
+    }
+}

Modified: incubator/stanbol/trunk/cmsadapter/parent/pom.xml
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/parent/pom.xml?rev=1101008&r1=1101007&r2=1101008&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/parent/pom.xml (original)
+++ incubator/stanbol/trunk/cmsadapter/parent/pom.xml Mon May  9 13:06:25 2011
@@ -375,7 +375,14 @@
                                <version>2.4</version>
                                <scope>provided</scope>
                        </dependency>
+                       
 
+                       <dependency>
+                               <groupId>commons-collections</groupId>
+                               <artifactId>commons-collections</artifactId>
+                               <version>3.2</version>
+                               <scope>provided</scope>
+                       </dependency>
                </dependencies>
        </dependencyManagement>
 

Modified: 
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccessException.java
URL: 
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccessException.java?rev=1101008&r1=1101007&r2=1101008&view=diff
==============================================================================
--- 
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccessException.java
 (original)
+++ 
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/repository/RepositoryAccessException.java
 Mon May  9 13:06:25 2011
@@ -7,6 +7,11 @@ public class RepositoryAccessException e
      */
     private static final long serialVersionUID = -3142627349833142549L;
 
+    
+    public RepositoryAccessException(String message){
+        super(message);
+    }
+    
     public RepositoryAccessException(String message, Throwable throwable){
                super(message, throwable);
        }


Reply via email to