- Made the build for the exmaples create uber-jars that contain all dependencies.
- Added a sample start script that is able to start an example on mac/linux
diff --git a/pom.xml b/pom.xml
index 488f9a5..2ecaf18 100644
--- a/pom.xml
+++ b/pom.xml
@@ -42,4 +42,115 @@
<module>utils</module>
</modules>
+ <build>
+ <plugins>
+ <!--
+ Create an additional version of the jar containing all dependencies.
+ The file will have the suffix "uber".
+ -->
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-shade-plugin</artifactId>
+ <version>3.0.0</version>
+ <executions>
+ <execution>
+ <phase>package</phase>
+ <goals>
+ <goal>shade</goal>
+ </goals>
+ <configuration>
+ <createDependencyReducedPom>false</createDependencyReducedPom>
+ <outputFile>${project.build.directory}/${project.artifactId}-${project.version}-uber.jar</outputFile>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+
+ <dependencies>
+ <!--
+ In the examples we want this lib to be included,
+ so we change the scope from 'provided' to 'compile'.
+ -->
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ <version>${slf4j.version}</version>
+ <scope>compile</scope>
+ </dependency>
+ </dependencies>
+
+ <profiles>
+ <!--
+ This defines a self-activating profile which is only enabled for
+ for projects that have a src/main/java directory (effectivley excludes
+ it from the current pom module.
+ -->
+ <!--profile>
+ <id>generate-classpath</id>
+ <activation>
+ <file>
+ <exists>src/main/java</exists>
+ </file>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-dependency-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>dump-dependency-tree</id>
+ <phase>generate-resources</phase>
+ <goals>
+ <goal>tree</goal>
+ </goals>
+ <configuration>
+ <outputFile>${project.build.directory}/dependency-tree.graphml</outputFile>
+ <outputType>graphml</outputType>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.codehaus.mojo</groupId>
+ <artifactId>xml-maven-plugin</artifactId>
+ <version>1.0.1</version>
+ <executions>
+ <execution>
+ <id>transform-dependency-tree</id>
+ <goals>
+ <goal>transform</goal>
+ </goals>
+ <configuration>
+ <transformationSets>
+ <transformationSet>
+ <file>${project.build.directory}/dependency-tree.graphml</file>
+ <stylesheet>${project.basedir}/../src/main/xslt/classpath.xsl</stylesheet>
+ <parameters>
+ <parameter>
+ <name>groupId</name>
+ <value>${project.groupId}</value>
+ </parameter>
+ <parameter>
+ <name>artifactId</name>
+ <value>${project.artifactId}</value>
+ </parameter>
+ <parameter>
+ <name>version</name>
+ <value>${project.version}</value>
+ </parameter>
+ </parameters>
+ </transformationSet>
+ </transformationSets>
+ </configuration>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile-->
+ </profiles>
+
</project>
\ No newline at end of file
diff --git a/src/main/xslt/classpath.xsl b/src/main/xslt/classpath.xsl
new file mode 100644
index 0000000..bc601eb
--- /dev/null
+++ b/src/main/xslt/classpath.xsl
@@ -0,0 +1,67 @@
+<?xml version="1.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.
+
+-->
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:grphml="http://graphml.graphdrawing.org/xmlns"
+ xmlns:yFiles="http://www.yworks.com/xml/graphml"
+ exclude-result-prefixes="grphml yFiles"
+ version="1.0">
+
+ <xsl:param name="groupId"/>
+ <xsl:param name="artifactId"/>
+ <xsl:param name="version"/>
+
+ <xsl:output media-type="text" omit-xml-declaration="yes"/>
+ <!--xsl:output indent="yes"/-->
+
+ <xsl:template match="/grphml:graphml">
+ <!-- Calculate the name of the current module. This will help find the starting point -->
+ <xsl:variable name="nodeName" select="concat($groupId,':', $artifactId, ':jar:', $version)"/>
+ <!-- Start outputting the classpath starting with the current modules node -->
+ <xsl:variable name="rootNode" select="grphml:graph/grphml:node[grphml:data/yFiles:ShapeNode/yFiles:NodeLabel = $nodeName]"/>
+
+ <xsl:call-template name="processNode">
+ <xsl:with-param name="currentNode" select="$rootNode"/>
+ <xsl:with-param name="addedNodeIds"/>
+ </xsl:call-template>
+ </xsl:template>
+
+ <xsl:template name="processNode">
+ <xsl:param name="currentNode"/>
+ <xsl:param name="addedNodeIds"/>
+ <xsl:variable name="currentNodeId" select="$currentNode/@id"/>
+ <xsl:if test="not(contains($addedNodeIds, concat('|', $currentNodeId, '|')))">
+ <xsl:variable name="newAddedNodeIds"><xsl:if test="string-length($addedNodeIds) = 0">|</xsl:if><xsl:value-of select="$addedNodeIds"/><xsl:value-of select="$currentNodeId"/>|</xsl:variable>
+ <xsl:variable name="outgoingCompileDependencyIds" select="//grphml:edge[(@source = $currentNodeId) and ((grphml:data/yFiles:PolyLineEdge/yFiles:EdgeLabel = 'compile') or (grphml:data/yFiles:PolyLineEdge/yFiles:EdgeLabel = 'provided'))]/@target"/>
+ <xsl:variable name="outgoingCompileDependencyName" select="$currentNode/grphml:data/yFiles:ShapeNode/yFiles:NodeLabel/text()"/>
+ <xsl:variable name="outgoingCompileDependencyGroupId" select="substring-before($outgoingCompileDependencyName, ':')"/>
+ <xsl:variable name="outgoingCompileDependencyArtifactId" select="substring-before(substring-after($outgoingCompileDependencyName, ':'), ':')"/>
+ <xsl:variable name="outgoingCompileDependencyVersion" select="substring-before(substring-after(substring-after(substring-after($outgoingCompileDependencyName, ':'), ':'), ':'), ':')"/>
+ <xsl:if test="not(starts-with($outgoingCompileDependencyGroupId, 'org.apache.edgent.'))">ext/</xsl:if><xsl:value-of select="concat($outgoingCompileDependencyArtifactId, '-', $outgoingCompileDependencyVersion, '.jar')"/>,<xsl:for-each select="$outgoingCompileDependencyIds">
+ <xsl:variable name="currentDependentNodeId" select="."/>
+ <xsl:variable name="currentDependentNode" select="//grphml:node[@id = $currentDependentNodeId]"/>
+ <xsl:call-template name="processNode">
+ <xsl:with-param name="currentNode" select="$currentDependentNode"/>
+ <xsl:with-param name="addedNodeIds" select="$newAddedNodeIds"/>
+ </xsl:call-template>
+ </xsl:for-each>
+ </xsl:if>
+ </xsl:template>
+
+</xsl:stylesheet>
\ No newline at end of file
diff --git a/topology/run-sample.sh b/topology/run-sample.sh
new file mode 100755
index 0000000..6267bf6
--- /dev/null
+++ b/topology/run-sample.sh
@@ -0,0 +1,20 @@
+#!/usr/bin/env bash
+#
+# 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.
+#
+
+java -cp target/edgent-samples-topology-1.2.0-SNAPSHOT-uber.jar org.apache.edgent.samples.topology.HelloEdgent
+