
com.daiyc.extension.core.BaseAdaptiveExtension Maven / Gradle / Ivy
package com.daiyc.extension.core;
import com.daiyc.extension.util.ExtensionNamingUtils;
import org.apache.commons.lang3.StringUtils;
import java.util.Arrays;
import java.util.Optional;
import java.util.Set;
import java.util.stream.Collectors;
import java.util.stream.Stream;
/**
* @author daiyc
* @since 2024/12/8
*/
public abstract class BaseAdaptiveExtension implements AdaptiveExtension {
protected final ExtensionRegistry registry;
/**
* 候选扩展名称,为空表示不限制
*/
protected final Set candidateExtensionNames;
protected final boolean strictMode;
protected final boolean useDefault;
/**
* 默认扩展名,可为空
*/
protected final String defaultExtension;
public >
BaseAdaptiveExtension(ExtensionRegistry registry,
boolean strictMode,
Class enumType, boolean useDefault, String defaultExtension,
String... candidateExtensionNames) {
Set candidates = Stream.concat(
Optional.ofNullable(enumType).map(et -> Arrays.stream(et.getEnumConstants()).map(Enum::name)).orElse(Stream.empty()),
Arrays.stream(candidateExtensionNames)
)
.map(e -> {
if (strictMode) {
return ExtensionNamingUtils.unifyExtensionName(e);
}
return e;
})
.collect(Collectors.toSet());
this.registry = registry;
this.candidateExtensionNames = candidates;
this.strictMode = strictMode;
this.useDefault = useDefault;
this.defaultExtension = defaultExtension;
}
protected String getExtensionName(String name, boolean useDefault) {
return getExtensionName(name, useDefault, null);
}
protected String getExtensionName(String name, boolean useDefault, String defaultExtension) {
if (StringUtils.isNotBlank(name)) {
return name;
}
if (useDefault || this.useDefault) {
return StringUtils.isNotBlank(defaultExtension) ? defaultExtension : this.defaultExtension;
}
return null;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy