Repository: Azure/azure-functions-java-worker
Pull request #104 (2018-05-15 19:55:34)

Delete annotations from worker repo


Patch:
diff --git a/README.md b/README.md
index 6dbc298..92ad5b4 100644
--- a/README.md
+++ b/README.md
@@ -1,188 +1,119 @@
-# Building Microsoft Azure Functions in Java
+# Contributing
 
-## Prerequisites
+This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
 
-* JDK 8
-* Maven
-* JAVA_HOME environment variable
-* Node
-* NPM Azure Functions CLI
+# Environment Setup
 
-## Programming Model
+## Maven
 
-Your Azure function should be a stateless method to process input and produce output. Although you are allowed to write instance methods, your function must not depend on any instance fields of the class. You need to make sure all the function methods are `public` accessible.
+* Run all maven commands under the root folder of this repository
 
-You can put multiple functions in one single project (or specifically speaking, one single jar). We strongly recommend you **not to** put your functions in separate jars (or `pom.xml`).
+## IntelliJ
 
-Typically an Azure function is invoked because of one trigger. Your function needs to process that trigger (sometimes with additional inputs) and gives one or more output values.
+* Import the root folder of this repository as an existing project in IntelliJ
+* Configure the Language level (under Project Structure -> Modules -> Sources) to 8
 
-All the input and output bindings can be defined in `function.json` (not recommended), or in the Java method by using annotations (recommended). All the types and annotations used in this document are included in the `azure-functions-java-core` package.
+## Eclipse
 
-Here is an example for a simple Azure function written in Java:
+* Set workspace to the parent folder of this repository
+* Import the root folder of this repository as an existing Maven project in Eclipse
+* Configure the project Java compiler compliance level to 1.8
+* Set the JRE libraries to JRE 1.8
+* "Ignore optional compiler problems" in "Java Build Path" for "target/generated-sources/\*\*/\*.java"
 
-```Java
-package com.example;
+# Development Cycle
 
-import com.microsoft.azure.serverless.functions.annotation.*;
+## Build
 
-public class MyClass {
-    @FunctionName("echo")
-    public static String echo(@HttpTrigger(name = "req", methods = { "post" }, authLevel = AuthorizationLevel.ANONYMOUS) String in) {
-        return "Hello, " + in + ".";
-    }
-}
-```
-
-### Including 3rd Party Libraries
-
-Azure Functions supports the use of 3rd party libraries. By default, all dependencies specified in your project pom.xml file will be automatically bundled during the `mvn package` step. For libraries that are not specified as dependencies in the pom.xml file, you may place them in a `lib` directory in the function's root directory. These will then be deployed as part of your functions application. All dependencies that are placed in the `lib` directory will be added to the system class loader at runtime. 
+This is a maven based project, thus you can use any command line tools or IDEs which support maven to build it. Here we will use command line as the example (you could configure your own development environment accordingly).
 
-## General Data Types
+To build the project, you just need to run one command from the root folder of this project:
 
-You are free to use all the data types in Java for the input and output data, including native types; customized POJO types and specialized Azure types defined in `azure-functions-java-core` package. And Azure Functions runtime will try its best to convert the actual input value to the type you need (for example, a `String` input will be treated as a JSON string and be parsed to a POJO type defined in your code).
-
-The POJO types you defined have the same accessible requirements as the function methods, it needs to be `public` accessible. While the POJO class fields are not; for example a JSON string `{ "x": 3 }` is able to be converted to the following POJO type:
-
-```Java
-public class MyData {
-    private int x;
-}
+```sh
+mvn clean package
 ```
 
-Binary data is represented as `byte[]` or `Byte[]` in your Azure functions code. And make sure you specify `dataType = "binary"` in the corresponding triggers/bindings.
-
-Empty input values could be `null` as your functions argument, but a recommended way to deal with potential empty values is to use `Optional<T>` type.
+And the binary will be built to `"./azure-functions-java-worker/target/azure-functions-java-worker-<version>.jar"`.
 
+If you have updated the core interface (azure-functions-java-core), a `mvn clean install` is required for your test functions app to reference the latest core package.
 
-## Inputs
+## Debug
 
-Inputs are divided into two categories in Azure Functions: one is the trigger input and the other is the additional input. Trigger input is the input who triggers your function. And besides that, you may also want to get inputs from other sources (like a blob), that is the additional input.
+The Java worker alone is not enough to establish the functions app, we also need the support from [Azure Functions Host](https://github.com/Azure/azure-functions-host). You may either use a published host CLI or use the in-development host. But both of the methods require you to attach to the java process if you want a step-by-step debugging experience.
 
-Let's take the following code snippet as an example:
+### Published Host
 
-```Java
-package com.example;
+You can install the latest Azure functions CLI tool by:
 
-import com.microsoft.azure.serverless.functions.annotation.*;
-
-public class MyClass {
-    @FunctionName("echo")
-    public static String echo(
-        @HttpTrigger(name = "req", methods = { "put" }, authLevel = AuthorizationLevel.ANONYMOUS, route = "items/{id}") String in,
-        @TableInput(name = "item", tableName = "items", partitionKey = "Example", rowKey = "{id}", connection = "AzureWebJobsStorage") MyObject obj
-    ) {
-        return "Hello, " + in + " and " + obj.getKey() + ".";
-    }
-
-    public static class MyObject {
-        public String getKey() { return this.RowKey; }
-        private String RowKey;
-    }
-}
+```sh
+npm install -g azure-functions-core-tools@core
 ```
 
-When this function is invoked, the HTTP request payload will be passed as the `String` for argument `in`; and one entry will be retrieved from the Azure Table Storage and be passed to argument `obj` as `MyObject` type.
-
-## Outputs
-
-Outputs can be expressed in return value or output parameters. If there is only one output, you are recommended to use the return value. For multiple outputs, you have to use **output parameters**.
-
-Return value is the simplest form of output, you just return the value of any type, and Azure Functions runtime will try to marshal it back to the actual type (such as an HTTP response). You could apply any *output annotations* to the function method (the `name` property of the annotation has to be `$return`) to define the return value output.
+By default, the binaries are located in `"<Home Folder>/.azurefunctions/bin"`. Copy the `"<Azure Functions Java Worker Root>/azure-functions-java-worker/target/azure-functions-java-worker-<version>.jar"` to `"<Home Folder>/.azurefunctions/bin/workers/java/azure-functions-java-worker.jar"`. And start it normally using:
 
-For example, a blob content copying function could be defined as the following code. `@StorageAccount` annotation is used here to prevent the duplicating of the `connection` property for both `@BlobTrigger` and `@BlobOutput`.
-
-```Java
-package com.example;
-
-import com.microsoft.azure.serverless.functions.annotation.*;
-
-public class MyClass {
-    @FunctionName("copy")
-    @StorageAccount("AzureWebJobsStorage")
-    @BlobOutput(name = "$return", path = "samples-output-java/{name}")
-    public static String copy(@BlobTrigger(name = "blob", path = "samples-input-java/{name}") String content) {
-        return content;
-    }
-}
-``` 
-
-To produce multiple output values, use `OutputBinding<T>` type defined in the `azure-functions-java-core` package. If you need to make an HTTP response and push a message to a queue, you can write something like:
+```sh
+func start
+```
 
-```Java
-package com.example;
+### Latest Host
 
-import com.microsoft.azure.serverless.functions.*;
-import com.microsoft.azure.serverless.functions.annotation.*;
+A developer may also use the latest host code by cloning the git repository [Azure Functions Host](https://github.com/Azure/azure-functions-host). Now you need to navigate to the root folder of the host project and build it through:
 
-public class MyClass {
-    @FunctionName("push")
-    public static String push(
-        @HttpTrigger(name = "req", methods = { "post" }, authLevel = AuthorizationLevel.ANONYMOUS) String body,
-        @QueueOutput(name = "message", queueName = "myqueue", connection = "AzureWebJobsStorage") OutputBinding<String> queue
-    ) {
-        queue.setValue("This is the queue message to be pushed");
-        return "This is the HTTP response content";
-    }
-}
+```sh
+dotnet restore WebJobs.Script.sln
+dotnet build WebJobs.Script.sln
 ```
 
-Of course you could use `OutputBinding<byte[]>` type to make a binary output value (for parameters); for return values, just use `byte[]`.
+After the build succeeded, set the environment variable `"AzureWebJobsScriptRoot"` to the root folder path (the folder which contains the `host.json`) of your test functions app; and copy the `"<Azure Functions Java Worker Root>/azure-functions-java-worker/target/azure-functions-java-worker-<version>.jar"` to `"<Azure Functions Host Root>/src/WebJobs.Script.WebHost/bin/Debug/netcoreapp2.0/workers/java/azure-functions-java-worker.jar"`. Now it's time to start the host:
 
+```sh
+dotnet ./src/WebJobs.Script.WebHost/bin/Debug/netcoreapp2.0/Microsoft.Azure.WebJobs.Script.WebHost.dll
+```
 
-## Execution Context
-
-You interact with Azure Functions execution environment via the `ExecutionContext` object defined in the `azure-functions-java-core` package. You are able to get the invocation ID, the function name and a built-in logger (which is integrated prefectly with Azure Function Portal experience as well as AppInsights) from the context object.
-
-What you need to do is just add one more `ExecutionContext` typed parameter to your function method. Let's take a timer triggered function as an example:
+> Note: Remember to remove `"AzureWebJobsScriptRoot"` environment variable after you have finished debugging, because it will also influence the `func` CLI tool.
 
-```Java
-package com.example;
+## Generate JavaDoc
 
-import com.microsoft.azure.serverless.functions.*;
-import com.microsoft.azure.serverless.functions.annotation.*;
+Simply using the following command to do so (if there are dependency errors, run `mvn clean install` beforehand):
 
-public class MyClass {
-    @FunctionName("heartbeat")
-    public static void heartbeat(
-        @TimerTrigger(name = "schedule", schedule = "*/30 * * * * *") String timerInfo,
-        ExecutionContext context
-    ) {
-        context.getLogger().info("Heartbeat triggered by " + context.getFunctionName());
-    }
-}
+```sh
+mvn javadoc:javadoc
 ```
 
+# Coding Convention
 
-## Specialized Data Types
+## Version Management
 
-### HTTP Request and Response
+Our version strategy just follows the maven package version convention: `<major>.<minor>.<hotfix>-<prerelease>`, where:
 
-Sometimes a function need to take a more detailed control of the input and output, and that's why we also provide some specialized types in the `azure-functions-java-core` package for you to manipulate:
+* `<major>`: Increasing when incompatible breaking changes happened
+* `<minor>`: Increasing when new features added
+* `<hotfix>`: Increasing when a hotfix is pushed
+* `<prerelease>`: A string representing a pre-release version
 
-| Specialized Type         |       Target        | Typical Usage                  |
-| ------------------------ | :-----------------: | ------------------------------ |
-| `HttpRequestMessage<T>`  |    HTTP Trigger     | Get method, headers or queries |
-| `HttpResponseMessage<T>` | HTTP Output Binding | Return status other than 200   |
+**Use `SNAPSHOT` pre-release tag for packages under development**. Here is the sample workflow:
 
-### Metadata
+1. Initially the package version is `1.0-SNAPSHOT`. *There is no hotfix for SNAPSHOT*
+2. Modify the version to `1.0.0-ALPHA` for internal testing purpose. *Notice the hotfix exists here*
+3. After several BUG fixes, update the version to `1.0.0`.
+4. Create a new development version `1.1-SNAPSHOT`.
+5. Make a new hotfix into `1.0-SNAPSHOT`, and release to version `1.0.1`.
+6. New features are added to `1.1-SNAPSHOT`.
 
