/* * Copyright (c) 2005-2010, 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.mediator.bam.config.ui; import org.apache.axiom.om.OMElement; import org.apache.axiom.om.impl.builder.StAXOMBuilder; import org.apache.axis2.AxisFault; import org.apache.axis2.context.ConfigurationContext; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.wso2.carbon.mediator.bam.config.BamServerConfig; import org.wso2.carbon.mediator.bam.config.BamServerConfigBuilder; import org.wso2.carbon.mediator.bam.config.BamServerConfigXml; import org.wso2.carbon.mediator.bam.config.stream.StreamConfiguration; import org.wso2.carbon.mediator.bam.config.stream.Property; import org.wso2.carbon.mediator.bam.config.stream.StreamEntry; import javax.xml.stream.XMLStreamException; import java.io.ByteArrayInputStream; import java.nio.charset.Charset; import java.rmi.RemoteException; import java.util.List; import java.util.Locale; /** * Helper class for the configure_server_profiles.jsp */ public class BamServerProfileUtils { private static final Log log = LogFactory.getLog(BamServerProfileUtils.class); private BamServerProfileConfigAdminClient client; public BamServerProfileUtils(String cookie, String backendServerURL, ConfigurationContext configContext, Locale locale){ try { client = new BamServerProfileConfigAdminClient(cookie, backendServerURL, configContext, locale); } catch (AxisFault e) { String errorMsg = "Error while creating BamServerProfileUtils. " + e.getMessage(); log.error(errorMsg, e); } } public void addResource(String urlSet, String ip, String authenticationPort, String receiverPort, String userName, String password, boolean isSecure, boolean isLoadbalanced, String streamConfigurationListString, String bamServerProfileLocation){ String encryptedPassword = this.encryptPassword(password); String isSecureString, isLoadbalancedString; if(isSecure){ isSecureString = "true"; } else { isSecureString = "false"; } if(isLoadbalanced){ isLoadbalancedString = "true"; } else { isLoadbalancedString = "false"; } StreamConfigListBuilder streamConfigListBuilder = new StreamConfigListBuilder(); List<StreamConfiguration> streamConfigurations = streamConfigListBuilder.getStreamConfigurationListFromString(streamConfigurationListString); BamServerConfigXml mediatorConfigurationXml = new BamServerConfigXml(); OMElement storeXml = mediatorConfigurationXml.buildServerProfile(urlSet, ip, authenticationPort, receiverPort, userName, encryptedPassword, isSecureString, isLoadbalancedString, streamConfigurations); String stringStoreXml = storeXml.toString(); try { client.saveResourceString(stringStoreXml, this.getRealBamServerProfilePath(bamServerProfileLocation)); } catch (RemoteException e) { String errorMsg = "Error while adding resource. " + e.getMessage(); log.error(errorMsg, e); } } public BamServerConfig getResource(String bamServerProfileLocation){ try { String resourceString = client.getResourceString(this.getRealBamServerProfilePath(bamServerProfileLocation)); OMElement resourceElement = new StAXOMBuilder(new ByteArrayInputStream(resourceString.getBytes(Charset.forName("UTF-8")))).getDocumentElement(); BamServerConfigBuilder bamServerConfigBuilder = new BamServerConfigBuilder(); bamServerConfigBuilder.createBamServerConfig(resourceElement); return bamServerConfigBuilder.getBamServerConfig(); } catch (RemoteException e) { String errorMsg = "Error while getting the resource. " + e.getMessage(); log.error(errorMsg, e); } catch (XMLStreamException e) { String errorMsg = "Error while creating OMElement from the string. " + e.getMessage(); log.error(errorMsg, e); } return null; } public boolean resourceAlreadyExists(String bamServerProfileLocation){ try { return client.resourceAlreadyExists(this.getRealBamServerProfilePath(bamServerProfileLocation)); } catch (RemoteException e) { String errorMsg = "Error while checking the resource. " + e.getMessage(); log.error(errorMsg, e); } return true; } public void addCollection(String path){ try { client.addCollection(path); } catch (RemoteException e) { String errorMsg = "Error while adding the collection. " + e.getMessage(); log.error(errorMsg, e); } } public boolean removeResource(String path){ try { return client.removeResource(path); } catch (RemoteException e) { String errorMsg = "Error while removing the resource. " + e.getMessage(); log.error(errorMsg, e); } return false; } public String encryptPassword(String plainTextPassword){ try { return client.encryptAndBase64Encode(plainTextPassword); } catch (RemoteException e) { String errorMsg = "Error while encrypting the password. " + e.getMessage(); log.error(errorMsg, e); } return ""; } public String decryptPassword(String cipherTextPassword){ try { return client.base64DecodeAndDecrypt(cipherTextPassword); } catch (RemoteException e) { String errorMsg = "Error while decrypting the password. " + e.getMessage(); log.error(errorMsg, e); } return ""; } public String getStreamConfigurationListString(StreamConfiguration streamConfiguration){ StringBuilder returnStringBuilder = new StringBuilder(""); if(streamConfiguration != null){ List<Property> properties = streamConfiguration.getProperties(); for (Property property : properties) { returnStringBuilder.append(property.getKey() + "::" + property.getValue() + "::" + property.getType() + "::"); if(property.isExpression()){ returnStringBuilder.append("expression"); } else { returnStringBuilder.append("value"); } returnStringBuilder.append(";"); } returnStringBuilder.append("^"); List<StreamEntry> streamEntries = streamConfiguration.getEntries(); if(streamEntries.size() == 2){ returnStringBuilder.append("dump;dump"); } else if (streamEntries.size() == 1 && streamEntries.get(0).getValue().equals("$SOAPHeader")){ returnStringBuilder.append("dump;notDump"); } else if (streamEntries.size() == 1 && streamEntries.get(0).getValue().equals("$SOAPBody")){ returnStringBuilder.append("notDump;dump"); } else if (streamEntries.size() == 0){ returnStringBuilder.append("notDump;notDump"); } return returnStringBuilder.toString(); } else { return ""; } } private String getRealBamServerProfilePath(String shortServerProfilePath){ if(shortServerProfilePath != null){ String registryType = shortServerProfilePath.split("::")[0]; if (isNotNullOrEmpty(registryType) && registryType.equals("conf")){ return shortServerProfilePath.split("::")[1]; } return shortServerProfilePath; } return shortServerProfilePath; } public boolean isNotNullOrEmpty(String string){ return string != null && !string.equals(""); } }