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 2017/04/09 04:54:43 UTC

[1/5] polygene-java git commit: POLYGENE-29 - JSR-223 support, allowing any Java Scripting API language to be used for Mixin implementations.

Repository: polygene-java
Updated Branches:
  refs/heads/develop f3890ed75 -> 72ab774a9


POLYGENE-29 - JSR-223 support, allowing any Java Scripting API language to be used for Mixin implementations.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/f9add57c
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/f9add57c
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/f9add57c

Branch: refs/heads/develop
Commit: f9add57cdb36f26a7b7c9ca234ac830e843f721b
Parents: f3890ed
Author: niclas <ni...@spicter.com>
Authored: Sun Apr 9 09:56:58 2017 +0800
Committer: niclas <ni...@spicter.com>
Committed: Sun Apr 9 09:56:58 2017 +0800

----------------------------------------------------------------------
 dependencies.gradle                             |   2 -
 .../library/scripting/ScriptAttributes.java     |  52 ++++++
 .../library/scripting/ScriptException.java      |   5 +
 .../polygene/library/scripting/ScriptMixin.java | 185 +++++++++++++++++++
 .../library/scripting/ScriptRedirect.java       |  31 ++++
 .../library/scripting/ScriptReloadable.java     |   2 +-
 .../polygene/library/scripting/Scripting.java   |  54 ++++++
 .../polygene/library/scripting/DomainType.java  |  63 +++++++
 .../library/scripting/HelloSpeaker.java         |  31 ++++
 .../library/scripting/ScriptMixinTest.java      | 124 +++++++++++++
 .../polygene/library/scripting/DomainType.js    |  78 ++++++++
 11 files changed, 624 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f9add57c/dependencies.gradle
----------------------------------------------------------------------
diff --git a/dependencies.gradle b/dependencies.gradle
index 8d2f368..5733bd0 100644
--- a/dependencies.gradle
+++ b/dependencies.gradle
@@ -54,7 +54,6 @@ def groovyVersion = '2.4.10'
 def hazelcastVersion = '3.8'
 def httpClientVersion = '4.5.3'
 def jacksonVersion = '2.8.7'
-def javascriptVersion = '1.7.7.1'
 def javasqlgeneratorVersion = '0.3.2'
 def jaxbApiVersion = '2.2.12'
 def jcloudsVersion = '2.0.1'
