You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@polygene.apache.org by ni...@apache.org on 2015/04/17 18:45:53 UTC

[06/50] [abbrv] zest-qi4j git commit: Updates, Cleanup and preparation for a pull request.

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialBench.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialBench.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialBench.java
index c45fb2a..8a4a0fd 100644
--- a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialBench.java
+++ b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialBench.java
@@ -11,8 +11,10 @@ import org.qi4j.api.query.Query;
 import org.qi4j.api.unitofwork.UnitOfWork;
 import org.qi4j.bootstrap.AssemblyException;
 import org.qi4j.bootstrap.ModuleAssembly;
+import org.qi4j.entitystore.riak.RiakHttpMapEntityStoreAssembler;
 import org.qi4j.entitystore.sql.assembly.DerbySQLEntityStoreAssembler;
 import org.qi4j.index.elasticsearch.ElasticSearchConfiguration;
+import org.qi4j.index.elasticsearch.assembly.ESClusterIndexQueryAssembler;
 import org.qi4j.index.elasticsearch.assembly.ESFilesystemIndexQueryAssembler;
 import org.qi4j.index.elasticsearch.extension.spatial.utils.RandomPoint;
 import org.qi4j.index.elasticsearch.extensions.spatial.configuration.SpatialConfiguration;
@@ -47,50 +49,6 @@ public class ElasticSearchSpatialBench
         assumeNoIbmJdk();
     }
 
-    protected boolean isExpressionSupported(Query<?> expression)
-    {
-        return true;
-    }
-
-/**
-    protected boolean isExpressionSupported(Query<?> expression)
-    {
-        QueryImpl queryImpl = (QueryImpl)expression;
-        System.out.println("### " + expression.getClass());
-
-        System.out.println(queryImpl.resultType());
-
-        System.out.println("getWhereClause " + queryImpl.getWhereClause().getClass().getSimpleName());
-
-        System.out.println(((SpatialPredicatesSpecification)queryImpl.getWhereClause()).value());
-
-        boolean hasOrderBySegments = false;
-        if (queryImpl.getOrderBySegments() != null && queryImpl.getOrderBySegments().iterator().hasNext())
-        {
-            hasOrderBySegments = true;
-        }
-        // public static boolean isSupported(Class expression, Class<? extends  TGeometry> geometryOfProperty,Class<? extends  TGeometry> geometryOfFilter, Boolean orderBy, INDEXING_METHOD Type )
-
-        Class geometryOfProperty = InternalUtils.classOfPropertyType(((SpatialPredicatesSpecification)queryImpl.getWhereClause()).property());
-        TGeometry geometryOfFilter   = ((SpatialPredicatesSpecification)queryImpl.getWhereClause()).value();
-
-        // System.out.println("Operator " + ((SpatialPredicatesSpecification)queryImpl.getWhereClause()).operator().getClass());
-
-        System.out.println("geometryOfProperty " + geometryOfProperty);
-        System.out.println("geometryOfFilter   " + InternalUtils.classOfGeometry(geometryOfFilter));
-
-        System.out.println("Exression " + expression.getClass());
-
-        return SpatialFunctionsSupportMatrix.isSupported
-                (
-                        queryImpl.getWhereClause().getClass(),
-                        geometryOfProperty,
-                        InternalUtils.classOfGeometry(geometryOfFilter),
-                        hasOrderBySegments,
-                        SpatialFunctionsSupportMatrix.INDEX_MAPPING_TPOINT_METHOD.TPOINT_AS_GEOPOINT
-                );
-    }
- */
 
     @Override
     public void assemble( ModuleAssembly module )
@@ -104,69 +62,44 @@ public class ElasticSearchSpatialBench
 
 
         // Config module
-        ModuleAssembly configIndex = module.layer().module( "configIndex" );
-        new EntityTestAssembler().assemble( configIndex );
+        ModuleAssembly config = module.layer().module( "config" );
+        new EntityTestAssembler().assemble( config );
 
-        configIndex.values(SpatialConfiguration.Configuration.class,
+        config.values(SpatialConfiguration.Configuration.class,
                 SpatialConfiguration.FinderConfiguration.class,
                 SpatialConfiguration.IndexerConfiguration.class,
                 SpatialConfiguration.IndexingMethod.class,
                 SpatialConfiguration.ProjectionSupport.class).
                 visibleIn(Visibility.application);
 
+
         // Index/Query
-        new ESFilesystemIndexQueryAssembler().
-                withConfig(configIndex,Visibility.layer ).
-                identifiedBy("ElasticSearchConfigurationVariant2").
+        new ESClusterIndexQueryAssembler().
+                withConfig(config, Visibility.layer).
+                identifiedBy("ElasticSearchGeoShapeIndexing").
                 assemble(module);
-
-        ElasticSearchConfiguration esConfig = configIndex.forMixin( ElasticSearchConfiguration.class ).declareDefaults();
-        esConfig.indexNonAggregatedAssociations().set( Boolean.TRUE );
-        esConfig.indexPointMappingMethod().set(ElasticSearchConfiguration.INDEX_MAPPING_POINT_METHOD.GEO_POINT);
-
+        ElasticSearchConfiguration esConfig = config.forMixin(ElasticSearchConfiguration.class).declareDefaults();
+        esConfig.indexNonAggregatedAssociations().set(Boolean.TRUE);
 
         // FileConfig
         FileConfigurationOverride override = new FileConfigurationOverride().
-                withData( new File( DATA_DIR, "qi4j-data" ) ).
-                withLog( new File( DATA_DIR, "qi4j-logs" ) ).
-                withTemporary( new File( DATA_DIR, "qi4j-temp" ) );
-        module.services( FileConfigurationService.class ).
-                setMetaInfo( override );
+                withData(new File(DATA_DIR, "qi4j-data")).
+                withLog(new File(DATA_DIR, "qi4j-logs")).
+                withTemporary(new File(DATA_DIR, "qi4j-temp"));
+        module.services(FileConfigurationService.class).
+                setMetaInfo(override);
 
+        // In-Memory Entity Store
+        // new EntityTestAssembler().assemble( module );
 
-        configIndex.services(FileConfigurationService.class)
-                // .identifiedBy("ElasticSearchConfigurationVariant1")
-                .setMetaInfo(override)
-                .visibleIn(Visibility.application);
 
-        // clear index mapping caches during junit testcases
-        // SpatialIndexMapper.IndexMappingCache.clear();
-
-        ModuleAssembly configStore = module.layer().module( "configStore" );
-        new EntityTestAssembler().assemble( configStore );
+        /** RIAK */
+        ModuleAssembly configRiak = module.layer().module( "configRiak" );
+        new EntityTestAssembler().assemble( configRiak );
         new OrgJsonValueSerializationAssembler().assemble( module );
-
         // START SNIPPET: assembly
-        // DataSourceService
-        new DBCPDataSourceServiceAssembler().
-                identifiedBy( "derby-datasource-service" ).
-                visibleIn( Visibility.module ).
-                withConfig( configStore, Visibility.layer ).
-                assemble( module );
-
-        // DataSource
-        new DataSourceAssembler().
-                withDataSourceServiceIdentity( "derby-datasource-service" ).
-                identifiedBy( "derby-datasource" ).
-                visibleIn( Visibility.module ).
-                withCircuitBreaker().
-                assemble( module );
-
-        // SQL EntityStore
-        new DerbySQLEntityStoreAssembler().
-                visibleIn( Visibility.application ).
-                withConfig( configStore, Visibility.layer ).
-                assemble( module );
+        new RiakHttpMapEntityStoreAssembler().withConfig( configRiak, Visibility.layer ).assemble( module );
+        /** +++ */
     }
 
     @Test
@@ -217,12 +150,12 @@ public class ElasticSearchSpatialBench
             UnitOfWork unitOfWork = module.newUnitOfWork();
 
 
