diff --git a/.gitignore b/.gitignore
index aee5425d5..55b3d0f62 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,6 @@ target
.springBeans
.ant-targets-build.xml
src/ant/.ant-targets-upload-dist.xml
+*.iml
+*.ipr
+*.iws
diff --git a/pom.xml b/pom.xml
index e1d7b5a89..7a8e50951 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,171 +1,181 @@
- 4.0.0
- org.springframework.data
- spring-datastore-keyvalue-dist
- Spring Datastore Key-Value Distribution
- 1.0.0.BUILD-SNAPSHOT
- pom
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ 4.0.0
+ org.springframework.data
+ spring-datastore-keyvalue-dist
+ Spring Datastore Key-Value Distribution
+ 1.0.0.BUILD-SNAPSHOT
+ pom
-
- spring-datastore-keyvalue-parent
- spring-datastore-keyvalue-core
- spring-datastore-redis
- spring-datastore-riak
-
+
+ spring-datastore-keyvalue-parent
+ spring-datastore-keyvalue-core
+ spring-datastore-redis
+ spring-datastore-riak
+
-
-
-
- org.springframework.build.aws
- org.springframework.build.aws.maven
- 2.0.0.RELEASE
-
-
+
+
+
+ org.springframework.build.aws
+ org.springframework.build.aws.maven
+ 2.0.0.RELEASE
+
+
-
-
- com.agilejava.docbkx
- docbkx-maven-plugin
- 2.0.7
-
-
-
- generate-html
- generate-pdf
-
- pre-site
-
-
-
-
- org.docbook
- docbook-xml
- 4.4
- runtime
-
-
-
- index.xml
- true
- ${project.basedir}/src/docbkx/resources/xsl/fopdf.xsl
- css/html.css
- false
- ${project.basedir}/src/docbkx/resources/xsl/html.xsl
+
+
+ maven-compiler-plugin
+
+ 1.6
+ 1.6
+
+
+
+
+ com.agilejava.docbkx
+ docbkx-maven-plugin
+ 2.0.7
+
+
+
+ generate-html
+ generate-pdf
+
+ pre-site
+
+
+
+
+ org.docbook
+ docbook-xml
+ 4.4
+ runtime
+
+
+
+ index.xml
+ true
+ ${project.basedir}/src/docbkx/resources/xsl/fopdf.xsl
+ css/html.css
+ false
+ ${project.basedir}/src/docbkx/resources/xsl/html.xsl
1
1
-
-
-
-
- version
- ${pom.version}
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+ version
+ ${pom.version}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
+
+ run `mvn package assembly:assembly` to trigger assembly creation.
+ see http://www.sonatype.com/books/mvnref-book/reference/assemblies-set-dist-assemblies.html
+ maven-assembly-plugin
+ 2.2-beta-5
+ false
+
+
+ distribution
+
+ single
+
+ package
+
+
+ ${project.basedir}/src/assembly/distribution.xml
+
+ false
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-antrun-plugin
+ 1.4
+
+
+ upload-dist
+ deploy
+
+
+
+
+
+
+
+
+ run
+
+
+
+
+
+ org.springframework.build
+ org.springframework.build.aws.ant
+ 3.0.5.RELEASE
+
+
+ net.java.dev.jets3t
+ jets3t
+ 0.7.2
+
+
+
+
+
+ ${dist.finalName}
+ -->
+
-
-
-
-
- http://www.springsource.com/spring-data
-
- static.springframework.org
- scp://static.springframework.org/var/www/domains/springframework.org/static/htdocs/spring-data/datastore-keyvalue/snapshot-site/
-
-
- spring-milestone
- Spring Milestone Repository
- s3://maven.springframework.org/milestone
-
-
- spring-snapshot
- Spring Snapshot Repository
- s3://maven.springframework.org/snapshot
-
-
+
+
+
+
+ http://www.springsource.com/spring-data
+
+ static.springframework.org
+
+ scp://static.springframework.org/var/www/domains/springframework.org/static/htdocs/spring-data/datastore-keyvalue/snapshot-site/
+
+
+
+ spring-milestone
+ Spring Milestone Repository
+ s3://maven.springframework.org/milestone
+
+
+ spring-snapshot
+ Spring Snapshot Repository
+ s3://maven.springframework.org/snapshot
+
+
\ No newline at end of file
diff --git a/spring-datastore-keyvalue-parent/pom.xml b/spring-datastore-keyvalue-parent/pom.xml
index 7ef22c273..f05fed345 100644
--- a/spring-datastore-keyvalue-parent/pom.xml
+++ b/spring-datastore-keyvalue-parent/pom.xml
@@ -1,479 +1,514 @@
- 4.0.0
- org.springframework.data
- spring-datastore-keyvalue-parent
- Spring Datastore Key-Value Parent
- http://www.springsource.org/spring-data/datastore-keyvalue
- 1.0.0.BUILD-SNAPSHOT
- pom
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ 4.0.0
+ org.springframework.data
+ spring-datastore-keyvalue-parent
+ Spring Datastore Key-Value Parent
+ http://www.springsource.org/spring-data/datastore-keyvalue
+ 1.0.0.BUILD-SNAPSHOT
+ pom
+
+
+ UTF-8
+
+ 4.8.1
+ 1.2.15
+ 1.5.6
+ 1.8.4
+ 1.5.10
+ 3.0.5.RELEASE
+
+ spring-datastore-keyvalue
+ Spring Datastore Key-Value
+ DATADOC
+ ${project.version}
+ snapshot
+ ${dist.id}-${dist.version}
+ ${dist.finalName}.zip
+ target/${dist.fileName}
+ dist.springframework.org
+
+
-
- UTF-8
-
- 4.8.1
- 1.2.15
- 1.8.4
- 1.5.10
- 3.0.5.RELEASE
-
- spring-datastore-keyvalue
- Spring Datastore Key-Value
- DATADOC
- ${project.version}
- snapshot
- ${dist.id}-${dist.version}
- ${dist.finalName}.zip
- target/${dist.fileName}
- dist.springframework.org
-
-
-
-
-
- mpollack
- Mark Pollack
- mpollack at vmware.com
- SpringSource
- http://www.SpringSource.com
-
- Project Admin
- Developer
-
- -5
-
-
- cleau
- Costin Leau
- cleau at vmware.com
- SpringSource
- http://www.SpringSource.com
-
- Developer
-
- +2
-
+
+ mpollack
+ Mark Pollack
+ mpollack at vmware.com
+ SpringSource
+ http://www.SpringSource.com
+
+ Project Admin
+ Developer
+
+ -5
+
+
+ cleau
+ Costin Leau
+ cleau at vmware.com
+ SpringSource
+ http://www.SpringSource.com
+
+ Developer
+
+ +2
+
-
+
-
-
- Apache License, Version 2.0
- http://www.apache.org/licenses/LICENSE-2.0
-
- Copyright 2010 the original author or authors.
-
- Licensed 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.
-
-
-
+
+
+ Apache License, Version 2.0
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Copyright 2010 the original author or authors.
-
-
- strict
-
- false
-
-
-
- fast
-
- true
- true
-
-
-
- staging
-
-
- spring-site-staging
- file:///${java.io.tmpdir}/spring-data/datastore-keyvalue/docs
-
-
- spring-milestone-staging
- file:///${java.io.tmpdir}/spring-data/datastore-keyvalue/milestone
-
-
- spring-snapshot-staging
- file:///${java.io.tmpdir}/spring-data/datastore-keyvalue/snapshot
-
-
-
-
- bootstrap
-
-
-
+ Licensed 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
-
-
- org.springframework
- spring-aop
- ${org.springframework.version}
-
-
- org.springframework
- spring-beans
- ${org.springframework.version}
-
-
- org.springframework
- spring-core
- ${org.springframework.version}
-
-
- commons-logging
- commons-logging
-
-
-
-
- org.springframework
- spring-tx
- ${org.springframework.version}
-
-
- org.springframework
- spring-test
- ${org.springframework.version}
- test
-
+ 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.
+
+
+
-
-
- org.springframework.data
- spring-datastore-keyvalue-core
- ${project.version}
-
-
- org.springframework.data
- spring-datastore-redis
- ${project.version}
-
+
+
+ strict
+
+ false
+
+
+
+ fast
+
+ true
+ true
+
+
+
+ staging
+
+
+ spring-site-staging
+ file:///${java.io.tmpdir}/spring-data/datastore-keyvalue/docs
+
+
+ spring-milestone-staging
+ file:///${java.io.tmpdir}/spring-data/datastore-keyvalue/milestone
+
+
+ spring-snapshot-staging
+ file:///${java.io.tmpdir}/spring-data/datastore-keyvalue/snapshot
+
+
+
+
+ bootstrap
+
+
+
-
-
- org.slf4j
- slf4j-api
- ${org.slf4j.version}
-
-
- org.slf4j
- jcl-over-slf4j
- ${org.slf4j.version}
- runtime
-
-
- org.slf4j
- slf4j-log4j12
- ${org.slf4j.version}
- runtime
-
-
- log4j
- log4j
- ${log4j.version}
-
-
- javax.mail
- mail
-
-
- javax.jms
- jms
-
-
- com.sun.jdmk
- jmxtools
-
-
- com.sun.jmx
- jmxri
-
-
- runtime
-
+
+
+
-
- javax.annotation
- jsr250-api
- 1.0
- true
-
+
+
+ org.springframework
+ spring-aop
+ ${org.springframework.version}
+
+
+ org.springframework
+ spring-beans
+ ${org.springframework.version}
+
+
+ org.springframework
+ spring-core
+ ${org.springframework.version}
+
+
+ commons-logging
+ commons-logging
+
+
+
+
+ org.springframework
+ spring-tx
+ ${org.springframework.version}
+
+
+ org.springframework
+ spring-test
+ ${org.springframework.version}
+ test
+
+
+ org.springframework
+ spring-web
+ ${org.springframework.version}
+
-
- org.mockito
- mockito-all
- ${org.mockito.version}
- test
-
+
+
+ org.springframework.data
+ spring-datastore-keyvalue-core
+ ${project.version}
+
+
+ org.springframework.data
+ spring-datastore-redis
+ ${project.version}
+
-
- junit
- junit
- ${junit.version}
- test
-
+
+
+ org.codehaus.jackson
+ jackson-core-asl
+ ${org.codehaus.jackson.version}
+
+
+ org.codehaus.jackson
+ jackson-mapper-asl
+ ${org.codehaus.jackson.version}
+
-
-
-
-
-
- log4j
- log4j
- ${log4j.version}
- test
-
-
+
+
+ org.slf4j
+ slf4j-api
+ ${org.slf4j.version}
+
+
+ org.slf4j
+ jcl-over-slf4j
+ ${org.slf4j.version}
+ runtime
+
+
+ org.slf4j
+ slf4j-log4j12
+ ${org.slf4j.version}
+ runtime
+
+
+ log4j
+ log4j
+ ${log4j.version}
+
+
+ javax.mail
+ mail
+
+
+ javax.jms
+ jms
+
+
+ com.sun.jdmk
+ jmxtools
+
+
+ com.sun.jmx
+ jmxri
+
+
+ runtime
+
-
-
-
- org.springframework.build.aws
- org.springframework.build.aws.maven
- 2.0.0.RELEASE
-
-
-
-
- ${project.basedir}/src/main/java
-
- **/*
-
-
- **/*.java
-
-
-
- ${project.basedir}/src/main/resources
-
- **/*
-
-
-
-
-
- ${project.basedir}/src/test/java
-
- **/*
-
-
- **/*.java
-
-
-
- ${project.basedir}/src/test/resources
-
- **/*
-
-
- **/*.java
-
-
-
-
-
- org.apache.maven.plugins
- maven-compiler-plugin
-
- 1.5
- 1.5
- -Xlint:all
- true
- false
-
-
-
- org.apache.maven.plugins
- maven-surefire-plugin
-
- false
-
- **/*Tests.java
-
-
- **/Abstract*.java
-
-
- junit:junit
-
-
-
-
-
-
-
-
- com.springsource.bundlor
- com.springsource.bundlor.maven
- 1.0.0.RELEASE
-
- true
-
-
-
- bundlor
-
- bundlor
-
-
-
-
-
-
-
-
-
-
-
- repository.plugin.springsource.release
- SpringSource Maven Repository
- http://repository.springsource.com/maven/bundles/release
-
-
-
-
- repository.springframework.maven.release
- Spring Framework Maven Release Repository
- http://maven.springframework.org/release
-
-
- repository.springframework.maven.milestone
- Spring Framework Maven Milestone Repository
- http://maven.springframework.org/milestone
-
-
- repository.springframework.maven.snapshot
- Spring Framework Maven Snapshot Repository
- http://maven.springframework.org/snapshot
-
+
+ javax.annotation
+ jsr250-api
+ 1.0
+ true
+
+
+
+ org.mockito
+ mockito-all
+ ${org.mockito.version}
+ test
+
+
+
+ junit
+ junit
+ ${junit.version}
+ test
+
+
+ org.spockframework
+ spock-spring
+ 0.5-groovy-1.7-SNAPSHOT
+ test
+
+
+
+
+
+
+
+ log4j
+ log4j
+ ${log4j.version}
+ test
+
+
+
+
+
+
+ org.springframework.build.aws
+ org.springframework.build.aws.maven
+ 2.0.0.RELEASE
+
+
+
+
+ ${project.basedir}/src/main/java
+
+ **/*
+
+
+ **/*.java
+
+
+
+ ${project.basedir}/src/main/resources
+
+ **/*
+
+
+
+
+
+ ${project.basedir}/src/test/java
+
+ **/*
+
+
+ **/*.java
+
+
+
+ ${project.basedir}/src/test/resources
+
+ **/*
+
+
+ **/*.java
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-compiler-plugin
+
+ 1.5
+ 1.5
+ -Xlint:all
+ true
+ false
+
+
+
+ org.apache.maven.plugins
+ maven-surefire-plugin
+
+ false
+
+ **/*Tests.java
+
+
+ **/Abstract*.java
+
+
+ junit:junit
+
+
+
+
+
+
+
+
+ com.springsource.bundlor
+ com.springsource.bundlor.maven
+ 1.0.0.RELEASE
+
+ true
+
+
+
+ bundlor
+
+ bundlor
+
+
+
+
+
+
+
+
+
+
+
+ repository.plugin.springsource.release
+ SpringSource Maven Repository
+ http://repository.springsource.com/maven/bundles/release
+
+
+ spockframework
+ Spock Framework
+ http://m2repo.spockframework.org/snapshots
+
+
+
- spring-ext
- Spring External Dependencies Repository
-
+ repository.springframework.maven.release
+ Spring Framework Maven Release Repository
+ http://maven.springframework.org/release
+
+
+ repository.springframework.maven.milestone
+ Spring Framework Maven Milestone Repository
+ http://maven.springframework.org/milestone
+
+
+ repository.springframework.maven.snapshot
+ Spring Framework Maven Snapshot Repository
+ http://maven.springframework.org/snapshot
+
+
+ spring-ext
+ Spring External Dependencies Repository
+
http://springframework.svn.sourceforge.net/svnroot/springframework/repos/repo-ext/
-
-
-
-
-
-
-
-
- org.apache.maven.plugins
- maven-project-info-reports-plugin
- 2.1
-
- false
-
-
-
-
-
-
-
- http://www.springsource.com/spring-data
-
- static.springframework.org
- scp://static.springframework.org/var/www/domains/springframework.org/static/htdocs/spring-data/datastore-keyvalue/snapshot-site/
-
-
- spring-milestone
- Spring Milestone Repository
- s3://maven.springframework.org/milestone
-
-
- spring-snapshot
- Spring Snapshot Repository
- s3://maven.springframework.org/snapshot
-
-
-
+
+
+
+ spockframework
+ Spock Framework
+ http://m2repo.spockframework.org/snapshots
+
+
+
+
+
+
+
+ org.apache.maven.plugins
+ maven-project-info-reports-plugin
+ 2.1
+
+ false
+
+
+
+
+
+
+
+ http://www.springsource.com/spring-data
+
+ static.springframework.org
+
+ scp://static.springframework.org/var/www/domains/springframework.org/static/htdocs/spring-data/datastore-keyvalue/snapshot-site/
+
+
+
+ spring-milestone
+ Spring Milestone Repository
+ s3://maven.springframework.org/milestone
+
+
+ spring-snapshot
+ Spring Snapshot Repository
+ s3://maven.springframework.org/snapshot
+
+
+
\ No newline at end of file
diff --git a/spring-datastore-riak/pom.xml b/spring-datastore-riak/pom.xml
index 0e32db7d5..7f97d3c98 100644
--- a/spring-datastore-riak/pom.xml
+++ b/spring-datastore-riak/pom.xml
@@ -1,103 +1,120 @@
- 4.0.0
-
- org.springframework.data
- spring-datastore-keyvalue-parent
- 1.0.0.BUILD-SNAPSHOT
- ../spring-datastore-keyvalue-parent/pom.xml
-
- spring-datastore-riak
- jar
- Spring Datastore Riak Support
-
-
-
-
- org.springframework
- spring-beans
-
-
- org.springframework
- spring-tx
-
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ 4.0.0
+
+ org.springframework.data
+ spring-datastore-keyvalue-parent
+ 1.0.0.BUILD-SNAPSHOT
+ ../spring-datastore-keyvalue-parent/pom.xml
+
+ spring-datastore-riak
+ jar
+ Spring Datastore Riak Support
-
-
- org.springframework.data
- spring-datastore-keyvalue-core
-
+
+
+
+ org.springframework
+ spring-beans
+
+
+ org.springframework
+ spring-tx
+
+
+ org.springframework
+ spring-web
+
+
+ org.springframework
+ spring-test
+
-
-
- org.slf4j
- slf4j-api
-
-
- org.slf4j
- jcl-over-slf4j
- compile
-
-
- org.slf4j
- slf4j-log4j12
- runtime
-
-
- log4j
- log4j
-
-
- javax.mail
- mail
-
-
- javax.jms
- jms
-
-
- com.sun.jdmk
- jmxtools
-
-
- com.sun.jmx
- jmxri
-
-
- runtime
-
-
-
- javax.annotation
- jsr250-api
- true
-
+
+
+ org.springframework.data
+ spring-datastore-keyvalue-core
+
-
- org.mockito
- mockito-all
- test
-
+
+
+ org.codehaus.jackson
+ jackson-core-asl
+
+
+ org.codehaus.jackson
+ jackson-mapper-asl
+
-
- junit
- junit
-
+
+
+ org.slf4j
+ slf4j-api
+
+
+ org.slf4j
+ jcl-over-slf4j
+ compile
+
+
+ org.slf4j
+ slf4j-log4j12
+ runtime
+
+
+ log4j
+ log4j
+
+
+ javax.mail
+ mail
+
+
+ javax.jms
+ jms
+
+
+ com.sun.jdmk
+ jmxtools
+
+
+ com.sun.jmx
+ jmxri
+
+
+ runtime
+
-
-
- com.basho.riak
- riak-client
- 0.11.0
-
+
+ javax.annotation
+ jsr250-api
+ true
+
+
+
+ org.mockito
+ mockito-all
+ test
+
+
+
+ junit
+ junit
+
+
+ org.spockframework
+ spock-spring
+
+
+
+
+
+
+
+ com.springsource.bundlor
+ com.springsource.bundlor.maven
+
+
+
-
-
-
-
- com.springsource.bundlor
- com.springsource.bundlor.maven
-
-
-
diff --git a/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/DataStoreConnectionFailureException.java b/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/DataStoreConnectionFailureException.java
new file mode 100644
index 000000000..119050472
--- /dev/null
+++ b/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/DataStoreConnectionFailureException.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2010 by J. Brisbin
+ *
+ * Licensed 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.springframework.datastore.riak;
+
+import org.springframework.dao.DataAccessResourceFailureException;
+
+/**
+ * @author J. Brisbin
+ */
+public class DataStoreConnectionFailureException extends DataAccessResourceFailureException {
+
+ public DataStoreConnectionFailureException(String msg) {
+ super(msg);
+ }
+
+ public DataStoreConnectionFailureException(String msg, Throwable cause) {
+ super(msg, cause);
+ }
+
+}
diff --git a/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/DataStoreOperationException.java b/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/DataStoreOperationException.java
new file mode 100644
index 000000000..892593a7b
--- /dev/null
+++ b/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/DataStoreOperationException.java
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2010 by J. Brisbin
+ *
+ * Licensed 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.springframework.datastore.riak;
+
+import org.springframework.dao.DataAccessException;
+
+/**
+ * @author J. Brisbin
+ */
+public class DataStoreOperationException extends DataAccessException {
+
+ public DataStoreOperationException(String msg) {
+ super(msg);
+ }
+
+ public DataStoreOperationException(String msg, Throwable cause) {
+ super(msg, cause);
+ }
+
+}
diff --git a/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/convert/KeyValueStoreMetaData.java b/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/convert/KeyValueStoreMetaData.java
new file mode 100644
index 000000000..1bbaa2ff7
--- /dev/null
+++ b/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/convert/KeyValueStoreMetaData.java
@@ -0,0 +1,32 @@
+/*
+ * Copyright (c) 2010 by J. Brisbin
+ *
+ * Licensed 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.springframework.datastore.riak.convert;
+
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+
+/**
+ * @author J. Brisbin
+ */
+@Retention(RetentionPolicy.RUNTIME)
+public @interface KeyValueStoreMetaData {
+
+ String family();
+
+ String mediaType() default "application/json";
+
+}
diff --git a/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/convert/RiakConversionService.java b/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/convert/RiakConversionService.java
new file mode 100644
index 000000000..5cbb26a40
--- /dev/null
+++ b/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/convert/RiakConversionService.java
@@ -0,0 +1,28 @@
+/*
+ * Copyright (c) 2010 by J. Brisbin
+ *
+ * Licensed 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.springframework.datastore.riak.convert;
+
+import org.springframework.core.convert.support.GenericConversionService;
+
+/**
+ * @author J. Brisbin
+ */
+public class RiakConversionService extends GenericConversionService{
+
+ public RiakConversionService() {
+ }
+}
diff --git a/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/core/AbstractAsyncOperation.java b/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/core/AbstractAsyncOperation.java
new file mode 100644
index 000000000..73ee6ea9b
--- /dev/null
+++ b/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/core/AbstractAsyncOperation.java
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2010 by J. Brisbin
+ *
+ * Licensed 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.springframework.datastore.riak.core;
+
+import org.springframework.beans.factory.InitializingBean;
+import org.springframework.util.Assert;
+
+import java.util.concurrent.Callable;
+
+/**
+ * @author J. Brisbin
+ */
+public abstract class AbstractAsyncOperation implements Callable, InitializingBean {
+
+ protected RiakTemplate riakTemplate;
+
+ public RiakTemplate getRiakTemplate() {
+ return riakTemplate;
+ }
+
+ public void setRiakTemplate(RiakTemplate riakTemplate) {
+ this.riakTemplate = riakTemplate;
+ }
+
+ public void afterPropertiesSet() throws Exception {
+ Assert.notNull(riakTemplate, "Must provide a configured RiakTemplate for this operation.");
+ }
+
+}
diff --git a/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/core/KeyValueStoreKey.java b/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/core/KeyValueStoreKey.java
new file mode 100644
index 000000000..77b27cd09
--- /dev/null
+++ b/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/core/KeyValueStoreKey.java
@@ -0,0 +1,59 @@
+/*
+ * Copyright (c) 2010 by J. Brisbin
+ *
+ * Licensed 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.springframework.datastore.riak.core;
+
+/**
+ * @author J. Brisbin
+ */
+public class KeyValueStoreKey {
+
+ protected Object family;
+ protected Object key;
+
+ public KeyValueStoreKey() {
+ }
+
+ public KeyValueStoreKey(Object family, Object key) {
+ this.family = family;
+ this.key = key;
+ }
+
+ public Object getFamily() {
+ return family;
+ }
+
+ public void setFamily(Object family) {
+ this.family = family;
+ }
+
+ public Object getKey() {
+ return key;
+ }
+
+ public void setKey(Object key) {
+ this.key = key;
+ }
+
+ @Override
+ public String toString() {
+ if (null == family && null == key) {
+ return super.toString();
+ } else {
+ return (null != family ? family.toString() : "") + ":" + (null != key ? key.toString() : "");
+ }
+ }
+}
diff --git a/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/core/KeyValueStoreOperations.java b/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/core/KeyValueStoreOperations.java
new file mode 100644
index 000000000..f27dac74b
--- /dev/null
+++ b/spring-datastore-riak/src/main/java/org/springframework/datastore/riak/core/KeyValueStoreOperations.java
@@ -0,0 +1,70 @@
+/*
+ * Copyright (c) 2010 by J. Brisbin
+ *
+ * Licensed 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,
+ * WIVHOUT 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.springframework.datastore.riak.core;
+
+import java.util.List;
+import java.util.Map;
+
+public interface KeyValueStoreOperations {
+
+ // Set and Set with expiry operations
+ KeyValueStoreOperations set(Object key, V value);
+
+ KeyValueStoreOperations setAsBytes(Object key, byte[] value);
+
+ // Get operations
+ V get(Object key);
+
+ byte[] getAsBytes(Object key);
+
+ T getAsType(Object key, Class requiredType);
+
+ // Get and Set operations
+ V getAndSet(Object key, V value);
+
+ byte[] getAndSetBytes(Object key, byte[] value);
+
+ T getAndSetAsType(Object key, Object value, Class requiredType);
+
+ // Multi-get operations
+ List> getValues(List