We read every piece of feedback, and take your input very seriously.
To see all available qualifiers, see our documentation.
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Derive4J should allow two types for extension mechanisms:
Eg. demonstration of an extension that remove the private modifier of implementation classes:
import com.google.auto.service.AutoService; import com.squareup.javapoet.TypeSpec; import java.util.List; import java.util.Set; import javax.lang.model.element.Modifier; import org.derive4j.processor.api.DeriveResult; import org.derive4j.processor.api.DeriveUtils; import org.derive4j.processor.api.Extension; import org.derive4j.processor.api.ExtensionFactory; import org.derive4j.processor.api.TypeSpecModifier; import org.derive4j.processor.api.model.DataConstructor; import static java.util.Collections.singletonList; import static java.util.stream.Collectors.toList; import static java.util.stream.Collectors.toSet; @AutoService(ExtensionFactory.class) public final class ExtensionFactoryImpl implements ExtensionFactory { @Override public List<Extension> extensions(DeriveUtils deriveUtils) { return singletonList((adtModel, codeGenSpec) -> { Set<String> strictConstructors = adtModel.dataConstruction() .constructors() .stream() .map(DataConstructor::name) .map(String::toLowerCase) .collect(toSet()); return DeriveResult.result(new TypeSpecModifier(codeGenSpec).modTypes(typeSpecs -> typeSpecs.stream().map(ts -> strictConstructors.contains(ts.name.toLowerCase()) ? removePrivateModifier(ts) : ts) .collect(toList())).build()); }); } private static TypeSpec removePrivateModifier(TypeSpec ts) { return new TypeSpecModifier(ts).modModifiers( modifiers -> modifiers.stream().filter(m -> m != Modifier.PRIVATE).collect(toSet()) ).build(); } }
The text was updated successfully, but these errors were encountered:
implemented by 7795795
Sorry, something went wrong.
No branches or pull requests
Derive4J should allow two types for extension mechanisms:
Eg. demonstration of an extension that remove the private modifier of implementation classes:
The text was updated successfully, but these errors were encountered: