[ 
https://issues.apache.org/jira/browse/TINKERPOP-1489?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16311484#comment-16311484
 ] 

ASF GitHub Bot commented on TINKERPOP-1489:
-------------------------------------------

Github user spmallette commented on a diff in the pull request:

    https://github.com/apache/tinkerpop/pull/695#discussion_r159677279
  
    --- Diff: gremlin-javascript/pom.xml ---
    @@ -0,0 +1,366 @@
    +<!--
    +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.
    +-->
    +<project xmlns="http://maven.apache.org/POM/4.0.0";
    +         xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
    +         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
    +    <modelVersion>4.0.0</modelVersion>
    +    <parent>
    +        <groupId>org.apache.tinkerpop</groupId>
    +        <artifactId>tinkerpop</artifactId>
    +        <version>3.2.7-SNAPSHOT</version>
    +    </parent>
    +    <artifactId>gremlin-javascript</artifactId>
    +    <name>Apache TinkerPop :: Gremlin Javascript</name>
    +    <dependencies>
    +        <dependency>
    +            <groupId>org.apache.tinkerpop</groupId>
    +            <artifactId>gremlin-core</artifactId>
    +            <version>${project.version}</version>
    +        </dependency>
    +        <dependency>
    +            <groupId>org.apache.tinkerpop</groupId>
    +            <artifactId>tinkergraph-gremlin</artifactId>
    +            <version>${project.version}</version>
    +            <scope>test</scope>
    +        </dependency>
    +        <dependency>
    +            <groupId>org.apache.tinkerpop</groupId>
    +            <artifactId>gremlin-test</artifactId>
    +            <version>${project.version}</version>
    +            <scope>test</scope>
    +        </dependency>
    +        <dependency>
    +            <groupId>org.apache.tinkerpop</groupId>
    +            <artifactId>gremlin-server</artifactId>
    +            <version>${project.version}</version>
    +            <scope>test</scope>
    +        </dependency>
    +        <dependency>
    +            <groupId>org.slf4j</groupId>
    +            <artifactId>slf4j-log4j12</artifactId>
    +            <scope>test</scope>
    +        </dependency>
    +    </dependencies>
    +    <properties>
    +        <maven.test.skip>false</maven.test.skip>
    +        <skipTests>${maven.test.skip}</skipTests>
    +        
