polygene-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From nic...@apache.org
Subject [4/6] zest-qi4j git commit: * Removed Google AppEngine EntityStore and associated test. * Removed Neo4j, both Entity Store and Library, due to lacking response from Neo Technologis regarding the GPLv3 'pollution'.
Date Wed, 10 Jun 2015 04:21:41 GMT
* Removed Google AppEngine EntityStore and associated test.
* Removed Neo4j, both Entity Store and Library, due to lacking response from Neo Technologis regarding the GPLv3 'pollution'.


Project: http://git-wip-us.apache.org/repos/asf/zest-qi4j/repo
Commit: http://git-wip-us.apache.org/repos/asf/zest-qi4j/commit/70f25289
Tree: http://git-wip-us.apache.org/repos/asf/zest-qi4j/tree/70f25289
Diff: http://git-wip-us.apache.org/repos/asf/zest-qi4j/diff/70f25289

Branch: refs/heads/develop
Commit: 70f2528983a278e2e272b8b7bbea0447f23cbc1e
Parents: 484e311
Author: Niclas Hedhman <niclas@hedhman.org>
Authored: Wed Jun 10 11:44:20 2015 +0800
Committer: Niclas Hedhman <niclas@hedhman.org>
Committed: Wed Jun 10 11:44:20 2015 +0800

----------------------------------------------------------------------
 .../java/org/qi4j/api/common/UseDefaults.java   |   2 +-
 .../org/qi4j/api/metrics/MetricsProvider.java   |  23 +
 extensions/entitystore-gae/NOTICE               |  16 -
 extensions/entitystore-gae/build.gradle         |  18 -
 extensions/entitystore-gae/dev-status.xml       |  19 -
 extensions/entitystore-gae/src/docs/es-gae.txt  |  13 -
 .../qi4j/entitystore/gae/GaeEntityState.java    | 427 -------------
 .../gae/GaeEntityStoreActivation.java           |  40 --
 .../entitystore/gae/GaeEntityStoreMixin.java    | 103 ---
 .../entitystore/gae/GaeEntityStoreService.java  |  40 --
 .../gae/GaeEntityStoreUnitOfWork.java           | 147 -----
 .../entitystore/gae/GaeIdGeneratorService.java  |  62 --
 .../gae2/GaeEntityStoreActivation.java          |  43 --
 .../gae2/GaeEntityStoreConfiguration.java       |  32 -
 .../entitystore/gae2/GaeEntityStoreMixin.java   | 221 -------
 .../entitystore/gae2/GaeEntityStoreService.java |  48 --
 .../GaeEntityStoreService.properties            |   5 -
 .../java/org/qi4j/entitystore/gae/readme.html   |  12 -
 extensions/entitystore-neo4j/NOTICE.txt         |  27 -
 extensions/entitystore-neo4j/build.gradle       |  17 -
 extensions/entitystore-neo4j/dev-status.xml     |  20 -
 .../entitystore-neo4j/license-explain.txt       |  68 --
 .../licenses/neo4j-commercial.license           |   3 -
 .../licenses/neo4j-opensource.license           | 619 -------------------
 .../entitystore-neo4j/src/docs/es-neo4j.txt     |  35 --
 .../entitystore/neo4j/NeoConfiguration.java     |  33 -
 .../qi4j/entitystore/neo4j/NeoEntityState.java  | 293 ---------
 .../entitystore/neo4j/NeoEntityStoreMixin.java  | 151 -----
 .../neo4j/NeoEntityStoreService.java            |  13 -
 .../neo4j/NeoEntityStoreUnitOfWork.java         | 220 -------
 .../neo4j/NeoManyAssociationState.java          | 170 -----
 .../neo4j/NeoNamedAssociationState.java         | 152 -----
 .../org/qi4j/entitystore/neo4j/RelTypes.java    |  12 -
 .../org/qi4j/entitystore/neo4j/package.html     |   5 -
 .../neo4j/test/SimpleNeoStoreTest.java          |  40 --
 .../qi4j/metrics/yammer/YammerMetricsMixin.java |   2 +-
 libraries/lang-beanshell/dev-status.xml         |   2 +-
 .../inspection/event/InspectArrivedCargo.java   |   2 +-
 .../inspection/event/InspectCargoInCustoms.java |   2 +-
 .../inspection/event/InspectClaimedCargo.java   |   2 +-
 .../inspection/event/InspectReceivedCargo.java  |   2 +-
 .../inspection/event/InspectUnhandledCargo.java |   2 +-
 .../inspection/event/InspectUnloadedCargo.java  |   2 +-
 samples/forum/build.gradle                      |   2 +-
 .../samples/forum/assembler/ForumAssembler.java |   9 +-
 settings.gradle                                 |   4 -
 tests/complex/gae/build.gradle                  |  18 -
 .../java/org/qi4j/test/gae/GaeTestServlet.java  | 126 ----
 .../main/java/org/qi4j/test/gae/UnitTests.java  |  36 --
 .../java/org/qi4j/test/gae2/GaeTestServlet.java | 126 ----
 .../main/java/org/qi4j/test/gae2/UnitTests.java |  43 --
 .../gae2/GaeEntityStoreService.properties       |   5 -
 tests/complex/gae/web/WEB-INF/appengine-web.xml |   5 -
 tests/complex/gae/web/WEB-INF/web.xml           |  28 -
 tests/complex/gae/web/index.jsp                 |  12 -
 55 files changed, 37 insertions(+), 3542 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/core/api/src/main/java/org/qi4j/api/common/UseDefaults.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/qi4j/api/common/UseDefaults.java b/core/api/src/main/java/org/qi4j/api/common/UseDefaults.java
index 8478d99..94f4446 100644
--- a/core/api/src/main/java/org/qi4j/api/common/UseDefaults.java
+++ b/core/api/src/main/java/org/qi4j/api/common/UseDefaults.java
@@ -46,7 +46,7 @@ import java.lang.annotation.Target;
  * </p>
  * <p>
  * It is also possible to change the default values for Composites during the assembly. This is done by calling the
