/*
* Copyright (c) 2015, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you 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.input.adapter.email;
import org.wso2.carbon.event.input.adapter.core.*;
import org.wso2.carbon.event.input.adapter.email.internal.util.EmailEventAdapterConstants;
import java.util.*;
/**
* The email event adapter factory class to create an email input adapter
*/
public class EmailEventAdapterFactory extends InputEventAdapterFactory {
private ResourceBundle resourceBundle = ResourceBundle.getBundle
("org.wso2.carbon.event.input.adapter.email.i18n.Resources", Locale.getDefault());
@Override
public String getType() {
return EmailEventAdapterConstants.ADAPTER_TYPE_EMAIL;
}
@Override
public List<String> getSupportedMessageFormats() {
List<String> supportInputMessageTypes = new ArrayList<String>();
supportInputMessageTypes.add(MessageType.XML);
supportInputMessageTypes.add(MessageType.JSON);
supportInputMessageTypes.add(MessageType.TEXT);
return supportInputMessageTypes;
}
@Override
public List<Property> getPropertyList() {
List<Property> propertyList = new ArrayList<Property>();
// set receiving mail address
Property emailAddress = new Property(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_ADDRESS);
emailAddress.setDisplayName(
resourceBundle.getString(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_ADDRESS));
emailAddress.setRequired(true);
emailAddress.setHint(resourceBundle.getString(
EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_ADDRESS_HINT));
propertyList.add(emailAddress);
// set receiving mail username
Property userName = new Property(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_USERNAME);
userName.setDisplayName(
resourceBundle.getString(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_USERNAME));
userName.setRequired(true);
userName.setHint(
resourceBundle.getString(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_USERNAME_HINT));
propertyList.add(userName);
// set receiving mail password
Property password = new Property(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_PASSWORD);
password.setDisplayName(
resourceBundle.getString(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_PASSWORD));
password.setRequired(true);
password.setSecured(true);
password.setEncrypted(true);
password.setHint(
resourceBundle.getString(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_PASSWORD_HINT));
propertyList.add(password);
// set incoming email subject
Property subject = new Property(EmailEventAdapterConstants.ADAPTER_MESSAGE_RECEIVING_EMAIL_SUBJECT);
subject.setDisplayName(
resourceBundle.getString(EmailEventAdapterConstants.ADAPTER_MESSAGE_RECEIVING_EMAIL_SUBJECT));
subject.setRequired(true);
subject.setHint(resourceBundle.getString(
EmailEventAdapterConstants.ADAPTER_MESSAGE_RECEIVING_EMAIL_SUBJECT_HINT));
propertyList.add(subject);
// set receiving mail host
Property host = new Property(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_PROTOCOL_HOST);
host.setDisplayName(
resourceBundle.getString(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_PROTOCOL_HOST));
host.setRequired(true);
host.setHint(
resourceBundle.getString(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_PROTOCOL_HOST_HINT));
propertyList.add(host);
// set receiving mail host
Property port = new Property(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_PROTOCOL_PORT);
port.setDisplayName(
resourceBundle.getString(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_PROTOCOL_PORT));
port.setRequired(true);
port.setHint(
resourceBundle.getString(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_PROTOCOL_PORT_HINT));
propertyList.add(port);
// set receiving mail protocol
Property protocol = new Property(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_PROTOCOL);
protocol.setDisplayName(
resourceBundle.getString(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_PROTOCOL));
protocol.setOptions(new String[]{"pop3", "imap"});
protocol.setDefaultValue("imap");
protocol.setHint(resourceBundle.getString(
EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_PROTOCOL_HINT));
propertyList.add(protocol);
// set receiving mail poll interval
Property pollInterval = new Property(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_POLL_INTERVAL);
pollInterval.setDisplayName(
resourceBundle.getString(EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_POLL_INTERVAL));
pollInterval.setRequired(true);
pollInterval.setHint(resourceBundle.getString(
EmailEventAdapterConstants.ADAPTER_CONF_RECEIVING_EMAIL_POLL_INTERVAL_HINT));
propertyList.add(pollInterval);
return propertyList;
}
@Override
public String getUsageTips() {
return null;
}
@Override
public InputEventAdapter createEventAdapter(InputEventAdapterConfiguration eventAdapterConfiguration,
Map<String, String> globalProperties) {
return new EmailEventAdapter(eventAdapterConfiguration, globalProperties);
}
}