Skip to content

Commit 478821e

Browse files
committed
clean up
clean up more move resolver to dedicate package rename resolver to converter
1 parent 5315874 commit 478821e

22 files changed

+192
-238
lines changed

endtoendtests/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
2323
<java.version>1.8</java.version>
2424
<azure.functions.maven.plugin.version>1.18.0</azure.functions.maven.plugin.version>
25-
<azure.functions.java.library.version>3.0.0-SNAPSHOT</azure.functions.java.library.version>
25+
<azure.functions.java.library.version>3.0.0</azure.functions.java.library.version>
2626
<durabletask.azure.functions>1.0.0-beta.1</durabletask.azure.functions>
2727
<functionAppName>azure-functions-java-endtoendtests</functionAppName>
2828
<functionAppRegion>westus</functionAppRegion>

src/main/java/com/microsoft/azure/functions/worker/JavaWorkerClient.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212

1313
import com.microsoft.azure.functions.worker.broker.*;
1414
import com.microsoft.azure.functions.worker.handler.*;
15-
import com.microsoft.azure.functions.worker.reflect.*;
15+
import com.microsoft.azure.functions.worker.classloader.*;
1616
import com.microsoft.azure.functions.rpc.messages.*;
1717

1818
/**

src/main/java/com/microsoft/azure/functions/worker/binding/BindingDataStore.java

Lines changed: 27 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -6,12 +6,11 @@
66
import java.util.List;
77
import java.util.Map;
88
import java.util.Optional;
9-
import java.util.UUID;
109

1110
import com.microsoft.azure.functions.ExecutionContext;
1211
import com.microsoft.azure.functions.rpc.messages.ParameterBinding;
1312
import com.microsoft.azure.functions.rpc.messages.TypedData;
14-
import com.microsoft.azure.functions.worker.broker.CoreTypeResolver;
13+
import com.microsoft.azure.functions.worker.converter.CoreTypeConverter;
1514

1615
import org.apache.commons.lang3.exception.ExceptionUtils;
1716

@@ -21,16 +20,22 @@
2120
* Thread-safety: Single thread.
2221
*/
2322
public final class BindingDataStore {
23+
24+
private final Map<String, DataTarget> targets;
25+
private final Map<String, DataSource<?>> inputSources;
26+
private final Map<Type, DataSource<?>> otherSources;
27+
private final Map<String, DataSource<?>> metadataSources;
28+
private Map<String, BindingDefinition> definitions;
29+
public static final String RETURN_NAME = "$return";
30+
2431
public BindingDataStore() {
2532
this.targets = new HashMap<>();
2633
this.inputSources = new HashMap<>();
2734
this.otherSources = new HashMap<>();
2835
this.metadataSources = new HashMap<>();
29-
this.promotedTargets = null;
3036
}
3137

32-
///////////////////////// region Input Binding Data
33-
38+
//Logics for input Binding Data
3439
public void addParameterSources(List<ParameterBinding> parameters) {
3540
assert parameters != null;
3641
for (ParameterBinding parameter : parameters) {
@@ -92,24 +97,21 @@ private static DataSource<?> rpcSourceFromParameter(ParameterBinding parameter)
9297
return rpcSourceFromTypedData(parameter.getName(), parameter.getData());
9398
}
9499

95-
///////////////////////// end region Input Binding Data
96-
97-
///////////////////////// region Output Binding Data
98100

99-
public List<ParameterBinding> getOutputParameterBindings(boolean excludeReturn) throws Exception {
101+
//Logics for output Binding Data
102+
public List<ParameterBinding> getOutputParameterBindings() throws Exception {
100103
List<ParameterBinding> bindings = new ArrayList<>();
101-
for (Map.Entry<String, DataTarget> entry : this.getTarget(this.promotedTargets).entrySet()) {
102-
if (!excludeReturn || !entry.getKey().equals(RETURN_NAME)) {
103-
entry.getValue().computeFromValue().ifPresent(data ->
104-
bindings.add(ParameterBinding.newBuilder().setName(entry.getKey()).setData(data).build())
105-
);
106-
}
104+
for (String key : this.targets.keySet()) {
105+
if (key.equals(RETURN_NAME)) continue;
106+
DataTarget dataTarget = this.targets.get(key);
107+
dataTarget.computeFromValue().ifPresent(data ->
108+
bindings.add(ParameterBinding.newBuilder().setName(key).setData(data).build()));
107109
}
108110
return bindings;
109111
}
110112

111113
public Optional<TypedData> getDataTargetTypedValue(String name) throws Exception{
112-
return Optional.ofNullable(this.getTarget(this.promotedTargets).get(name)).map(o -> {
114+
return Optional.ofNullable(this.targets.get(name)).map(o -> {
113115
try {
114116
return o.computeFromValue().orElse(null);
115117
} catch (Exception ex) {
@@ -119,48 +121,37 @@ public Optional<TypedData> getDataTargetTypedValue(String name) throws Exception
119121
});
120122
}
121123

122-
public Optional<BindingData> getOrAddDataTarget(UUID outputId, String name, Type target, boolean hasImplicitOutput) {
124+
public Optional<BindingData> getOrAddDataTarget(String name, Type target, boolean hasImplicitOutput) {
123125
DataTarget output = null;
124126
if (this.isDataTargetValid(name, target)) {
125-
output = this.getTarget(outputId).get(name);
127+
output = this.targets.get(name);
126128
if (output == null && (this.isDefinitionOutput(name) || hasImplicitOutput)) {
127-
this.getTarget(outputId).put(name, output = rpcDataTargetFromType(target));
129+
this.targets.put(name, output = rpcDataTargetFromType(target));
128130
}
129131
}
130-
return Optional.ofNullable(output).map(out -> new BindingData(out));
132+
return Optional.ofNullable(output).map(BindingData::new);
131133
}
132134

133135
public void setDataTargetValue(String name, Object value) {
134-
Optional.ofNullable(this.getTarget(this.promotedTargets).get(name)).ifPresent(out -> out.setValue(value));
135-
}
136-
137-
public void promoteDataTargets(UUID outputId) {
138-
this.promotedTargets = outputId;
139-
}
140-
141-
private Map<String, DataTarget> getTarget(UUID outputId) {
142-
return this.targets.computeIfAbsent(outputId, m -> new HashMap<>());
136+
Optional.ofNullable(this.targets.get(name)).ifPresent(out -> out.setValue(value));
143137
}
144138

145139
private boolean isDataTargetValid(String name, Type target) {
146140
if (!name.equals(RETURN_NAME)) {
147-
if (!CoreTypeResolver.isValidOutputType(target)) { return false; }
148-
target = CoreTypeResolver.getParameterizedActualTypeArgumentsType(target);
141+
if (!CoreTypeConverter.isValidOutputType(target)) { return false; }
142+
target = CoreTypeConverter.getParameterizedActualTypeArgumentsType(target);
149143
}
150144
return true;
151145
}
152146

153147
private static DataTarget rpcDataTargetFromType(Type target) {
154-
if (CoreTypeResolver.isHttpResponse(target)) {
148+
if (CoreTypeConverter.isHttpResponse(target)) {
155149
return new RpcHttpDataTarget();
156150
}
157151
return new RpcUnspecifiedDataTarget();
158152
}
159153

160-
///////////////////////// end region Output Binding Data
161-
162-
///////////////////////// region Binding Definitions
163-
154+
//Logics for binding Definitions
164155
public void setBindingDefinitions(Map<String, BindingDefinition> definitions) {
165156
this.definitions = definitions;
166157
}
@@ -172,14 +163,4 @@ private boolean isDefinitionOutput(String name) {
172163
private Optional<BindingDefinition> getDefinition(String name) {
173164
return Optional.ofNullable(this.definitions.get(name));
174165
}
175-
176-
///////////////////////// endregion Binding Definitions
177-
178-
private UUID promotedTargets;
179-
private final Map<UUID, Map<String, DataTarget>> targets;
180-
private final Map<String, DataSource<?>> inputSources;
181-
private final Map<Type, DataSource<?>> otherSources;
182-
private final Map<String, DataSource<?>> metadataSources;
183-
private Map<String, BindingDefinition> definitions;
184-
public static final String RETURN_NAME = "$return";
185166
}

src/main/java/com/microsoft/azure/functions/worker/binding/DataOperations.java

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,7 @@
11
package com.microsoft.azure.functions.worker.binding;
22

3-
import java.io.IOException;
43
import java.lang.reflect.Type;
54
import java.util.ArrayList;
6-
import java.util.Arrays;
7-
import java.util.Base64;
85
import java.util.Collection;
96
import java.util.HashMap;
107
import java.util.List;
@@ -15,13 +12,11 @@
1512
import org.apache.commons.lang3.exception.ExceptionUtils;
1613
import org.apache.commons.lang3.reflect.TypeUtils;
1714

18-
import com.google.gson.Gson;
1915
import com.google.gson.JsonArray;
2016
import com.google.gson.JsonParser;
2117
import com.google.gson.JsonSyntaxException;
22-
import com.google.gson.reflect.*;
2318
import com.microsoft.azure.functions.worker.WorkerLogManager;
24-
import com.microsoft.azure.functions.worker.broker.CoreTypeResolver;
19+
import com.microsoft.azure.functions.worker.converter.CoreTypeConverter;
2520

2621
@FunctionalInterface
2722
interface CheckedFunction<T, R> {
@@ -101,7 +96,7 @@ Optional<R> apply(T sourceValue, Type targetType) {
10196

10297
// Try POJO
10398
if (Collection.class.isAssignableFrom(TypeUtils.getRawType(targetType, null))) {
104-
Class<?> collectionItemType = (Class<?>) CoreTypeResolver
99+
Class<?> collectionItemType = (Class<?>) CoreTypeConverter
105100
.getParameterizedActualTypeArgumentsType(targetType);
106101

107102
try {
@@ -185,7 +180,7 @@ static Object generalAssignment(Object value, Type target) {
185180
if (value == null) {
186181
return ObjectUtils.NULL;
187182
}
188-
if (CoreTypeResolver.getRuntimeClass(target).isAssignableFrom(value.getClass())) {
183+
if (CoreTypeConverter.getRuntimeClass(target).isAssignableFrom(value.getClass())) {
189184
return value;
190185
}
191186
throw new ClassCastException("Cannot convert " + value + "to type " + target.getTypeName());

src/main/java/com/microsoft/azure/functions/worker/broker/FunctionDefinition.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
import com.microsoft.azure.functions.rpc.messages.BindingInfo;
44
import com.microsoft.azure.functions.worker.binding.BindingDefinition;
55
import com.microsoft.azure.functions.worker.description.FunctionMethodDescriptor;
6-
import com.microsoft.azure.functions.worker.reflect.ClassLoaderProvider;
6+
import com.microsoft.azure.functions.worker.classloader.ClassLoaderProvider;
77

88
import java.lang.reflect.Method;
99
import java.util.ArrayList;

src/main/java/com/microsoft/azure/functions/worker/broker/JavaFunctionBroker.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@
1919
import com.microsoft.azure.functions.worker.chain.FunctionExecutionMiddleware;
2020
import com.microsoft.azure.functions.worker.chain.InvocationChainFactory;
2121
import com.microsoft.azure.functions.worker.description.FunctionMethodDescriptor;
22-
import com.microsoft.azure.functions.worker.reflect.ClassLoaderProvider;
22+
import com.microsoft.azure.functions.worker.classloader.ClassLoaderProvider;
2323
import org.apache.commons.lang3.exception.ExceptionUtils;
2424
import org.apache.commons.lang3.tuple.ImmutablePair;
2525

@@ -122,7 +122,7 @@ public Optional<TypedData> invokeMethod(String id, InvocationRequest request, Li
122122
throws Exception {
123123
ExecutionContextDataSource executionContextDataSource = buildExecutionContext(id, request);
124124
invoke(executionContextDataSource);
125-
outputs.addAll(executionContextDataSource.getDataStore().getOutputParameterBindings(true));
125+
outputs.addAll(executionContextDataSource.getDataStore().getOutputParameterBindings());
126126
return executionContextDataSource.getDataStore().getDataTargetTypedValue(BindingDataStore.RETURN_NAME);
127127
}
128128

src/main/java/com/microsoft/azure/functions/worker/broker/JavaMethodExecutor.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
package com.microsoft.azure.functions.worker.broker;
22

33
import com.microsoft.azure.functions.worker.binding.*;
4+
import com.microsoft.azure.functions.worker.converter.ParameterConverter;
45

56
/**
67
* Used to executor of arbitrary Java method in any JAR using reflection.
@@ -17,9 +18,9 @@ public static JavaMethodExecutor getInstance(){
1718
private JavaMethodExecutor() {}
1819

1920
public void execute(ExecutionContextDataSource executionContextDataSource) throws Exception {
20-
Object retValue = ParameterResolver.resolveArguments(executionContextDataSource)
21+
Object retValue = ParameterConverter.resolveArguments(executionContextDataSource)
2122
.orElseThrow(() -> new NoSuchMethodException("Cannot locate the method signature with the given input"))
22-
.invoke(executionContextDataSource::getFunctionInstance);
23+
.invoke(executionContextDataSource.getFunctionInstance());
2324
executionContextDataSource.updateReturnValue(retValue);
2425
}
2526
}

src/main/java/com/microsoft/azure/functions/worker/broker/JavaMethodInvokeInfo.java

Lines changed: 0 additions & 49 deletions
This file was deleted.

src/main/java/com/microsoft/azure/functions/worker/broker/ParamBindInfo.java

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package com.microsoft.azure.functions.worker.broker;
22

3+
import com.microsoft.azure.functions.worker.converter.CoreTypeConverter;
4+
35
import java.lang.reflect.Parameter;
46
import java.lang.reflect.Type;
57

@@ -11,10 +13,10 @@ public final class ParamBindInfo {
1113
private final boolean isImplicitOutput;
1214
private final Parameter parameter;
1315
ParamBindInfo(Parameter param) {
14-
this.name = CoreTypeResolver.getAnnotationName(param);
16+
this.name = CoreTypeConverter.getAnnotationName(param);
1517
this.type = param.getParameterizedType();
16-
this.bindingNameAnnotation = CoreTypeResolver.getBindingNameAnnotation(param);
17-
this.isImplicitOutput = CoreTypeResolver.checkImplicitOutput(param);
18+
this.bindingNameAnnotation = CoreTypeConverter.getBindingNameAnnotation(param);
19+
this.isImplicitOutput = CoreTypeConverter.checkImplicitOutput(param);
1820
this.parameter = param;
1921
}
2022

src/main/java/com/microsoft/azure/functions/worker/reflect/ClassLoaderProvider.java renamed to src/main/java/com/microsoft/azure/functions/worker/classloader/ClassLoaderProvider.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.microsoft.azure.functions.worker.reflect;
1+
package com.microsoft.azure.functions.worker.classloader;
22

33
import java.io.*;
44
import java.net.*;

0 commit comments

Comments
 (0)