You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@chemistry.apache.org by fm...@apache.org on 2013/03/14 17:48:16 UTC
svn commit: r1456526 - in
/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src:
main/java/org/apache/chemistry/opencmis/commons/impl/
main/java/org/apache/chemistry/opencmis/commons/impl/dataobjects/
test/java/org/ap...
Author: fmui
Date: Thu Mar 14 16:48:15 2013
New Revision: 1456526
URL: http://svn.apache.org/r1456526
Log:
CMIS 1.1 AtomPub: bulk update properties preparations
Added:
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/dataobjects/BulkUpdateImpl.java (with props)
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/BukUpdateConverterTest.java (with props)
Modified:
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConstants.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/dataobjects/BulkUpdateObjectIdAndChangeTokenImpl.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/AbstractXMLConverterTest.java
chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/ObjectConvertTest.java
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConstants.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConstants.java?rev=1456526&r1=1456525&r2=1456526&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConstants.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConstants.java Thu Mar 14 16:48:15 2013
@@ -241,4 +241,14 @@ public class XMLConstants {
public static final String TAG_QUERY_RENDITIONFILTER = "renditionFilter";
public static final String TAG_QUERY_MAXITEMS = "maxItems";
public static final String TAG_QUERY_SKIPCOUNT = "skipCount";
+
+ public static final String TAG_BULK_UPDATE = "bulkUpdate";
+ public static final String TAG_BULK_UPDATE_ID_AND_TOKEN = "objectIdAndChangeToken";
+ public static final String TAG_BULK_UPDATE_PROPERTIES = "properties";
+ public static final String TAG_BULK_UPDATE_ADD_SECONDARY_TYPES = "addSecondaryTypeIds";
+ public static final String TAG_BULK_UPDATE_REMOVE_SECONDARY_TYPES = "removeSecondaryTypeIds";
+
+ public static final String TAG_IDANDTOKEN_ID = "id";
+ public static final String TAG_IDANDTOKEN_NEWID = "newId";
+ public static final String TAG_IDANDTOKEN_CHANGETOKEN = "changeToken";
}
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java?rev=1456526&r1=1456525&r2=1456526&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/XMLConverter.java Thu Mar 14 16:48:15 2013
@@ -39,6 +39,7 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.data.Acl;
import org.apache.chemistry.opencmis.commons.data.AclCapabilities;
import org.apache.chemistry.opencmis.commons.data.AllowableActions;
+import org.apache.chemistry.opencmis.commons.data.BulkUpdateObjectIdAndChangeToken;
import org.apache.chemistry.opencmis.commons.data.ChangeEventInfo;
import org.apache.chemistry.opencmis.commons.data.CmisExtensionElement;
import org.apache.chemistry.opencmis.commons.data.CreatablePropertyTypes;
@@ -107,6 +108,8 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.impl.dataobjects.AccessControlPrincipalDataImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.AclCapabilitiesDataImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.AllowableActionsImpl;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.BulkUpdateImpl;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.BulkUpdateObjectIdAndChangeTokenImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.ChangeEventInfoDataImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.ChoiceImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.CreatablePropertyTypesImpl;
@@ -931,6 +934,61 @@ public class XMLConverter {
writer.writeEndElement();
}
+ // -------------------
+ // --- bulk update ---
+ // -------------------
+
+ public static void writeBulkUpdate(XMLStreamWriter writer, CmisVersion cmisVersion, String namespace,
+ List<BulkUpdateObjectIdAndChangeToken> objectIdAndChangeToken, Properties properties,
+ List<String> addSecondaryTypeIds, List<String> removeSecondaryTypeIds) throws XMLStreamException {
+ if (objectIdAndChangeToken == null) {
+ return;
+ }
+
+ writer.writeStartElement(namespace, TAG_BULK_UPDATE);
+
+ for (BulkUpdateObjectIdAndChangeToken idAndToken : objectIdAndChangeToken) {
+ if (idAndToken == null) {
+ continue;
+ }
+
+ writer.writeStartElement(PREFIX_CMIS, TAG_BULK_UPDATE_ID_AND_TOKEN, NAMESPACE_CMIS);
+
+ XMLUtils.write(writer, PREFIX_CMIS, NAMESPACE_CMIS, TAG_IDANDTOKEN_ID, idAndToken.getId());
+ XMLUtils.write(writer, PREFIX_CMIS, NAMESPACE_CMIS, TAG_IDANDTOKEN_CHANGETOKEN, idAndToken.getChangeToken());
+
+ writeExtensions(writer, idAndToken);
+ writer.writeEndElement();
+ }
+
+ if (properties != null) {
+ writer.writeStartElement(PREFIX_CMIS, TAG_BULK_UPDATE_PROPERTIES, NAMESPACE_CMIS);
+
+ if (properties.getPropertyList() != null) {
+ for (PropertyData<?> property : properties.getPropertyList()) {
+ writeProperty(writer, property, false);
+ }
+ }
+
+ writeExtensions(writer, properties);
+ writer.writeEndElement();
+ }
+
+ if (addSecondaryTypeIds != null) {
+ for (String id : addSecondaryTypeIds) {
+ XMLUtils.write(writer, PREFIX_CMIS, NAMESPACE_CMIS, TAG_BULK_UPDATE_ADD_SECONDARY_TYPES, id);
+ }
+ }
+
+ if (removeSecondaryTypeIds != null) {
+ for (String id : removeSecondaryTypeIds) {
+ XMLUtils.write(writer, PREFIX_CMIS, NAMESPACE_CMIS, TAG_BULK_UPDATE_REMOVE_SECONDARY_TYPES, id);
+ }
+ }
+
+ writer.writeEndElement();
+ }
+
// -------------------------
// --- extension writers ---
// -------------------------
@@ -1035,6 +1093,10 @@ public class XMLConverter {
return ACL_PARSER.walk(parser);
}
+ public static BulkUpdateImpl convertBulkUpdate(XMLStreamReader parser) throws XMLStreamException {
+ return BULK_UPDATE_PARSER.walk(parser);
+ }
+
// ------------------------------
// --- repository info parser ---
// ------------------------------
@@ -2594,4 +2656,74 @@ public class XMLConverter {
return false;
}
};
+
+ // --------------------------
+ // --- bulk update parser ---
+ // --------------------------
+
+ private static final XMLWalker<BulkUpdateImpl> BULK_UPDATE_PARSER = new XMLWalker<BulkUpdateImpl>() {
+ @Override
+ protected BulkUpdateImpl prepareTarget(XMLStreamReader parser, QName name) throws XMLStreamException {
+ return new BulkUpdateImpl();
+ }
+
+ @Override
+ protected boolean read(XMLStreamReader parser, QName name, BulkUpdateImpl target) throws XMLStreamException {
+ if (isCmisNamespace(name)) {
+ if (isTag(name, TAG_BULK_UPDATE_ID_AND_TOKEN)) {
+ target.setObjectIdAndChangeToken(addToList(target.getObjectIdAndChangeToken(),
+ ID_AND_TOKEN_PARSER.walk(parser)));
+ return true;
+ }
+
+ if (isTag(name, TAG_BULK_UPDATE_PROPERTIES)) {
+ target.setProperties(PROPERTIES_PARSER.walk(parser));
+ return true;
+ }
+
+ if (isTag(name, TAG_BULK_UPDATE_ADD_SECONDARY_TYPES)) {
+ target.setAddSecondaryTypeIds(addToList(target.getAddSecondaryTypeIds(), readText(parser)));
+ return true;
+ }
+
+ if (isTag(name, TAG_BULK_UPDATE_REMOVE_SECONDARY_TYPES)) {
+ target.setRemoveSecondaryTypeIds(addToList(target.getRemoveSecondaryTypeIds(), readText(parser)));
+ return true;
+ }
+ }
+
+ return false;
+ }
+ };
+
+ private static final XMLWalker<BulkUpdateObjectIdAndChangeTokenImpl> ID_AND_TOKEN_PARSER = new XMLWalker<BulkUpdateObjectIdAndChangeTokenImpl>() {
+ @Override
+ protected BulkUpdateObjectIdAndChangeTokenImpl prepareTarget(XMLStreamReader parser, QName name)
+ throws XMLStreamException {
+ return new BulkUpdateObjectIdAndChangeTokenImpl();
+ }
+
+ @Override
+ protected boolean read(XMLStreamReader parser, QName name, BulkUpdateObjectIdAndChangeTokenImpl target)
+ throws XMLStreamException {
+ if (isCmisNamespace(name)) {
+ if (isTag(name, TAG_IDANDTOKEN_ID)) {
+ target.setId(readText(parser));
+ return true;
+ }
+
+ if (isTag(name, TAG_IDANDTOKEN_NEWID)) {
+ target.setNewId(readText(parser));
+ return true;
+ }
+
+ if (isTag(name, TAG_IDANDTOKEN_CHANGETOKEN)) {
+ target.setChangeToken(readText(parser));
+ return true;
+ }
+ }
+
+ return false;
+ }
+ };
}
Added: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/dataobjects/BulkUpdateImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/dataobjects/BulkUpdateImpl.java?rev=1456526&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/dataobjects/BulkUpdateImpl.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/dataobjects/BulkUpdateImpl.java Thu Mar 14 16:48:15 2013
@@ -0,0 +1,73 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.commons.impl.dataobjects;
+
+import java.util.List;
+
+import org.apache.chemistry.opencmis.commons.data.BulkUpdateObjectIdAndChangeToken;
+import org.apache.chemistry.opencmis.commons.data.Properties;
+
+public class BulkUpdateImpl extends AbstractExtensionData {
+
+ private static final long serialVersionUID = 1L;
+
+ private List<BulkUpdateObjectIdAndChangeToken> objectIdAndChangeToken;
+ private Properties properties;
+ private List<String> addSecondaryTypeIds;
+ private List<String> removeSecondaryTypeIds;
+
+ public List<BulkUpdateObjectIdAndChangeToken> getObjectIdAndChangeToken() {
+ return objectIdAndChangeToken;
+ }
+
+ public void setObjectIdAndChangeToken(List<BulkUpdateObjectIdAndChangeToken> objectIdAndChangeToken) {
+ this.objectIdAndChangeToken = objectIdAndChangeToken;
+ }
+
+ public Properties getProperties() {
+ return properties;
+ }
+
+ public void setProperties(Properties properties) {
+ this.properties = properties;
+ }
+
+ public List<String> getAddSecondaryTypeIds() {
+ return addSecondaryTypeIds;
+ }
+
+ public void setAddSecondaryTypeIds(List<String> addSecondaryTypeIds) {
+ this.addSecondaryTypeIds = addSecondaryTypeIds;
+ }
+
+ public List<String> getRemoveSecondaryTypeIds() {
+ return removeSecondaryTypeIds;
+ }
+
+ public void setRemoveSecondaryTypeIds(List<String> removeSecondaryTypeIds) {
+ this.removeSecondaryTypeIds = removeSecondaryTypeIds;
+ }
+
+ @Override
+ public String toString() {
+ return "BulkUpdate [objectIdAndChangeToken=" + objectIdAndChangeToken + ", properties=" + properties
+ + ", addSecondaryTypeIds=" + addSecondaryTypeIds + ", removeSecondaryTypeIds=" + removeSecondaryTypeIds
+ + "]" + super.toString();
+ }
+}
Propchange: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/dataobjects/BulkUpdateImpl.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/dataobjects/BulkUpdateObjectIdAndChangeTokenImpl.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/dataobjects/BulkUpdateObjectIdAndChangeTokenImpl.java?rev=1456526&r1=1456525&r2=1456526&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/dataobjects/BulkUpdateObjectIdAndChangeTokenImpl.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/main/java/org/apache/chemistry/opencmis/commons/impl/dataobjects/BulkUpdateObjectIdAndChangeTokenImpl.java Thu Mar 14 16:48:15 2013
@@ -27,10 +27,14 @@ public class BulkUpdateObjectIdAndChange
BulkUpdateObjectIdAndChangeToken {
private static final long serialVersionUID = 1L;
+
private String id;
private String newId;
private String changeToken = null;
+ public BulkUpdateObjectIdAndChangeTokenImpl() {
+ }
+
public BulkUpdateObjectIdAndChangeTokenImpl(String id, String changeToken) {
this.id = id;
this.newId = null;
@@ -63,6 +67,18 @@ public class BulkUpdateObjectIdAndChange
return changeToken;
}
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public void setNewId(String newId) {
+ this.newId = newId;
+ }
+
+ public void setChangeToken(String changeToken) {
+ this.changeToken = changeToken;
+ }
+
@Override
public String toString() {
return "BulkUpdateObjectIdAndChangeToken [id=" + id + ", newId=" + newId + ", changeToken=" + changeToken + "]"
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/AbstractXMLConverterTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/AbstractXMLConverterTest.java?rev=1456526&r1=1456525&r2=1456526&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/AbstractXMLConverterTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/AbstractXMLConverterTest.java Thu Mar 14 16:48:15 2013
@@ -30,8 +30,10 @@ import java.io.StringWriter;
import java.lang.reflect.Method;
import java.math.BigDecimal;
import java.math.BigInteger;
+import java.util.ArrayList;
import java.util.Calendar;
import java.util.GregorianCalendar;
+import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Random;
@@ -52,9 +54,23 @@ import javax.xml.validation.Schema;
import javax.xml.validation.SchemaFactory;
import javax.xml.validation.Validator;
+import org.apache.chemistry.opencmis.commons.data.CmisExtensionElement;
+import org.apache.chemistry.opencmis.commons.data.PropertyData;
+import org.apache.chemistry.opencmis.commons.data.PropertyId;
import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
+import org.apache.chemistry.opencmis.commons.enums.PropertyType;
import org.apache.chemistry.opencmis.commons.impl.XMLConstants;
import org.apache.chemistry.opencmis.commons.impl.XMLUtils;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.AbstractPropertyData;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.CmisExtensionElementImpl;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyBooleanImpl;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyDateTimeImpl;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyDecimalImpl;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyHtmlImpl;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIdImpl;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIntegerImpl;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyStringImpl;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyUriImpl;
import org.junit.Before;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -69,7 +85,7 @@ public abstract class AbstractXMLConvert
private final static long SEED = 1234567890;
- protected final static String TEST_SCHEMA = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ protected final static String TEST_SCHEMA10 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ "<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\""
+ TEST_NAMESPACE
+ "\" xmlns:test=\""
@@ -91,6 +107,29 @@ public abstract class AbstractXMLConvert
+ "<xs:element name=\"test\" type=\"test:testType\"/>" //
+ "</xs:schema>";
+ protected final static String TEST_SCHEMA11 = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>"
+ + "<xs:schema xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" elementFormDefault=\"qualified\" targetNamespace=\""
+ + TEST_NAMESPACE
+ + "\" xmlns:test=\""
+ + TEST_NAMESPACE
+ + "\" xmlns:cmis=\""
+ + XMLConstants.NAMESPACE_CMIS
+ + "\" version=\"1.0\">"
+ + "<xs:import namespace=\""
+ + XMLConstants.NAMESPACE_CMIS
+ + "\"/>"
+ + "<xs:complexType name=\"testType\">"
+ + "<xs:sequence>"
+ + "<xs:element name=\"repositoryInfo\" type=\"cmis:cmisRepositoryInfoType\" minOccurs=\"0\" maxOccurs=\"1\" />"
+ + "<xs:element name=\"type\" type=\"cmis:cmisTypeDefinitionType\" minOccurs=\"0\" maxOccurs=\"1\" />"
+ + "<xs:element name=\"object\" type=\"cmis:cmisObjectType\" minOccurs=\"0\" maxOccurs=\"1\" />"
+ + "<xs:element name=\"query\" type=\"cmis:cmisQueryType\" minOccurs=\"0\" maxOccurs=\"1\" />"
+ + "<xs:element name=\"bulkUpdate\" type=\"cmis:cmisBulkUpdateType\" minOccurs=\"0\" maxOccurs=\"1\" />"
+ + "</xs:sequence>" //
+ + "</xs:complexType>" //
+ + "<xs:element name=\"test\" type=\"test:testType\"/>" //
+ + "</xs:schema>";
+
protected Schema schema10;
protected Schema schema11;
protected Random rnd;
@@ -105,14 +144,14 @@ public abstract class AbstractXMLConvert
InputStream schema10stream = AbstractXMLConverterTest.class.getResourceAsStream("/schema/cmis10/CMIS-core.xsd");
if (schema10stream != null) {
StreamSource core10 = new StreamSource(schema10stream);
- StreamSource test10 = new StreamSource(new ByteArrayInputStream(TEST_SCHEMA.getBytes("UTF-8")));
+ StreamSource test10 = new StreamSource(new ByteArrayInputStream(TEST_SCHEMA10.getBytes("UTF-8")));
schema10 = sf.newSchema(new Source[] { core10, test10 });
}
InputStream schema11stream = AbstractXMLConverterTest.class.getResourceAsStream("/schema/cmis11/CMIS-core.xsd");
if (schema11stream != null) {
StreamSource core11 = new StreamSource(schema11stream);
- StreamSource test11 = new StreamSource(new ByteArrayInputStream(TEST_SCHEMA.getBytes("UTF-8")));
+ StreamSource test11 = new StreamSource(new ByteArrayInputStream(TEST_SCHEMA11.getBytes("UTF-8")));
schema11 = sf.newSchema(new Source[] { core11, test11 });
}
@@ -232,6 +271,140 @@ public abstract class AbstractXMLConvert
return result.getWriter().toString();
}
+ protected PropertyData<?> createPropertyData(PropertyType propertyType, int numValues) {
+ AbstractPropertyData<?> result;
+
+ switch (propertyType) {
+ case BOOLEAN:
+ result = new PropertyBooleanImpl();
+ if (numValues > 0) {
+ List<Boolean> values = new ArrayList<Boolean>();
+ for (int i = 0; i < numValues; i++) {
+ values.add(randomBoolean());
+ }
+ ((PropertyBooleanImpl) result).setValues(values);
+ }
+ break;
+ case DATETIME:
+ result = new PropertyDateTimeImpl();
+ if (numValues > 0) {
+ List<GregorianCalendar> values = new ArrayList<GregorianCalendar>();
+ for (int i = 0; i < numValues; i++) {
+ values.add(randomDateTime());
+ }
+ ((PropertyDateTimeImpl) result).setValues(values);
+ }
+ break;
+ case DECIMAL:
+ result = new PropertyDecimalImpl();
+ if (numValues > 0) {
+ List<BigDecimal> values = new ArrayList<BigDecimal>();
+ for (int i = 0; i < numValues; i++) {
+ values.add(randomDecimal());
+ }
+ ((PropertyDecimalImpl) result).setValues(values);
+ }
+ break;
+ case HTML:
+ result = new PropertyHtmlImpl();
+ if (numValues > 0) {
+ List<String> values = new ArrayList<String>();
+ for (int i = 0; i < numValues; i++) {
+ values.add(randomString());
+ }
+ ((PropertyHtmlImpl) result).setValues(values);
+ }
+ break;
+ case ID:
+ result = new PropertyIdImpl();
+ if (numValues > 0) {
+ List<String> values = new ArrayList<String>();
+ for (int i = 0; i < numValues; i++) {
+ values.add(randomString());
+ }
+ ((PropertyIdImpl) result).setValues(values);
+ }
+ break;
+ case INTEGER:
+ result = new PropertyIntegerImpl();
+ if (numValues > 0) {
+ List<BigInteger> values = new ArrayList<BigInteger>();
+ for (int i = 0; i < numValues; i++) {
+ values.add(randomInteger());
+ }
+ ((PropertyIntegerImpl) result).setValues(values);
+ }
+ break;
+ case STRING:
+ result = new PropertyStringImpl();
+ if (numValues > 0) {
+ List<String> values = new ArrayList<String>();
+ for (int i = 0; i < numValues; i++) {
+ values.add(randomString());
+ }
+ ((PropertyStringImpl) result).setValues(values);
+ }
+ break;
+ case URI:
+ result = new PropertyUriImpl();
+ if (numValues > 0) {
+ List<String> values = new ArrayList<String>();
+ for (int i = 0; i < numValues; i++) {
+ values.add(randomUri());
+ }
+ ((PropertyUriImpl) result).setValues(values);
+ }
+ break;
+ default:
+ return null;
+ }
+
+ result.setId(randomString());
+ result.setDisplayName(randomString());
+ result.setLocalName(randomString());
+ result.setQueryName(randomString());
+
+ return result;
+ }
+
+ protected PropertyId createIdPropertyData(String id, String value) {
+ PropertyIdImpl result = new PropertyIdImpl();
+
+ result.setId(id);
+ result.setDisplayName(id);
+ result.setLocalName(id);
+ result.setQueryName(id);
+ result.setValue(value);
+
+ return result;
+ }
+
+ protected List<CmisExtensionElement> createExtensions(int depth) {
+ List<CmisExtensionElement> result = new ArrayList<CmisExtensionElement>();
+
+ String[] namespaces = new String[] { "http://ext1.com", "http://ext2.org", "http://ext3.net" };
+
+ for (int i = 0; i < randomInt(4) + 1; i++) {
+ String ns = namespaces[randomInt(namespaces.length)];
+
+ Map<String, String> attr = new HashMap<String, String>();
+ for (int j = 0; j < randomInt(3); j++) {
+ attr.put(randomTag(), randomString());
+ }
+
+ CmisExtensionElementImpl element;
+ if (randomBoolean() || depth < 1) {
+ element = new CmisExtensionElementImpl(ns, randomTag(), attr, randomString());
+ } else {
+ element = new CmisExtensionElementImpl(ns, randomTag(), attr, createExtensions(depth - 1));
+ }
+
+ result.add(element);
+ }
+
+ return result;
+ }
+
protected String randomString() {
StringBuilder sb = new StringBuilder();
Added: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/BukUpdateConverterTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/BukUpdateConverterTest.java?rev=1456526&view=auto
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/BukUpdateConverterTest.java (added)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/BukUpdateConverterTest.java Thu Mar 14 16:48:15 2013
@@ -0,0 +1,102 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied. See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+package org.apache.chemistry.opencmis.commons.impl.xml;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNull;
+
+import java.io.ByteArrayOutputStream;
+import java.util.ArrayList;
+import java.util.List;
+
+import javax.xml.stream.XMLStreamReader;
+import javax.xml.stream.XMLStreamWriter;
+
+import org.apache.chemistry.opencmis.commons.data.BulkUpdateObjectIdAndChangeToken;
+import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
+import org.apache.chemistry.opencmis.commons.enums.PropertyType;
+import org.apache.chemistry.opencmis.commons.impl.XMLConverter;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.BulkUpdateImpl;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.BulkUpdateObjectIdAndChangeTokenImpl;
+import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertiesImpl;
+import org.junit.Test;
+
+public class BukUpdateConverterTest extends AbstractXMLConverterTest {
+
+ @Test
+ public void testBulkUpdate() throws Exception {
+ // run the test a few times with different values
+ for (int i = 0; i < 5; i++) {
+ BulkUpdateImpl bulkUpdate = new BulkUpdateImpl();
+
+ List<BulkUpdateObjectIdAndChangeToken> list = new ArrayList<BulkUpdateObjectIdAndChangeToken>();
+ for (int j = 0; j < randomInt(19) + 1; j++) {
+ BulkUpdateObjectIdAndChangeTokenImpl idAndToken = new BulkUpdateObjectIdAndChangeTokenImpl(
+ randomString(), randomString());
+ list.add(idAndToken);
+ }
+ bulkUpdate.setObjectIdAndChangeToken(list);
+
+ PropertiesImpl properties = new PropertiesImpl();
+ for (int j = 0; j < randomInt(9) + 1; j++) {
+ properties.addProperty(createPropertyData(
+ PropertyType.values()[randomInt(PropertyType.values().length)], randomInt(2)));
+ }
+ bulkUpdate.setProperties(properties);
+
+ List<String> addSecTypes = new ArrayList<String>();
+ for (int j = 0; j < randomInt(4) + 1; j++) {
+ addSecTypes.add(randomString());
+ }
+ bulkUpdate.setAddSecondaryTypeIds(addSecTypes);
+
+ List<String> removeSecTypes = new ArrayList<String>();
+ for (int j = 0; j < randomInt(4) + 1; j++) {
+ removeSecTypes.add(randomString());
+ }
+ bulkUpdate.setRemoveSecondaryTypeIds(removeSecTypes);
+
+ assertBulkUpdate11(bulkUpdate, true);
+ }
+ }
+
+ protected void assertBulkUpdate11(BulkUpdateImpl bulkUpdate, boolean validate) throws Exception {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+
+ XMLStreamWriter writer = createWriter(out);
+ XMLConverter.writeBulkUpdate(writer, CmisVersion.CMIS_1_1, TEST_NAMESPACE,
+ bulkUpdate.getObjectIdAndChangeToken(), bulkUpdate.getProperties(),
+ bulkUpdate.getAddSecondaryTypeIds(), bulkUpdate.getRemoveSecondaryTypeIds());
+ closeWriter(writer);
+
+ byte[] xml = out.toByteArray();
+
+ if (validate) {
+ validate(xml, CmisVersion.CMIS_1_1);
+ }
+
+ XMLStreamReader parser = createParser(xml);
+ BulkUpdateImpl result = XMLConverter.convertBulkUpdate(parser);
+ closeParser(parser);
+
+ assertNotNull(result);
+ assertDataObjectsEquals("BulkUpdate", bulkUpdate, result, null);
+ assertNull(result.getExtensions());
+ }
+}
Propchange: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/BukUpdateConverterTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/ObjectConvertTest.java
URL: http://svn.apache.org/viewvc/chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/ObjectConvertTest.java?rev=1456526&r1=1456525&r2=1456526&view=diff
==============================================================================
--- chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/ObjectConvertTest.java (original)
+++ chemistry/opencmis/trunk/chemistry-opencmis-commons/chemistry-opencmis-commons-impl/src/test/java/org/apache/chemistry/opencmis/commons/impl/xml/ObjectConvertTest.java Thu Mar 14 16:48:15 2013
@@ -21,24 +21,16 @@ package org.apache.chemistry.opencmis.co
import static org.junit.Assert.assertNotNull;
import java.io.ByteArrayOutputStream;
-import java.math.BigDecimal;
-import java.math.BigInteger;
import java.util.ArrayList;
-import java.util.GregorianCalendar;
-import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
-import java.util.Map;
import javax.xml.stream.XMLStreamReader;
import javax.xml.stream.XMLStreamWriter;
import org.apache.chemistry.opencmis.commons.PropertyIds;
import org.apache.chemistry.opencmis.commons.data.Ace;
-import org.apache.chemistry.opencmis.commons.data.CmisExtensionElement;
import org.apache.chemistry.opencmis.commons.data.ObjectData;
-import org.apache.chemistry.opencmis.commons.data.PropertyData;
-import org.apache.chemistry.opencmis.commons.data.PropertyId;
import org.apache.chemistry.opencmis.commons.data.RenditionData;
import org.apache.chemistry.opencmis.commons.enums.Action;
import org.apache.chemistry.opencmis.commons.enums.BaseTypeId;
@@ -46,24 +38,14 @@ import org.apache.chemistry.opencmis.com
import org.apache.chemistry.opencmis.commons.enums.CmisVersion;
import org.apache.chemistry.opencmis.commons.enums.PropertyType;
import org.apache.chemistry.opencmis.commons.impl.XMLConverter;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.AbstractPropertyData;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.AccessControlEntryImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.AccessControlListImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.AccessControlPrincipalDataImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.AllowableActionsImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.ChangeEventInfoDataImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.CmisExtensionElementImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.ObjectDataImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.PolicyIdListImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertiesImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyBooleanImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyDateTimeImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyDecimalImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyHtmlImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIdImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyIntegerImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyStringImpl;
-import org.apache.chemistry.opencmis.commons.impl.dataobjects.PropertyUriImpl;
import org.apache.chemistry.opencmis.commons.impl.dataobjects.RenditionDataImpl;
import org.junit.Test;
@@ -190,140 +172,6 @@ public class ObjectConvertTest extends A
return result;
}
- protected PropertyData<?> createPropertyData(PropertyType propertyType, int numValues) {
- AbstractPropertyData<?> result;
-
- switch (propertyType) {
- case BOOLEAN:
- result = new PropertyBooleanImpl();
- if (numValues > 0) {
- List<Boolean> values = new ArrayList<Boolean>();
- for (int i = 0; i < numValues; i++) {
- values.add(randomBoolean());
- }
- ((PropertyBooleanImpl) result).setValues(values);
- }
- break;
- case DATETIME:
- result = new PropertyDateTimeImpl();
- if (numValues > 0) {
- List<GregorianCalendar> values = new ArrayList<GregorianCalendar>();
- for (int i = 0; i < numValues; i++) {
- values.add(randomDateTime());
- }
- ((PropertyDateTimeImpl) result).setValues(values);
- }
- break;
- case DECIMAL:
- result = new PropertyDecimalImpl();
- if (numValues > 0) {
- List<BigDecimal> values = new ArrayList<BigDecimal>();
- for (int i = 0; i < numValues; i++) {
- values.add(randomDecimal());
- }
- ((PropertyDecimalImpl) result).setValues(values);
- }
- break;
- case HTML:
- result = new PropertyHtmlImpl();
- if (numValues > 0) {
- List<String> values = new ArrayList<String>();
- for (int i = 0; i < numValues; i++) {
- values.add(randomString());
- }
- ((PropertyHtmlImpl) result).setValues(values);
- }
- break;
- case ID:
- result = new PropertyIdImpl();
- if (numValues > 0) {
- List<String> values = new ArrayList<String>();
- for (int i = 0; i < numValues; i++) {
- values.add(randomString());
- }
- ((PropertyIdImpl) result).setValues(values);
- }
- break;
- case INTEGER:
- result = new PropertyIntegerImpl();
- if (numValues > 0) {
- List<BigInteger> values = new ArrayList<BigInteger>();
- for (int i = 0; i < numValues; i++) {
- values.add(randomInteger());
- }
- ((PropertyIntegerImpl) result).setValues(values);
- }
- break;
- case STRING:
- result = new PropertyStringImpl();
- if (numValues > 0) {
- List<String> values = new ArrayList<String>();
- for (int i = 0; i < numValues; i++) {
- values.add(randomString());
- }
- ((PropertyStringImpl) result).setValues(values);
- }
- break;
- case URI:
- result = new PropertyUriImpl();
- if (numValues > 0) {
- List<String> values = new ArrayList<String>();
- for (int i = 0; i < numValues; i++) {
- values.add(randomUri());
- }
- ((PropertyUriImpl) result).setValues(values);
- }
- break;
- default:
- return null;
- }
-
- result.setId(randomString());
- result.setDisplayName(randomString());
- result.setLocalName(randomString());
- result.setQueryName(randomString());
-
- return result;
- }
-
- protected PropertyId createIdPropertyData(String id, String value) {
- PropertyIdImpl result = new PropertyIdImpl();
-
- result.setId(id);
- result.setDisplayName(id);
- result.setLocalName(id);
- result.setQueryName(id);
- result.setValue(value);
-
- return result;
- }
-
- protected List<CmisExtensionElement> createExtensions(int depth) {
- List<CmisExtensionElement> result = new ArrayList<CmisExtensionElement>();
-
- String[] namespaces = new String[] { "http://ext1.com", "http://ext2.org", "http://ext3.net" };
-
- for (int i = 0; i < randomInt(4) + 1; i++) {
- String ns = namespaces[randomInt(namespaces.length)];
-
- Map<String, String> attr = new HashMap<String, String>();
- for (int j = 0; j < randomInt(3); j++) {
- attr.put(randomTag(), randomString());
- }
-
- CmisExtensionElementImpl element;
- if (randomBoolean() || depth < 1) {
- element = new CmisExtensionElementImpl(ns, randomTag(), attr, randomString());
- } else {
- element = new CmisExtensionElementImpl(ns, randomTag(), attr, createExtensions(depth - 1));
- }
-
- result.add(element);
- }
-
- return result;
- }
-
protected void assertObjectData10(ObjectData data, boolean validate) throws Exception {
ByteArrayOutputStream out = new ByteArrayOutputStream();