You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@edgent.apache.org by cd...@apache.org on 2017/11/21 11:51:25 UTC
[45/50] incubator-edgent-samples git commit: getting started updates
getting started updates
- fix mvnw in samples/template
- add TempSensorSample
Project: http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/commit/2b267b2d
Tree: http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/tree/2b267b2d
Diff: http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/diff/2b267b2d
Branch: refs/heads/develop
Commit: 2b267b2d2a99f3d0f1dcae04bb1686f9d6cce80d
Parents: b4ae7a8
Author: Dale LaBossiere <dl...@us.ibm.com>
Authored: Wed Nov 1 15:04:29 2017 -0400
Committer: Dale LaBossiere <dl...@us.ibm.com>
Committed: Wed Nov 1 15:04:29 2017 -0400
----------------------------------------------------------------------
README.md | 6 +-
.../.mvn/wrapper/MavenWrapperDownloader.java | 110 +++++++++++++++++++
template/.mvn/wrapper/maven-wrapper.properties | 20 ++++
template/README.md | 2 +-
template/app-run.sh | 15 ++-
topology/run-sample.sh | 1 +
.../edgent/samples/topology/TempSensor.java | 44 ++++++++
.../samples/topology/TempSensorApplication.java | 44 ++++++++
8 files changed, 239 insertions(+), 3 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/2b267b2d/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index 09079d4..6bd26ed 100644
--- a/README.md
+++ b/README.md
@@ -172,7 +172,11 @@ Eclipse in the usual manner. E.g.,
<pre>
HelloEdgent Basic mechanics of declaring a topology and executing
it. Prints Hello Edgent! to standard output.
-
+
+TempSensorApplication A basic Edgent application used by the Edgent
+ "Getting Started Guide":
+ https://edgent.apache.org/docs/edgent-getting-started.html
+
PeriodicSource Create a stream by polling a random number generator
for a new value every second and then prints out the
raw tuple value and a filtered and transformed stream.
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/2b267b2d/template/.mvn/wrapper/MavenWrapperDownloader.java
----------------------------------------------------------------------
diff --git a/template/.mvn/wrapper/MavenWrapperDownloader.java b/template/.mvn/wrapper/MavenWrapperDownloader.java
new file mode 100644
index 0000000..44f8e00
--- /dev/null
+++ b/template/.mvn/wrapper/MavenWrapperDownloader.java
@@ -0,0 +1,110 @@
+/*
+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.
+*/
+
+import java.net.*;
+import java.io.*;
+import java.nio.channels.*;
+import java.util.Properties;
+
+public class MavenWrapperDownloader {
+
+ /**
+ * Default URL to download the maven-wrapper.jar from, if no 'downloadUrl' is provided.
+ */
+ private static final String DEFAULT_DOWNLOAD_URL =
+ "https://repo1.maven.org/maven2/io/takari/maven-wrapper/0.2.1/maven-wrapper-0.2.1.jar";
+
+ /**
+ * Path to the maven-wrapper.properties file, which might contain a downloadUrl property to
+ * use instead of the default one.
+ */
+ private static final String MAVEN_WRAPPER_PROPERTIES_PATH =
+ ".mvn/wrapper/maven-wrapper.properties";
+
+ /**
+ * Path where the maven-wrapper.jar will be saved to.
+ */
+ private static final String MAVEN_WRAPPER_JAR_PATH =
+ ".mvn/wrapper/maven-wrapper.jar";
+
+ /**
+ * Name of the property which should be used to override the default download url for the wrapper.
+ */
+ private static final String PROPERTY_NAME_WRAPPER_URL = "wrapperUrl";
+
+ public static void main(String args[]) {
+ System.out.println("- Downloader started");
+ File baseDirectory = new File(args[0]);
+ System.out.println("- Using base directory: " + baseDirectory.getAbsolutePath());
+
+ // If the maven-wrapper.properties exists, read it and check if it contains a custom
+ // wrapperUrl parameter.
+ File mavenWrapperPropertyFile = new File(baseDirectory, MAVEN_WRAPPER_PROPERTIES_PATH);
+ String url = DEFAULT_DOWNLOAD_URL;
+ if(mavenWrapperPropertyFile.exists()) {
+ FileInputStream mavenWrapperPropertyFileInputStream = null;
+ try {
+ mavenWrapperPropertyFileInputStream = new FileInputStream(mavenWrapperPropertyFile);
+ Properties mavenWrapperProperties = new Properties();
+ mavenWrapperProperties.load(mavenWrapperPropertyFileInputStream);
+ url = mavenWrapperProperties.getProperty(PROPERTY_NAME_WRAPPER_URL, url);
+ } catch (IOException e) {
+ System.out.println("- ERROR loading '" + MAVEN_WRAPPER_PROPERTIES_PATH + "'");
+ } finally {
+ try {
+ if(mavenWrapperPropertyFileInputStream != null) {
+ mavenWrapperPropertyFileInputStream.close();
+ }
+ } catch (IOException e) {
+ // Ignore ...
+ }
+ }
+ }
+ System.out.println("- Downloading from: : " + url);
+
+ File outputFile = new File(baseDirectory.getAbsolutePath(), MAVEN_WRAPPER_JAR_PATH);
+ if(!outputFile.getParentFile().exists()) {
+ if(!outputFile.getParentFile().mkdirs()) {
+ System.out.println(
+ "- ERROR creating output direcrory '" + outputFile.getParentFile().getAbsolutePath() + "'");
+ }
+ }
+ System.out.println("- Downloading to: " + outputFile.getAbsolutePath());
+ try {
+ downloadFileFromURL(url, outputFile);
+ System.out.println("Done");
+ System.exit(0);
+ } catch (Throwable e) {
+ System.out.println("- Error downloading");
+ e.printStackTrace();
+ System.exit(1);
+ }
+ }
+
+ private static void downloadFileFromURL(String urlString, File destination) throws Exception {
+ URL website = new URL(urlString);
+ ReadableByteChannel rbc;
+ rbc = Channels.newChannel(website.openStream());
+ FileOutputStream fos = new FileOutputStream(destination);
+ fos.getChannel().transferFrom(rbc, 0, Long.MAX_VALUE);
+ fos.close();
+ rbc.close();
+ }
+
+}
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/2b267b2d/template/.mvn/wrapper/maven-wrapper.properties
----------------------------------------------------------------------
diff --git a/template/.mvn/wrapper/maven-wrapper.properties b/template/.mvn/wrapper/maven-wrapper.properties
new file mode 100644
index 0000000..7e8f382
--- /dev/null
+++ b/template/.mvn/wrapper/maven-wrapper.properties
@@ -0,0 +1,20 @@
+# 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.
+
+distributionUrl=https://repo1.maven.org/maven2/org/apache/maven/apache-maven/3.5.0/apache-maven-3.5.0-bin.zip
+
+#wrapperUrl=https://repo1.maven.org/maven2/io/takari/maven-wrapper/0.2.1/maven-wrapper-0.2.1.jar
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/2b267b2d/template/README.md
----------------------------------------------------------------------
diff --git a/template/README.md b/template/README.md
index a0763fd..365dc46 100644
--- a/template/README.md
+++ b/template/README.md
@@ -1,6 +1,6 @@
An Edgent Application template project.
-Clone this template project to start your Edgent application project.
+Clone this template project folder to create your Edgent application project.
The project's pom supports
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/2b267b2d/template/app-run.sh
----------------------------------------------------------------------
diff --git a/template/app-run.sh b/template/app-run.sh
index 996bfbb..8437275 100755
--- a/template/app-run.sh
+++ b/template/app-run.sh
@@ -20,10 +20,23 @@ APP_DIR=.
UBER_JAR=`echo ${APP_DIR}/target/*-uber.jar`
+FQ_MAIN_CLASS=com.mycompany.app.TemplateApp
+
+USAGE="usage: [--main <main-class>] [<args...>]"
+
+if [ "$1" = "--main" ]; then
+ shift;
+ if [ $# = 0 ]; then
+ echo ${USAGE}
+ exit 1;
+ fi
+ FQ_MAIN_CLASS=$1; shift
+fi
+
# Runs the application
#
# ./app-run.sh
export CLASSPATH=${UBER_JAR}
-java com.mycompany.app.TemplateApp "$*"
+java ${FQ_MAIN_CLASS} "$*"
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/2b267b2d/topology/run-sample.sh
----------------------------------------------------------------------
diff --git a/topology/run-sample.sh b/topology/run-sample.sh
index 1614a7d..d6fa8af 100755
--- a/topology/run-sample.sh
+++ b/topology/run-sample.sh
@@ -36,6 +36,7 @@ ${SAMPLE_PACKAGE_BASE}.PeriodicSource
${SAMPLE_PACKAGE_BASE}.SensorsAggregates
${SAMPLE_PACKAGE_BASE}.SimpleFilterTransform
${SAMPLE_PACKAGE_BASE}.SplitWithEnumSample
+${SAMPLE_PACKAGE_BASE}.TempSensorApplication
${SAMPLE_PACKAGE_BASE}.TerminateAfterNTuples
EOF
`
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/2b267b2d/topology/src/main/java/org/apache/edgent/samples/topology/TempSensor.java
----------------------------------------------------------------------
diff --git a/topology/src/main/java/org/apache/edgent/samples/topology/TempSensor.java b/topology/src/main/java/org/apache/edgent/samples/topology/TempSensor.java
new file mode 100644
index 0000000..d9b8a40
--- /dev/null
+++ b/topology/src/main/java/org/apache/edgent/samples/topology/TempSensor.java
@@ -0,0 +1,44 @@
+/*
+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.edgent.samples.topology;
+
+import java.util.Random;
+
+import org.apache.edgent.function.Supplier;
+
+/**
+ * Every time get() is called, TempSensor generates a temperature reading.
+ */
+public class TempSensor implements Supplier<Double> {
+ double currentTemp = 65.0;
+ Random rand;
+
+ TempSensor(){
+ rand = new Random();
+ }
+
+ @Override
+ public Double get() {
+ // Change the current temperature some random amount
+ double newTemp = rand.nextGaussian() + currentTemp;
+ currentTemp = newTemp;
+ return currentTemp;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/2b267b2d/topology/src/main/java/org/apache/edgent/samples/topology/TempSensorApplication.java
----------------------------------------------------------------------
diff --git a/topology/src/main/java/org/apache/edgent/samples/topology/TempSensorApplication.java b/topology/src/main/java/org/apache/edgent/samples/topology/TempSensorApplication.java
new file mode 100644
index 0000000..b1aba6b
--- /dev/null
+++ b/topology/src/main/java/org/apache/edgent/samples/topology/TempSensorApplication.java
@@ -0,0 +1,44 @@
+/*
+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.edgent.samples.topology;
+
+import java.util.concurrent.TimeUnit;
+
+import org.apache.edgent.providers.direct.DirectProvider;
+import org.apache.edgent.topology.TStream;
+import org.apache.edgent.topology.Topology;
+
+/*
+ * A basic application used in the Edgent "Getting Started Guide":
+ * https://edgent.apache.org/docs/edgent-getting-started.html
+ */
+public class TempSensorApplication {
+ public static void main(String[] args) throws Exception {
+ TempSensor sensor = new TempSensor();
+ DirectProvider dp = new DirectProvider();
+ Topology topology = dp.newTopology();
+
+ TStream<Double> tempReadings = topology.poll(sensor, 1, TimeUnit.MILLISECONDS);
+ TStream<Double> filteredReadings = tempReadings.filter(reading -> reading < 50 || reading > 80);
+ filteredReadings.print();
+
+ dp.submit(topology);
+ }
+}