Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion examples/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<parent>
<artifactId>capa-parent</artifactId>
<groupId>group.rxcloud</groupId>
<version>1.10.10.RELEASE</version>
<version>1.10.11.RELEASE</version>
</parent>

<artifactId>capa-examples</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<groupId>group.rxcloud</groupId>
<artifactId>capa-parent</artifactId>
<packaging>pom</packaging>
<version>1.10.10.RELEASE</version>
<version>1.10.11.RELEASE</version>
<name>capa-sdk-parent</name>
<description>SDK for Capa.</description>
<url>https://github.com/reactivegroup</url>
Expand Down
4 changes: 2 additions & 2 deletions sdk-component/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<parent>
<groupId>group.rxcloud</groupId>
<artifactId>capa-parent</artifactId>
<version>1.10.10.RELEASE</version>
<version>1.10.11.RELEASE</version>
</parent>

<artifactId>capa-sdk-component</artifactId>
Expand All @@ -33,7 +33,7 @@
<properties>
<okhttp.version>4.9.1</okhttp.version>
<kotlin-stdlib.version>1.4.10</kotlin-stdlib.version>
<log4j.version>2.14.1</log4j.version>
<log4j.version>2.15.0</log4j.version>
<logback.version>1.2.3</logback.version>
</properties>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
* The agent of the logback impl.
*/
public class CapaLogbackAppenderAgent extends UnsynchronizedAppenderBase<ILoggingEvent> {

/**
* The log component type.
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,12 +17,12 @@
package group.rxcloud.capa.component.configstore;

import group.rxcloud.capa.infrastructure.serializer.CapaObjectSerializer;
import group.rxcloud.capa.infrastructure.serializer.ObjectSerializer;
import group.rxcloud.capa.infrastructure.serializer.ExtensionObjectSerializer;

/**
* serializer/deserializer for request/response objects used in tests only
*/
public class TestObjectSerializer extends ObjectSerializer implements CapaObjectSerializer {
public class TestObjectSerializer extends ExtensionObjectSerializer implements CapaObjectSerializer {

/**
* {@inheritDoc}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@

import group.rxcloud.capa.infrastructure.serializer.CapaObjectSerializer;
import group.rxcloud.capa.infrastructure.serializer.DefaultObjectSerializer;
import group.rxcloud.capa.infrastructure.serializer.ObjectSerializer;
import group.rxcloud.capa.infrastructure.serializer.ExtensionObjectSerializer;
import org.junit.jupiter.api.Assertions;
import org.junit.jupiter.api.Test;

Expand Down Expand Up @@ -53,7 +53,7 @@ public void testBuild_Success() {
/**
* serializer/deserializer for request/response objects used in tests only
*/
private class TestObjectSerializer extends ObjectSerializer implements CapaObjectSerializer {
private class TestObjectSerializer extends ExtensionObjectSerializer implements CapaObjectSerializer {

/**
* {@inheritDoc}
Expand Down
2 changes: 1 addition & 1 deletion sdk-infrastructure/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<parent>
<artifactId>capa-parent</artifactId>
<groupId>group.rxcloud</groupId>
<version>1.10.10.RELEASE</version>
<version>1.10.11.RELEASE</version>
</parent>

<artifactId>capa-sdk-infrastructure</artifactId>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
/*
* 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 group.rxcloud.capa.infrastructure.serializer;

import group.rxcloud.cloudruntimes.utils.TypeRef;

import java.io.IOException;

public abstract class AbstractObjectSerializer implements CapaObjectSerializer {

/**
* {@inheritDoc}
*/
@Override
public byte[] serialize(Object o) throws IOException {
if (o == null) {
return null;
}
if (o instanceof byte[]) {
return (byte[]) o;
}
if (o instanceof String) {
return ((String) o).getBytes();
}

return doSerialize(o);
}

protected abstract byte[] doSerialize(Object o) throws IOException;

/**
* {@inheritDoc}
*/
@Override
public <T> T deserialize(byte[] data, TypeRef<T> type) throws IOException {
Class<T> clazz = (Class<T>) type.getType();
if (data == null) {
return null;
}
if (clazz == byte[].class) {
return (T) data;
}
if (clazz == String.class) {
return (T) new String(data);
}

return doDeserialize(data, type);
}

protected abstract <T> T doDeserialize(byte[] data, TypeRef<T> type) throws IOException;
}
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@
/**
* Default serializer/deserializer for request/response objects.
*/
public class DefaultObjectSerializer extends ObjectSerializer implements CapaObjectSerializer {
public class DefaultObjectSerializer extends ExtensionObjectSerializer implements CapaObjectSerializer {

/**
* {@inheritDoc}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@
/**
* Serializes and deserializes an internal object.
*/
public class ObjectSerializer {
public abstract class ExtensionObjectSerializer extends AbstractObjectSerializer {

/**
* Shared Json serializer/deserializer as per Jackson's documentation.
Expand All @@ -44,7 +44,7 @@ public class ObjectSerializer {
/**
* Default constructor to avoid class from being instantiated outside package but still inherited.
*/
protected ObjectSerializer() {
protected ExtensionObjectSerializer() {
}

/**
Expand All @@ -55,33 +55,31 @@ protected ObjectMapper getObjectMapper() {
}

/**
* Serializes a given state object into byte array.
* Serializes a given object into byte array.
*
* @param state State object to be serialized.
* @param o object to be serialized.
* @return Array of bytes[] with the serialized content.
* @throws IOException In case state cannot be serialized.
* @throws IOException In case o cannot be serialized.
*/
public byte[] serialize(Object state) throws IOException {
if (state == null) {
@Override
public byte[] doSerialize(Object o) throws IOException {
if (o == null) {
return null;
}

if (state.getClass() == Void.class) {
if (o.getClass() == Void.class) {
return null;
}

// Have this check here to be consistent with deserialization (see deserialize() method below).
if (state instanceof byte[]) {
return (byte[]) state;
if (o instanceof byte[]) {
return (byte[]) o;
}

// Proto buffer class is serialized directly.
if (state instanceof MessageLite) {
return ((MessageLite) state).toByteArray();
if (o instanceof MessageLite) {
return ((MessageLite) o).toByteArray();
}

// Not string, not primitive, so it is a complex type: we use JSON for that.
return getObjectMapper().writeValueAsBytes(state);
return getObjectMapper().writeValueAsBytes(o);
}

/**
Expand All @@ -93,8 +91,9 @@ public byte[] serialize(Object state) throws IOException {
* @return Object of type T.
* @throws IOException In case content cannot be deserialized.
*/
public <T> T deserialize(byte[] content, TypeRef<T> type) throws IOException {
return deserialize(content, getObjectMapper().constructType(type.getType()));
@Override
public <T> T doDeserialize(byte[] content, TypeRef<T> type) throws IOException {
return doDeserialize(content, getObjectMapper().constructType(type.getType()));
}

/**
Expand All @@ -106,11 +105,11 @@ public <T> T deserialize(byte[] content, TypeRef<T> type) throws IOException {
* @return Object of type T.
* @throws IOException In case content cannot be deserialized.
*/
public <T> T deserialize(byte[] content, Class<T> clazz) throws IOException {
return deserialize(content, getObjectMapper().constructType(clazz));
public <T> T doDeserialize(byte[] content, Class<T> clazz) throws IOException {
return doDeserialize(content, getObjectMapper().constructType(clazz));
}

private <T> T deserialize(byte[] content, JavaType javaType) throws IOException {
private <T> T doDeserialize(byte[] content, JavaType javaType) throws IOException {
if ((javaType == null) || javaType.isTypeOrSubTypeOf(Void.class)) {
return null;
}
Expand Down
2 changes: 1 addition & 1 deletion sdk-spi-demo/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<parent>
<artifactId>capa-parent</artifactId>
<groupId>group.rxcloud</groupId>
<version>1.10.10.RELEASE</version>
<version>1.10.11.RELEASE</version>
</parent>

<artifactId>capa-sdk-spi-demo</artifactId>
Expand Down
4 changes: 2 additions & 2 deletions sdk-spi/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,15 +23,15 @@
<parent>
<artifactId>capa-parent</artifactId>
<groupId>group.rxcloud</groupId>
<version>1.10.10.RELEASE</version>
<version>1.10.11.RELEASE</version>
</parent>

<artifactId>capa-sdk-spi</artifactId>
<packaging>jar</packaging>
<name>capa-sdk-spi</name>

<properties>
<log4j.version>2.14.1</log4j.version>
<log4j.version>2.15.0</log4j.version>
<logback.version>1.2.3</logback.version>
</properties>

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import group.rxcloud.capa.infrastructure.exceptions.CapaException;
import group.rxcloud.capa.infrastructure.serializer.CapaObjectSerializer;
import group.rxcloud.capa.infrastructure.serializer.DefaultObjectSerializer;
import group.rxcloud.capa.infrastructure.serializer.ObjectSerializer;
import group.rxcloud.capa.infrastructure.serializer.ExtensionObjectSerializer;
import group.rxcloud.capa.spi.http.config.RpcServiceOptions;
import group.rxcloud.cloudruntimes.utils.TypeRef;
import okhttp3.Headers;
Expand Down Expand Up @@ -223,7 +223,7 @@ public void testDoInvokeApi_Success() throws ExecutionException, InterruptedExce
/**
* serializer/deserializer for request/response objects used in tests only
*/
private class TestRuntimeExceptionObjectSerializer extends ObjectSerializer implements CapaObjectSerializer {
private class TestRuntimeExceptionObjectSerializer extends ExtensionObjectSerializer implements CapaObjectSerializer {

/**
* {@inheritDoc}
Expand Down Expand Up @@ -254,7 +254,7 @@ public String getContentType() {
/**
* serializer/deserializer for request/response objects used in tests only
*/
private class TestIOExceptionObjectSerializer extends ObjectSerializer implements CapaObjectSerializer {
private class TestIOExceptionObjectSerializer extends ExtensionObjectSerializer implements CapaObjectSerializer {

/**
* {@inheritDoc}
Expand Down
2 changes: 1 addition & 1 deletion sdk-springboot/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<parent>
<artifactId>capa-parent</artifactId>
<groupId>group.rxcloud</groupId>
<version>1.10.10.RELEASE</version>
<version>1.10.11.RELEASE</version>
</parent>

<artifactId>sdk-springboot</artifactId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -19,11 +19,12 @@
import com.kevinten.vrml.core.beans.SpringContextConfigurator;
import com.kevinten.vrml.core.serialization.Serialization;
import group.rxcloud.capa.infrastructure.exceptions.CapaException;
import group.rxcloud.capa.infrastructure.serializer.CapaObjectSerializer;
import group.rxcloud.capa.infrastructure.serializer.DefaultObjectSerializer;
import group.rxcloud.capa.infrastructure.serializer.ObjectSerializer;
import group.rxcloud.capa.pubsub.Topic;
import group.rxcloud.capa.pubsub.domain.TopicEventRequest;
import group.rxcloud.capa.pubsub.domain.TopicSubscription;
import group.rxcloud.cloudruntimes.utils.TypeRef;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.BeansException;
Expand All @@ -49,7 +50,7 @@ public class PubSubBeanPostProcessor implements BeanPostProcessor {
private static final Logger logger = LoggerFactory.getLogger(PubSubBeanPostProcessor.class);

private final EmbeddedValueResolver embeddedValueResolver;
private final ObjectSerializer serializer;
private final CapaObjectSerializer serializer;

PubSubBeanPostProcessor(ConfigurableBeanFactory beanFactory) {
embeddedValueResolver = new EmbeddedValueResolver(beanFactory);
Expand Down Expand Up @@ -84,7 +85,7 @@ public Object postProcessAfterInitialization(Object bean, String beanName) throw
* @param clazz Controller class where {@link Topic} is expected.
* @param serializer json serializer
*/
private static void subscribeToTopics(Class clazz, EmbeddedValueResolver embeddedValueResolver, ObjectSerializer serializer) {
private static void subscribeToTopics(Class clazz, EmbeddedValueResolver embeddedValueResolver, CapaObjectSerializer serializer) {
if (clazz == null) {
return;
}
Expand Down Expand Up @@ -152,12 +153,12 @@ private static void subscribeToTopics(Class clazz, EmbeddedValueResolver embedde
}
}

private static Map<String, String> resolveMetadataMap(ObjectSerializer serializer, String metadata) {
private static Map<String, String> resolveMetadataMap(CapaObjectSerializer serializer, String metadata) {
Map<String, String> metadataMap = Collections.emptyMap();
if (!StringUtils.isEmpty(metadata)) {
byte[] metadataBytes = metadata.getBytes(StandardCharsets.UTF_8);
try {
metadataMap = serializer.deserialize(metadataBytes, Map.class);
metadataMap = serializer.deserialize(metadataBytes, TypeRef.get(Map.class));
} catch (Exception e) {
if (logger.isErrorEnabled()) {
logger.error("[PubSub.@Topic.subscribe] illegal metadata[{}]",
Expand Down
2 changes: 1 addition & 1 deletion sdk/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<parent>
<groupId>group.rxcloud</groupId>
<artifactId>capa-parent</artifactId>
<version>1.10.10.RELEASE</version>
<version>1.10.11.RELEASE</version>
</parent>

<artifactId>capa-sdk</artifactId>
Expand Down