diff --git a/mvnBuildFunctionPluginsSkipTests.bat b/mvnBuildFunctionPluginsSkipTests.bat index c617b9d..541031b 100644 --- a/mvnBuildFunctionPluginsSkipTests.bat +++ b/mvnBuildFunctionPluginsSkipTests.bat @@ -1 +1 @@ -mvn clean install -pl build-tools,azure-maven-plugins-pom,azure-maven-plugin-lib,azure-functions-maven-plugin -Dmaven.javadoc.skip=true -Dmaven.test.skip -U -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -B \ No newline at end of file +mvn clean install -pl build-tools,azure-maven-plugins-pom,azure-tools-common,azure-maven-plugin-lib,azure-functions-maven-plugin -Dmaven.javadoc.skip=true -Dmaven.test.skip -U -Dorg.slf4j.simpleLogger.log.org.apache.maven.cli.transfer.Slf4jMavenTransferListener=warn -B \ No newline at end of file diff --git a/src/main/java/com/microsoft/azure/functions/annotation/EventGridOutput.java b/src/main/java/com/microsoft/azure/functions/annotation/EventGridOutput.java new file mode 100644 index 0000000..3607697 --- /dev/null +++ b/src/main/java/com/microsoft/azure/functions/annotation/EventGridOutput.java @@ -0,0 +1,78 @@ +/** + * 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.functions.annotation; + +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +/** + *

+ * Place this on a parameter whose value would come from EventGrid, and causing the method to run when an event is + * arrived. The parameter type can be one of the following:

+ * + * + * + *

The following example shows a Java function that prints out an event and then sends an event to a + * custom eventGrid topic:

+ * + *
{@literal @}FunctionName("eventGridMonitor")
+ * public void logEvent(
+ *    {@literal @}EventGridTrigger(name = "event") String content,
+ *    {@literal @}EventGridOutput(name = "outputEvent", topicEndpointUri = "MyEventGridTopicUriSetting",
+ *                                topicKeySetting = "MyEventGridTopicKeySetting")
+ *                                      OutputBinding<String> outputEvent
+ *     final ExecutionContext context
+ * ) {
+ *     context.getLogger().info(content);
+ *     final String eventGridOutputDocument = "{\"id\": \"100\", \"eventType\":\"recordInserted\",
+ *         \"subject\": \"myapp/test/java\", \"eventTime\":\"2017-08-10T21:03:07+00:00\",
+ *         \"data\": {\"tag1\": \"value1\",\"tag2\":\"value2\"}, \"dataVersion\": \"1.0\"}";
+ *     outputEvent.setValue(eventGridOutputDocument);
+ * }
+ * + * @since 1.3.1 + */ +@Retention(RetentionPolicy.RUNTIME) +@Target({ElementType.PARAMETER, ElementType.METHOD}) +public @interface EventGridOutput { + /** + * The variable name used in function.json. + * @return The variable name used in function.json. + */ + String name(); + + /** + *

Defines how Functions runtime should treat the parameter value. Possible values are:

+ * + * @return The dataType which will be used by the Functions runtime. + */ + String dataType() default ""; + + /** + * Gets or sets the Topic Key setting. You can find information on getting the Key for a topic + * here: https://docs.microsoft.com/en-us/azure/event-grid/custom-event-quickstart#send-an-event-to-your-topic + * @return The topic key setting of the eventGrid topic. + */ + String topicKeySetting(); + + /** + * Gets or sets the topic events endpoint URI. Eg: https://topic1.westus2-1.eventgrid.azure.net/api/events + * This is found in the Event Grid Topic's definition. You can find information on getting the Url for a topic + * here: https://docs.microsoft.com/en-us/azure/event-grid/custom-event-quickstart#send-an-event-to-your-topic + * @return The topic events endpoint URI of the eventGrid topic. + */ + String topicEndpointUri(); +}