Skip to content

Commit 0d0575f

Browse files
committed
Merge branch 'master' into 4.2.0
2 parents 7ea8323 + 6e3c198 commit 0d0575f

File tree

8 files changed

+154
-23
lines changed

8 files changed

+154
-23
lines changed

hsweb-easy-orm-core/src/main/java/org/hswebframework/ezorm/core/DefaultExtensible.java renamed to hsweb-easy-orm-core/src/main/java/org/hswebframework/ezorm/core/DefaultExtendable.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
import java.util.Map;
1111

1212
@Setter
13-
public class DefaultExtensible implements Extensible {
13+
public class DefaultExtendable implements Extendable {
1414

1515
private Map<String, Object> extensions;
1616

Lines changed: 99 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
package org.hswebframework.ezorm.core;
2+
3+
import com.fasterxml.jackson.annotation.JsonAnyGetter;
4+
import com.fasterxml.jackson.annotation.JsonAnySetter;
5+
import com.fasterxml.jackson.annotation.JsonIgnore;
6+
7+
import java.util.Map;
8+
9+
/**
10+
* 可扩展的对象,用于动态拓展实体字段属性
11+
*
12+
* @author zhouhao
13+
* @since 4.1.3
14+
*/
15+
public interface Extendable {
16+
17+
/**
18+
* 获取所有扩展属性
19+
*
20+
* @return 扩展属性
21+
*/
22+
@JsonAnyGetter
23+
Map<String, Object> extensions();
24+
25+
/**
26+
* 获取扩展属性
27+
*
28+
* @param property 属性名
29+
* @return 属性值
30+
*/
31+
default Object getExtension(String property) {
32+
Map<String, Object> ext = extensions();
33+
return ext == null ? null : ext.get(property);
34+
}
35+
36+
/**
37+
* 设置扩展属性
38+
*
39+
* @param property 属性名
40+
* @param value 属性值
41+
*/
42+
@JsonAnySetter
43+
void setExtension(String property, Object value);
44+
45+
default void setExtension(String property, int value) {
46+
setExtension(property, (Object) value);
47+
}
48+
49+
default void setExtension(String property, long value) {
50+
setExtension(property, (Object) value);
51+
}
52+
53+
default void setExtension(String property, double value) {
54+
setExtension(property, (Object) value);
55+
}
56+
57+
default void setExtension(String property, float value) {
58+
setExtension(property, (Object) value);
59+
}
60+
61+
default void setExtension(String property, boolean value) {
62+
setExtension(property, (Object) value);
63+
}
64+
65+
default void setExtension(String property, byte value) {
66+
setExtension(property, (Object) value);
67+
}
68+
69+
default void setExtension(String property, char value) {
70+
setExtension(property, (Object) value);
71+
}
72+
73+
default void setExtension(String property, short value) {
74+
setExtension(property, (Object) value);
75+
}
76+
77+
78+
/**
79+
* 方法引用方式设置扩展属性
80+
*
81+
* @param property 属性名
82+
* @param value 属性值
83+
* @param <T> 属性值类型
84+
*/
85+
default <T> void withExtension(StaticMethodReferenceColumn<T> property, T value) {
86+
setExtension(property.getColumn(), value);
87+
}
88+
89+
/**
90+
* 方法引用方式设置扩展属性
91+
*
92+
* @param property 属性名
93+
* @param <T> 属性值类型
94+
*/
95+
default <T> void withExtension(MethodReferenceColumn<T> property) {
96+
setExtension(property.getColumn(), property.get());
97+
}
98+
99+
}

hsweb-easy-orm-core/src/main/java/org/hswebframework/ezorm/core/Extensible.java

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
* @author zhouhao
1212
* @since 4.1.3
1313
*/
14+
@Deprecated
1415
public interface Extensible {
1516

1617
/**
@@ -41,20 +42,55 @@ default Object getExtension(String property) {
4142
@JsonAnySetter
4243
void setExtension(String property, Object value);
4344

45+
default void setExtension(String property, int value) {
46+
setExtension(property, (Object) value);
47+
}
48+
49+
default void setExtension(String property, long value) {
50+
setExtension(property, (Object) value);
51+
}
52+
53+
default void setExtension(String property, double value) {
54+
setExtension(property, (Object) value);
55+
}
56+
57+
default void setExtension(String property, float value) {
58+
setExtension(property, (Object) value);
59+
}
60+
61+
default void setExtension(String property, boolean value) {
62+
setExtension(property, (Object) value);
63+
}
64+
65+
default void setExtension(String property, byte value) {
66+
setExtension(property, (Object) value);
67+
}
68+
69+
default void setExtension(String property, char value) {
70+
setExtension(property, (Object) value);
71+
}
72+
73+
default void setExtension(String property, short value) {
74+
setExtension(property, (Object) value);
75+
}
76+
77+
4478
/**
4579
* 方法引用方式设置扩展属性
80+
*
4681
* @param property 属性名
47-
* @param value 属性值
48-
* @param <T> 属性值类型
82+
* @param value 属性值
83+
* @param <T> 属性值类型
4984
*/
5085
default <T> void setExtension(StaticMethodReferenceColumn<T> property, T value) {
5186
setExtension(property.getColumn(), value);
5287
}
5388

5489
/**
5590
* 方法引用方式设置扩展属性
91+
*
5692
* @param property 属性名
57-
* @param <T> 属性值类型
93+
* @param <T> 属性值类型
5894
*/
5995
default <T> void setExtension(MethodReferenceColumn<T> property) {
6096
setExtension(property.getColumn(), property.get());

hsweb-easy-orm-core/src/test/java/org/hswebframework/ezorm/core/DefaultExtensibleTest.java renamed to hsweb-easy-orm-core/src/test/java/org/hswebframework/ezorm/core/DefaultExtendableTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,22 +6,22 @@
66

77
import static org.junit.Assert.*;
88

9-
public class DefaultExtensibleTest {
9+
public class DefaultExtendableTest {
1010

1111

1212
@Test
1313
@SneakyThrows
1414
public void testJson() {
15-
DefaultExtensible entity = new DefaultExtensible();
15+
DefaultExtendable entity = new DefaultExtendable();
1616

1717
entity.setExtension("extName", "test");
1818

1919
ObjectMapper mapper = new ObjectMapper();
2020

21-
String json = mapper.writerFor(DefaultExtensible.class).writeValueAsString(entity);
21+
String json = mapper.writerFor(DefaultExtendable.class).writeValueAsString(entity);
2222

2323
System.out.println(json);
24-
DefaultExtensible decoded = mapper.readerFor(DefaultExtensible.class).readValue(json);
24+
DefaultExtendable decoded = mapper.readerFor(DefaultExtendable.class).readValue(json);
2525

2626
assertNotNull(decoded.getExtension("extName"));
2727

hsweb-easy-orm-rdb/src/main/java/org/hswebframework/ezorm/rdb/mapping/defaults/DefaultRepository.java

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,10 @@
22

33
import lombok.Getter;
44
import lombok.Setter;
5-
import org.hswebframework.ezorm.core.Extensible;
6-
import org.hswebframework.ezorm.core.GlobalConfig;
75
import org.hswebframework.ezorm.rdb.events.ContextKeyValue;
86
import org.hswebframework.ezorm.rdb.events.ContextKeys;
97
import org.hswebframework.ezorm.rdb.executor.wrapper.ResultWrapper;
108
import org.hswebframework.ezorm.rdb.mapping.EntityColumnMapping;
11-
import org.hswebframework.ezorm.rdb.mapping.EntityPropertyDescriptor;
129
import org.hswebframework.ezorm.rdb.mapping.LazyEntityColumnMapping;
1310
import org.hswebframework.ezorm.rdb.mapping.MappingFeatureType;
1411
import org.hswebframework.ezorm.rdb.mapping.events.EventResultOperator;

hsweb-easy-orm-rdb/src/main/java/org/hswebframework/ezorm/rdb/mapping/wrapper/NestedEntityResultWrapper.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.hswebframework.ezorm.rdb.mapping.wrapper;
22

3-
import org.hswebframework.ezorm.core.Extensible;
3+
import org.hswebframework.ezorm.core.Extendable;
44
import org.hswebframework.ezorm.core.GlobalConfig;
55
import org.hswebframework.ezorm.rdb.executor.wrapper.ColumnWrapperContext;
66
import org.hswebframework.ezorm.rdb.executor.wrapper.ResultWrapper;
@@ -55,10 +55,10 @@ public void wrapColumn(ColumnWrapperContext<E> context) {
5555
}
5656

5757
protected void setProperty(RDBColumnMetadata col, E instance, String label, Object val) {
58-
if (instance instanceof Extensible && (col == null || !col
58+
if (instance instanceof Extendable && (col == null || !col
5959
.getFeature(EntityPropertyDescriptor.ID)
6060
.isPresent())) {
61-
((Extensible) instance).setExtension(label, val);
61+
((Extendable) instance).setExtension(label, val);
6262
} else {
6363
GlobalConfig.getPropertyOperator().setProperty(instance, label, val);
6464
}

hsweb-easy-orm-rdb/src/main/java/org/hswebframework/ezorm/rdb/utils/PropertyUtils.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
package org.hswebframework.ezorm.rdb.utils;
22

3-
import org.hswebframework.ezorm.core.Extensible;
3+
import org.hswebframework.ezorm.core.Extendable;
44
import org.hswebframework.ezorm.core.GlobalConfig;
55
import org.hswebframework.ezorm.core.ObjectPropertyOperator;
66
import org.hswebframework.ezorm.rdb.mapping.EntityColumnMapping;
@@ -12,22 +12,22 @@ public class PropertyUtils {
1212

1313
public static Optional<Object> getProperty(Object entity, String property, EntityColumnMapping mapping) {
1414
ObjectPropertyOperator opt = GlobalConfig.getPropertyOperator();
15-
if (entity instanceof Extensible && isExtensibleColumn(property, mapping)) {
16-
return Optional.ofNullable(((Extensible) entity).getExtension(property));
15+
if (entity instanceof Extendable && isExtendableColumn(property, mapping)) {
16+
return Optional.ofNullable(((Extendable) entity).getExtension(property));
1717
}
1818
return opt.getProperty(entity, property);
1919
}
2020

21-
public static boolean isExtensibleColumn(String property, EntityColumnMapping mapping) {
21+
public static boolean isExtendableColumn(String property, EntityColumnMapping mapping) {
2222
return mapping
2323
.getColumnByProperty(property)
2424
.map(c -> !c.getFeature(EntityPropertyDescriptor.ID).isPresent())
2525
.orElse(true);
2626
}
2727

2828
public static void setProperty(Object entity, String property, Object value, EntityColumnMapping mapping) {
29-
if (entity instanceof Extensible && isExtensibleColumn(property, mapping)) {
30-
((Extensible) entity).setExtension(property, value);
29+
if (entity instanceof Extendable && isExtendableColumn(property, mapping)) {
30+
((Extendable) entity).setExtension(property, value);
3131
} else {
3232
GlobalConfig.getPropertyOperator().setProperty(entity, property, value);
3333
}

hsweb-easy-orm-rdb/src/test/java/org/hswebframework/ezorm/rdb/supports/BasicTestEntity.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
package org.hswebframework.ezorm.rdb.supports;
22

33
import lombok.*;
4-
import org.hswebframework.ezorm.core.DefaultValueGenerator;
5-
import org.hswebframework.ezorm.core.Extensible;
4+
import org.hswebframework.ezorm.core.Extendable;
65
import org.hswebframework.ezorm.rdb.mapping.annotation.ColumnType;
76
import org.hswebframework.ezorm.rdb.mapping.annotation.DefaultValue;
87
import org.hswebframework.ezorm.rdb.mapping.annotation.EnumCodec;
@@ -21,7 +20,7 @@
2120
@NoArgsConstructor
2221
@EqualsAndHashCode(exclude = {"createTime", "address"})
2322
@ToString
24-
public class BasicTestEntity implements Serializable, Extensible {
23+
public class BasicTestEntity implements Serializable, Extendable {
2524

2625
@Column(length = 32)
2726
@Id

0 commit comments

Comments
 (0)