/* * Copyright (c) MuleSoft, Inc. All rights reserved. http://www.mulesoft.com * The software in this package is published under the terms of the CPAL v1.0 * license, a copy of which has been included with this distribution in the * LICENSE.txt file. */ package org.mule.test.runner.infrastructure; import static java.util.Collections.emptyList; import org.mule.runtime.core.util.collection.ImmutableListCollector; import org.mule.runtime.api.meta.model.ExtensionModel; import org.mule.runtime.extension.api.resources.GeneratedResource; import org.mule.runtime.api.dsl.DslResolvingContext; import org.mule.runtime.extension.api.dsl.syntax.resources.spi.DslResourceFactory; import org.mule.runtime.module.extension.internal.resources.AbstractResourcesGenerator; import com.google.common.collect.ImmutableList; import java.io.File; import java.util.List; import java.util.Optional; /** * Implementation of an {@link AbstractResourcesGenerator} that writes the DSL generated resources to the specified target * directory but also exposes the content to be shared for testing purposes. * * @since 4.0 */ class ExtensionsTestDslResourcesGenerator extends ExtensionsTestLoaderResourcesGenerator { private final List<DslResourceFactory> resourceFactories; private final DslResolvingContext context; ExtensionsTestDslResourcesGenerator(List<DslResourceFactory> resourceFactories, File generatedResourcesDirectory, DslResolvingContext context) { super(emptyList(), generatedResourcesDirectory); this.resourceFactories = ImmutableList.copyOf(resourceFactories); this.context = context; } /** * {@inheritDoc} */ public List<GeneratedResource> generateFor(ExtensionModel extensionModel) { List<GeneratedResource> resources = resourceFactories.stream().map(factory -> factory.generateResource(extensionModel, context)) .filter(Optional::isPresent).map(Optional::get).collect(new ImmutableListCollector<>()); resources.forEach(this::write); return resources; } }