@@ -98,7 +97,6 @@ dependencies.libraries << [
   hazelcast           : "com.hazelcast:hazelcast:$hazelcastVersion",
   http_client         : "org.apache.httpcomponents:httpclient:$httpClientVersion",
   jackson_mapper      : "com.fasterxml.jackson.core:jackson-databind:$jacksonVersion",
-  javascript          : "org.mozilla:rhino:$javascriptVersion",
   javaSqlGenerator    : "org.java-sql-generator:org.java-sql-generator.api:$javasqlgeneratorVersion",
   javaSqlGeneratorImpl: "org.java-sql-generator:org.java-sql-generator.implementation:$javasqlgeneratorVersion",
   jaxb_api            : "javax.xml.bind:jaxb-api:$jaxbApiVersion",

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f9add57c/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptAttributes.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptAttributes.java b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptAttributes.java
new file mode 100644
index 0000000..c2c0cd4
--- /dev/null
+++ b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptAttributes.java
@@ -0,0 +1,52 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+package org.apache.polygene.library.scripting;
+
+/**
+ * ScriptAttributes is the interface into the attributes of the underlying
+ * scripting engine.
+ */
+public interface ScriptAttributes
+{
+    /**
+     * Fetch the value of the named attribute.
+     * <p>
+     *     If the attribute name is found in ENGINE scope, it is returned. If it is not in the ENGINE scope,
+     *     then the value is fetched from GLOBAL scope. If not present in either scope, NULL is returned.
+     * </p>
+     * @param name The name of the attribute to get, or null if not found.
+     * @return The value of the attribute.
+     */
+    Object getAttribute( String name );
+
+    /**
+     * This interface is for accessing both ENGINE and GLOBAL scopes with precision.
+     */
+    interface All
+    {
+        Object getEngineAttribute( String name );
+
+        Object getGlobalAttribute( String name );
+
+        void setEngineAttribute( String name, Object value );
+
+        void setGlobalAttribute( String name, Object value );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f9add57c/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptException.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptException.java b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptException.java
index 1738707..80e425a 100644
--- a/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptException.java
+++ b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptException.java
@@ -25,4 +25,9 @@ public class ScriptException extends RuntimeException
     {
         super( message );
     }
+
+    public ScriptException( String message, Throwable cause )
+    {
+        super( message, cause );
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f9add57c/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptMixin.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptMixin.java b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptMixin.java
new file mode 100644
index 0000000..a66f387
--- /dev/null
+++ b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptMixin.java
@@ -0,0 +1,185 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+package org.apache.polygene.library.scripting;
+
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.io.Writer;
+import java.lang.reflect.InvocationHandler;
+import java.lang.reflect.Method;
+import javax.script.Bindings;
+import javax.script.Invocable;
+import javax.script.ScriptContext;
+import javax.script.ScriptEngine;
+import javax.script.ScriptEngineManager;
+import org.apache.polygene.api.composite.CompositeDescriptor;
+import org.apache.polygene.api.injection.scope.State;
+import org.apache.polygene.api.injection.scope.Structure;
+import org.apache.polygene.api.injection.scope.This;
+import org.apache.polygene.api.property.StateHolder;
+import org.apache.polygene.api.structure.Application;
+import org.apache.polygene.api.structure.Layer;
+import org.apache.polygene.api.structure.Module;
+import org.apache.polygene.spi.PolygeneSPI;
+
+public class ScriptMixin
+    implements InvocationHandler, ScriptReloadable, ScriptRedirect, ScriptAttributes, ScriptAttributes.All
+{
+    private final CompositeDescriptor descriptor;
+    private ScriptEngine engine;
+
+    public ScriptMixin( @Structure PolygeneSPI spi,
+                        @This Object thisComposite,
+                        @State StateHolder state,
+                        @Structure Layer layer,
+                        @Structure Module module,
+                        @Structure Application application )
+    {
+        descriptor = spi.compositeDescriptorFor( thisComposite );
+        engine = createNewEngine();
+        Bindings mixinBindings = engine.getBindings( ScriptContext.ENGINE_SCOPE );
+        mixinBindings.put( "Polygene", spi );
+        mixinBindings.put( "application", application );
+        mixinBindings.put( "layer", layer );
+        mixinBindings.put( "module", module );
+        mixinBindings.put( "This", thisComposite );
+        mixinBindings.put( "state", state );
+        mixinBindings.put( "objectFactory", module.objectFactory() );
+        mixinBindings.put( "unitOfWorkFactory", module.unitOfWorkFactory() );
+        mixinBindings.put( "valueBuilderFactory", module.valueBuilderFactory() );
+        mixinBindings.put( "transientBuilderFactory", module.transientBuilderFactory() );
+        mixinBindings.put( "serviceFinder", module.serviceFinder() );
+        mixinBindings.put( "typeLookup", module.typeLookup() );
+    }
+
+    private ScriptEngine createNewEngine()
+    {
+        Scripting scripting = descriptor.metaInfo( Scripting.class );
+        ScriptEngine engine = getScriptEngine( scripting );
+        String scriptName = descriptor.primaryType().getName().replaceAll( "\\.", "/" ) + scripting.extension();
+        try( BufferedReader reader = new BufferedReader( new InputStreamReader( getClass().getClassLoader().getResourceAsStream( scriptName ) ) ) )
+        {
+            engine.eval( reader );
+        }
+        catch( IOException e )
+        {
+            throw new ScriptException( "Unable to load " + scriptName + " for " + descriptor, e );
+        }
+        catch( javax.script.ScriptException e )
+        {
+            throw new ScriptException( "Unable to parse " + scriptName + ".", e );
+        }
+        return engine;
+    }
+
+    private ScriptEngine getScriptEngine( Scripting scripting )
+    {
+        ScriptEngineManager manager = new ScriptEngineManager( getClass().getClassLoader() );
+        String engineName = scripting.engine();
+        ScriptEngine engine;
+        if( engineName != null )
+        {
+            engine = manager.getEngineByName( engineName );
+        }
+        else
+        {
+            engine = manager.getEngineByExtension( scripting.extension() );
+        }
+        return engine;
+    }
+
+    @Override
+    public Object invoke( Object proxy, Method method, Object[] objects )
+        throws Throwable
+    {
+        return ( (Invocable) engine ).invokeFunction( method.getName(), objects );
+    }
+
+    @Override
+    public void reloadScript()
+    {
+        engine = createNewEngine();
+    }
+
+    @Override
+    public void setStdOut( Writer writer )
+    {
+        writer = wrap( writer );
+        engine.getContext().setWriter( writer );
+    }
+
+    @Override
+    public void setStdErr( Writer writer )
+    {
+        engine.getContext().setErrorWriter( writer );
+    }
+
+    @Override
+    public void setStdIn( Reader reader )
+    {
+        if( !( reader instanceof BufferedReader ) )
+        {
+            reader = new BufferedReader( reader );
+        }
+        engine.getContext().setReader( reader );
+    }
+
+    private Writer wrap( Writer writer )
+    {
+        if( writer instanceof BufferedWriter )
+        {
+            return writer;
+        }
+        return new BufferedWriter( writer );
+    }
+
+    @Override
+    public Object getAttribute( String name )
+    {
+        return engine.getContext().getAttribute( name );
+    }
+
+    @Override
+    public Object getEngineAttribute( String name )
+    {
+        return engine.getContext().getAttribute( name, ScriptContext.ENGINE_SCOPE );
+    }
+
+    @Override
+    public Object getGlobalAttribute( String name )
+    {
+        return engine.getContext().getAttribute( name, ScriptContext.GLOBAL_SCOPE );
+    }
+
+    @Override
+    public void setEngineAttribute( String name, Object value )
+    {
+        engine.getContext().setAttribute( name, value, ScriptContext.ENGINE_SCOPE );
+    }
+
+    @Override
+    public void setGlobalAttribute( String name, Object value )
+    {
+        engine.getContext().setAttribute( name, value, ScriptContext.GLOBAL_SCOPE );
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f9add57c/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptRedirect.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptRedirect.java b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptRedirect.java
new file mode 100644
index 0000000..9c14e65
--- /dev/null
+++ b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptRedirect.java
@@ -0,0 +1,31 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+package org.apache.polygene.library.scripting;
+
+import java.io.BufferedWriter;
+import java.io.Reader;
+import java.io.Writer;
+
+public interface ScriptRedirect
+{
+    void setStdOut( Writer writer );
+    void setStdErr( Writer writer );
+    void setStdIn( Reader reader );
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f9add57c/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptReloadable.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptReloadable.java b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptReloadable.java
index beb1c8f..d2753f9 100644
--- a/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptReloadable.java
+++ b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptReloadable.java
@@ -21,5 +21,5 @@ package org.apache.polygene.library.scripting;
 
 public interface ScriptReloadable
 {
-    void reloadScripts();
+    void reloadScript();
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f9add57c/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/Scripting.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/Scripting.java b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/Scripting.java
new file mode 100644
index 0000000..b2e8464
--- /dev/null
+++ b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/Scripting.java
@@ -0,0 +1,54 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+package org.apache.polygene.library.scripting;
+
+public class Scripting
+{
+    public static final Scripting JAVASCRIPT = new Scripting( "nashorn", ".js" );
+    public static final Scripting ECMASCRIPT = new Scripting( "nashorn", ".js" );
+    public static final Scripting GROOVY = new Scripting( "groovy", ".groovy" );
+    public static final Scripting RUBY = new Scripting( "jruby", ".rb" );
+    public static final Scripting PYTHON = new Scripting( "python", ".py" );
+    public static final Scripting KOTLIN = new Scripting( "kotlin", ".kt" );
+
+    private String scriptEngine;
+    private String extension;
+
+    public Scripting( String extension )
+    {
+        this.extension = extension;
+    }
+
+    public Scripting( String scriptEngine, String extension )
+    {
+        this.scriptEngine = scriptEngine;
+        this.extension = extension;
+    }
+
+    public String engine()
+    {
+        return scriptEngine;
+    }
+
+    public String extension()
+    {
+        return extension;
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f9add57c/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/DomainType.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/DomainType.java b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/DomainType.java
new file mode 100644
index 0000000..e9fb746
--- /dev/null
+++ b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/DomainType.java
@@ -0,0 +1,63 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+package org.apache.polygene.library.scripting;
+
+import org.apache.polygene.api.composite.TransientBuilderFactory;
+import org.apache.polygene.api.object.ObjectFactory;
+import org.apache.polygene.api.property.StateHolder;
+import org.apache.polygene.api.service.ServiceFinder;
+import org.apache.polygene.api.structure.Application;
+import org.apache.polygene.api.structure.Layer;
+import org.apache.polygene.api.structure.Module;
+import org.apache.polygene.api.structure.TypeLookup;
+import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
+import org.apache.polygene.api.value.ValueBuilderFactory;
+
+public interface DomainType
+{
+
+    String do1( String message );
+
+    double count();
+
+    void inc();
+
+    Object whatIsThis();
+
+    StateHolder whatIsState();
+
+    Application whatIsApplication();
+
+    Layer whatIsLayer();
+
+    Module whatIsModule();
+
+    ObjectFactory whatIsObjectFactory();
+
+    UnitOfWorkFactory whatIsUnitOfWorkFactory();
+
+    ValueBuilderFactory whatIsValueBuilderFactory();
+
+    TransientBuilderFactory whatIsTransientBuilderFactory();
+
+    ServiceFinder whatIsServiceFinder();
+
+    TypeLookup whatIsTypeLookup();
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f9add57c/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
new file mode 100644
index 0000000..68cbc47
--- /dev/null
+++ b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
@@ -0,0 +1,31 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+package org.apache.polygene.library.scripting;
+
+import org.apache.polygene.api.mixin.Mixins;
+
+// START SNIPPET: mixin
+
+@Mixins(ScriptMixin.class)
+public interface HelloSpeaker
+{
+    void sayHello();
+}
+// END SNIPPET: mixin

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f9add57c/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/ScriptMixinTest.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/ScriptMixinTest.java b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/ScriptMixinTest.java
new file mode 100644
index 0000000..501949c
--- /dev/null
+++ b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/ScriptMixinTest.java
@@ -0,0 +1,124 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+package org.apache.polygene.library.scripting;
+
+import org.apache.polygene.api.composite.TransientBuilderFactory;
+import org.apache.polygene.api.composite.TransientComposite;
+import org.apache.polygene.api.object.ObjectFactory;
+import org.apache.polygene.api.property.StateHolder;
+import org.apache.polygene.api.service.ServiceFinder;
+import org.apache.polygene.api.structure.Application;
+import org.apache.polygene.api.structure.Layer;
+import org.apache.polygene.api.structure.Module;
+import org.apache.polygene.api.structure.TypeLookup;
+import org.apache.polygene.api.unitofwork.UnitOfWorkFactory;
+import org.apache.polygene.api.value.ValueBuilderFactory;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.LayerAssembly;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.runtime.structure.LayerModel;
+import org.apache.polygene.runtime.structure.ModuleModel;
+import org.apache.polygene.test.AbstractPolygeneTest;
+import org.junit.Test;
+
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.hamcrest.core.IsInstanceOf.instanceOf;
+import static org.hamcrest.core.IsNull.notNullValue;
+import static org.junit.Assert.assertThat;
+
+public class ScriptMixinTest
+    extends AbstractPolygeneTest
+{
+    public void assemble( ModuleAssembly module )
+        throws AssemblyException
+    {
+        LayerAssembly layer = module.layer();
+        layer.application().setName( "Script Test" );
+        module.transients( DomainType.class ).setMetaInfo( Scripting.JAVASCRIPT ).withMixins( ScriptMixin.class );
+    }
+
+    @Test
+    public void testInvoke() throws Throwable
+    {
+        DomainType domain1 = transientBuilderFactory.newTransient( DomainType.class );
+        assertThat(domain1.do1("her message"), equalTo("[her message]") );
+    }
+
+    public void testIsolation() throws Throwable
+    {
+        DomainType domain1 = transientBuilderFactory.newTransient( DomainType.class );
+        DomainType domain2 = transientBuilderFactory.newTransient( DomainType.class );
+        DomainType domain3 = transientBuilderFactory.newTransient( DomainType.class );
+        assertThat(domain1.do1("her message"), equalTo("[her message]") );
+        assertThat(domain2.do1("his message"), equalTo("[his message]") );
+        assertThat(domain3.do1("its message"), equalTo("[its message]") );
+        domain1.inc();
+        domain1.inc();
+        domain1.inc();
+        domain1.inc();
+        domain2.inc();
+        domain2.inc();
+        domain2.inc();
+        domain3.inc();
+        assertThat(domain1.count(), equalTo(4.0) );
+        assertThat(domain2.count(), equalTo(3.0) );
+        assertThat(domain3.count(), equalTo(1.0) );
+    }
+
+    @Test
+    public void testBindings() {
+        DomainType domain = transientBuilderFactory.newTransient( DomainType.class );
+
+        Object _this = domain.whatIsThis();
+        assertThat( _this, instanceOf(DomainType.class));
+        assertThat( _this, instanceOf(TransientComposite.class ) );
+
+        StateHolder state = domain.whatIsState( );
+        assertThat( state.properties(), notNullValue());
+
+        Application app  = domain.whatIsApplication( );
+        assertThat( app.name(), equalTo("Script Test"));
+
+        Layer layer = domain.whatIsLayer();
+        assertThat( layer.name(), equalTo("Layer 1"));
+
+        Module module = domain.whatIsModule();
+        assertThat( module.name(), equalTo("Module 1"));
+
+        ObjectFactory of = domain.whatIsObjectFactory( );
+        assertThat( of, notNullValue());
+
+        UnitOfWorkFactory uowf = domain.whatIsUnitOfWorkFactory( );
+        assertThat( uowf, notNullValue());
+
+        ValueBuilderFactory vbf = domain.whatIsValueBuilderFactory( );
+        assertThat( vbf, notNullValue());
+
+        TransientBuilderFactory tbf = domain.whatIsTransientBuilderFactory( );
+        assertThat( tbf, notNullValue());
+
+        ServiceFinder finder = domain.whatIsServiceFinder( );
+        assertThat( finder, notNullValue());
+
+        TypeLookup lookup = domain.whatIsTypeLookup( );
+        assertThat( lookup, notNullValue());
+
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f9add57c/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/DomainType.js
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/DomainType.js b/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/DomainType.js
new file mode 100644
index 0000000..7e84d61
--- /dev/null
+++ b/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/DomainType.js
@@ -0,0 +1,78 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *  
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *  
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+
+var counter = 0;
+
+function do1(message) {
+    return "[" + message + "]";
+}
+
+//noinspection JSUnusedGlobalSymbols
+function count() {
+    return counter;
+}
+
+function inc() {
+    return counter++;
+}
+
+function whatIsThis() {
+    return This;
+}
+
+function whatIsState() {
+    return state;
+}
+
+function whatIsApplication() {
+    return application;
+}
+
+function whatIsLayer() {
+    return layer;
+}
+
+function whatIsModule() {
+    return module;
+}
+
+function whatIsObjectFactory() {
+    return objectFactory;
+}
+
+function whatIsUnitOfWorkFactory() {
+    return unitOfWorkFactory;
+}
+
+function whatIsValueBuilderFactory() {
+    return valueBuilderFactory;
+}
+
+function whatIsTransientBuilderFactory() {
+    return transientBuilderFactory;
+}
+
+function whatIsServiceFinder() {
+    return serviceFinder;
+}
+
+function whatIsTypeLookup() {
+    return typeLookup;
+}
\ No newline at end of file


[2/5] polygene-java git commit: POLYGENE-29 - Updated documentation and added more languages.

Posted by ni...@apache.org.
POLYGENE-29 - Updated documentation and added more languages.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/f78110d9
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/f78110d9
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/f78110d9

Branch: refs/heads/develop
Commit: f78110d98670bce9ad51dd50f9e863b5e7e84d44
Parents: f9add57
Author: niclas <ni...@spicter.com>
Authored: Sun Apr 9 11:41:31 2017 +0800
Committer: niclas <ni...@spicter.com>
Committed: Sun Apr 9 11:41:31 2017 +0800

----------------------------------------------------------------------
 libraries/lang-groovy/src/docs/lang-groovy.txt  | 109 -------------------
 .../src/docs/lang-javascript.txt                |  55 ----------
 libraries/scripting/build.gradle                |   7 ++
 libraries/scripting/dev-status.xml              |   4 +-
 libraries/scripting/src/docs/groovy.txt         |  77 +++++++++++++
 libraries/scripting/src/docs/javascript.txt     |  41 +++++++
 libraries/scripting/src/docs/scripting.txt      | 100 +++++++++++++++++
 .../polygene/library/scripting/ScriptMixin.java |   4 +
 .../polygene/library/scripting/Scripting.java   |  26 ++++-
 .../library/scripting/HelloSpeaker.java         |   2 +-
 .../library/scripting/HelloSpeakerMixin.groovy  |  31 ++++++
 .../library/scripting/HelloSpeakerTest.java     |  76 +++++++++++++
 .../library/scripting/ScriptMixinTest.java      |  17 +++
 .../library/scripting/HelloSpeaker.groovy       |  26 +++++
 .../polygene/library/scripting/HelloSpeaker.js  |  25 +++++
 manual/src/docs/userguide/libraries.txt         |   6 +-
 settings.gradle                                 |   2 -
 17 files changed, 431 insertions(+), 177 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/lang-groovy/src/docs/lang-groovy.txt
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/src/docs/lang-groovy.txt b/libraries/lang-groovy/src/docs/lang-groovy.txt
deleted file mode 100644
index 029f241..0000000
--- a/libraries/lang-groovy/src/docs/lang-groovy.txt
+++ /dev/null
@@ -1,109 +0,0 @@
-///////////////////////////////////////////////////////////////
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
-///////////////////////////////////////////////////////////////
-
-[[lang-groovy, Groovy Scripting Library]]
-= Groovy Scripting =
-
-[devstatus]
---------------
-source=libraries/lang-groovy/dev-status.xml
---------------
-
-Groovy Scripting Library
-
-include::../../build/docs/buildinfo/artifact.txt[]
-
-The Groovy Scripting Library is a Generic mixin that implements interfaces by delegating to Groovy code from classpath resources.
-
-But before looking at how to use the Scripting library we'll see that *you don't need this library at all if you simply need to use Groovy classes as Fragments*.
-Then we'll see how to use Groovy class scripts and method scripts.
-
-All examples below are based on this type:
-
-[snippet,java]
-----
-source=libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeaker.java
-tag=speaker
-----
-
-
-== Using compiled Groovy classes ==
-
-To directly use compiled Groovy classes as Fragments you don't need this library at all.
-
-Having this Groovy class compiled ;
-
-.HelloSpeakerMixin.groovy
-[snippet,groovy]
-----
-source=libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerMixin.groovy
-tag=direct
-----
-
-assemble it directly:
-
-[snippet,java]
-----
-source=libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerTest.java
-tag=direct
-----
-
-
-== Using Groovy class scripts ==
-
-Declare a Groovy class in a classpath resource file located in the same package as the implemented type with the name +<type>.groovy+:
-
-.HelloSpeaker.groovy
-[snippet,groovy]
-----
-source=libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/HelloSpeaker.groovy
-tag=script
-----
-
-Then assemble it with the +GroovyMixin+:
-
-[snippet,java]
-----
-source=libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerTest.java
-tag=script
-----
-
-Groovy class scripts get +@This+ injection in a +This+ property if present.
-
-
-== Using Groovy method scripts ==
-
-Implement single composites methods, each in a classpath resource file located in the same package as the implemented type with the name +<type>.<method>.groovy+:
-
-.HelloSpeaker.sayHello.groovy
-[snippet,groovy]
-----
-source=libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/HelloSpeaker.sayHello.groovy
-tag=script
-----
-
-Then assemble it with the +GroovyMixin+:
-
-[snippet,java]
-----
-source=libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerTest.java
-tag=script
-----
-
-Groovy method scripts get +@This+ injection as +This+ property and the methods arguments array as +args+.

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/lang-javascript/src/docs/lang-javascript.txt
----------------------------------------------------------------------
diff --git a/libraries/lang-javascript/src/docs/lang-javascript.txt b/libraries/lang-javascript/src/docs/lang-javascript.txt
deleted file mode 100644
index d50fda5..0000000
--- a/libraries/lang-javascript/src/docs/lang-javascript.txt
+++ /dev/null
@@ -1,55 +0,0 @@
-///////////////////////////////////////////////////////////////
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the
- * "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *   http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing,
- * software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- * KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations
- * under the License.
-///////////////////////////////////////////////////////////////
-
-[[lang-javascript, Javascript Scripting Library]]
-= Javascript Scripting =
-
-[devstatus]
---------------
-source=libraries/lang-javascript/dev-status.xml
---------------
-
-The Javascript Scripting Library allows Mixin methods to be implemented in Javascript and loaded dynamically on first use.
-
-include::../../build/docs/buildinfo/artifact.txt[]
-
-The Javascript Scripting Library is a Generic mixin class that implements 
-Composite interfaces by delegating to JavaScript functions using Rhino. Each 
-method in an interface is declared as a JS function in a file located in 
-classpath with the name "<interface>.<method>.js", where the interface name 
-includes the package, and has "." replaced with "/".
-
-Example: 
-
-    org/apache/polygene/samples/hello/domain/HelloWorldSpeaker.say.js
-
-That means that the HelloWorldSpeaker.say.js file may be co-located with the 
-class files in the same package. It is currently not supported to place the 
-Javascript implementation of the mixin in a different package than the 
-interface it implements.
-
-To use Javascript to implement the Mixin functionality for a given interface, 
-simply declare the +JavaScriptMixin+ like any other mixin, either in the 
-interface or at assembly time.
-
-[snippet,java]
-----
-source=libraries/lang-javascript/src/test/java/org/apache/polygene/library/javascript/HelloSpeaker.java
-tag=mixin
-----

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/scripting/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/scripting/build.gradle b/libraries/scripting/build.gradle
index c5b3df8..bacd28e 100644
--- a/libraries/scripting/build.gradle
+++ b/libraries/scripting/build.gradle
@@ -24,10 +24,17 @@ description = "Apache Polygene\u2122 Common Scripting Library contains common class
 
 jar { manifest { name = "Apache Polygene\u2122 Library - Scripting - Common" } }
 
+apply plugin: 'groovy'
+
 dependencies {
+  api polygene.core.api
   api polygene.core.bootstrap
 
+  implementation libraries.groovy
+
   runtimeOnly polygene.core.runtime
 
   testImplementation polygene.core.testsupport
+
+  testRuntimeOnly libraries.logback
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/scripting/dev-status.xml
----------------------------------------------------------------------
diff --git a/libraries/scripting/dev-status.xml b/libraries/scripting/dev-status.xml
index 5ce55f5..d72e9f9 100644
--- a/libraries/scripting/dev-status.xml
+++ b/libraries/scripting/dev-status.xml
@@ -27,10 +27,10 @@
     <codebase>stable</codebase>
 
     <!-- none, brief, good, complete -->
-    <documentation>none</documentation>
+    <documentation>good</documentation>
 
     <!-- none, some, good, complete -->
-    <unittests>complete</unittests>
+    <unittests>good</unittests>
   </status>
   <licenses>
     <license>ALv2</license>

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/scripting/src/docs/groovy.txt
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/docs/groovy.txt b/libraries/scripting/src/docs/groovy.txt
new file mode 100644
index 0000000..a277bc3
--- /dev/null
+++ b/libraries/scripting/src/docs/groovy.txt
@@ -0,0 +1,77 @@
+///////////////////////////////////////////////////////////////
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+///////////////////////////////////////////////////////////////
+
+[[groovy, Scripting with Groovy]]
+== Groovy ==
+
+The Groovy Scripting Library is a Generic mixin that implements interfaces by delegating to Groovy code from classpath resources.
+
+But before looking at how to use the Scripting library we'll see that *you don't need Scripting library at all if you
+simply need to use Groovy classes as Fragments*. Groovy is a fully Java compatible language and can be used directly,
+similarly to Scala.
+
+Then we'll see how to use Groovy class scripts and method scripts.
+
+All examples below are based on this type:
+
+[snippet,java]
+----
+source=libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeaker.java
+tag=speaker
+----
+
+== Using compiled Groovy classes ==
+
+To directly use compiled Groovy classes as Fragments you don't need this library at all.
+
+Having this Groovy class compiled ;
+
+.HelloSpeakerMixin.groovy
+[snippet,groovy]
+----
+source=libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerMixin.groovy
+tag=direct
+----
+
+assemble it directly:
+
+[snippet,java]
+----
+source=libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerTest.java
+tag=direct
+----
+
+== Using Groovy function scripts ==
+
+Declare a Groovy function in a resource file located in the same package as the implemented type with the name +<type>.groovy+:
+
+.HelloSpeaker.groovy
+[snippet,groovy]
+----
+source=libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/HelloSpeaker.groovy
+tag=script
+----
+
+Then assemble it with the normal +ScriptMixin+:
+
+[snippet,java]
+----
+source=libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerTest.java
+tag=script
+----

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/scripting/src/docs/javascript.txt
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/docs/javascript.txt b/libraries/scripting/src/docs/javascript.txt
new file mode 100644
index 0000000..7568dfb
--- /dev/null
+++ b/libraries/scripting/src/docs/javascript.txt
@@ -0,0 +1,41 @@
+///////////////////////////////////////////////////////////////
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+///////////////////////////////////////////////////////////////
+
+[[javascript, Scripting with JavaScript]]
+== Javascript ==
+
+In Javascript, we map directly to JS functions with the same name.
+
+For the following Polygene composite type,
+
+[snippet,java]
+----
+source=libraries/scripting/src/test/java/org/apache/polygene/library/javascript/HelloSpeaker.java
+tag=mixin
+----
+
+
+we need a implementation that looks like this;
+
+[snippet,javascript]
+----
+source=libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.js
+tag=script
+----
+

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/scripting/src/docs/scripting.txt
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/docs/scripting.txt b/libraries/scripting/src/docs/scripting.txt
new file mode 100644
index 0000000..5ae5099
--- /dev/null
+++ b/libraries/scripting/src/docs/scripting.txt
@@ -0,0 +1,100 @@
+///////////////////////////////////////////////////////////////
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+///////////////////////////////////////////////////////////////
+
+[[scripting, Scripting Library]]
+= Scripting =
+
+[devstatus]
+--------------
+source=libraries/scripting/dev-status.xml
+--------------
+
+The Scripting Library allows Mixin methods to be implemented in any JSR-223 scripting language, loaded dynamically on
+first use and allowing reloading of the script in runtime.
+
+include::../../build/docs/buildinfo/artifact.txt[]
+
+The Scripting Library is a Generic mixin class that implements
+Composite interfaces by delegating to script functions using Java Scripting API. All Java Scripting API (JSR-223)
+implementations that support
+
+[code,java]
+----
+    ((javax.script.Invocable) scriptEngine).invokeFunction( functionName, arguments );
+----
+
+should be supported. On Java.Net there is a https://java.net/projects/scripting/sources/svn/show/trunk/engines[list of Java Scripting API languages].
+
+
+It is important to understand that the ScriptEngines must be present on the classpath, or they will not be available,
+with the exception of JavaScript which uses the built-in Nashorn engine and Groovy that is an explicit dependency of
+this library.
+
+We welcome additional information and samples of languages that has been tried and tested.
+
+.Language Support
+[options="header"]
+|=======
+| Language | Supported | Tested | Implementation
+| JavaScript | Yes | Yes | | Nashorn, built-in Java 8 and later
+| Groovy | Yes | Yes | Apache | Apache Groovy, dependency exist from this library
+| Ruby | Yes | No |  | JRuby
+| Python | Yes | No | | Jython, must use jython-standalone
+| Kotlin | Yes | No |  | Jetbrains
+| Lua | Yes | No | MIT | luaj.org,
+| Clojure | Yes | No | CPL | https://github.com/pmf/clojure-jsr223
+|=======
+
+The following languages may or may not be supported, and was found at https://java.net/projects/scripting/sources/svn/show/trunk/engines[Java.Net Scripting project]
+
+.Potential Languages
+[options="header"]
+|=======
+| Language | Location | License
+|beanshell
+|ejs
+|freemarker
+|jacl
+|jaskell
+|jawk
+|jelly
+|jep
+|jexl
+|jst
+|judo
+|juel
+|ognl
+|pnuts
+|scheme
+|velocity
+|xpath
+|xslt
+|=======
+
+.Not Compatible Languages
+[options="header"]
+|=======
+| Language | Comment
+| Java | Implementation exists at https://github.com/nickman/javax-scripting/ which is forked from https://java.net/projects/scripting. It doesn't support Invocable, and additional work on ScriptMixin is required to support this. Althernatively, fork the ScriptEngine implementation and support Invocable in it.
+|=======
+
+include::../../../../libraries/scripting/src/docs/javascript.txt[]
+
+include::../../../../libraries/scripting/src/docs/groovy.txt[]
+

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptMixin.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptMixin.java b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptMixin.java
index a66f387..61c033b 100644
--- a/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptMixin.java
+++ b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/ScriptMixin.java
@@ -105,6 +105,10 @@ public class ScriptMixin
         {
             engine = manager.getEngineByExtension( scripting.extension() );
         }
+        if( engine == null )
+        {
+            throw new ScriptException( "Engine " + scripting + " is not available. Perhaps missing implementation on the classpath." );
+        }
         return engine;
     }
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/Scripting.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/Scripting.java b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/Scripting.java
index b2e8464..119b8a1 100644
--- a/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/Scripting.java
+++ b/libraries/scripting/src/main/java/org/apache/polygene/library/scripting/Scripting.java
@@ -19,14 +19,19 @@
  */
 package org.apache.polygene.library.scripting;
 
+import javax.script.ScriptEngineManager;
+
+// START SNIPPET: supported
 public class Scripting
 {
-    public static final Scripting JAVASCRIPT = new Scripting( "nashorn", ".js" );
     public static final Scripting ECMASCRIPT = new Scripting( "nashorn", ".js" );
     public static final Scripting GROOVY = new Scripting( "groovy", ".groovy" );
-    public static final Scripting RUBY = new Scripting( "jruby", ".rb" );
-    public static final Scripting PYTHON = new Scripting( "python", ".py" );
+    public static final Scripting JAVASCRIPT = new Scripting( "nashorn", ".js" );
     public static final Scripting KOTLIN = new Scripting( "kotlin", ".kt" );
+    public static final Scripting LUA = new Scripting( "lua", ".lua" );
+    public static final Scripting PYTHON = new Scripting( "python", ".py" );
+    public static final Scripting RUBY = new Scripting( "jruby", ".rb" );
+    // END SNIPPET: supported
 
     private String scriptEngine;
     private String extension;
@@ -51,4 +56,19 @@ public class Scripting
     {
         return extension;
     }
+
+    @Override
+    public String toString()
+    {
+        if( scriptEngine == null )
+        {
+            return "for script extension '" + extension + "'";
+        }
+        return "'" + scriptEngine + "'";
+    }
+
+    public static void main( String[] args )
+    {
+        new ScriptEngineManager().getEngineFactories().forEach( factory -> System.out.println(factory));
+    }
 }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
index 68cbc47..967332b 100644
--- a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
+++ b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
@@ -26,6 +26,6 @@ import org.apache.polygene.api.mixin.Mixins;
 @Mixins(ScriptMixin.class)
 public interface HelloSpeaker
 {
-    void sayHello();
+    String sayHello();
 }
 // END SNIPPET: mixin

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerMixin.groovy
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerMixin.groovy b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerMixin.groovy
new file mode 100644
index 0000000..ad3113b
--- /dev/null
+++ b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerMixin.groovy
@@ -0,0 +1,31 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+package org.apache.polygene.library.scripting;
+
+// START SNIPPET: direct
+class HelloSpeakerMixin
+    implements HelloSpeaker
+{
+
+    String sayHello() {
+        "Hello there, Groovy"
+    }
+}
+// END SNIPPET: direct

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerTest.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerTest.java b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerTest.java
new file mode 100644
index 0000000..de03c4c
--- /dev/null
+++ b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerTest.java
@@ -0,0 +1,76 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+package org.apache.polygene.library.scripting;
+
+import org.junit.Assert;
+import org.junit.Test;
+import org.apache.polygene.bootstrap.AssemblyException;
+import org.apache.polygene.bootstrap.ModuleAssembly;
+import org.apache.polygene.test.AbstractPolygeneTest;
+import org.apache.polygene.bootstrap.SingletonAssembler;
+
+import static org.hamcrest.core.IsEqual.equalTo;
+import static org.junit.Assert.assertThat;
+
+public class HelloSpeakerTest extends AbstractPolygeneTest
+{
+    public void assemble( ModuleAssembly module )
+        throws AssemblyException
+    {
+    }
+
+    @Test
+    public void testGroovyScriptResourceMixin()
+        throws Exception
+    {
+        // START SNIPPET: script
+        SingletonAssembler assembler = new SingletonAssembler()
+        {
+            @Override
+            public void assemble( ModuleAssembly module )
+                throws AssemblyException
+            {
+                module.transients( HelloSpeaker.class ).setMetaInfo( Scripting.GROOVY ).withMixins( ScriptMixin.class );
+            }
+        };
+        HelloSpeaker speaker = assembler.module().newTransient( HelloSpeaker.class );
+        assertThat( speaker.sayHello(), equalTo("Hello, Groovy") );
+        // END SNIPPET: script
+    }
+
+    @Test
+    public void testGroovyClassMixin()
+        throws Exception
+    {
+        // START SNIPPET: direct
+        SingletonAssembler assembler = new SingletonAssembler()
+        {
+            @Override
+            public void assemble( ModuleAssembly module )
+                throws AssemblyException
+            {
+                module.transients( HelloSpeaker.class ).withMixins( HelloSpeakerMixin.class );
+            }
+        };
+        HelloSpeaker speaker = assembler.module().newTransient( HelloSpeaker.class );
+        assertThat( speaker.sayHello(), equalTo("Hello there, Groovy") );
+        // END SNIPPET: direct
+    }
+}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/ScriptMixinTest.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/ScriptMixinTest.java b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/ScriptMixinTest.java
index 501949c..75b6085 100644
--- a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/ScriptMixinTest.java
+++ b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/ScriptMixinTest.java
@@ -52,6 +52,8 @@ public class ScriptMixinTest
         LayerAssembly layer = module.layer();
         layer.application().setName( "Script Test" );
         module.transients( DomainType.class ).setMetaInfo( Scripting.JAVASCRIPT ).withMixins( ScriptMixin.class );
+        module.transients( HelloSpeaker.class ).setMetaInfo( Scripting.GROOVY ).withMixins( ScriptMixin.class );
+        module.values( HelloSpeaker.class ).setMetaInfo( Scripting.JAVASCRIPT ).withMixins( ScriptMixin.class );
     }
 
     @Test
@@ -61,6 +63,7 @@ public class ScriptMixinTest
         assertThat(domain1.do1("her message"), equalTo("[her message]") );
     }
 
+    @Test
     public void testIsolation() throws Throwable
     {
         DomainType domain1 = transientBuilderFactory.newTransient( DomainType.class );
@@ -119,6 +122,20 @@ public class ScriptMixinTest
 
         TypeLookup lookup = domain.whatIsTypeLookup( );
         assertThat( lookup, notNullValue());
+    }
+
 
+    @Test
+    public void testJavascriptInvoke() throws Exception
+    {
+        HelloSpeaker speaker = valueBuilderFactory.newValue( HelloSpeaker.class );
+        assertThat(speaker.sayHello(), equalTo("Hello, JavaScript"));
+    }
+
+    @Test
+    public void testGroovyInvoke() throws Exception
+    {
+        HelloSpeaker speaker = transientBuilderFactory.newTransient( HelloSpeaker.class );
+        assertThat(speaker.sayHello(), equalTo("Hello, Groovy"));
     }
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.groovy
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.groovy b/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.groovy
new file mode 100644
index 0000000..1c0b7a8
--- /dev/null
+++ b/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.groovy
@@ -0,0 +1,26 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+package org.apache.polygene.library.groovy
+
+// START SNIPPET: script
+def sayHello() {
+    "Hello, Groovy"
+}
+// END SNIPPET: script

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.js
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.js b/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.js
new file mode 100644
index 0000000..f5e29cf
--- /dev/null
+++ b/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.js
@@ -0,0 +1,25 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+
+// START SNIPPET: script
+function sayHello() {
+    return "Hello, JavaScript";
+}
+// END SNIPPET: script

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/manual/src/docs/userguide/libraries.txt
----------------------------------------------------------------------
diff --git a/manual/src/docs/userguide/libraries.txt b/manual/src/docs/userguide/libraries.txt
index 585ab3f..b4bcce6 100644
--- a/manual/src/docs/userguide/libraries.txt
+++ b/manual/src/docs/userguide/libraries.txt
@@ -31,11 +31,7 @@ for our users.
 
 :leveloffset: 2
 
-include::../../../../libraries/lang-groovy/src/docs/lang-groovy.txt[]
-
-:leveloffset: 2
-
-include::../../../../libraries/lang-javascript/src/docs/lang-javascript.txt[]
+include::../../../../libraries/scripting/src/docs/scripting.txt[]
 
 :leveloffset: 2
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/f78110d9/settings.gradle
----------------------------------------------------------------------
diff --git a/settings.gradle b/settings.gradle
index d63bdb6..808f937 100644
--- a/settings.gradle
+++ b/settings.gradle
@@ -31,8 +31,6 @@ include 'core:api',
         'libraries:fileconfig',
         'libraries:http',
         'libraries:invocation-cache',
-        'libraries:lang-groovy',
-        'libraries:lang-javascript',
         'libraries:jmx',
         'libraries:locking',
         'libraries:logging',


[3/5] polygene-java git commit: POLYGENE-29 - Removing old lang-* libraries.

Posted by ni...@apache.org.
POLYGENE-29 - Removing old lang-* libraries.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/71aaa07d
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/71aaa07d
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/71aaa07d

Branch: refs/heads/develop
Commit: 71aaa07d92478946f07f6df1e112b652ec837e8b
Parents: f78110d
Author: niclas <ni...@spicter.com>
Authored: Sun Apr 9 11:43:59 2017 +0800
Committer: niclas <ni...@spicter.com>
Committed: Sun Apr 9 11:43:59 2017 +0800

----------------------------------------------------------------------
 libraries/lang-beanshell/README.txt             |  10 -
 libraries/lang-groovy/build.gradle              |  39 --
 libraries/lang-groovy/dev-status.xml            |  38 --
 .../polygene/library/groovy/GroovyMixin.java    | 202 --------
 .../apache/polygene/library/groovy/package.html |  24 -
 .../library/groovy/GroovyComposite.java         |  31 --
 .../library/groovy/GroovyMixinTest.java         |  53 ---
 .../polygene/library/groovy/HelloSpeaker.java   |  27 --
 .../library/groovy/HelloSpeakerMixin.groovy     |  31 --
 .../library/groovy/HelloSpeakerTest.java        |  81 ----
 .../apache/polygene/library/groovy/Mixin1.java  |  25 -
 .../polygene/library/groovy/HelloSpeaker.groovy |  29 --
 .../library/groovy/HelloSpeaker.sayHello.groovy |  24 -
 .../polygene/library/groovy/Mixin1.groovy       |  32 --
 libraries/lang-javascript/build.gradle          |  39 --
 libraries/lang-javascript/dev-status.xml        |  38 --
 .../lang-javascript/licenses/rhino.license      | 470 -------------------
 .../library/javascript/JavaScriptMixin.java     | 332 -------------
 .../polygene/library/javascript/package.html    |  24 -
 .../polygene/library/javascript/DomainType.java |  25 -
 .../library/javascript/HelloSpeaker.java        |  31 --
 .../library/javascript/JavaScriptMixinTest.java |  43 --
 .../polygene/library/javascript/DomainType.js   |  33 --
 libraries/lang-jruby/README.txt                 |  10 -
 24 files changed, 1691 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-beanshell/README.txt
----------------------------------------------------------------------
diff --git a/libraries/lang-beanshell/README.txt b/libraries/lang-beanshell/README.txt
deleted file mode 100644
index dc7bfeb..0000000
--- a/libraries/lang-beanshell/README.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-
-BeanShell is licensed under LGPL, and Apache Software Foundation
-doesn't allow the use of LGPL in Apache projects.
-
-Therefor, Apache Polygene\u2122 had to drop this library component, but
-it is still available for separate download at
-
-https://github.com/Qi4j/qi4j-sdk
-
-in the libraries/lang-beanshell directory.

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-groovy/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/build.gradle b/libraries/lang-groovy/build.gradle
deleted file mode 100644
index cf84bd3..0000000
--- a/libraries/lang-groovy/build.gradle
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-apply plugin: 'polygene-library'
-
-description = "Apache Polygene\u2122 Groovy Library allows for Mixins to be implemented in Groovy scripts instead of directly in compiled Java."
-
-jar { manifest { name = "Apache Polygene\u2122 Library - Scripting - Groovy" } }
-
-apply plugin: 'groovy'
-
-dependencies {
-  api polygene.core.api
-
-  implementation libraries.groovy
-
-  runtimeOnly polygene.core.runtime
-
-  testImplementation polygene.core.testsupport
-
-  testRuntimeOnly libraries.logback
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-groovy/dev-status.xml
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/dev-status.xml b/libraries/lang-groovy/dev-status.xml
deleted file mode 100644
index a8d21fc..0000000
--- a/libraries/lang-groovy/dev-status.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  ~  Licensed to the Apache Software Foundation (ASF) under one
-  ~  or more contributor license agreements.  See the NOTICE file
-  ~  distributed with this work for additional information
-  ~  regarding copyright ownership.  The ASF licenses this file
-  ~  to you under the Apache License, Version 2.0 (the
-  ~  "License"); you may not use this file except in compliance
-  ~  with the License.  You may obtain a copy of the License at
-  ~
-  ~       http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~  Unless required by applicable law or agreed to in writing, software
-  ~  distributed under the License is distributed on an "AS IS" BASIS,
-  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~  See the License for the specific language governing permissions and
-  ~  limitations under the License.
-  ~
-  ~
-  -->
-<module xmlns="http://polygene.apache.org/schemas/2008/dev-status/1"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://polygene.apache.org/schemas/2008/dev-status/1
-        http://polygene.apache.org/schemas/2008/dev-status/1/dev-status.xsd">
-  <status>
-    <!--none,early,beta,stable,mature-->
-    <codebase>beta</codebase>
-
-    <!-- none, brief, good, complete -->
-    <documentation>good</documentation>
-
-    <!-- none, some, good, complete -->
-    <unittests>good</unittests>
-  </status>
-  <licenses>
-    <license>ALv2</license>
-  </licenses>
-</module>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-groovy/src/main/java/org/apache/polygene/library/groovy/GroovyMixin.java
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/src/main/java/org/apache/polygene/library/groovy/GroovyMixin.java b/libraries/lang-groovy/src/main/java/org/apache/polygene/library/groovy/GroovyMixin.java
deleted file mode 100644
index 6fcd624..0000000
--- a/libraries/lang-groovy/src/main/java/org/apache/polygene/library/groovy/GroovyMixin.java
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.groovy;
-
-import groovy.lang.Binding;
-import groovy.lang.GroovyClassLoader;
-import groovy.lang.GroovyObject;
-import groovy.lang.GroovyShell;
-import groovy.lang.MissingPropertyException;
-import java.io.File;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.Map;
-import java.util.Scanner;
-import org.apache.polygene.api.common.AppliesTo;
-import org.apache.polygene.api.common.AppliesToFilter;
-import org.apache.polygene.api.composite.Composite;
-import org.apache.polygene.api.injection.scope.This;
-
-/**
- * Generic mixin that implements interfaces by delegating to Groovy functions
- * using Groovy. Each method in an interface is declared by a Groovy method
- * in a file located in classpath with the name "&lt;interface&gt;.groovy",
- * where the interface name includes the package, and has "." replaced with "/".
- * <p>
- * Example:
- * </p>
- * <pre><code>
- * org/apache/polygene/samples/hello/domain/HelloWorldSpeaker.groovy
- * org/apache/polygene/samples/hello/domain/HelloWorldSpeaker.sayAgain.groovy
- * </code></pre>
- *
- */
-@AppliesTo( GroovyMixin.AppliesTo.class )
-public class GroovyMixin
-    implements InvocationHandler
-{
-
-    @This
-    private Composite me;
-
-    private final Map<Class, GroovyObject> groovyObjects;
-
-    public static class AppliesTo
-        implements AppliesToFilter
-    {
-        @Override
-        public boolean appliesTo( Method method, Class compositeType, Class mixin, Class modelClass )
-        {
-            return getFunctionResource( method ) != null;
-        }
-    }
-
-    public GroovyMixin()
-    {
-        groovyObjects = new HashMap<>();
-    }
-
-    @Override
-    public Object invoke( Object proxy, Method method, Object[] args )
-        throws Throwable
-    {
-        final FunctionResource groovySource = getFunctionResource( method );
-        if( groovySource != null )
-        {
-            if( groovySource.script )
-            {
-                return invokeAsObject( method, args, groovySource.url );
-            }
-            return invokeAsScript( method, args, groovySource.url );
-        }
-        throw new RuntimeException( "Internal error: Mixin invoked even if it does not apply" );
-    }
-
-    private Object invokeAsObject( Method method, Object[] args, URL groovySource )
-        throws Throwable
-    {
-        try
-        {
-            Class declaringClass = method.getDeclaringClass();
-            GroovyObject groovyObject = groovyObjects.get( declaringClass );
-            if( groovyObject == null )
-            {
-                final Class groovyClass;
-                try( InputStream inputStream = groovySource.openStream() )
-                {
-                    String sourceText = new Scanner( inputStream ).useDelimiter( "\\Z" ).next();
-                    GroovyClassLoader groovyClassLoader = new GroovyClassLoader( declaringClass.getClassLoader() );
-                    groovyClass = groovyClassLoader.parseClass( sourceText );
-                }
-                groovyObject = (GroovyObject) groovyClass.newInstance();
-                if( hasProperty( groovyObject, "This" ) )
-                {
-                    groovyObject.setProperty( "This", me );
-                }
-                groovyObjects.put( declaringClass, groovyObject );
-            }
-            return groovyObject.invokeMethod( method.getName(), args );
-        }
-        catch( Exception e )
-        {
-            e.printStackTrace();
-            throw e;
-        }
-    }
-
-    private boolean hasProperty( GroovyObject groovyObject, String propertyName )
-    {
-        try
-        {
-            groovyObject.getProperty( propertyName );
-            return true;
-        }
-        catch( MissingPropertyException ex )
-        {
-            return false;
-        }
-    }
-
-    private Object invokeAsScript( Method method, Object[] args, URL groovySource )
-        throws Throwable
-    {
-        try
-        {
-            Binding binding = new Binding();
-            binding.setVariable( "This", me );
-            binding.setVariable( "args", args );
-            GroovyShell shell = new GroovyShell( binding );
-            InputStream is = null;
-            try
-            {
-                is = groovySource.openStream();
-                return shell.evaluate( new InputStreamReader( is ) );
-            }
-            finally
-            {
-                if( is != null )
-                {
-                    is.close();
-                }
-            }
-        }
-        catch( Exception e )
-        {
-            e.printStackTrace();
-            throw e;
-        }
-    }
-
-    private static FunctionResource getFunctionResource( final Method method )
-    {
-        boolean script = false;
-        final String scriptPath = method.getDeclaringClass().getName().replace( '.', File.separatorChar );
-        String scriptFile = scriptPath + "." + method.getName() + ".groovy";
-        URL scriptUrl = method.getDeclaringClass().getClassLoader().getResource( scriptFile );
-        if( scriptUrl == null )
-        {
-            script = true;
-            scriptFile = scriptPath + ".groovy";
-            scriptUrl = method.getDeclaringClass().getClassLoader().getResource( scriptFile );
-        }
-        if( scriptUrl != null )
-        {
-            return new FunctionResource( script, scriptUrl );
-        }
-        return null;
-    }
-
-    private static class FunctionResource
-    {
-
-        URL url;
-        boolean script;
-
-        private FunctionResource( final boolean script, final URL url )
-        {
-            this.script = script;
-            this.url = url;
-        }
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-groovy/src/main/java/org/apache/polygene/library/groovy/package.html
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/src/main/java/org/apache/polygene/library/groovy/package.html b/libraries/lang-groovy/src/main/java/org/apache/polygene/library/groovy/package.html
deleted file mode 100644
index 66840f3..0000000
--- a/libraries/lang-groovy/src/main/java/org/apache/polygene/library/groovy/package.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  ~  Licensed to the Apache Software Foundation (ASF) under one
-  ~  or more contributor license agreements.  See the NOTICE file
-  ~  distributed with this work for additional information
-  ~  regarding copyright ownership.  The ASF licenses this file
-  ~  to you under the Apache License, Version 2.0 (the
-  ~  "License"); you may not use this file except in compliance
-  ~  with the License.  You may obtain a copy of the License at
-  ~
-  ~       http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~  Unless required by applicable law or agreed to in writing, software
-  ~  distributed under the License is distributed on an "AS IS" BASIS,
-  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~  See the License for the specific language governing permissions and
-  ~  limitations under the License.
-  ~
-  ~
-  -->
-<html>
-    <body>
-        <h2>Groovy Language Support Library.</h2>
-    </body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/GroovyComposite.java
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/GroovyComposite.java b/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/GroovyComposite.java
deleted file mode 100644
index 4ac39bb..0000000
--- a/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/GroovyComposite.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.groovy;
-
-import org.apache.polygene.api.composite.TransientComposite;
-import org.apache.polygene.api.mixin.Mixins;
-
-/**
- * JAVADOC
- */
-@Mixins( GroovyMixin.class )
-public interface GroovyComposite extends Mixin1, TransientComposite
-{
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/GroovyMixinTest.java
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/GroovyMixinTest.java b/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/GroovyMixinTest.java
deleted file mode 100644
index 7691fb6..0000000
--- a/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/GroovyMixinTest.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.groovy;
-
-import org.apache.polygene.test.AbstractPolygeneTest;
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.polygene.bootstrap.AssemblyException;
-import org.apache.polygene.bootstrap.ModuleAssembly;
-
-public class GroovyMixinTest extends AbstractPolygeneTest
-{
-    public void assemble( ModuleAssembly module )
-        throws AssemblyException
-    {
-        module.transients( GroovyComposite.class );
-    }
-
-    @Test
-    public void testInvoke()
-    {
-        GroovyComposite domain1 = transientBuilderFactory.newTransient( GroovyComposite.class );
-        GroovyComposite domain2 = transientBuilderFactory.newTransient( GroovyComposite.class );
-        Assert.assertEquals( "do1() in Groovy:1", domain1.do1() );
-        Assert.assertEquals( "do1() in Groovy:2", domain1.do1() );
-        Assert.assertEquals( "do1() in Groovy:3", domain1.do1() );
-        Assert.assertEquals( "do1() in Groovy:4", domain1.do1() );
-        Assert.assertEquals( "do1() in Groovy:1", domain2.do1() );
-        Assert.assertEquals( "do1() in Groovy:2", domain2.do1() );
-        Assert.assertEquals( "do1() in Groovy:3", domain2.do1() );
-        Assert.assertEquals( "do1() in Groovy:4", domain2.do1() );
-        Assert.assertEquals( "do1() in Groovy:5", domain2.do1() );
-        Assert.assertEquals( "do1() in Groovy:6", domain2.do1() );
-        Assert.assertEquals( "do1() in Groovy:5", domain1.do1() );
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeaker.java
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeaker.java b/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeaker.java
deleted file mode 100644
index 4736d7c..0000000
--- a/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeaker.java
+++ /dev/null
@@ -1,27 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.groovy;
-
-// START SNIPPET: speaker
-public interface HelloSpeaker
-{
-    String sayHello( String name );
-}
-// END SNIPPET: speaker

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerMixin.groovy
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerMixin.groovy b/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerMixin.groovy
deleted file mode 100644
index 5c69ed4..0000000
--- a/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerMixin.groovy
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.groovy;
-
-// START SNIPPET: direct
-public class HelloSpeakerMixin
-        implements HelloSpeaker
-{
-
-    public String sayHello( String name ) {
-        "Hello $name!"
-    }
-}
-// END SNIPPET: direct

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerTest.java
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerTest.java b/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerTest.java
deleted file mode 100644
index 1b3941e..0000000
--- a/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerTest.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.groovy;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.polygene.bootstrap.AssemblyException;
-import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.test.AbstractPolygeneTest;
-import org.apache.polygene.bootstrap.SingletonAssembler;
-
-public class HelloSpeakerTest extends AbstractPolygeneTest
-{
-    public void assemble( ModuleAssembly module )
-        throws AssemblyException
-    {
-        module.transients( HelloSpeaker.class ).withMixins( GroovyMixin.class );
-    }
-
-    @Test
-    public void testHello()
-    {
-        HelloSpeaker speaker = transientBuilderFactory.newTransient( HelloSpeaker.class );
-        Assert.assertEquals( "Hello World!", speaker.sayHello( "World" ) );
-    }
-
-    @Test
-    public void testGroovyScriptResourceMixin()
-        throws Exception
-    {
-        // START SNIPPET: script
-        SingletonAssembler assembler = new SingletonAssembler()
-        {
-            @Override
-            public void assemble( ModuleAssembly assembly )
-                throws AssemblyException
-            {
-                assembly.transients( HelloSpeaker.class ).withMixins( GroovyMixin.class );
-            }
-        };
-        HelloSpeaker speaker = assembler.module().newTransient( HelloSpeaker.class );
-        Assert.assertEquals( "Hello World!", speaker.sayHello( "World" ) );
-        // END SNIPPET: script
-    }
-
-    @Test
-    public void testGroovyClassMixin()
-        throws Exception
-    {
-        // START SNIPPET: direct
-        SingletonAssembler assembler = new SingletonAssembler()
-        {
-            @Override
-            public void assemble( ModuleAssembly module )
-                throws AssemblyException
-            {
-                module.transients( HelloSpeaker.class ).withMixins( HelloSpeakerMixin.class );
-            }
-        };
-        HelloSpeaker speaker = assembler.module().newTransient( HelloSpeaker.class );
-        Assert.assertEquals( "Hello World!", speaker.sayHello( "World" ) );
-        // END SNIPPET: direct
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/Mixin1.java
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/Mixin1.java b/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/Mixin1.java
deleted file mode 100644
index 632ed7b..0000000
--- a/libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/Mixin1.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.groovy;
-
-public interface Mixin1
-{
-    String do1();
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/HelloSpeaker.groovy
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/HelloSpeaker.groovy b/libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/HelloSpeaker.groovy
deleted file mode 100644
index c5e4162..0000000
--- a/libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/HelloSpeaker.groovy
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.groovy
-
-// START SNIPPET: script
-class HelloSpeaker {
-  def This
-  def sayHello( name ) {
-    "Hello $name!".toString()
-  }
-}
-// END SNIPPET: script

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/HelloSpeaker.sayHello.groovy
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/HelloSpeaker.sayHello.groovy b/libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/HelloSpeaker.sayHello.groovy
deleted file mode 100644
index 66467c8..0000000
--- a/libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/HelloSpeaker.sayHello.groovy
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.groovy
-
-// START SNIPPET: script
-"Hello ${args[0]}!".toString()
-// END SNIPPET: script

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/Mixin1.groovy
----------------------------------------------------------------------
diff --git a/libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/Mixin1.groovy b/libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/Mixin1.groovy
deleted file mode 100644
index f99f4a6..0000000
--- a/libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/Mixin1.groovy
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.groovy
-
-public class Mixin1
-{
-    def This
-    def counter = 0
-
-    public String do1()
-    {
-        counter = counter + 1
-        return "do1() in Groovy:" + counter
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-javascript/build.gradle
----------------------------------------------------------------------
diff --git a/libraries/lang-javascript/build.gradle b/libraries/lang-javascript/build.gradle
deleted file mode 100644
index 3f8806c..0000000
--- a/libraries/lang-javascript/build.gradle
+++ /dev/null
@@ -1,39 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-
-apply plugin: 'polygene-library'
-
-description = "Apache Polygene\u2122 JavaScript Library allows for Mixins to be implemented in JavaScript instead of directly in compiled Java."
-
-jar { manifest { name = "Apache Polygene\u2122 Library - Scripting - JavaScript" } }
-
-
-dependencies {
-  api polygene.core.api
-
-  implementation polygene.library( 'scripting' )
-  implementation libraries.javascript
-
-  runtimeOnly polygene.core.runtime
-
-  testImplementation polygene.core.testsupport
-
-  testRuntimeOnly libraries.logback
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-javascript/dev-status.xml
----------------------------------------------------------------------
diff --git a/libraries/lang-javascript/dev-status.xml b/libraries/lang-javascript/dev-status.xml
deleted file mode 100644
index 7a96a31..0000000
--- a/libraries/lang-javascript/dev-status.xml
+++ /dev/null
@@ -1,38 +0,0 @@
-<?xml version="1.0" encoding="UTF-8" ?>
-<!--
-  ~  Licensed to the Apache Software Foundation (ASF) under one
-  ~  or more contributor license agreements.  See the NOTICE file
-  ~  distributed with this work for additional information
-  ~  regarding copyright ownership.  The ASF licenses this file
-  ~  to you under the Apache License, Version 2.0 (the
-  ~  "License"); you may not use this file except in compliance
-  ~  with the License.  You may obtain a copy of the License at
-  ~
-  ~       http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~  Unless required by applicable law or agreed to in writing, software
-  ~  distributed under the License is distributed on an "AS IS" BASIS,
-  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~  See the License for the specific language governing permissions and
-  ~  limitations under the License.
-  ~
-  ~
-  -->
-<module xmlns="http://polygene.apache.org/schemas/2008/dev-status/1"
-        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-        xsi:schemaLocation="http://polygene.apache.org/schemas/2008/dev-status/1
-        http://polygene.apache.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>
-  </licenses>
-</module>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-javascript/licenses/rhino.license
----------------------------------------------------------------------
diff --git a/libraries/lang-javascript/licenses/rhino.license b/libraries/lang-javascript/licenses/rhino.license
deleted file mode 100644
index 7714141..0000000
--- a/libraries/lang-javascript/licenses/rhino.license
+++ /dev/null
@@ -1,470 +0,0 @@
-                          MOZILLA PUBLIC LICENSE
-                                Version 1.1
-
-                              ---------------
-
-1. Definitions.
-
-     1.0.1. "Commercial Use" means distribution or otherwise making the
-     Covered Code available to a third party.
-
-     1.1. "Contributor" means each entity that creates or contributes to
-     the creation of Modifications.
-
-     1.2. "Contributor Version" means the combination of the Original
-     Code, prior Modifications used by a Contributor, and the Modifications
-     made by that particular Contributor.
-
-     1.3. "Covered Code" means the Original Code or Modifications or the
-     combination of the Original Code and Modifications, in each case
-     including portions thereof.
-
-     1.4. "Electronic Distribution Mechanism" means a mechanism generally
-     accepted in the software development community for the electronic
-     transfer of data.
-
-     1.5. "Executable" means Covered Code in any form other than Source
-     Code.
-
-     1.6. "Initial Developer" means the individual or entity identified
-     as the Initial Developer in the Source Code notice required by Exhibit
-     A.
-
-     1.7. "Larger Work" means a work which combines Covered Code or
-     portions thereof with code not governed by the terms of this License.
-
-     1.8. "License" means this document.
-
-     1.8.1. "Licensable" means having the right to grant, to the maximum
-     extent possible, whether at the time of the initial grant or
-     subsequently acquired, any and all of the rights conveyed herein.
-
-     1.9. "Modifications" means any addition to or deletion from the
-     substance or structure of either the Original Code or any previous
-     Modifications. When Covered Code is released as a series of files, a
-     Modification is:
-          A. Any addition to or deletion from the contents of a file
-          containing Original Code or previous Modifications.
-
-          B. Any new file that contains any part of the Original Code or
-          previous Modifications.
-
-     1.10. "Original Code" means Source Code of computer software code
-     which is described in the Source Code notice required by Exhibit A as
-     Original Code, and which, at the time of its release under this
-     License is not already Covered Code governed by this License.
-
-     1.10.1. "Patent Claims" means any patent claim(s), now owned or
-     hereafter acquired, including without limitation,  method, process,
-     and apparatus claims, in any patent Licensable by grantor.
-
-     1.11. "Source Code" means the preferred form of the Covered Code for
-     making modifications to it, including all modules it contains, plus
-     any associated interface definition files, scripts used to control
-     compilation and installation of an Executable, or source code
-     differential comparisons against either the Original Code or another
-     well known, available Covered Code of the Contributor's choice. The
-     Source Code can be in a compressed or archival form, provided the
-     appropriate decompression or de-archiving software is widely available
-     for no charge.
-
-     1.12. "You" (or "Your")  means an individual or a legal entity
-     exercising rights under, and complying with all of the terms of, this
-     License or a future version of this License issued under Section 6.1.
-     For legal entities, "You" includes any entity which controls, is
-     controlled by, or is under common control with You. For purposes of
-     this definition, "control" means (a) the power, direct or indirect,
-     to cause the direction or management of such entity, whether by
-     contract or otherwise, or (b) ownership of more than fifty percent
-     (50%) of the outstanding shares or beneficial ownership of such
-     entity.
-
-2. Source Code License.
-
-     2.1. The Initial Developer Grant.
-     The Initial Developer hereby grants You a world-wide, royalty-free,
-     non-exclusive license, subject to third party intellectual property
-     claims:
-          (a)  under intellectual property rights (other than patent or
-          trademark) Licensable by Initial Developer to use, reproduce,
-          modify, display, perform, sublicense and distribute the Original
-          Code (or portions thereof) with or without Modifications, and/or
-          as part of a Larger Work; and
-
-          (b) under Patents Claims infringed by the making, using or
-          selling of Original Code, to make, have made, use, practice,
-          sell, and offer for sale, and/or otherwise dispose of the
-          Original Code (or portions thereof).
-
-          (c) the licenses granted in this Section 2.1(a) and (b) are
-          effective on the date Initial Developer first distributes
-          Original Code under the terms of this License.
-
-          (d) Notwithstanding Section 2.1(b) above, no patent license is
-          granted: 1) for code that You delete from the Original Code; 2)
-          separate from the Original Code;  or 3) for infringements caused
-          by: i) the modification of the Original Code or ii) the
-          combination of the Original Code with other software or devices.
-
-     2.2. Contributor Grant.
-     Subject to third party intellectual property claims, each Contributor
-     hereby grants You a world-wide, royalty-free, non-exclusive license
-
-          (a)  under intellectual property rights (other than patent or
-          trademark) Licensable by Contributor, to use, reproduce, modify,
-          display, perform, sublicense and distribute the Modifications
-          created by such Contributor (or portions thereof) either on an
-          unmodified basis, with other Modifications, as Covered Code
-          and/or as part of a Larger Work; and
-
-          (b) under Patent Claims infringed by the making, using, or
-          selling of  Modifications made by that Contributor either alone
-          and/or in combination with its Contributor Version (or portions
-          of such combination), to make, use, sell, offer for sale, have
-          made, and/or otherwise dispose of: 1) Modifications made by that
-          Contributor (or portions thereof); and 2) the combination of
-          Modifications made by that Contributor with its Contributor
-          Version (or portions of such combination).
-
-          (c) the licenses granted in Sections 2.2(a) and 2.2(b) are
-          effective on the date Contributor first makes Commercial Use of
-          the Covered Code.
-
-          (d)    Notwithstanding Section 2.2(b) above, no patent license is
-          granted: 1) for any code that Contributor has deleted from the
-          Contributor Version; 2)  separate from the Contributor Version;
-          3)  for infringements caused by: i) third party modifications of
-          Contributor Version or ii)  the combination of Modifications made
-          by that Contributor with other software  (except as part of the
-          Contributor Version) or other devices; or 4) under Patent Claims
-          infringed by Covered Code in the absence of Modifications made by
-          that Contributor.
-
-3. Distribution Obligations.
-
-     3.1. Application of License.
-     The Modifications which You create or to which You contribute are
-     governed by the terms of this License, including without limitation
-     Section 2.2. The Source Code version of Covered Code may be
-     distributed only under the terms of this License or a future version
-     of this License released under Section 6.1, and You must include a
-     copy of this License with every copy of the Source Code You
-     distribute. You may not offer or impose any terms on any Source Code
-     version that alters or restricts the applicable version of this
-     License or the recipients' rights hereunder. However, You may include
-     an additional document offering the additional rights described in
-     Section 3.5.
-
-     3.2. Availability of Source Code.
-     Any Modification which You create or to which You contribute must be
-     made available in Source Code form under the terms of this License
-     either on the same media as an Executable version or via an accepted
-     Electronic Distribution Mechanism to anyone to whom you made an
-     Executable version available; and if made available via Electronic
-     Distribution Mechanism, must remain available for at least twelve (12)
-     months after the date it initially became available, or at least six
-     (6) months after a subsequent version of that particular Modification
-     has been made available to such recipients. You are responsible for
-     ensuring that the Source Code version remains available even if the
-     Electronic Distribution Mechanism is maintained by a third party.
-
-     3.3. Description of Modifications.
-     You must cause all Covered Code to which You contribute to contain a
-     file documenting the changes You made to create that Covered Code and
-     the date of any change. You must include a prominent statement that
-     the Modification is derived, directly or indirectly, from Original
-     Code provided by the Initial Developer and including the name of the
-     Initial Developer in (a) the Source Code, and (b) in any notice in an
-     Executable version or related documentation in which You describe the
-     origin or ownership of the Covered Code.
-
-     3.4. Intellectual Property Matters
-          (a) Third Party Claims.
-          If Contributor has knowledge that a license under a third party's
-          intellectual property rights is required to exercise the rights
-          granted by such Contributor under Sections 2.1 or 2.2,
-          Contributor must include a text file with the Source Code
-          distribution titled "LEGAL" which describes the claim and the
-          party making the claim in sufficient detail that a recipient will
-          know whom to contact. If Contributor obtains such knowledge after
-          the Modification is made available as described in Section 3.2,
-          Contributor shall promptly modify the LEGAL file in all copies
-          Contributor makes available thereafter and shall take other steps
-          (such as notifying appropriate mailing lists or newsgroups)
-          reasonably calculated to inform those who received the Covered
-          Code that new knowledge has been obtained.
-
-          (b) Contributor APIs.
-          If Contributor's Modifications include an application programming
-          interface and Contributor has knowledge of patent licenses which
-          are reasonably necessary to implement that API, Contributor must
-          also include this information in the LEGAL file.
-
-               (c)    Representations.
-          Contributor represents that, except as disclosed pursuant to
-          Section 3.4(a) above, Contributor believes that Contributor's
-          Modifications are Contributor's original creation(s) and/or
-          Contributor has sufficient rights to grant the rights conveyed by
-          this License.
-
-     3.5. Required Notices.
-     You must duplicate the notice in Exhibit A in each file of the Source
-     Code.  If it is not possible to put such notice in a particular Source
-     Code file due to its structure, then You must include such notice in a
-     location (such as a relevant directory) where a user would be likely
-     to look for such a notice.  If You created one or more Modification(s)
-     You may add your name as a Contributor to the notice described in
-     Exhibit A.  You must also duplicate this License in any documentation
-     for the Source Code where You describe recipients' rights or ownership
-     rights relating to Covered Code.  You may choose to offer, and to
-     charge a fee for, warranty, support, indemnity or liability
-     obligations to one or more recipients of Covered Code. However, You
-     may do so only on Your own behalf, and not on behalf of the Initial
-     Developer or any Contributor. You must make it absolutely clear than
-     any such warranty, support, indemnity or liability obligation is
-     offered by You alone, and You hereby agree to indemnify the Initial
-     Developer and every Contributor for any liability incurred by the
-     Initial Developer or such Contributor as a result of warranty,
-     support, indemnity or liability terms You offer.
-
-     3.6. Distribution of Executable Versions.
-     You may distribute Covered Code in Executable form only if the
-     requirements of Section 3.1-3.5 have been met for that Covered Code,
-     and if You include a notice stating that the Source Code version of
-     the Covered Code is available under the terms of this License,
-     including a description of how and where You have fulfilled the
-     obligations of Section 3.2. The notice must be conspicuously included
-     in any notice in an Executable version, related documentation or
-     collateral in which You describe recipients' rights relating to the
-     Covered Code. You may distribute the Executable version of Covered
-     Code or ownership rights under a license of Your choice, which may
-     contain terms different from this License, provided that You are in
-     compliance with the terms of this License and that the license for the
-     Executable version does not attempt to limit or alter the recipient's
-     rights in the Source Code version from the rights set forth in this
-     License. If You distribute the Executable version under a different
-     license You must make it absolutely clear that any terms which differ
-     from this License are offered by You alone, not by the Initial
-     Developer or any Contributor. You hereby agree to indemnify the
-     Initial Developer and every Contributor for any liability incurred by
-     the Initial Developer or such Contributor as a result of any such
-     terms You offer.
-
-     3.7. Larger Works.
-     You may create a Larger Work by combining Covered Code with other code
-     not governed by the terms of this License and distribute the Larger
-     Work as a single product. In such a case, You must make sure the
-     requirements of this License are fulfilled for the Covered Code.
-
-4. Inability to Comply Due to Statute or Regulation.
-
-     If it is impossible for You to comply with any of the terms of this
-     License with respect to some or all of the Covered Code due to
-     statute, judicial order, or regulation then You must: (a) comply with
-     the terms of this License to the maximum extent possible; and (b)
-     describe the limitations and the code they affect. Such description
-     must be included in the LEGAL file described in Section 3.4 and must
-     be included with all distributions of the Source Code. Except to the
-     extent prohibited by statute or regulation, such description must be
-     sufficiently detailed for a recipient of ordinary skill to be able to
-     understand it.
-
-5. Application of this License.
-
-     This License applies to code to which the Initial Developer has
-     attached the notice in Exhibit A and to related Covered Code.
-
-6. Versions of the License.
-
-     6.1. New Versions.
-     Netscape Communications Corporation ("Netscape") may publish revised
-     and/or new versions of the License from time to time. Each version
-     will be given a distinguishing version number.
-
-     6.2. Effect of New Versions.
-     Once Covered Code has been published under a particular version of the
-     License, You may always continue to use it under the terms of that
-     version. You may also choose to use such Covered Code under the terms
-     of any subsequent version of the License published by Netscape. No one
-     other than Netscape has the right to modify the terms applicable to
-     Covered Code created under this License.
-
-     6.3. Derivative Works.
-     If You create or use a modified version of this License (which you may
-     only do in order to apply it to code which is not already Covered Code
-     governed by this License), You must (a) rename Your license so that
-     the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
-     "MPL", "NPL" or any confusingly similar phrase do not appear in your
-     license (except to note that your license differs from this License)
-     and (b) otherwise make it clear that Your version of the license
-     contains terms which differ from the Mozilla Public License and
-     Netscape Public License. (Filling in the name of the Initial
-     Developer, Original Code or Contributor in the notice described in
-     Exhibit A shall not of themselves be deemed to be modifications of
-     this License.)
-
-7. DISCLAIMER OF WARRANTY.
-
-     COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
-     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
-     WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
-     DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
-     THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
-     IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
-     YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
-     COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
-     OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
-     ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
-
-8. TERMINATION.
-
-     8.1.  This License and the rights granted hereunder will terminate
-     automatically if You fail to comply with terms herein and fail to cure
-     such breach within 30 days of becoming aware of the breach. All
-     sublicenses to the Covered Code which are properly granted shall
-     survive any termination of this License. Provisions which, by their
-     nature, must remain in effect beyond the termination of this License
-     shall survive.
-
-     8.2.  If You initiate litigation by asserting a patent infringement
-     claim (excluding declatory judgment actions) against Initial Developer
-     or a Contributor (the Initial Developer or Contributor against whom
-     You file such action is referred to as "Participant")  alleging that:
-
-     (a)  such Participant's Contributor Version directly or indirectly
-     infringes any patent, then any and all rights granted by such
-     Participant to You under Sections 2.1 and/or 2.2 of this License
-     shall, upon 60 days notice from Participant terminate prospectively,
-     unless if within 60 days after receipt of notice You either: (i)
-     agree in writing to pay Participant a mutually agreeable reasonable
-     royalty for Your past and future use of Modifications made by such
-     Participant, or (ii) withdraw Your litigation claim with respect to
-     the Contributor Version against such Participant.  If within 60 days
-     of notice, a reasonable royalty and payment arrangement are not
-     mutually agreed upon in writing by the parties or the litigation claim
-     is not withdrawn, the rights granted by Participant to You under
-     Sections 2.1 and/or 2.2 automatically terminate at the expiration of
-     the 60 day notice period specified above.
-
-     (b)  any software, hardware, or device, other than such Participant's
-     Contributor Version, directly or indirectly infringes any patent, then
-     any rights granted to You by such Participant under Sections 2.1(b)
-     and 2.2(b) are revoked effective as of the date You first made, used,
-     sold, distributed, or had made, Modifications made by that
-     Participant.
-
-     8.3.  If You assert a patent infringement claim against Participant
-     alleging that such Participant's Contributor Version directly or
-     indirectly infringes any patent where such claim is resolved (such as
-     by license or settlement) prior to the initiation of patent
-     infringement litigation, then the reasonable value of the licenses
-     granted by such Participant under Sections 2.1 or 2.2 shall be taken
-     into account in determining the amount or value of any payment or
-     license.
-
-     8.4.  In the event of termination under Sections 8.1 or 8.2 above,
-     all end user license agreements (excluding distributors and resellers)
-     which have been validly granted by You or any distributor hereunder
-     prior to termination shall survive termination.
-
-9. LIMITATION OF LIABILITY.
-
-     UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
-     (INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
-     DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
-     OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
-     ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
-     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
-     WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
-     COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
-     INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
-     LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
-     RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
-     PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
-     EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
-     THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
-
-10. U.S. GOVERNMENT END USERS.
-
-     The Covered Code is a "commercial item," as that term is defined in
-     48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
-     software" and "commercial computer software documentation," as such
-     terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
-     C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
-     all U.S. Government End Users acquire Covered Code with only those
-     rights set forth herein.
-
-11. MISCELLANEOUS.
-
-     This License represents the complete agreement concerning subject
-     matter hereof. If any provision of this License is held to be
-     unenforceable, such provision shall be reformed only to the extent
-     necessary to make it enforceable. This License shall be governed by
-     California law provisions (except to the extent applicable law, if
-     any, provides otherwise), excluding its conflict-of-law provisions.
-     With respect to disputes in which at least one party is a citizen of,
-     or an entity chartered or registered to do business in the United
-     States of America, any litigation relating to this License shall be
-     subject to the jurisdiction of the Federal Courts of the Northern
-     District of California, with venue lying in Santa Clara County,
-     California, with the losing party responsible for costs, including
-     without limitation, court costs and reasonable attorneys' fees and
-     expenses. The application of the United Nations Convention on
-     Contracts for the International Sale of Goods is expressly excluded.
-     Any law or regulation which provides that the language of a contract
-     shall be construed against the drafter shall not apply to this
-     License.
-
-12. RESPONSIBILITY FOR CLAIMS.
-
-     As between Initial Developer and the Contributors, each party is
-     responsible for claims and damages arising, directly or indirectly,
-     out of its utilization of rights under this License and You agree to
-     work with Initial Developer and Contributors to distribute such
-     responsibility on an equitable basis. Nothing herein is intended or
-     shall be deemed to constitute any admission of liability.
-
-13. MULTIPLE-LICENSED CODE.
-
-     Initial Developer may designate portions of the Covered Code as
-     "Multiple-Licensed".  "Multiple-Licensed" means that the Initial
-     Developer permits you to utilize portions of the Covered Code under
-     Your choice of the NPL or the alternative licenses, if any, specified
-     by the Initial Developer in the file described in Exhibit A.
-
-EXHIBIT A -Mozilla Public License.
-
-     ``The contents of this file are subject to the Mozilla Public License
-     Version 1.1 (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.mozilla.org/MPL/
-
-     Software distributed under the License is distributed on an "AS IS"
-     basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See the
-     License for the specific language governing rights and limitations
-     under the License.
-
-     The Original Code is ______________________________________.
-
-     The Initial Developer of the Original Code is ________________________.
-     Portions created by ______________________ are Copyright (C) ______
-     _______________________. All Rights Reserved.
-
-     Contributor(s): ______________________________________.
-
-     Alternatively, the contents of this file may be used under the terms
-     of the _____ license (the  "[___] License"), in which case the
-     provisions of [______] License are applicable instead of those
-     above.  If you wish to allow use of your version of this file only
-     under the terms of the [____] License and not to allow others to use
-     your version of this file under the MPL, indicate your decision by
-     deleting  the provisions above and replace  them with the notice and
-     other provisions required by the [___] License.  If you do not delete
-     the provisions above, a recipient may use your version of this file
-     under either the MPL or the [___] License."
-
-     [NOTE: The text of this Exhibit A may differ slightly from the text of
-     the notices in the Source Code files of the Original Code. You should
-     use the text of this Exhibit A rather than the text found in the
-     Original Code Source Code for Your Modifications.]
-

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-javascript/src/main/java/org/apache/polygene/library/javascript/JavaScriptMixin.java
----------------------------------------------------------------------
diff --git a/libraries/lang-javascript/src/main/java/org/apache/polygene/library/javascript/JavaScriptMixin.java b/libraries/lang-javascript/src/main/java/org/apache/polygene/library/javascript/JavaScriptMixin.java
deleted file mode 100644
index 10ebcca..0000000
--- a/libraries/lang-javascript/src/main/java/org/apache/polygene/library/javascript/JavaScriptMixin.java
+++ /dev/null
@@ -1,332 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.javascript;
-
-import java.io.*;
-import java.lang.reflect.InvocationHandler;
-import java.lang.reflect.Method;
-import java.net.URL;
-import java.util.HashMap;
-import java.util.StringTokenizer;
-import org.mozilla.javascript.*;
-import org.apache.polygene.api.common.AppliesTo;
-import org.apache.polygene.api.common.AppliesToFilter;
-import org.apache.polygene.api.composite.Composite;
-import org.apache.polygene.api.composite.TransientBuilderFactory;
-import org.apache.polygene.api.injection.scope.Structure;
-import org.apache.polygene.api.injection.scope.This;
-import org.apache.polygene.library.scripting.ScriptException;
-import org.apache.polygene.library.scripting.ScriptReloadable;
-
-/**
- * Generic mixin that implements interfaces by delegating to JavaScript functions
- * using Rhino. Each method in an interface is declared as a JS function
- * in a file located in classpath with the name "&lt;interface&gt;.&lt;method&gt;.js",
- * where the interface name includes the package, and has "." replaced with "/".
- * <p>
- * Example:
- * </p>
- * <pre><code>
- * org/apache/polygene/samples/hello/domain/HelloWorldSpeaker.say.js
- * </code></pre>
- */
-@AppliesTo( JavaScriptMixin.AppliesTo.class )
-public class JavaScriptMixin
-    implements InvocationHandler, ScriptReloadable
-{
-    @This private Composite me;
-
-    static private Scriptable standardScope;
-
-    private HashMap<String, Function> cachedScripts;
-
-    @Structure private TransientBuilderFactory factory;
-    private Scriptable instanceScope;
-    
-    static
-    {
-        Context cx = Context.enter();
-        standardScope = cx.initStandardObjects();
-        Context.exit();
-    }
-
-    public JavaScriptMixin()
-    {
-        cachedScripts = new HashMap<String, Function>();
-        Context cx = Context.enter();
-        instanceScope = cx.newObject( standardScope );
-        instanceScope.setPrototype( standardScope );
-        Context.exit();
-
-    }
-
-    @Override
-    public Object invoke( Object proxy, Method method, Object[] args ) throws Throwable
-    {
-        Context cx = Context.enter();
-        try
-        {
-            Scriptable proxyScope = Context.toObject( proxy, instanceScope );
-            proxyScope.setPrototype( instanceScope );
-            proxyScope.put( "compositeBuilderFactory", proxyScope, factory );
-            proxyScope.put( "This", proxyScope, me );
-            Function fn = getFunction( cx, proxyScope, method );
-            Object result = fn.call( cx, instanceScope, proxyScope, args );
-
-            if( result instanceof Undefined )
-            {
-                return null;
-            }
-            else if( result instanceof Wrapper )
-            {
-                return ( (Wrapper) result ).unwrap();
-            }
-            else
-            {
-                return result;
-            }
-        }
-        finally
-        {
-            Context.exit();
-        }
-    }
-
-    @Override
-    public void reloadScripts()
-    {
-        cachedScripts.clear();
-    }
-
-    private Function getFunction( Context cx, Scriptable scope, Method method )
-        throws IOException
-    {
-        Class<?> declaringClass = method.getDeclaringClass();
-        String classname = declaringClass.getName();
-        String methodName = method.getName();
-        String requestedFunctionName = classname + ":" + methodName;
-
-        Function fx = cachedScripts.get( requestedFunctionName );
-        if( fx != null )
-        {
-            return fx;
-        }
-        compileScripts( cx, scope, method );
-        fx = cachedScripts.get( requestedFunctionName );
-        return fx;
-    }
-
-    private void compileScripts( Context cx, Scriptable scope, Method method )
-        throws IOException
-    {
-        URL scriptUrl = getFunctionResource( method );
-        if( scriptUrl == null )
-        {
-            throw new IOException( "No script found for method " + method.getName() );
-        }
-
-        InputStream in = scriptUrl.openStream();
-        BufferedReader scriptReader = new BufferedReader( new InputStreamReader( in ) );
-        int lineNo = 1;
-        String classname = method.getDeclaringClass().getName();
-        while( true )
-        {
-            ScriptFragment fragment = extractFunction( scriptReader );
-            if( "".equals( fragment.script.trim() ) )
-            {
-                break;
-            }
-            String functionName = parseFunctionName( fragment.script, scriptUrl.toString() );
-            Function function = cx.compileFunction( scope, fragment.script, "<" + scriptUrl.toString() + ">", lineNo, null );
-            cachedScripts.put( classname + ":" + functionName, function );
-            lineNo = lineNo + fragment.numberOfLines;
-        }
-    }
-
-    /**
-     * Extracts the function name.
-     * <p>
-     * Since the fragment has been stripped of all comments, the first non-whitespace word to appear
-     * should be "function" and the word after that should be the function name.
-     * </p>
-     *
-     * @param script     The script snippet.
-     * @param scriptName The name of the script being parsed.
-     * @return the name of the function declared in this snippet.
-     */
-    private String parseFunctionName( String script, String scriptName )
-    {
-        // TODO optimize with hardcoded parser??
-        StringTokenizer st = new StringTokenizer( script, " \t\n\r\f(){}", false );
-        if( !st.hasMoreTokens() )
-        {
-            throw new ScriptException( "The word \"function\" was not found in script: " + scriptName );
-        }
-        String fx = st.nextToken();
-        if( !"function".equals( fx ) )
-        {
-            throw new ScriptException( "The word \"function\" was not found in script: " + scriptName );
-        }
-        if( !st.hasMoreTokens() )
-        {
-            throw new ScriptException( "Invalid syntax in: " + scriptName + "\n No function name." );
-        }
-        return st.nextToken();
-    }
-
-    /**
-     * Returns ONE function, minus comments.
-     *
-     * @param scriptReader The Reader of the script
-     * @return A ScriptFragment containing the Script text for the function, and how many lines it is.
-     * @throws IOException If a problem in the Reader occurs.
-     */
-    private ScriptFragment extractFunction( Reader scriptReader )
-        throws IOException
-    {
-        ScriptFragment fragment = new ScriptFragment();
-        boolean inString = false;
-        boolean inChar = false;
-        boolean escaped = false;
-        boolean lineComment = false;
-        boolean blockComment = false;
-        char lastCh = '\0';
-        int braceCounter = 0;
-        boolean notStarted = true;
-        int b = scriptReader.read();
-        int skip = 0;
-        while( b != -1 && ( notStarted || braceCounter > 0 ) )
-        {
-            char ch = (char) b;
-            if( !blockComment && !lineComment )
-            {
-                fragment.script = fragment.script + ch;
-                if( !escaped )
-                {
-                    if( !inString && !inChar )
-                    {
-                        if( ch == '{' )
-                        {
-                            braceCounter++;
-                            notStarted = false;
-                        }
-                        if( ch == '}' )
-                        {
-                            braceCounter--;
-                        }
-                    }
-                    if( ch == '\"' )
-                    {
-                        inString = !inString;
-                    }
-                    if( ch == '\'' )
-                    {
-                        inChar = !inChar;
-                    }
-                    if( ch == '\\' )
-                    {
-                        escaped = true;
-                    }
-                    if( ch == '\n' )
-                    {
-                        fragment.numberOfLines++;
-                    }
-                    if( ch == '/' && lastCh == '/' )
-                    {
-                        lineComment = true;
-                        fragment.script = fragment.script.substring( 0, fragment.script.length() - 2 );
-                    }
-                    if( ch == '*' && lastCh == '/' )
-                    {
-                        blockComment = true;
-                        fragment.script = fragment.script.substring( 0, fragment.script.length() - 2 );
-                    }
-                }
-                else
-                {
-                    if( ch == 'u' )
-                    {
-                        skip = 4;
-                    }
-                    else if( skip > 0 )
-                    {
-                        skip--;
-                    }
-                    else
-                    {
-                        escaped = false;
-                    }
-                }
-            }
-            else
-            {
-                if( lineComment )
-                {
-                    if( ch == '\n' )
-                    {
-                        lineComment = false;
-                    }
-                }
-                if( blockComment )
-                {
-                    if( ch == '/' && lastCh == '*' )
-                    {
-                        blockComment = false;
-                    }
-                }
-            }
-            lastCh = ch;
-            b = scriptReader.read();
-        }
-        return fragment;
-    }
-
-    private static URL getFunctionResource( Method method )
-    {
-        String scriptName = getScriptName( method );
-        Class<?> declaringClass = method.getDeclaringClass();
-        ClassLoader loader = declaringClass.getClassLoader();
-        return loader.getResource( scriptName );
-    }
-
-    private static String getScriptName( Method method )
-    {
-        Class<?> declaringClass = method.getDeclaringClass();
-        String classname = declaringClass.getName();
-        return classname.replace( '.', '/' ) + ".js";
-    }
-
-    private static class ScriptFragment
-    {
-        String script = "";
-        int numberOfLines = 0;
-    }
-
-    public static class AppliesTo
-        implements AppliesToFilter
-    {
-
-        public boolean appliesTo( Method method, Class compositeType, Class mixin, Class modelClass )
-        {
-            return getFunctionResource( method ) != null;
-        }
-
-    }
-}

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-javascript/src/main/java/org/apache/polygene/library/javascript/package.html
----------------------------------------------------------------------
diff --git a/libraries/lang-javascript/src/main/java/org/apache/polygene/library/javascript/package.html b/libraries/lang-javascript/src/main/java/org/apache/polygene/library/javascript/package.html
deleted file mode 100644
index 30d5ac6..0000000
--- a/libraries/lang-javascript/src/main/java/org/apache/polygene/library/javascript/package.html
+++ /dev/null
@@ -1,24 +0,0 @@
-<!--
-  ~  Licensed to the Apache Software Foundation (ASF) under one
-  ~  or more contributor license agreements.  See the NOTICE file
-  ~  distributed with this work for additional information
-  ~  regarding copyright ownership.  The ASF licenses this file
-  ~  to you under the Apache License, Version 2.0 (the
-  ~  "License"); you may not use this file except in compliance
-  ~  with the License.  You may obtain a copy of the License at
-  ~
-  ~       http://www.apache.org/licenses/LICENSE-2.0
-  ~
-  ~  Unless required by applicable law or agreed to in writing, software
-  ~  distributed under the License is distributed on an "AS IS" BASIS,
-  ~  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-  ~  See the License for the specific language governing permissions and
-  ~  limitations under the License.
-  ~
-  ~
-  -->
-<html>
-    <body>
-        <h2>JavaScript Language Support Library.</h2>
-    </body>
-</html>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-javascript/src/test/java/org/apache/polygene/library/javascript/DomainType.java
----------------------------------------------------------------------
diff --git a/libraries/lang-javascript/src/test/java/org/apache/polygene/library/javascript/DomainType.java b/libraries/lang-javascript/src/test/java/org/apache/polygene/library/javascript/DomainType.java
deleted file mode 100644
index ce981dc..0000000
--- a/libraries/lang-javascript/src/test/java/org/apache/polygene/library/javascript/DomainType.java
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.javascript;
-
-public interface DomainType
-{
-    String do1();
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-javascript/src/test/java/org/apache/polygene/library/javascript/HelloSpeaker.java
----------------------------------------------------------------------
diff --git a/libraries/lang-javascript/src/test/java/org/apache/polygene/library/javascript/HelloSpeaker.java b/libraries/lang-javascript/src/test/java/org/apache/polygene/library/javascript/HelloSpeaker.java
deleted file mode 100644
index f07460a..0000000
--- a/libraries/lang-javascript/src/test/java/org/apache/polygene/library/javascript/HelloSpeaker.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.javascript;
-
-import org.apache.polygene.api.mixin.Mixins;
-
-// START SNIPPET: mixin
-
-@Mixins(JavaScriptMixin.class)
-public interface HelloSpeaker
-{
-    void sayHello();
-}
-// END SNIPPET: mixin

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-javascript/src/test/java/org/apache/polygene/library/javascript/JavaScriptMixinTest.java
----------------------------------------------------------------------
diff --git a/libraries/lang-javascript/src/test/java/org/apache/polygene/library/javascript/JavaScriptMixinTest.java b/libraries/lang-javascript/src/test/java/org/apache/polygene/library/javascript/JavaScriptMixinTest.java
deleted file mode 100644
index acaa23a..0000000
--- a/libraries/lang-javascript/src/test/java/org/apache/polygene/library/javascript/JavaScriptMixinTest.java
+++ /dev/null
@@ -1,43 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.javascript;
-
-import org.junit.Assert;
-import org.junit.Test;
-import org.apache.polygene.bootstrap.AssemblyException;
-import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.test.AbstractPolygeneTest;
-
-public class JavaScriptMixinTest
-    extends AbstractPolygeneTest
-{
-    public void assemble( ModuleAssembly module )
-        throws AssemblyException
-    {
-        module.transients( DomainType.class ).withMixins( JavaScriptMixin.class );
-    }
-
-    @Test
-    public void testInvoke() throws Throwable
-    {
-        DomainType domain = transientBuilderFactory.newTransient( DomainType.class );
-        Assert.assertEquals( "do1 script \" and ' for many cases is harder.", domain.do1() );
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-javascript/src/test/resources/org/apache/polygene/library/javascript/DomainType.js
----------------------------------------------------------------------
diff --git a/libraries/lang-javascript/src/test/resources/org/apache/polygene/library/javascript/DomainType.js b/libraries/lang-javascript/src/test/resources/org/apache/polygene/library/javascript/DomainType.js
deleted file mode 100644
index a1115af..0000000
--- a/libraries/lang-javascript/src/test/resources/org/apache/polygene/library/javascript/DomainType.js
+++ /dev/null
@@ -1,33 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *  
- *       http://www.apache.org/licenses/LICENSE-2.0
- *  
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-// This is a line comment.
-
-/* A block comment should not interfere */
-function /* not even here*/ do1()
-{
-    // {
-    // { are nasty...
-    return "do1 script \" and \' for many cases is harder.";
-}
-
-function do2()
-{
-    return "}";
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/71aaa07d/libraries/lang-jruby/README.txt
----------------------------------------------------------------------
diff --git a/libraries/lang-jruby/README.txt b/libraries/lang-jruby/README.txt
deleted file mode 100644
index 31edbf4..0000000
--- a/libraries/lang-jruby/README.txt
+++ /dev/null
@@ -1,10 +0,0 @@
-
-JRuby is licensed under LGPL, and Apache Software Foundation
-doesn't allow the use of LGPL in Apache projects.
-
-Therefor, Apache Polygene\u2122 had to drop this library component, but
-it is still available for separate download at
-
-https://github.com/Qi4j/qi4j-sdk
-
-in the libraries/lang-jruby directory.


[4/5] polygene-java git commit: POLYGENE-29 - Updating docs and putting the doc support code in place.

Posted by ni...@apache.org.
POLYGENE-29 - Updating docs and putting the doc support code in place.


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/11a9d3d4
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/11a9d3d4
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/11a9d3d4

Branch: refs/heads/develop
Commit: 11a9d3d4d29d7551c810e6c971a1a5a18c85e1aa
Parents: 71aaa07
Author: niclas <ni...@spicter.com>
Authored: Sun Apr 9 12:32:51 2017 +0800
Committer: niclas <ni...@spicter.com>
Committed: Sun Apr 9 12:32:51 2017 +0800

----------------------------------------------------------------------
 libraries/scripting/src/docs/groovy.txt         | 10 ++---
 libraries/scripting/src/docs/javascript.txt     |  6 +--
 libraries/scripting/src/docs/scripting.txt      | 46 ++++++++++----------
 .../library/scripting/HelloSpeakerMixin.groovy  | 31 +++++++++++++
 .../library/scripting/HelloSpeaker.java         |  4 +-
 .../library/scripting/HelloSpeakerMixin.groovy  | 31 -------------
 .../library/scripting/HelloSpeakerTest.java     |  5 +--
 .../library/scripting/ScriptMixinTest.java      |  2 -
 .../library/scripting/HelloSpeaker.groovy       |  2 +-
 9 files changed, 67 insertions(+), 70 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/11a9d3d4/libraries/scripting/src/docs/groovy.txt
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/docs/groovy.txt b/libraries/scripting/src/docs/groovy.txt
index a277bc3..c60850c 100644
--- a/libraries/scripting/src/docs/groovy.txt
+++ b/libraries/scripting/src/docs/groovy.txt
@@ -32,7 +32,7 @@ All examples below are based on this type:
 
 [snippet,java]
 ----
-source=libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeaker.java
+source=libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
 tag=speaker
 ----
 
@@ -45,7 +45,7 @@ Having this Groovy class compiled ;
 .HelloSpeakerMixin.groovy
 [snippet,groovy]
 ----
-source=libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerMixin.groovy
+source=libraries/scripting/src/test/groovy/org/apache/polygene/library/scripting/HelloSpeakerMixin.groovy
 tag=direct
 ----
 
@@ -53,7 +53,7 @@ assemble it directly:
 
 [snippet,java]
 ----
-source=libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerTest.java
+source=libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerTest.java
 tag=direct
 ----
 
@@ -64,7 +64,7 @@ Declare a Groovy function in a resource file located in the same package as the
 .HelloSpeaker.groovy
 [snippet,groovy]
 ----
-source=libraries/lang-groovy/src/test/resources/org/apache/polygene/library/groovy/HelloSpeaker.groovy
+source=libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.groovy
 tag=script
 ----
 
@@ -72,6 +72,6 @@ Then assemble it with the normal +ScriptMixin+:
 
 [snippet,java]
 ----
-source=libraries/lang-groovy/src/test/groovy/org/apache/polygene/library/groovy/HelloSpeakerTest.java
+source=libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerTest.java
 tag=script
 ----

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/11a9d3d4/libraries/scripting/src/docs/javascript.txt
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/docs/javascript.txt b/libraries/scripting/src/docs/javascript.txt
index 7568dfb..b5f3714 100644
--- a/libraries/scripting/src/docs/javascript.txt
+++ b/libraries/scripting/src/docs/javascript.txt
@@ -26,8 +26,8 @@ For the following Polygene composite type,
 
 [snippet,java]
 ----
-source=libraries/scripting/src/test/java/org/apache/polygene/library/javascript/HelloSpeaker.java
-tag=mixin
+source=libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
+tag=speaker
 ----
 
 
@@ -35,7 +35,7 @@ we need a implementation that looks like this;
 
 [snippet,javascript]
 ----
-source=libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.js
+source=libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.js
 tag=script
 ----
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/11a9d3d4/libraries/scripting/src/docs/scripting.txt
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/docs/scripting.txt b/libraries/scripting/src/docs/scripting.txt
index 5ae5099..1dc0cdf 100644
--- a/libraries/scripting/src/docs/scripting.txt
+++ b/libraries/scripting/src/docs/scripting.txt
@@ -51,12 +51,12 @@ We welcome additional information and samples of languages that has been tried a
 .Language Support
 [options="header"]
 |=======
-| Language | Supported | Tested | Implementation
-| JavaScript | Yes | Yes | | Nashorn, built-in Java 8 and later
+| Language | Supported | Tested | License | Implementation
+| JavaScript | Yes | Yes | ? | Nashorn, built-in Java 8 and later
 | Groovy | Yes | Yes | Apache | Apache Groovy, dependency exist from this library
-| Ruby | Yes | No |  | JRuby
-| Python | Yes | No | | Jython, must use jython-standalone
-| Kotlin | Yes | No |  | Jetbrains
+| Ruby | Yes | No | (EPL|GPL|LGPL) + Ruby | JRuby
+| Python | Yes | No | https://opensource.org/licenses/Python-2.0[Python] | Jython, must use jython-standalone
+| Kotlin | Yes | No |  Apache | Jetbrains
 | Lua | Yes | No | MIT | luaj.org,
 | Clojure | Yes | No | CPL | https://github.com/pmf/clojure-jsr223
 |=======
@@ -67,24 +67,24 @@ The following languages may or may not be supported, and was found at https://ja
 [options="header"]
 |=======
 | Language | Location | License
-|beanshell
-|ejs
-|freemarker
-|jacl
-|jaskell
-|jawk
-|jelly
-|jep
-|jexl
-|jst
-|judo
-|juel
-|ognl
-|pnuts
-|scheme
-|velocity
-|xpath
-|xslt
+|beanshell | |
+|ejs | |
+|freemarker |  https://freemarker.apache.org | Apache
+|jacl | |
+|jaskell | https://github.com/MarchLiu/jaskell | MIT
+|jawk | |
+|jelly | | Apache
+|jep | |
+|jexl | https://commons.apache.org/jexl/ | Apache
+|jst | |
+|judo | |
+|juel | |
+|ognl | https://commons.apache.org/ognl/ | Apache
+|pnuts | |
+|scheme | http://sisc-scheme.org/ | (MPLv1.1|GPLv2)
+|velocity | https://velocity.apache.org | Apache
+|xpath | |
+|xslt | |
 |=======
 
 .Not Compatible Languages

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/11a9d3d4/libraries/scripting/src/test/groovy/org/apache/polygene/library/scripting/HelloSpeakerMixin.groovy
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/groovy/org/apache/polygene/library/scripting/HelloSpeakerMixin.groovy b/libraries/scripting/src/test/groovy/org/apache/polygene/library/scripting/HelloSpeakerMixin.groovy
new file mode 100644
index 0000000..ad3113b
--- /dev/null
+++ b/libraries/scripting/src/test/groovy/org/apache/polygene/library/scripting/HelloSpeakerMixin.groovy
@@ -0,0 +1,31 @@
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *       http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing, software
+ *  distributed under the License is distributed on an "AS IS" BASIS,
+ *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ *  See the License for the specific language governing permissions and
+ *  limitations under the License.
+ *
+ *
+ */
+package org.apache.polygene.library.scripting;
+
+// START SNIPPET: direct
+class HelloSpeakerMixin
+    implements HelloSpeaker
+{
+
+    String sayHello() {
+        "Hello there, Groovy"
+    }
+}
+// END SNIPPET: direct

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/11a9d3d4/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
index 967332b..101d7e9 100644
--- a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
+++ b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
@@ -21,11 +21,11 @@ package org.apache.polygene.library.scripting;
 
 import org.apache.polygene.api.mixin.Mixins;
 
-// START SNIPPET: mixin
+// START SNIPPET: speaker
 
 @Mixins(ScriptMixin.class)
 public interface HelloSpeaker
 {
     String sayHello();
 }
-// END SNIPPET: mixin
+// END SNIPPET: speaker

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/11a9d3d4/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerMixin.groovy
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerMixin.groovy b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerMixin.groovy
deleted file mode 100644
index ad3113b..0000000
--- a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerMixin.groovy
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *       http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing, software
- *  distributed under the License is distributed on an "AS IS" BASIS,
- *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- *  See the License for the specific language governing permissions and
- *  limitations under the License.
- *
- *
- */
-package org.apache.polygene.library.scripting;
-
-// START SNIPPET: direct
-class HelloSpeakerMixin
-    implements HelloSpeaker
-{
-
-    String sayHello() {
-        "Hello there, Groovy"
-    }
-}
-// END SNIPPET: direct

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/11a9d3d4/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerTest.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerTest.java b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerTest.java
index de03c4c..6ae5436 100644
--- a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerTest.java
+++ b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeakerTest.java
@@ -19,7 +19,6 @@
  */
 package org.apache.polygene.library.scripting;
 
-import org.junit.Assert;
 import org.junit.Test;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.ModuleAssembly;
@@ -47,10 +46,10 @@ public class HelloSpeakerTest extends AbstractPolygeneTest
             public void assemble( ModuleAssembly module )
                 throws AssemblyException
             {
-                module.transients( HelloSpeaker.class ).setMetaInfo( Scripting.GROOVY ).withMixins( ScriptMixin.class );
+                module.values( HelloSpeaker.class ).setMetaInfo( Scripting.GROOVY ).withMixins( ScriptMixin.class );
             }
         };
-        HelloSpeaker speaker = assembler.module().newTransient( HelloSpeaker.class );
+        HelloSpeaker speaker = assembler.module().newValue( HelloSpeaker.class );
         assertThat( speaker.sayHello(), equalTo("Hello, Groovy") );
         // END SNIPPET: script
     }

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/11a9d3d4/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/ScriptMixinTest.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/ScriptMixinTest.java b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/ScriptMixinTest.java
index 75b6085..df51580 100644
--- a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/ScriptMixinTest.java
+++ b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/ScriptMixinTest.java
@@ -33,8 +33,6 @@ import org.apache.polygene.api.value.ValueBuilderFactory;
 import org.apache.polygene.bootstrap.AssemblyException;
 import org.apache.polygene.bootstrap.LayerAssembly;
 import org.apache.polygene.bootstrap.ModuleAssembly;
-import org.apache.polygene.runtime.structure.LayerModel;
-import org.apache.polygene.runtime.structure.ModuleModel;
 import org.apache.polygene.test.AbstractPolygeneTest;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/11a9d3d4/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.groovy
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.groovy b/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.groovy
index 1c0b7a8..69e5cfe 100644
--- a/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.groovy
+++ b/libraries/scripting/src/test/resources/org/apache/polygene/library/scripting/HelloSpeaker.groovy
@@ -17,7 +17,7 @@
  *
  *
  */
-package org.apache.polygene.library.groovy
+package org.apache.polygene.library.scripting
 
 // START SNIPPET: script
 def sayHello() {


[5/5] polygene-java git commit: POLYGENE-29 - Doc fixes

Posted by ni...@apache.org.
POLYGENE-29 - Doc fixes


Project: http://git-wip-us.apache.org/repos/asf/polygene-java/repo
Commit: http://git-wip-us.apache.org/repos/asf/polygene-java/commit/72ab774a
Tree: http://git-wip-us.apache.org/repos/asf/polygene-java/tree/72ab774a
Diff: http://git-wip-us.apache.org/repos/asf/polygene-java/diff/72ab774a

Branch: refs/heads/develop
Commit: 72ab774a946542237edcbd8c824d8caf29dd1592
Parents: 11a9d3d
Author: niclas <ni...@spicter.com>
Authored: Sun Apr 9 12:54:31 2017 +0800
Committer: niclas <ni...@spicter.com>
Committed: Sun Apr 9 12:54:31 2017 +0800

----------------------------------------------------------------------
 libraries/scripting/src/docs/javascript.txt                       | 3 ++-
 .../java/org/apache/polygene/library/scripting/HelloSpeaker.java  | 2 ++
 2 files changed, 4 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/polygene-java/blob/72ab774a/libraries/scripting/src/docs/javascript.txt
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/docs/javascript.txt b/libraries/scripting/src/docs/javascript.txt
index b5f3714..493e5a9 100644
--- a/libraries/scripting/src/docs/javascript.txt
+++ b/libraries/scripting/src/docs/javascript.txt
@@ -31,7 +31,8 @@ tag=speaker
 ----
 
 
-we need a implementation that looks like this;
+we need a implementation in a resource file (visible on classpath) named +org/apache/polygene/library/scripting/HelloSpeaker.js+
+that looks like this;
 
 [snippet,javascript]
 ----

http://git-wip-us.apache.org/repos/asf/polygene-java/blob/72ab774a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
----------------------------------------------------------------------
diff --git a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
index 101d7e9..9e36ea1 100644
--- a/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
+++ b/libraries/scripting/src/test/java/org/apache/polygene/library/scripting/HelloSpeaker.java
@@ -17,7 +17,9 @@
  *
  *
  */
+// START SNIPPET: speaker
 package org.apache.polygene.library.scripting;
+// END SNIPPET: speaker
 
 import org.apache.polygene.api.mixin.Mixins;