/*
* Copyright (c) 2005 - 2014, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*/
package org.wso2.carbon.event.output.adapter.wso2event;
import org.wso2.carbon.event.output.adapter.core.*;
import org.wso2.carbon.event.output.adapter.wso2event.internal.util.WSO2EventAdapterConstants;
import java.util.*;
/**
* The WSO2Event adapter factory class to create a WSO2Event output adapter
*/
public class WSO2EventAdapterFactory extends OutputEventAdapterFactory {
ResourceBundle resourceBundle = ResourceBundle.getBundle("org.wso2.carbon.event.output.adapter.wso2event.i18n.Resources", Locale.getDefault());
@Override
public String getType() {
return WSO2EventAdapterConstants.ADAPTER_TYPE_WSO2EVENT;
}
@Override
public List<String> getSupportedMessageFormats() {
List<String> supportOutputMessageTypes = new ArrayList<String>();
supportOutputMessageTypes.add(MessageType.WSO2EVENT);
return supportOutputMessageTypes;
}
@Override
public List<Property> getStaticPropertyList() {
List<Property> propertyList = new ArrayList<Property>();
// set receiver url event adapter
Property ipProperty = new Property(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_PROP_RECEIVER_URL);
ipProperty.setDisplayName(
resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_PROP_RECEIVER_URL));
ipProperty.setRequired(false);
ipProperty.setHint(resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_HINT_RECEIVER_URL));
// set authenticator url of event adapter
Property authenticatorIpProperty = new Property(WSO2EventAdapterConstants.
ADAPTER_CONF_WSO2EVENT_PROP_AUTHENTICATOR_URL);
authenticatorIpProperty.setDisplayName(
resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_PROP_AUTHENTICATOR_URL));
authenticatorIpProperty.setRequired(false);
authenticatorIpProperty.setHint(resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_HINT_AUTHENTICATOR_URL));
// set connection user name as property
Property userNameProperty = new Property(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_PROP_USER_NAME);
userNameProperty.setRequired(true);
userNameProperty.setDisplayName(
resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_PROP_USER_NAME));
userNameProperty.setHint(resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_HINT_USER_NAME));
// set connection password as property
Property passwordProperty = new Property(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_PROP_PASSWORD);
passwordProperty.setRequired(true);
passwordProperty.setSecured(true);
passwordProperty.setEncrypted(true);
passwordProperty.setDisplayName(
resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_PROP_PASSWORD));
passwordProperty.setHint(resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_HINT_PASSWORD));
// set connection protocol as property
Property protocolProperty = new Property(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_PROP_PROTOCOL);
protocolProperty.setRequired(true);
protocolProperty.setDefaultValue(WSO2EventAdapterConstants.ADAPTER_PROTOCOL_THRIFT);
protocolProperty.setOptions(new String[]{WSO2EventAdapterConstants.ADAPTER_PROTOCOL_THRIFT, WSO2EventAdapterConstants.ADAPTER_PROTOCOL_BINARY});
protocolProperty.setDisplayName(
resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_PROP_PROTOCOL));
protocolProperty.setHint(resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_HINT_PROTOCOL));
// set publishingMode as property
Property publishingModeProperty = new Property(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_PROP_PUBLISHING_MODE);
publishingModeProperty.setDefaultValue(WSO2EventAdapterConstants.ADAPTER_PUBLISHING_MODE_NON_BLOCKING);
publishingModeProperty.setOptions(new String[]{WSO2EventAdapterConstants.ADAPTER_PUBLISHING_MODE_BLOCKING, WSO2EventAdapterConstants.ADAPTER_PUBLISHING_MODE_NON_BLOCKING});
publishingModeProperty.setDisplayName(
resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_PROP_PUBLISHING_MODE));
publishingModeProperty.setHint(resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_HINT_PUBLISHING_MODE));
// set publishTimeout as property
Property publishTimeoutProperty = new Property(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_PROP_PUBLISH_TIMEOUT_MS);
publishTimeoutProperty.setDefaultValue("0");
publishTimeoutProperty.setDisplayName(
resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_PROP_PUBLISH_TIMEOUT_MS));
publishTimeoutProperty.setHint(resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_CONF_WSO2EVENT_HINT_PUBLISH_TIMEOUT_MS));
propertyList.add(ipProperty);
propertyList.add(authenticatorIpProperty);
propertyList.add(userNameProperty);
propertyList.add(passwordProperty);
propertyList.add(protocolProperty);
propertyList.add(publishingModeProperty);
propertyList.add(publishTimeoutProperty);
return propertyList;
}
@Override
public List<Property> getDynamicPropertyList() {
return null;
}
@Override
public String getUsageTips() {
return resourceBundle.getString(WSO2EventAdapterConstants.ADAPTER_USAGE_TIPS_WSO2EVENT);
}
@Override
public OutputEventAdapter createEventAdapter(OutputEventAdapterConfiguration eventAdapterConfiguration, Map<String, String> globalProperties) {
return new WSO2EventAdapter(eventAdapterConfiguration, globalProperties);
}
}