http://code.google.com/p/typica/source/detail?r=346
Modified:
/trunk/build.xml
/trunk/java/com/xerox/amazonws/common/AWSQueryConnection.java
/trunk/java/com/xerox/amazonws/sdb/Domain.java
/trunk/java/com/xerox/amazonws/sdb/Item.java
/trunk/java/com/xerox/amazonws/simpledb/Domain.java
/trunk/test/java/TestSimpleDB.java
/trunk/xsd/sdb.xsd
=======================================
--- /trunk/build.xml Tue Apr 13 07:39:30 2010
+++ /trunk/build.xml Mon Jan 17 21:35:33 2011
@@ -15,6 +15,8 @@
<property name="typica.generated" value="${typica.build}/generated" />
<property name="typica.javadoc" value="${typica.build}/apidocs" />
<property name="typica.dist" value="${typica}/dist" />
+ <property name="typica.bundle.symbolic"
value="com.xerox.amazonws.typica"/>
+ <property name="typica.bundle.file"
value="${typica.jar}/${typica.bundle.symbolic}-${rel.version}.0.jar" />
<path id="typica.compile.classpath">
<fileset dir="${typica.lib}">
@@ -27,6 +29,10 @@
<fileset dir="${typica.lib}" includes="**/jaxb-*.jar"/>
</classpath>
</taskdef>
+
+ <taskdef name="bundle"
+ classname="net.luminis.build.plugin.bnd.BuildTask"
+ classpath="${typica.lib}/net.luminis.build.plugin-0.2.0.jar" />
<target name="init">
<tstamp />
@@ -87,14 +93,14 @@
<copy toDir="${typica.classes}">
<fileset dir="xsd" includes="**/*"/>
</copy>
- <javac srcdir="${typica.generated}" includes="**/*.java"
destdir="${typica.classes}" debug="on" target="1.5">
+ <javac srcdir="${typica.generated}" includes="**/*.java"
destdir="${typica.classes}" debug="on" target="1.5"
includeantruntime="true">
<classpath refid="typica.compile.classpath" />
</javac>
<copy todir="${typica.classes}">
<fileset dir="${typica.generated}" includes="**/*.ser"/>
<fileset dir="${typica.generated}" includes="**/*.properties"/>
</copy>
- <javac destdir="${typica.classes}" debug="on" target="1.5">
+ <javac destdir="${typica.classes}" debug="on" target="1.5"
includeantruntime="true">
<src path="${typica.src}" />
<classpath refid="typica.compile.classpath" />
<!--
@@ -120,6 +126,21 @@
<jar destfile="${typica.jar.file}" basedir="${typica.classes}"
excludes="**/*.xml"/>
</target>
+ <target name="bundle" depends="jar">
+ <bundle
+ classpath="${typica.jar.file}"
+ target="${typica.bundle.file}"
+ includeResource="@${typica.jar.file}"
+ includeIncludeResourceHeader="no"
+ bundleSymbolicName="${typica.bundle.symbolic}"
+ bundleVersion="${rel.version}.0"
+ bundleVendor="Typica project (http://code.google.com/p/typica/)"
+ bundleDocUrl="http://typica.s3.amazonaws.com/index.html"
+ bundleLicense="http://www.apache.org/licenses/LICENSE-2.0"
+
importPackage="javax.servlet.*;resolution:=optional,sun.*;resolution:=optional,*"
+
exportPackage="com.xerox.amazonws.*;-noimport:=true;version=${rel.version}.0"/>
+ </target>
+
<target name="javadoc" depends="schema">
<javadoc packagenames="com.xerox.*"
defaultexcludes="yes"
@@ -140,12 +161,13 @@
<target name="dist" depends="clean, javadoc">
<input message="Enter the version # : " addproperty="rel.version"/>
- <antcall target="jar">
+ <antcall target="bundle">
<param name="rel.version" value="${rel.version}"/>
</antcall>
<mkdir dir="${typica.dist}"/>
<zip destfile="${typica.dist}/typica-${rel.version}.zip">
<fileset file="${typica.jar.file}"/>
+ <fileset file="${typica.bundle.file}"/>
<fileset file="README"/>
<fileset file="LICENSE.txt"/>
<fileset dir="${typica.conf}" includes="**/*"/>
@@ -242,6 +264,10 @@
</classpath>
<arg line="${args}"/>
<jvmarg
value="-Djava.util.logging.config.file=conf/logging.properties"/>
+ <!--
+ <jvmarg value="-Djavax.net.ssl.trustStore=./jssecacerts"/>
+ <jvmarg value="-Djavax.net.debug=all"/>
+ -->
</java>
</target>
</project>
=======================================
--- /trunk/java/com/xerox/amazonws/common/AWSQueryConnection.java Fri Jul
9 13:10:55 2010
+++ /trunk/java/com/xerox/amazonws/common/AWSQueryConnection.java Mon Jan
17 21:35:33 2011
@@ -59,6 +59,7 @@
import org.apache.http.client.methods.HttpPost;
import org.apache.http.client.params.AllClientPNames;
import org.apache.http.conn.params.ConnRoutePNames;
+import org.apache.http.conn.params.ConnPerRouteBean;
import org.apache.http.conn.scheme.PlainSocketFactory;
import org.apache.http.conn.scheme.Scheme;
import org.apache.http.conn.scheme.SchemeRegistry;
@@ -524,11 +525,12 @@
params.setParameter(AllClientPNames.MAX_TOTAL_CONNECTIONS, new
Integer(maxConnections));
params.setParameter(AllClientPNames.VIRTUAL_HOST, getServer());
-// params.setParameter(AllClientPNames.MAX_CONNECTIONS_PER_ROUTE, new
ConnPerRouteBean(maxConnections));
+ params.setParameter(AllClientPNames.MAX_CONNECTIONS_PER_ROUTE, new
ConnPerRouteBean(maxConnections));
SchemeRegistry registry = new SchemeRegistry();
registry.register(new Scheme("http",
PlainSocketFactory.getSocketFactory(), 80));
registry.register(new Scheme("https",
SSLSocketFactory.getSocketFactory(), 443));
+ registry.register(new Scheme("https",
SSLSocketFactory.getSocketFactory(), 8773));
ThreadSafeClientConnManager connMgr = new
ThreadSafeClientConnManager(params, registry);
//SingleClientConnManager connMgr = new SingleClientConnManager(params,
registry);
=======================================
--- /trunk/java/com/xerox/amazonws/sdb/Domain.java Thu Jul 8 14:02:57 2010
+++ /trunk/java/com/xerox/amazonws/sdb/Domain.java Mon Jan 17 21:35:33 2011
@@ -46,6 +46,7 @@
import com.xerox.amazonws.common.AWSException;
import com.xerox.amazonws.common.AWSQueryConnection;
import com.xerox.amazonws.typica.sdb.jaxb.Attribute;
+import com.xerox.amazonws.typica.sdb.jaxb.BatchDeleteAttributesResponse;
import com.xerox.amazonws.typica.sdb.jaxb.BatchPutAttributesResponse;
import com.xerox.amazonws.typica.sdb.jaxb.DomainMetadataResponse;
import com.xerox.amazonws.typica.sdb.jaxb.SelectResponse;
@@ -260,6 +261,40 @@
}
return ret;
}
+
+ /**
+ * Batch deletes multiple items w/ attributes
+ *
+ * @param attributes list of attributes to delete
+ * @throws SDBException wraps checked exceptions
+ */
+ public SDBResult batchDeleteAttributes(Map<String, List<ItemAttribute>>
items) throws SDBException {
+ Map<String, String> params = new HashMap<String, String>();
+ params.put("DomainName", domainName);
+ int k=1;
+ for (String item : items.keySet()) {
+ params.put("Item."+k+".ItemName", item);
+ int i=1;
+ for (ItemAttribute attr : items.get(item)) {
+ String val = attr.getValue();
+ if (val != null) {
+ params.put("Item."+k+".Attribute."+i+".Name", attr.getName());
+ params.put("Item."+k+".Attribute."+i+".Value", val);
+ if (attr.isReplace()) {
+ params.put("Item."+k+".Attribute."+i+".Replace", "true");
+ }
+ i++;
+ }
+ }
+ k++;
+ }
+ HttpPost method = new HttpPost();
+ BatchDeleteAttributesResponse response =
+ makeRequestInt(method, "BatchDeleteAttributes", params,
BatchDeleteAttributesResponse.class);
+ return new SDBResult(null,
+ response.getResponseMetadata().getRequestId(),
+ response.getResponseMetadata().getBoxUsage());
+ }
public ThreadPoolExecutor getThreadPoolExecutor() {
if (executor != null) {
=======================================
--- /trunk/java/com/xerox/amazonws/sdb/Item.java Thu Jul 8 14:02:57 2010
+++ /trunk/java/com/xerox/amazonws/sdb/Item.java Mon Jan 17 21:35:33 2011
@@ -35,6 +35,7 @@
import org.apache.http.HttpException;
import org.apache.http.client.methods.HttpRequestBase;
import org.apache.http.client.methods.HttpGet;
+import org.apache.http.client.methods.HttpPost;
import com.xerox.amazonws.common.AWSException;
import com.xerox.amazonws.common.AWSQueryConnection;
=======================================
--- /trunk/java/com/xerox/amazonws/simpledb/Domain.java Wed May 5 18:11:34
2010
+++ /trunk/java/com/xerox/amazonws/simpledb/Domain.java Mon Jan 17 21:35:33
2011
@@ -46,6 +46,7 @@
import com.xerox.amazonws.common.ListResult;
import com.xerox.amazonws.common.Result;
import com.xerox.amazonws.typica.sdb.jaxb.Attribute;
+import com.xerox.amazonws.typica.sdb.jaxb.BatchDeleteAttributesResponse;
import com.xerox.amazonws.typica.sdb.jaxb.BatchPutAttributesResponse;
import com.xerox.amazonws.typica.sdb.jaxb.DeleteAttributesResponse;
import com.xerox.amazonws.typica.sdb.jaxb.DomainMetadataResponse;
@@ -335,6 +336,41 @@
return new SDBResult(response.getResponseMetadata().getRequestId(),
response.getResponseMetadata().getBoxUsage());
}
+
+ /**
+ * Batch deletes multiple items w/ attributes
+ *
+ * @param attributes list of attributes to delete
+ * @throws SDBException wraps checked exceptions
+ */
+ public SDBResult batchDeleteAttributes(List<Item> items) throws
SDBException {
+ Map<String, String> params = new HashMap<String, String>();
+ params.put("DomainName", domainName);
+ int k=1;
+ for (Item item : items) {
+ params.put("Item."+k+".ItemName", item.getIdentifier());
+ int i=1;
+ for (String attr : item.getAttributes().keySet()) {
+ Set<String> vals = item.getAttributeValues(attr);
+ if (vals != null && vals.size() > 0) {
+ for (String val : vals) {
+ params.put("Item."+k+".Attribute."+i+".Name", attr);
+ params.put("Item."+k+".Attribute."+i+".Value", val);
+ i++;
+// if (attr.isReplace()) {
+// params.put("Item."+k+".Attribute."+i+".Replace", "true");
+// }
+ }
+ }
+ }
+ k++;
+ }
+ HttpGet method = new HttpGet();
+ BatchDeleteAttributesResponse response =
+ makeRequestInt(method, "BatchDeleteAttributes", params,
BatchDeleteAttributesResponse.class);
+ return new SDBResult(response.getResponseMetadata().getRequestId(),
+ response.getResponseMetadata().getBoxUsage());
+ }
/**
* Deletes an item.
=======================================
--- /trunk/test/java/TestSimpleDB.java Mon Mar 1 20:11:15 2010
+++ /trunk/test/java/TestSimpleDB.java Mon Jan 17 21:35:33 2011
@@ -82,11 +82,22 @@
dom.batchPutAttributes(items);
+ logger.info("items after batch put");
qr = dom.selectItems("select * from "+args[0], null);
iList = qr.getItems();
for (String id : iList.keySet()) {
logger.info("item : "+id);
}
+
+ dom.batchDeleteAttributes(items);
+
+ logger.info("items after batch delete");
+ qr = dom.selectItems("select * from "+args[0], null);
+ iList = qr.getItems();
+ for (String id : iList.keySet()) {
+ logger.info("item : "+id);
+ }
+
/* List<ItemAttribute> attrs = i.getAttributes();
logger.info("all");
=======================================
--- /trunk/xsd/sdb.xsd Mon Mar 1 19:44:27 2010
+++ /trunk/xsd/sdb.xsd Mon Jan 17 21:35:33 2011
@@ -1,12 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<xs:schema targetNamespace="http://sdb.amazonaws.com/doc/2009-04-15/"
- xmlns:xs="http://www.w3.org/2001/XMLSchema"
- xmlns:tns="http://sdb.amazonaws.com/doc/2009-04-15/"
- xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
- xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
- jaxb:extensionBindingPrefixes="xjc"
- jaxb:version="2.0"
- elementFormDefault="qualified">
+<xs:schema
+ targetNamespace="http://sdb.amazonaws.com/doc/2009-04-15/"
+ xmlns:xs="http://www.w3.org/2001/XMLSchema"
+ xmlns:tns="http://sdb.amazonaws.com/doc/2009-04-15/"
+ xmlns:jaxb="http://java.sun.com/xml/ns/jaxb"
+ xmlns:xjc="http://java.sun.com/xml/ns/jaxb/xjc"
+ jaxb:extensionBindingPrefixes="xjc"
+ jaxb:version="2.0"
+ elementFormDefault="qualified">
<xs:annotation>
<xs:documentation xml:lang="en">
@@ -18,16 +19,16 @@
</xs:appinfo>
</xs:annotation>
- <!-- **************************** AmazonSimpleDB Types
******************************** -->
-
- <xs:element name="ResponseMetadata">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="RequestId" type="xs:string"/>
- <xs:element name="BoxUsage" type="xs:string" />
- </xs:sequence>
- </xs:complexType>
- </xs:element>
+ <!-- **************************** AmazonSimpleDB Types
******************************** -->
+
+ <xs:element name="ResponseMetadata">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="RequestId" type="xs:string"/>
+ <xs:element name="BoxUsage" type="xs:string" />
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
<xs:complexType name="Attribute">
<xs:sequence>
<xs:element name="Name">
@@ -50,237 +51,261 @@
</xs:element>
</xs:sequence>
</xs:complexType>
- <xs:complexType name="ReplaceableAttribute">
- <xs:sequence>
- <xs:element name="Name" type="xs:string"/>
- <xs:element name="Value" type="xs:string"/>
- <xs:element name="Replace" type="xs:boolean" minOccurs="0"
default="false"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="UpdateCondition">
- <xs:sequence>
- <xs:element name="Name" type="xs:string"/>
- <xs:element name="Value" type="xs:string" minOccurs="0"/>
- <xs:element name="Exists" type="xs:boolean" minOccurs="0"
default="true"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="Item">
- <xs:sequence>
- <xs:element name="Name">
- <xs:complexType>
- <xs:simpleContent>
- <xs:extension base="xs:string">
- <xs:attribute name="encoding" use="optional" type="xs:string"/>
- </xs:extension>
- </xs:simpleContent>
- </xs:complexType>
- </xs:element>
- <xs:element name="Attribute" type="tns:Attribute" minOccurs="0"
maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- <xs:complexType name="ReplaceableItem">
- <xs:sequence>
- <xs:element name="ItemName" type="xs:string"/>
- <xs:element name="Attribute" type="tns:ReplaceableAttribute"
maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
-
- <!-- **************************** AmazonSimpleDB Interface
*************************** -->
-
- <xs:element name="CreateDomain">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="DomainName" type="xs:string"/>
- </xs:sequence>
+ <xs:complexType name="ReplaceableAttribute">
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string"/>
+ <xs:element name="Value" type="xs:string"/>
+ <xs:element name="Replace" type="xs:boolean" minOccurs="0"
default="false"/>
+ </xs:sequence>
</xs:complexType>
- </xs:element>
-
- <xs:element name="CreateDomainResponse">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:ResponseMetadata"/>
- </xs:sequence>
+ <xs:complexType name="UpdateCondition">
+ <xs:sequence>
+ <xs:element name="Name" type="xs:string"/>
+ <xs:element name="Value" type="xs:string" minOccurs="0"/>
+ <xs:element name="Exists" type="xs:boolean" minOccurs="0"
default="true"/>
+ </xs:sequence>
</xs:complexType>
- </xs:element>
- <xs:element name="ListDomains">
- <xs:complexType>
-
- <xs:sequence>
- <xs:element name="MaxNumberOfDomains" type="xs:int" minOccurs="0"/>
- <xs:element name="NextToken" type="xs:string" minOccurs="0"/>
- </xs:sequence>
+ <xs:complexType name="Item">
+ <xs:sequence>
+ <xs:element name="Name">
+ <xs:complexType>
+ <xs:simpleContent>
+ <xs:extension base="xs:string">
+ <xs:attribute name="encoding" use="optional" type="xs:string"/>
+ </xs:extension>
+ </xs:simpleContent>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="Attribute" type="tns:Attribute" minOccurs="0"
maxOccurs="unbounded"/>
+ </xs:sequence>
</xs:complexType>
- </xs:element>
- <xs:element name="ListDomainsResponse">
- <xs:complexType>
- <xs:sequence>
-
- <xs:element ref="tns:ListDomainsResult"/>
- <xs:element ref="tns:ResponseMetadata"/>
- </xs:sequence>
+ <xs:complexType name="ReplaceableItem">
+ <xs:sequence>
+ <xs:element name="ItemName" type="xs:string"/>
+ <xs:element name="Attribute" type="tns:ReplaceableAttribute"
maxOccurs="unbounded"/>
+ </xs:sequence>
</xs:complexType>
- </xs:element>
- <xs:element name="ListDomainsResult">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="DomainName" type="xs:string" minOccurs="0"
maxOccurs="unbounded"/>
-
- <xs:element name="NextToken" type="xs:string" minOccurs="0"/>
- </xs:sequence>
+ <xs:complexType name="DeleteableItem">
+ <xs:sequence>
+ <xs:element name="ItemName" type="xs:string"/>
+ <xs:element name="Attribute" type="tns:Attribute" minOccurs="0"
maxOccurs="unbounded"/>
+ </xs:sequence>
</xs:complexType>
- </xs:element>
-
- <xs:element name="DomainMetadata">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="DomainName" type="xs:string"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="DomainMetadataResponse">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:DomainMetadataResult"/>
- <xs:element ref="tns:ResponseMetadata"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="DomainMetadataResult">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="ItemCount" type="xs:string"/>
- <xs:element name="ItemNamesSizeBytes" type="xs:string"/>
- <xs:element name="AttributeNameCount" type="xs:string"/>
- <xs:element name="AttributeNamesSizeBytes" type="xs:string"/>
- <xs:element name="AttributeValueCount" type="xs:string"/>
- <xs:element name="AttributeValuesSizeBytes" type="xs:string"/>
- <xs:element name="Timestamp" type="xs:string"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="DeleteDomain">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="DomainName" type="xs:string"/>
- </xs:sequence>
-
- </xs:complexType>
- </xs:element>
- <xs:element name="DeleteDomainResponse">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:ResponseMetadata"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="PutAttributes">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="DomainName" type="xs:string"/>
- <xs:element name="ItemName" type="xs:string"/>
- <xs:element name="Attribute" type="tns:ReplaceableAttribute"
maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="PutAttributesResponse">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:ResponseMetadata"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="BatchPutAttributes">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="DomainName" type="xs:string"/>
- <xs:element name="Item" type="tns:ReplaceableItem"
maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="BatchPutAttributesResponse">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:ResponseMetadata"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="GetAttributes">
- <xs:complexType>
-
- <xs:sequence>
- <xs:element name="DomainName" type="xs:string"/>
- <xs:element name="ItemName" type="xs:string"/>
- <xs:element name="AttributeName" type="xs:string" minOccurs="0"
maxOccurs="unbounded"/>
- <xs:element name="ConsistentRead" type="xs:boolean" minOccurs="0"
default="false"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="GetAttributesResponse">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:GetAttributesResult"/>
- <xs:element ref="tns:ResponseMetadata"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="GetAttributesResult">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Attribute" type="tns:Attribute" minOccurs="0"
maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="DeleteAttributes">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="DomainName" type="xs:string"/>
- <xs:element name="ItemName" type="xs:string"/>
- <xs:element name="Attribute" type="tns:Attribute" minOccurs="0"
maxOccurs="unbounded"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="DeleteAttributesResponse">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:ResponseMetadata"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
- <xs:element name="Select">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="SelectExpression" type="xs:string"/>
- <xs:element name="NextToken" type="xs:string" minOccurs="0"/>
- <xs:element name="ConsistentRead" type="xs:boolean" minOccurs="0"
default="false"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="SelectResponse">
- <xs:complexType>
- <xs:sequence>
- <xs:element ref="tns:SelectResult"/>
- <xs:element ref="tns:ResponseMetadata"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
- <xs:element name="SelectResult">
- <xs:complexType>
- <xs:sequence>
- <xs:element name="Item" type="tns:Item" minOccurs="0"
maxOccurs="unbounded"/>
- <xs:element name="NextToken" type="xs:string" minOccurs="0"/>
- </xs:sequence>
- </xs:complexType>
- </xs:element>
-
+
+ <!-- **************************** AmazonSimpleDB Interface
*************************** -->
+
+ <xs:element name="CreateDomain">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="DomainName" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="CreateDomainResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:ResponseMetadata"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ListDomains">
+ <xs:complexType>
+
+ <xs:sequence>
+ <xs:element name="MaxNumberOfDomains" type="xs:int" minOccurs="0"/>
+ <xs:element name="NextToken" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ListDomainsResponse">
+ <xs:complexType>
+ <xs:sequence>
+
+ <xs:element ref="tns:ListDomainsResult"/>
+ <xs:element ref="tns:ResponseMetadata"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="ListDomainsResult">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="DomainName" type="xs:string" minOccurs="0"
maxOccurs="unbounded"/>
+
+ <xs:element name="NextToken" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="DomainMetadata">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="DomainName" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DomainMetadataResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:DomainMetadataResult"/>
+ <xs:element ref="tns:ResponseMetadata"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DomainMetadataResult">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="ItemCount" type="xs:string"/>
+ <xs:element name="ItemNamesSizeBytes" type="xs:string"/>
+ <xs:element name="AttributeNameCount" type="xs:string"/>
+ <xs:element name="AttributeNamesSizeBytes" type="xs:string"/>
+ <xs:element name="AttributeValueCount" type="xs:string"/>
+ <xs:element name="AttributeValuesSizeBytes" type="xs:string"/>
+ <xs:element name="Timestamp" type="xs:string"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="DeleteDomain">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="DomainName" type="xs:string"/>
+ </xs:sequence>
+
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="DeleteDomainResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:ResponseMetadata"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="PutAttributes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="DomainName" type="xs:string"/>
+ <xs:element name="ItemName" type="xs:string"/>
+ <xs:element name="Attribute" type="tns:ReplaceableAttribute"
maxOccurs="unbounded"/>
+ <xs:element name="Expected" type="tns:UpdateCondition" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="PutAttributesResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:ResponseMetadata"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="BatchPutAttributes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="DomainName" type="xs:string"/>
+ <xs:element name="Item" type="tns:ReplaceableItem"
maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="BatchPutAttributesResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:ResponseMetadata"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="GetAttributes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="DomainName" type="xs:string"/>
+ <xs:element name="ItemName" type="xs:string"/>
+ <xs:element name="AttributeName" type="xs:string" minOccurs="0"
maxOccurs="unbounded"/>
+ <xs:element name="ConsistentRead" type="xs:boolean" minOccurs="0"
default="false"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="GetAttributesResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:GetAttributesResult"/>
+ <xs:element ref="tns:ResponseMetadata"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="GetAttributesResult">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Attribute" type="tns:Attribute" minOccurs="0"
maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="DeleteAttributes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="DomainName" type="xs:string"/>
+ <xs:element name="ItemName" type="xs:string"/>
+ <xs:element name="Attribute" type="tns:Attribute" minOccurs="0"
maxOccurs="unbounded"/>
+ <xs:element name="Expected" type="tns:UpdateCondition" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="DeleteAttributesResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:ResponseMetadata"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="BatchDeleteAttributes">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="DomainName" type="xs:string"/>
+ <xs:element name="Item" type="tns:DeleteableItem"
maxOccurs="unbounded"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="BatchDeleteAttributesResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:ResponseMetadata"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
+ <xs:element name="Select">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="SelectExpression" type="xs:string"/>
+ <xs:element name="NextToken" type="xs:string" minOccurs="0"/>
+ <xs:element name="ConsistentRead" type="xs:boolean" minOccurs="0"
default="false"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SelectResponse">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element ref="tns:SelectResult"/>
+ <xs:element ref="tns:ResponseMetadata"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+ <xs:element name="SelectResult">
+ <xs:complexType>
+ <xs:sequence>
+ <xs:element name="Item" type="tns:Item" minOccurs="0"
maxOccurs="unbounded"/>
+ <xs:element name="NextToken" type="xs:string" minOccurs="0"/>
+ </xs:sequence>
+ </xs:complexType>
+ </xs:element>
+
</xs:schema>