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:50:45 UTC
[05/50] incubator-edgent-samples git commit: cleanup/fix some sample
README and scripts
cleanup/fix some sample README and scripts
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/d6db0081
Tree: http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/tree/d6db0081
Diff: http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/diff/d6db0081
Branch: refs/heads/develop
Commit: d6db0081056734c816a654e675163d1a35ea9223
Parents: 7db0380
Author: Dale LaBossiere <dl...@us.ibm.com>
Authored: Wed Sep 6 15:14:47 2017 -0400
Committer: Dale LaBossiere <dl...@us.ibm.com>
Committed: Wed Sep 6 15:14:47 2017 -0400
----------------------------------------------------------------------
APPLICATION_DEVELOPMENT.md | 216 ++++++++++++++++++++++++++++++++++++++++
README.md | 201 +------------------------------------
console/run-sample.sh | 2 +-
scenarios/README.md | 52 ++++++----
scenarios/run-sample.sh | 3 +-
topology/run-sample.sh | 2 +-
utils/README.md | 2 +-
utils/run-sample.sh | 2 +-
8 files changed, 258 insertions(+), 222 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/d6db0081/APPLICATION_DEVELOPMENT.md
----------------------------------------------------------------------
diff --git a/APPLICATION_DEVELOPMENT.md b/APPLICATION_DEVELOPMENT.md
new file mode 100644
index 0000000..9199c94
--- /dev/null
+++ b/APPLICATION_DEVELOPMENT.md
@@ -0,0 +1,216 @@
+<!--
+ 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.
+-->
+
+#Edgent Application Development, Packaging and Execution.
+
+This file is a work-in-progress.
+
+To develop Edgent applications you will utilize the
+Edgent SDK/runtime jars, package your application
+artifacts for deploying to an edge device for execution.
+
+The Edgent SDK/runtime jars are published to maven-central.
+Alternatively, you can build the Edgent SDK yourself from a source release
+and the resulting jars will be added to your local maven repository.
+
+There are a set of Edgent jars for each supported platform: java8, java7, and android.
+The artifact groupId prefix is: org.apache.edgent (for java8),
+org.apache.edgent.java7 and org.apache.edgent.android. e.g.
+ org.apache.edgent.api org.apache.edgent.api.java7
+
+See `JAVA_SUPPORT.md` for more information on coordinates, etc.
+
+The Edgent API is most easily used by using java8 lambda expressions.
+If you only want to deploy your Edgent application to a java8 environment
+then your application may use any java8 features it chooses. You compile
+and run against the Edgent java8 jars.
+
+If you want to deploy your Edgent application to a java7 or android
+environment, it's still easiest to write your application using the Edgent APIs
+with java8 lambda expressions. You compile with java8 but constrain
+your application to using java7 features plus java8 lambda expressions.
+The Retrolambda tool is used to convert your application's generated
+class files to java7.
+(the java7 and android Edgent jars were created in that manner too)
+Your application would then be run against the appropriate
+Edgent platform jars. Alternatively you can forgo the use of lambda
+expressions and write your application in java7 and compile
+and run against the appropriate Edgent platform jars.
+
+For convenience it's easiest to build your Edgent applcation using
+maven-repository-enabled build tooling (e.g., maven, maven-enabled
+Eclipse or IntelliJ). The tooling transparently downloads the
+required Edgent jars from the maven repository.
+
+The supplied Edgent samples poms include support for building for
+a java8, java7 or android execution environent. The poms are
+configured for the generation of a standard jar as well as an
+uber jar for a sample application.
+
+You can clone the samples/template project as a starting point
+for your Edgent application. See `samples/template/README.md`.
+
+TODO: we would like to provide a maven Edgent Application archetype
+that users can use to create an application project template.
+
+If you can't or don't want to use maven-repository-enabled tooling
+you will need to get a local copy of the Edgent jars and their
+dependencies and add them to your compile classpath.
+The Edgent supplied get-edgent-jars.sh tool can be used to
+get copies of the jars from a maven repository.
+
+
+##Packaging and Execution
+
+Edgent doesn't provide any "deployment" mechanisms other than its primitive
+"register jar" feature (see the IotProvider javadoc). Generally, managing
+the deployment of application and Edgent jars to edge devices is left to
+others (as an example, the IBM Watson IoT Platform has device APIs to
+support "firmware" download/update).
+
+To run your Edgent application on an edge device, your application
+jar(s) need to be on the device. Additionally, the application's
+dependent Edgent jars (and their transitive dependencies) need to
+be on the device. It's unlikely the device will be able to retrieve
+the dependencies directly from a remote maven repository such as
+maven central.
+
+Here are three options for dealing with this:
+
+a) construct an uber-jar for your application.
+ The uber jar contains the application's classes and
+ the application's dependent Edgent classes and their
+ transitive dependencies.
+
+ The uber jar is a standalone entity containing
+ everything that's needed to run your application.
+
+ The Edgent samples poms contain configuration information
+ that generates an uber jar in addition to the standard
+ application jar. Eclipse can also export an uber jar.
+
+b) create an application package bundle.
+ The bundle contains the application's jar
+ and the application's dependent Edgent jars and their
+ transitive dependencies.
+ The bundle is copied to the device and unpacked.
+ A run script forms the appropriate CLASSPATH
+ to the package's jars and starts the application.
+
+ The Edgent supplied package-app.sh tool supports this mode.
+ Eclipse can also export a similar collection
+ of information.
+
+c) separately manage the application's jars and the
+ Edgent jars and their dependencies.
+ Copy the application's jars to the device.
+ Get a copy of the Edgent jars and their dependencies
+ onto the device to be shared by any Edgent applications
+ that want to use them.
+
+ The Apache Edgent project does not release a
+ binary bundle containing all of the Edgent jars
+ and their dependencies. The binary artifacts
+ are only released to maven central.
+
+ The Edgent supplied get-edgent-jars.sh tool supports this mode.
+
+##get-edgent-jars.sh
+
+The `get-edgent-jars.sh` script copies the Edgent runtime jars and their
+dependencies from a local or remote maven repository.
+
+The user may then directly use the jars in CLASSPATH specifications
+for Edgent application compilation or execution.
+A `classpath.sh` script is generated to assist with this.
+
+By default the script retrieves the Edgent java8 platform jars for the
+script's default Edgent version.
+
+The script creates and builds a small maven project as
+part of its execution.
+
+```sh
+get-edgent-jars.sh --version 1.2.0-SNAPSHOT # retrieve the Edgent 1.2.0-SNAPSHOT java8 jars
+This command downloads the Apache Edgent jars and their transitive external dependencies.
+The external dependencies have their own licensing term that you should review.
+A summary of the external dependencies can be found here <TODO URL>.
+Continue? [y/n] y
+##### Generating maven project get-edgent-jars-project...
+##### Generating dependency decls...
+##### Adding dependency decls to pom...
+##### Retrieving jars into local maven repo...
+...
+##### Copying jars...
+##### Generating classpath.sh...
+##### The Edgent jars are in get-edgent-jars-project/edgent-jars
+##### The external jars are in get-edgent-jars-project/ext-jars
+##### CLASSPATH may be set by copying get-edgent-jars-project/java8/classpath.sh and using it like:
+##### export CLASSPATH=`classpath.sh path-to-parent-of-edgent-jars-dir`
+```
+
+For more usage information:
+
+```sh
+get-edgent-jars.sh -h
+```
+
+##package-app.sh
+
+The `package-app.sh` script creates an application bundle.
+The application bundle can be copied to an edge-device,
+unpacked and then used to run the application.
+
+The application bundle contains the application's jar,
+the application's dependent Edgent jars (as specified in
+the application's pom) and the Edgent jars' dependencies,
+and a run-app.sh script.
+
+The application's pom specified Edgent runtime jars and
+their dependencies are retrieved from a local or remote
+maven repository.
+
+If the application was built using java8, complied against
+the java8 Edgent jars, and the execution environment is
+java7 or android, use the appropriate script options
+to retrieve the appropriate Edgent platform jars for
+execution.
+
+The run-app.sh script configures the CLASSPATH and runs
+the application.
+
+E.g.,
+
+```sh
+cd MyApp # the project directory
+package-app.sh --mainClass com.mycompany.app.MyApp --appjar target/my-app-1.0-SNAPSHOT.jar
+##### get the app specific dependencies...
+...
+##### create target/app-run.sh...
+##### create target/app-pkg.tar...
+##### Copy target/app-pkg.tar to the destination system"
+##### To run the app:"
+##### mkdir app-pkg"
+##### tar xf app-pkg.tar -C app-pkg"
+##### (cd app-pkg; ./app-run.sh)"
+```
+
+For more usage information:
+
+```sh
+package-app.sh -h
+```
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/d6db0081/README.md
----------------------------------------------------------------------
diff --git a/README.md b/README.md
index b9b0dee..15e4fdb 100644
--- a/README.md
+++ b/README.md
@@ -14,204 +14,9 @@
See the License for the specific language governing permissions and
limitations under the License.
-->
-#Apache Edgent SDK samples.
-This file is a work-in-progress.
-
-The following describes Edgent Application development in general
-and the Edgent SDK samples in particular.
-
-#Edgent Application Development, Packaging and Execution.
-
-The Edgent SDK/runtime jars are published to maven-central.
-
-There are a set of Edgent jars for each supported platform: java8, java7, and android.
-The artifact groupId prefix is: org.apache.edgent (for java8),
-org.apache.edgent.java7 and org.apache.edgent.android. e.g.
- org.apache.edgent.api org.apache.edgent.api.java7
-
-See `JAVA_SUPPORT.md` for more information on coordinates, etc.
-
-The Edgent API is most easily used by using java8 lambda expressions.
-If you only want to deploy your Edgent application to a java8 environment
-then your application may use any java8 features it chooses. You compile
-and run against the Edgent java8 jars.
-
-If you want to deploy your Edgent application to a java7 or android
-environment, it easiest to write your application using the Edgent APIs
-with java8 lambda expressions. You compile with java8 but constrain
-your application to using java7 features plus java8 lambda expressions.
-The Retrolambda tool is used to convert your application's generated
-class files to java7.
-(the java7 and android Edgent jars were created in that manner too)
-Your application would then be run against the appropriate
-Edgent platform jars. Alternatively you can forgo the use of lambda
-expressions and write your application in java7 and compile
-and run against the appropriate Edgent platform jars.
-
-For convenience it's easiest to build your Edgent applcation using
-maven-repository-enabled build tooling (e.g., maven, maven-enabled
-Eclipse or IntelliJ). The tooling transparently downloads the
-required Edgent jars from the maven repository.
-
-The supplied Edgent samples poms include support for building for
-a java8, java7 or android execution environent. The poms are
-configured for the generation of a standard jar as well as an
-uber jar for a sample application.
-
-You can clone the samples/template project as a starting point
-for your Edgent application. See samples/template/README.md.
-
-TODO: we would like to provide a maven Edgent Application archetype
-that users can use to create an application project template.
-
-If you can't or don't want to use maven-repository-enabled tooling
-you will need to get a local copy of the Edgent jars and their
-dependencies and add them to your compile classpath.
-The Edgent supplied get-edgent-jars.sh tool can be used to
-get copies of the jars from a maven repository.
-
-
-##Packaging and Execution
-
-Edgent doesn't provide any "deployment" mechanisms other than its primitive
-"register jar" feature (see the IotProvider javadoc). Generally, managing
-the deployment of application and Edgent jars to edge devices is left to
-others (as an example, the IBM Watson IoT Platform has device APIs to
-support "firmware" download/update).
-
-To run your Edgent application on an edge device, your application
-jar(s) need to be on the device. Additionally, the application's
-dependent Edgent jars (and their transitive dependencies) need to
-be on the device. It's unlikely the device will be able to retrieve
-the dependencies directly from a remote maven repository such as
-maven central.
-
-Here are three options for dealing with this:
-
-a) construct an uber-jar for your application.
- The uber jar contains the application's classes and
- the application's dependent Edgent classes and their
- transitive dependencies.
-
- The uber jar is a standalone entity containing
- everything that's needed to run your application.
-
- The Edgent samples poms contain configuration information
- that generates an uber jar in addition to the standard
- application jar. Eclipse can also export an uber jar.
-
-b) create an application package bundle.
- The bundle contains the application's jar
- and the application's dependent Edgent jars and their
- transitive dependencies.
- The bundle is copied to the device and unpacked.
- A run script forms the appropriate CLASSPATH
- to the package's jars and starts the application.
-
- The Edgent supplied package-app.sh tool supports this mode.
- Eclipse can also export a similar collection
- of information.
-
-c) separately manage the application's jars and the
- Edgent jars and their dependencies.
- Copy the application's jars to the device.
- Get a copy of the Edgent jars and their dependencies
- onto the device to be shared by any Edgent applications
- that want to use them.
-
- The Apache Edgent project does not release a
- binary bundle containing all of the Edgent jars
- and their dependencies. The binary artifacts
- are only released to maven central.
-
- The Edgent supplied get-edgent-jars.sh tool supports this mode.
-
-##get-edgent-jars.sh
-
-The `get-edgent-jars.sh` script copies the Edgent runtime jars and their
-dependencies from a local or remote maven repository.
-
-The user may then directly use the jars in CLASSPATH specifications
-for Edgent application compilation or execution.
-A `classpath.sh` script is generated to assist with this.
-
-By default the script retrieves the Edgent java8 platform jars for the
-script's default Edgent version.
-
-The script creates and builds a small maven project as
-part of its execution.
-
-```sh
-get-edgent-jars.sh --version 1.2.0-SNAPSHOT # retrieve the Edgent 1.2.0-SNAPSHOT java8 jars
-This command downloads the Apache Edgent jars and their transitive external dependencies.
-The external dependencies have their own licensing term that you should review.
-A summary of the external dependencies can be found here <TODO URL>.
-Continue? [y/n] y
-##### Generating maven project get-edgent-jars-project...
-##### Generating dependency decls...
-##### Adding dependency decls to pom...
-##### Retrieving jars into local maven repo...
-...
-##### Copying jars...
-##### Generating classpath.sh...
-##### The Edgent jars are in get-edgent-jars-project/edgent-jars
-##### The external jars are in get-edgent-jars-project/ext-jars
-##### CLASSPATH may be set by copying get-edgent-jars-project/java8/classpath.sh and using it like:
-##### export CLASSPATH=`classpath.sh path-to-parent-of-edgent-jars-dir`
-```
-
-For more usage information:
-
-```sh
-get-edgent-jars.sh -h
-```
-
-##package-app.sh
-
-The `package-app.sh` script creates an application bundle.
-The application bundle can be copied to an edge-device,
-unpacked and then used to run the application.
-
-The application bundle contains the application's jar,
-the application's dependent Edgent jars (as specified in
-the application's pom) and the Edgent jars' dependencies,
-and a run-app.sh script.
-
-The application's pom specified Edgent runtime jars and
-their dependencies are retrieved from a local or remote
-maven repository.
-
-If the application was built using java8, complied against
-the java8 Edgent jars, and the execution environment is
-java7 or android, use the appropriate script options
-to retrieve the appropriate Edgent platform jars for
-execution.
-
-The run-app.sh script configures the CLASSPATH and runs
-the application.
-
-E.g.,
-
-```sh
-cd MyApp # the project directory
-package-app.sh --mainClass com.mycompany.app.MyApp --appjar target/my-app-1.0-SNAPSHOT.jar
-##### get the app specific dependencies...
-...
-##### create target/app-run.sh...
-##### create target/app-pkg.tar...
-##### Copy target/app-pkg.tar to the destination system"
-##### To run the app:"
-##### mkdir app-pkg"
-##### tar xf app-pkg.tar -C app-pkg"
-##### (cd app-pkg; ./app-run.sh)"
-```
-
-For more usage information:
-
-```sh
-package-app.sh -h
-```
+See [APPLICATION_DEVELOPMENT.md](APPLICATION_DEVELOPMENT.md) for general
+information on Edgent Application Development, Packaging and Execution.
#Building the Edgent samples
@@ -229,4 +34,4 @@ in the sample category's target directory: `<category>/target`.
##Running the samples
-See the README in each sample category directory.
+See the README.md in each sample category directory.
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/d6db0081/console/run-sample.sh
----------------------------------------------------------------------
diff --git a/console/run-sample.sh b/console/run-sample.sh
index 7cbd42a..b11529e 100755
--- a/console/run-sample.sh
+++ b/console/run-sample.sh
@@ -60,5 +60,5 @@ if [ "${SAMPLE_FQ}" = "" ]; then
exit 1
fi
-java -cp ${UBER_JAR} "${SAMPLE_FQ}" "$*"
+java -cp ${UBER_JAR} "${SAMPLE_FQ}" "$@"
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/d6db0081/scenarios/README.md
----------------------------------------------------------------------
diff --git a/scenarios/README.md b/scenarios/README.md
index 7a2d3ac..da1d9e3 100644
--- a/scenarios/README.md
+++ b/scenarios/README.md
@@ -20,36 +20,50 @@
See the Recipe this was created for [here](https://developer.ibm.com/recipes/tutorials/apache-quarks-on-pi-to-watson-iot-foundation/). If that link doesn't work, try [here](https://developer.ibm.com/recipes/tutorials/apache-edgent-on-pi-to-watson-iot-foundation/).
-## Requirements:
-* You must have Pi4J installed on the device (if you are running outside of a Raspberry Pi, you will have to download the JARs and include them in your classpath)
-* You must have Edgent downloaded and built
-* You will need to have an HC-SR04 Range sensor hooked up with your EchoPin set to pin 18 and your TripPin at pin 16 (see these instructions on hardware setup: http://www.modmypi.com/blog/hc-sr04-ultrasonic-range-sensor-on-the-raspberry-pi). To use a simulated sensor, pass in true as your second argument.
-* You will need to have an LED hooked up to pin 12 (See these instructions to set up an LED, however use pin 12 as your control pin: https://projects.drogon.net/raspberry-pi/gpio-examples/tux-crossing/gpio-examples-1-a-single-led/). To use a simulated LED, pass in true as your third argument.
-* You will need to have your device registered with Watson IoTF and a device.cfg file, or you can use a quickstart version by passing in "quickstart" as your first argument.
-
-To compile, export your Edgent install and PI4J libraries (on Raspberry Pi, the default Pi4J location is `/opt/pi4j/lib`):
+See the README.md in the samples root directory for information on building the samples.
+
+The build generated uber jar contains all of the dependent
+Edgent jars and their transitive dependencies.
-`$ EDGENT=<edgent-root-dir>`
+The desired sample can be run using the run-sample.sh script. e.g.,
-`$ export PI4J_LIB=<Pi4J-libs> # directory where pi4j-core.jar resides`
+```sh
+cd scenarios
+./run-sample.sh IotpRangeSensor quickstart true true # see below
+```
-`$ cd $EDGENT`
+For usage information:
-`$ ./gradlew # builds the range sensor sample only if the PI4J_LIB environment variable is set`
+```sh
+./run-sample.sh
+./run-sample.sh --list
+```
-To run:
-
-`$ CP=$EDGENT/build/distributions/java8/samples/lib/edgent.samples.scenarios.jar`
+If you want to run a sample from the standard jar there are two options:
+a) get a local copy of all of the Edgent jars and their dependencies.
+ Form a CLASSPATH to the jars and run the sample's main class.
+ The get-edgent-jars.sh script can be used to get the jars from
+ a maven repository (local or remote).
+b) create an application package bundle. The bundle includes the
+ sample(s) jar and a copy of all of the dependent Edgent jars
+ and their dependencies. The package-app.sh script can be
+ used to create this bundle.
+ The package-app.sh script also creates a run-app.sh script.
+ The run-app.sh script configures the CLASSPATH and runs the main class.
-`$ MAIN=org.apache.edgent.samples.scenarios.iotp.range.sensor.IotpRangeSensor`
+
+## Requirements:
+* You will need to have an HC-SR04 Range sensor hooked up with your EchoPin set to pin 18 and your TripPin at pin 16 (see these instructions on hardware setup: http://www.modmypi.com/blog/hc-sr04-ultrasonic-range-sensor-on-the-raspberry-pi). To use a simulated sensor, pass in true as your second argument.
+* You will need to have an LED hooked up to pin 12 (See these instructions to set up an LED, however use pin 12 as your control pin: https://projects.drogon.net/raspberry-pi/gpio-examples/tux-crossing/gpio-examples-1-a-single-led/). To use a simulated LED, pass in true as your third argument.
+* You will need to have your device registered with Watson IoTF and a device.cfg file, or you can use a quickstart version by passing in "quickstart" as your first argument.
-`$ java -cp $CP $MAIN <device cfg file> <simulatedSensor?> <simulatedLED?>`
+`./run-sample.sh IotpRangeSensor <device cfg file> <simulatedSensor?> <simulatedLED?>`
To run with a device.cfg file, range sensor, and LED:
-`$ java -cp $CP $MAIN device.cfg false false`
+`./run-sample.sh IotpRangeSensor device.cfg false false`
To run in fully simulated mode (no sensors and using IoTF quickstart):
-`$ java -cp $CP $MAIN quickstart true true`
\ No newline at end of file
+`./run-sample.sh IotpRangeSensor quickstart true true`
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/d6db0081/scenarios/run-sample.sh
----------------------------------------------------------------------
diff --git a/scenarios/run-sample.sh b/scenarios/run-sample.sh
index fea6ead..2b2c92b 100755
--- a/scenarios/run-sample.sh
+++ b/scenarios/run-sample.sh
@@ -60,5 +60,6 @@ if [ "${SAMPLE_FQ}" = "" ]; then
exit 1
fi
-java -cp ${UBER_JAR} "${SAMPLE_FQ}" "$*"
+set -x
+java -cp ${UBER_JAR} "${SAMPLE_FQ}" "$@"
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/d6db0081/topology/run-sample.sh
----------------------------------------------------------------------
diff --git a/topology/run-sample.sh b/topology/run-sample.sh
index c9568d5..1614a7d 100755
--- a/topology/run-sample.sh
+++ b/topology/run-sample.sh
@@ -70,5 +70,5 @@ if [ "${SAMPLE_FQ}" = "" ]; then
exit 1
fi
-java -cp ${UBER_JAR} "${SAMPLE_FQ}" "$*"
+java -cp ${UBER_JAR} "${SAMPLE_FQ}" "$@"
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/d6db0081/utils/README.md
----------------------------------------------------------------------
diff --git a/utils/README.md b/utils/README.md
index 348edae..7381f2e 100644
--- a/utils/README.md
+++ b/utils/README.md
@@ -6,7 +6,7 @@ Edgent jars and their transitive dependencies.
The desired sample can be run using the run-sample.sh script. e.g.,
```sh
-cd topology
+cd utils
./run-sample.sh PeriodicSourceWithMetrics
```
http://git-wip-us.apache.org/repos/asf/incubator-edgent-samples/blob/d6db0081/utils/run-sample.sh
----------------------------------------------------------------------
diff --git a/utils/run-sample.sh b/utils/run-sample.sh
index 8e9128a..697f44f 100755
--- a/utils/run-sample.sh
+++ b/utils/run-sample.sh
@@ -60,5 +60,5 @@ if [ "${SAMPLE_FQ}" = "" ]; then
exit 1
fi
-java -cp ${UBER_JAR} "${SAMPLE_FQ}" "$*"
+java -cp ${UBER_JAR} "${SAMPLE_FQ}" "$@"