/** * Builds an instance of this component model. * This calls instantiate(...), instance.setUp(...), doBuild(instance, ...). * * @param deployState a global deployment state used for this model. * @param parent the root config producer this should be added to * @param spec the XML element this is constructed from */ public final MODEL build(DeployState deployState, VespaModel vespaModel, ConfigModelRepo configModelRepo, AbstractConfigProducer parent, Element spec) { ConfigModelContext context = ConfigModelContext.create(deployState, vespaModel, configModelRepo, parent, getIdString(spec)); return build(new DefaultModelInstanceFactory(), spec, context); }
/** * Builds an instance of this component model. * This calls instantiate(...), instance.setUp(...), doBuild(instance, ...). * * @param factory A factory capable of creating models. * @param spec the XML element this is constructed from * @param context A context object containing various data used by builders. */ public MODEL build(ConfigModelInstanceFactory<MODEL> factory, Element spec, ConfigModelContext context) { MODEL model = factory.createModel(context); doBuild(model, spec, context); return model; }
public ModelNode(ConfigModelBuilder<MODEL> builder) { this.id = builder.getId(); this.builder = builder; this.clazz = builder.getModelClass(); this.constructor = findConstructor(clazz); }
@Override public boolean equals(Object other) { if (!(other instanceof ConfigModelBuilder)) { return false; } ConfigModelBuilder otherBuilder = (ConfigModelBuilder) other; List<ConfigModelId> thisIds = this.handlesElements(); List<ConfigModelId> otherIds = otherBuilder.handlesElements(); if (thisIds.size() != otherIds.size()) { return false; } for (int i = 0; i < thisIds.size(); i++) { if (!thisIds.get(i).equals(otherIds.get(i))) { return false; } } return true; }
private ConfigModel buildModel(ModelNode node, ApplicationType applicationType, DeployState deployState, VespaModel vespaModel, AbstractConfigProducer parent, Element servicesElement) { ConfigModelBuilder builder = node.builder; ConfigModelContext context = ConfigModelContext.create(applicationType, deployState, vespaModel, this, parent, getIdString(servicesElement)); return builder.build(node, servicesElement, context); }
@Override public Collection<ConfigModelBuilder> resolve(ConfigModelId id) { Set<ConfigModelBuilder> matchingBuilders = new HashSet<>(chained().resolve(id)); for (ConfigModelBuilder builder : builders) if (builder.handlesElements().contains(id)) matchingBuilders.add(builder); return matchingBuilders; }
@Override public MODEL build(ConfigModelInstanceFactory<MODEL> factory, Element spec, ConfigModelContext context) { VespaDomBuilder.DomSimpleConfigProducerBuilder builder = new VespaDomBuilder.DomSimpleConfigProducerBuilder(context.getProducerId()); AbstractConfigProducer producer = builder.build(context.getDeployState(), context.getParentProducer(), spec); return super.build(factory, spec, context.withParent(producer)); }
@Override public Collection<ConfigModelBuilder> resolve(ConfigModelId id) { Set<ConfigModelBuilder> builders = new HashSet<>(chained().resolve(id)); for (ConfigModelBuilder builder : builderList) { if (builder.handlesElements().contains(id)) builders.add(builder); } return builders; }