-            for (int i = 0; i < 5000; i++) {
+            for (int i = 0; i < 10000; i++) {
                 double[] xy = nextSpherePt2D();
                 //System.out.println("Degrees " + DistanceUtils.toDegrees(xy[0]) + "," + DistanceUtils.toDegrees(xy[1]));
 
                 TPoint point = TPoint(module).lat(DistanceUtils.toDegrees(xy[0])).lon(DistanceUtils.toDegrees(xy[1])).geometry();
-                EntityBuilder<SpatialRegressionEntity> pointBuilder = unitOfWork.newEntityBuilder(SpatialRegressionEntity.class);
+                EntityBuilder<SpatialAEntity> pointBuilder = unitOfWork.newEntityBuilder(SpatialAEntity.class);
                 pointBuilder.instance().point().set(point);
                 pointBuilder.newInstance();
             }
@@ -241,7 +174,6 @@ public class ElasticSearchSpatialBench
 
     public double[] nextSpherePt2D()
     {
-        // return new RandomPoint(seed++).nextSpherePt(2);
         return randomPoint.nextSpherePt(2);
     }
 }

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialExtensionClusterQueryTest.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialExtensionClusterQueryTest.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialExtensionClusterQueryTest.java
deleted file mode 100644
index 33474a5..0000000
--- a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialExtensionClusterQueryTest.java
+++ /dev/null
@@ -1,640 +0,0 @@
-package org.qi4j.index.elasticsearch.extension.spatial;
-
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.junit.Test;
-import org.qi4j.api.common.Visibility;
-import org.qi4j.api.entity.EntityBuilder;
-import org.qi4j.api.geometry.*;
-import org.qi4j.api.geometry.internal.TGeometry;
-import org.qi4j.api.geometry.internal.TGeometryRoot;
-import org.qi4j.api.query.Query;
-import org.qi4j.api.query.QueryBuilder;
-import org.qi4j.api.query.QueryExpressions;
-import org.qi4j.api.query.grammar.OrderBy;
-import org.qi4j.api.unitofwork.UnitOfWork;
-import org.qi4j.bootstrap.AssemblyException;
-import org.qi4j.bootstrap.ModuleAssembly;
-import org.qi4j.index.elasticsearch.ElasticSearchConfiguration;
-import org.qi4j.index.elasticsearch.assembly.ESClusterIndexQueryAssembler;
-import org.qi4j.index.elasticsearch.extension.spatial.model.VerifyStatialTypes;
-import org.qi4j.index.elasticsearch.extension.spatial.model.entity.SpatialEntity;
-import org.qi4j.library.fileconfig.FileConfigurationOverride;
-import org.qi4j.library.fileconfig.FileConfigurationService;
-import org.qi4j.spi.query.EntityFinderException;
-import org.qi4j.test.EntityTestAssembler;
-import org.qi4j.test.indexing.AbstractSpatialQueryTest;
-import org.qi4j.test.indexing.model.Domain;
-import org.qi4j.test.indexing.model.Nameable;
-import org.qi4j.test.util.DelTreeAfter;
-
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertTrue;
-import static org.junit.Assert.assertFalse;
-
-import java.io.File;
-
-import static org.qi4j.api.geometry.TGeometryFactory.*;
-import static org.qi4j.api.query.QueryExpressions.ge;
-import static org.qi4j.api.query.QueryExpressions.gt;
-import static org.qi4j.api.query.QueryExpressions.lt;
-import static org.qi4j.api.query.QueryExpressions.templateFor;
-import static org.qi4j.api.query.grammar.extensions.spatial.SpatialQueryExpressions.*;
-import static org.qi4j.test.indexing.NameableAssert.verifyUnorderedResults;
-import static org.qi4j.test.util.Assume.assumeNoIbmJdk;
-
-/**
- * Created by jakes on 2/8/14.
- */
-public class ElasticSearchSpatialExtensionClusterQueryTest
-        extends AbstractSpatialQueryTest {
-    private static final File DATA_DIR = new File("build/tmp/es-money-query-test");
-    @Rule
-    public final DelTreeAfter delTreeAfter = new DelTreeAfter(DATA_DIR);
-
-    @BeforeClass
-    public static void beforeClass_IBMJDK() {
-        assumeNoIbmJdk();
-    }
-
-    // Types definition of later comparison
-    private TPoint _tPoint;
-    private TMultiPoint _tMultiPoint;
-    private TLineString _tLineString;
-    private TPolygon _tPolygon;
-
-
-    @Override
-    public void assemble(ModuleAssembly module)
-            throws AssemblyException {
-        super.assemble(module);
-
-        module.entities(SpatialEntity.class);
-
-        // Config module
-        ModuleAssembly config = module.layer().module("config");
-        new EntityTestAssembler().assemble(config);
-
-        // Index/Query
-        new ESClusterIndexQueryAssembler().
-                withConfig(config, Visibility.layer).
-                assemble(module);
-        ElasticSearchConfiguration esConfig = config.forMixin(ElasticSearchConfiguration.class).declareDefaults();
-        esConfig.indexNonAggregatedAssociations().set(Boolean.TRUE);
-
-        // FileConfig
-        FileConfigurationOverride override = new FileConfigurationOverride().
-                withData(new File(DATA_DIR, "qi4j-data")).
-                withLog(new File(DATA_DIR, "qi4j-logs")).
-                withTemporary(new File(DATA_DIR, "qi4j-temp"));
-        module.services(FileConfigurationService.class).
-                setMetaInfo(override);
-    }
-
-    // @Override
-    public void setUp()
-            throws Exception {
-        super.setUp();
-
-        _tPoint = TPoint(module).x(11.57958984375).y(48.13905780942574).geometry();
-
-        _tMultiPoint = TMultiPoint(module).points(new double[][]
-                {
-                        {11.57958984375, 48.13905780942574},
-                        {11.599502563476562, 48.14913756559802},
-                }).geometry();
-        _tLineString = TlineString(module).points(new double[][]
-                {
-                        {11.550750732421875, 48.109035906197036},
-                        {11.552810668945312, 48.16608541901253},
-                }).geometry();
-
-        _tPolygon = TPolygon(module)
-
-                .shell
-                        (
-                                TLinearRing(module).ring(new double[][]
-                                        {
-                                                {11.475906372070312, 48.14478518644042},
-                                                {11.572723388671875, 48.18760570101003},
-                                                {11.692886352539062, 48.140432438188135},
-                                                {11.679153442382812, 48.08243697630599},
-                                                {11.581306457519531, 48.07211472138644},
-                                                {11.522941589355469, 48.10124109364004},
-                                                {11.470069885253906, 48.10949438777014},
-                                                {11.475906372070312, 48.14478518644042},
-
-                                        }).geometry()
-                        )
-
-                .withHoles
-                        (
-                                TLinearRing(module).ring(new double[][]
-                                        {
-                                                {11.53839111328125, 48.13837048124154},
-                                                {11.614952087402344, 48.15028286718964},
-                                                {11.640357971191406, 48.10513864768105},
-                                                {11.558303833007812, 48.103304541415994},
-                                                {11.53839111328125, 48.13837048124154}
-
-                                        }).geometry()
-                        )
-                .geometry();
-
-
-        try (UnitOfWork unitOfWork = module.newUnitOfWork()) {
-
-
-            // TPoint
-            {
-                EntityBuilder<SpatialEntity> pointBuilder = unitOfWork.newEntityBuilder(SpatialEntity.class, "Point");
-                pointBuilder.instance().point().set(_tPoint);
-                pointBuilder.newInstance();
-            }
-
-            // TMultiPoint
-            {
-                EntityBuilder<SpatialEntity> mPointBuilder = unitOfWork.newEntityBuilder(SpatialEntity.class, "MultiPoint");
-                mPointBuilder.instance().mPoint().set(_tMultiPoint);
-                mPointBuilder.newInstance();
-            }
-
-            // TLineString
-            {
-                EntityBuilder<SpatialEntity> tlineStringBuilder = unitOfWork.newEntityBuilder(SpatialEntity.class, "LineString");
-                tlineStringBuilder.instance().line().set(_tLineString);
-                tlineStringBuilder.newInstance();
-            }
-
-            // TPolygon
-            {
-                EntityBuilder<SpatialEntity> tPolygonBuilder = unitOfWork.newEntityBuilder(SpatialEntity.class, "Polygon");
-                tPolygonBuilder.instance().polygon().set(_tPolygon);
-                tPolygonBuilder.newInstance();
-            }
-
-            unitOfWork.complete();
-
-        } catch (Exception _ex) {
-            _ex.printStackTrace();
-        }
-
-    }
-
-    @Test
-    public void nothing()
-    {
-
-    }
-
-
-    @Test
-    public void WhenQueryForAPointThenCompareResults()
-    {
-        QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class);
-
-        Query<VerifyStatialTypes> query = unitOfWork.newQuery(
-                qb
-                        .where(
-                                ST_Within
-                                        (
-                                                templateFor(VerifyStatialTypes.class).point(),
-                                                TPoint(module).y(48.13905780941111).x(11.57958981111).geometry(),
-                                                999,
-                                                TUnit.METER
-                                        )
-                        ));
-
-
-        query.find();
-        assertEquals(1, query.count());
-        TPoint tPoint = query.iterator().next().point().get();
-        assertTrue(tPoint.compareTo(_tPoint) == 0);
-    }
-
-
-    @Test
-    public void WhenQueryWithUnsupportedProjectionForAPointThenCompareResults() throws Exception {
-        QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class);
-
-        Query<VerifyStatialTypes> query = unitOfWork.newQuery(
-                qb
-                        .where(
-                                ST_Within
-                                        (
-                                                templateFor(VerifyStatialTypes.class).point(),
-                                                TPoint(module).x(1286436.5975464052).y(2389280.7514562616).geometry("EPSG:27572"),
-                                                999,
-                                                TUnit.METER
-                                        )
-                        ));
-
-
-        query.find();
-        assertEquals(query.count(), 1);
-        TPoint tPoint = query.iterator().next().point().get();
-        assertTrue(tPoint.compareTo(_tPoint) == 0);
-
-        // Transform(module).from(tPoint).to("EPSG:27572");
-
-        System.out.println(tPoint);
-    }
-
-    @Test
-    public void WhenQueryForAPointThenOrderAndCompareResults() {
-        QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class);
-
-        Query<VerifyStatialTypes> query = unitOfWork.newQuery(
-                qb
-                        .where(
-                                ST_Within
-                                        (
-                                                templateFor(VerifyStatialTypes.class).point(),
-                                                TPoint(module).x(11.57958981111).y(48.13905780941111).geometry(),
-                                                999,
-                                                TUnit.METER
-                                        )
-                        ))
-
-
-                .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING);
-
-
-        query.find();
-        assertEquals(query.count(), 1);
-        TPoint tPoint = query.iterator().next().point().get();
-        assertTrue(tPoint.compareTo(_tPoint) == 0);
-    }
-
-
-    @Test
-    public void script02()
-            throws EntityFinderException
-    {
-        final QueryBuilder<Domain> qb = this.module.newQueryBuilder( Domain.class );
-        final Nameable nameable = templateFor( Nameable.class );
-        final Query<Domain> query = unitOfWork.newQuery( qb.where( eq( nameable.name(), "Gaming" ) ) );
-        System.out.println( "*** script02: " + query );
-        verifyUnorderedResults( query, "Gaming" );
-    }
-
-
-    @Test
-    public void WhenST_DisjointForAPointThenOrderAndCompareResults() {
-        QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class);
-
-        Query<VerifyStatialTypes> query = unitOfWork.newQuery(
-                qb
-                        .where(// and(
-                                ST_Disjoint
-                                        (
-                                                templateFor(VerifyStatialTypes.class).point(),
-                                                TPoint(module).x(10.57958981111).y(47.13905780941111).geometry(),
-                                                1,
-                                                TUnit.METER
-                                        )
-                                       //  eq( templateFor(VerifyStatialTypes.class).point().get(), "Gaming" )
-                                        // ,QueryExpressions.eq(templateFor(VerifyStatialTypes.class).foo(), "foo")
-                                // )
-                        ))
-
-
-                        .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING);
-
-
-        query.find();
-        assertEquals(3, query.count());
-        // TGeometry tGeometry = query.iterator().next().point().get();
-
-        VerifyStatialTypes result = query.iterator().next();
-
-/**
-        if (tGeometry.getType() == TGeometry.TGEOMETRY_TYPE.POLYGON)
-        {
-            System.out.println("is polygon");
-        }
- */
-        // assertTrue(tPoint.compareTo(_tPoint) == 0);
-
-    }
-
-
-    @Test
-    public void WhenST_IntersectsForAPointThenOrderAndCompareResults() {
-        QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class);
-
-        Query<VerifyStatialTypes> query = unitOfWork.newQuery(
-                qb
-                        .where(
-                                ST_Intersects
-                                        (
-                                                templateFor(VerifyStatialTypes.class).point(),
-                                                TPoint(module).x(11.57958981111).y(48.13905780941111).geometry(),
-                                                999,
-                                                TUnit.METER
-                                        )
-                        ))
-
-
-                .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING);
-
-
-        query.find();
-        assertEquals(3, query.count());
-        // TGeometry tGeometry = query.iterator().next().point().get();
-
-        VerifyStatialTypes result = query.iterator().next();
-
-/**
- if (tGeometry.getType() == TGeometry.TGEOMETRY_TYPE.POLYGON)
- {
- System.out.println("is polygon");
- }
- */
-        // assertTrue(tPoint.compareTo(_tPoint) == 0);
-
-    }
-
-    @Test
-    public void WhenST_DisjointForAPointUsingPolygonAreaThenOrderAndCompareResults() {
-        QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class);
-
-        Query<VerifyStatialTypes> query = unitOfWork.newQuery(
-                qb
-                        .where(
-                                ST_Disjoint
-                                        (
-                                                templateFor(VerifyStatialTypes.class).point(),
-                                                TPolygon(module)
-                                                        .shell
-                                                                (
-                                                                        new double[][]
-                                                                                {
-                                                                                        {11.32965087890625, 48.122101028190805},
-                                                                                        {11.394195556640625, 48.28593438872724},
-                                                                                        {11.9366455078125, 48.232906106325146},
-                                                                                        {11.852874755859375, 47.95038564051011},
-                                                                                        {11.36810302734375, 47.94486657921015},
-                                                                                        {11.32965087890625, 48.122101028190805}
-                                                                                }
-                                                                ).geometry()
-                                        )
-                        ))
-
-                .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING);
-
-
-        query.find();
-        // assertEquals(query.count(), 1);
-        // TPoint tPoint = query.iterator().next().point().get();
-        VerifyStatialTypes types = query.iterator().next();
-        System.out.println("Result " + types.polygon().get());
-        // assertTrue(tPoint.compareTo(_tPoint) == 0);
-    }
-
-
-    @Test
-    public void WhenQueryForAPointUsingPolygonAreaThenOrderAndCompareResults() {
-        QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class);
-
-        Query<VerifyStatialTypes> query = unitOfWork.newQuery(
-                qb
-                        .where(
-                                ST_Within
-                                        (
-                                                templateFor(VerifyStatialTypes.class).point(),
-                                                TPolygon(module)
-                                                        .shell
-                                                                (
-                                                                        new double[][]
-                                                                                {
-                                                                                        {11.32965087890625, 48.122101028190805},
-                                                                                        {11.394195556640625, 48.28593438872724},
-                                                                                        {11.9366455078125, 48.232906106325146},
-                                                                                        {11.852874755859375, 47.95038564051011},
-                                                                                        {11.36810302734375, 47.94486657921015},
-                                                                                        {11.32965087890625, 48.122101028190805}
-                                                                                }
-                                                                ).geometry()
-                                        )
-                        ))
-
-                .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING);
-
-
-        query.find();
-        assertEquals(query.count(), 1);
-        TPoint tPoint = query.iterator().next().point().get();
-        assertTrue(tPoint.compareTo(_tPoint) == 0);
-    }
-
-    @Test
-    public void WhenQueryForALineUsingPolygonAreaThenOrderAndCompareResults() {
-        QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class);
-
-        Query<VerifyStatialTypes> query = unitOfWork.newQuery(
-                qb
-                        .where(
-                                ST_Within
-                                        (
-                                                templateFor(VerifyStatialTypes.class).line(),
-                                                TPolygon(module)
-                                                        .shell
-                                                                (
-                                                                        new double[][]
-                                                                                {
-                                                                                        {11.32965087890625, 48.122101028190805},
-                                                                                        {11.394195556640625, 48.28593438872724},
-                                                                                        {11.9366455078125, 48.232906106325146},
-                                                                                        {11.852874755859375, 47.95038564051011},
-                                                                                        {11.36810302734375, 47.94486657921015},
-                                                                                        {11.32965087890625, 48.122101028190805}
-                                                                                }
-                                                                ).geometry()
-                                        )
-                        ));
-
-                // .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING);
-
-
-        query.find();
-        assertEquals(1, query.count());
-        TLineString tLineString = query.iterator().next().line().get();
-        System.out.println(tLineString);
-        // TPoint tPoint = query.iterator().next().point().get();
-        // assertTrue(tPoint.compareTo(_tPoint) == 0);
-    }
-
-
-    @Test
-    public void WhenQueryForALineUsingPolygonAreaThenOrderAndCompareResultsV2() {
-        QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class);
-
-        Query<VerifyStatialTypes> query = unitOfWork.newQuery(
-                qb
-                        .where(
-                                ST_Within
-                                        (
-                                                templateFor(VerifyStatialTypes.class).point(),
-                                                TPolygon(module)
-                                                        .shell
-                                                                (
-                                                                        new double[][]
-                                                                                {
-                                                                                        {11.32965087890625, 48.122101028190805},
-                                                                                        {11.394195556640625, 48.28593438872724},
-                                                                                        {11.9366455078125, 48.232906106325146},
-                                                                                        {11.852874755859375, 47.95038564051011},
-                                                                                        {11.36810302734375, 47.94486657921015},
-                                                                                        {11.32965087890625, 48.122101028190805}
-                                                                                }
-                                                                ).geometry()
-                                        )
-                        )).orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING);
-
-
-        query.find();
-        assertEquals(1, query.count());
-        TLineString tLineString = query.iterator().next().line().get();
-        System.out.println(tLineString);
-        // TPoint tPoint = query.iterator().next().point().get();
-        // assertTrue(tPoint.compareTo(_tPoint) == 0);
-    }
-
-
-    @Test
-    public void WhenST_Intersects_ForALineUsingPolygonAreaThenOrderAndCompareResults() {
-        QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class);
-
-        Query<VerifyStatialTypes> query = unitOfWork.newQuery(
-                qb
-                        .where(
-                                ST_Intersects
-                                        (
-                                                templateFor(VerifyStatialTypes.class).point(),
-                                                TPolygon(module)
-                                                        .shell
-                                                                (
-                                                                        new double[][]
-                                                                                {
-                                                                                        {11.32965087890625, 48.122101028190805},
-                                                                                        {11.394195556640625, 48.28593438872724},
-                                                                                        {11.9366455078125, 48.232906106325146},
-                                                                                        {11.852874755859375, 47.95038564051011},
-                                                                                        {11.36810302734375, 47.94486657921015},
-                                                                                        {11.32965087890625, 48.122101028190805}
-                                                                                }
-                                                                ).geometry()
-                                        )
-                        ));
-
-        // .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING);
-
-
-        query.find();
-        assertEquals(1, query.count());
-        TLineString tLineString = query.iterator().next().line().get();
-        System.out.println(tLineString);
-        // TPoint tPoint = query.iterator().next().point().get();
-        // assertTrue(tPoint.compareTo(_tPoint) == 0);
-    }
-
-
-    @Test
-    public void When_QueryForAWKTPointThenCompareResults()
-    {
-        QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class);
-
-        Query<VerifyStatialTypes> query = unitOfWork.newQuery(
-                qb
-                        .where(
-                                ST_Within
-                                        (
-                                                templateFor(VerifyStatialTypes.class).point(),
-                                                ST_GeometryFromText("POINT(11.57958981111 48.13905780941111 )"),
-                                                999,
-                                                TUnit.METER
-                                        )
-                        ))
-                .orderBy(templateFor(VerifyStatialTypes.class).point(), _tPoint, OrderBy.Order.ASCENDING);
-
-        query.find();
-        assertEquals(query.count(), 1);
-        TPoint tPoint = query.iterator().next().point().get();
-        assertTrue(tPoint.compareTo(_tPoint) == 0);
-
-    }
-
-    /**
-    @Test
-    public void WhenQueryForAMultiPointThenCompareResults() {
-
-        QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class);
-
-        Query<VerifyStatialTypes> query = unitOfWork.newQuery(
-                qb
-                        .where(
-                                ST_Within
-                                        (
-                                                templateFor(VerifyStatialTypes.class).mPoint(),
-                                                TPOINT(module).x(11.57958981111).y(48.13905780941111).geometry()
-                                        )
-                        ));
-        query.find();
-        assertEquals(query.count(), 1);
-        TPoint tPoint = query.iterator().next().point().get();
-        assertTrue(tPoint.compareTo(_tPoint) == 0);
-    }
-*/
-
-        @Test
-    public void WhenQueryForAPolygonThenCompareResults() {
-        QueryBuilder<VerifyStatialTypes> qb = this.module.newQueryBuilder(VerifyStatialTypes.class);
-
-        Query<VerifyStatialTypes> query = unitOfWork.newQuery(
-                qb
-                        .where(
-                                ST_Within
-                                        (
-                                                templateFor(VerifyStatialTypes.class).polygon(),
-
-                                                TPolygon(module)
-                                                        .shell
-                                                                (
-                                                                        new double[][]
-                                                                                {
-                                                                                        {11.32965087890625, 48.122101028190805},
-                                                                                        {11.394195556640625, 48.28593438872724},
-                                                                                        {11.9366455078125, 48.232906106325146},
-                                                                                        {11.852874755859375, 47.95038564051011},
-                                                                                        {11.36810302734375, 47.94486657921015},
-                                                                                        {11.32965087890625, 48.122101028190805}
-                                                                                }
-                                                                ).geometry()
-                                        )
-                        ));
-
-
-        query.find();
-
-        assertEquals(query.count(), 1);
-        TPolygon tPolygon = query.iterator().next().polygon().get();
-        assertTrue(tPolygon.holes().get().size() == 1);
-        assertTrue(tPolygon.shell().get().compareTo(_tPolygon.shell().get()) == 0);
-        assertFalse(tPolygon.holes().get().get(0).compareTo(_tPolygon.shell().get()) == 0);
-        assertTrue(tPolygon.holes().get().get(0).compareTo(_tPolygon.holes().get().get(0)) == 0);
-    }
-
-
-    // @Test
-    public void fooPerf() {
-        long start = System.currentTimeMillis();
-        for (int i = 0; i < 1000; i++) {
-            WhenQueryForAPolygonThenCompareResults();
-        }
-        long end = System.currentTimeMillis();
-
-        System.out.println("Duration " + (end - start) + " ms");
-    }
-
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoPointIndexing.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoPointIndexing.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoPointIndexing.java
new file mode 100644
index 0000000..6200b68
--- /dev/null
+++ b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoPointIndexing.java
@@ -0,0 +1,159 @@
+/*
+ * Copyright (c) 2014, Jiri Jetmar. 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.index.elasticsearch.extension.spatial;
+
+import org.junit.BeforeClass;
+import org.junit.Ignore;
+import org.junit.Rule;
+import org.junit.Test;
+import org.qi4j.api.common.Visibility;
+import org.qi4j.api.query.Query;
+import org.qi4j.api.query.QueryExecutionException;
+import org.qi4j.bootstrap.AssemblyException;
+import org.qi4j.bootstrap.ModuleAssembly;
+import org.qi4j.index.elasticsearch.ElasticSearchConfiguration;
+import org.qi4j.index.elasticsearch.assembly.ESFilesystemIndexQueryAssembler;
+import org.qi4j.index.elasticsearch.extensions.spatial.configuration.SpatialConfiguration;
+import org.qi4j.library.fileconfig.FileConfigurationOverride;
+import org.qi4j.library.fileconfig.FileConfigurationService;
+import org.qi4j.library.spatial.v2.assembly.TGeometryAssembler;
+import org.qi4j.spi.query.EntityFinderException;
+import org.qi4j.test.EntityTestAssembler;
+import org.qi4j.test.indexing.AbstractSpatialRegressionTest;
+import org.qi4j.test.util.DelTreeAfter;
+
+import java.io.File;
+
+import static org.qi4j.test.util.Assume.*;
+
+
+public class ElasticSearchSpatialQueryTestUsingGeoPointIndexing
+        extends AbstractSpatialRegressionTest
+{
+    private static final File DATA_DIR = new File( "build/tmp/es-spatial-query-test" );
+    @Rule
+    public final DelTreeAfter delTreeAfter = new DelTreeAfter( DATA_DIR );
+
+    @BeforeClass
+    public static void beforeClass_IBMJDK()
+    {
+        assumeNoIbmJdk();
+    }
+
+
+    @Override
+    public void assemble( ModuleAssembly module )
+            throws AssemblyException
+    {
+        super.assemble( module );
+
+        // Geometry support
+        new TGeometryAssembler().assemble(module);
+
+        // Config module
+        ModuleAssembly config = module.layer().module( "config" );
+        new EntityTestAssembler().assemble( config );
+
+        config.values(SpatialConfiguration.Configuration.class,
+                SpatialConfiguration.FinderConfiguration.class,
+                SpatialConfiguration.IndexerConfiguration.class,
+                SpatialConfiguration.IndexingMethod.class,
+                SpatialConfiguration.ProjectionSupport.class).
+                visibleIn(Visibility.application);
+
+        // Index/Query
+        new ESFilesystemIndexQueryAssembler().
+                withConfig(config,Visibility.layer ).
+                identifiedBy("ElasticSearchGeoPointIndexing").
+                assemble(module);
+
+        ElasticSearchConfiguration esConfig = config.forMixin( ElasticSearchConfiguration.class ).declareDefaults();
+        esConfig.indexNonAggregatedAssociations().set( Boolean.TRUE );
+
+
+        // FileConfig
+        FileConfigurationOverride override = new FileConfigurationOverride().
+                withData( new File( DATA_DIR, "qi4j-data" ) ).
+                withLog( new File( DATA_DIR, "qi4j-logs" ) ).
+                withTemporary( new File( DATA_DIR, "qi4j-temp" ) );
+        module.services( FileConfigurationService.class ).
+                setMetaInfo( override );
+
+
+        config.services(FileConfigurationService.class)
+                .setMetaInfo(override)
+                .visibleIn(Visibility.application);
+    }
+
+
+
+    @Test (expected=QueryExecutionException.class)
+    @Override
+    public void script02a()
+            throws EntityFinderException
+    {
+        super.script02a();
+    }
+
+    @Test (expected=QueryExecutionException.class)
+    @Override
+    public void script02b()
+            throws EntityFinderException
+    {
+        super.script02b();
+    }
+
+    @Test (expected=QueryExecutionException.class)
+    @Override
+    public void script02c()
+            throws EntityFinderException
+    {
+        super.script02c();
+    }
+
+    @Test (expected=QueryExecutionException.class)
+    @Override
+    public void script02d()
+            throws EntityFinderException
+    {
+        super.script02d();
+    }
+
+    @Test (expected=QueryExecutionException.class)
+    @Override
+    public void script02e()
+            throws EntityFinderException
+    {
+        super.script02e();
+    }
+
+    @Test (expected=QueryExecutionException.class)
+    @Override
+    public void script02f()
+            throws EntityFinderException
+    {
+        super.script02f();
+    }
+
+    @Test (expected=QueryExecutionException.class)
+    @Override
+    public void script03a()
+            throws EntityFinderException
+    {
+        super.script03a();
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoShapeIndexing.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoShapeIndexing.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoShapeIndexing.java
new file mode 100644
index 0000000..6f227f1
--- /dev/null
+++ b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingGeoShapeIndexing.java
@@ -0,0 +1,140 @@
+/*
+ * Copyright (c) 2014, Jiri Jetmar. 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.index.elasticsearch.extension.spatial;
+
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+import org.qi4j.api.common.Visibility;
+import org.qi4j.api.query.Query;
+import org.qi4j.api.query.QueryExecutionException;
+import org.qi4j.bootstrap.AssemblyException;
+import org.qi4j.bootstrap.ModuleAssembly;
+import org.qi4j.index.elasticsearch.ElasticSearchConfiguration;
+import org.qi4j.index.elasticsearch.assembly.ESFilesystemIndexQueryAssembler;
+import org.qi4j.index.elasticsearch.extensions.spatial.configuration.SpatialConfiguration;
+import org.qi4j.library.fileconfig.FileConfigurationOverride;
+import org.qi4j.library.fileconfig.FileConfigurationService;
+import org.qi4j.library.spatial.v2.assembly.TGeometryAssembler;
+import org.qi4j.spi.query.EntityFinderException;
+import org.qi4j.test.EntityTestAssembler;
+import org.qi4j.test.indexing.AbstractSpatialRegressionTest;
+import org.qi4j.test.util.DelTreeAfter;
+
+import java.io.File;
+
+import static org.qi4j.test.util.Assume.*;
+
+
+public class ElasticSearchSpatialQueryTestUsingGeoShapeIndexing
+        extends AbstractSpatialRegressionTest
+{
+    private static final File DATA_DIR = new File( "build/tmp/es-spatial-query-test" );
+    @Rule
+    public final DelTreeAfter delTreeAfter = new DelTreeAfter( DATA_DIR );
+
+    @BeforeClass
+    public static void beforeClass_IBMJDK()
+    {
+        assumeNoIbmJdk();
+    }
+
+
+    @Override
+    public void assemble( ModuleAssembly module )
+            throws AssemblyException
+    {
+        super.assemble( module );
+
+        // Geometry support
+        new TGeometryAssembler().assemble(module);
+
+        // Config module
+        ModuleAssembly config = module.layer().module( "config" );
+        new EntityTestAssembler().assemble( config );
+
+        config.values(SpatialConfiguration.Configuration.class,
+                SpatialConfiguration.FinderConfiguration.class,
+                SpatialConfiguration.IndexerConfiguration.class,
+                SpatialConfiguration.IndexingMethod.class,
+                SpatialConfiguration.ProjectionSupport.class).
+                visibleIn(Visibility.application);
+
+        // Index/Query
+        new ESFilesystemIndexQueryAssembler().
+                withConfig(config,Visibility.layer ).
+                identifiedBy("ElasticSearchGeoShapeIndexing").
+                assemble(module);
+
+        ElasticSearchConfiguration esConfig = config.forMixin( ElasticSearchConfiguration.class ).declareDefaults();
+        esConfig.indexNonAggregatedAssociations().set( Boolean.TRUE );
+
+
+        // FileConfig
+        FileConfigurationOverride override = new FileConfigurationOverride().
+                withData( new File( DATA_DIR, "qi4j-data" ) ).
+                withLog( new File( DATA_DIR, "qi4j-logs" ) ).
+                withTemporary( new File( DATA_DIR, "qi4j-temp" ) );
+        module.services( FileConfigurationService.class ).
+                setMetaInfo( override );
+
+
+        config.services(FileConfigurationService.class)
+                .setMetaInfo(override)
+                .visibleIn(Visibility.application);
+    }
+
+
+    @Test(expected=QueryExecutionException.class)
+    @Override
+    public void script01c()
+            throws EntityFinderException
+    {
+       super.script01c(); // <- no orderBy() support for GeoShapes
+    }
+
+    @Test(expected=QueryExecutionException.class)
+    @Override
+    public void script01d()
+            throws EntityFinderException
+    {
+        super.script01d(); // <- no orderBy() support for GeoShapes
+    }
+
+    @Test(expected=QueryExecutionException.class)
+    @Override
+    public void script01e()
+            throws EntityFinderException
+    {
+        super.script01e(); // <- no orderBy() support for GeoShapes
+    }
+
+    @Test(expected=QueryExecutionException.class)
+    @Override
+    public void script01f()
+            throws EntityFinderException
+    {
+        super.script01f(); // <- no orderBy() support for GeoShapes
+    }
+
+    @Test(expected=QueryExecutionException.class)
+    @Override
+    public void script03c()
+            throws EntityFinderException
+    {
+        super.script03c(); // <- no orderBy() support for GeoShapes
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingUsingDefaults.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingUsingDefaults.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingUsingDefaults.java
new file mode 100644
index 0000000..f5a8337
--- /dev/null
+++ b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialQueryTestUsingUsingDefaults.java
@@ -0,0 +1,153 @@
+/*
+ * Copyright (c) 2014, Jiri Jetmar. 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.index.elasticsearch.extension.spatial;
+
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+import org.qi4j.api.common.Visibility;
+import org.qi4j.api.query.QueryExecutionException;
+import org.qi4j.bootstrap.AssemblyException;
+import org.qi4j.bootstrap.ModuleAssembly;
+import org.qi4j.index.elasticsearch.ElasticSearchConfiguration;
+import org.qi4j.index.elasticsearch.assembly.ESFilesystemIndexQueryAssembler;
+import org.qi4j.index.elasticsearch.extensions.spatial.configuration.SpatialConfiguration;
+import org.qi4j.library.fileconfig.FileConfigurationOverride;
+import org.qi4j.library.fileconfig.FileConfigurationService;
+import org.qi4j.library.spatial.v2.assembly.TGeometryAssembler;
+import org.qi4j.spi.query.EntityFinderException;
+import org.qi4j.test.EntityTestAssembler;
+import org.qi4j.test.indexing.AbstractSpatialRegressionTest;
+import org.qi4j.test.util.DelTreeAfter;
+
+import java.io.File;
+
+import static org.qi4j.test.util.Assume.assumeNoIbmJdk;
+
+/**
+ * Created by jj on 21.12.14.
+ */
+public class ElasticSearchSpatialQueryTestUsingUsingDefaults
+        extends AbstractSpatialRegressionTest
+{
+    private static final File DATA_DIR = new File( "build/tmp/es-spatial-query-test" );
+    @Rule
+    public final DelTreeAfter delTreeAfter = new DelTreeAfter( DATA_DIR );
+
+    @BeforeClass
+    public static void beforeClass_IBMJDK()
+    {
+        assumeNoIbmJdk();
+    }
+
+
+    @Override
+    public void assemble( ModuleAssembly module )
+            throws AssemblyException
+    {
+        super.assemble( module );
+
+        // Geometry support
+        new TGeometryAssembler().assemble(module);
+
+
+
+        // Config module
+        ModuleAssembly config = module.layer().module( "config" );
+        new EntityTestAssembler().assemble( config );
+
+        config.values(SpatialConfiguration.Configuration.class,
+                SpatialConfiguration.FinderConfiguration.class,
+                SpatialConfiguration.IndexerConfiguration.class,
+                SpatialConfiguration.IndexingMethod.class,
+                SpatialConfiguration.ProjectionSupport.class).
+                visibleIn(Visibility.application);
+
+        // Index/Query
+        new ESFilesystemIndexQueryAssembler().
+                withConfig(config,Visibility.layer ).
+                assemble(module);
+
+        ElasticSearchConfiguration esConfig = config.forMixin( ElasticSearchConfiguration.class ).declareDefaults();
+        esConfig.indexNonAggregatedAssociations().set( Boolean.TRUE );
+
+
+        // FileConfig
+        FileConfigurationOverride override = new FileConfigurationOverride().
+                withData( new File( DATA_DIR, "qi4j-data" ) ).
+                withLog( new File( DATA_DIR, "qi4j-logs" ) ).
+                withTemporary( new File( DATA_DIR, "qi4j-temp" ) );
+        module.services( FileConfigurationService.class ).
+                setMetaInfo( override );
+
+
+        config.services(FileConfigurationService.class)
+                .setMetaInfo(override)
+                .visibleIn(Visibility.application);
+    }
+
+
+
+    @Test (expected=QueryExecutionException.class)
+    public void script02a()
+            throws EntityFinderException
+    {
+        super.script02a();
+    }
+
+    @Test (expected=QueryExecutionException.class)
+    public void script02b()
+            throws EntityFinderException
+    {
+        super.script02b();
+    }
+
+    @Test (expected=QueryExecutionException.class)
+    public void script02c()
+            throws EntityFinderException
+    {
+        super.script02c();
+    }
+
+    @Test (expected=QueryExecutionException.class)
+    public void script02d()
+            throws EntityFinderException
+    {
+        super.script02d();
+    }
+
+    @Test (expected=QueryExecutionException.class)
+    public void script02e()
+            throws EntityFinderException
+    {
+        super.script02e();
+    }
+
+    @Test (expected=QueryExecutionException.class)
+    public void script02f()
+            throws EntityFinderException
+    {
+        super.script02f();
+    }
+
+    @Test (expected=QueryExecutionException.class)
+    public void script03a()
+            throws EntityFinderException
+    {
+        super.script03a();
+    }
+
+
+}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryClusterTest.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryClusterTest.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryClusterTest.java
index 0ad7c1c..d4ec9fe 100644
--- a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryClusterTest.java
+++ b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryClusterTest.java
@@ -72,7 +72,6 @@ public class ElasticSearchSpatialRegressionQueryClusterTest
                 assemble(module);
         ElasticSearchConfiguration esConfig = config.forMixin(ElasticSearchConfiguration.class).declareDefaults();
         esConfig.indexNonAggregatedAssociations().set(Boolean.TRUE);
