This is an automated email from the ASF dual-hosted git repository. tzulitai pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/flink-statefun.git
commit 00233601a0d6933c71b65eba828562f75dd0c7d0 Author: Tzu-Li (Gordon) Tai <[email protected]> AuthorDate: Wed May 27 12:05:38 2020 +0800 [FLINK-17875] [core] Introduce StateSpec for remote function specs The StateSpec class represents the state name and ttl duration as specified in YAML remote modules. --- .../flink/core/httpfn/HttpFunctionSpec.java | 12 +++--- .../statefun/flink/core/httpfn/StateSpec.java | 44 ++++++++++++++++++++++ 2 files changed, 50 insertions(+), 6 deletions(-) diff --git a/statefun-flink/statefun-flink-core/src/main/java/org/apache/flink/statefun/flink/core/httpfn/HttpFunctionSpec.java b/statefun-flink/statefun-flink-core/src/main/java/org/apache/flink/statefun/flink/core/httpfn/HttpFunctionSpec.java index 0e03591..868e542 100644 --- a/statefun-flink/statefun-flink-core/src/main/java/org/apache/flink/statefun/flink/core/httpfn/HttpFunctionSpec.java +++ b/statefun-flink/statefun-flink-core/src/main/java/org/apache/flink/statefun/flink/core/httpfn/HttpFunctionSpec.java @@ -32,14 +32,14 @@ public final class HttpFunctionSpec implements FunctionSpec { private final FunctionType functionType; private final URI endpoint; - private final List<String> states; + private final List<StateSpec> states; private final Duration maxRequestDuration; private final int maxNumBatchRequests; private HttpFunctionSpec( FunctionType functionType, URI endpoint, - List<String> states, + List<StateSpec> states, Duration maxRequestDuration, int maxNumBatchRequests) { this.functionType = Objects.requireNonNull(functionType); @@ -72,7 +72,7 @@ public final class HttpFunctionSpec implements FunctionSpec { return "http+unix".equalsIgnoreCase(scheme) || "https+unix".equalsIgnoreCase(scheme); } - public List<String> states() { + public List<StateSpec> states() { return states; } @@ -89,7 +89,7 @@ public final class HttpFunctionSpec implements FunctionSpec { private final FunctionType functionType; private final URI endpoint; - private final List<String> states = new ArrayList<>(); + private final List<StateSpec> states = new ArrayList<>(); private Duration maxRequestDuration = DEFAULT_HTTP_TIMEOUT; private int maxNumBatchRequests = DEFAULT_MAX_NUM_BATCH_REQUESTS; @@ -98,8 +98,8 @@ public final class HttpFunctionSpec implements FunctionSpec { this.endpoint = Objects.requireNonNull(endpoint); } - public Builder withState(String stateName) { - this.states.add(stateName); + public Builder withState(StateSpec stateSpec) { + this.states.add(stateSpec); return this; } diff --git a/statefun-flink/statefun-flink-core/src/main/java/org/apache/flink/statefun/flink/core/httpfn/StateSpec.java b/statefun-flink/statefun-flink-core/src/main/java/org/apache/flink/statefun/flink/core/httpfn/StateSpec.java new file mode 100644 index 0000000..7748fec --- /dev/null +++ b/statefun-flink/statefun-flink-core/src/main/java/org/apache/flink/statefun/flink/core/httpfn/StateSpec.java @@ -0,0 +1,44 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.apache.flink.statefun.flink.core.httpfn; + +import java.time.Duration; +import java.util.Objects; + +public final class StateSpec { + private final String name; + private final Duration ttlDuration; + + public StateSpec(String name) { + this(name, Duration.ZERO); + } + + public StateSpec(String name, Duration ttlDuration) { + this.name = Objects.requireNonNull(name); + this.ttlDuration = Objects.requireNonNull(ttlDuration); + } + + public String name() { + return name; + } + + public Duration ttlDuration() { + return ttlDuration; + } +}