-Metadata comes from different sources, like HTTP headers, HTTP queries, and [trigger metadata](https://docs.microsoft.com/en-us/azure/azure-functions/functions-triggers-bindings#trigger-metadata-properties). You can use `@BindingName` annotation together with the metadata name to get the value.
+Every time you release a non-development version (like `1.0.0-ALPHA` or `1.0.1`), you also need to update the tag in your git repository.
 
-For example, the `queryValue` in the following code snippet will be `"test"` if the requested URL is `http://{example.host}/api/metadata?name=test`.
+# Advanced Java Concepts
 
-```Java
-package com.example;
+## Reflection for Type
 
-import java.util.Optional;
-import com.microsoft.azure.serverless.functions.annotation.*;
+Primitives have two different type definitions, for example: `int.class` (which is identical to `Integer.TYPE`) is not `Integer.class`.
 
-public class MyClass {
-    @FunctionName("metadata")
-    public static String metadata(
-        @HttpTrigger(name = "req", methods = { "get", "post" }, authLevel = AuthorizationLevel.ANONYMOUS) Optional<String> body,
-        @BindingName("name") String queryValue
-    ) {
-        return body.orElse(queryValue);
-    }
-}
-```
+All Java types are represented by `Type` interface, which may be one of the following implementations:
+* `Class<?>`: normal class type like `String`
+* `ParameterizedType`: generic class type like `List<Integer>`
+* `WildcardType`: generic argument contains question mark like `? extends Number`
+* `TypeVariable<?>`: generic argument like `T`
+* `GenericArrayType`: generic array like `T[]`
+
+For the generic type behaviors (including compile-time validation and runtime type erasure) in Java, please refer to *[Generics in the Java Programming Language
+](https://www.cs.rice.edu/~cork/312/Readings/GenericsTutorial.pdf)*.
diff --git a/appveyor.yml b/appveyor.yml
index 37a621d..3735105 100644
--- a/appveyor.yml
+++ b/appveyor.yml
@@ -29,7 +29,5 @@ build_script:
 artifacts:
   - path: '*.nupkg'
   - path: 'azure-functions-java-worker/target/**.jar'
-  - path: 'azure-functions-java-core/target/**.jar'
-
 cache:
   - C:\maven\
\ No newline at end of file
diff --git a/azure-functions-java-core/LICENSE b/azure-functions-java-core/LICENSE
deleted file mode 100644
index 2107107..0000000
--- a/azure-functions-java-core/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-    MIT License
-
-    Copyright (c) Microsoft Corporation. All rights reserved.
-
-    Permission is hereby granted, free of charge, to any person obtaining a copy
-    of this software and associated documentation files (the "Software"), to deal
-    in the Software without restriction, including without limitation the rights
-    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-    copies of the Software, and to permit persons to whom the Software is
-    furnished to do so, subject to the following conditions:
-
-    The above copyright notice and this permission notice shall be included in all
-    copies or substantial portions of the Software.
-
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-    SOFTWARE
diff --git a/azure-functions-java-core/pom.xml b/azure-functions-java-core/pom.xml
deleted file mode 100644
index 1eb4f4d..0000000
--- a/azure-functions-java-core/pom.xml
+++ /dev/null
@@ -1,123 +0,0 @@
-<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/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>com.microsoft.azure</groupId>
-  <artifactId>azure-functions-java-core</artifactId>
-  <version>1.0.0-beta-3</version>
-  <packaging>jar</packaging>
-
-  <name>Microsoft Azure Functions Java Core Types</name>
-  <description>This package contains all Java interfaces and annotations to interact with Microsoft Azure functions runtime.</description>
-  <url>https://azure.microsoft.com/en-us/services/functions</url>
-
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <junit.version>4.12</junit.version>
-    <mockito.version>2.11.0</mockito.version>
-  </properties>
-
-  <licenses>
-    <license>
-      <name>MIT License</name>
-      <url>https://opensource.org/licenses/MIT</url>
-      <distribution>repo</distribution>
-    </license>
-  </licenses>
-
-  <scm>
-    <connection>scm:git:https://github.com/Azure/azure-functions-java-worker</connection>
-    <developerConnection>scm:git:git@github.com:Azure/azure-functions-java-worker</developerConnection>
-    <url>https://github.com/Azure/azure-functions-java-worker</url>
-    <tag>HEAD</tag>
-  </scm>
-
-  <developers>
-    <developer>
-      <id>junyi</id>
-      <name>Junyi Yi</name>
-      <email>junyi@microsoft.com</email>
-    </developer>
-    <developer>
-      <id>xscript</id>
-      <name>Kevin Zhao</name>
-      <email>kevinzha@microsoft.com</email>
-    </developer>
-  </developers>
-
-  <dependencies>
-
-    <!-- test -->
-    <dependency>
-        <groupId>org.reflections</groupId>
-        <artifactId>reflections</artifactId>
-        <version>0.9.11</version>
-        <scope>test</scope>
-    </dependency>
-    <dependency>
-        <groupId>junit</groupId>
-        <artifactId>junit</artifactId>
-        <version>${junit.version}</version>
-        <scope>test</scope>
-    </dependency>
-    <dependency>
-        <groupId>org.mockito</groupId>
-        <artifactId>mockito-core</artifactId>
-        <version>${mockito.version}</version>
-        <scope>test</scope>
-    </dependency>
-
-  </dependencies>
-
-  <build>
-    <plugins>
-      <plugin>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.7.0</version>
-        <configuration>
-          <source>1.8</source>
-          <target>1.8</target>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-source-plugin</artifactId>
-        <version>3.0.1</version>
-        <executions>
-          <execution>
-            <id>attach-sources</id>
-            <goals>
-              <goal>jar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <version>3.0.0-M1</version>
-        <executions>
-          <execution>
-            <id>attach-javadocs</id>
-            <goals>
-              <goal>jar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-        <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-surefire-plugin</artifactId>
-            <version>2.21.0</version>
-            <configuration>
-                <workingDirectory>${project.build.directory}</workingDirectory>
-                <systemProperties>
-                    <property>
-                        <name>testing-project-jar</name>
-                        <value>${project.artifactId}-${project.version}-tests.jar</value>
-                    </property>
-                </systemProperties>
-            </configuration>
-        </plugin>
-    </plugins>
-  </build>
-  
-</project>
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/ExecutionContext.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/ExecutionContext.java
deleted file mode 100644
index 1dae4b4..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/ExecutionContext.java
+++ /dev/null
@@ -1,31 +0,0 @@
-package com.microsoft.azure.serverless.functions;
-
-import java.util.logging.Logger;
-
-/**
- * The execution context enables interaction with the Azure Functions execution environment.
- *
- * @since 1.0.0
- */
-public interface ExecutionContext {
-    /**
-     * Returns the built-in logger, which is integrated with the logging functionality provided in the Azure Functions
-     * portal, as well as in Azure Application Insights.
-     *
-     * @return A Java logger that will see output directed to Azure Portal, as well as any other configured output
-     *      locations.
-     */
-    Logger getLogger();
-
-    /**
-     * Returns the invocation ID for the function call.
-     * @return the invocation ID for the function call.
-     */
-    String getInvocationId();
-
-    /**
-     * Returns the function name.
-     * @return the function name.
-     */
-    String getFunctionName();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/HttpRequestMessage.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/HttpRequestMessage.java
deleted file mode 100644
index 4f1b797..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/HttpRequestMessage.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package com.microsoft.azure.serverless.functions;
-
-import java.net.URI;
-import java.util.Map;
-
-/**
- * An HttpRequestMessage instance is provided to Azure functions that use
- * {@link com.microsoft.azure.serverless.functions.annotation.HttpTrigger HTTP Triggers}. For an example of how to use
- * the http functionality of Azure Functions, refer to the example in the
- * {@link com.microsoft.azure.serverless.functions.annotation.HttpTrigger}
- *
- * @see com.microsoft.azure.serverless.functions.annotation.HttpTrigger
- * @see HttpResponseMessage
- * @param <T> The type of the body content that is expected to be received as part of this HTTP request.
- * @since 1.0.0
- */
-public interface HttpRequestMessage<T> {
-    /**
-     * Returns the URI that was called that resulted in this HTTP request being submitted.
-     * @return the URI that was called that resulted in this HTTP request being submitted.
-     */
-    URI getUri();
-
-    /**
-     * Returns the HTTP method name, such as "GET" and "POST".
-     * @return the HTTP method name, such as "GET" and "POST".
-     */
-    String getMethod();
-
-    /**
-     * Returns a map of headers that were contained within this HTTP request.
-     * @return a map of headers that were contained within this HTTP request.
-     */
-    Map<String, String> getHeaders();
-
-    /**
-     * Returns a map of query parameters that were included with this HTTP request.
-     * @return a map of query parameters that were included with this HTTP request.
-     */
-    Map<String, String> getQueryParameters();
-
-    /**
-     * Returns any body content that was included with this HTTP request.
-     * @return any body content that was included with this HTTP request.
-     */
-    T getBody();
-
-    /**
-     * Generates a {@link HttpResponseMessage} instance containing the given HTTP status code and no response body.
-     * Additional headers may be added by calling appropriate methods on {@link HttpResponseMessage}.
-     *
-     * @param status The HTTP status code to return to the caller of the function.
-     * @return An {@link HttpResponseMessage} instance containing the provided status and empty body.
-     */
-    HttpResponseMessage<Object> createResponse(int status);
-
-    /**
-     * Generates a {@link HttpResponseMessage} instance containing the given HTTP status code and response body.
-     * Additional headers may be added by calling appropriate methods on {@link HttpResponseMessage}.
-     *
-     * @param status The HTTP status code to return to the caller of the function.
-     * @param body The body content to return to the caller of the function.
-     * @param <R> The type of the body, as determined by the return type specified on the function itself.
-     * @return An {@link HttpResponseMessage} instance containing the provided status and body content.
-     */
-    <R> HttpResponseMessage<R> createResponse(int status, R body);
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/HttpResponseMessage.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/HttpResponseMessage.java
deleted file mode 100644
index b4794d8..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/HttpResponseMessage.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package com.microsoft.azure.serverless.functions;
-
-/**
- * An HttpResponseMessage instance is returned by Azure Functions methods that are triggered by an
- * {@link com.microsoft.azure.serverless.functions.annotation.HttpTrigger}.
- *
- * @see com.microsoft.azure.serverless.functions.annotation.HttpTrigger
- * @see HttpRequestMessage
- * @param <T> The type of the body, as determined by the return type specified on the function itself.
- * @since 1.0.0
- */
-public interface HttpResponseMessage<T> {
-
-    /**
-     * Returns the status code set on the HttpResponseMessage instance.
-     * @return the status code set on the HttpResponseMessage instance.
-     */
-    int getStatus();
-
-    /**
-     * Sets the status code on the HttpResponseMessage instance.
-     * @param status An HTTP status code representing the outcome of the HTTP request.
-     */
-    void setStatus(int status);
-
-    /**
-     * Adds a (key,value) header to the response.
-     * @param key The key of the header value.
-     * @param value The value of the header value.
-     */
-    void addHeader(String key, String value);
-
-    /**
-     * Returns a header value for the given key.
-     * @param key The key for which the header value is sought.
-     * @return Returns the value if the key has previously been added, or null if it has not.
-     */
-    String getHeader(String key);
-
-    /**
-     * Returns the body of the HTTP response.
-     * @return the body of the HTTP response.
-     */
-    T getBody();
-
-    /**
-     * Sets the body of the HTTP response.
-     * @param body The body of the HTTP response
-     */
-    void setBody(T body);
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/OutputBinding.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/OutputBinding.java
deleted file mode 100644
index caca1fa..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/OutputBinding.java
+++ /dev/null
@@ -1,10 +0,0 @@
-package com.microsoft.azure.serverless.functions;
-
-/**
- *
- * @since 1.0.0
- */
-public interface OutputBinding<T> {
-    T getValue();
-    void setValue(T value);
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/AccessRights.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/AccessRights.java
deleted file mode 100644
index 1ad2826..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/AccessRights.java
+++ /dev/null
@@ -1,16 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-/**
- *
- * @since 1.0.0
- */
-public enum AccessRights {
-    MANAGE,
-    LISTEN
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ApiHubFileInput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ApiHubFileInput.java
deleted file mode 100644
index 065c479..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ApiHubFileInput.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface ApiHubFileInput {
-    String name();
-
-    String dataType() default "";
-
-    String path();
-
-    String connection();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ApiHubFileOutput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ApiHubFileOutput.java
deleted file mode 100644
index 2fa911d..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ApiHubFileOutput.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER, ElementType.METHOD})
-public @interface ApiHubFileOutput {
-    String name();
-
-    String dataType() default "";
-
-    String path();
-
-    String connection();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ApiHubFileTrigger.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ApiHubFileTrigger.java
deleted file mode 100644
index db6293b..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ApiHubFileTrigger.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface ApiHubFileTrigger {
-    String name();
-
-    String dataType() default "";
-
-    String path();
-
-    String connection();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/AuthorizationLevel.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/AuthorizationLevel.java
deleted file mode 100644
index de9ca28..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/AuthorizationLevel.java
+++ /dev/null
@@ -1,17 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-/**
- *
- * @since 1.0.0
- */
-public enum AuthorizationLevel {
-    ANONYMOUS,
-    FUNCTION,
-    ADMIN
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/BindingName.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/BindingName.java
deleted file mode 100644
index a8fc80e..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/BindingName.java
+++ /dev/null
@@ -1,16 +0,0 @@
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Target(ElementType.PARAMETER)
-@Retention(RetentionPolicy.RUNTIME)
-public @interface BindingName {
-    String value();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/BlobInput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/BlobInput.java
deleted file mode 100644
index 18af51b..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/BlobInput.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface BlobInput {
-    String name();
-
-    String dataType() default "";
-
-    String path();
-
-    String connection() default "";
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/BlobOutput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/BlobOutput.java
deleted file mode 100644
index 0105ae8..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/BlobOutput.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER, ElementType.METHOD})
-public @interface BlobOutput {
-    String name();
-
-    String dataType() default "";
-
-    String path();
-
-    String connection() default "";
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/BlobTrigger.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/BlobTrigger.java
deleted file mode 100644
index df63304..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/BlobTrigger.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * <p>The following example shows a storage blob trigger which logs the blob filename as well as its size:</p>
- *
- * <pre>{@literal @}FunctionName("blobprocessor")
- * public void run(
- *    {@literal @}BlobTrigger(name = "file",
- *                  dataType = "binary",
- *                  path = "myblob/filepath",
- *                  connection = "myconnvarname") byte[] content,
- *    {@literal @}BindingName("name") String filename,
- *     final ExecutionContext context
- * ) {
- *     context.getLogger().info("Name: " + name + " Size: " + content.length + " bytes");
- * }</pre>
- *
- * @see com.microsoft.azure.serverless.functions.annotation.BindingName
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface BlobTrigger {
-    String name();
-
-    String dataType() default "";
-
-    String path();
-
-    String connection() default "";
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/CosmosDBInput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/CosmosDBInput.java
deleted file mode 100644
index 04b5660..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/CosmosDBInput.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface CosmosDBInput {
-    String name();
-
-    String dataType() default "";
-
-    String databaseName();
-
-    String collectionName();
-
-    String id() default "";
-
-    String sqlQuery() default "";
-
-    String connectionStringSetting();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/CosmosDBOutput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/CosmosDBOutput.java
deleted file mode 100644
index 2928baa..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/CosmosDBOutput.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER, ElementType.METHOD})
-public @interface CosmosDBOutput {
-    String name();
-
-    String dataType() default "";
-
-    String databaseName();
-
-    String collectionName();
-
-    boolean createIfNotExists() default false;
-
-    String connectionStringSetting();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/CosmosDBTrigger.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/CosmosDBTrigger.java
deleted file mode 100644
index 617c39e..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/CosmosDBTrigger.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * <p>The following example shows a cosmos db trigger which logs the count of the returned items:</p>
- *
- * <pre>{@literal @}FunctionName("cdbprocessor")
- * public void cosmosDbProcessor(
- *    {@literal @}CosmosDBTrigger(name = "items",
- *                      databaseName = "mydbname",
- *                      collectionName = "mycollname",
- *                      leaseCollectionName = "",
- *                      connectionStringSetting = "myconnvarname") MyDataItem[] items,
- *     final ExecutionContext context
- * ) {
- *     context.getLogger().info(items.length);
- * }</pre>
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER})
-public @interface CosmosDBTrigger {
-    String name();
-
-    String dataType() default "";
-
-    String databaseName();
-
-    String collectionName();
-
-    String leaseCollectionName();
-
-    boolean createLeaseCollectionIfNotExists() default false;
-
-    String connectionStringSetting();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/EventGridTrigger.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/EventGridTrigger.java
deleted file mode 100644
index b0c435f..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/EventGridTrigger.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * <p>The following example shows an event grid trigger which prints out the object:</p>
- *
- * <pre>{@literal @}FunctionName("egprocessor")
- * public void eventGridProcessor(
- *    {@literal @}EventGridTrigger(name = "obj") MyModel obj,
- *     final ExecutionContext context
- * ) {
- *     context.getLogger().info(obj.toString());
- * }</pre>
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER})
-public @interface EventGridTrigger {
-    String name();
-
-    String dataType() default "";
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/EventHubOutput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/EventHubOutput.java
deleted file mode 100644
index 40e5bf8..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/EventHubOutput.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER, ElementType.METHOD})
-public @interface EventHubOutput {
-    String name();
-
-    String dataType() default "";
-
-    String eventHubName();
-
-    String connection();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/EventHubTrigger.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/EventHubTrigger.java
deleted file mode 100644
index b98bf65..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/EventHubTrigger.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * <p>The following example shows an event hub trigger which logs the message:</p>
- *
- * <pre>{@literal @}FunctionName("ehprocessor")
- * public void eventHubProcessor(
- *    {@literal @}EventHubTrigger(name = "msg",
- *                      eventHubName = "myeventhubname",
- *                      connection = "myconnvarname") String message,
- *     final ExecutionContext context
- * ) {
- *     context.getLogger().info(message);
- * }</pre>
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface EventHubTrigger {
-    String name();
-
-    String dataType() default "";
-
-    String eventHubName();
-
-    String consumerGroup() default "$Default";
-
-    String connection();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/FunctionName.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/FunctionName.java
deleted file mode 100644
index 4189a6c..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/FunctionName.java
+++ /dev/null
@@ -1,42 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * <p>The {@code FunctionName} annotation is used to specify to the Azure Functions tooling what name is to be applied
- * to the associated function when the function is deployed onto Azure. This becomes the endpoint (in the case of an
- * {@link HttpTrigger http triggered} function, for example, but more generally it is what is shown to users in the
- * Azure Portal, so a succinct and understandable function name is useful.</p>
- *
- * <p>An example of how the {@code FunctionName} annotation is shown in the code snippet below. Note that it is applied
- * to the function that will be called by Azure, based on the specified trigger (in the code below it is a
- * {@link HttpTrigger}).</p>
- *
- * <pre>
- * {@literal @}FunctionName("redirect")
- *  public HttpResponseMessage&lt;String&gt; redirectFunction(
- *    {@literal @}HttpTrigger(name = "req",
- *                            methods = {"get"}, authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage&lt;Optional&lt;String&gt;&gt; request) {
- *     ....
- *  }</pre>
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.METHOD)
-public @interface FunctionName {
-    /**
-     * The name of the function.
-     * @return The name of the function.
-     */
-    String value();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/HttpOutput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/HttpOutput.java
deleted file mode 100644
index b89c7cd..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/HttpOutput.java
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER, ElementType.METHOD})
-public @interface HttpOutput {
-    String name();
-
-    String dataType() default "";
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/HttpTrigger.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/HttpTrigger.java
deleted file mode 100644
index 8b705da..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/HttpTrigger.java
+++ /dev/null
@@ -1,151 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * <p>The HttpTrigger annotation is applied to Azure functions that will be triggered by a call to the HTTP endpoint that
- * the function is located at. The HttpTrigger annotation should be applied to a method parameter of one of the following
- * types:</p>
- *
- * <ul>
- *     <li>{@link com.microsoft.azure.serverless.functions.HttpRequestMessage HttpRequestMessage&lt;T&gt;}</li>
- *     <li>Any native Java types such as int, String, byte[]</li>
- *     <li>Nullable values using Optional&lt;T&gt;</li>
- *     <li>Any POJO type</li>
- * </ul>
- *
- * <p>For example:</p>
- *
- * <pre>
- * {@literal @}FunctionName("hello")
- *  public HttpResponseMessage&lt;String&gt; helloFunction(
- *    {@literal @}HttpTrigger(name = "req",
- *                  methods = {"get"},
- *                  authLevel = AuthorizationLevel.ANONYMOUS) HttpRequestMessage&lt;Optional&lt;String&gt;&gt; request) {
- *     ....
- *  }</pre>
- *
- * <p>In this code snippet you will observe that we have a function annotated with {@code @FunctionName("hello")},
- * which indicates that this function will be available at the endpoint /api/hello. The name of the method itself, in
- * this case {@code helloFunction} is irrelevant for all intents and purposes related to Azure Functions. Note however
- * that the method return type is {@link com.microsoft.azure.serverless.functions.HttpResponseMessage}, and
- * that the first argument into the function is an {@link com.microsoft.azure.serverless.functions.HttpRequestMessage}
- * with generic type {@code Optional<String>}. This indicates that the body of the request will potentially contain
- * a String value.</p>
- *
- * <p>Most important of all however is the {@code @HttpTrigger} annotation that has been applied
- * to this argument. In this annotation you'll note that it has been given a name, as well as told what type of requests
- * it supports (in this case, only HTTP GET requests), and that the {@link AuthorizationLevel} is anonymous, allowing
- * access to anyone who can call the endpoint.</p>
- *
- * <p>The {@code HttpTrigger} can be further customised by providing a custom {@link #route()}, which allows for custom
- * endpoints to be specified, and for these endpoints to be parameterized with arguments being bound to arguments
- * provided to the function at runtime.</p>
- *
- * @see com.microsoft.azure.serverless.functions.HttpRequestMessage
- * @see com.microsoft.azure.serverless.functions.HttpResponseMessage
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface HttpTrigger {
-    /**
-     * The variable name used in function code for the request or request body.
-     * @return The variable name used in function code for the request or request body.
-     */
-    String name();
-
-    String dataType() default "";
-
-    /**
-     * <p>Defines the route template, controlling which request URLs your function will respond to. The default value if
-     * no route is provided is the function name specified in the {@link FunctionName} annotation, applied to each
-     * Azure Function.</p>
-     *
-     * <p>By default when you create a function for an HTTP trigger, or WebHook, the function is addressable with a
-     * route of the form {@code http://&lt;yourapp&gt;.azurewebsites.net/api/&lt;funcname&gt;}. You can customize this route using
-     * this route property. For example, a route of {@code "products/{category:alpha}/{id:int}"} would mean that the
-     * function is now addressable with the following route instead of the original route:
-     * {@code http://&lt;yourapp&gt;.azurewebsites.net/api/products/electronics/357}, which allows the function code to support
-     * two parameters in the address: category and id. By specifying the route in this way, developers can then
-     * add the additional route arguments as arguments into the function by using the {@link BindingName} annotation.
-     * For example:</p>
-     *
-     * <pre>
-     * {@literal @}FunctionName("routeTest")
-     *  public HttpResponseMessage&lt;String&gt; routeTest(
-     *      {@literal @}HttpTrigger(name = "req",
-     *                    methods = {"get"},
-     *                    authLevel = AuthorizationLevel.ANONYMOUS,
-     *                    route = "products/{category:alpha}/{id:int}") HttpRequestMessage&lt;Optional&lt;String&gt;&gt; request,
-     *      {@literal @}BindingName("category") String category,
-     *      {@literal @}BindingName("id") int id,
-     *       final ExecutionContext context) {
-     *           ....
-     *           context.getLogger().info("We have " + category + " with id " + id);
-     *           ....
-     *  }
-     * </pre>
-     *
-     * <p>For more details on the route syntax, refer to the
-     * <a href="https://docs.microsoft.com/en-us/aspnet/web-api/overview/web-api-routing-and-actions/attribute-routing-in-web-api-2#constraints">
-     *     online documentation</a>.</p>
-     *
-     * @return The route template to use for the annotated function.
-     */
-    String route() default "";
-
-    /**
-     * An array of the HTTP methods to which the function responds. If not specified, the function responds to all HTTP
-     * methods.
-     *
-     * @return An array containing all valid HTTP methods.
-     */
-    String[] methods() default {};
-
-    /**
-     * <p>Determines what keys, if any, need to be present on the request in order to invoke the function. The authorization
-     * level can be one of the following values:</p>
-     *
-     * <ul>
-     *     <li><strong>anonymous</strong>: No API key is required.</li>
-     *     <li><strong>function</strong>: A function-specific API key is required. This is the default value if none is provided.</li>
-     *     <li><strong>admin</strong>: The master key is required.</li>
-     * </ul>
-     *
-     * <p>For more information, see the
-     * <a href="https://docs.microsoft.com/azure/azure-functions/functions-bindings-http-webhook#authorization-keys">documentation about authorization keys</a>.</p>
-     *
-     * @return An {@link AuthorizationLevel} value representing the level required to access the function.
-     */
-    AuthorizationLevel authLevel() default AuthorizationLevel.FUNCTION;
-
-    /**
-     * <p>Configures the HTTP trigger to act as a webhook receiver for the specified provider. Don't set the methods
-     * property if you set this property. The webhook type can be one of the following values:</p>
-     *
-     * <ul>
-     *     <li><strong>genericJson</strong>: A general-purpose webhook endpoint without logic for a specific provider.
-     *     This setting restricts requests to only those using HTTP POST and with the {@code application/json} content
-     *     type.</li>
-     *     <li><strong>github</strong>: The function responds to
-     *     <a href="https://developer.github.com/webhooks/">GitHub webhooks</a>. Do not use the {@link #authLevel()}
-     *     property with GitHub webhooks.</li>
-     *     <li><strong>slack</strong>: The function responds to
-     *     <a href="https://api.slack.com/outgoing-webhooks">Slack webhooks</a>. Do not use the {@link #authLevel()}
-     *     property with Slack webhooks.</li>
-     * </ul>
-     *
-     * @return A string representing the desired webhook type.
-     */
-    String webHookType() default "";
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/MobileTableInput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/MobileTableInput.java
deleted file mode 100644
index 67ee117..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/MobileTableInput.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface MobileTableInput {
-    String name();
-
-    String dataType() default "";
-
-    String tableName();
-
-    String id();
-
-    String connection();
-
-    String apiKey();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/MobileTableOutput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/MobileTableOutput.java
deleted file mode 100644
index 6ef51f2..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/MobileTableOutput.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER, ElementType.METHOD})
-public @interface MobileTableOutput {
-    String name();
-
-    String dataType() default "";
-
-    String tableName();
-
-    String connection();
-
-    String apiKey();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/NotificationHubOutput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/NotificationHubOutput.java
deleted file mode 100644
index bbc08af..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/NotificationHubOutput.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER, ElementType.METHOD})
-public @interface NotificationHubOutput {
-    String name();
-
-    String dataType() default "";
-
-    String tagExpression() default "";
-
-    String hubName();
-
-    String connection();
-
-    String platform() default "";
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/QueueOutput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/QueueOutput.java
deleted file mode 100644
index 8ac961f..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/QueueOutput.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER, ElementType.METHOD})
-public @interface QueueOutput {
-    String name();
-
-    String dataType() default "";
-
-    String queueName();
-
-    String connection() default "";
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/QueueTrigger.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/QueueTrigger.java
deleted file mode 100644
index e8d5d03..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/QueueTrigger.java
+++ /dev/null
@@ -1,39 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * <p>The following example shows a storage queue trigger which logs the message:</p>
- *
- * <pre>{@literal @}FunctionName("queueprocessor")
- * public void run(
- *    {@literal @}QueueTrigger(name = "msg",
- *                   queueName = "myqueuename",
- *                   connection = "myconnvarname") String message,
- *     final ExecutionContext context
- * ) {
- *     context.getLogger().info(message);
- * }</pre>
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface QueueTrigger {
-    String name();
-
-    String dataType() default "";
-
-    String queueName();
-
-    String connection() default "";
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/SendGridOutput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/SendGridOutput.java
deleted file mode 100644
index a4b2f5b..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/SendGridOutput.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER, ElementType.METHOD})
-public @interface SendGridOutput {
-    String name();
-
-    String dataType() default "";
-
-    String apiKey();
-
-    String to();
-
-    String from();
-
-    String subject();
-
-    String text();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ServiceBusQueueOutput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ServiceBusQueueOutput.java
deleted file mode 100644
index 641e4d7..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ServiceBusQueueOutput.java
+++ /dev/null
@@ -1,30 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER, ElementType.METHOD})
-public @interface ServiceBusQueueOutput {
-    String name();
-
-    String dataType() default "";
-
-    String queueName();
-
-    String connection();
-
-    AccessRights access() default AccessRights.MANAGE;
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ServiceBusQueueTrigger.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ServiceBusQueueTrigger.java
deleted file mode 100644
index d22d5f4..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ServiceBusQueueTrigger.java
+++ /dev/null
@@ -1,45 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * <p>Use ServiceBusQueueTrigger annotation to respond to messages from a Service Bus queue. Similar to other annotations,
- * ServiceBusQueueTrigger could be applied to a method parameter with any type (including String, int or any POJO) as long
- * as the parameter is JSON-deserializable.</p>
- *
- * <p>The following example shows a service bus queue trigger which logs the queue message:</p>
- *
- * <pre>{@literal @}FunctionName("sbprocessor")
- * public void serviceBusProcess(
- *    {@literal @}ServiceBusQueueTrigger(name = "msg",
- *                             queueName = "myqueuename",
- *                             connection = "myconnvarname") String message,
- *     final ExecutionContext context
- * ) {
- *     context.getLogger().info(message);
- * }</pre>
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface ServiceBusQueueTrigger {
-    String name();
-
-    String dataType() default "";
-
-    String queueName();
-
-    String connection();
-
-    AccessRights access() default AccessRights.MANAGE;
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ServiceBusTopicOutput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ServiceBusTopicOutput.java
deleted file mode 100644
index 005cb71..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ServiceBusTopicOutput.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER, ElementType.METHOD})
-public @interface ServiceBusTopicOutput {
-    String name();
-
-    String dataType() default "";
-
-    String topicName();
-
-    String subscriptionName();
-
-    String connection();
-
-    AccessRights access() default AccessRights.MANAGE;
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ServiceBusTopicTrigger.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ServiceBusTopicTrigger.java
deleted file mode 100644
index 2382005..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/ServiceBusTopicTrigger.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * <p>The following example shows a service bus topic trigger which logs the message:</p>
- *
- * <pre>{@literal @}FunctionName("sbprocessor")
- * public void serviceBusProcess(
- *    {@literal @}ServiceBusTopicTrigger(name = "msg",
- *                             topicName = "mytopicname",
- *                             subscriptionName = "mysubname",
- *                             connection = "myconnvarname") String message,
- *     final ExecutionContext context
- * ) {
- *     context.getLogger().info(message);
- * }</pre>
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface ServiceBusTopicTrigger {
-    String name();
-
-    String dataType() default "";
-
-    String topicName();
-
-    String subscriptionName();
-
-    String connection();
-
-    AccessRights access() default AccessRights.MANAGE;
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/StorageAccount.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/StorageAccount.java
deleted file mode 100644
index 89563af..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/StorageAccount.java
+++ /dev/null
@@ -1,22 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.METHOD)
-public @interface StorageAccount {
-    String value();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/TableInput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/TableInput.java
deleted file mode 100644
index b1fc3fb..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/TableInput.java
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * <p>The following example shows an HTTP trigger which returned the total count of the items in a table storage:</p>
- *
- * <pre>{@literal @}FunctionName("getallcount")
- * public int run(
- *    {@literal @}HttpTrigger(name = "req",
- *                  methods = {"get"},
- *                  authLevel = AuthorizationLevel.ANONYMOUS) Object dummyShouldNotBeUsed,
- *    {@literal @}TableInput(name = "items",
- *                 tableName = "mytablename",
- *                 partitionKey = "myparkey",
- *                 connection = "myconnvarname") MyItem[] items
- * ) {
- *     return items.length;
- * }</pre>
- *
- * @see com.microsoft.azure.serverless.functions.annotation.HttpTrigger
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface TableInput {
-    String name();
-
-    String dataType() default "";
-
-    String tableName();
-
-    String partitionKey() default "";
-
-    String rowKey() default "";
-
-    String filter() default "";
-
-    String take() default "";
-
-    String connection() default "";
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/TableOutput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/TableOutput.java
deleted file mode 100644
index 63de18e..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/TableOutput.java
+++ /dev/null
@@ -1,32 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER, ElementType.METHOD})
-public @interface TableOutput {
-    String name();
-
-    String dataType() default "";
-
-    String tableName();
-
-    String partitionKey() default "";
-
-    String rowKey() default "";
-
-    String connection() default "";
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/TimerTrigger.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/TimerTrigger.java
deleted file mode 100644
index 6d48012..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/TimerTrigger.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * The timer trigger lets you run a function on a schedule by specifying a CRON expression for when the function should
- * run. For more details and examples on how to specify a CRON expression, refer to the {@link #schedule()} attribute of
- * this annotation.
- *
- * <p>An example of using the timer trigger is shown below, where the {@code keepAlive} function is set to trigger and
- * execute every four minutes:</p>
- *
- * <pre>
- * {@literal @}FunctionName("keepAlive")
- *  public void keepAlive(@TimerTrigger(name = "keepAliveTrigger", schedule = "0 *&#47;4 * * * *") String timerInfo) { .. }
- * </pre>
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target(ElementType.PARAMETER)
-public @interface TimerTrigger {
-    /**
-     * The name of the variable that represents the timer object in function code.
-     *
-     * @return The name of the variable that represents the timer object in function code.
-     */
-    String name();
-
-    String dataType() default "";
-
-    /**
-     * A <a href="http://en.wikipedia.org/wiki/Cron#CRON_expression">CRON expression</a> in the format
-     * {@code {second} {minute} {hour} {day} {month} {day-of-week}}.
-     *
-     * <p>Some examples of CRON expressions that could be used include:</p>
-     *
-     * <table summary="CRON expression examples">
-     *     <tr>
-     *         <th>Goal</th>
-     *         <th>CRON Expression</th>
-     *     </tr>
-     *     <tr>
-     *         <td>To trigger once every five minutes:</td>
-     *         <td>0 *&#47;5 * * * *</td>
-     *     </tr>
-     *     <tr>
-     *         <td>To trigger once at the top of every hour:</td>
-     *         <td>0 0 * * * *</td>
-     *     </tr>
-     *     <tr>
-     *         <td>To trigger once every two hours:</td>
-     *         <td>0 0 *&#47;2 * * *</td>
-     *     </tr>
-     *     <tr>
-     *         <td>To trigger once every hour from 9 AM to 5 PM:</td>
-     *         <td>0 0 9-17 * * *</td>
-     *     </tr>
-     *     <tr>
-     *         <td>To trigger at 9:30 AM every day:</td>
-     *         <td>0 30 9 * * *</td>
-     *     </tr>
-     *     <tr>
-     *         <td>To trigger at 9:30 AM every weekday:</td>
-     *         <td>0 30 9 * * 1-5</td>
-     *     </tr>
-     * </table>
-     *
-     * @return A string representing a CRON expression that will be used to schedule a function to run.
-     */
-    String schedule();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/TwilioSmsOutput.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/TwilioSmsOutput.java
deleted file mode 100644
index 51165de..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/TwilioSmsOutput.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * Copyright (c) Microsoft Corporation. All rights reserved.
- * Licensed under the MIT License. See License.txt in the project root for
- * license information.
- */
-
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- *
- * @since 1.0.0
- */
-@Retention(RetentionPolicy.RUNTIME)
-@Target({ElementType.PARAMETER, ElementType.METHOD})
-public @interface TwilioSmsOutput {
-    String name();
-
-    String dataType() default "";
-
-    String accountSid();
-
-    String authToken();
-
-    String to();
-
-    String from();
-
-    String body();
-}
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/package-info.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/package-info.java
deleted file mode 100644
index 2ed96af..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/annotation/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * Annotations and support classes for use as part of the Java API for Azure Functions.
- */
-package com.microsoft.azure.serverless.functions.annotation;
\ No newline at end of file
diff --git a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/package-info.java b/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/package-info.java
deleted file mode 100644
index f378da4..0000000
--- a/azure-functions-java-core/src/main/java/com/microsoft/azure/serverless/functions/package-info.java
+++ /dev/null
@@ -1,4 +0,0 @@
-/**
- * The root package for the Java API for Azure Functions.
- */
-package com.microsoft.azure.serverless.functions;
\ No newline at end of file
diff --git a/azure-functions-java-worker/LICENSE b/azure-functions-java-worker/LICENSE
deleted file mode 100644
index 2107107..0000000
--- a/azure-functions-java-worker/LICENSE
+++ /dev/null
@@ -1,21 +0,0 @@
-    MIT License
-
-    Copyright (c) Microsoft Corporation. All rights reserved.
-
-    Permission is hereby granted, free of charge, to any person obtaining a copy
-    of this software and associated documentation files (the "Software"), to deal
-    in the Software without restriction, including without limitation the rights
-    to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-    copies of the Software, and to permit persons to whom the Software is
-    furnished to do so, subject to the following conditions:
-
-    The above copyright notice and this permission notice shall be included in all
-    copies or substantial portions of the Software.
-
-    THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-    IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-    FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-    AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
-    LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
-    OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
-    SOFTWARE
diff --git a/azure-functions-java-worker/devdoc.md b/azure-functions-java-worker/devdoc.md
deleted file mode 100644
index 92ad5b4..0000000
--- a/azure-functions-java-worker/devdoc.md
+++ /dev/null
@@ -1,119 +0,0 @@
-# Contributing
-
-This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [opencode@microsoft.com](mailto:opencode@microsoft.com) with any additional questions or comments.
-
-# Environment Setup
-
-## Maven
-
-* Run all maven commands under the root folder of this repository
-
-## IntelliJ
-
-* Import the root folder of this repository as an existing project in IntelliJ
-* Configure the Language level (under Project Structure -> Modules -> Sources) to 8
-
-## Eclipse
-
-* Set workspace to the parent folder of this repository
-* Import the root folder of this repository as an existing Maven project in Eclipse
-* Configure the project Java compiler compliance level to 1.8
-* Set the JRE libraries to JRE 1.8
-* "Ignore optional compiler problems" in "Java Build Path" for "target/generated-sources/\*\*/\*.java"
-
-# Development Cycle
-
-## Build
-
-This is a maven based project, thus you can use any command line tools or IDEs which support maven to build it. Here we will use command line as the example (you could configure your own development environment accordingly).
-
-To build the project, you just need to run one command from the root folder of this project:
-
-```sh
-mvn clean package
-```
-
-And the binary will be built to `"./azure-functions-java-worker/target/azure-functions-java-worker-<version>.jar"`.
-
-If you have updated the core interface (azure-functions-java-core), a `mvn clean install` is required for your test functions app to reference the latest core package.
-
-## Debug
-
-The Java worker alone is not enough to establish the functions app, we also need the support from [Azure Functions Host](https://github.com/Azure/azure-functions-host). You may either use a published host CLI or use the in-development host. But both of the methods require you to attach to the java process if you want a step-by-step debugging experience.
-
-### Published Host
-
-You can install the latest Azure functions CLI tool by:
-
-```sh
-npm install -g azure-functions-core-tools@core
-```
-
-By default, the binaries are located in `"<Home Folder>/.azurefunctions/bin"`. Copy the `"<Azure Functions Java Worker Root>/azure-functions-java-worker/target/azure-functions-java-worker-<version>.jar"` to `"<Home Folder>/.azurefunctions/bin/workers/java/azure-functions-java-worker.jar"`. And start it normally using:
-
-```sh
-func start
-```
-
-### Latest Host
-
-A developer may also use the latest host code by cloning the git repository [Azure Functions Host](https://github.com/Azure/azure-functions-host). Now you need to navigate to the root folder of the host project and build it through:
-
-```sh
-dotnet restore WebJobs.Script.sln
-dotnet build WebJobs.Script.sln
-```
-
-After the build succeeded, set the environment variable `"AzureWebJobsScriptRoot"` to the root folder path (the folder which contains the `host.json`) of your test functions app; and copy the `"<Azure Functions Java Worker Root>/azure-functions-java-worker/target/azure-functions-java-worker-<version>.jar"` to `"<Azure Functions Host Root>/src/WebJobs.Script.WebHost/bin/Debug/netcoreapp2.0/workers/java/azure-functions-java-worker.jar"`. Now it's time to start the host:
-
-```sh
-dotnet ./src/WebJobs.Script.WebHost/bin/Debug/netcoreapp2.0/Microsoft.Azure.WebJobs.Script.WebHost.dll
-```
-
-> Note: Remember to remove `"AzureWebJobsScriptRoot"` environment variable after you have finished debugging, because it will also influence the `func` CLI tool.
-
-## Generate JavaDoc
-
-Simply using the following command to do so (if there are dependency errors, run `mvn clean install` beforehand):
-
-```sh
-mvn javadoc:javadoc
-```
-
-# Coding Convention
-
-## Version Management
-
-Our version strategy just follows the maven package version convention: `<major>.<minor>.<hotfix>-<prerelease>`, where:
-
-* `<major>`: Increasing when incompatible breaking changes happened
-* `<minor>`: Increasing when new features added
-* `<hotfix>`: Increasing when a hotfix is pushed
-* `<prerelease>`: A string representing a pre-release version
-
-**Use `SNAPSHOT` pre-release tag for packages under development**. Here is the sample workflow:
-
-1. Initially the package version is `1.0-SNAPSHOT`. *There is no hotfix for SNAPSHOT*
-2. Modify the version to `1.0.0-ALPHA` for internal testing purpose. *Notice the hotfix exists here*
-3. After several BUG fixes, update the version to `1.0.0`.
-4. Create a new development version `1.1-SNAPSHOT`.
-5. Make a new hotfix into `1.0-SNAPSHOT`, and release to version `1.0.1`.
-6. New features are added to `1.1-SNAPSHOT`.
-
-Every time you release a non-development version (like `1.0.0-ALPHA` or `1.0.1`), you also need to update the tag in your git repository.
-
-# Advanced Java Concepts
-
-## Reflection for Type
-
-Primitives have two different type definitions, for example: `int.class` (which is identical to `Integer.TYPE`) is not `Integer.class`.
-
-All Java types are represented by `Type` interface, which may be one of the following implementations:
-* `Class<?>`: normal class type like `String`
-* `ParameterizedType`: generic class type like `List<Integer>`
-* `WildcardType`: generic argument contains question mark like `? extends Number`
-* `TypeVariable<?>`: generic argument like `T`
-* `GenericArrayType`: generic array like `T[]`
-
-For the generic type behaviors (including compile-time validation and runtime type erasure) in Java, please refer to *[Generics in the Java Programming Language
-](https://www.cs.rice.edu/~cork/312/Readings/GenericsTutorial.pdf)*.
diff --git a/azure-functions-java-worker/pom.xml b/azure-functions-java-worker/pom.xml
deleted file mode 100644
index 538c923..0000000
--- a/azure-functions-java-worker/pom.xml
+++ /dev/null
@@ -1,211 +0,0 @@
-<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/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-  <groupId>com.microsoft.azure</groupId>
-  <artifactId>azure-functions-java-worker</artifactId>
-  <version>1.0.0-beta-4</version>
-  <packaging>jar</packaging>
-
-  <name>Microsoft Azure Functions Java Runtime</name>
-  <description>This package contains the Java runtime environment for Microsoft Azure functions host.</description>
-  <url>https://azure.microsoft.com/en-us/services/functions</url>
-  <organization>
-    <name>Microsoft Azure</name>
-    <url>https://azure.microsoft.com</url>
-  </organization>
-
-  <properties>
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-  </properties>
-
-  <licenses>
-    <license>
-      <name>MIT License</name>
-      <url>https://opensource.org/licenses/MIT</url>
-      <distribution>repo</distribution>
-    </license>
-  </licenses>
-
-  <scm>
-    <connection>scm:git:https://github.com/Azure/azure-functions-java-worker</connection>
-    <developerConnection>scm:git:git@github.com:Azure/azure-functions-java-worker</developerConnection>
-    <url>https://github.com/Azure/azure-functions-java-worker</url>
-    <tag>HEAD</tag>
-  </scm>
-
-  <developers>
-    <developer>
-      <id>junyi</id>
-      <name>Junyi Yi</name>
-      <email>junyi@microsoft.com</email>
-    </developer>
-  </developers>
-
-  <dependencies>
-    <dependency>
-      <groupId>com.microsoft.azure</groupId>
-      <artifactId>azure-functions-java-core</artifactId>
-      <version>1.0.0-beta-3</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.protobuf</groupId>
-      <artifactId>protobuf-java</artifactId>
-      <version>3.4.0</version>
-    </dependency>
-    <dependency>
-      <groupId>io.grpc</groupId>
-      <artifactId>grpc-protobuf</artifactId>
-      <version>1.6.1</version>
-    </dependency>
-    <dependency>
-      <groupId>io.grpc</groupId>
-      <artifactId>grpc-stub</artifactId>
-      <version>1.6.1</version>
-    </dependency>
-    <dependency>
-      <groupId>io.grpc</groupId>
-      <artifactId>grpc-netty</artifactId>
-      <version>1.6.1</version>
-    </dependency>
-    <dependency>
-      <groupId>com.google.guava</groupId>
-      <artifactId>guava</artifactId>
-      <version>23.2-jre</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-      <version>3.6</version>
-    </dependency>
-    <dependency>
-      <groupId>commons-cli</groupId>
-      <artifactId>commons-cli</artifactId>
-      <version>1.4</version>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.core</groupId>
-      <artifactId>jackson-core</artifactId>
-      <version>2.9.2</version>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.core</groupId>
-      <artifactId>jackson-databind</artifactId>
-      <version>2.9.2</version>
-    </dependency>
-    <dependency>
-      <groupId>com.fasterxml.jackson.core</groupId>
-      <artifactId>jackson-annotations</artifactId>
-      <version>2.9.2</version>
-    </dependency>
-    <dependency>
-      <groupId>javax.annotation</groupId>
-      <artifactId>javax.annotation-api</artifactId>
-      <version>1.3.1</version>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <version>4.12</version>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <extensions>
-      <extension>
-        <groupId>kr.motd.maven</groupId>
-        <artifactId>os-maven-plugin</artifactId>
-        <version>1.5.0.Final</version>
-      </extension>
-    </extensions>
-    <plugins>
-      <plugin>
-        <groupId>org.xolstice.maven.plugins</groupId>
-        <artifactId>protobuf-maven-plugin</artifactId>
-        <version>0.5.0</version>
-        <configuration>
-          <protocArtifact>com.google.protobuf:protoc:3.4.0:exe:${os.detected.classifier}</protocArtifact>
-          <pluginId>grpc-java</pluginId>
-          <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.6.1:exe:${os.detected.classifier}</pluginArtifact>
-        </configuration>
-        <executions>
-          <execution>
-            <goals>
-              <goal>compile</goal>
-              <goal>compile-custom</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <version>3.7.0</version>
-        <configuration>
-          <source>1.8</source>
-          <target>1.8</target>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-shade-plugin</artifactId>
-        <version>3.1.0</version>
-        <executions>
-          <execution>
-            <phase>package</phase>
-            <goals>
-              <goal>shade</goal>
-            </goals>
-            <configuration>
-              <transformers>
-                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
-                  <mainClass>com.microsoft.azure.webjobs.script.Application</mainClass>
-                  <manifestEntries>
-                    <Implementation-Title>${project.name}</Implementation-Title>
-                    <Implementation-Version>${project.version}</Implementation-Version>
-                    <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>
-                  </manifestEntries>
-                </transformer>
-              </transformers>
-              <filters>
-                <filter>
-                  <artifact>*:*</artifact>
-                  <excludes>
-                    <exclude>META-INF/*.SF</exclude>
-                    <exclude>META-INF/*.DSA</exclude>
-                    <exclude>META-INF/*.RSA</exclude>
-                  </excludes>
-                </filter>
-              </filters>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <version>2.21.0</version>
-        <configuration>
-          <workingDirectory>${project.build.directory}</workingDirectory>
-          <systemProperties>
-            <property>
-              <name>testing-project-jar</name>
-              <value>${project.artifactId}-${project.version}-tests.jar</value>
-            </property>
-          </systemProperties>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <version>3.1.0</version>
-        <executions>
-          <execution>
-            <phase>test-compile</phase>
-            <goals>
-              <goal>test-jar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-  
-</project>
diff --git a/core-package.md b/core-package.md
deleted file mode 100644
index 20e67d2..0000000
--- a/core-package.md
+++ /dev/null
@@ -1,28 +0,0 @@
-# Azure Functions Java Core
-
-This package contains libraries to author Azure Functions in Java.
-
-### Usage
-Use this package by including the following snippet in your `pom.xml`.
-
-```xml
-<dependency>
-    <groupId>com.microsoft.azure.serverless</groupId>
-    <artifactId>azure-function-java-core</artifactId>
-    <version>1.0.0-beta-2</version>
-</dependency>
-```
-
-### Annotation for Triggers and Bindings
-Instead of writing `function.json`, you can use annotations in code to specify triggers and bindings of your functions.
-`function.json` can be automatically generated by [Maven Plugin for Azure Functions](https://github.com/Microsoft/azure-maven-plugins/tree/master/azure-functions-maven-plugin). 
-
-The following table lists the Java annotations for each binding type.
-
-Binding | Annotation
----|---
-HTTP | <ul><li>`HttpTrigger`</li><li>`HttpOutput`</li></ul>
-Storage Blob | <ul><li>`BlobTrigger`</li><li>`BlobInput`</li><li>`BlobOutput`</li></ul>
-Storage Queue | <ul><li>`QueueTrigger`</li><li>`QueueOutput`</li></ul>
-Storage Table | <ul><li>`TableInput`</li><li>`TableOutput`</li></ul>
-Timer | <ul><li>`TimerTrigger`</li></ul>
diff --git a/pom.xml b/pom.xml
index 44fdbf7..2a13988 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,16 +1,206 @@
 <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/maven-v4_0_0.xsd">
   <modelVersion>4.0.0</modelVersion>
-  <groupId>com.microsoft.azure.serverless</groupId>
-  <artifactId>azure-functions-java-runtime-solution</artifactId>
-  <version>1.0.0</version>
-  <packaging>pom</packaging>
+  <groupId>com.microsoft.azure.functions</groupId>
+  <artifactId>azure-functions-java-worker</artifactId>
+  <version>1.0.0-beta-4</version>
+  <packaging>jar</packaging>
 
-  <name>Microsoft Azure Functions Java Runtime Solution</name>
-  <description>This solution builds both the Java core types as well as the runtime for Microsoft Azure Functions.</description>
+  <name>Microsoft Azure Functions Java Runtime</name>
+  <description>This package contains the Java runtime environment for Microsoft Azure functions host.</description>
   <url>https://azure.microsoft.com/en-us/services/functions</url>
+  <organization>
+    <name>Microsoft Azure</name>
+    <url>https://azure.microsoft.com</url>
+  </organization>
 
-  <modules>
-    <module>azure-functions-java-core</module>
-    <module>azure-functions-java-worker</module>
-  </modules>
+  <properties>
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+  </properties>
+
+  <licenses>
+    <license>
+      <name>MIT License</name>
+      <url>https://opensource.org/licenses/MIT</url>
+      <distribution>repo</distribution>
+    </license>
+  </licenses>
+
+  <scm>
+    <connection>scm:git:https://github.com/Azure/azure-functions-java-worker</connection>
+    <developerConnection>scm:git:git@github.com:Azure/azure-functions-java-worker</developerConnection>
+    <url>https://github.com/Azure/azure-functions-java-worker</url>
+    <tag>HEAD</tag>
+  </scm>
+
+  <developers>
+    <developer>
+      <id>junyi</id>
+      <name>Junyi Yi</name>
+      <email>junyi@microsoft.com</email>
+    </developer>
+  </developers>
+
+  <dependencies>
+    <dependency>
+      <groupId>com.microsoft.azure.functions</groupId>
+      <artifactId>azure-functions-java-library</artifactId>
+      <version>1.0.0-beta-4</version>
+    </dependency>
+    <dependency>
+      <groupId>com.google.protobuf</groupId>
+      <artifactId>protobuf-java</artifactId>
+      <version>3.4.0</version>
+    </dependency>
+    <dependency>
+      <groupId>io.grpc</groupId>
+      <artifactId>grpc-protobuf</artifactId>
+      <version>1.6.1</version>
+    </dependency>
+    <dependency>
+      <groupId>io.grpc</groupId>
+      <artifactId>grpc-stub</artifactId>
+      <version>1.6.1</version>
+    </dependency>
+    <dependency>
+      <groupId>io.grpc</groupId>
+      <artifactId>grpc-netty</artifactId>
+      <version>1.6.1</version>
+    </dependency>
+    <dependency>
+      <groupId>com.google.guava</groupId>
+      <artifactId>guava</artifactId>
+      <version>23.2-jre</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+      <version>3.6</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-cli</groupId>
+      <artifactId>commons-cli</artifactId>
+      <version>1.4</version>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-databind</artifactId>
+      <version>2.9.5</version>
+    </dependency>
+    <dependency>
+      <groupId>com.fasterxml.jackson.core</groupId>
+      <artifactId>jackson-annotations</artifactId>
+      <version>2.9.5</version>
+    </dependency>
+    <dependency>
+      <groupId>javax.annotation</groupId>
+      <artifactId>javax.annotation-api</artifactId>
+      <version>1.3.1</version>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <version>4.12</version>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <extensions>
+      <extension>
+        <groupId>kr.motd.maven</groupId>
+        <artifactId>os-maven-plugin</artifactId>
+        <version>1.5.0.Final</version>
+      </extension>
+    </extensions>
+    <plugins>
+      <plugin>
+        <groupId>org.xolstice.maven.plugins</groupId>
+        <artifactId>protobuf-maven-plugin</artifactId>
+        <version>0.5.0</version>
+        <configuration>
+          <protocArtifact>com.google.protobuf:protoc:3.4.0:exe:${os.detected.classifier}</protocArtifact>
+          <pluginId>grpc-java</pluginId>
+          <pluginArtifact>io.grpc:protoc-gen-grpc-java:1.6.1:exe:${os.detected.classifier}</pluginArtifact>
+        </configuration>
+        <executions>
+          <execution>
+            <goals>
+              <goal>compile</goal>
+              <goal>compile-custom</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <artifactId>maven-compiler-plugin</artifactId>
+        <version>3.7.0</version>
+        <configuration>
+          <source>1.8</source>
+          <target>1.8</target>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-shade-plugin</artifactId>
+        <version>3.1.0</version>
+        <executions>
+          <execution>
+            <phase>package</phase>
+            <goals>
+              <goal>shade</goal>
+            </goals>
+            <configuration>
+              <transformers>
+                <transformer implementation="org.apache.maven.plugins.shade.resource.ManifestResourceTransformer">
+                  <mainClass>com.microsoft.azure.functions.Application</mainClass>
+                  <manifestEntries>
+                    <Implementation-Title>${project.name}</Implementation-Title>
+                    <Implementation-Version>${project.version}</Implementation-Version>
+                    <Implementation-Vendor>${project.organization.name}</Implementation-Vendor>
+                  </manifestEntries>
+                </transformer>
+              </transformers>
+              <filters>
+                <filter>
+                  <artifact>*:*</artifact>
+                  <excludes>
+                    <exclude>META-INF/*.SF</exclude>
+                    <exclude>META-INF/*.DSA</exclude>
+                    <exclude>META-INF/*.RSA</exclude>
+                  </excludes>
+                </filter>
+              </filters>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <version>2.21.0</version>
+        <configuration>
+          <workingDirectory>${project.build.directory}</workingDirectory>
+          <systemProperties>
+            <property>
+              <name>testing-project-jar</name>
+              <value>${project.artifactId}-${project.version}-tests.jar</value>
+            </property>
+          </systemProperties>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-jar-plugin</artifactId>
+        <version>3.1.0</version>
+        <executions>
+          <execution>
+            <phase>test-compile</phase>
+            <goals>
+              <goal>test-jar</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  
 </project>
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/Application.java b/src/main/java/com/microsoft/azure/functions/Application.java
similarity index 99%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/Application.java
rename to src/main/java/com/microsoft/azure/functions/Application.java
index 6280b7d..a0d7e29 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/Application.java
+++ b/src/main/java/com/microsoft/azure/functions/Application.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script;
+package com.microsoft.azure.functions;
 
 import java.util.logging.*;
 import javax.annotation.*;
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/IApplication.java b/src/main/java/com/microsoft/azure/functions/IApplication.java
similarity index 75%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/IApplication.java
rename to src/main/java/com/microsoft/azure/functions/IApplication.java
index 921eef7..cf9e9a8 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/IApplication.java
+++ b/src/main/java/com/microsoft/azure/functions/IApplication.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script;
+package com.microsoft.azure.functions;
 
 public interface IApplication {
     boolean logToConsole();
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/JavaWorkerClient.java b/src/main/java/com/microsoft/azure/functions/JavaWorkerClient.java
similarity index 94%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/JavaWorkerClient.java
rename to src/main/java/com/microsoft/azure/functions/JavaWorkerClient.java
index 84d2fa4..e760edc 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/JavaWorkerClient.java
+++ b/src/main/java/com/microsoft/azure/functions/JavaWorkerClient.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script;
+package com.microsoft.azure.functions;
 
 import java.util.*;
 import java.util.concurrent.*;
@@ -10,10 +10,10 @@ import javax.annotation.*;
 import io.grpc.*;
 import io.grpc.stub.*;
 
-import com.microsoft.azure.webjobs.script.broker.*;
-import com.microsoft.azure.webjobs.script.handler.*;
-import com.microsoft.azure.webjobs.script.reflect.*;
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.broker.*;
+import com.microsoft.azure.functions.handler.*;
+import com.microsoft.azure.functions.reflect.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 
 /**
  * Grpc client talks with the Azure Functions Runtime Host. It will dispatch to different message handlers according to the inbound message type.
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/WorkerLogManager.java b/src/main/java/com/microsoft/azure/functions/WorkerLogManager.java
similarity index 98%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/WorkerLogManager.java
rename to src/main/java/com/microsoft/azure/functions/WorkerLogManager.java
index 5c66a61..90f06af 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/WorkerLogManager.java
+++ b/src/main/java/com/microsoft/azure/functions/WorkerLogManager.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script;
+package com.microsoft.azure.functions;
 
 import java.io.*;
 import java.util.logging.*;
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/BindingData.java b/src/main/java/com/microsoft/azure/functions/binding/BindingData.java
similarity index 95%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/BindingData.java
rename to src/main/java/com/microsoft/azure/functions/binding/BindingData.java
index f4a23c2..aa074ab 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/BindingData.java
+++ b/src/main/java/com/microsoft/azure/functions/binding/BindingData.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.binding;
+package com.microsoft.azure.functions.binding;
 
 import org.apache.commons.lang3.*;
 
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/BindingDataStore.java b/src/main/java/com/microsoft/azure/functions/binding/BindingDataStore.java
similarity index 93%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/BindingDataStore.java
rename to src/main/java/com/microsoft/azure/functions/binding/BindingDataStore.java
index bb1bdd1..ef6c3b0 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/BindingDataStore.java
+++ b/src/main/java/com/microsoft/azure/functions/binding/BindingDataStore.java
@@ -1,17 +1,17 @@
-package com.microsoft.azure.webjobs.script.binding;
+package com.microsoft.azure.functions.binding;
 
 import java.lang.reflect.*;
 import java.util.*;
 import java.util.function.*;
 import java.util.stream.*;
 
-import com.microsoft.azure.webjobs.script.binding.BindingData.*;
-import com.microsoft.azure.webjobs.script.binding.BindingDefinition.*;
-import com.microsoft.azure.webjobs.script.broker.*;
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.binding.BindingData.*;
+import com.microsoft.azure.functions.binding.BindingDefinition.*;
+import com.microsoft.azure.functions.broker.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 
-import static com.microsoft.azure.webjobs.script.binding.BindingData.MatchingLevel.*;
-import static com.microsoft.azure.webjobs.script.binding.BindingDefinition.BindingType.*;
+import static com.microsoft.azure.functions.binding.BindingData.MatchingLevel.*;
+import static com.microsoft.azure.functions.binding.BindingDefinition.BindingType.*;
 
 /**
  * A warehouse storing all binding related information including actual binding value as well as binding declaration info.
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/BindingDefinition.java b/src/main/java/com/microsoft/azure/functions/binding/BindingDefinition.java
similarity index 94%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/BindingDefinition.java
rename to src/main/java/com/microsoft/azure/functions/binding/BindingDefinition.java
index 535580b..c8fcba5 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/BindingDefinition.java
+++ b/src/main/java/com/microsoft/azure/functions/binding/BindingDefinition.java
@@ -1,6 +1,6 @@
-package com.microsoft.azure.webjobs.script.binding;
+package com.microsoft.azure.functions.binding;
 
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 
 public final class BindingDefinition {
     public BindingDefinition(String name, BindingInfo info) {
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/DataOperations.java b/src/main/java/com/microsoft/azure/functions/binding/DataOperations.java
similarity index 93%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/DataOperations.java
rename to src/main/java/com/microsoft/azure/functions/binding/DataOperations.java
index 56207ef..8fe31ca 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/DataOperations.java
+++ b/src/main/java/com/microsoft/azure/functions/binding/DataOperations.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.binding;
+package com.microsoft.azure.functions.binding;
 
 import java.lang.reflect.*;
 import java.util.*;
@@ -6,8 +6,8 @@ import java.util.*;
 import org.apache.commons.lang3.*;
 import org.apache.commons.lang3.reflect.*;
 
-import com.microsoft.azure.webjobs.script.binding.BindingData.*;
-import com.microsoft.azure.webjobs.script.broker.*;
+import com.microsoft.azure.functions.binding.BindingData.*;
+import com.microsoft.azure.functions.broker.*;
 
 @FunctionalInterface
 interface CheckedFunction<T, R> {
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/RpcComplexDataSources.java b/src/main/java/com/microsoft/azure/functions/binding/RpcComplexDataSources.java
similarity index 94%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/RpcComplexDataSources.java
rename to src/main/java/com/microsoft/azure/functions/binding/RpcComplexDataSources.java
index 565ed67..cc8593a 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/RpcComplexDataSources.java
+++ b/src/main/java/com/microsoft/azure/functions/binding/RpcComplexDataSources.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.binding;
+package com.microsoft.azure.functions.binding;
 
 import java.lang.reflect.*;
 import java.net.*;
@@ -10,12 +10,11 @@ import com.fasterxml.jackson.annotation.*;
 import com.fasterxml.jackson.databind.*;
 import org.apache.commons.lang3.reflect.*;
 
-import com.microsoft.azure.serverless.functions.*;
-import com.microsoft.azure.webjobs.script.*;
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
-import com.microsoft.azure.webjobs.script.binding.BindingData.*;
+import com.microsoft.azure.functions.*;
+import com.microsoft.azure.functions.rpc.messages.*;
+import com.microsoft.azure.functions.binding.BindingData.*;
 
-import static com.microsoft.azure.webjobs.script.binding.BindingData.MatchingLevel.*;
+import static com.microsoft.azure.functions.binding.BindingData.MatchingLevel.*;
 
 final class ExecutionContextDataSource extends DataSource<ExecutionContext> implements ExecutionContext {
     ExecutionContextDataSource(String invocationId, String funcname) {
@@ -119,11 +118,6 @@ final class RpcHttpRequestDataSource extends DataSource<RpcHttpRequestDataSource
         @Override
         public Object getBody() { return this.body; }
 
-        @Override
-        public HttpResponseMessage createResponse(int status) {
-            return createResponse(status, null);
-        }
-
         @Override
         public HttpResponseMessage createResponse(int status, Object body) {
             RpcHttpDataTarget response = new RpcHttpDataTarget();
@@ -132,6 +126,10 @@ final class RpcHttpRequestDataSource extends DataSource<RpcHttpRequestDataSource
             return response;
         }
 
+        public HttpResponseMessage createResponse(int status) {
+            return createResponse(status, null);
+        }
+
         private RpcHttpRequestDataSource parentDataSource;
         private Object body;
     }
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/RpcDataTargets.java b/src/main/java/com/microsoft/azure/functions/binding/RpcDataTargets.java
similarity index 96%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/RpcDataTargets.java
rename to src/main/java/com/microsoft/azure/functions/binding/RpcDataTargets.java
index f9487b3..b862509 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/RpcDataTargets.java
+++ b/src/main/java/com/microsoft/azure/functions/binding/RpcDataTargets.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.binding;
+package com.microsoft.azure.functions.binding;
 
 import java.util.*;
 
@@ -6,10 +6,10 @@ import com.fasterxml.jackson.annotation.*;
 import com.fasterxml.jackson.databind.*;
 import com.google.protobuf.*;
 
-import com.microsoft.azure.serverless.functions.*;
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 
-import static com.microsoft.azure.webjobs.script.binding.BindingData.MatchingLevel.*;
+import static com.microsoft.azure.functions.binding.BindingData.MatchingLevel.*;
 
 final class RpcHttpDataTarget extends DataTarget implements HttpResponseMessage {
     RpcHttpDataTarget() {
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/RpcPrimitiveDataSources.java b/src/main/java/com/microsoft/azure/functions/binding/RpcPrimitiveDataSources.java
similarity index 97%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/RpcPrimitiveDataSources.java
rename to src/main/java/com/microsoft/azure/functions/binding/RpcPrimitiveDataSources.java
index 200ce9c..1cbab5c 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/RpcPrimitiveDataSources.java
+++ b/src/main/java/com/microsoft/azure/functions/binding/RpcPrimitiveDataSources.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.binding;
+package com.microsoft.azure.functions.binding;
 
 import java.lang.reflect.Type;
 import java.util.*;
@@ -6,7 +6,7 @@ import java.util.*;
 import com.google.protobuf.*;
 import org.apache.commons.lang3.*;
 
-import static com.microsoft.azure.webjobs.script.binding.BindingData.MatchingLevel.*;
+import static com.microsoft.azure.functions.binding.BindingData.MatchingLevel.*;
 
 final class RpcEmptyDataSource extends DataSource<Object> {
     RpcEmptyDataSource(String name) { super(name, null, EMPTY_DATA_OPERATIONS); }
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/SourceAndTarget.java b/src/main/java/com/microsoft/azure/functions/binding/SourceAndTarget.java
similarity index 92%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/SourceAndTarget.java
rename to src/main/java/com/microsoft/azure/functions/binding/SourceAndTarget.java
index bbc1850..58f39da 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/binding/SourceAndTarget.java
+++ b/src/main/java/com/microsoft/azure/functions/binding/SourceAndTarget.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.binding;
+package com.microsoft.azure.functions.binding;
 
 import java.lang.reflect.*;
 import java.util.*;
@@ -6,11 +6,11 @@ import java.util.*;
 import org.apache.commons.lang3.*;
 import org.apache.commons.lang3.reflect.*;
 
-import com.microsoft.azure.serverless.functions.*;
-import com.microsoft.azure.webjobs.script.binding.BindingData.*;
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.*;
+import com.microsoft.azure.functions.binding.BindingData.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 
-import static com.microsoft.azure.webjobs.script.binding.BindingData.MatchingLevel.*;
+import static com.microsoft.azure.functions.binding.BindingData.MatchingLevel.*;
 
 /**
  * Base class of all data sources. Provides basic information and logic for type conversion.
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/CoreTypeResolver.java b/src/main/java/com/microsoft/azure/functions/broker/CoreTypeResolver.java
similarity index 95%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/CoreTypeResolver.java
rename to src/main/java/com/microsoft/azure/functions/broker/CoreTypeResolver.java
index 66b6cc2..47147a5 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/CoreTypeResolver.java
+++ b/src/main/java/com/microsoft/azure/functions/broker/CoreTypeResolver.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.broker;
+package com.microsoft.azure.functions.broker;
 
 import java.io.*;
 import java.lang.annotation.*;
@@ -10,8 +10,8 @@ import com.google.common.reflect.ClassPath;
 import com.google.common.reflect.ClassPath.*;
 import org.apache.commons.lang3.*;
 
-import com.microsoft.azure.serverless.functions.*;
-import com.microsoft.azure.serverless.functions.annotation.*;
+import com.microsoft.azure.functions.*;
+import com.microsoft.azure.functions.annotation.*;
 
 public class CoreTypeResolver {
     private static boolean isOutputParameter(Type target) {
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/JavaFunctionBroker.java b/src/main/java/com/microsoft/azure/functions/broker/JavaFunctionBroker.java
similarity index 91%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/JavaFunctionBroker.java
rename to src/main/java/com/microsoft/azure/functions/broker/JavaFunctionBroker.java
index 390f66d..49e7a1b 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/JavaFunctionBroker.java
+++ b/src/main/java/com/microsoft/azure/functions/broker/JavaFunctionBroker.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.broker;
+package com.microsoft.azure.functions.broker;
 
 import java.io.*;
 import java.net.*;
@@ -7,10 +7,10 @@ import java.util.concurrent.*;
 
 import org.apache.commons.lang3.tuple.*;
 
-import com.microsoft.azure.webjobs.script.binding.*;
-import com.microsoft.azure.webjobs.script.description.*;
-import com.microsoft.azure.webjobs.script.reflect.*;
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.binding.*;
+import com.microsoft.azure.functions.description.*;
+import com.microsoft.azure.functions.reflect.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 
 /**
  * A broker between JAR methods and the function RPC. It can load methods using reflection, and invoke them at runtime.
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/JavaMethodExecutor.java b/src/main/java/com/microsoft/azure/functions/broker/JavaMethodExecutor.java
similarity index 88%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/JavaMethodExecutor.java
rename to src/main/java/com/microsoft/azure/functions/broker/JavaMethodExecutor.java
index 40bdd4a..8b2e31a 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/JavaMethodExecutor.java
+++ b/src/main/java/com/microsoft/azure/functions/broker/JavaMethodExecutor.java
@@ -1,14 +1,14 @@
-package com.microsoft.azure.webjobs.script.broker;
+package com.microsoft.azure.functions.broker;
 
 import java.lang.reflect.*;
 import java.net.*;
 import java.util.*;
 
-import com.microsoft.azure.serverless.functions.annotation.*;
-import com.microsoft.azure.webjobs.script.binding.*;
-import com.microsoft.azure.webjobs.script.description.*;
-import com.microsoft.azure.webjobs.script.reflect.*;
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.annotation.*;
+import com.microsoft.azure.functions.binding.*;
+import com.microsoft.azure.functions.description.*;
+import com.microsoft.azure.functions.reflect.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 
 /**
  * Used to executor of arbitrary Java method in any JAR using reflection.
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/JavaMethodInvokeInfo.java b/src/main/java/com/microsoft/azure/functions/broker/JavaMethodInvokeInfo.java
similarity index 97%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/JavaMethodInvokeInfo.java
rename to src/main/java/com/microsoft/azure/functions/broker/JavaMethodInvokeInfo.java
index 6e261ac..e490be5 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/JavaMethodInvokeInfo.java
+++ b/src/main/java/com/microsoft/azure/functions/broker/JavaMethodInvokeInfo.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.broker;
+package com.microsoft.azure.functions.broker;
 
 import java.lang.reflect.*;
 import java.util.*;
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/OverloadResolver.java b/src/main/java/com/microsoft/azure/functions/broker/OverloadResolver.java
similarity index 96%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/OverloadResolver.java
rename to src/main/java/com/microsoft/azure/functions/broker/OverloadResolver.java
index b0324be..1878659 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/broker/OverloadResolver.java
+++ b/src/main/java/com/microsoft/azure/functions/broker/OverloadResolver.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.broker;
+package com.microsoft.azure.functions.broker;
 
 import java.lang.invoke.*;
 import java.lang.reflect.*;
@@ -6,8 +6,8 @@ import java.util.*;
 import java.util.stream.*;
 
 import com.google.common.collect.*;
-import com.microsoft.azure.serverless.functions.*;
-import com.microsoft.azure.webjobs.script.binding.*;
+import com.microsoft.azure.functions.*;
+import com.microsoft.azure.functions.binding.*;
 import org.apache.commons.lang3.reflect.*;
 
 /**
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/description/FunctionMethodDescriptor.java b/src/main/java/com/microsoft/azure/functions/description/FunctionMethodDescriptor.java
similarity index 98%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/description/FunctionMethodDescriptor.java
rename to src/main/java/com/microsoft/azure/functions/description/FunctionMethodDescriptor.java
index 1c942e8..ac29216 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/description/FunctionMethodDescriptor.java
+++ b/src/main/java/com/microsoft/azure/functions/description/FunctionMethodDescriptor.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.description;
+package com.microsoft.azure.functions.description;
 
 import java.io.*;
 import java.util.*;
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/FunctionLoadRequestHandler.java b/src/main/java/com/microsoft/azure/functions/handler/FunctionLoadRequestHandler.java
similarity index 87%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/FunctionLoadRequestHandler.java
rename to src/main/java/com/microsoft/azure/functions/handler/FunctionLoadRequestHandler.java
index e112916..eb0102d 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/FunctionLoadRequestHandler.java
+++ b/src/main/java/com/microsoft/azure/functions/handler/FunctionLoadRequestHandler.java
@@ -1,10 +1,10 @@
-package com.microsoft.azure.webjobs.script.handler;
+package com.microsoft.azure.functions.handler;
 
 import java.util.*;
 
-import com.microsoft.azure.webjobs.script.broker.*;
-import com.microsoft.azure.webjobs.script.description.*;
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.broker.*;
+import com.microsoft.azure.functions.description.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 
 public class FunctionLoadRequestHandler extends MessageHandler<FunctionLoadRequest, FunctionLoadResponse.Builder> {
     public FunctionLoadRequestHandler(JavaFunctionBroker broker) {
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/InvocationRequestHandler.java b/src/main/java/com/microsoft/azure/functions/handler/InvocationRequestHandler.java
similarity index 87%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/InvocationRequestHandler.java
rename to src/main/java/com/microsoft/azure/functions/handler/InvocationRequestHandler.java
index 3bfcf90..091951a 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/InvocationRequestHandler.java
+++ b/src/main/java/com/microsoft/azure/functions/handler/InvocationRequestHandler.java
@@ -1,11 +1,11 @@
-package com.microsoft.azure.webjobs.script.handler;
+package com.microsoft.azure.functions.handler;
 
 import java.util.*;
 import java.util.logging.*;
 
-import com.microsoft.azure.webjobs.script.*;
-import com.microsoft.azure.webjobs.script.broker.*;
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.*;
+import com.microsoft.azure.functions.broker.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 
 public class InvocationRequestHandler extends MessageHandler<InvocationRequest, InvocationResponse.Builder> {
     public InvocationRequestHandler(JavaFunctionBroker broker) {
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/MessageHandler.java b/src/main/java/com/microsoft/azure/functions/handler/MessageHandler.java
similarity index 95%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/MessageHandler.java
rename to src/main/java/com/microsoft/azure/functions/handler/MessageHandler.java
index 32fb15f..94d8616 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/MessageHandler.java
+++ b/src/main/java/com/microsoft/azure/functions/handler/MessageHandler.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.handler;
+package com.microsoft.azure.functions.handler;
 
 import java.util.concurrent.*;
 import java.util.function.*;
@@ -7,8 +7,8 @@ import java.util.logging.*;
 import com.google.protobuf.*;
 import org.apache.commons.lang3.*;
 
-import com.microsoft.azure.webjobs.script.*;
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 
 /**
  * Generic base class for all message handlers. It does the input marshaling, business logic as well as the output marshaling.
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/RpcLogHandler.java b/src/main/java/com/microsoft/azure/functions/handler/RpcLogHandler.java
similarity index 92%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/RpcLogHandler.java
rename to src/main/java/com/microsoft/azure/functions/handler/RpcLogHandler.java
index ab306e7..9418101 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/RpcLogHandler.java
+++ b/src/main/java/com/microsoft/azure/functions/handler/RpcLogHandler.java
@@ -1,12 +1,12 @@
-package com.microsoft.azure.webjobs.script.handler;
+package com.microsoft.azure.functions.handler;
 
 import java.util.*;
 import java.util.logging.*;
 
 import org.apache.commons.lang3.exception.*;
 
-import com.microsoft.azure.webjobs.script.*;
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 
 public class RpcLogHandler extends OutboundMessageHandler<RpcLog.Builder> {
     public RpcLogHandler(LogRecord record, String invocationId) {
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/StartStreamHandler.java b/src/main/java/com/microsoft/azure/functions/handler/StartStreamHandler.java
similarity index 79%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/StartStreamHandler.java
rename to src/main/java/com/microsoft/azure/functions/handler/StartStreamHandler.java
index 4b5ab66..2cd05f8 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/StartStreamHandler.java
+++ b/src/main/java/com/microsoft/azure/functions/handler/StartStreamHandler.java
@@ -1,9 +1,9 @@
-package com.microsoft.azure.webjobs.script.handler;
+package com.microsoft.azure.functions.handler;
 
 import java.util.logging.*;
 
-import com.microsoft.azure.webjobs.script.*;
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 
 public class StartStreamHandler extends OutboundMessageHandler<StartStream.Builder> {
     public StartStreamHandler(String workerId) {
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/WorkerInitRequestHandler.java b/src/main/java/com/microsoft/azure/functions/handler/WorkerInitRequestHandler.java
similarity index 78%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/WorkerInitRequestHandler.java
rename to src/main/java/com/microsoft/azure/functions/handler/WorkerInitRequestHandler.java
index faabd9b..3f88fad 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/handler/WorkerInitRequestHandler.java
+++ b/src/main/java/com/microsoft/azure/functions/handler/WorkerInitRequestHandler.java
@@ -1,7 +1,7 @@
-package com.microsoft.azure.webjobs.script.handler;
+package com.microsoft.azure.functions.handler;
 
-import com.microsoft.azure.webjobs.script.*;
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 
 public class WorkerInitRequestHandler extends MessageHandler<WorkerInitRequest, WorkerInitResponse.Builder> {
     public WorkerInitRequestHandler() {
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/reflect/ClassLoaderProvider.java b/src/main/java/com/microsoft/azure/functions/reflect/ClassLoaderProvider.java
similarity index 89%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/reflect/ClassLoaderProvider.java
rename to src/main/java/com/microsoft/azure/functions/reflect/ClassLoaderProvider.java
index b809a18..57c8bbe 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/reflect/ClassLoaderProvider.java
+++ b/src/main/java/com/microsoft/azure/functions/reflect/ClassLoaderProvider.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.reflect;
+package com.microsoft.azure.functions.reflect;
 
 import java.io.*;
 import java.net.*;
diff --git a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/reflect/DefaultClassLoaderProvider.java b/src/main/java/com/microsoft/azure/functions/reflect/DefaultClassLoaderProvider.java
similarity index 94%
rename from azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/reflect/DefaultClassLoaderProvider.java
rename to src/main/java/com/microsoft/azure/functions/reflect/DefaultClassLoaderProvider.java
index c5a4ec9..2962c08 100644
--- a/azure-functions-java-worker/src/main/java/com/microsoft/azure/webjobs/script/reflect/DefaultClassLoaderProvider.java
+++ b/src/main/java/com/microsoft/azure/functions/reflect/DefaultClassLoaderProvider.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.reflect;
+package com.microsoft.azure.functions.reflect;
 
 import java.io.*;
 import java.lang.reflect.*;
@@ -16,7 +16,7 @@ public class DefaultClassLoaderProvider implements ClassLoaderProvider {
     }
     
     /* 
-     * @see com.microsoft.azure.webjobs.script.reflect.ClassLoaderProvider#getClassLoader()
+     * @see com.microsoft.azure.functions.reflect.ClassLoaderProvider#getClassLoader()
      */
     @Override
     public ClassLoader getClassLoader() {
diff --git a/azure-functions-java-worker/src/main/proto/FunctionRpc.proto b/src/main/proto/FunctionRpc.proto
similarity index 98%
rename from azure-functions-java-worker/src/main/proto/FunctionRpc.proto
rename to src/main/proto/FunctionRpc.proto
index 5ea0d53..c58620c 100644
--- a/azure-functions-java-worker/src/main/proto/FunctionRpc.proto
+++ b/src/main/proto/FunctionRpc.proto
@@ -2,7 +2,7 @@ syntax = "proto3";
 // protobuf vscode extension: https://marketplace.visualstudio.com/items?itemName=zxh404.vscode-proto3
 
 option java_multiple_files = true;
-option java_package = "com.microsoft.azure.webjobs.script.rpc.messages";
+option java_package = "com.microsoft.azure.functions.rpc.messages";
 option java_outer_classname = "FunctionProto";
 option objc_class_prefix = "FunctionRpc";
 option csharp_namespace = "Microsoft.Azure.WebJobs.Script.Grpc.Messages";


Test patch:
diff --git a/azure-functions-java-core/src/test/java/com/microsoft/azure/serverless/functions/annotation/BindingTest.java b/azure-functions-java-core/src/test/java/com/microsoft/azure/serverless/functions/annotation/BindingTest.java
deleted file mode 100644
index 3de047d..0000000
--- a/azure-functions-java-core/src/test/java/com/microsoft/azure/serverless/functions/annotation/BindingTest.java
+++ /dev/null
@@ -1,56 +0,0 @@
-package com.microsoft.azure.serverless.functions.annotation;
-
-import java.lang.annotation.Target;
-import java.lang.reflect.Method;
-import java.util.*;
-import java.util.stream.Collectors;
-
-import org.junit.*;
-import org.reflections.Reflections;
-
-import static junit.framework.TestCase.*;
-
-/**
- * Unit tests that enforce annotation contracts and conventions for Functions
- */
-public class BindingTest {
-    private static Set<Class<?>> annotations;
-    private static String[] bindingAnnotationSuffix = new String[] { "Input", "Output", "Trigger" };
-
-    @Test
-    public void every_binding_annotation_should_have_name_method() {
-        final String methodName = "name";
-
-        for (Class<?> annotation : annotations) {
-            Optional<Method> method = findMethod(annotation, methodName);
-            assertTrue(method.isPresent());
-        }
-    }
-
-    @Test
-    public void every_binding_annotation_should_have_dataType_method() {
-        final String methodName = "dataType";
-
-        for (Class<?> annotation : annotations) {
-            Optional<Method> method = findMethod(annotation, methodName);
-            assertTrue(method.isPresent());
-        }
-    }
-
-    /**
-     * find all annotation bindings based on annotation suffix conventions defined in bindingAnnotationSuffix array
-     */
-    @Before
-    public void findAllFunctionParameterBindingsInCore() {
-        annotations = new Reflections(BindingTest.class.getPackage().getName())
-                .getTypesAnnotatedWith(Target.class)
-                .stream()
-                .filter(t -> t.getSimpleName().endsWith(bindingAnnotationSuffix[0]) ||
-                             t.getSimpleName().endsWith(bindingAnnotationSuffix[1]) ||
-                             t.getSimpleName().endsWith(bindingAnnotationSuffix[2])).collect(Collectors.toSet());
-    }
-
-    private Optional<Method> findMethod(Class<?> type, String name) {
-        return Arrays.stream(type.getMethods()).filter(m -> m.getName().equals(name)).findAny();
-    }
-}
diff --git a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/categories/FunctionalTesting.java b/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/categories/FunctionalTesting.java
deleted file mode 100644
index 549506b..0000000
--- a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/categories/FunctionalTesting.java
+++ /dev/null
@@ -1,3 +0,0 @@
-package com.microsoft.azure.webjobs.script.test.categories;
-
-public interface FunctionalTesting {}
diff --git a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/categories/IntegrationTesting.java b/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/categories/IntegrationTesting.java
deleted file mode 100644
index 2f3f2b1..0000000
--- a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/categories/IntegrationTesting.java
+++ /dev/null
@@ -1,3 +0,0 @@
-package com.microsoft.azure.webjobs.script.test.categories;
-
-public interface IntegrationTesting {}
diff --git a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/categories/SmokeTesting.java b/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/categories/SmokeTesting.java
deleted file mode 100644
index 19e885f..0000000
--- a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/categories/SmokeTesting.java
+++ /dev/null
@@ -1,3 +0,0 @@
-package com.microsoft.azure.webjobs.script.test.categories;
-
-public interface SmokeTesting {}
diff --git a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/categories/UnitTesting.java b/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/categories/UnitTesting.java
deleted file mode 100644
index 0ee1e87..0000000
--- a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/categories/UnitTesting.java
+++ /dev/null
@@ -1,3 +0,0 @@
-package com.microsoft.azure.webjobs.script.test.categories;
-
-public interface UnitTesting {}
diff --git a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/broker/tests/CoreTypeResolverTests.java b/src/test/java/com/microsoft/azure/functions/broker/tests/CoreTypeResolverTests.java
similarity index 90%
rename from azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/broker/tests/CoreTypeResolverTests.java
rename to src/test/java/com/microsoft/azure/functions/broker/tests/CoreTypeResolverTests.java
index aa99654..5f84afb 100644
--- a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/broker/tests/CoreTypeResolverTests.java
+++ b/src/test/java/com/microsoft/azure/functions/broker/tests/CoreTypeResolverTests.java
@@ -1,15 +1,15 @@
-package com.microsoft.azure.webjobs.script.broker.tests;
+package com.microsoft.azure.functions.broker.tests;
 
 import java.lang.reflect.*;
 import java.util.*;
 
-import com.microsoft.azure.serverless.functions.OutputBinding;
-import com.microsoft.azure.webjobs.script.test.categories.*;
+import com.microsoft.azure.functions.OutputBinding;
+import com.microsoft.azure.functions.test.categories.*;
 import org.junit.*;
 import org.junit.experimental.categories.*;
 
-import static com.microsoft.azure.webjobs.script.broker.CoreTypeResolver.getRuntimeClass;
-import static com.microsoft.azure.webjobs.script.broker.CoreTypeResolver.isValidOutputType;
+import static com.microsoft.azure.functions.broker.CoreTypeResolver.getRuntimeClass;
+import static com.microsoft.azure.functions.broker.CoreTypeResolver.isValidOutputType;
 import static org.junit.Assert.*;
 
 public class CoreTypeResolverTests {
diff --git a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/functional/tests/SimpleParamReturnTests.java b/src/test/java/com/microsoft/azure/functions/functional/tests/SimpleParamReturnTests.java
similarity index 90%
rename from azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/functional/tests/SimpleParamReturnTests.java
rename to src/test/java/com/microsoft/azure/functions/functional/tests/SimpleParamReturnTests.java
index eac6967..26afcc2 100644
--- a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/functional/tests/SimpleParamReturnTests.java
+++ b/src/test/java/com/microsoft/azure/functions/functional/tests/SimpleParamReturnTests.java
@@ -1,10 +1,10 @@
-package com.microsoft.azure.webjobs.script.functional.tests;
+package com.microsoft.azure.functions.functional.tests;
 
 import java.util.*;
 
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
-import com.microsoft.azure.webjobs.script.test.categories.*;
-import com.microsoft.azure.webjobs.script.test.utilities.*;
+import com.microsoft.azure.functions.rpc.messages.*;
+import com.microsoft.azure.functions.test.categories.*;
+import com.microsoft.azure.functions.test.utilities.*;
 import org.junit.*;
 import org.junit.experimental.categories.*;
 
diff --git a/src/test/java/com/microsoft/azure/functions/test/categories/FunctionalTesting.java b/src/test/java/com/microsoft/azure/functions/test/categories/FunctionalTesting.java
new file mode 100644
index 0000000..88757ac
--- /dev/null
+++ b/src/test/java/com/microsoft/azure/functions/test/categories/FunctionalTesting.java
@@ -0,0 +1,3 @@
+package com.microsoft.azure.functions.test.categories;
+
+public interface FunctionalTesting {}
diff --git a/src/test/java/com/microsoft/azure/functions/test/categories/IntegrationTesting.java b/src/test/java/com/microsoft/azure/functions/test/categories/IntegrationTesting.java
new file mode 100644
index 0000000..2863fc2
--- /dev/null
+++ b/src/test/java/com/microsoft/azure/functions/test/categories/IntegrationTesting.java
@@ -0,0 +1,3 @@
+package com.microsoft.azure.functions.test.categories;
+
+public interface IntegrationTesting {}
diff --git a/src/test/java/com/microsoft/azure/functions/test/categories/SmokeTesting.java b/src/test/java/com/microsoft/azure/functions/test/categories/SmokeTesting.java
new file mode 100644
index 0000000..cf889b3
--- /dev/null
+++ b/src/test/java/com/microsoft/azure/functions/test/categories/SmokeTesting.java
@@ -0,0 +1,3 @@
+package com.microsoft.azure.functions.test.categories;
+
+public interface SmokeTesting {}
diff --git a/src/test/java/com/microsoft/azure/functions/test/categories/UnitTesting.java b/src/test/java/com/microsoft/azure/functions/test/categories/UnitTesting.java
new file mode 100644
index 0000000..e6e2c06
--- /dev/null
+++ b/src/test/java/com/microsoft/azure/functions/test/categories/UnitTesting.java
@@ -0,0 +1,3 @@
+package com.microsoft.azure.functions.test.categories;
+
+public interface UnitTesting {}
diff --git a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/utilities/FunctionsTestBase.java b/src/test/java/com/microsoft/azure/functions/test/utilities/FunctionsTestBase.java
similarity index 84%
rename from azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/utilities/FunctionsTestBase.java
rename to src/test/java/com/microsoft/azure/functions/test/utilities/FunctionsTestBase.java
index cff8ac7..eef4592 100644
--- a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/utilities/FunctionsTestBase.java
+++ b/src/test/java/com/microsoft/azure/functions/test/utilities/FunctionsTestBase.java
@@ -1,9 +1,9 @@
-package com.microsoft.azure.webjobs.script.test.utilities;
+package com.microsoft.azure.functions.test.utilities;
 
 import java.lang.reflect.*;
 import java.util.*;
 
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 
 public class FunctionsTestBase {
     protected void loadFunction(FunctionsTestHost host, String id, String method) throws Exception {
diff --git a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/utilities/FunctionsTestHost.java b/src/test/java/com/microsoft/azure/functions/test/utilities/FunctionsTestHost.java
similarity index 98%
rename from azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/utilities/FunctionsTestHost.java
rename to src/test/java/com/microsoft/azure/functions/test/utilities/FunctionsTestHost.java
index a3e8b9d..3f24665 100644
--- a/azure-functions-java-worker/src/test/java/com/microsoft/azure/webjobs/script/test/utilities/FunctionsTestHost.java
+++ b/src/test/java/com/microsoft/azure/functions/test/utilities/FunctionsTestHost.java
@@ -1,4 +1,4 @@
-package com.microsoft.azure.webjobs.script.test.utilities;
+package com.microsoft.azure.functions.test.utilities;
 
 import java.io.*;
 import java.util.*;
@@ -10,8 +10,8 @@ import javax.annotation.*;
 import javax.annotation.concurrent.*;
 
 import com.google.protobuf.*;
-import com.microsoft.azure.webjobs.script.*;
-import com.microsoft.azure.webjobs.script.rpc.messages.*;
+import com.microsoft.azure.functions.*;
+import com.microsoft.azure.functions.rpc.messages.*;
 import io.grpc.*;
 import io.grpc.stub.*;
 import org.apache.commons.lang3.tuple.*;