-        esConfig.indexPointMappingMethod().set(ElasticSearchConfiguration.INDEX_MAPPING_POINT_METHOD.GEO_POINT);
 
 
         // FileConfig

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant1Test.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant1Test.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant1Test.java
deleted file mode 100644
index 66cdc73..0000000
--- a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant1Test.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package org.qi4j.index.elasticsearch.extension.spatial;
-
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.qi4j.api.common.Visibility;
-import org.qi4j.api.query.Query;
-import org.qi4j.bootstrap.AssemblyException;
-import org.qi4j.bootstrap.ModuleAssembly;
-import org.qi4j.index.elasticsearch.ElasticSearchConfiguration;
-import org.qi4j.index.elasticsearch.assembly.ESFilesystemIndexQueryAssembler;
-import org.qi4j.index.elasticsearch.extensions.spatial.configuration.SpatialConfiguration;
-import org.qi4j.library.fileconfig.FileConfigurationOverride;
-import org.qi4j.library.fileconfig.FileConfigurationService;
-import org.qi4j.library.spatial.v2.assembly.TGeometryAssembler;
-import org.qi4j.test.EntityTestAssembler;
-import org.qi4j.test.indexing.AbstractSpatialRegressionTest;
-import org.qi4j.test.util.DelTreeAfter;
-
-import java.io.File;
-
-import static org.qi4j.test.util.Assume.*;
-
-/**
- * Created by jj on 21.12.14.
- */
-public class ElasticSearchSpatialRegressionQueryVariant1Test
-        extends AbstractSpatialRegressionTest
-{
-    private static final File DATA_DIR = new File( "build/tmp/es-spatial-query-test" );
-    @Rule
-    public final DelTreeAfter delTreeAfter = new DelTreeAfter( DATA_DIR );
-
-    @BeforeClass
-    public static void beforeClass_IBMJDK()
-    {
-        assumeNoIbmJdk();
-    }
-
-    protected boolean isExpressionSupported(Query<?> expression)
-    {
-        return true;
-    }
-
-/**
-    protected boolean isExpressionSupported(Query<?> expression)
-    {
-        QueryImpl queryImpl = (QueryImpl)expression;
-        System.out.println("### " + expression.getClass());
-
-        System.out.println(queryImpl.resultType());
-
-        System.out.println("getWhereClause " + queryImpl.getWhereClause().getClass().getSimpleName());
-
-        System.out.println(((SpatialPredicatesSpecification)queryImpl.getWhereClause()).value());
-
-        boolean hasOrderBySegments = false;
-        if (queryImpl.getOrderBySegments() != null && queryImpl.getOrderBySegments().iterator().hasNext())
-        {
-            hasOrderBySegments = true;
-        }
-        // public static boolean isSupported(Class expression, Class<? extends  TGeometry> geometryOfProperty,Class<? extends  TGeometry> geometryOfFilter, Boolean orderBy, INDEXING_METHOD Type )
-
-        Class geometryOfProperty = InternalUtils.classOfPropertyType(((SpatialPredicatesSpecification)queryImpl.getWhereClause()).property());
-        TGeometry geometryOfFilter   = ((SpatialPredicatesSpecification)queryImpl.getWhereClause()).value();
-
-        // System.out.println("Operator " + ((SpatialPredicatesSpecification)queryImpl.getWhereClause()).operator().getClass());
-
-        System.out.println("geometryOfProperty " + geometryOfProperty);
-        System.out.println("geometryOfFilter   " + InternalUtils.classOfGeometry(geometryOfFilter));
-
-        System.out.println("Exression " + expression.getClass());
-
-        return SpatialFunctionsSupportMatrix.isSupported
-                (
-                        queryImpl.getWhereClause().getClass(),
-                        geometryOfProperty,
-                        InternalUtils.classOfGeometry(geometryOfFilter),
-                        hasOrderBySegments,
-                        SpatialFunctionsSupportMatrix.INDEX_MAPPING_TPOINT_METHOD.TPOINT_AS_GEOPOINT
-                );
-    }
- */
-
-    @Override
-    public void assemble( ModuleAssembly module )
-            throws AssemblyException
-    {
-        super.assemble( module );
-
-        // Geometry support
-        new TGeometryAssembler().assemble(module);
-
-
-
-        // Config module
-        ModuleAssembly config = module.layer().module( "config" );
-        new EntityTestAssembler().assemble( config );
-
-        config.values(SpatialConfiguration.Configuration.class,
-                SpatialConfiguration.FinderConfiguration.class,
-                SpatialConfiguration.IndexerConfiguration.class,
-                SpatialConfiguration.IndexingMethod.class,
-                SpatialConfiguration.ProjectionSupport.class).
-                visibleIn(Visibility.application);
-
-        // Index/Query
-        new ESFilesystemIndexQueryAssembler().
-                withConfig(config,Visibility.layer ).
-                identifiedBy("ElasticSearchConfigurationVariant1").
-                assemble(module);
-
-        ElasticSearchConfiguration esConfig = config.forMixin( ElasticSearchConfiguration.class ).declareDefaults();
-        esConfig.indexNonAggregatedAssociations().set( Boolean.TRUE );
-        esConfig.indexPointMappingMethod().set(ElasticSearchConfiguration.INDEX_MAPPING_POINT_METHOD.GEO_POINT);
-
-
-        // FileConfig
-        FileConfigurationOverride override = new FileConfigurationOverride().
-                withData( new File( DATA_DIR, "qi4j-data" ) ).
-                withLog( new File( DATA_DIR, "qi4j-logs" ) ).
-                withTemporary( new File( DATA_DIR, "qi4j-temp" ) );
-        module.services( FileConfigurationService.class ).
-                setMetaInfo( override );
-
-
-        config.services(FileConfigurationService.class)
-                // .identifiedBy("ElasticSearchConfigurationVariant1")
-                .setMetaInfo(override)
-                .visibleIn(Visibility.application);
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant2Test.java
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant2Test.java b/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant2Test.java
deleted file mode 100644
index 322defa..0000000
--- a/extensions/indexing-elasticsearch/src/test/java/org/qi4j/index/elasticsearch/extension/spatial/ElasticSearchSpatialRegressionQueryVariant2Test.java
+++ /dev/null
@@ -1,131 +0,0 @@
-package org.qi4j.index.elasticsearch.extension.spatial;
-
-import org.junit.BeforeClass;
-import org.junit.Rule;
-import org.qi4j.api.common.Visibility;
-import org.qi4j.api.query.Query;
-import org.qi4j.bootstrap.AssemblyException;
-import org.qi4j.bootstrap.ModuleAssembly;
-import org.qi4j.index.elasticsearch.ElasticSearchConfiguration;
-import org.qi4j.index.elasticsearch.assembly.ESFilesystemIndexQueryAssembler;
-import org.qi4j.index.elasticsearch.extensions.spatial.configuration.SpatialConfiguration;
-import org.qi4j.library.fileconfig.FileConfigurationOverride;
-import org.qi4j.library.fileconfig.FileConfigurationService;
-import org.qi4j.library.spatial.v2.assembly.TGeometryAssembler;
-import org.qi4j.test.EntityTestAssembler;
-import org.qi4j.test.indexing.AbstractSpatialRegressionTest;
-import org.qi4j.test.util.DelTreeAfter;
-
-import java.io.File;
-
-import static org.qi4j.test.util.Assume.*;
-
-/**
- * Created by jj on 21.12.14.
- */
-public class ElasticSearchSpatialRegressionQueryVariant2Test
-        extends AbstractSpatialRegressionTest
-{
-    private static final File DATA_DIR = new File( "build/tmp/es-spatial-query-test" );
-    @Rule
-    public final DelTreeAfter delTreeAfter = new DelTreeAfter( DATA_DIR );
-
-    @BeforeClass
-    public static void beforeClass_IBMJDK()
-    {
-        assumeNoIbmJdk();
-    }
-
-    protected boolean isExpressionSupported(Query<?> expression)
-    {
-        return true;
-    }
-
-/**
-    protected boolean isExpressionSupported(Query<?> expression)
-    {
-        QueryImpl queryImpl = (QueryImpl)expression;
-        System.out.println("### " + expression.getClass());
-
-        System.out.println(queryImpl.resultType());
-
-        System.out.println("getWhereClause " + queryImpl.getWhereClause().getClass().getSimpleName());
-
-        System.out.println(((SpatialPredicatesSpecification)queryImpl.getWhereClause()).value());
-
-        boolean hasOrderBySegments = false;
-        if (queryImpl.getOrderBySegments() != null && queryImpl.getOrderBySegments().iterator().hasNext())
-        {
-            hasOrderBySegments = true;
-        }
-        // public static boolean isSupported(Class expression, Class<? extends  TGeometry> geometryOfProperty,Class<? extends  TGeometry> geometryOfFilter, Boolean orderBy, INDEXING_METHOD Type )
-
-        Class geometryOfProperty = InternalUtils.classOfPropertyType(((SpatialPredicatesSpecification)queryImpl.getWhereClause()).property());
-        TGeometry geometryOfFilter   = ((SpatialPredicatesSpecification)queryImpl.getWhereClause()).value();
-
-        // System.out.println("Operator " + ((SpatialPredicatesSpecification)queryImpl.getWhereClause()).operator().getClass());
-
-        System.out.println("geometryOfProperty " + geometryOfProperty);
-        System.out.println("geometryOfFilter   " + InternalUtils.classOfGeometry(geometryOfFilter));
-
-        System.out.println("Exression " + expression.getClass());
-
-        return SpatialFunctionsSupportMatrix.isSupported
-                (
-                        queryImpl.getWhereClause().getClass(),
-                        geometryOfProperty,
-                        InternalUtils.classOfGeometry(geometryOfFilter),
-                        hasOrderBySegments,
-                        SpatialFunctionsSupportMatrix.INDEX_MAPPING_TPOINT_METHOD.TPOINT_AS_GEOPOINT
-                );
-    }
- */
-
-    @Override
-    public void assemble( ModuleAssembly module )
-            throws AssemblyException
-    {
-        super.assemble( module );
-
-        // Geometry support
-        new TGeometryAssembler().assemble(module);
-
-
-
-        // Config module
-        ModuleAssembly config = module.layer().module( "config" );
-        new EntityTestAssembler().assemble( config );
-
-        config.values(SpatialConfiguration.Configuration.class,
-                SpatialConfiguration.FinderConfiguration.class,
-                SpatialConfiguration.IndexerConfiguration.class,
-                SpatialConfiguration.IndexingMethod.class,
-                SpatialConfiguration.ProjectionSupport.class).
-                visibleIn(Visibility.application);
-
-        // Index/Query
-        new ESFilesystemIndexQueryAssembler().
-                withConfig(config,Visibility.layer ).
-                identifiedBy("ElasticSearchConfigurationVariant2").
-                assemble(module);
-
-        ElasticSearchConfiguration esConfig = config.forMixin( ElasticSearchConfiguration.class ).declareDefaults();
-        esConfig.indexNonAggregatedAssociations().set( Boolean.TRUE );
-        esConfig.indexPointMappingMethod().set(ElasticSearchConfiguration.INDEX_MAPPING_POINT_METHOD.GEO_POINT);
-
-
-        // FileConfig
-        FileConfigurationOverride override = new FileConfigurationOverride().
-                withData( new File( DATA_DIR, "qi4j-data" ) ).
-                withLog( new File( DATA_DIR, "qi4j-logs" ) ).
-                withTemporary( new File( DATA_DIR, "qi4j-temp" ) );
-        module.services( FileConfigurationService.class ).
-                setMetaInfo( override );
-
-
-        config.services(FileConfigurationService.class)
-                // .identifiedBy("ElasticSearchConfigurationVariant1")
-                .setMetaInfo(override)
-                .visibleIn(Visibility.application);
-    }
-}

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant1.properties
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant1.properties b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant1.properties
deleted file mode 100644
index 583a96f..0000000
--- a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant1.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-spatial = { \
-  \
-  Enabled : true, \
-  \
-  Indexer=\
-   { \
-    Method=\
-      { \
-        Type      = "GEO_POINT", \
-        Precision = 1m, \
-      }, \
-    Projection=\
-      { \
-        ConversionEnabled  = true, \
-        ConversionAccuracy = 1m, \
-      }, \
-   }, \
-  \
-  \
-  Finder=\
-    { \
-    Projection=\
-      { \
-        ConversionEnabled  = true, \
-        ConversionAccuracy = 1m, \
-      } \
-    } \
-  }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2.properties
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2.properties b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2.properties
deleted file mode 100644
index 3837000..0000000
--- a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-spatial = { \
-  \
-  Enabled : true, \
-  \
-  Indexer=\
-   { \
-    Method=\
-      { \
-        Type      = "GEO_SHAPE", \
-        Precision = 1m, \
-      }, \
-    Projection=\
-      { \
-        ConversionEnabled  = true, \
-        ConversionAccuracy = 1m, \
-      }, \
-   }, \
-  \
-  \
-  Finder=\
-    { \
-    Projection=\
-      { \
-        ConversionEnabled  = true, \
-        ConversionAccuracy = 1m, \
-      } \
-    } \
-  }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2Backup.properties
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2Backup.properties b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2Backup.properties
deleted file mode 100644
index 3837000..0000000
--- a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2Backup.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-spatial = { \
-  \
-  Enabled : true, \
-  \
-  Indexer=\
-   { \
-    Method=\
-      { \
-        Type      = "GEO_SHAPE", \
-        Precision = 1m, \
-      }, \
-    Projection=\
-      { \
-        ConversionEnabled  = true, \
-        ConversionAccuracy = 1m, \
-      }, \
-   }, \
-  \
-  \
-  Finder=\
-    { \
-    Projection=\
-      { \
-        ConversionEnabled  = true, \
-        ConversionAccuracy = 1m, \
-      } \
-    } \
-  }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2_Backup_.properties
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2_Backup_.properties b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2_Backup_.properties
deleted file mode 100644
index 3837000..0000000
--- a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchConfigurationVariant2_Backup_.properties
+++ /dev/null
@@ -1,28 +0,0 @@
-spatial = { \
-  \
-  Enabled : true, \
-  \
-  Indexer=\
-   { \
-    Method=\
-      { \
-        Type      = "GEO_SHAPE", \
-        Precision = 1m, \
-      }, \
-    Projection=\
-      { \
-        ConversionEnabled  = true, \
-        ConversionAccuracy = 1m, \
-      }, \
-   }, \
-  \
-  \
-  Finder=\
-    { \
-    Projection=\
-      { \
-        ConversionEnabled  = true, \
-        ConversionAccuracy = 1m, \
-      } \
-    } \
-  }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoPointIndexing.properties
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoPointIndexing.properties b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoPointIndexing.properties
new file mode 100644
index 0000000..67b6774
--- /dev/null
+++ b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoPointIndexing.properties
@@ -0,0 +1,28 @@
+spatial = { \
+  \
+  Enabled : true, \
+  \
+  Indexer=\
+   { \
+    Method=\
+      { \
+        Type      = "GEO_POINT", \
+        Precision = 1m, \
+      }, \
+    Projection=\
+      { \
+        ConversionEnabled  = true, \
+        ConversionAccuracy = 2m, \
+      }, \
+   }, \
+  \
+  \
+  Finder=\
+    { \
+    Projection=\
+      { \
+        ConversionEnabled  = true, \
+        ConversionAccuracy = 2m, \
+      } \
+    } \
+  }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoShapeIndexing.properties
----------------------------------------------------------------------
diff --git a/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoShapeIndexing.properties b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoShapeIndexing.properties
new file mode 100644
index 0000000..3837000
--- /dev/null
+++ b/extensions/indexing-elasticsearch/src/test/resources/ElasticSearchGeoShapeIndexing.properties
@@ -0,0 +1,28 @@
+spatial = { \
+  \
+  Enabled : true, \
+  \
+  Indexer=\
+   { \
+    Method=\
+      { \
+        Type      = "GEO_SHAPE", \
+        Precision = 1m, \
+      }, \
+    Projection=\
+      { \
+        ConversionEnabled  = true, \
+        ConversionAccuracy = 1m, \
+      }, \
+   }, \
+  \
+  \
+  Finder=\
+    { \
+    Projection=\
+      { \
+        ConversionEnabled  = true, \
+        ConversionAccuracy = 1m, \
+      } \
+    } \
+  }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/libraries/spatial/src/main/java/org/qi4j/library/spatial/transformations/geojson/internal/TransformationBuilder.java
----------------------------------------------------------------------
diff --git a/libraries/spatial/src/main/java/org/qi4j/library/spatial/transformations/geojson/internal/TransformationBuilder.java b/libraries/spatial/src/main/java/org/qi4j/library/spatial/transformations/geojson/internal/TransformationBuilder.java
index 1be42f9..ab7f559 100644
--- a/libraries/spatial/src/main/java/org/qi4j/library/spatial/transformations/geojson/internal/TransformationBuilder.java
+++ b/libraries/spatial/src/main/java/org/qi4j/library/spatial/transformations/geojson/internal/TransformationBuilder.java
@@ -61,9 +61,9 @@ public class TransformationBuilder {
 
             LineString lineString = (LineString)geojson;
 
-            TLineString tLineString = TlineString(module).of().geometry();
+            TLineString tLineString = TLineString(module).of().geometry();
             for (LngLatAlt xyz : lineString.getCoordinates() ) {
-                tLineString = TlineString(module).of(
+                tLineString = TLineString(module).of(
                         TPoint(module)
                                 .x(xyz.getLatitude())
                                 .y(xyz.getLongitude())

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/assembly/TGeometryAssembler.java
----------------------------------------------------------------------
diff --git a/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/assembly/TGeometryAssembler.java b/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/assembly/TGeometryAssembler.java
index b6373ab..f427128 100644
--- a/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/assembly/TGeometryAssembler.java
+++ b/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/assembly/TGeometryAssembler.java
@@ -39,6 +39,7 @@ public class TGeometryAssembler
                 TPoint.class,
                 TMultiPoint.class,
                 TLineString.class,
+                TMultiLineString.class,
                 TPolygon.class,
                 TMultiPolygon.class,
                 TFeature.class,

http://git-wip-us.apache.org/repos/asf/zest-qi4j/blob/9d71ec3c/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/conversions/from/GeoJsonFromConverter.java
----------------------------------------------------------------------
diff --git a/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/conversions/from/GeoJsonFromConverter.java b/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/conversions/from/GeoJsonFromConverter.java
index d80b3da..217d80e 100644
--- a/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/conversions/from/GeoJsonFromConverter.java
+++ b/libraries/spatial/src/main/java/org/qi4j/library/spatial/v2/conversions/from/GeoJsonFromConverter.java
@@ -58,7 +58,7 @@ public class GeoJsonFromConverter {
 
             LineString lineString = (LineString)geojson;
 
-            TLineString tLineString = TlineString(module).of().geometry();
+            TLineString tLineString = TLineString(module).of().geometry();
 
             for (LngLatAlt xyz : lineString.getCoordinates() ) {
                 tLineString.of(