Author: cihan
Date: Fri May 6 07:31:27 2011
New Revision: 1100114
URL: http://svn.apache.org/viewvc?rev=1100114&view=rev
Log:
STANBOL-191: Added three modes to DobjectAdapter; OFFLINE, ONLINE,
TOLERATED_OFFLINE. In ONLINE mode when an operation that requires repository
access fails, a exception will be thrown.In TOLERATED_OFFLINE in case of an
exception adapter will revert to OFFLINE mode.
Added:
incubator/stanbol/trunk/cmsadapter/core/src/test/
incubator/stanbol/trunk/cmsadapter/core/src/test/java/
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/
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/MockOfflineAccess.java
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/MockOnlineAccess.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/AdapterMode.java
Modified:
incubator/stanbol/trunk/cmsadapter/core/pom.xml
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DChildObjectTypeImp.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectFactoryImp.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectImp.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectTypeImp.java
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyImp.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DChildObjectType.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObject.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectAdapter.java
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DProperty.java
Modified: incubator/stanbol/trunk/cmsadapter/core/pom.xml
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/pom.xml?rev=1100114&r1=1100113&r2=1100114&view=diff
==============================================================================
--- incubator/stanbol/trunk/cmsadapter/core/pom.xml (original)
+++ incubator/stanbol/trunk/cmsadapter/core/pom.xml Fri May 6 07:31:27 2011
@@ -75,6 +75,14 @@
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-simple</artifactId>
+ </dependency>
</dependencies>
</project>
Modified:
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DChildObjectTypeImp.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DChildObjectTypeImp.java?rev=1100114&r1=1100113&r2=1100114&view=diff
==============================================================================
---
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DChildObjectTypeImp.java
(original)
+++
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DChildObjectTypeImp.java
Fri May 6 07:31:27 2011
@@ -7,8 +7,11 @@ import org.apache.stanbol.cmsadapter.ser
import
org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObjectType;
import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccess;
import
org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class DChildObjectTypeImp implements DChildObjectType {
+ private static final Logger log =
LoggerFactory.getLogger(DChildObjectTypeImp.class);
private ChildObjectDefinition instance;
private DObjectAdapter factory;
@@ -28,11 +31,31 @@ public class DChildObjectTypeImp impleme
@Override
public DObjectType getAllowedObjectDefinitions() throws
RepositoryAccessException {
- ObjectTypeDefinition allowedDefinition =
access.getAllowableTypeDef(instance, factory.getSession());
- allowedObjectDefinition = factory.wrapAsDObjectType(allowedDefinition);
+ if (allowedObjectDefinition == null) {
+ switch (factory.getMode()) {
+ case ONLINE:
+ allowedObjectDefinition = getAllowedOnline();
+ break;
+ case TOLERATED_OFFLINE:
+ try {
+ allowedObjectDefinition = getAllowedOnline();
+ } catch (RepositoryAccessException e) {
+ log.debug("Can not access repository at fetching
allowed object type d");
+ }
+ break;
+ case STRICT_OFFLINE:
+ break;
+ }
+ }
+
return allowedObjectDefinition;
}
+ private DObjectType getAllowedOnline() throws RepositoryAccessException {
+ ObjectTypeDefinition allowedDefinition =
access.getAllowableTypeDef(instance, factory.getSession());
+ return factory.wrapAsDObjectType(allowedDefinition);
+ }
+
@Override
public ChildObjectDefinition getInstance() {
return instance;
Modified:
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectFactoryImp.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectFactoryImp.java?rev=1100114&r1=1100113&r2=1100114&view=diff
==============================================================================
---
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectFactoryImp.java
(original)
+++
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectFactoryImp.java
Fri May 6 07:31:27 2011
@@ -1,11 +1,12 @@
package org.apache.stanbol.cmsadapter.core.decorated;
+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.CMSObject;
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.model.web.decorated.AdapterMode;
import
org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DChildObjectType;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObject;
import
org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DObjectAdapter;
@@ -19,15 +20,30 @@ public class DObjectFactoryImp implement
private RepositoryAccess access;
private Object session;
+ private AdapterMode mode;
public DObjectFactoryImp(RepositoryAccess access, Object session) {
this.access = access;
this.session = session;
+ this.mode = AdapterMode.ONLINE;
}
-
+
public DObjectFactoryImp(RepositoryAccess access, ConnectionInfo
connectionInfo) throws RepositoryAccessException {
this.access = access;
this.session = access.getSession(connectionInfo);
+ this.mode = AdapterMode.ONLINE;
+ }
+
+ public DObjectFactoryImp(RepositoryAccess access, Object session,
AdapterMode mode) {
+ this.access = access;
+ this.session = session;
+ this.mode = mode;
+ }
+
+ public DObjectFactoryImp(RepositoryAccess access, ConnectionInfo
connectionInfo, AdapterMode mode) throws RepositoryAccessException {
+ this.access = access;
+ this.session = access.getSession(connectionInfo);
+ this.mode = mode;
}
@Override
@@ -60,4 +76,14 @@ public class DObjectFactoryImp implement
return session;
}
+ @Override
+ public void setMode(AdapterMode mode) {
+ this.mode = mode;
+ }
+
+ @Override
+ public AdapterMode getMode() {
+ return mode;
+ }
+
}
Modified:
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectImp.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectImp.java?rev=1100114&r1=1100113&r2=1100114&view=diff
==============================================================================
---
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectImp.java
(original)
+++
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectImp.java
Fri May 6 07:31:27 2011
@@ -11,9 +11,13 @@ import org.apache.stanbol.cmsadapter.ser
import org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DProperty;
import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccess;
import
org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class DObjectImp implements DObject {
+ private static final Logger log =
LoggerFactory.getLogger(DObjectImp.class);
+
private CMSObject instance;
private DObjectAdapter factory;
private RepositoryAccess access;
@@ -50,60 +54,141 @@ public class DObjectImp implements DObje
@Override
public List<DObject> getChildren() throws RepositoryAccessException {
- if (children != null) {
- return children;
+ if (children == null) {
+ switch (factory.getMode()) {
+ case ONLINE:
+ children = getChildrenOnline();
+ break;
+ case TOLERATED_OFFLINE:
+ children = getChildrenTOffline();
+ break;
+ case STRICT_OFFLINE:
+ children = getChildrenSOffline();
+ break;
+ }
}
+ return children;
+
+ }
+
+ private List<DObject> getChildrenOnline() throws RepositoryAccessException
{
List<CMSObject> nodes = access.getChildren(instance,
factory.getSession());
+ return wrapAsDObject(nodes);
+ }
- children = new ArrayList<DObject>(nodes.size());
- for (CMSObject node : nodes) {
- children.add(this.factory.wrapAsDObject(node));
+ private List<DObject> getChildrenTOffline() {
+ try {
+ return getChildrenOnline();
+ } catch (RepositoryAccessException e) {
+ log.debug("Error accesing repository at fetching children of {}.
Tyring offline",
+ instance.getPath());
+ return getChildrenSOffline();
}
- return children;
+ }
+
+ private List<DObject> getChildrenSOffline() {
+ return wrapAsDObject(instance.getChildren());
}
@Override
public DObject getParent() throws RepositoryAccessException {
- if (parent != null) {
- return parent;
+ if (parent == null) {
+ switch (factory.getMode()) {
+ case ONLINE:
+ parent =
factory.wrapAsDObject(access.getParentByNode(instance, factory.getSession()));
+ break;
+ case TOLERATED_OFFLINE:
+ try {
+ parent = factory
+
.wrapAsDObject(access.getParentByNode(instance, factory.getSession()));
+ } catch (RepositoryAccessException e) {
+ log.debug("Can not access repository at fetching
parent of {}.", instance.getPath());
+ }
+ break;
+ case STRICT_OFFLINE:
+ break;
+ }
}
- parent = factory.wrapAsDObject(access.getParentByNode(instance,
factory.getSession()));
-
return parent;
}
@Override
public DObjectType getObjectType() throws RepositoryAccessException {
- if (objectType != null) {
- return this.objectType;
+ if (objectType == null) {
+ String typeRef = instance.getObjectTypeRef();
+ switch (factory.getMode()) {
+ case ONLINE:
+ objectType =
factory.wrapAsDObjectType(access.getObjectTypeDefinition(typeRef,
+ factory.getSession()));
+ break;
+ case TOLERATED_OFFLINE:
+ try {
+ objectType =
factory.wrapAsDObjectType(access.getObjectTypeDefinition(typeRef,
+ factory.getSession()));
+ } catch (RepositoryAccessException e) {
+ log.debug("Can not access repository at fetching
object type of {}.",
+ instance.getPath());
+ }
+ break;
+ case STRICT_OFFLINE:
+ break;
+ }
}
- String typeRef = instance.getObjectTypeRef();
- objectType =
factory.wrapAsDObjectType(access.getObjectTypeDefinition(typeRef,
factory.getSession()));
return objectType;
}
@Override
public List<DProperty> getProperties() throws RepositoryAccessException {
- if (properties != null) {
- return properties;
+ if (properties == null) {
+ switch (factory.getMode()) {
+ case ONLINE:
+ properties = getPropertiesOnline();
+ break;
+ case TOLERATED_OFFLINE:
+ try {
+ properties = getPropertiesOnline();
+ } catch (RepositoryAccessException e) {
+ log.debug("Can not access repository at fetching
properties of {}.",
+ instance.getPath());
+ properties = wrapAsDProperty(instance.getProperty());
+ }
+ break;
+ case STRICT_OFFLINE:
+ properties = wrapAsDProperty(instance.getProperty());
+ break;
+ }
}
+ return properties;
+ }
+ @Override
+ public CMSObject getInstance() {
+ return this.instance;
+ }
+
+ private List<DProperty> getPropertiesOnline() throws
RepositoryAccessException {
List<Property> props = access.getProperties(instance,
factory.getSession());
+ return wrapAsDProperty(props);
+ }
+
+
+ private List<DObject> wrapAsDObject(List<CMSObject> cmsObjects) {
+ List<DObject> wrappeds = new ArrayList<DObject>(cmsObjects.size());
+ for (CMSObject node : cmsObjects) {
+ wrappeds.add(this.factory.wrapAsDObject(node));
+ }
+ return wrappeds;
+ }
- properties = new ArrayList<DProperty>(props.size());
+ private List<DProperty> wrapAsDProperty(List<Property> props) {
+ List<DProperty> properties = new ArrayList<DProperty>(props.size());
for (Property prop : props) {
properties.add(factory.wrapAsDProperty(prop));
}
return properties;
}
-
- @Override
- public CMSObject getInstance() {
- return this.instance;
- }
-
}
Modified:
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectTypeImp.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectTypeImp.java?rev=1100114&r1=1100113&r2=1100114&view=diff
==============================================================================
---
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectTypeImp.java
(original)
+++
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DObjectTypeImp.java
Fri May 6 07:31:27 2011
@@ -12,97 +12,119 @@ import org.apache.stanbol.cmsadapter.ser
import
org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DPropertyDefinition;
import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccess;
import
org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class DObjectTypeImp implements DObjectType {
+ private static final Logger log =
LoggerFactory.getLogger(DObjectTypeImp.class);
- private ObjectTypeDefinition instance;
- private DObjectAdapter factory;
- private RepositoryAccess access;
- private List<DPropertyDefinition> propertyDefinitions;
- private List<DObjectType> parentDefinitions;
- private List<DChildObjectType> childDefinitions;
-
- public DObjectTypeImp(ObjectTypeDefinition instance,
- DObjectAdapter factory, RepositoryAccess access) {
- this.instance = instance;
- this.factory = factory;
- this.access = access;
- }
-
- @Override
- public String getID() {
- return instance.getUniqueRef();
- }
-
- @Override
- public String getName() {
- return instance.getLocalname();
- }
-
- @Override
- public String getNamespace() {
- return instance.getNamespace();
- }
-
- @Override
- public List<DPropertyDefinition> getPropertyDefinitions()
- throws RepositoryAccessException {
- if (propertyDefinitions != null) {
- return propertyDefinitions;
- } else {
- List<PropertyDefinition> propDefinitions = access
- .getPropertyDefinitions(instance,
factory.getSession());
-
- propertyDefinitions = new
ArrayList<DPropertyDefinition>(
- propDefinitions.size());
- for (PropertyDefinition propDefinition :
propDefinitions) {
- propertyDefinitions.add(factory
-
.wrapAsDPropertyDefinition(propDefinition));
- }
-
- return propertyDefinitions;
- }
- }
-
- @Override
- public List<DObjectType> getParentDefinitions()
- throws RepositoryAccessException {
- if (parentDefinitions != null) {
- return parentDefinitions;
- }
-
- List<ObjectTypeDefinition> parDefinitions = access
- .getParentTypeDefinitions(instance,
factory.getSession());
- propertyDefinitions = new ArrayList<DPropertyDefinition>(
- parDefinitions.size());
- for (ObjectTypeDefinition parentTypeRef : parDefinitions) {
-
parentDefinitions.add(factory.wrapAsDObjectType(parentTypeRef));
- }
-
- return parentDefinitions;
- }
-
- @Override
- public List<DChildObjectType> getChildDefinitions()
- throws RepositoryAccessException {
- if (childDefinitions != null) {
- return childDefinitions;
- }
-
- List<ChildObjectDefinition> childDefs = access
- .getChildObjectTypeDefinitions(instance,
factory.getSession());
-
- childDefinitions = new
ArrayList<DChildObjectType>(childDefs.size());
- for (ChildObjectDefinition childDef : childDefs) {
-
childDefinitions.add(factory.wrapAsDChildObjectType(childDef));
- }
-
- return childDefinitions;
- }
-
- @Override
- public ObjectTypeDefinition getInstance() {
- return instance;
- }
+ private ObjectTypeDefinition instance;
+ private DObjectAdapter factory;
+ private RepositoryAccess access;
+ private List<DPropertyDefinition> propertyDefinitions;
+ private List<DObjectType> parentDefinitions;
+ private List<DChildObjectType> childDefinitions;
+
+ public DObjectTypeImp(ObjectTypeDefinition instance, DObjectAdapter
factory, RepositoryAccess access) {
+ this.instance = instance;
+ this.factory = factory;
+ this.access = access;
+ }
+
+ @Override
+ public String getID() {
+ return instance.getUniqueRef();
+ }
+
+ @Override
+ public String getName() {
+ return instance.getLocalname();
+ }
+
+ @Override
+ public String getNamespace() {
+ return instance.getNamespace();
+ }
+
+ @Override
+ public List<DPropertyDefinition> getPropertyDefinitions() throws
RepositoryAccessException {
+ if (propertyDefinitions != null) {
+ return propertyDefinitions;
+ } else {
+ List<PropertyDefinition> propDefinitions =
access.getPropertyDefinitions(instance,
+ factory.getSession());
+
+ propertyDefinitions = new
ArrayList<DPropertyDefinition>(propDefinitions.size());
+ for (PropertyDefinition propDefinition : propDefinitions) {
+
propertyDefinitions.add(factory.wrapAsDPropertyDefinition(propDefinition));
+ }
+
+ return propertyDefinitions;
+ }
+ }
+
+ @Override
+ public List<DObjectType> getParentDefinitions() throws
RepositoryAccessException {
+ if (parentDefinitions != null) {
+ return parentDefinitions;
+ }
+
+ List<ObjectTypeDefinition> parDefinitions =
access.getParentTypeDefinitions(instance,
+ factory.getSession());
+ propertyDefinitions = new
ArrayList<DPropertyDefinition>(parDefinitions.size());
+ for (ObjectTypeDefinition parentTypeRef : parDefinitions) {
+ parentDefinitions.add(factory.wrapAsDObjectType(parentTypeRef));
+ }
+
+ return parentDefinitions;
+ }
+
+ @Override
+ public List<DChildObjectType> getChildDefinitions() throws
RepositoryAccessException {
+ if (childDefinitions != null) {
+ switch (factory.getMode()) {
+ case ONLINE:
+ childDefinitions = getChildDefinitionsOnline();
+ break;
+ case TOLERATED_OFFLINE:
+ try {
+ childDefinitions = getChildDefinitionsOnline();
+ } catch (RepositoryAccessException e) {
+ log.debug("Can not access repository while fetching
childs definitions of type {}",
+ instance.getUniqueRef());
+ childDefinitions = getChildDefinitionsOffline();
+ }
+ break;
+ case STRICT_OFFLINE:
+ childDefinitions = getChildDefinitionsOffline();
+ break;
+ }
+ }
+
+ return childDefinitions;
+ }
+
+ private List<DChildObjectType> getChildDefinitionsOnline() throws
RepositoryAccessException {
+ List<ChildObjectDefinition> childDefs =
access.getChildObjectTypeDefinitions(instance,
+ factory.getSession());
+ return wrapChildObjectDefinitions(childDefs);
+ }
+
+ private List<DChildObjectType> getChildDefinitionsOffline() {
+ return wrapChildObjectDefinitions(instance.getChildObjectDefinition());
+ }
+
+ private List<DChildObjectType>
wrapChildObjectDefinitions(List<ChildObjectDefinition> childDefs) {
+ List<DChildObjectType> childDefinitions = new
ArrayList<DChildObjectType>(childDefs.size());
+ for (ChildObjectDefinition childDef : childDefs) {
+ childDefinitions.add(factory.wrapAsDChildObjectType(childDef));
+ }
+ return childDefinitions;
+ }
+
+ @Override
+ public ObjectTypeDefinition getInstance() {
+ return instance;
+ }
}
Modified:
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyImp.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyImp.java?rev=1100114&r1=1100113&r2=1100114&view=diff
==============================================================================
---
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyImp.java
(original)
+++
incubator/stanbol/trunk/cmsadapter/core/src/main/java/org/apache/stanbol/cmsadapter/core/decorated/DPropertyImp.java
Fri May 6 07:31:27 2011
@@ -12,18 +12,21 @@ import org.apache.stanbol.cmsadapter.ser
import
org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated.DPropertyDefinition;
import org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccess;
import
org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
public class DPropertyImp implements DProperty {
+ private static final Logger log =
LoggerFactory.getLogger(DPropertyImp.class);
private Property instance;
- private DObjectAdapter adapter;
+ private DObjectAdapter factory;
private RepositoryAccess access;
private DObject sourceObject;
private DPropertyDefinition propertyDefinition;
public DPropertyImp(Property instance, DObjectAdapter adapter,
RepositoryAccess access) {
this.instance = instance;
- this.adapter = adapter;
+ this.factory = adapter;
this.access = access;
}
@@ -34,24 +37,60 @@ public class DPropertyImp implements DPr
@Override
public DPropertyDefinition getDefinition() throws
RepositoryAccessException {
- if (propertyDefinition != null) {
- return propertyDefinition;
- }
+ if (propertyDefinition == null) {
+ switch (factory.getMode()) {
+ case ONLINE:
+ propertyDefinition = getPropertyDefinitionOnline();
+ break;
+ case TOLERATED_OFFLINE:
+ try {
+ propertyDefinition = getPropertyDefinitionOnline();
+ } catch (RepositoryAccessException e) {
+ log.debug("Can not access repository at fetching
source object of property {}",
+ instance.getLocalname());
+ }
+ break;
+ case STRICT_OFFLINE:
+ break;
+ }
- PropertyDefinition propDef = access.getPropertyDefinition(instance,
adapter.getSession());
+ }
- propertyDefinition = adapter.wrapAsDPropertyDefinition(propDef);
return propertyDefinition;
+ }
+ private DPropertyDefinition getPropertyDefinitionOnline() throws
RepositoryAccessException {
+ PropertyDefinition propDef = access.getPropertyDefinition(instance,
factory.getSession());
+ return factory.wrapAsDPropertyDefinition(propDef);
}
@Override
public DObject getSourceObject() throws RepositoryAccessException {
- CMSObject source = access.getContainerObject(instance,
adapter.getSession());
- sourceObject = adapter.wrapAsDObject(source);
+ if (sourceObject == null) {
+ switch (factory.getMode()) {
+ case ONLINE:
+ sourceObject = getSourceObjectOnline();
+ break;
+ case TOLERATED_OFFLINE:
+ try {
+ sourceObject = getSourceObjectOnline();
+ } catch (RepositoryAccessException e) {
+ log.debug("Can not access repository at fetching
source object of property {}",
+ instance.getLocalname());
+ }
+ break;
+ case STRICT_OFFLINE:
+ break;
+ }
+ }
return sourceObject;
}
+ private DObject getSourceObjectOnline() throws RepositoryAccessException {
+ CMSObject source = access.getContainerObject(instance,
factory.getSession());
+ return factory.wrapAsDObject(source);
+ }
+
@Override
public List<String> getValue() {
return instance.getValue();
Added:
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=1100114&view=auto
==============================================================================
---
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/DobjectFactoryImpTest.java
(added)
+++
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/DobjectFactoryImpTest.java
Fri May 6 07:31:27 2011
@@ -0,0 +1,173 @@
+package org.apache.stanbol.cmsadapter.core.decorated;
+
+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;
+import
org.apache.stanbol.cmsadapter.servicesapi.repository.RepositoryAccessException;
+import org.junit.AfterClass;
+import org.junit.Before;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+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_";
+
+ static DObjectAdapter tOfflineAdapter;
+ static DObjectAdapter sOfflineAdapter;
+ static DObjectAdapter onlineAdapter;
+ CMSObject rootStripped;
+ CMSObject root;
+
+ @Rule
+ public ExpectedException expectedException = ExpectedException.none();
+
+ @BeforeClass
+ public static void setUpBeforeClass() throws Exception {
+ tOfflineAdapter = new DObjectFactoryImp(new MockOfflineAccess(), null,
AdapterMode.TOLERATED_OFFLINE);
+ sOfflineAdapter = new DObjectFactoryImp(new MockOfflineAccess(), null,
AdapterMode.STRICT_OFFLINE);
+ onlineAdapter = new DObjectFactoryImp(new MockOnlineAccess(), null);
+ }
+
+ @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();
+ CMSObject child1 = new CMSObjectBuilder(PREFIX_CHILD_1).build();
+ CMSObject child2 = new CMSObjectBuilder(PREFIX_CHILD_2).build();
+ root = new
CMSObjectBuilder(PREFIX_ROOT).namespace().child(child1).child(child2).build();
+ }
+
+ @Test
+ public void testDObjectFieldsOnline() {
+ DObject root = onlineAdapter.wrapAsDObject(rootStripped);
+ assertEquals(PREFIX_ROOT + LOCAL_NAME, root.getName());
+ assertEquals(PREFIX_ROOT + NAMESPACE, root.getNamespace());
+ assertEquals(PREFIX_ROOT + PATH, root.getPath());
+ assertEquals(PREFIX_ROOT + UNIQUE_REF, root.getID());
+ }
+
+ @Test
+ public void testDObjectFieldsOffline() {
+ DObject root = sOfflineAdapter.wrapAsDObject(rootStripped);
+ assertEquals(PREFIX_ROOT + LOCAL_NAME, root.getName());
+ assertEquals(PREFIX_ROOT + NAMESPACE, root.getNamespace());
+ assertEquals(PREFIX_ROOT + PATH, root.getPath());
+ assertEquals(PREFIX_ROOT + UNIQUE_REF, root.getID());
+
+ }
+
+ @Test
+ public void testDObjectParentOnline() throws RepositoryAccessException {
+ DObject root = onlineAdapter.wrapAsDObject(rootStripped);
+ expectedException.expect(RepositoryAccessException.class);
+ root.getParent();
+ }
+
+ @Test
+ public void testDObjectParentOffline() throws RepositoryAccessException {
+ DObject root = sOfflineAdapter.wrapAsDObject(rootStripped);
+ assertNull(root.getParent());
+ }
+
+ @Test
+ 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{
+ DObject rootd = sOfflineAdapter.wrapAsDObject(root);
+ List<DObject> children = rootd.getChildren();
+ assertEquals(2, children.size());
+ }
+
+ @Test
+ 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{
+ DObject rootd = tOfflineAdapter.wrapAsDObject(root);
+ List<DObject> children = rootd.getChildren();
+ assertEquals(2, children.size());
+ }
+
+ @Test
+ public void testDObjectTypeSOffline() throws RepositoryAccessException{
+ DObject rootd = sOfflineAdapter.wrapAsDObject(root);
+ assertNull(rootd.getObjectType());
+ }
+
+ @Test
+ public void testDObjectTypeOnline() throws RepositoryAccessException{
+ DObject rootd = onlineAdapter.wrapAsDObject(rootStripped);
+ expectedException.expect(RepositoryAccessException.class);
+ rootd.getObjectType();
+ }
+
+}
Added:
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/MockOfflineAccess.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/MockOfflineAccess.java?rev=1100114&view=auto
==============================================================================
---
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/MockOfflineAccess.java
(added)
+++
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/MockOfflineAccess.java
Fri May 6 07:31:27 2011
@@ -0,0 +1,147 @@
+package org.apache.stanbol.cmsadapter.core.decorated;
+
+import java.util.List;
+
+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 MockOfflineAccess implements RepositoryAccess {
+
+ @Override
+ public Object getSession(ConnectionInfo connectionInfo) throws
RepositoryAccessException {
+ return null;
+ }
+
+ @Override
+ public List<CMSObject> getNodeByPath(String path, ConnectionInfo
connectionInfo) throws RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public List<CMSObject> getNodeById(String id, ConnectionInfo
connectionInfo) throws RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public List<CMSObject> getNodeByPath(String path, Object session) throws
RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public List<CMSObject> getNodeById(String id, Object session) throws
RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public List<CMSObject> getNodeByName(String name, Object session) throws
RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public List<CMSObject> getNodeByName(String name, ConnectionInfo
connectionInfo) throws RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public CMSObject getFirstNodeByPath(String path, ConnectionInfo
connectionInfo) throws RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public CMSObject getFirstNodeById(String id, ConnectionInfo
connectionInfo) throws RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public CMSObject getFirstNodeByPath(String path, Object session) throws
RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public CMSObject getFirstNodeById(String id, Object session) throws
RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public CMSObject getFirstNodeByName(String name, Object session) throws
RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public CMSObject getFirstNodeByName(String name, ConnectionInfo
connectionInfo) throws RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public List<CMSObject> getChildren(CMSObject node, Object session) throws
RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public ObjectTypeDefinition getObjectTypeDefinition(String typeRef, Object
session) throws RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public List<Property> getProperties(CMSObject node, Object session) throws
RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public List<PropertyDefinition>
getPropertyDefinitions(ObjectTypeDefinition instance, Object session) throws
RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public List<ObjectTypeDefinition>
getParentTypeDefinitions(ObjectTypeDefinition instance, Object session) throws
RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public List<ChildObjectDefinition>
getChildObjectTypeDefinitions(ObjectTypeDefinition instance,
+ Object
session) throws RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public ObjectTypeDefinition getAllowableTypeDef(ChildObjectDefinition
instance, Object session) throws RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public CMSObject getContainerObject(Property instance, Object session)
throws RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public PropertyDefinition getPropertyDefinition(Property instance, Object
session) throws RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public String getNamespaceURI(String prefix, Object session) throws
RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+ @Override
+ public boolean canRetrieve(ConnectionInfo connectionInfo) {
+ return false;
+ }
+
+ @Override
+ public boolean canRetrieve(Object session) {
+ return false;
+ }
+
+ @Override
+ public CMSObject getParentByNode(CMSObject instance, Object session)
throws RepositoryAccessException {
+ throw new RepositoryAccessException("Im just a mocker", null);
+ }
+
+}
Added:
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=1100114&view=auto
==============================================================================
---
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/MockOnlineAccess.java
(added)
+++
incubator/stanbol/trunk/cmsadapter/core/src/test/java/org/apache/stanbol/cmsadapter/core/decorated/MockOnlineAccess.java
Fri May 6 07:31:27 2011
@@ -0,0 +1,204 @@
+package org.apache.stanbol.cmsadapter.core.decorated;
+
+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;
+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.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 MockOnlineAccess implements RepositoryAccess {
+
+ private ObjectFactory of = new ObjectFactory();
+
+ public MockOnlineAccess() {
+
+ }
+
+ @Override
+ public Object getSession(ConnectionInfo connectionInfo) throws
RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List<CMSObject> getNodeByPath(String path, ConnectionInfo
connectionInfo) throws RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List<CMSObject> getNodeById(String id, ConnectionInfo
connectionInfo) throws RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List<CMSObject> getNodeByPath(String path, Object session) throws
RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List<CMSObject> getNodeById(String id, Object session) throws
RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List<CMSObject> getNodeByName(String name, Object session) throws
RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List<CMSObject> getNodeByName(String name, ConnectionInfo
connectionInfo) throws RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public CMSObject getFirstNodeByPath(String path, ConnectionInfo
connectionInfo) throws RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public CMSObject getFirstNodeById(String id, ConnectionInfo
connectionInfo) throws RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public CMSObject getFirstNodeByPath(String path, Object session) throws
RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public CMSObject getFirstNodeById(String id, Object session) throws
RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public CMSObject getFirstNodeByName(String name, Object session) throws
RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public CMSObject getFirstNodeByName(String name, ConnectionInfo
connectionInfo) throws RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List<CMSObject> getChildren(CMSObject node, Object session) throws
RepositoryAccessException {
+ if (node == null
+ || !node.getUniqueRef().equals(
+ DobjectFactoryImpTest.PREFIX_ROOT +
DobjectFactoryImpTest.UNIQUE_REF)) {
+ return null;
+
+ } else {
+ CMSObject child1 = new
CMSObjectBuilder(DobjectFactoryImpTest.PREFIX_CHILD_1).namespace().build();
+ CMSObject child2 = new
CMSObjectBuilder(DobjectFactoryImpTest.PREFIX_CHILD_2).namespace().build();
+ return Arrays.asList(new CMSObject[] {child1, child2});
+ }
+ }
+
+ @Override
+ public ObjectTypeDefinition getObjectTypeDefinition(String typeRef, Object
session) throws RepositoryAccessException {
+ // TODO Auto-generated method stub
+ if(typeRef == null){
+ throw new RepositoryAccessException("Null typeRef", null);
+ }
+ return null;
+ }
+
+ @Override
+ public List<Property> getProperties(CMSObject node, Object session) throws
RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List<PropertyDefinition>
getPropertyDefinitions(ObjectTypeDefinition instance, Object session) throws
RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List<ObjectTypeDefinition>
getParentTypeDefinitions(ObjectTypeDefinition instance, Object session) throws
RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public List<ChildObjectDefinition>
getChildObjectTypeDefinitions(ObjectTypeDefinition instance,
+ Object
session) throws RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public ObjectTypeDefinition getAllowableTypeDef(ChildObjectDefinition
instance, Object session) throws RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public CMSObject getContainerObject(Property instance, Object session)
throws RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public PropertyDefinition getPropertyDefinition(Property instance, Object
session) throws RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public String getNamespaceURI(String prefix, Object session) throws
RepositoryAccessException {
+ // TODO Auto-generated method stub
+ return null;
+ }
+
+ @Override
+ public boolean canRetrieve(ConnectionInfo connectionInfo) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public boolean canRetrieve(Object session) {
+ // TODO Auto-generated method stub
+ return false;
+ }
+
+ @Override
+ public CMSObject getParentByNode(CMSObject instance, Object session)
throws RepositoryAccessException {
+ // TODO Auto-generated method stub
+ if (instance.getParentRef() == null) {
+ throw new RepositoryAccessException("No parent", null);
+ } else {
+ String ref = instance.getParentRef();
+ CMSObject parent = of.createCMSObject();
+ parent.setLocalname("localname" + ref);
+ parent.setNamespace("namespace" + ref);
+ parent.setParentRef("parent" + ref);
+ parent.setUniqueRef(ref);
+ return parent;
+ }
+ }
+
+}
Added:
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/AdapterMode.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/AdapterMode.java?rev=1100114&view=auto
==============================================================================
---
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/AdapterMode.java
(added)
+++
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/AdapterMode.java
Fri May 6 07:31:27 2011
@@ -0,0 +1,24 @@
+package org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated;
+
+
+public enum AdapterMode {
+
+ /**
+ * In <b>ONLINE</b> mode all the requests that require repository access
is expected to successfully connect to
+ * repository. Underlying objects from package {@linkplain
org.apache.stanbol.cmsadapter.servicesapi.model.web}
+ * are not used for accessing.
+ */
+ ONLINE,
+ /**
+ * In <b>TOLERATED OFFLINE</b> mode, a repository connection error will
not be thrown instead
+ * existing underlying objects from package {@linkplain
org.apache.stanbol.cmsadapter.servicesapi.model.web}
+ * will be used.
+ */
+ TOLERATED_OFFLINE,
+ /**
+ * In <b>STRICT OFFLINE</b> repository is never accessed. All the
information is expected to provided by
+ * underlying objects from package {@linkplain
org.apache.stanbol.cmsadapter.servicesapi.model.web}.
+ */
+ STRICT_OFFLINE
+
+}
\ No newline at end of file
Modified:
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DChildObjectType.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DChildObjectType.java?rev=1100114&r1=1100113&r2=1100114&view=diff
==============================================================================
---
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DChildObjectType.java
(original)
+++
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DChildObjectType.java
Fri May 6 07:31:27 2011
@@ -7,6 +7,11 @@ public interface DChildObjectType {
boolean isRequired();
+ /**
+ *
+ * @return Allowed object type declerations, null if
in<b>STRICT_OFFLINE</b> mode.
+ * @throws RepositoryAccessException if can not access CMS repository in
<b>ONLINE</b> mode.
+ */
DObjectType getAllowedObjectDefinitions() throws RepositoryAccessException;
ChildObjectDefinition getInstance();
Modified:
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObject.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObject.java?rev=1100114&r1=1100113&r2=1100114&view=diff
==============================================================================
---
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObject.java
(original)
+++
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObject.java
Fri May 6 07:31:27 2011
@@ -19,10 +19,18 @@ public interface DObject {
List<DObject> getChildren() throws RepositoryAccessException;
- //Make list?
+ /**
+ * Fetches parent of the item from CMS repository.
+ * @return parent of the object, null in <b>OFFLINE</b> mode.
+ * @throws RepositoryAccessException If repository can not be accessed
in <b>ONLINE</b> mode.
+ */
DObject getParent() throws RepositoryAccessException;
- //Make list?
+ /**
+ * Fetches object type of the item from CMS repository.
+ * @return Object type of the object, null in <b>OFFLINE</b> mode.
+ * @throws RepositoryAccessException If repository can not be accessed
in <b>ONLINE</b> mode.
+ */
DObjectType getObjectType() throws RepositoryAccessException;
List<DProperty> getProperties() throws RepositoryAccessException;
Modified:
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectAdapter.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectAdapter.java?rev=1100114&r1=1100113&r2=1100114&view=diff
==============================================================================
---
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectAdapter.java
(original)
+++
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DObjectAdapter.java
Fri May 6 07:31:27 2011
@@ -1,7 +1,7 @@
package org.apache.stanbol.cmsadapter.servicesapi.model.web.decorated;
-import
org.apache.stanbol.cmsadapter.servicesapi.model.web.ChildObjectDefinition;
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.ObjectTypeDefinition;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.Property;
import org.apache.stanbol.cmsadapter.servicesapi.model.web.PropertyDefinition;
@@ -9,15 +9,27 @@ import org.apache.stanbol.cmsadapter.ser
public interface DObjectAdapter {
DObject wrapAsDObject(CMSObject node);
-
+
DObjectType wrapAsDObjectType(ObjectTypeDefinition definition);
-
- DPropertyDefinition wrapAsDPropertyDefinition(PropertyDefinition
propertyDefinition);
-
- DChildObjectType wrapAsDChildObjectType(ChildObjectDefinition
childObjectDefinition);
-
+
+ DPropertyDefinition wrapAsDPropertyDefinition(
+ PropertyDefinition propertyDefinition);
+
+ DChildObjectType wrapAsDChildObjectType(
+ ChildObjectDefinition childObjectDefinition);
+
DProperty wrapAsDProperty(Property property);
-
+
Object getSession();
-
+
+ /**
+ * Mode must be set before fetching an object from CMS.
+ * Otherwise inconsistent/erroneous behavior can be faced.
+ * @param mode
+ * @return
+ */
+ void setMode(AdapterMode mode);
+
+ AdapterMode getMode();
+
}
Modified:
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DProperty.java
URL:
http://svn.apache.org/viewvc/incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DProperty.java?rev=1100114&r1=1100113&r2=1100114&view=diff
==============================================================================
---
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DProperty.java
(original)
+++
incubator/stanbol/trunk/cmsadapter/servicesapi/src/main/java/org/apache/stanbol/cmsadapter/servicesapi/model/web/decorated/DProperty.java
Fri May 6 07:31:27 2011
@@ -12,8 +12,18 @@ public interface DProperty {
PropType getType();
+ /**
+ *
+ * @return Property definition of property, null if <b>STRICT_OFFLINE</b>
mode.
+ * @throws RepositoryAccessException if can not access repository in
<b>ONLINE</> mode.
+ */
DPropertyDefinition getDefinition() throws RepositoryAccessException;
+ /**
+ *
+ * @return source object of property, null if <b>STRICT_OFFLINE</b> mode.
+ * @throws RepositoryAccessException if can not access repository in
<b>ONLINE</> mode.
+ */
DObject getSourceObject() throws RepositoryAccessException;
List<String> getValue();