/*
* 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.registry.eventing.template;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.wso2.carbon.registry.core.Registry;
import org.wso2.carbon.registry.core.Resource;
import org.wso2.carbon.registry.core.exceptions.RegistryException;
public class RegistryNotification implements NotificationTemplate {
private static final String TEMPLATE_PATH = "/repository/components/org.wso2.carbon.governance/templates";
private static final String DEFAULT_TEMPLATE_NAME = "default";
private static final String TEMPLATE_EXT = ".html";
private static final String DEFAULT_TEMPLATE = TEMPLATE_PATH + "/"+DEFAULT_TEMPLATE_NAME+TEMPLATE_EXT;
private static final Log log = LogFactory.getLog(RegistryNotification.class);
/**
* This method used to populate email message body. As default behavior this will replace the $$message$$ content
* of the template using input message.
*
* @param configRegistry Configuration Registry
* @param resourcePath Registry Resource Path
* @param message Current
* @param eventType Eventing type
* @return Populated email message body
*/
public String populateEmailMessage(Registry configRegistry,String resourcePath,String message, String eventType) {
String templateLocation = TEMPLATE_PATH +"/"+eventType.toLowerCase() +TEMPLATE_EXT;
Resource template = null;
try {
if (configRegistry.resourceExists(templateLocation)){
template = configRegistry.get(templateLocation);
} else if (configRegistry.resourceExists(DEFAULT_TEMPLATE)){
template = configRegistry.get(DEFAULT_TEMPLATE);
}
if (template != null) {
Object object = template.getContent();
if (object != null) {
String content;
if (object instanceof String){
content = (String)object;
}else {
content = new String((byte[])object);
}
return content.replace("$$message$$", message);
}
}
} catch (RegistryException e) {
log.warn("An error occurred while accessing email template from the registry");
}
return null;
}
}