Skip to content

Commit

Permalink
Merge pull request #7 from jitwxs/dev
Browse files Browse the repository at this point in the history
1.7-RELEASE
  • Loading branch information
jitwxs committed May 21, 2022
2 parents 00d0e2c + 5c9a110 commit 4bfb9ad
Show file tree
Hide file tree
Showing 39 changed files with 1,231 additions and 363 deletions.
2 changes: 1 addition & 1 deletion easydata-sample/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@
<dependency>
<groupId>io.github.jitwxs</groupId>
<artifactId>easydata</artifactId>
<version>1.6-RELEASE</version>
<version>1.7-RELEASE</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,10 @@ public class OrderEvaluate {
* 用户ID
*/
private String userId;
/**
* sub id
*/
private Long sId;
/**
* 用户评分
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,15 @@
*/
public class OrderEvaluateConvert {
public static MessageProto.OrderEvaluate db2Proto(final OrderEvaluate orderEvaluate) {
return db2ProtoBuilder(orderEvaluate).build();
}

public static MessageProto.OrderEvaluate.Builder db2ProtoBuilder(final OrderEvaluate orderEvaluate) {
return MessageProto.OrderEvaluate.newBuilder()
.setId(orderEvaluate.getId())
.setHasOpen(orderEvaluate.getHasOpen())
.setUserId(orderEvaluate.getUserId())
.setSId(orderEvaluate.getSId())
.setUserScore(orderEvaluate.getUserScore().toPlainString())
.setUserEvaluate(orderEvaluate.getUserEvaluate())
.setUserDate(TimeUtils.ldtToMs(orderEvaluate.getUserDate()))
Expand All @@ -24,15 +29,15 @@ public static MessageProto.OrderEvaluate db2Proto(final OrderEvaluate orderEvalu
.setCourierEvaluate(orderEvaluate.getCourierEvaluate())
.setVersion(orderEvaluate.getVersion())
.setCourierDate(TimeUtils.ldtToMs(orderEvaluate.getCourierDate()))
.setUpdateDate(TimeUtils.ldtToMs(orderEvaluate.getUpdateDate()))
.build();
.setUpdateDate(TimeUtils.ldtToMs(orderEvaluate.getUpdateDate()));
}

public static OrderEvaluate proto2Db(final MessageProto.OrderEvaluate orderEvaluate) {
return OrderEvaluate.builder()
.id(orderEvaluate.getId())
.hasOpen(orderEvaluate.getHasOpen())
.userId(orderEvaluate.getUserId())
.sId(orderEvaluate.getSId())
.userScore(new BigDecimal(orderEvaluate.getUserScore()))
.userEvaluate(orderEvaluate.getUserEvaluate())
.userDate(TimeUtils.msToLdt(orderEvaluate.getUserDate()))
Expand Down
21 changes: 11 additions & 10 deletions easydata-sample/src/main/proto/message.proto
Original file line number Diff line number Diff line change
Expand Up @@ -7,14 +7,15 @@ message OrderEvaluate {
string id = 1;
bool hasOpen = 2;
string userId = 3;
string userScore = 4;
string userEvaluate = 5;
int64 userDate = 6;
string courierId = 7;
string courierScore = 8;
string courierEvaluate = 9;
int32 version = 10;
int64 courierDate = 11;
int64 updateDate = 12;
string protoBeanUnknownFields = 13;
int64 sId = 4;
string userScore = 5;
string userEvaluate = 6;
int64 userDate = 7;
string courierId = 8;
string courierScore = 9;
string courierEvaluate = 10;
int32 version = 11;
int64 courierDate = 12;
int64 updateDate = 13;
string protoBeanUnknownFields = 14;
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package io.github.jitwxs.easydata.sample.bean;

import io.github.jitwxs.easydata.common.bean.FieldProperty;
import io.github.jitwxs.easydata.sample.message.MessageProto;
import lombok.SneakyThrows;
import org.junit.jupiter.api.Test;

import java.beans.Introspector;
import java.util.Map;

import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertNotNull;

/**
* @author jitwxs@foxmail.com
* @since 2022-05-20 23:36
*/
public class FieldPropertyTest {
@Test
@SneakyThrows
public void testForProto() {
final Map<String, FieldProperty> properties = FieldProperty.newInstance(MessageProto.OrderEvaluate.class);

assertNotNull(properties);
assertEquals(MessageProto.OrderEvaluate.newBuilder().getDescriptorForType().getFields().size(), properties.size());
}

@Test
@SneakyThrows
public void testForJava() {
final Map<String, FieldProperty> properties = FieldProperty.newInstance(OrderEvaluate.class);

assertNotNull(properties);
assertEquals(Introspector.getBeanInfo(OrderEvaluate.class, Object.class).getPropertyDescriptors().length, properties.size());
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
package io.github.jitwxs.easydata.sample.core.convert;

import io.github.jitwxs.easydata.common.enums.ClassDiffVerifyStrategyEnum;
import io.github.jitwxs.easydata.core.mock.EasyMock;
import io.github.jitwxs.easydata.core.verify.EasyVerify;
import io.github.jitwxs.easydata.provider.ConvertProvider;
import io.github.jitwxs.easydata.provider.ProviderFactory;
import io.github.jitwxs.easydata.sample.message.MessageProto;
import org.junit.jupiter.api.Test;

/**
* @author jitwxs@foxmail.com
* @since 2022-05-21 18:30
*/
public class ProtoConvertTest {

private final static ConvertProvider delegate = ProviderFactory.delegate(ConvertProvider.class);

@Test
public void builder2Message() {
final MessageProto.OrderEvaluate.Builder protoBuilder = EasyMock.run(MessageProto.OrderEvaluate.Builder.class);

final MessageProto.OrderEvaluate protoMessage = delegate.convert(protoBuilder, MessageProto.OrderEvaluate.class);

EasyVerify.with(protoBuilder, protoMessage).ignoreClassDiff(ClassDiffVerifyStrategyEnum.VERIFY_SAME_FIELD).verify();
}

@Test
public void message2Builder() {
final MessageProto.OrderEvaluate protoMessage = EasyMock.run(MessageProto.OrderEvaluate.class);

final MessageProto.OrderEvaluate.Builder protoBuilder = delegate.convert(protoMessage, MessageProto.OrderEvaluate.Builder.class);

EasyVerify.with(protoMessage, protoBuilder).ignoreClassDiff(ClassDiffVerifyStrategyEnum.VERIFY_SAME_FIELD).verify();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,9 @@ public void testBeanMock() {

final MessageProto.OrderEvaluate orderEvaluate2 = EasyMock.run(MessageProto.OrderEvaluate.class);
assertNotNull(orderEvaluate2);

final MessageProto.OrderEvaluate.Builder orderEvaluate3 = EasyMock.run(MessageProto.OrderEvaluate.Builder.class);
assertNotNull(orderEvaluate3);
}

@Test
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
package io.github.jitwxs.easydata.sample.core.verify;

import io.github.jitwxs.easydata.common.bean.MockConfig;
import io.github.jitwxs.easydata.common.enums.MockStringEnum;
import io.github.jitwxs.easydata.core.mock.EasyMock;
import io.github.jitwxs.easydata.sample.bean.OrderEvaluate;
import io.github.jitwxs.easydata.sample.convert.OrderEvaluateConvert;
Expand All @@ -10,7 +9,7 @@
import io.github.jitwxs.easydata.sample.message.MessageProto;
import org.junit.jupiter.api.Test;

import static io.github.jitwxs.easydata.common.enums.ClassDiffVerifyStrategyEnum.*;
import static io.github.jitwxs.easydata.common.enums.ClassDiffVerifyStrategyEnum.CONVERT_SAME_CLASS;
import static io.github.jitwxs.easydata.common.enums.ClassDiffVerifyStrategyEnum.VERIFY_SAME_FIELD;
import static io.github.jitwxs.easydata.core.verify.EasyVerify.with;
import static org.junit.jupiter.api.Assertions.assertDoesNotThrow;
Expand Down Expand Up @@ -41,8 +40,8 @@ public void testCompareProtoAndBean2() {
final OrderEvaluate evaluate = EasyMock.run(OrderEvaluate.class);
final MessageProto.OrderEvaluate evaluate1 = OrderEvaluateConvert.db2Proto(evaluate);

assertThrows(AssertionError.class, () -> with(evaluate, evaluate1).ignoreClassDiff(CONVERT_SAME_CLASS).verify());
assertDoesNotThrow(() -> with(evaluate, evaluate1).ignoreClassDiff(VERIFY_SAME_FIELD).verify());
assertThrows(AssertionError.class, () -> with(evaluate, evaluate1).ignoreClassDiff(CONVERT_SAME_CLASS).verify());
assertDoesNotThrow(() -> with(evaluate, evaluate1).ignoreClassDiff(VERIFY_SAME_FIELD).verify());
}

/**
Expand All @@ -53,7 +52,45 @@ public void testCompareProtoAndBean3() {
final MessageProto.OrderEvaluate evaluate = EasyMock.run(MessageProto.OrderEvaluate.class, new MockConfig().contrastClass(OrderEvaluate.class));
final OrderEvaluate evaluate1 = OrderEvaluateConvert.proto2Db(evaluate);

assertThrows(AssertionError.class, () -> with(evaluate, evaluate1).ignoreClassDiff(CONVERT_SAME_CLASS).verify());
assertDoesNotThrow(() -> with(evaluate, evaluate1).ignoreClassDiff(VERIFY_SAME_FIELD).verify());
assertThrows(AssertionError.class, () -> with(evaluate, evaluate1).ignoreClassDiff(CONVERT_SAME_CLASS).verify());
assertDoesNotThrow(() -> with(evaluate, evaluate1).ignoreClassDiff(VERIFY_SAME_FIELD).verify());
}

/**
* java 对象 vs proto builder 对象,两边字段有缺失
*/
@Test
public void testCompareProtoAndBean4() {
final OrderEvaluate evaluate = EasyMock.run(OrderEvaluate.class);
final MessageProto.OrderEvaluate.Builder evaluate1 = OrderEvaluateConvert.db2ProtoBuilder(evaluate);

assertThrows(AssertionError.class, () -> with(evaluate, evaluate1).ignoreClassDiff(CONVERT_SAME_CLASS).verify());
assertDoesNotThrow(() -> with(evaluate, evaluate1).ignoreClassDiff(VERIFY_SAME_FIELD).verify());
}

/**
* proto builder 对象 vs proto builder 对象
*/
@Test
public void testCompareProtoAndBean5() {
final OrderEvaluate evaluate = EasyMock.run(OrderEvaluate.class);

final MessageProto.OrderEvaluate.Builder evaluate1 = OrderEvaluateConvert.db2ProtoBuilder(evaluate);
final MessageProto.OrderEvaluate.Builder evaluate2 = OrderEvaluateConvert.db2ProtoBuilder(evaluate);

with(evaluate1, evaluate2).verify();
}

/**
* proto message 对象 vs proto message 对象
*/
@Test
public void testCompareProtoAndBean6() {
final OrderEvaluate evaluate = EasyMock.run(OrderEvaluate.class);

final MessageProto.OrderEvaluate evaluate1 = OrderEvaluateConvert.db2Proto(evaluate);
final MessageProto.OrderEvaluate evaluate2 = OrderEvaluateConvert.db2Proto(evaluate);

with(evaluate1, evaluate2).verify();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,11 +40,11 @@ public void testDouble() {

// 支持精度误差,包装类型
final Double a = 1D, b = 1.1D;
EasyVerify.with(a, b).withPrecision(0.1D).verify();
EasyVerify.with(a, b).withPrecision(0.2D).verify();

// 支持精度误差,基本类型
final double c = 1D, d = 1.1D;
EasyVerify.with(c, d).withPrecision(0.1D).verify();
EasyVerify.with(c, d).withPrecision(0.2D).verify();

// 精度误差配置类型错误
assertThrows(AssertionError.class, () -> EasyVerify.with(c, d).withPrecision(0.1F).verify());
Expand Down
2 changes: 1 addition & 1 deletion easydata/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@

<groupId>io.github.jitwxs</groupId>
<artifactId>easydata</artifactId>
<version>1.6-RELEASE</version>
<version>1.7-RELEASE</version>
<packaging>jar</packaging>

<name>easydata</name>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
package io.github.jitwxs.easydata.common.bean;

import io.github.jitwxs.easydata.common.exception.EasyDataException;
import lombok.Getter;

import java.util.HashMap;
import java.util.Map;

/**
* @author jitwxs@foxmail.com
* @since 2022-05-21 0:09
*/
@Getter
public class ClassProperty {
private final Class<?> target;

private final Map<String, FieldProperty> all = new HashMap<>();

private final Map<String, FieldProperty> readable = new HashMap<>();

private final Map<String, FieldProperty> writeAble = new HashMap<>();

private final Map<String, FieldProperty> readAndWriteAble = new HashMap<>();

public ClassProperty(Class<?> clazz) {
this.target = clazz;

try {
final Map<String, FieldProperty> propertyMap = FieldProperty.newInstance(this.target);

propertyMap.forEach((k, v) -> {
this.all.put(k, v);

if (v.isReadable()) {
this.readable.put(k, v);
}

if (v.isWriteable()) {
this.writeAble.put(k, v);
}

if (v.isReadable() && v.isWriteable()) {
this.readAndWriteAble.put(k, v);
}
});
} catch (Exception e) {
throw new EasyDataException(String.format("Cache Class %s Property Failed", clazz), e);
}
}
}

0 comments on commit 4bfb9ad

Please sign in to comment.