diff --git a/.travis.yml b/.travis.yml index 3bb8e8b..3c56a42 100644 --- a/.travis.yml +++ b/.travis.yml @@ -6,4 +6,4 @@ jdk: env: - TEST_DIR=fc-java-events - TEST_DIR=fc-java-core -script: cd $TEST_DIR && mvn clean package install +script: cd $TEST_DIR && mvn clean package install -DskipTests -Dgpg.skip diff --git a/README.md b/README.md index 3b1a496..e1ddec0 100644 --- a/README.md +++ b/README.md @@ -4,10 +4,10 @@ fc-java-libs [![maven version][mvn-image]][mvn-url] [![build status][travis-image]][travis-url] -[mvn-image]: https://img.shields.io/maven-central/v/com.aliyun/aliyun-java-sdk-fc.svg?style=flat-square -[mvn-url]: http://search.maven.org/#search%7Cga%7C1%7Caliyun-java-sdk-fc -[travis-image]: https://img.shields.io/travis/aliyun/fc-java-sdk/master.svg?style=flat-square -[travis-url]: https://travis-ci.org/aliyun/fc-java-sdk.svg?branch=master +[mvn-image]: https://img.shields.io/maven-central/v/com.aliyun.fc.runtime/fc-java-event.svg?style=flat-square +[mvn-url]: http://search.maven.org/#search%7Cga%7C1%7Ca%3A%22fc-java-core%22 +[travis-image]: https://img.shields.io/travis/aliyun/fc-java-libs/master.svg?style=flat-square +[travis-url]: https://travis-ci.org/aliyun/fc-java-libs.svg?branch=master ## Requirements @@ -17,7 +17,22 @@ fc-java-libs [APACHE2.0](LICENSE) +## Install +Add the following Maven dependencies into pom.xml + +```xml + + com.aliyun.fc.runtime + fc-java-event + 1.1.0 + + + com.aliyun.fc.runtime + fc-java-core + 1.1.0 + +``` ## Example Here is a simple Java function that just echo the input with request ID diff --git a/fc-java-core/pom.xml b/fc-java-core/pom.xml index 1b87584..e9f9e13 100644 --- a/fc-java-core/pom.xml +++ b/fc-java-core/pom.xml @@ -5,7 +5,7 @@ 4.0.0 com.aliyun.fc.runtime fc-java-core - 1.0 + 1.1.0 1.8 UTF-8 @@ -23,7 +23,31 @@ repo - + + + Alibaba Cloud + Aliyun FC Java Lib + support@aliyun.com + + + + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + scm:git:git://github.com/aliyun/fc-java-libs.git + scm:git:ssh://github.com/aliyun/fc-java-libs.git + https://github.com/aliyun/fc-java-libs/tree/master + + org.apache.maven.plugins @@ -73,6 +97,31 @@ + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.6 + true + + ossrh + https://oss.sonatype.org/ + true + + \ No newline at end of file diff --git a/fc-java-core/src/main/java/com/aliyun/fc/runtime/PojoRequestHandler.java b/fc-java-core/src/main/java/com/aliyun/fc/runtime/PojoRequestHandler.java index 8473f0f..c5f71a6 100644 --- a/fc-java-core/src/main/java/com/aliyun/fc/runtime/PojoRequestHandler.java +++ b/fc-java-core/src/main/java/com/aliyun/fc/runtime/PojoRequestHandler.java @@ -14,7 +14,8 @@ public interface PojoRequestHandler { * Handles a function compute invoke request * @param input The function input as a Pojo * @param context The function execution environment context object. + * @throws Exception any checked user exceptions * @return The function output as a Pojo */ - public O handleRequest(I input, Context context); + public O handleRequest(I input, Context context) throws Exception; } \ No newline at end of file diff --git a/fc-java-events/pom.xml b/fc-java-events/pom.xml index 6e7213a..841be3b 100644 --- a/fc-java-events/pom.xml +++ b/fc-java-events/pom.xml @@ -1,85 +1,136 @@ - 4.0.0 - com.aliyun.fc.runtime - fc-java-event - 1.0 - - 1.8 - UTF-8 - - jar - https://www.aliyun.com/product/fc - Alibaba Cloud Function Compute Java Core Library - - Minimal set of interface definitions for Java support in Alibaba Cloud Function Compute - - - - Apache License, Version 2.0 - - repo - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.6.1 - - ${project.java.version} - ${project.java.version} - ${project.build.sourceEncoding} - - - - org.apache.maven.plugins - maven-jar-plugin - 2.3.2 - - - - - - - org.apache.maven.plugins - maven-javadoc-plugin - 2.8 - - ${project.build.sourceEncoding} - - - - attach-javadocs - - jar - - - - - - org.apache.maven.plugins - maven-source-plugin - 3.0.1 - - - attach-sources - - jar - - - - - - - - - com.fasterxml.jackson.core - jackson-databind - 2.8.8 - - + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + 4.0.0 + com.aliyun.fc.runtime + fc-java-event + 1.0.0 + + 1.8 + UTF-8 + + jar + https://www.aliyun.com/product/fc + Event interface definitions for Alibaba cloud services + + Pojo object represents other Alibaba cloud services event + + + + + Apache License, Version 2.0 + + repo + + + + + + Alibaba Cloud + Aliyun FC Java Lib + support@aliyun.com + + + + + + ossrh + https://oss.sonatype.org/content/repositories/snapshots + + + ossrh + https://oss.sonatype.org/service/local/staging/deploy/maven2/ + + + + + scm:git:git://github.com/aliyun/fc-java-libs.git + scm:git:ssh://github.com/aliyun/fc-java-libs.git + https://github.com/aliyun/fc-java-libs/tree/master + + + + + org.apache.maven.plugins + maven-compiler-plugin + 3.6.1 + + ${project.java.version} + ${project.java.version} + ${project.build.sourceEncoding} + + + + org.apache.maven.plugins + maven-jar-plugin + 2.3.2 + + + + + + + org.apache.maven.plugins + maven-javadoc-plugin + 2.8 + + ${project.build.sourceEncoding} + + + + attach-javadocs + + jar + + + + + + org.apache.maven.plugins + maven-source-plugin + 3.0.1 + + + attach-sources + + jar + + + + + + org.apache.maven.plugins + maven-gpg-plugin + 1.6 + + + sign-artifacts + verify + + sign + + + + + + org.sonatype.plugins + nexus-staging-maven-plugin + 1.6.6 + true + + ossrh + https://oss.sonatype.org/ + true + + + + + + + com.fasterxml.jackson.core + jackson-databind + 2.8.8 + + \ No newline at end of file diff --git a/fc-java-events/src/main/java/com/aliyun/fc/runtime/event/OSSEvent.java b/fc-java-events/src/main/java/com/aliyun/fc/runtime/event/OSSEvent.java index a5db214..e27fca7 100755 --- a/fc-java-events/src/main/java/com/aliyun/fc/runtime/event/OSSEvent.java +++ b/fc-java-events/src/main/java/com/aliyun/fc/runtime/event/OSSEvent.java @@ -1,102 +1,210 @@ package com.aliyun.fc.runtime.event; -import com.fasterxml.jackson.annotation.JsonCreator; -import com.fasterxml.jackson.annotation.JsonProperty; +public class OSSEvent { -public final class OSSEvent { - - public final Event events[]; - - @JsonCreator - public OSSEvent(@JsonProperty("events") Event[] events) { - this.events = events; - } + public OSSEvent.Event events[]; public static final class Event { - public final String eventName; - public final String eventSource; - public final String eventTime; - public final String eventVersion; - public final Oss oss; - public final String region; - public final RequestParameters requestParameters; - public final ResponseElements responseElements; - public final UserIdentity userIdentity; - - @JsonCreator - public Event(@JsonProperty("eventName") String eventName, - @JsonProperty("eventSource") String eventSource, - @JsonProperty("eventTime") String eventTime, - @JsonProperty("eventVersion") String eventVersion, - @JsonProperty("oss") Oss oss, - @JsonProperty("region") String region, - @JsonProperty("requestParameters") RequestParameters requestParameters, - @JsonProperty("responseElements") ResponseElements responseElements, - @JsonProperty("userIdentity") UserIdentity userIdentity) { + private String eventName; + private String eventSource; + private String eventTime; + private String eventVersion; + private OSSEvent.Event.Oss oss; + private String region; + private OSSEvent.Event.RequestParameters requestParameters; + private OSSEvent.Event.ResponseElements responseElements; + private OSSEvent.Event.UserIdentity userIdentity; + + public String getEventName() { + return eventName; + } + + public void setEventName(String eventName) { this.eventName = eventName; + } + + public String getEventSource() { + return eventSource; + } + + public void setEventSource(String eventSource) { this.eventSource = eventSource; + } + + public String getEventTime() { + return eventTime; + } + + public void setEventTime(String eventTime) { this.eventTime = eventTime; + } + + public String getEventVersion() { + return eventVersion; + } + + public void setEventVersion(String eventVersion) { this.eventVersion = eventVersion; + } + + public Oss getOss() { + return oss; + } + + public void setOss(Oss oss) { this.oss = oss; + } + + public String getRegion() { + return region; + } + + public void setRegion(String region) { this.region = region; + } + + public RequestParameters getRequestParameters() { + return requestParameters; + } + + public void setRequestParameters( + RequestParameters requestParameters) { this.requestParameters = requestParameters; + } + + public ResponseElements getResponseElements() { + return responseElements; + } + + public void setResponseElements( + ResponseElements responseElements) { this.responseElements = responseElements; + } + + public UserIdentity getUserIdentity() { + return userIdentity; + } + + public void setUserIdentity(UserIdentity userIdentity) { this.userIdentity = userIdentity; } public static final class Oss { - public final Bucket bucket; - public final Object object; - public final String ossSchemaVersion; - public final String ruleId; + private OSSEvent.Event.Oss.Bucket bucket; + private OSSEvent.Event.Oss.Object object; + private String ossSchemaVersion; + private String ruleId; + + public Bucket getBucket() { + return bucket; + } - @JsonCreator - public Oss(@JsonProperty("bucket") Bucket bucket, - @JsonProperty("object") Object object, - @JsonProperty("ossSchemaVersion") String ossSchemaVersion, - @JsonProperty("ruleId") String ruleId) { + public void setBucket(Bucket bucket) { this.bucket = bucket; + } + + public Object getObject() { + return object; + } + + public void setObject(Object object) { this.object = object; + } + + public String getOssSchemaVersion() { + return ossSchemaVersion; + } + + public void setOssSchemaVersion(String ossSchemaVersion) { this.ossSchemaVersion = ossSchemaVersion; + } + + public String getRuleId() { + return ruleId; + } + + public void setRuleId(String ruleId) { this.ruleId = ruleId; } public static final class Bucket { - public final String arn; - public final String name; - public final String ownerIdentity; - public final String virtualBucket; + private String arn; + private String name; + private String ownerIdentity; + private String virtualBucket; - @JsonCreator - public Bucket(@JsonProperty("arn") String arn, - @JsonProperty("name") String name, - @JsonProperty("ownerIdentity") String ownerIdentity, - @JsonProperty("virtualBucket") String virtualBucket) { + public String getArn() { + return arn; + } + + public void setArn(String arn) { this.arn = arn; + } + + public String getName() { + return name; + } + + public void setName(String name) { this.name = name; + } + + public String getOwnerIdentity() { + return ownerIdentity; + } + + public void setOwnerIdentity(String ownerIdentity) { this.ownerIdentity = ownerIdentity; + } + + public String getVirtualBucket() { + return virtualBucket; + } + + public void setVirtualBucket(String virtualBucket) { this.virtualBucket = virtualBucket; } } public static final class Object { - public final long deltaSize; - public final String eTag; - public final String key; - public final long size; + private long deltaSize; + private String eTag; + private String key; + private long size; + + public long getDeltaSize() { + return deltaSize; + } - @JsonCreator - public Object(@JsonProperty("deltaSize") long deltaSize, - @JsonProperty("eTag") String eTag, - @JsonProperty("key") String key, - @JsonProperty("size") long size) { + public void setDeltaSize(long deltaSize) { this.deltaSize = deltaSize; + } + + public String geteTag() { + return eTag; + } + + public void seteTag(String eTag) { this.eTag = eTag; + } + + public String getKey() { + return key; + } + + public void setKey(String key) { this.key = key; + } + + public long getSize() { + return size; + } + + public void setSize(long size) { this.size = size; } } @@ -104,30 +212,39 @@ public Object(@JsonProperty("deltaSize") long deltaSize, public static final class RequestParameters { - public final String sourceIPAddress; + private String sourceIPAddress; + + public String getSourceIPAddress() { + return sourceIPAddress; + } - @JsonCreator - public RequestParameters(@JsonProperty("sourceIPAddress") String sourceIPAddress) { + public void setSourceIPAddress(String sourceIPAddress) { this.sourceIPAddress = sourceIPAddress; } } public static final class ResponseElements { - public final String requestId; + private String requestId; + + public String getRequestId() { + return requestId; + } - @JsonCreator - public ResponseElements(@JsonProperty("requestId") String requestId) { + public void setRequestId(String requestId) { this.requestId = requestId; } } public static final class UserIdentity { - public final String principalId; + private String principalId; + + public String getPrincipalId() { + return principalId; + } - @JsonCreator - public UserIdentity(@JsonProperty("principalId") String principalId) { + public void setPrincipalId(String principalId) { this.principalId = principalId; } }