- * {@link org.qi4j.bootstrap.ModuleAssembly#forMixin(Class)} method.
+ * {@code org.qi4j.bootstrap.ModuleAssembly#forMixin(Class)} method.
  * </p>
  * <p>
  * Example;

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/core/api/src/main/java/org/qi4j/api/metrics/MetricsProvider.java
----------------------------------------------------------------------
diff --git a/core/api/src/main/java/org/qi4j/api/metrics/MetricsProvider.java b/core/api/src/main/java/org/qi4j/api/metrics/MetricsProvider.java
index 404b31d..d7cd063 100644
--- a/core/api/src/main/java/org/qi4j/api/metrics/MetricsProvider.java
+++ b/core/api/src/main/java/org/qi4j/api/metrics/MetricsProvider.java
@@ -18,16 +18,39 @@ package org.qi4j.api.metrics;
 
 /**
  * Metrics Provider SPI.
+ * <p>
+ * The Qi4j Runtime will automatically ook for a service that implements the MetricsProvider interdace
+ * and use it for internal Runtime metrics, such as the UnitOfWork measuring the time from creation to close.
+ * </p>
+ * <p>
+ * The Metrics Library is available to add metric functionality to applications in the same way, and
+ * will use the same MetricsProvider.
+ * </p>
+ * <p>
+ * Note that the usual visibitlity rules applies, so you might have more than one MetricsProvider server,
+ * perhaps per layer.
+ * </p>
  */
 public interface MetricsProvider
 {
     /**
      * Creates a new factory instance.
      *
+     * The instanctiation is done by providing a Metric type, which is one of
+     * <ul>
+     * <li>{@link MetricsCounter}</li>
+     * <li>{@link MetricsGauge}</li>
+     * <li>{@link MetricsHealthCheck}</li>
+     * <li>{@link MetricsHistogram}</li>
+     * <li>{@link MetricsMeter}</li>
+     * <li>{@link MetricsTimer}</li>
+     * </ul>
+     *
      * @param factoryType The class of the metric type needed.
      * @param <T>         The metric type requested.
      *
      * @return A factory instance
+     *
      * @throws MetricsNotSupportedException when the MetricsProvider is not supporting the factory type requested.
      */
     <T extends MetricsFactory> T createFactory( Class<T> factoryType )

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/NOTICE
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/NOTICE b/extensions/entitystore-gae/NOTICE
deleted file mode 100644
index 1a8e31c..0000000
--- a/extensions/entitystore-gae/NOTICE
+++ /dev/null
@@ -1,16 +0,0 @@
-Qi4j Google AppEngine Persistence Extension
-Copyright 2007-2008, The Qi4j Development Team of individuals.
-
-See http://www.qi4j.org/contributors.html for list of of individuals.
-Also see each file for additional information of Copyright claims.
-
-Qi4j is a community aggregated works under Copyright law.
-All parts of the original works at Qi4j is licensed under the
-Apache License ver 2.0 http://www.apache.org/licenses
-
-Below follows a list of binary dependencies and their licenses;
-----------------------------------------------------------------
-
-<NONE>
-
-END OF NOTICE
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/build.gradle b/extensions/entitystore-gae/build.gradle
deleted file mode 100644
index 4225f5d..0000000
--- a/extensions/entitystore-gae/build.gradle
+++ /dev/null
@@ -1,18 +0,0 @@
-
-description = "Qi4j Google AppEngine Extension. Utilizes the GAE data store as EntityStore for applications deployed on GAE."
-
-jar { manifest { name = "Qi4j Extension - EntityStore - Google App Engine" }}
-
-dependencies {
-
-  compile project(":org.qi4j.core:org.qi4j.core.spi" )
-  compile project(":org.qi4j.core:org.qi4j.core.bootstrap" )
-  compile project(":org.qi4j.libraries:org.qi4j.library.locking" )
-  compile libraries.appengine
-
-  testCompile project( ":org.qi4j.core:org.qi4j.core.testsupport" )
-
-  testRuntime project( ":org.qi4j.core:org.qi4j.core.runtime" )
-  testRuntime libraries.logback
-
-}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/dev-status.xml
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/dev-status.xml b/extensions/entitystore-gae/dev-status.xml
deleted file mode 100644
index 5f2d3dc..0000000
--- a/extensions/entitystore-gae/dev-status.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<module xmlns="http://www.qi4j.org/schemas/2008/dev-status/1"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://www.qi4j.org/schemas/2008/dev-status/1
-        http://www.qi4j.org/schemas/2008/dev-status/1/dev-status.xsd">
-  <status>
-        <!--none,early,beta,stable,mature-->
-        <codebase>beta</codebase>
-
-        <!-- none, brief, good, complete -->
-        <documentation>none</documentation>
-
-        <!-- none, some, good, complete -->
-        <unittests>none</unittests>
-    </status>
-    <licenses>
-        <license>ALv2</license>
-    </licenses>
-</module>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/src/docs/es-gae.txt
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/src/docs/es-gae.txt b/extensions/entitystore-gae/src/docs/es-gae.txt
deleted file mode 100644
index 5647853..0000000
--- a/extensions/entitystore-gae/src/docs/es-gae.txt
+++ /dev/null
@@ -1,13 +0,0 @@
-[[extension-es-gae,AppEngine EntityStore]]
-= Google AppEngine EntityStore =
-
-[devstatus]
---------------
-source=extensions/entitystore-gae/dev-status.xml
---------------
-
-AppEngine EntityStore
-
-NOTE: This Extension has no documentation yet. Learn how to contribute in <<community-docs>>.
-
-include::../../build/docs/buildinfo/artifact.txt[]

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityState.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityState.java b/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityState.java
deleted file mode 100644
index a694c32..0000000
--- a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityState.java
+++ /dev/null
@@ -1,427 +0,0 @@
-/*
- * Copyright 2010 Niclas Hedhman.
- *
- * 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.qi4j.entitystore.gae;
-
-import com.google.appengine.api.datastore.Entity;
-import com.google.appengine.api.datastore.Key;
-import com.google.appengine.api.datastore.Text;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.Iterator;
-import java.util.List;
-import java.util.Map;
-import org.qi4j.api.common.QualifiedName;
-import org.qi4j.api.entity.EntityDescriptor;
-import org.qi4j.api.entity.EntityReference;
-import org.qi4j.api.property.PropertyDescriptor;
-import org.qi4j.api.structure.Module;
-import org.qi4j.api.type.ValueCompositeType;
-import org.qi4j.api.type.ValueType;
-import org.qi4j.api.value.ValueSerialization;
-import org.qi4j.api.value.ValueSerializationException;
-import org.qi4j.spi.entity.EntityState;
-import org.qi4j.spi.entity.EntityStatus;
-import org.qi4j.spi.entity.ManyAssociationState;
-import org.qi4j.spi.entity.NamedAssociationState;
-
-import static org.qi4j.functional.Iterables.first;
-import static org.qi4j.functional.Iterables.toList;
-
-public class GaeEntityState
-    implements EntityState
-{
-    static final String PROPERTY_TYPE = "$type";
-
-    private final Entity entity;
-    private EntityStatus status;
-    private final GaeEntityStoreUnitOfWork unitOfWork;
-    private final ValueSerialization valueSerialization;
-    private final EntityDescriptor descriptor;
-    private final HashMap<QualifiedName, ValueType> valueTypes;
-    private final Module module;
-
-    public GaeEntityState( GaeEntityStoreUnitOfWork unitOfWork,
-                           ValueSerialization valueSerialization,
-                           Key key,
-                           EntityDescriptor descriptor,
-                           Module module )
-    {
-        this.module = module;
-        this.unitOfWork = unitOfWork;
-        this.valueSerialization = valueSerialization;
-        this.descriptor = descriptor;
-        entity = new Entity( key );
-        entity.setProperty( "$version", unitOfWork.identity() );
-        Class type = first( descriptor.types() );
-        String name = type.getName();
-        entity.setUnindexedProperty( PROPERTY_TYPE, name );
-        status = EntityStatus.NEW;
-        valueTypes = initializeValueTypes( descriptor );
-    }
-
-    public GaeEntityState( GaeEntityStoreUnitOfWork unitOfWork,
-                           ValueSerialization valueSerialization,
-                           Entity entity,
-                           Module module )
-    {
-        if( entity == null )
-        {
-            throw new NullPointerException();
-        }
-        if( unitOfWork == null )
-        {
-            throw new NullPointerException();
-        }
-        this.module = module;
-        this.unitOfWork = unitOfWork;
-        this.valueSerialization = valueSerialization;
-        this.entity = entity;
-        String typeName = (String) entity.getProperty( GaeEntityState.PROPERTY_TYPE );
-        descriptor = module.entityDescriptor( typeName );
-        status = EntityStatus.LOADED;
-        valueTypes = initializeValueTypes( descriptor );
-    }
-
-    private HashMap<QualifiedName, ValueType> initializeValueTypes( EntityDescriptor descriptor )
-    {
-        HashMap<QualifiedName, ValueType> result = new HashMap<QualifiedName, ValueType>();
-        for( PropertyDescriptor persistent : descriptor.state().properties() )
-        {
-            if( persistent.valueType() instanceof ValueCompositeType )
-            {
-                QualifiedName name = persistent.qualifiedName();
-                result.put( name, persistent.valueType() );
-            }
-        }
-        return result;
-    }
-
-    Entity entity()
-    {
-        return entity;
-    }
-
-    @Override
-    public EntityReference identity()
-    {
-        EntityReference ref = new EntityReference( entity.getKey().getName() );
-        return ref;
-    }
-
-    @Override
-    public String version()
-    {
-        String version = (String) entity.getProperty( "$version" );
-        return version;
-    }
-
-    @Override
-    public long lastModified()
-    {
-        Long lastModified = (Long) entity.getProperty( "$lastModified" );
-        return lastModified;
-    }
-
-    @Override
-    public void remove()
-    {
-        status = EntityStatus.REMOVED;
-    }
-
-    @Override
-    public EntityStatus status()
-    {
-        return status;
-    }
-
-    @Override
-    public boolean isAssignableTo( Class<?> type )
-    {
-        return false;
-    }
-
-    @Override
-    public EntityDescriptor entityDescriptor()
-    {
-        return descriptor;
-    }
-
-    @Override
-    public Object propertyValueOf( QualifiedName stateName )
-    {
-        String uri = stateName.toURI();
-        Object value = entity.getProperty( uri );
-        if( value instanceof Text )
-        {
-            value = ( (Text) value ).getValue();
-        }
-        ValueType type = valueTypes.get( stateName );
-        if( value != null && type != null )
-        {
-            try
-            {
-                value = valueSerialization.deserialize( type, value.toString() );
-            }
-            catch( ValueSerializationException e )
-            {
-                String message = "\nqualifiedName: " + stateName +
-                                 "\n    stateName: " + stateName.name() +
-                                 "\n          uri: " + uri +
-                                 "\n         type: " + type +
-                                 "\n        value: " + value +
-                                 "\n";
-                InternalError error = new InternalError( message );
-                error.initCause( e );
-                throw error;
-            }
-        }
-        return value;
-    }
-
-    @Override
-    public void setPropertyValue( QualifiedName stateName, Object newValue )
-    {
-        Object value = null;
-        if( newValue == null || ValueType.isPrimitiveValue( newValue ) )
-        {
-            value = newValue;
-        }
-        else
-        {
-            try
-            {
-                value = valueSerialization.serialize( newValue );
-            }
-            catch( ValueSerializationException e )
-            {
-                String message = "\nqualifiedName: " + stateName +
-                                 "\n    stateName: " + stateName.name() +
-                                 "\n        class: " + newValue.getClass() +
-                                 "\n        value: " + value +
-                                 "\n";
-                InternalError error = new InternalError( message );
-                error.initCause( e );
-                throw error;
-            }
-        }
-        if( value instanceof String )
-        {
-            value = new Text( (String) value );
-        }
-        entity.setUnindexedProperty( stateName.toURI(), value );
-    }
-
-    @Override
-    public EntityReference associationValueOf( QualifiedName stateName )
-    {
-        String uri = stateName.toURI();
-        String identity = (String) entity.getProperty( uri );
-        EntityReference ref = new EntityReference( identity );
-        return ref;
-    }
-
-    @Override
-    public void setAssociationValue( QualifiedName stateName, EntityReference newEntity )
-    {
-        String uri = stateName.toURI();
-        String id = null;
-        if( newEntity != null )
-        {
-            id = newEntity.identity();
-        }
-        entity.setUnindexedProperty( uri, id );
-    }
-
-    @Override
-    public ManyAssociationState manyAssociationValueOf( QualifiedName stateName )
-    {
-        List<String> assocs = (List<String>) entity.getProperty( stateName.toURI() );
-        ManyAssociationState state = new GaeManyAssociationState( this, assocs );
-        return state;
-    }
-
-    @Override
-    public NamedAssociationState namedAssociationValueOf( QualifiedName stateName )
-    {
-        Map<String, String> assocs = (Map<String, String>) entity.getProperty( stateName.toURI() );
-        NamedAssociationState state = new GaeNamedAssociationState( this, assocs );
-        return state;
-    }
-
-    public void hasBeenApplied()
-    {
-        status = EntityStatus.LOADED;
-    }
-
-    private static class GaeManyAssociationState
-        implements ManyAssociationState
-    {
-        private List<String> assocs;
-        private final GaeEntityState entityState;
-
-        public GaeManyAssociationState( GaeEntityState entityState, List<String> listOfAssociations )
-        {
-            this.entityState = entityState;
-            if( listOfAssociations == null )
-            {
-                this.assocs = new ArrayList<String>();
-            }
-            else
-            {
-                this.assocs = listOfAssociations;
-            }
-        }
-
-        @Override
-        public int count()
-        {
-            return assocs.size();
-        }
-
-        @Override
-        public boolean contains( EntityReference entityReference )
-        {
-            return assocs.contains( entityReference.identity() );
-        }
-
-        @Override
-        public boolean add( int index, EntityReference entityReference )
-        {
-            String identity = entityReference.identity();
-            if( assocs.contains( identity ) )
-            {
-                return false;
-            }
-            assocs.add( index, entityReference.identity() );
-            entityState.markUpdated();
-            return true;
-        }
-
-        @Override
-        public boolean remove( EntityReference entityReference )
-        {
-            return assocs.remove( entityReference.identity() );
-        }
-
-        @Override
-        public EntityReference get( int index )
-        {
-            String id = assocs.get( index );
-            return new EntityReference( id );
-        }
-
-        @Override
-        public Iterator<EntityReference> iterator()
-        {
-            ArrayList<EntityReference> result = new ArrayList<EntityReference>();
-            for( String id : assocs )
-            {
-                result.add( new EntityReference( id ) );
-            }
-            return result.iterator();
-        }
-    }
-
-    private static class GaeNamedAssociationState
-        implements NamedAssociationState
-    {
-        private final Map<String, String> assocs;
-        private final GaeEntityState entityState;
-
-        private GaeNamedAssociationState( GaeEntityState entityState, Map<String, String> associations )
-        {
-            this.entityState = entityState;
-            if( associations == null )
-            {
-                this.assocs = new HashMap<>();
-            }
-            else
-            {
-                this.assocs = associations;
-            }
-        }
-
-        @Override
-        public int count()
-        {
-            return assocs.size();
-        }
-
-        @Override
-        public boolean containsName( String name )
-        {
-            return assocs.containsKey( name );
-        }
-
-        @Override
-        public boolean put( String name, EntityReference entityReference )
-        {
-            if( assocs.containsKey( name ) && entityReference.identity().equals( assocs.get( name ) ) )
-            {
-                return false;
-            }
-            assocs.put( name, entityReference.identity() );
-            entityState.markUpdated();
-            return true;
-        }
-
-        @Override
-        public boolean remove( String name )
-        {
-            boolean removed = assocs.remove( name ) != null;
-            entityState.markUpdated();
-            return removed;
-        }
-
-        @Override
-        public EntityReference get( String name )
-        {
-            return new EntityReference( assocs.get( name ) );
-        }
-
-        @Override
-        public String nameOf( EntityReference entityReference )
-        {
-            String identity = entityReference.identity();
-            for( Map.Entry<String, String> entry : assocs.entrySet() )
-            {
-                if( identity.equals( entry.getValue() ) )
-                {
-                    return entry.getKey();
-                }
-            }
-            return null;
-        }
-
-        @Override
-        public Iterator<String> iterator()
-        {
-            return toList( assocs.keySet() ).iterator();
-        }
-
-    }
-
-    private void markUpdated()
-    {
-        if( status == EntityStatus.LOADED )
-        {
-            status = EntityStatus.UPDATED;
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreActivation.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreActivation.java b/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreActivation.java
deleted file mode 100644
index e0d1221..0000000
--- a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreActivation.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- * Copyright (c) 2012, Paul Merlin. All Rights Reserved.
- *
- * 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.qi4j.entitystore.gae;
-
-import org.qi4j.api.activation.ActivatorAdapter;
-import org.qi4j.api.activation.Activators;
-import org.qi4j.api.service.ServiceReference;
-
-@Activators( GaeEntityStoreActivation.Activator.class )
-public interface GaeEntityStoreActivation
-{
-
-    void activateGaeEntityStore()
-            throws Exception;
-
-    class Activator
-            extends ActivatorAdapter<ServiceReference<GaeEntityStoreActivation>>
-    {
-
-        @Override
-        public void afterActivation( ServiceReference<GaeEntityStoreActivation> activated )
-                throws Exception
-        {
-            activated.get().activateGaeEntityStore();
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreMixin.java b/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreMixin.java
deleted file mode 100644
index 1986032..0000000
--- a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreMixin.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*  Copyright 2010 Niclas Hedhman
- *
- * 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.qi4j.entitystore.gae;
-
-import com.google.appengine.api.datastore.*;
-import org.qi4j.api.entity.Identity;
-import org.qi4j.api.entity.IdentityGenerator;
-import org.qi4j.api.injection.scope.Service;
-import org.qi4j.api.service.qualifier.Tagged;
-import org.qi4j.api.structure.Module;
-import org.qi4j.api.usecase.Usecase;
-import org.qi4j.api.value.ValueSerialization;
-import org.qi4j.io.Input;
-import org.qi4j.io.Output;
-import org.qi4j.io.Receiver;
-import org.qi4j.io.Sender;
-import org.qi4j.spi.entity.EntityState;
-import org.qi4j.spi.entitystore.EntityStore;
-import org.qi4j.spi.entitystore.EntityStoreException;
-import org.qi4j.spi.entitystore.EntityStoreUnitOfWork;
-
-/**
- * GAE implementation of SerializationStore
- */
-public class GaeEntityStoreMixin
-        implements GaeEntityStoreActivation, EntityStore
-{
-   private final ValueSerialization valueSerialization;
-   private final String uuid;
-   private long counter;
-   private DatastoreService datastoreService;
-
-   public GaeEntityStoreMixin( @Service IdentityGenerator uuid,
-                               @Service @Tagged( ValueSerialization.Formats.JSON ) ValueSerialization valueSerialization )
-   {
-      this.uuid = uuid.generate(Identity.class) + ":";
-      this.valueSerialization = valueSerialization;
-      counter = 0L;
-   }
-
-   @Override
-   public void activateGaeEntityStore()
-           throws Exception
-   {
-      datastoreService = DatastoreServiceFactory.getDatastoreService();
-   }
-
-    @Override
-   public EntityStoreUnitOfWork newUnitOfWork( Usecase usecase, Module module, long currentTime )
-   {
-       return new GaeEntityStoreUnitOfWork( datastoreService, valueSerialization, generateId(), module, currentTime );
-   }
-
-    @Override
-   public Input<EntityState, EntityStoreException> entityStates(final Module module)
-   {
-      return new Input<EntityState, EntityStoreException>()
-      {
-         @Override
-         public <ReceiverThrowableType extends Throwable> void transferTo(Output<? super EntityState, ReceiverThrowableType> output) throws EntityStoreException, ReceiverThrowableType
-         {
-            final GaeEntityStoreUnitOfWork euow = new GaeEntityStoreUnitOfWork( datastoreService, valueSerialization,
-                                                                                generateId(), module,
-                                                                                System.currentTimeMillis() );
-            Query query = new Query();
-            PreparedQuery q = datastoreService.prepare(query);
-            final QueryResultIterable<Entity> iterable = q.asQueryResultIterable();
-
-            output.receiveFrom(new Sender<EntityState, EntityStoreException>()
-            {
-               @Override
-               public <ReceiverThrowableType extends Throwable> void sendTo(Receiver<? super EntityState, ReceiverThrowableType> receiver) throws ReceiverThrowableType, EntityStoreException
-               {
-                  for (Entity entity : iterable)
-                  {
-                     EntityState entityState = new GaeEntityState( euow, valueSerialization, entity, module );
-                     receiver.receive(entityState);
-                  }
-               }
-            });
-         }
-      };
-   }
-
-   private String generateId()
-   {
-      return uuid + counter++;
-   }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreService.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreService.java b/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreService.java
deleted file mode 100644
index c2db8df..0000000
--- a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreService.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*  Copyright 2010 Niclas Hedhman
- *
- * 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.qi4j.entitystore.gae;
-
-import org.qi4j.api.concern.Concerns;
-import org.qi4j.api.mixin.Mixins;
-import org.qi4j.api.service.ServiceComposite;
-import org.qi4j.library.locking.LockingAbstractComposite;
-import org.qi4j.spi.entitystore.ConcurrentModificationCheckConcern;
-import org.qi4j.spi.entitystore.EntityStateVersions;
-import org.qi4j.spi.entitystore.EntityStore;
-import org.qi4j.spi.entitystore.StateChangeNotificationConcern;
-
-/**
- * EntityStore service backed by Google AppEngine's low-level store.
- */
-@Concerns( { StateChangeNotificationConcern.class, ConcurrentModificationCheckConcern.class } )
-@Mixins( { GaeEntityStoreMixin.class } )
-public interface GaeEntityStoreService
-    extends GaeEntityStoreActivation,
-            EntityStore,
-            EntityStateVersions,
-            ServiceComposite,
-            LockingAbstractComposite
-{
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreUnitOfWork.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreUnitOfWork.java b/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreUnitOfWork.java
deleted file mode 100644
index e32786d..0000000
--- a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeEntityStoreUnitOfWork.java
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright 2010 Niclas Hedhman.
- *
- * 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.qi4j.entitystore.gae;
-
-import com.google.appengine.api.datastore.*;
-import java.util.LinkedList;
-import org.qi4j.api.entity.EntityDescriptor;
-import org.qi4j.api.entity.EntityReference;
-import org.qi4j.api.structure.Module;
-import org.qi4j.api.value.ValueSerialization;
-import org.qi4j.spi.entity.EntityState;
-import org.qi4j.spi.entity.EntityStatus;
-import org.qi4j.spi.entitystore.EntityNotFoundException;
-import org.qi4j.spi.entitystore.EntityStoreException;
-import org.qi4j.spi.entitystore.EntityStoreUnitOfWork;
-import org.qi4j.spi.entitystore.StateCommitter;
-
-public class GaeEntityStoreUnitOfWork
-    implements EntityStoreUnitOfWork
-{
-    private final DatastoreService datastore;
-    private final ValueSerialization valueSerialization;
-    private final String identity;
-    private final Module module;
-    private final long currentTime;
-    private final LinkedList<GaeEntityState> states;
-
-    public GaeEntityStoreUnitOfWork( DatastoreService datastore,
-                                     ValueSerialization valueSerialization,
-                                     String identity,
-                                     Module module,
-                                     long currentTime )
-    {
-        this.datastore = datastore;
-        this.valueSerialization = valueSerialization;
-        this.identity = identity;
-        this.module = module;
-        this.currentTime = currentTime;
-        states = new LinkedList<GaeEntityState>();
-    }
-
-    @Override
-    public String identity()
-    {
-        return identity;
-    }
-
-    @Override
-    public long currentTime()
-    {
-        return currentTime;
-    }
-
-    @Override
-    public EntityState newEntityState( EntityReference anIdentity, EntityDescriptor entityDescriptor )
-        throws EntityStoreException
-    {
-        Key key = KeyFactory.createKey( "qi4j-entity", anIdentity.identity() );
-        GaeEntityState state = new GaeEntityState( this, valueSerialization, key, entityDescriptor, module );
-        states.add( state );
-        return state;
-    }
-
-    @Override
-    public EntityState entityStateOf( EntityReference reference )
-        throws EntityStoreException, EntityNotFoundException
-    {
-        Key key = KeyFactory.createKey( "qi4j-entity", reference.identity() );
-        try
-        {
-            Entity entity = datastore.get( key );
-            GaeEntityState state = new GaeEntityState( this, valueSerialization, entity, module );
-            states.add( state );
-            return state;
-        }
-        catch( com.google.appengine.api.datastore.EntityNotFoundException e )
-        {
-            throw new EntityNotFoundException( reference );
-        }
-    }
-
-    @Override
-    public StateCommitter applyChanges()
-        throws EntityStoreException
-    {
-        Transaction transaction = datastore.beginTransaction();
-        for( GaeEntityState state : states )
-        {
-            Entity entity = state.entity();
-            if( state.status() == EntityStatus.NEW ||
-                state.status() == EntityStatus.UPDATED )
-            {
-                datastore.put( transaction, entity );
-            }
-            if( state.status() == EntityStatus.REMOVED )
-            {
-                datastore.delete( transaction, entity.getKey() );
-            }
-        }
-        return new GaeStateCommitter( transaction );
-    }
-
-    @Override
-    public void discard()
-    {
-        // nothing to do??
-    }
-
-    private static class GaeStateCommitter
-        implements StateCommitter
-    {
-        private Transaction transaction;
-
-        public GaeStateCommitter( Transaction transaction )
-        {
-            this.transaction = transaction;
-        }
-
-        @Override
-        public void commit()
-        {
-            transaction.commit();
-        }
-
-        @Override
-        public void cancel()
-        {
-            transaction.rollback();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeIdGeneratorService.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeIdGeneratorService.java b/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeIdGeneratorService.java
deleted file mode 100644
index 8e37001..0000000
--- a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae/GaeIdGeneratorService.java
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * Copyright 2010 Niclas Hedhman.
- *
- * 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.qi4j.entitystore.gae;
-
-import com.google.appengine.api.datastore.DatastoreService;
-import com.google.appengine.api.datastore.DatastoreServiceFactory;
-import com.google.appengine.api.datastore.Key;
-import java.util.Iterator;
-import org.qi4j.api.entity.IdentityGenerator;
-import org.qi4j.api.mixin.Mixins;
-import org.qi4j.api.service.ServiceComposite;
-
-@Mixins( GaeIdGeneratorService.Mixin.class )
-public interface GaeIdGeneratorService
-    extends IdentityGenerator, ServiceComposite
-{
-    public class Mixin
-        implements IdentityGenerator
-    {
-        private DatastoreService datastore;
-        private ThreadLocal<Iterator<Key>> range;
-
-        public Mixin()
-        {
-            datastore = DatastoreServiceFactory.getDatastoreService();
-            range = new ThreadLocal<Iterator<Key>>()
-            {
-                @Override
-                protected Iterator<Key> initialValue()
-                {
-                    return datastore.allocateIds( "qi4j", 100 ).iterator();
-                }
-            };
-        }
-
-        @Override
-        public String generate( Class<?> compositeType )
-        {
-            if( !range.get().hasNext() )
-            {
-                range.set( datastore.allocateIds( "qi4j", 100 ).iterator() );
-            }
-            return "" + range.get().next().getId();
-        }
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreActivation.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreActivation.java b/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreActivation.java
deleted file mode 100644
index 7dcfad2..0000000
--- a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreActivation.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- * Copyright (c) 2012, Paul Merlin. All Rights Reserved.
- *
- * 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.qi4j.entitystore.gae2;
-
-import org.qi4j.api.activation.ActivatorAdapter;
-import org.qi4j.api.activation.Activators;
-import org.qi4j.api.service.ServiceReference;
-
-/**
- * Activation for GaeEntityStoreMixin.
- */
-@Activators( GaeEntityStoreActivation.Activator.class )
-public interface GaeEntityStoreActivation
-{
-
-    void activateGaeEntityStore()
-            throws Exception;
-
-    class Activator
-            extends ActivatorAdapter<ServiceReference<GaeEntityStoreActivation>>
-    {
-
-        @Override
-        public void afterActivation( ServiceReference<GaeEntityStoreActivation> activated )
-                throws Exception
-        {
-            activated.get().activateGaeEntityStore();
-        }
-
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreConfiguration.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreConfiguration.java b/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreConfiguration.java
deleted file mode 100644
index 554fdc5..0000000
--- a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreConfiguration.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright 2009 Niclas Hedhman.
- *
- * 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.qi4j.entitystore.gae2;
-
-import org.qi4j.api.configuration.ConfigurationComposite;
-import org.qi4j.api.property.Property;
-
-public interface GaeEntityStoreConfiguration extends ConfigurationComposite
-{
-
-    Property<String> readPolicy();
-
-    Property<Double> deadline();
-    
-    Property<String> entityKind();
-}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreMixin.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreMixin.java b/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreMixin.java
deleted file mode 100644
index 4721ada..0000000
--- a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreMixin.java
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Copyright 2009 Niclas Hedhman.
- *
- * 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.qi4j.entitystore.gae2;
-
-import com.google.appengine.api.datastore.DatastoreService;
-import com.google.appengine.api.datastore.DatastoreServiceConfig;
-import com.google.appengine.api.datastore.DatastoreServiceFactory;
-import com.google.appengine.api.datastore.Entity;
-import com.google.appengine.api.datastore.Key;
-import com.google.appengine.api.datastore.KeyFactory;
-import com.google.appengine.api.datastore.PreparedQuery;
-import com.google.appengine.api.datastore.Query;
-import com.google.appengine.api.datastore.QueryResultIterable;
-import com.google.appengine.api.datastore.ReadPolicy;
-import com.google.appengine.api.datastore.Text;
-import com.google.appengine.api.datastore.Transaction;
-import java.io.IOException;
-import java.io.Reader;
-import java.io.StringReader;
-import java.io.StringWriter;
-import java.io.Writer;
-import java.util.concurrent.locks.ReadWriteLock;
-import org.qi4j.api.configuration.Configuration;
-import org.qi4j.api.entity.EntityDescriptor;
-import org.qi4j.api.entity.EntityReference;
-import org.qi4j.api.injection.scope.This;
-import org.qi4j.api.util.Classes;
-import org.qi4j.io.Input;
-import org.qi4j.io.Output;
-import org.qi4j.io.Receiver;
-import org.qi4j.io.Sender;
-import org.qi4j.spi.entitystore.EntityNotFoundException;
-import org.qi4j.spi.entitystore.EntityStoreException;
-import org.qi4j.spi.entitystore.helpers.MapEntityStore;
-
-import static com.google.appengine.api.datastore.DatastoreServiceConfig.Builder.withReadPolicy;
-import static org.qi4j.functional.Iterables.first;
-
-public class GaeEntityStoreMixin
-    implements GaeEntityStoreActivation, MapEntityStore
-{
-    @This
-    private ReadWriteLock lock;
-
-    @This
-    private Configuration<GaeEntityStoreConfiguration> config;
-
-    private DatastoreService datastore;
-    private String entityKind;
-
-    @Override
-    public void activateGaeEntityStore()
-        throws Exception
-    {
-        GaeEntityStoreConfiguration conf = config.get();
-        // eventually consistent reads with a 5 second deadline
-        DatastoreServiceConfig configuration =
-            withReadPolicy( new ReadPolicy( ReadPolicy.Consistency.valueOf( conf.readPolicy().get().toUpperCase() ) ) )
-                .deadline( conf.deadline().get() );
-        datastore = DatastoreServiceFactory.getDatastoreService( configuration );
-        entityKind = conf.entityKind().get();
-    }
-
-    @Override
-    public Reader get( EntityReference ref )
-        throws EntityStoreException
-    {
-
-        try
-        {
-            Key key = KeyFactory.createKey( entityKind, ref.toURI() );
-            Entity entity = datastore.get( key );
-            Text serializedState = (Text) entity.getProperty( "value" );
-            if( serializedState == null )
-            {
-                throw new EntityNotFoundException( ref );
-            }
-            return new StringReader( serializedState.getValue() );
-        }
-        catch( com.google.appengine.api.datastore.EntityNotFoundException e )
-        {
-            e.printStackTrace();
-            throw new EntityNotFoundException( ref );
-        }
-    }
-
-    @Override
-    public void applyChanges( MapChanges changes )
-        throws IOException
-
-    {
-        final Transaction transaction = datastore.beginTransaction();
-        try
-        {
-            changes.visitMap( new GaeMapChanger( transaction ) );
-            transaction.commit();
-        }
-        catch( RuntimeException e )
-        {
-            if( transaction.isActive() )
-            {
-                transaction.rollback();
-            }
-            if( e instanceof EntityStoreException )
-            {
-                throw (EntityStoreException) e;
-            }
-            else
-            {
-                throw new IOException( e );
-            }
-        }
-    }
-
-    @Override
-    public Input<Reader, IOException> entityStates()
-    {
-        return new Input<Reader, IOException>()
-        {
-            @Override
-            public <ReceiverThrowableType extends Throwable> void transferTo( Output<? super Reader, ReceiverThrowableType> output )
-                throws IOException, ReceiverThrowableType
-            {
-                Query query = new Query();
-                PreparedQuery preparedQuery = datastore.prepare( query );
-                final QueryResultIterable<Entity> iterable = preparedQuery.asQueryResultIterable();
-
-                output.receiveFrom( new Sender<Reader, IOException>()
-                {
-                    @Override
-                    public <ReceiverThrowableType extends Throwable> void sendTo( Receiver<? super Reader, ReceiverThrowableType> receiver )
-                        throws ReceiverThrowableType, IOException
-                    {
-                        for( Entity entity : iterable )
-                        {
-                            Text serializedState = (Text) entity.getProperty( "value" );
-                            receiver.receive( new StringReader( serializedState.getValue() ) );
-                        }
-                    }
-                } );
-            }
-        };
-    }
-
-    private class GaeMapChanger
-        implements MapChanger
-    {
-        private final Transaction transaction;
-
-        public GaeMapChanger( Transaction transaction )
-        {
-            this.transaction = transaction;
-        }
-
-        @Override
-        public Writer newEntity( final EntityReference ref, final EntityDescriptor descriptor )
-        {
-            return new StringWriter( 1000 )
-            {
-                @Override
-                public void close()
-                    throws IOException
-                {
-                    super.close();
-                    Key key = KeyFactory.createKey( entityKind, ref.toURI() );
-                    Entity entity = new Entity( key );
-                    Text value = new Text( toString() );
-                    entity.setUnindexedProperty( "value", value );
-                    entity.setProperty( "ref", ref.identity() );
-                    entity.setProperty( "type", Classes.toURI( first( descriptor.types() ) ) );
-                    datastore.put( transaction, entity );
-                }
-            };
-        }
-
-        @Override
-        public Writer updateEntity( final EntityReference ref, final EntityDescriptor descriptor )
-        {
-            return new StringWriter( 1000 )
-            {
-                @Override
-                public void close()
-                    throws IOException
-                {
-                    super.close();
-                    Key key = KeyFactory.createKey( entityKind, ref.toURI() );
-                    Entity entity = new Entity( key );
-                    Text value = new Text( toString() );
-                    entity.setUnindexedProperty( "value", value );
-                    entity.setProperty( "ref", ref.identity() );
-                    entity.setProperty( "type", Classes.toURI( first( descriptor.types() ) ) );
-                    datastore.put( transaction, entity );
-                }
-            };
-        }
-
-        @Override
-        public void removeEntity( EntityReference ref, EntityDescriptor descriptor )
-            throws EntityNotFoundException
-        {
-            Key key = KeyFactory.createKey( entityKind, ref.toURI() );
-            datastore.delete( transaction, key );
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreService.java
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreService.java b/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreService.java
deleted file mode 100644
index ee5f4f3..0000000
--- a/extensions/entitystore-gae/src/main/java/org/qi4j/entitystore/gae2/GaeEntityStoreService.java
+++ /dev/null
@@ -1,48 +0,0 @@
-/*  Copyright 2010 Niclas Hedhman
- *
- * 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.qi4j.entitystore.gae2;
-
-import org.qi4j.api.concern.Concerns;
-import org.qi4j.api.configuration.Configuration;
-import org.qi4j.api.mixin.Mixins;
-import org.qi4j.api.service.ServiceComposite;
-import org.qi4j.library.locking.LockingAbstractComposite;
-import org.qi4j.spi.entitystore.ConcurrentModificationCheckConcern;
-import org.qi4j.spi.entitystore.EntityStateVersions;
-import org.qi4j.spi.entitystore.EntityStore;
-import org.qi4j.spi.entitystore.StateChangeNotificationConcern;
-import org.qi4j.spi.entitystore.helpers.JSONMapEntityStoreActivation;
-import org.qi4j.spi.entitystore.helpers.JSONMapEntityStoreMixin;
-import org.qi4j.spi.entitystore.helpers.StateStore;
-
-/**
- * EntityStore service backed by Google AppEngine's low-level store.
- * <p>Based on @{@link JSONMapEntityStoreMixin}.</p>
- */
-@Concerns( { StateChangeNotificationConcern.class, ConcurrentModificationCheckConcern.class } )
-@Mixins( { JSONMapEntityStoreMixin.class, GaeEntityStoreMixin.class } )
-public interface GaeEntityStoreService
-    extends GaeEntityStoreActivation,
-            JSONMapEntityStoreActivation,
-            EntityStore,
-            EntityStateVersions,
-            StateStore,
-            ServiceComposite,
-            LockingAbstractComposite,
-            Configuration
-{
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/src/main/resources/org.qi4j.entitystore.gae2/GaeEntityStoreService.properties
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/src/main/resources/org.qi4j.entitystore.gae2/GaeEntityStoreService.properties b/extensions/entitystore-gae/src/main/resources/org.qi4j.entitystore.gae2/GaeEntityStoreService.properties
deleted file mode 100644
index 51c8842..0000000
--- a/extensions/entitystore-gae/src/main/resources/org.qi4j.entitystore.gae2/GaeEntityStoreService.properties
+++ /dev/null
@@ -1,5 +0,0 @@
-
-
-readPolicy=eventual
-deadline()=0.5
-entityKind=qi4j-json

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-gae/src/test/java/org/qi4j/entitystore/gae/readme.html
----------------------------------------------------------------------
diff --git a/extensions/entitystore-gae/src/test/java/org/qi4j/entitystore/gae/readme.html b/extensions/entitystore-gae/src/test/java/org/qi4j/entitystore/gae/readme.html
deleted file mode 100644
index 5887e10..0000000
--- a/extensions/entitystore-gae/src/test/java/org/qi4j/entitystore/gae/readme.html
+++ /dev/null
@@ -1,12 +0,0 @@
-<html>
-<body>
-<h1>EntityStore for Google App Engine</h1>
-
-<p>It is not possible to test this code fully without running within the Google AppEngine itself. Therefor the
-tests has been moved to their own module in the qi4j-tests GIT repository. The tests are not run as standard JUnit
-tests, but as a Web application itself. It uses the standard Qi4j Entity Store test suite, but the runner is
-special built for this purpose and the result comes out as a simple web page.</p>
-
-<p>You will also need a Google AppEngine account to run them.</p>
-</body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-neo4j/NOTICE.txt
----------------------------------------------------------------------
diff --git a/extensions/entitystore-neo4j/NOTICE.txt b/extensions/entitystore-neo4j/NOTICE.txt
deleted file mode 100644
index 478e958..0000000
--- a/extensions/entitystore-neo4j/NOTICE.txt
+++ /dev/null
@@ -1,27 +0,0 @@
-Copyright 2008 Neo Technology, http://neotechnology.com.
-
-Licensed under the Apache License, Version 2.0 (the "License");
-you may not use this component 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.
-
-
-Please note that this component depends on Neo4J (http://neo4j.org)
-which is distributed under the terms of the GNU Affero General
-Public License as published by the Free Software Foundation, either
-version 3 of the License, or (at your option) any later version.
-Neo Technology also provides a distribution of Neo4J under a
-commercial license at http://neotechnology.com.
-
-Any software that depends on Neo4J and this component is therefore
-subjected to any additional license details stated by the License
-of Neo4J.
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-neo4j/build.gradle
----------------------------------------------------------------------
diff --git a/extensions/entitystore-neo4j/build.gradle b/extensions/entitystore-neo4j/build.gradle
deleted file mode 100644
index 4fff878..0000000
--- a/extensions/entitystore-neo4j/build.gradle
+++ /dev/null
@@ -1,17 +0,0 @@
-
-description = "Qi4j Neo4j EntityStore Extension"
-
-jar { manifest { name = "Qi4j Extension - EntityStore - Neo4j" }}
-
-dependencies {
-  compile(project(":org.qi4j.core:org.qi4j.core.spi"))
-  compile(project(":org.qi4j.libraries:org.qi4j.library.fileconfig"))
-  compile(libraries.neo4j)
-
-  testCompile(project(":org.qi4j.core:org.qi4j.core.testsupport"))
-  testCompile(project(":org.qi4j.extensions:org.qi4j.extension.valueserialization-orgjson"))
-
-  testRuntime(project(":org.qi4j.core:org.qi4j.core.runtime"))
-  testRuntime(libraries.logback)
-}
-

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-neo4j/dev-status.xml
----------------------------------------------------------------------
diff --git a/extensions/entitystore-neo4j/dev-status.xml b/extensions/entitystore-neo4j/dev-status.xml
deleted file mode 100644
index 8078e77..0000000
--- a/extensions/entitystore-neo4j/dev-status.xml
+++ /dev/null
@@ -1,20 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<module xmlns="http://www.qi4j.org/schemas/2008/dev-status/1"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://www.qi4j.org/schemas/2008/dev-status/1
-        http://www.qi4j.org/schemas/2008/dev-status/1/dev-status.xsd">
-  <status>
-        <!--none,early,beta,stable,mature-->
-        <codebase>beta</codebase>
-
-        <!-- none, brief, good, complete -->
-        <documentation>brief</documentation>
-
-        <!-- none, some, good, complete -->
-        <unittests>some</unittests>
-    </status>
-    <licenses>
-        <license>ALv2</license>
-        <license>AGPLv3</license>
-    </licenses>
-</module>

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-neo4j/license-explain.txt
----------------------------------------------------------------------
diff --git a/extensions/entitystore-neo4j/license-explain.txt b/extensions/entitystore-neo4j/license-explain.txt
deleted file mode 100644
index f3ed0b5..0000000
--- a/extensions/entitystore-neo4j/license-explain.txt
+++ /dev/null
@@ -1,68 +0,0 @@
-
-Please note that this module has a dependency on a GNU Affero General Public License
-version 3 (AGPLv3), not to be mistaken for the GNU General Public License version 3
-(GPLv3). The main difference is that "distribution" in GPLv3 is extended to include
-"usage", for instance if an application can be used from a web service, the user
-has roughly the equivalent rights of "distribution" under GPLv3.
-
-To clarify the intent of Neo4j licensing in the context of Qi4j's Neo4j Entity Store
-the following mail from qi4j-dev@lists.ops4j.org captures the understanding of
-the license. Please note that this is not legal advice, and if in doubt, please
-consult your legal counsel.
-
-- o - o - o - o - o -
-
-On Mon, Jul 28, 2008 at 8:35 AM, Niclas Hedhman <niclas@hedhman.org> wrote:
->
-> Everyone (especially Emil),
->
-> Please READ the NOTICE.txt before using the "Entity Store - Neo4j". Although
-> the EnityStore itself is under the Apache License ver 2.0, it has a
-> dependency on Neo4j itself, which is licensed under GNU Affero General Public
-> License version 3 or later.
->
-> In essence, this means that you are allowed to USE the combined work for
-> yourself without limitations, as long as noone else uses it, directly or
-> indirectly. That means, if you create an application and distribute, or if
-> you put an application on a web server, with users accessing it, then you
-> MUST provide the sources of the combined work to anyone asking for it.
-
-Correct.
-
->
-> There is a "gray zone" which I would like to hear the clarification by Emil.
->
-> <scenario>
-> Person A develops some funky closed-source web application, based on Qi4j.
->
-> Person B buys that application, but configures it to use the Neo4j Entity
-> Store and the Neo4j Engine.
-> </scenario>
->
-> Person A is not violating any license. Person B is not violating the license
-> received from Person A. But is Person B violating the GNU Affero General
-> Public License, by not having the authority to provide the sources for the
-> web application product itself???
-
-Yes.
-
-Person B is only allowed to use Neo4j if they follow the terms in the
-license under which they received it. In Neo4j's case, they have two
-choices: use it under the AGPLv3 license or the commercial license. If
-they use Neo4j under AGPLv3, then in order to comply with the terms of
-the AGPLv3 they must provide the full source code to the combined work
-(including the webapp's code) to any users of said webapp. In that
-case, they can't comply with one of the terms (freedom 1, access to
-source code) so they won't be granted the rights of any of the other
-terms in the license (for example freedom 0, the freedom to run).
-
-If they can't comply with that for whatever reason (in this case,
-because person A did not grant them that freedom), they're unable to
-use Neo4j under the AGPLv3. They can of course purchase Neo4j under a
-commercial license (which gives them the flexibility to e.g. use it
-with proprietary code, along with indemnification and support etc) or
-swap in something else.
-
-IANAL, but this captures our intent. I've bounced this scenario off of
-licensing@fsf.org and this is their interpretation as well (except
-it's not legal advice from them either, of course).
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/70f25289/extensions/entitystore-neo4j/licenses/neo4j-commercial.license
----------------------------------------------------------------------
diff --git a/extensions/entitystore-neo4j/licenses/neo4j-commercial.license b/extensions/entitystore-neo4j/licenses/neo4j-commercial.license
deleted file mode 100644
index b526288..0000000
--- a/extensions/entitystore-neo4j/licenses/neo4j-commercial.license
+++ /dev/null
@@ -1,3 +0,0 @@
-
-Contact Neo Technology AB through a mail to sales@neotechnology.com for details
-of the commercial licenses available and price quotes.
\ No newline at end of file


Mime
View raw message