<gremlin.server.dir>${project.parent.basedir}/gremlin-server</gremlin.server.dir>
    +    </properties>
    +    <build>
    +        <directory>${basedir}/target</directory>
    +        <finalName>${project.artifactId}-${project.version}</finalName>
    +        <plugins>
    +            <plugin>
    +                <groupId>org.apache.maven.plugins</groupId>
    +                <artifactId>maven-install-plugin</artifactId>
    +                <configuration>
    +                    <skip>true</skip>
    +                </configuration>
    +            </plugin>
    +            <plugin>
    +                <!--
    +                Use gmavenplus-plugin to:
    +                    - Generate js sources
    +                    - Start and stop gremlin server for integration tests
    +                -->
    +                <groupId>org.codehaus.gmavenplus</groupId>
    +                <artifactId>gmavenplus-plugin</artifactId>
    +                <dependencies>
    +                    <dependency>
    +                        <groupId>log4j</groupId>
    +                        <artifactId>log4j</artifactId>
    +                        <version>1.2.17</version>
    +                        <scope>runtime</scope>
    +                    </dependency>
    +                    <dependency>
    +                        <groupId>org.apache.tinkerpop</groupId>
    +                        <artifactId>gremlin-server</artifactId>
    +                        <version>${project.version}</version>
    +                        <scope>runtime</scope>
    +                    </dependency>
    +                    <dependency>
    +                        <groupId>org.codehaus.groovy</groupId>
    +                        <artifactId>groovy-ant</artifactId>
    +                        <version>${groovy.version}</version>
    +                    </dependency>
    +                </dependencies>
    +                <executions>
    +                    <execution>
    +                        <id>generate-javascript</id>
    +                        <phase>generate-sources</phase>
    +                        <goals>
    +                            <goal>execute</goal>
    +                        </goals>
    +                        <configuration>
    +                            <scripts>
    +                                <script><![CDATA[
    +import org.apache.tinkerpop.gremlin.jsr223.CoreImports
    +import org.apache.tinkerpop.gremlin.process.traversal.TraversalSource
    +import 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversal
    +import 
org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.GraphTraversalSource
    +import org.apache.tinkerpop.gremlin.process.traversal.P
    +import org.apache.tinkerpop.gremlin.process.traversal.dsl.graph.__
    +import java.lang.reflect.Modifier
    +
    +def toJsMap = ["in": "in_",
    +               "from": "from_"]
    +
    +def toJs = { symbol -> toJsMap.getOrDefault(symbol, symbol) }
    +
    +def decapitalize = {
    +    String string = it;
    +    if (string == null || string.length() == 0) {
    +        return string;
    +    }
    +    def c = string.toCharArray();
    +    c[0] = Character.toLowerCase(c[0]);
    +    return new String(c);
    +}
    +
    +def determineVersion = {
    +    def env = System.getenv()
    +    def mavenVersion = env.containsKey("TP_RELEASE_VERSION") ? 
env.get("JS_RELEASE_VERSION") : '${project.version}'
    +    return mavenVersion.replace("-SNAPSHOT", "-alpha1")
    +}
    +
    +def binding = ["enums": CoreImports.getClassImports()
    +                                 .findAll { 
Enum.class.isAssignableFrom(it) }
    +                                 .sort { a, b -> a.getSimpleName() <=> 
b.getSimpleName() },
    +               "pmethods": P.class.getMethods().
    +                                 findAll { 
Modifier.isStatic(it.getModifiers()) }.
    +                                 findAll { 
P.class.isAssignableFrom(it.returnType) }.
    +                                 collect { it.name }.
    +                                 unique().
    +                                 sort { a, b -> a <=> b },
    +               "sourceStepMethods": GraphTraversalSource.getMethods(). // 
SOURCE STEPS
    +                                        findAll { 
GraphTraversalSource.class.equals(it.returnType) }.
    +                                        findAll {
    +                                            !it.name.equals("clone") &&
    +                                                    // Use hardcoded name 
to be for forward-compatibility
    +                                                    
!it.name.equals("withBindings") &&
    +                                                    
!it.name.equals(TraversalSource.Symbols.withRemote) &&
    +                                                    
!it.name.equals(TraversalSource.Symbols.withComputer)
    +                                        }.
    +                                        collect { it.name }.
    +                                        unique().
    +                                        sort { a, b -> a <=> b },
    +               "sourceSpawnMethods": GraphTraversalSource.getMethods(). // 
SPAWN STEPS
    +                                        findAll { 
GraphTraversal.class.equals(it.returnType) }.
    +                                        collect { it.name }.
    +                                        unique().
    +                                        sort { a, b -> a <=> b },
    +               "graphStepMethods": GraphTraversal.getMethods().
    +                                        findAll { 
GraphTraversal.class.equals(it.returnType) }.
    +                                        findAll { !it.name.equals("clone") 
&& !it.name.equals("iterate") }.
    +                                        collect { it.name }.
    +                                        unique().
    +                                        sort { a, b -> a <=> b },
    +               "anonStepMethods": __.class.getMethods().
    +                                        findAll { 
GraphTraversal.class.equals(it.returnType) }.
    +                                        findAll { 
Modifier.isStatic(it.getModifiers()) }.
    +                                        findAll { !it.name.equals("__") && 
!it.name.equals("start") }.
    +                                        collect { it.name }.
    +                                        unique().
    +                                        sort { a, b -> a <=> b },
    +               "toJs": toJs,
    +               "version": determineVersion(),
    +               "decapitalize": decapitalize]
    +
    +def engine = new groovy.text.GStringTemplateEngine()
    +def graphTraversalTemplate = engine.createTemplate(new 
File('${project.basedir}/glv/GraphTraversalSource.template')).make(binding)
    +def graphTraversalFile = new 
File('${project.basedir}/src/main/javascript/gremlin-javascript/lib/process/graph-traversal.js')
    +graphTraversalFile.newWriter().withWriter{ it << graphTraversalTemplate }
    +
    +def traversalTemplate = engine.createTemplate(new 
File('${project.basedir}/glv/TraversalSource.template')).make(binding)
    +def traversalFile = new 
File('${project.basedir}/src/main/javascript/gremlin-javascript/lib/process/traversal.js')
    +traversalFile.newWriter().withWriter{ it << traversalTemplate }
    +
    +def packageJsonTemplate = engine.createTemplate(new 
File('${project.basedir}/glv/PackageJson.template')).make(binding)
    +def packageJsonFile = new 
File('${project.basedir}/src/main/javascript/gremlin-javascript/package.json')
    +packageJsonFile.newWriter().withWriter{ it << packageJsonTemplate }
    +]]>                                     </script>
    +                            </scripts>
    +                        </configuration>
    +                    </execution>
    +                    <execution>
    +                        <id>gremlin-server-start</id>
    +                        <phase>pre-integration-test</phase>
    +                        <goals>
    +                            <goal>execute</goal>
    +                        </goals>
    +                        <configuration>
    +                            <properties>
    +                                <property>
    +                                    <name>skipTests</name>
    +                                    <value>${skipTests}</value>
    +                                </property>
    +                                <property>
    +                                    <name>python</name>
    +                                    <value>false</value>
    +                                </property>
    +                                <property>
    +                                    <name>gremlinServerDir</name>
    +                                    <value>${gremlin.server.dir}</value>
    +                                </property>
    +                                <property>
    +                                    <name>settingsFile</name>
    +                                    
<value>${gremlin.server.dir}/src/test/resources/org/apache/tinkerpop/gremlin/driver/remote/gremlin-server-integration.yaml</value>
    +                                </property>
    +                                <property>
    +                                    <name>executionName</name>
    +                                    <value>${project.name}</value>
    +                                </property>
    +                                <property>
    +                                    <name>projectBaseDir</name>
    +                                    <value>${project.basedir}</value>
    +                                </property>
    +                            </properties>
    +                            <scripts>
    +                                
