///////////////////////////////////////////////////////////////
 * 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.
///////////////////////////////////////////////////////////////

[[extension-es-jclouds,JClouds EntityStore]]
= JClouds EntityStore =

[devstatus]
--------------
source=extensions/entitystore-jclouds/dev-status.xml
--------------

EntityStore service backed by a http://www.jclouds.org/[JClouds] BlobStore.

It means you get access to a growing list of providers available at the
http://www.jclouds.org/[JClouds] website that includes Amazon, VMWare, Azure,
and Rackspace.

For testing purpose theses providers are supported too:

- Transient
- Filesystem

include::../../build/docs/buildinfo/artifact.txt[]

== Assembly ==

Assembly is done using the provided Assembler:

[snippet,java]
----
source=extensions/entitystore-jclouds/src/test/java/org/apache/polygene/entitystore/jclouds/JCloudsTransientTest.java
tag=assembly
----

== Configuration ==

Here are the configuration properties for the JClouds EntityStore:

[snippet,java]
----
source=extensions/entitystore-jclouds/src/main/java/org/apache/polygene/entitystore/jclouds/JCloudsMapEntityStoreConfiguration.java
tag=config
----
