All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.mule.runtime.config.internal.NotificationConfig Maven / Gradle / Ivy

/*
 * 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.config.internal;

import org.mule.runtime.api.component.AbstractComponent;
import org.mule.runtime.api.notification.AsyncMessageNotification;
import org.mule.runtime.api.notification.AsyncMessageNotificationListener;
import org.mule.runtime.api.notification.ClusterNodeNotificationListener;
import org.mule.runtime.api.notification.ConnectionNotification;
import org.mule.runtime.api.notification.ConnectionNotificationListener;
import org.mule.runtime.api.notification.ConnectorMessageNotification;
import org.mule.runtime.api.notification.ConnectorMessageNotificationListener;
import org.mule.runtime.api.notification.CustomNotification;
import org.mule.runtime.api.notification.CustomNotificationListener;
import org.mule.runtime.api.notification.ErrorHandlerNotification;
import org.mule.runtime.api.notification.ErrorHandlerNotificationListener;
import org.mule.runtime.api.notification.ExceptionNotification;
import org.mule.runtime.api.notification.ExceptionNotificationListener;
import org.mule.runtime.api.notification.ExtensionNotification;
import org.mule.runtime.api.notification.ExtensionNotificationListener;
import org.mule.runtime.api.notification.ManagementNotification;
import org.mule.runtime.api.notification.ManagementNotificationListener;
import org.mule.runtime.api.notification.MessageProcessorNotification;
import org.mule.runtime.api.notification.MessageProcessorNotificationListener;
import org.mule.runtime.api.notification.Notification;
import org.mule.runtime.api.notification.NotificationListener;
import org.mule.runtime.api.notification.PipelineMessageNotification;
import org.mule.runtime.api.notification.PipelineMessageNotificationListener;
import org.mule.runtime.api.notification.RoutingNotification;
import org.mule.runtime.api.notification.RoutingNotificationListener;
import org.mule.runtime.api.notification.SecurityNotification;
import org.mule.runtime.api.notification.SecurityNotificationListener;
import org.mule.runtime.api.notification.TransactionNotification;
import org.mule.runtime.api.notification.TransactionNotificationListener;
import org.mule.runtime.core.api.context.notification.MuleContextNotification;
import org.mule.runtime.core.api.context.notification.MuleContextNotificationListener;

import com.google.common.collect.ImmutableMap;

import java.util.Map;

/**
 * Notification helper object for creating notification manager configuration.
 * 

* For now we create specific types {@code Notification.EnabledNotification} and {@code Notification.DisabledNotification} for * elements that have children of the same type but that must be injected in different collections of the parent object. Ideally * this should not be needed or we don't have to support such use case anymore but for previous elements coming from previous mule * version we have to keep the XML syntax as it is. * * @since 4.0 */ public abstract class NotificationConfig> extends AbstractComponent { public static final Map> EVENT_MAP; public static final Map> INTERFACE_MAP; static { EVENT_MAP = ImmutableMap.>builder() .put("CONTEXT", MuleContextNotification.class) .put("SECURITY", SecurityNotification.class) .put("CONNECTOR-MESSAGE", ConnectorMessageNotification.class) .put("MANAGEMENT", ManagementNotification.class) .put("MESSAGE-PROCESSOR", MessageProcessorNotification.class) .put("EXCEPTION-STRATEGY", ErrorHandlerNotification.class) .put("CONNECTION", ConnectionNotification.class) .put("CUSTOM", CustomNotification.class) .put("EXCEPTION", ExceptionNotification.class) .put("TRANSACTION", TransactionNotification.class) .put("ROUTING", RoutingNotification.class) .put("PIPELINE-MESSAGE", PipelineMessageNotification.class) .put("ASYNC-MESSAGE", AsyncMessageNotification.class) .put("EXTENSION", ExtensionNotification.class) .build(); INTERFACE_MAP = ImmutableMap.>builder() .put("CONTEXT", MuleContextNotificationListener.class) .put("SECURITY", SecurityNotificationListener.class) .put("MANAGEMENT", ManagementNotificationListener.class) .put("MESSAGE-PROCESSOR", MessageProcessorNotificationListener.class) .put("EXCEPTION-STRATEGY", ErrorHandlerNotificationListener.class) .put("CONNECTION", ConnectionNotificationListener.class) .put("CUSTOM", CustomNotificationListener.class) .put("CONNECTOR-MESSAGE", ConnectorMessageNotificationListener.class) .put("EXCEPTION", ExceptionNotificationListener.class) .put("TRANSACTION", TransactionNotificationListener.class) .put("ROUTING", RoutingNotificationListener.class) .put("CLUSTER-NODE", ClusterNodeNotificationListener.class) .put("PIPELINE-MESSAGE", PipelineMessageNotificationListener.class) .put("ASYNC-MESSAGE", AsyncMessageNotificationListener.class) .put("EXTENSION", ExtensionNotificationListener.class) .build(); } public NotificationConfig(Class interfaceClass, Class eventClass) { this.interfaceClass = interfaceClass; this.eventClass = eventClass; } public NotificationConfig() { // used by the parser builder. } private String eventName; private Class eventClass; private String interfaceName; private Class interfaceClass; private boolean eventExplicitlyConfigured; private boolean interfaceExplicitlyConfigured; public void setInterfaceName(String interfaceName) { interfaceExplicitlyConfigured = true; this.interfaceName = interfaceName; } public String getInterfaceName() { return interfaceName; } public void setEventClass(Class eventClass) { eventExplicitlyConfigured = true; this.eventClass = eventClass; } public Class getEventClass() { return eventClass; } public void setEventName(String eventName) { eventExplicitlyConfigured = true; this.eventName = eventName; } public String getEventName() { return eventName; } public void setInterfaceClass(Class interfaceClass) { interfaceExplicitlyConfigured = true; this.interfaceClass = interfaceClass; } public Class getInterfaceClass() { return interfaceClass; } public boolean isEventExplicitlyConfigured() { return eventExplicitlyConfigured; } public boolean isInterfaceExplicitlyConfigured() { return interfaceExplicitlyConfigured; } public static class EnabledNotificationConfig> extends NotificationConfig { public EnabledNotificationConfig(Class interfaceClass, Class eventClass) { super(interfaceClass, eventClass); } public EnabledNotificationConfig() { super(); } } public static class DisabledNotificationConfig> extends NotificationConfig { public DisabledNotificationConfig() { super(); } } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy