Author: jens
Date: Fri Jul 23 19:36:20 2010
New Revision: 967219
URL: http://svn.apache.org/viewvc?rev=967219&view=rev
Log:
InMemory: Fix bug in buiding query result: fill PropertyData objects with query
names, fix bug in evaluating SELECTed properties of custom properties
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoredObjectImpl.java
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoredObjectImpl.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoredObjectImpl.java?rev=967219&r1=967218&r2=967219&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoredObjectImpl.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/storedobj/impl/StoredObjectImpl.java
Fri Jul 23 19:36:20 2010
@@ -315,7 +315,8 @@ public class StoredObjectImpl implements
// add custom properties of type definition to the collection
if (null != fProperties) {
for (Entry<String, PropertyData<?>> prop : fProperties.entrySet())
{
- properties.put(prop.getKey(), prop.getValue());
+ if (FilterParser.isContainedInFilter(prop.getKey(),
requestedIds))
+ properties.put(prop.getKey(), prop.getValue());
}
}
}
Modified:
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java
URL:
http://svn.apache.org/viewvc/incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java?rev=967219&r1=967218&r2=967219&view=diff
==============================================================================
---
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java
(original)
+++
incubator/chemistry/opencmis/trunk/chemistry-opencmis-server/chemistry-opencmis-server-inmemory/src/main/java/org/apache/chemistry/opencmis/inmemory/types/PropertyCreationHelper.java
Fri Jul 23 19:36:20 2010
@@ -40,6 +40,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.enums.Updatability;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisInvalidArgumentException;
import
org.apache.chemistry.opencmis.commons.exceptions.CmisObjectNotFoundException;
+import
org.apache.chemistry.opencmis.commons.impl.dataobjects.AbstractPropertyData;
import
org.apache.chemistry.opencmis.commons.impl.dataobjects.AbstractPropertyDefinition;
import
org.apache.chemistry.opencmis.commons.impl.dataobjects.BindingsObjectFactoryImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.ChoiceImpl;
@@ -250,15 +251,24 @@ public class PropertyCreationHelper {
}
}
- // replace all ids with query names or alias:
Map<String, PropertyData<?>> mappedProperties = new HashMap<String,
PropertyData<?>>();
- for (Map.Entry<String, PropertyData<?>> prop : properties.entrySet()) {
- String key = requestedIds.get(prop.getKey());
- if (key == null)
- key = prop.getKey();
- mappedProperties.put(key, prop.getValue());
+ if (requestedIds.containsKey("*")) {
+ for (Map.Entry<String, PropertyData<?>> prop :
properties.entrySet()) {
+ // map property id to property query name
+ String queryName =
td.getPropertyDefinitions().get(prop.getKey()).getQueryName();
+ AbstractPropertyData<?> ad = (AbstractPropertyData<?>)
prop.getValue(); // a bit dirty
+ ad.setQueryName(queryName);
+ mappedProperties.put(queryName, prop.getValue());
+ }
+ } else {
+ // replace all ids with query names or alias:
+ for (Map.Entry<String, PropertyData<?>> prop :
properties.entrySet()) {
+ String queryNameOrAlias = requestedIds.get(prop.getKey());
+ AbstractPropertyData<?> ad = (AbstractPropertyData<?>)
prop.getValue(); // a bit dirty
+ ad.setQueryName(queryNameOrAlias);
+ mappedProperties.put(queryNameOrAlias, prop.getValue());
+ }
}
-
// add functions:
BindingsObjectFactory objFactory = new BindingsObjectFactoryImpl();
for (String func : requestedFuncs.keySet()) {