Revert "Temporary attempt on addressing deploying custon message converters"
This reverts commit e75bb67608.
This commit is contained in:
@@ -27,11 +27,6 @@
|
||||
<groupId>org.springframework.boot</groupId>
|
||||
<artifactId>spring-boot-starter</artifactId>
|
||||
</dependency>
|
||||
<dependency>
|
||||
<groupId>org.springframework</groupId>
|
||||
<artifactId>spring-messaging</artifactId>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
</dependencies>
|
||||
|
||||
<build>
|
||||
|
||||
@@ -5,10 +5,6 @@ import java.util.function.Function;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.autoconfigure.SpringBootApplication;
|
||||
import org.springframework.context.annotation.Bean;
|
||||
import org.springframework.messaging.Message;
|
||||
import org.springframework.messaging.MessageHeaders;
|
||||
import org.springframework.messaging.converter.MessageConverter;
|
||||
import org.springframework.messaging.support.MessageBuilder;
|
||||
|
||||
@SpringBootApplication
|
||||
public class SimpleFunctionAppApplication {
|
||||
@@ -34,24 +30,6 @@ public class SimpleFunctionAppApplication {
|
||||
};
|
||||
}
|
||||
|
||||
@Bean
|
||||
public MessageConverter customConverter() {
|
||||
return new MessageConverter() {
|
||||
|
||||
@Override
|
||||
public Message<?> toMessage(Object payload, MessageHeaders headers) {
|
||||
System.out.println("==== In Custom Message Converer: toMessage");
|
||||
return null;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Object fromMessage(Message<?> message, Class<?> targetClass) {
|
||||
System.out.println("==== In Custom Message Converer: fromMessage");
|
||||
return null;
|
||||
}
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static class Person {
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
package org.springframework.cloud.function.deployer;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.lang.reflect.Field;
|
||||
import java.lang.reflect.Method;
|
||||
import java.lang.reflect.Type;
|
||||
import java.net.URL;
|
||||
@@ -27,12 +26,9 @@ import java.util.Map;
|
||||
import java.util.Map.Entry;
|
||||
import java.util.concurrent.atomic.AtomicReference;
|
||||
|
||||
import org.aopalliance.intercept.MethodInterceptor;
|
||||
import org.aopalliance.intercept.MethodInvocation;
|
||||
import org.apache.commons.logging.Log;
|
||||
import org.apache.commons.logging.LogFactory;
|
||||
|
||||
import org.springframework.aop.framework.ProxyFactory;
|
||||
import org.springframework.boot.SpringApplication;
|
||||
import org.springframework.boot.loader.JarLauncher;
|
||||
import org.springframework.boot.loader.LaunchedURLClassLoader;
|
||||
@@ -45,8 +41,6 @@ import org.springframework.expression.Expression;
|
||||
import org.springframework.expression.spel.standard.SpelExpressionParser;
|
||||
import org.springframework.expression.spel.support.StandardEvaluationContext;
|
||||
import org.springframework.expression.spel.support.StandardTypeLocator;
|
||||
import org.springframework.messaging.converter.CompositeMessageConverter;
|
||||
import org.springframework.messaging.converter.MessageConverter;
|
||||
import org.springframework.util.CollectionUtils;
|
||||
import org.springframework.util.ReflectionUtils;
|
||||
import org.springframework.util.ReflectionUtils.MethodCallback;
|
||||
@@ -83,19 +77,6 @@ class FunctionArchiveDeployer extends JarLauncher {
|
||||
if (this.isBootApplicationWithMain()) {
|
||||
this.launchFunctionArchive(args);
|
||||
|
||||
//=====
|
||||
Map<String, MessageConverter> messageConverters = this.discoverMessageConverters(currentLoader);
|
||||
if (!CollectionUtils.isEmpty(messageConverters)) {
|
||||
Field mcField = functionRegistry.getClass().getDeclaredField("messageConverter");
|
||||
mcField.setAccessible(true);
|
||||
CompositeMessageConverter compositMessageConverter = (CompositeMessageConverter) mcField.get(functionRegistry);
|
||||
List<MessageConverter> converters = compositMessageConverter.getConverters();
|
||||
for (MessageConverter messageConverter : messageConverters.values()) {
|
||||
converters.add(messageConverter);
|
||||
}
|
||||
}
|
||||
//=====
|
||||
|
||||
Map<String, Object> functions = this.discoverBeanFunctions();
|
||||
if (logger.isInfoEnabled() && !CollectionUtils.isEmpty(functions)) {
|
||||
logger.info("Discovered functions in deployed application context: " + functions);
|
||||
@@ -181,8 +162,7 @@ class FunctionArchiveDeployer extends JarLauncher {
|
||||
|
||||
private boolean shouldLoadViaDeployerLoader(String name) {
|
||||
return name.startsWith("org.reactivestreams")
|
||||
|| name.startsWith("reactor.")
|
||||
|| name.startsWith("org.springframework.messaging");
|
||||
|| name.startsWith("reactor.");
|
||||
}
|
||||
|
||||
private String discoverFunctionClassName(FunctionDeployerProperties functionProperties) {
|
||||
@@ -300,38 +280,4 @@ class FunctionArchiveDeployer extends JarLauncher {
|
||||
}
|
||||
return allFunctions;
|
||||
}
|
||||
|
||||
@SuppressWarnings("unchecked")
|
||||
private Map<String, MessageConverter> discoverMessageConverters(ClassLoader currentLoader) {
|
||||
ClassLoader threadLoader = Thread.currentThread().getContextClassLoader();
|
||||
Map<String, MessageConverter> exportedMessageConverters = new HashMap<>();
|
||||
try {
|
||||
if (evalContext.lookupVariable("context") != null) { // no start-class uber jars
|
||||
Expression parsed = new SpelExpressionParser()
|
||||
.parseExpression("#context.getBeansOfType(T(org.springframework.messaging.converter.MessageConverter))");
|
||||
Thread.currentThread().setContextClassLoader(currentLoader);
|
||||
Map<String, Object> targetMessageConverters = (Map<String, Object>) parsed.getValue(this.evalContext);
|
||||
|
||||
for (Entry<String, Object> messageConverterEntry : targetMessageConverters.entrySet()) {
|
||||
|
||||
ProxyFactory pf = new ProxyFactory(messageConverterEntry.getValue());
|
||||
pf.setInterfaces(MessageConverter.class);
|
||||
pf.addAdvice(new MethodInterceptor() {
|
||||
@Override
|
||||
public Object invoke(MethodInvocation invocation) throws Throwable {
|
||||
System.out.println("=====> Invoking proxy");
|
||||
return invocation.proceed();
|
||||
}
|
||||
});
|
||||
MessageConverter converter = (MessageConverter) pf.getProxy();
|
||||
exportedMessageConverters.put(messageConverterEntry.getKey(), converter);
|
||||
}
|
||||
}
|
||||
}
|
||||
finally {
|
||||
Thread.currentThread().setContextClassLoader(threadLoader);
|
||||
}
|
||||
|
||||
return exportedMessageConverters;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -174,20 +174,6 @@ public class FunctionDeployerTests {
|
||||
assertThat(new String(result.getPayload(), StandardCharsets.UTF_8)).isEqualTo("\"BOB\"");
|
||||
}
|
||||
|
||||
// @Test
|
||||
// public void testWithMainAndStartClassAndSpringConfigurationCustomConverter() throws Exception {
|
||||
// String[] args = new String[] {
|
||||
// "--spring.cloud.function.location=target/it/bootapp/target/bootapp-1.0.0.RELEASE-exec.jar",
|
||||
// "--spring.cloud.function.function-name=uppercase" };
|
||||
// ApplicationContext context = SpringApplication.run(DeployerApplication.class, args);
|
||||
// FunctionCatalog catalog = context.getBean(FunctionCatalog.class);
|
||||
// Function<Message<byte[]>, Message<byte[]>> function = catalog.lookup("uppercase", "application/json");
|
||||
//
|
||||
// Message<byte[]> result = function
|
||||
// .apply(MessageBuilder.withPayload("\"bob\"".getBytes(StandardCharsets.UTF_8)).build());
|
||||
// assertThat(new String(result.getPayload(), StandardCharsets.UTF_8)).isEqualTo("\"BOB\"");
|
||||
// }
|
||||
|
||||
@Test
|
||||
public void testWithLegacyProperties() throws Exception {
|
||||
String[] args = new String[] {
|
||||
|
||||
Reference in New Issue
Block a user