<script>${gremlin.server.dir}/src/test/scripts/test-server-start.groovy</script>
    +                            </scripts>
    +                        </configuration>
    +                    </execution>
    +                    <execution>
    +                        <id>gremlin-server-stop</id>
    +                        <phase>post-integration-test</phase>
    +                        <goals>
    +                            <goal>execute</goal>
    +                        </goals>
    +                        <configuration>
    +                            <properties>
    +                                <property>
    +                                    <name>skipTests</name>
    +                                    <value>${skipTests}</value>
    +                                </property>
    +                                <property>
    +                                    <name>executionName</name>
    +                                    <value>${project.name}</value>
    +                                </property>
    +                            </properties>
    +                            <scripts>
    +                                
<script>${gremlin.server.dir}/src/test/scripts/test-server-stop.groovy</script>
    +                            </scripts>
    +                        </configuration>
    +                    </execution>
    +                </executions>
    +            </plugin>
    +            <plugin>
    +                <groupId>org.apache.maven.plugins</groupId>
    +                <artifactId>maven-clean-plugin</artifactId>
    +                <version>3.0.0</version>
    +                <executions>
    +                    <execution>
    +                        <goals>
    +                            <goal>clean</goal>
    +                        </goals>
    +                    </execution>
    +                </executions>
    +            </plugin>
    +            <plugin>
    +                <groupId>com.github.eirslett</groupId>
    +                <artifactId>frontend-maven-plugin</artifactId>
    +                <version>1.4</version>
    +                <executions>
    +                    <execution>
    +                        <id>install node and npm</id>
    +                        <phase>generate-test-resources</phase>
    +                        <goals>
    +                            <goal>install-node-and-npm</goal>
    +                        </goals>
    +                    </execution>
    +                    <execution>
    +                        <id>npm install</id>
    +                        <phase>generate-test-resources</phase>
    +                        <goals>
    +                            <goal>npm</goal>
    +                        </goals>
    +                        <configuration>
    +                            <arguments>install</arguments>
    +                        </configuration>
    +                    </execution>
    +                    <execution>
    +                        <id>npm test</id>
    +                        <phase>integration-test</phase>
    +                        <goals>
    +                            <goal>npm</goal>
    +                        </goals>
    +                        <configuration>
    +                            <arguments>test</arguments>
    +                            <failOnError>true</failOnError>
    +                        </configuration>
    +                    </execution>
    +                    <execution>
    +                        <id>npm test gherkin features</id>
    +                        <phase>integration-test</phase>
    +                        <goals>
    +                            <goal>npm</goal>
    +                        </goals>
    +                        <configuration>
    +                            <arguments>run-script features</arguments>
    +                            <failOnError>true</failOnError>
    +                        </configuration>
    +                    </execution>
    +                </executions>
    +                <configuration>
    +                    <skip>${skipIntegrationTests}</skip>
    +                    
<workingDirectory>src/main/javascript/gremlin-javascript</workingDirectory>
    +                    <nodeVersion>v4.8.3</nodeVersion>
    +                </configuration>
    +            </plugin>
    +        </plugins>
    +    </build>
    +    <profiles>
    +        <!--
    +        Provides a way to deploy the gremlin-javascript GLV to npm. This 
cannot be part of the standard maven execution
    +        because npm does not have a staging environment like sonatype for 
releases. As soon as the release is
    +        published it is public. In our release workflow, deploy occurs 
prior to vote on the release and we can't
    +        make this stuff public until the vote is over.
    +        -->
    +        <profile>
    +            <id>glv-javascript-deploy</id>
    +            <activation>
    +                <activeByDefault>false</activeByDefault>
    +            </activation>
    +            <build>
    +                <plugins>
    --- End diff --
    
    is there any special configuration required in the release manager's local 
environment for this to work? Either way, It would be a massive help if you 
could provide a "Javascript Environment" section in the dev docs here:
    
    http://tinkerpop.apache.org/docs/current/dev/developer/#system-configuration


> Provide a Javascript Gremlin Language Variant
> ---------------------------------------------
>
>                 Key: TINKERPOP-1489
>                 URL: https://issues.apache.org/jira/browse/TINKERPOP-1489
>             Project: TinkerPop
>          Issue Type: Improvement
>          Components: javascript
>    Affects Versions: 3.2.5
>            Reporter: Jorge Bay
>
> It would be nice to have a Javascript Gremlin Language Variant that could 
> work with any ES5 runtime, specially the ones that support 
> [CommonJs|http://requirejs.org/docs/commonjs.html], like Node.js.
> Nashorn, the engine shipped with JDK 8+, does not implement CommonJs but 
> provides [additional 
> extensions|https://wiki.openjdk.java.net/display/Nashorn/Nashorn+extensions] 
> making modular JavaScript possible. Nashorn should be supported in order to 
> run glv tests under the same infrastructure (JDK8).



--
This message was sent by Atlassian JIRA
(v6.4.14#64029)

Reply via email to