org.unlaxer.util.copy.Propagatable Maven / Gradle / Ivy
package org.unlaxer.util.copy;
import java.util.Optional;
public interface Propagatable {
// public T getDefaultValue();
public Optional extends Propagatable> getParentNode();
// public List> getChildNodes();
public boolean doPropagateToChild();
public T getThisNodeOrignalValue();
public default T getValue(){
Optional extends Propagatable> parentNodeOptional = getParentNode();
if(false == parentNodeOptional.isPresent()){
return getThisNodeOrignalValue();
}
Propagatable parent = parentNodeOptional.get();
boolean doPropagateToChild = parent.doPropagateToChild();
if(false == doPropagateToChild){
return getThisNodeOrignalValue();
}
return merge(parent.getValue());
}
public T merge(T fromParentValue , T fromThisNodeValue);
public default T merge(T fromParentValue){
return merge(fromParentValue , getThisNodeOrignalValue());
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy