use of org.mule.runtime.core.internal.context.MuleContextWithRegistries in project mule by mulesoft.
the class DefaultTransformationService method getPayload.
/**
* Attempts to obtain the payload of this message with the desired Class type. This will try and resolve a transformer that can
* do this transformation. If a transformer cannot be found an exception is thrown. Any transformers added to the registry will
* be checked for compatibility.
*
* @param resultType the desired return type
* @param encoding the encoding to use if required
* @return The converted payload of this message. Note that this method will not alter the payload of this message <b>unless</b>
* the payload is an {@link InputStream} in which case the stream will be read and the payload will become the fully
* read stream.
* @throws MessageTransformerException if a transformer cannot be found or there is an error during transformation of the payload.
*/
@SuppressWarnings("unchecked")
protected <T> T getPayload(Message message, DataType resultType, Charset encoding) throws MessageTransformerException {
// Handle null by ignoring the request
if (resultType == null) {
throw new IllegalArgumentException(objectIsNull("resultType").getMessage());
}
DataType dataType = DataType.builder(resultType).type(message.getPayload().getDataType().getType()).build();
// If no conversion is necessary, just return the payload as-is
if (resultType.isCompatibleWith(dataType)) {
return (T) message.getPayload().getValue();
}
// The transformer to execute on this message
Transformer transformer = null;
try {
transformer = ((MuleContextWithRegistries) muleContext).getRegistry().lookupTransformer(dataType, resultType);
if (transformer == null) {
throw new MessageTransformerException(noTransformerFoundForMessage(dataType, resultType), null, message);
}
// Pass in the message itself
Object result = transformer.transform(message, encoding);
// Unless we disallow Object.class as a valid return type we need to do this extra check
checkResultDataType(message, resultType, result);
return (T) result;
} catch (MessageTransformerException e) {
throw e;
} catch (TransformerException e) {
throw new MessageTransformerException(transformer, e, message);
}
}
use of org.mule.runtime.core.internal.context.MuleContextWithRegistries in project mule by mulesoft.
the class AbstractAsyncRequestReplyRequester method initialise.
@Override
public void initialise() throws InitialisationException {
name = format(NAME_TEMPLATE, storePrefix, muleContext.getConfiguration().getId(), getLocation().getRootContainerName());
MuleRegistry registry = ((MuleContextWithRegistries) muleContext).getRegistry();
store = ((ObjectStoreManager) registry.get(OBJECT_STORE_MANAGER)).createObjectStore(name, ObjectStoreSettings.builder().persistent(false).maxEntries(MAX_PROCESSED_GROUPS).entryTtl(UNCLAIMED_TIME_TO_LIVE).expirationInterval(UNCLAIMED_INTERVAL).build());
try {
notificationFirer = registry.lookupObject(NotificationDispatcher.class);
} catch (RegistrationException e) {
throw new InitialisationException(e, this);
}
}
use of org.mule.runtime.core.internal.context.MuleContextWithRegistries in project mule by mulesoft.
the class DefaultMuleContextFactoryTestCase method testCreateMuleContextConfigurationBuilderProperties.
@Test
public void testCreateMuleContextConfigurationBuilderProperties() throws InitialisationException, ConfigurationException {
Properties properties = new Properties();
properties.put("testKey3", "testValue3");
properties.put("testKey4", "testValue4");
context = muleContextFactory.createMuleContext(asList(testServicesConfigurationBuilder, testConfigBuilder), (Map) properties);
assertMuleContextConfiguration(context);
assertConfigurationBuilder1Objects(context);
assertEquals("testValue3", ((MuleContextWithRegistries) context).getRegistry().lookupObject("testKey3"));
assertEquals("testValue4", ((MuleContextWithRegistries) context).getRegistry().lookupObject("testKey4"));
assertNoDefaults(context);
}
use of org.mule.runtime.core.internal.context.MuleContextWithRegistries in project mule by mulesoft.
the class TransformerCachingTestCase method testCacheUpdate.
@Test
public void testCacheUpdate() throws Exception {
DataType sourceType = DataType.fromType(FilterInputStream.class);
MuleRegistry registry = ((MuleContextWithRegistries) muleContext).getRegistry();
Transformer trans = registry.lookupTransformer(sourceType, BYTE_ARRAY);
assertNotNull(trans);
assertTrue(trans instanceof InputStreamToByteArray);
Transformer trans2 = new FilterInputStreamToByteArray();
registry.registerTransformer(trans2);
trans = registry.lookupTransformer(sourceType, BYTE_ARRAY);
assertNotNull(trans);
assertTrue(trans instanceof FilterInputStreamToByteArray);
trans = registry.lookupTransformer(INPUT_STREAM, BYTE_ARRAY);
assertNotNull(trans);
assertTrue(trans instanceof InputStreamToByteArray);
registry.unregisterTransformer(trans2.getName());
trans = registry.lookupTransformer(sourceType, BYTE_ARRAY);
assertNotNull(trans);
assertTrue(trans instanceof InputStreamToByteArray);
}
use of org.mule.runtime.core.internal.context.MuleContextWithRegistries in project mule by mulesoft.
the class RegistryBrokerTestCase method testCrossRegistryLifecycleOrder.
@Test
public void testCrossRegistryLifecycleOrder() throws MuleException {
TransientRegistry reg1 = new TransientRegistry(getUUID(), muleContext, new MuleLifecycleInterceptor());
reg1.initialise();
TransientRegistry reg2 = new TransientRegistry(getUUID(), muleContext, new MuleLifecycleInterceptor());
reg2.initialise();
reg1.registerObject("flow", new LifecycleTrackerFlow("flow", muleContext));
reg2.registerObject("flow2", new LifecycleTrackerFlow("flow2", muleContext));
((MuleContextWithRegistries) muleContext).addRegistry(reg1);
((MuleContextWithRegistries) muleContext).addRegistry(reg2);
muleContext.start();
// Both connectors are started before either flow
assertEquals("flow2-start flow-start ", tracker.toString());
tracker = new String();
muleContext.stop();
// Both services are stopped before either connector
assertEquals("flow2-stop flow-stop ", tracker);
}
Aggregations