Examples of ModelRuleDescriptor


Examples of org.gradle.model.internal.core.rule.describe.ModelRuleDescriptor

        checkCanRegister(type);
        super.registerFactory(type, factory);
    }

    private void checkCanRegister(Class<? extends T> type) {
        ModelRuleDescriptor creator = creators.get(type);
        if (creator != null) {
            StringBuilder builder = new StringBuilder("Cannot register a factory for type ")
                    .append(type.getSimpleName())
                    .append(" because a factory for this type was already registered by ");
            creator.describeTo(builder);
            builder.append(".");
            throw new GradleException(builder.toString());
        }
        creators.put(type, RuleContext.get());
    }
View Full Code Here

Examples of org.gradle.model.internal.core.rule.describe.ModelRuleDescriptor

        doCreate(name, ModelType.of(type), configAction, new CustomTypeFactory<S>(name, type));
    }

    private <S extends T> void doCreate(final String name, ModelType<S> type, Action<? super S> configAction, Factory<? extends S> factory) {
        ModelReference<S> modelReference = ModelReference.of(collectionPath.child(name), type);
        ModelRuleDescriptor descriptor = new NestedModelRuleDescriptor(sourceDescriptor, ActionModelRuleDescriptor.from(new ErroringAction<Appendable>() {
            @Override
            protected void doExecute(Appendable thing) throws Exception {
                thing.append("create(").append(name).append(")");
            }
        }));
View Full Code Here

Examples of org.gradle.model.internal.core.rule.describe.ModelRuleDescriptor

    public <T> void register(MethodRuleDefinition<T> ruleDefinition, ModelRegistry modelRegistry, RuleSourceDependencies dependencies) {
        String modelName = determineModelName(ruleDefinition);

        ModelType<T> returnType = ruleDefinition.getReturnType();
        List<ModelReference<?>> references = ruleDefinition.getReferences();
        ModelRuleDescriptor descriptor = ruleDefinition.getDescriptor();

        Transformer<T, Inputs> transformer = new ModelRuleInvokerBackedTransformer<T>(ruleDefinition.getRuleInvoker(), descriptor, references);
        modelRegistry.create(ModelCreators.of(ModelReference.of(ModelPath.path(modelName), returnType), transformer)
                .descriptor(descriptor)
                .inputs(references)
View Full Code Here

Examples of org.gradle.model.internal.core.rule.describe.ModelRuleDescriptor

    private <T> ModelCreator buildModelCreatorForManagedType(ModelType<T> managedType, MethodRuleDefinition<?> ruleDefinition, ModelPath modelPath) {
        ModelSchema<T> modelSchema = getModelSchema(managedType, ruleDefinition);

        List<ModelReference<?>> bindings = ruleDefinition.getReferences();
        List<ModelReference<?>> inputs = bindings.subList(1, bindings.size());
        ModelRuleDescriptor descriptor = ruleDefinition.getDescriptor();

        Transformer<T, Inputs> transformer = new ManagedModelRuleInvokerBackedTransformer<T>(modelSchema, ruleDefinition.getRuleInvoker(), inputs);
        return ModelCreators.of(ModelReference.of(modelPath, managedType), transformer)
                .descriptor(descriptor)
                .inputs(inputs)
View Full Code Here

Examples of org.gradle.model.internal.core.rule.describe.ModelRuleDescriptor

    }

    private <T> void fireMutation(ModelElement element, BoundModelMutator<T> boundMutator) {
        Inputs inputs = toInputs(boundMutator.getInputs());
        ModelMutator<T> mutator = boundMutator.getMutator();
        ModelRuleDescriptor descriptor = mutator.getDescriptor();

        ModelView<? extends T> view = assertView(element, boundMutator.getSubject(), descriptor, inputs);
        try {
            mutator.mutate(view.getInstance(), inputs);
        } catch (Exception e) {
View Full Code Here
TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.