Skip to content

Commit

Permalink
fix shallow clone bug
Browse files Browse the repository at this point in the history
  • Loading branch information
root committed Jun 11, 2020
1 parent 2f657a4 commit 12a0574
Show file tree
Hide file tree
Showing 12 changed files with 60 additions and 28 deletions.
17 changes: 4 additions & 13 deletions src/main/java/com/github/vincemann/ezcompare/Comparator.java
Original file line number Diff line number Diff line change
@@ -1,18 +1,9 @@
package com.github.vincemann.ezcompare;

import com.github.hervian.reflection.Types;
import com.github.vincemann.ezcompare.util.BeanUtils;
import com.github.vincemann.ezcompare.util.ReflectionUtils;
import com.google.common.collect.Sets;
import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;

import java.util.HashSet;
import java.util.Set;

import static com.github.vincemann.ezcompare.util.MethodNameUtil.propertyNameOf;
import com.github.vincemann.ezcompare.config.FullCompareConfig;
import com.github.vincemann.ezcompare.config.FullCompareConfigFactory;
import com.github.vincemann.ezcompare.config.PartialCompareConfig;
import com.github.vincemann.ezcompare.config.PartialCompareConfigFactory;

/**
* Factory for {@link Comparison}.
Expand Down
8 changes: 5 additions & 3 deletions src/main/java/com/github/vincemann/ezcompare/Comparison.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package com.github.vincemann.ezcompare;

import com.github.hervian.reflection.Types;
import com.github.vincemann.ezcompare.config.FullCompareConfig;
import com.github.vincemann.ezcompare.config.PartialCompareConfig;
import com.google.common.collect.Sets;
import lombok.AccessLevel;
import lombok.Builder;
Expand Down Expand Up @@ -97,7 +99,7 @@ public FullComparePropertyConfigurer ignore(String... propertyNames) {
/**
* Globally ignored Properties are not included.
* If you want to add some of them anyways for this specific comparison, use {@link this#configureFullCompare(FullCompareConfigConfigurer)}
* and remove them from {@link com.github.vincemann.ezcompare.FullCompareConfig#ignoredProperties} for this specific CompareTemplate.
* and remove them from {@link FullCompareConfig#ignoredProperties} for this specific CompareTemplate.
*/
@Override
public FullComparePropertyConfigurer all() {
Expand Down Expand Up @@ -127,13 +129,13 @@ public CompareOptionsConfigurer fullDiff(boolean v) {

@Override
public FullCompareOptionsConfigurer configureFullCompare(FullCompareConfigConfigurer configurer) {
configurer.configure(fullCompareConfig);
configurer.configure(fullCompareConfig.modify());
return this;
}

@Override
public PartialCompareOptionsConfigurer configurePartialCompare(PartialCompareConfigConfigurer configurer) {
configurer.configure(partialCompareConfig);
configurer.configure(partialCompareConfig.modify());
return this;
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,12 @@
package com.github.vincemann.ezcompare;

import com.github.vincemann.ezcompare.config.FullCompareConfig;

public interface FullCompareOptionsConfigurer
extends CompareOptionsConfigurer{

interface FullCompareConfigConfigurer{
public void configure(FullCompareConfig config);
public void configure(FullCompareConfig.Modifier<?> config);
}

public FullCompareOptionsConfigurer ignoreNull(boolean value);
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
package com.github.vincemann.ezcompare;

import com.github.vincemann.ezcompare.config.PartialCompareConfig;

public interface PartialCompareOptionsConfigurer extends CompareOptionsConfigurer{

interface PartialCompareConfigConfigurer{
public void configure(PartialCompareConfig config);
public void configure(PartialCompareConfig.Modifier<?> config);
}
public PartialCompareOptionsConfigurer configurePartialCompare(PartialCompareConfigConfigurer configurer);
}
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
package com.github.vincemann.ezcompare;

import com.github.hervian.reflection.Types;
import com.github.vincemann.ezcompare.config.FullCompareConfig;
import com.github.vincemann.ezcompare.config.FullCompareConfigFactory;
import com.github.vincemann.ezcompare.config.PartialCompareConfig;
import com.github.vincemann.ezcompare.config.PartialCompareConfigFactory;
import com.google.common.collect.Sets;
import org.mockito.ArgumentMatcher;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,9 @@
package com.github.vincemann.ezcompare;
package com.github.vincemann.ezcompare.config;

import com.github.hervian.reflection.Types;
import com.github.vincemann.ezcompare.AbstractConfigModifier;
import com.github.vincemann.ezcompare.Comparison;
import com.github.vincemann.ezcompare.RapidEqualsBuilder;
import lombok.Getter;
import lombok.Setter;
import lombok.ToString;
Expand Down Expand Up @@ -113,7 +116,7 @@ public static class Builder extends Modifier<Builder> {
super(config);
}

FullCompareConfig build() {
public FullCompareConfig build() {
return getConfig();
}
}
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.github.vincemann.ezcompare;
package com.github.vincemann.ezcompare.config;

import com.github.vincemann.ezcompare.util.BeanUtils;
import com.google.common.collect.Sets;

import static com.github.vincemann.ezcompare.Comparator.getFullCompareGlobalConfig;

Expand All @@ -23,7 +24,10 @@ public static FullCompareConfig createDefault() {
* Creates Config based on GlobalConfig. (clone)
*/
public static FullCompareConfig.Builder buildBasedOnGlobal() {
return new FullCompareConfig.Builder(BeanUtils.clone(getFullCompareGlobalConfig()));
FullCompareConfig global = getFullCompareGlobalConfig();
FullCompareConfig cloned = BeanUtils.clone(global);
cloned.setIgnoredProperties(Sets.newHashSet(global.getIgnoredProperties()));
return new FullCompareConfig.Builder(cloned);
}

/**
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,8 @@
package com.github.vincemann.ezcompare;
package com.github.vincemann.ezcompare.config;

import com.github.vincemann.ezcompare.AbstractConfigModifier;
import com.github.vincemann.ezcompare.Comparison;
import com.github.vincemann.ezcompare.RapidEqualsBuilder;
import com.github.vincemann.ezcompare.util.ReflectionUtils;
import com.google.common.collect.Sets;
import lombok.ToString;
Expand Down Expand Up @@ -63,7 +66,7 @@ public static class Builder extends Modifier<Builder> {
super(config);
}

PartialCompareConfig build() {
public PartialCompareConfig build() {
return getConfig();
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package com.github.vincemann.ezcompare;
package com.github.vincemann.ezcompare.config;

import com.github.vincemann.ezcompare.util.BeanUtils;
import com.google.common.collect.Sets;

import static com.github.vincemann.ezcompare.Comparator.getPartialCompareGlobalConfig;

Expand All @@ -23,7 +24,10 @@ public static PartialCompareConfig createDefault() {
* Creates Config based on GlobalConfig. (clone)
*/
public static PartialCompareConfig.Builder buildBasedOnGlobal() {
return new PartialCompareConfig.Builder(BeanUtils.clone(getPartialCompareGlobalConfig()));
PartialCompareConfig global = getPartialCompareGlobalConfig();
PartialCompareConfig cloned = BeanUtils.clone(global);
cloned.setIncludedProperties(Sets.newHashSet(global.getIncludedProperties()));
return new PartialCompareConfig.Builder(cloned);
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@ public class BeanUtils {

private BeanUtils(){}

/**
* Shallow Copy!
*/
public static <T> T clone(T o){
try {
return (T) BeanUtilsBean.getInstance().cloneBean(o);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ void allSame_butRootHasFieldThatCompareDoesNotHave_withValue_useNullForNotFoundE


ResultProvider resultProvider = compare(child).with(parent)
.configureFullCompare(config -> config.setUseNullForNotFound(true))
.configureFullCompare(config -> config.useNullForNotFound(true))
.properties()
.all()
.ignore(child::getParent)
Expand Down Expand Up @@ -218,7 +218,7 @@ void allSame_butRootHasFieldThatCompareDoesNotHave_withoutValue_useNullForNotFou


boolean equal = compare(child).with(parent)
.configureFullCompare((config) -> config.setUseNullForNotFound(true))
.configureFullCompare((config) -> config.useNullForNotFound(true))
.properties()
.all()
.ignore(child::getParent)
Expand Down
14 changes: 14 additions & 0 deletions src/test/java/com/github/vincemann/ezcompare/ShowCaseTests.java
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,13 @@ static class Person{
private Long tel;
private Integer age;
private String creatorIp;

@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
'}';
}
}

@Builder
Expand All @@ -27,6 +34,13 @@ static class PersonDTO{
private String address;
private Long tel;
private Integer age;

@Override
public String toString() {
return "PersonDTO{" +
"name='" + name + '\'' +
'}';
}
}

@Test
Expand Down

0 comments on commit 12a0574

Please sign in to comment.