return childGenerators.iterator();
}
- @Override
- final GeneratedType runtimeJavaType() {
- return generatedType().orElse(null);
- }
-
final @NonNull List<AbstractAugmentGenerator> augments() {
return augments;
}
final @Nullable AbstractExplicitGenerator<?, ?> findGenerator(final MatchStrategy childStrategy,
// TODO: Wouldn't this method be nicer with Deque<EffectiveStatement<?, ?>> ?
final List<EffectiveStatement<?, ?>> stmtPath, final int offset) {
- final EffectiveStatement<?, ?> stmt = stmtPath.get(offset);
+ final var stmt = stmtPath.get(offset);
// Try direct children first, which is simple
- AbstractExplicitGenerator<?, ?> ret = childStrategy.findGenerator(stmt, childGenerators);
+ var ret = childStrategy.findGenerator(stmt, childGenerators);
if (ret != null) {
final int next = offset + 1;
if (stmtPath.size() == next) {
// - we propagate those groupings as anchors to any augment statements, which takes out some amount of guesswork
// from augment+uses resolution case, as groupings know about their immediate augments as soon as uses linkage
// is resolved
- final List<GroupingGenerator> tmp = new ArrayList<>();
- for (EffectiveStatement<?, ?> stmt : statement().effectiveSubstatements()) {
+ final var tmp = new ArrayList<GroupingGenerator>();
+ for (var stmt : statement().effectiveSubstatements()) {
if (stmt instanceof UsesEffectiveStatement uses) {
- final GroupingGenerator grouping = context.resolveTreeScoped(GroupingGenerator.class, uses.argument());
+ final var grouping = context.resolveTreeScoped(GroupingGenerator.class, uses.argument());
tmp.add(grouping);
// Trigger resolution of uses/augment statements. This looks like guesswork, but there may be multiple
// 'augment' statements in a 'uses' statement and keeping a ListMultimap here seems wasteful.
for (Generator gen : this) {
- if (gen instanceof UsesAugmentGenerator) {
- ((UsesAugmentGenerator) gen).resolveGrouping(uses, grouping);
+ if (gen instanceof UsesAugmentGenerator usesGen) {
+ usesGen.resolveGrouping(uses, grouping);
}
}
}
}
final void startUsesAugmentLinkage(final List<AugmentRequirement> requirements) {
- for (Generator child : childGenerators) {
- if (child instanceof UsesAugmentGenerator) {
- requirements.add(((UsesAugmentGenerator) child).startLinkage());
+ for (var child : childGenerators) {
+ if (child instanceof UsesAugmentGenerator uses) {
+ requirements.add(uses.startLinkage());
}
- if (child instanceof AbstractCompositeGenerator) {
- ((AbstractCompositeGenerator<?, ?>) child).startUsesAugmentLinkage(requirements);
+ if (child instanceof AbstractCompositeGenerator<?, ?> composite) {
+ composite.startUsesAugmentLinkage(requirements);
}
}
}
it.remove();
// If this is a composite generator we need to process is further
- if (child instanceof AbstractCompositeGenerator) {
+ if (child instanceof AbstractCompositeGenerator<?, ?> composite) {
if (unlinkedComposites.isEmpty()) {
unlinkedComposites = new ArrayList<>();
}
- unlinkedComposites.add((AbstractCompositeGenerator<?, ?>) child);
+ unlinkedComposites.add(composite);
}
}
}
@Override
final AbstractExplicitGenerator<?, ?> findSchemaTreeGenerator(final QName qname) {
- final AbstractExplicitGenerator<?, ?> found = super.findSchemaTreeGenerator(qname);
+ final var found = super.findSchemaTreeGenerator(qname);
return found != null ? found : findInferredGenerator(qname);
}
}
final @Nullable GroupingGenerator findGroupingForGenerator(final QName qname) {
- for (GroupingGenerator grouping : groupings) {
+ for (var grouping : groupings) {
final var gen = grouping.findSchemaTreeGenerator(qname.bindTo(grouping.statement().argument().getModule()));
if (gen != null) {
return grouping;
* @return The number of groupings this type uses.
*/
final int addUsesInterfaces(final GeneratedTypeBuilder builder, final TypeBuilderFactory builderFactory) {
- for (GroupingGenerator grp : groupings) {
+ for (var grp : groupings) {
builder.addImplementsType(grp.getGeneratedType(builderFactory));
}
return groupings.size();
}
final void addGetterMethods(final GeneratedTypeBuilder builder, final TypeBuilderFactory builderFactory) {
- for (Generator child : this) {
+ for (var child : this) {
// Only process explicit generators here
- if (child instanceof AbstractExplicitGenerator) {
- ((AbstractExplicitGenerator<?, ?>) child).addAsGetterMethod(builder, builderFactory);
+ if (child instanceof AbstractExplicitGenerator<?, ?> explicit) {
+ explicit.addAsGetterMethod(builder, builderFactory);
}
- final GeneratedType enclosedType = child.enclosedType(builderFactory);
- if (enclosedType instanceof GeneratedTransferObject) {
- builder.addEnclosingTransferObject((GeneratedTransferObject) enclosedType);
- } else if (enclosedType instanceof Enumeration) {
- builder.addEnumeration((Enumeration) enclosedType);
+ final var enclosedType = child.enclosedType(builderFactory);
+ if (enclosedType instanceof GeneratedTransferObject gto) {
+ builder.addEnclosingTransferObject(gto);
+ } else if (enclosedType instanceof Enumeration enumeration) {
+ builder.addEnumeration(enumeration);
} else {
verify(enclosedType == null, "Unhandled enclosed type %s in %s", enclosedType, child);
}
// Utility equivalent of (!isAddedByUses(stmt) && !isAugmenting(stmt)). Takes advantage of relationship between
// CopyableNode and AddedByUsesAware
private static boolean isOriginalDeclaration(final EffectiveStatement<?, ?> stmt) {
- if (stmt instanceof AddedByUsesAware) {
- if (((AddedByUsesAware) stmt).isAddedByUses()
- || stmt instanceof CopyableNode && ((CopyableNode) stmt).isAugmenting()) {
+ if (stmt instanceof AddedByUsesAware aware) {
+ if (aware.isAddedByUses()
+ || stmt instanceof CopyableNode copyable && copyable.isAugmenting()) {
return false;
}
}
}
private static boolean isAddedByUses(final EffectiveStatement<?, ?> stmt) {
- return stmt instanceof AddedByUsesAware && ((AddedByUsesAware) stmt).isAddedByUses();
+ return stmt instanceof AddedByUsesAware aware && aware.isAddedByUses();
}
private static boolean isAugmenting(final EffectiveStatement<?, ?> stmt) {
- return stmt instanceof CopyableNode && ((CopyableNode) stmt).isAugmenting();
+ return stmt instanceof CopyableNode copyable && copyable.isAugmenting();
}
}
import static com.google.common.base.Verify.verify;
import static java.util.Objects.requireNonNull;
-import java.util.Set;
import org.opendaylight.mdsal.binding.generator.impl.reactor.CollisionDomain.Member;
import org.opendaylight.mdsal.binding.generator.impl.rt.DefaultKeyRuntimeType;
import org.opendaylight.mdsal.binding.model.api.GeneratedTransferObject;
-import org.opendaylight.mdsal.binding.model.api.GeneratedType;
import org.opendaylight.mdsal.binding.model.api.Type;
-import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedPropertyBuilder;
-import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTOBuilder;
import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilderBase;
import org.opendaylight.mdsal.binding.model.ri.BindingTypes;
import org.opendaylight.mdsal.binding.runtime.api.KeyRuntimeType;
@Override
GeneratedTransferObject createTypeImpl(final TypeBuilderFactory builderFactory) {
- final GeneratedTOBuilder builder = builderFactory.newGeneratedTOBuilder(typeName());
+ final var builder = builderFactory.newGeneratedTOBuilder(typeName());
builder.addImplementsType(BindingTypes.identifier(Type.of(listGen.typeName())));
- final Set<QName> leafNames = statement().argument();
- for (Generator listChild : listGen) {
- if (listChild instanceof LeafGenerator) {
- final LeafGenerator leafGen = (LeafGenerator) listChild;
+ final var leafNames = statement().argument();
+ for (var listChild : listGen) {
+ if (listChild instanceof LeafGenerator leafGen) {
final QName qname = leafGen.statement().argument();
if (leafNames.contains(qname)) {
- final GeneratedPropertyBuilder prop = builder
+ final var prop = builder
.addProperty(BindingMapping.getPropertyName(qname.getLocalName()))
.setReturnType(leafGen.methodReturnType(builderFactory))
.setReadOnly(true);
return builder.build();
}
- @Override
- GeneratedType runtimeJavaType() {
- return generatedType().orElse(null);
- }
-
@Override
KeyRuntimeType createExternalRuntimeType(final Type type) {
verify(type instanceof GeneratedTransferObject, "Unexpected type %s", type);
import org.opendaylight.mdsal.binding.generator.impl.rt.DefaultAnyxmlRuntimeType;
import org.opendaylight.mdsal.binding.model.api.GeneratedType;
import org.opendaylight.mdsal.binding.model.api.Type;
-import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilder;
import org.opendaylight.mdsal.binding.model.api.type.builder.GeneratedTypeBuilderBase;
import org.opendaylight.mdsal.binding.model.ri.BindingTypes;
import org.opendaylight.mdsal.binding.runtime.api.AnydataRuntimeType;
@Override
GeneratedType createTypeImpl(final TypeBuilderFactory builderFactory) {
- final GeneratedTypeBuilder builder = builderFactory.newGeneratedTypeBuilder(typeName());
+ final var builder = builderFactory.newGeneratedTypeBuilder(typeName());
builder.addImplementsType(BindingTypes.opaqueObject(builder));
addImplementsChildOf(builder);
defaultImplementedInterace(builder);
annotateDeprecatedIfNecessary(builder);
- final ModuleGenerator module = currentModule();
+ final var module = currentModule();
module.addQNameConstant(builder, localName());
builderFactory.addCodegenInformation(module, statement(), builder);
constructRequireImpl(builder, returnType);
}
- @Override
- final GeneratedType runtimeJavaType() {
- return generatedType().orElse(null);
- }
-
@Override
final @NonNull R createExternalRuntimeType(final Type type) {
verify(type instanceof GeneratedType, "Unexpected type %s", type);