/* * 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.runtime.core.config.bootstrap; import static junit.framework.Assert.assertEquals; import static org.junit.Assert.assertTrue; import static org.mule.runtime.core.config.bootstrap.ArtifactType.APP; import org.mule.runtime.api.metadata.DataType; import org.mule.runtime.core.DefaultMuleContext; import org.mule.runtime.core.api.MuleContext; import org.mule.runtime.api.exception.MuleException; import org.mule.runtime.core.api.config.ConfigurationBuilder; import org.mule.runtime.core.api.registry.ResolverException; import org.mule.runtime.core.api.registry.TransformerResolver; import org.mule.runtime.core.api.transformer.Transformer; import org.mule.runtime.core.api.transformer.TransformerException; import org.mule.runtime.core.config.builders.DefaultsConfigurationBuilder; import org.mule.runtime.core.transformer.AbstractDiscoverableTransformer; import org.mule.tck.junit4.AbstractMuleContextTestCase; import java.nio.charset.Charset; import java.util.ArrayList; import java.util.List; import java.util.Properties; import org.junit.Test; public class SimpleRegistryBootstrapTransformersTest extends AbstractMuleContextTestCase { @Test public void registeringTransformersWithCustomKey() throws MuleException { Properties properties = new Properties(); properties.setProperty("core.transformer.1", ExpectedKeyTransformer.class.getName()); properties.setProperty("custom1", CustomKeyTransformer.class.getName()); TestTransformerResolver transformerResolver = new TestTransformerResolver(); muleContext.getRegistry().registerObject("testTransformerResolver", transformerResolver); final BootstrapServiceDiscoverer bootstrapServiceDiscoverer = new TestBootstrapServiceDiscoverer(properties); ((DefaultMuleContext) muleContext).setBootstrapServiceDiscoverer(bootstrapServiceDiscoverer); SimpleRegistryBootstrap registryBootstrap = new SimpleRegistryBootstrap(APP, muleContext); registryBootstrap.initialise(); assertEquals(2, transformerResolver.getTransformersCount()); assertTrue(transformerResolver.contains(ExpectedKeyTransformer.class)); assertTrue(transformerResolver.contains(CustomKeyTransformer.class)); } @Override protected ConfigurationBuilder getBuilder() throws Exception { // Avoid to use DefaultsConfigurationBuilder because it registers a new instance of SimpleRegistryBootstrap // that conflicts with the one being tested in the test return new DummyConfigurationBuilder(); } private class DummyConfigurationBuilder extends DefaultsConfigurationBuilder { @Override protected void doConfigure(MuleContext muleContext) throws Exception { // Do nothing } } public static class ExpectedKeyTransformer extends AbstractDiscoverableTransformer { @Override protected Object doTransform(Object src, Charset enc) throws TransformerException { return null; } } public static class CustomKeyTransformer extends AbstractDiscoverableTransformer { @Override protected Object doTransform(Object src, Charset enc) throws TransformerException { return null; } } private static class TestTransformerResolver implements TransformerResolver { private List<Transformer> transformers = new ArrayList<>(); @Override public Transformer resolve(DataType source, DataType result) throws ResolverException { return null; } @Override public void transformerChange(Transformer transformer, RegistryAction registryAction) { transformers.add(transformer); } public int getTransformersCount() { return transformers.size(); } private boolean contains(Class<? extends Transformer> transformerClass) { for (Transformer transformer : transformers) { if (transformerClass.isAssignableFrom(transformer.getClass())) { return true; } } return false; } } }