/* * Copyright (C) 2012 Issa Gorissen <issa-gorissen@usa.net>. 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.jivesoftware.openfire.crowd; import java.io.File; import java.io.FileInputStream; import java.io.IOException; import java.util.Properties; import org.apache.commons.lang.StringUtils; import org.jivesoftware.util.JiveGlobals; /** * Reading the file crowd.properties which should be found in the conf folder * of openfire * */ public class CrowdProperties { private static final String APPLICATION_NAME = "application.name"; private static final String APPLICATION_PASSWORD = "application.password"; private static final String CROWD_SERVER_URL = "crowd.server.url"; private static final String HTTP_PROXY_HOST = "http.proxy.host"; private static final String HTTP_PROXY_PORT = "http.proxy.port"; private static final String HTTP_PROXY_USERNAME = "http.proxy.username"; private static final String HTTP_PROXY_PASSWORD = "http.proxy.password"; private static final String HTTP_MAX_CONNECTIONS = "http.max.connections"; private static final String HTTP_TIMEOUT = "http.timeout"; private static final String HTTP_SOCKET_TIMEOUT = "http.socket.timeout"; private Properties props; public CrowdProperties() throws IOException { props = new Properties(); File file = new File(JiveGlobals.getHomeDirectory() + File.separator + "conf" + File.separator + "crowd.properties"); if (!file.exists()) { throw new IOException("The file crowd.properties is missing from Openfire conf folder"); } else { try { props.load(new FileInputStream(file)); } catch (IOException ioe) { throw new IOException("Unable to load crowd.properties file"); } } // checking for required info in file if (StringUtils.isBlank(props.getProperty(APPLICATION_NAME)) || StringUtils.isBlank(props.getProperty(APPLICATION_PASSWORD)) || StringUtils.isBlank(props.getProperty(CROWD_SERVER_URL))) { throw new IOException("crowd.properties is missing required information (app name, app passwd, crowd url)"); } } public String getApplicationName() { return props.getProperty(APPLICATION_NAME); } public String getApplicationPassword() { return props.getProperty(APPLICATION_PASSWORD); } public String getCrowdServerUrl() { String url = props.getProperty(CROWD_SERVER_URL); if (!url.endsWith("/")) { url += "/"; } return url; } public String getHttpProxyHost() { return props.getProperty(HTTP_PROXY_HOST); } public int getHttpProxyPort() { return getIntegerValue(HTTP_PROXY_PORT, 0); } public String getHttpProxyUsername() { return noNull(props.getProperty(HTTP_PROXY_USERNAME)); } public String getHttpProxyPassword() { return noNull(props.getProperty(HTTP_PROXY_PASSWORD)); } public int getHttpMaxConnections() { return getIntegerValue(HTTP_MAX_CONNECTIONS, 20); } public int getHttpConnectionTimeout() { return getIntegerValue(HTTP_TIMEOUT, 5000); } public int getHttpSocketTimeout() { return getIntegerValue(HTTP_SOCKET_TIMEOUT, 20000); } private int getIntegerValue(String propKey, int defaultValue) { int i = 0; try { i = Integer.parseInt(props.getProperty(propKey)); } catch (NumberFormatException nfe) { i = defaultValue; } return i; } private String noNull(String str) { return (str != null) ? str : ""; } }