http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/488b772f/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/db/CommunityUserDAO.java ---------------------------------------------------------------------- diff --git a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/db/CommunityUserDAO.java b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/db/CommunityUserDAO.java deleted file mode 100644 index 931580a..0000000 --- a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/db/CommunityUserDAO.java +++ /dev/null @@ -1,257 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF 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.apache.airavata.credential.store.store.impl.db; - -import org.apache.airavata.common.utils.DBUtil; -import org.apache.airavata.credential.store.credential.CommunityUser; -import org.apache.airavata.credential.store.store.CredentialStoreException; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - -/** - * Data access class for community_user table. - */ -public class CommunityUserDAO extends ParentDAO { - - public CommunityUserDAO() { - super(); - } - - public void addCommunityUser(CommunityUser user, String token, Connection connection) - throws CredentialStoreException { - - String sql = "INSERT INTO COMMUNITY_USER VALUES (?, ?, ?, ?)"; - - PreparedStatement preparedStatement = null; - - try { - preparedStatement = connection.prepareStatement(sql); - - preparedStatement.setString(1, user.getGatewayName()); - preparedStatement.setString(2, user.getUserName()); - preparedStatement.setString(3, token); - preparedStatement.setString(4, user.getUserEmail()); - - preparedStatement.executeUpdate(); - - connection.commit(); - - } catch (SQLException e) { - StringBuilder stringBuilder = new StringBuilder("Error persisting community user."); - stringBuilder.append("gateway - ").append(user.getGatewayName()); - stringBuilder.append("community user name - ").append(user.getUserName()); - stringBuilder.append("community user email - ").append(user.getUserEmail()); - stringBuilder.append("token id - ").append(token); - - log.error(stringBuilder.toString(), e); - - throw new CredentialStoreException(stringBuilder.toString(), e); - } finally { - - DBUtil.cleanup(preparedStatement); - } - } - - public void deleteCommunityUser(CommunityUser user, Connection connection) throws CredentialStoreException { - - String sql = "DELETE FROM COMMUNITY_USER WHERE GATEWAY_ID=? AND COMMUNITY_USER_NAME=?"; - - PreparedStatement preparedStatement = null; - - try { - preparedStatement = connection.prepareStatement(sql); - - preparedStatement.setString(1, user.getGatewayName()); - preparedStatement.setString(2, user.getUserName()); - - preparedStatement.executeUpdate(); - - connection.commit(); - - } catch (SQLException e) { - StringBuilder stringBuilder = new StringBuilder("Error deleting community user."); - stringBuilder.append("gateway - ").append(user.getGatewayName()); - stringBuilder.append("community user name - ").append(user.getUserName()); - - log.error(stringBuilder.toString(), e); - - throw new CredentialStoreException(stringBuilder.toString(), e); - } finally { - DBUtil.cleanup(preparedStatement); - } - } - - public void deleteCommunityUserByToken(CommunityUser user, String token, Connection connection) - throws CredentialStoreException { - - String sql = "DELETE FROM COMMUNITY_USER WHERE GATEWAY_ID=? AND COMMUNITY_USER_NAME=? AND TOKEN_ID=?"; - - PreparedStatement preparedStatement = null; - - try { - preparedStatement = connection.prepareStatement(sql); - - preparedStatement.setString(1, user.getGatewayName()); - preparedStatement.setString(2, user.getUserName()); - preparedStatement.setString(3, token); - - preparedStatement.executeUpdate(); - - connection.commit(); - - } catch (SQLException e) { - StringBuilder stringBuilder = new StringBuilder("Error deleting community user."); - stringBuilder.append("gateway - ").append(user.getGatewayName()); - stringBuilder.append("community user name - ").append(user.getUserName()); - - log.error(stringBuilder.toString(), e); - - throw new CredentialStoreException(stringBuilder.toString(), e); - } finally { - DBUtil.cleanup(preparedStatement); - } - } - - public void updateCommunityUser(CommunityUser user) throws CredentialStoreException { - - // TODO - } - - public CommunityUser getCommunityUser(String gatewayName, String communityUserName, Connection connection) - throws CredentialStoreException { - - String sql = "SELECT * FROM COMMUNITY_USER WHERE GATEWAY_ID=? AND COMMUNITY_USER_NAME=?"; - - PreparedStatement preparedStatement = null; - - try { - preparedStatement = connection.prepareStatement(sql); - - preparedStatement.setString(1, gatewayName); - preparedStatement.setString(2, communityUserName); - - ResultSet resultSet = preparedStatement.executeQuery(); - - if (resultSet.next()) { - String email = resultSet.getString("COMMUNITY_USER_EMAIL"); // TODO fix typo - - return new CommunityUser(gatewayName, communityUserName, email); - - } - - } catch (SQLException e) { - StringBuilder stringBuilder = new StringBuilder("Error retrieving community user."); - stringBuilder.append("gateway - ").append(gatewayName); - stringBuilder.append("community user name - ").append(communityUserName); - - log.error(stringBuilder.toString(), e); - - throw new CredentialStoreException(stringBuilder.toString(), e); - } finally { - DBUtil.cleanup(preparedStatement); - } - - return null; - } - - public CommunityUser getCommunityUserByToken(String gatewayName, String tokenId, Connection connection) - throws CredentialStoreException { - - String sql = "SELECT * FROM COMMUNITY_USER WHERE GATEWAY_ID=? AND TOKEN_ID=?"; - - PreparedStatement preparedStatement = null; - - try { - preparedStatement = connection.prepareStatement(sql); - - preparedStatement.setString(1, gatewayName); - preparedStatement.setString(2, tokenId); - - ResultSet resultSet = preparedStatement.executeQuery(); - - if (resultSet.next()) { - String communityUserName = resultSet.getString("COMMUNITY_USER_NAME"); - String email = resultSet.getString("COMMUNITY_USER_EMAIL"); // TODO fix typo - - return new CommunityUser(gatewayName, communityUserName, email); - - } - - } catch (SQLException e) { - StringBuilder stringBuilder = new StringBuilder("Error retrieving community user."); - stringBuilder.append("gateway - ").append(gatewayName); - stringBuilder.append("token- ").append(tokenId); - - log.error(stringBuilder.toString(), e); - - throw new CredentialStoreException(stringBuilder.toString(), e); - } finally { - DBUtil.cleanup(preparedStatement); - } - - return null; - } - - public List<CommunityUser> getCommunityUsers(String gatewayName, Connection connection) - throws CredentialStoreException { - - List<CommunityUser> userList = new ArrayList<CommunityUser>(); - - String sql = "SELECT * FROM COMMUNITY_USER WHERE GATEWAY_ID=?"; - - PreparedStatement preparedStatement = null; - - try { - preparedStatement = connection.prepareStatement(sql); - - preparedStatement.setString(1, gatewayName); - - ResultSet resultSet = preparedStatement.executeQuery(); - - while (resultSet.next()) { - String userName = resultSet.getString("COMMUNITY_USER_NAME"); - String email = resultSet.getString("COMMUNITY_USER_EMAIL"); // TODO fix typo - - userList.add(new CommunityUser(gatewayName, userName, email)); - - } - - } catch (SQLException e) { - StringBuilder stringBuilder = new StringBuilder("Error retrieving community users for "); - stringBuilder.append("gateway - ").append(gatewayName); - - log.error(stringBuilder.toString(), e); - - throw new CredentialStoreException(stringBuilder.toString(), e); - } finally { - DBUtil.cleanup(preparedStatement); - } - - return userList; - } - -}
http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/488b772f/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/db/CredentialsDAO.java ---------------------------------------------------------------------- diff --git a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/db/CredentialsDAO.java b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/db/CredentialsDAO.java deleted file mode 100644 index 7770590..0000000 --- a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/db/CredentialsDAO.java +++ /dev/null @@ -1,473 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF 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.apache.airavata.credential.store.store.impl.db; - -import org.apache.airavata.common.utils.DBUtil; -import org.apache.airavata.common.utils.KeyStorePasswordCallback; -import org.apache.airavata.common.utils.SecurityUtil; -import org.apache.airavata.credential.store.credential.Credential; -import org.apache.airavata.credential.store.credential.CredentialOwnerType; -import org.apache.airavata.credential.store.store.CredentialStoreException; - -import java.io.*; -import java.security.GeneralSecurityException; -import java.sql.*; -import java.util.ArrayList; -import java.util.List; - -/** - * Data access class for credential store. - */ -public class CredentialsDAO extends ParentDAO { - - private String keyStorePath = null; - private String secretKeyAlias = null; - private KeyStorePasswordCallback keyStorePasswordCallback = null; - - public CredentialsDAO() { - } - - public CredentialsDAO(String keyStore, String alias, KeyStorePasswordCallback passwordCallback) { - this.keyStorePath = keyStore; - this.secretKeyAlias = alias; - this.keyStorePasswordCallback = passwordCallback; - } - - public String getKeyStorePath() { - return keyStorePath; - } - - public void setKeyStorePath(String keyStorePath) { - this.keyStorePath = keyStorePath; - } - - public String getSecretKeyAlias() { - return secretKeyAlias; - } - - public void setSecretKeyAlias(String secretKeyAlias) { - this.secretKeyAlias = secretKeyAlias; - } - - public KeyStorePasswordCallback getKeyStorePasswordCallback() { - return keyStorePasswordCallback; - } - - public void setKeyStorePasswordCallback(KeyStorePasswordCallback keyStorePasswordCallback) { - this.keyStorePasswordCallback = keyStorePasswordCallback; - } - - /** - * String createTable = "CREATE TABLE CREDENTIALS\n" + "(\n" + " GATEWAY_ID VARCHAR(256) NOT NULL,\n" + - * " TOKEN_ID VARCHAR(256) NOT NULL,\n" + // Actual token used to identify the credential - * " CREDENTIAL BLOB NOT NULL,\n" + " PORTAL_USER_ID VARCHAR(256) NOT NULL,\n" + - * " TIME_PERSISTED TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n" + " PRIMARY KEY (GATEWAY_ID, TOKEN_ID)\n" - * + ")"; - */ - - public void addCredentials(String gatewayId, Credential credential, Connection connection) - throws CredentialStoreException { - - String sql = "INSERT INTO CREDENTIALS VALUES (?, ?, ?, ?, ?, ?, ?)"; - - PreparedStatement preparedStatement = null; - - try { - preparedStatement = connection.prepareStatement(sql); - - preparedStatement.setString(1, gatewayId); - preparedStatement.setString(2, credential.getToken()); - - InputStream isCert = new ByteArrayInputStream(convertObjectToByteArray(credential)); - preparedStatement.setBinaryStream(3, isCert); - - preparedStatement.setString(4, credential.getPortalUserName()); - - java.util.Date date = new java.util.Date(); - Timestamp timestamp = new Timestamp(date.getTime()); - - preparedStatement.setTimestamp(5, timestamp); - - preparedStatement.setString(6,credential.getDescription()); - - preparedStatement.setString(7, credential.getCredentialOwnerType().toString()); - - preparedStatement.executeUpdate(); - - } catch (SQLException e) { - StringBuilder stringBuilder = new StringBuilder("Error persisting credentials."); - stringBuilder.append(" gateway - ").append(gatewayId); - stringBuilder.append(" token id - ").append(credential.getToken()); - - log.error(stringBuilder.toString(), e); - - throw new CredentialStoreException(stringBuilder.toString(), e); - } finally { - - DBUtil.cleanup(preparedStatement); - } - } - - - public void deleteCredentials(String gatewayName, String tokenId, Connection connection) - throws CredentialStoreException { - - String sql = "DELETE FROM CREDENTIALS WHERE GATEWAY_ID=? AND TOKEN_ID=?"; - - PreparedStatement preparedStatement = null; - - try { - preparedStatement = connection.prepareStatement(sql); - - preparedStatement.setString(1, gatewayName); - preparedStatement.setString(2, tokenId); - - preparedStatement.executeUpdate(); - connection.commit(); - } catch (SQLException e) { - StringBuilder stringBuilder = new StringBuilder("Error deleting credentials for ."); - stringBuilder.append("gateway - ").append(gatewayName); - stringBuilder.append("token id - ").append(tokenId); - - log.error(stringBuilder.toString(), e); - - throw new CredentialStoreException(stringBuilder.toString(), e); - } finally { - DBUtil.cleanup(preparedStatement); - } - } - - /** - * String createTable = "CREATE TABLE CREDENTIALS\n" + "(\n" + " GATEWAY_ID VARCHAR(256) NOT NULL,\n" + - * " TOKEN_ID VARCHAR(256) NOT NULL,\n" + // Actual token used to identify the credential - * " CREDENTIAL BLOB NOT NULL,\n" + " PORTAL_USER_ID VARCHAR(256) NOT NULL,\n" + - * " TIME_PERSISTED TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n" + " PRIMARY KEY (GATEWAY_ID, TOKEN_ID)\n" - * + ")"; - */ - public void updateCredentials(String gatewayId, Credential credential, Connection connection) - throws CredentialStoreException { - - String sql = "UPDATE CREDENTIALS set CREDENTIAL = ?, PORTAL_USER_ID = ?, TIME_PERSISTED = ?, DESCRIPTION = ?, CREDENTIAL_OWNER_TYPE = ? where GATEWAY_ID = ? and TOKEN_ID = ?"; - - PreparedStatement preparedStatement = null; - - try { - preparedStatement = connection.prepareStatement(sql); - - InputStream isCert = new ByteArrayInputStream(convertObjectToByteArray(credential)); - preparedStatement.setBinaryStream(1, isCert); - - preparedStatement.setString(2, credential.getPortalUserName()); - - preparedStatement.setTimestamp(3, new Timestamp(new java.util.Date().getTime())); - preparedStatement.setString(4, credential.getDescription()); - preparedStatement.setString(5, credential.getCredentialOwnerType().toString()); - preparedStatement.setString(6, gatewayId); - preparedStatement.setString(7, credential.getToken()); - - - preparedStatement.executeUpdate(); - - } catch (SQLException e) { - StringBuilder stringBuilder = new StringBuilder("Error updating credentials."); - stringBuilder.append(" gateway - ").append(gatewayId); - stringBuilder.append(" token id - ").append(credential.getToken()); - - log.error(stringBuilder.toString(), e); - - throw new CredentialStoreException(stringBuilder.toString(), e); - } finally { - - DBUtil.cleanup(preparedStatement); - } - - } - - /** - * String createTable = "CREATE TABLE CREDENTIALS\n" + "(\n" + " GATEWAY_ID VARCHAR(256) NOT NULL,\n" + - * " TOKEN_ID VARCHAR(256) NOT NULL,\n" + // Actual token used to identify the credential - * " CREDENTIAL BLOB NOT NULL,\n" + " PORTAL_USER_ID VARCHAR(256) NOT NULL,\n" + - * " TIME_PERSISTED TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n" + " PRIMARY KEY (GATEWAY_ID, TOKEN_ID)\n" - * + ")"; - */ - public Credential getCredential(String gatewayName, String tokenId, Connection connection) - throws CredentialStoreException { - - String sql = "SELECT * FROM CREDENTIALS WHERE GATEWAY_ID=? AND TOKEN_ID=?"; - - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - - try { - preparedStatement = connection.prepareStatement(sql); - - preparedStatement.setString(1, gatewayName); - preparedStatement.setString(2, tokenId); - - resultSet = preparedStatement.executeQuery(); - - if (resultSet.next()) { - // CertificateCredential certificateCredential = new CertificateCredential(); - - Blob blobCredentials = resultSet.getBlob("CREDENTIAL"); - byte[] certificate = blobCredentials.getBytes(1, (int) blobCredentials.length()); - - Credential certificateCredential = (Credential) convertByteArrayToObject(certificate); - - certificateCredential.setPortalUserName(resultSet.getString("PORTAL_USER_ID")); - certificateCredential.setCertificateRequestedTime(resultSet.getTimestamp("TIME_PERSISTED")); - certificateCredential.setDescription(resultSet.getString("DESCRIPTION")); - certificateCredential.setCredentialOwnerType(CredentialOwnerType.valueOf(resultSet.getString("CREDENTIAL_OWNER_TYPE"))); - - return certificateCredential; - } - - } catch (SQLException e) { - StringBuilder stringBuilder = new StringBuilder("Error retrieving credentials for user."); - stringBuilder.append("gateway - ").append(gatewayName); - stringBuilder.append("token id - ").append(tokenId); - - log.debug(stringBuilder.toString(), e); - - throw new CredentialStoreException(stringBuilder.toString(), e); - } finally { - DBUtil.cleanup(preparedStatement, resultSet); - } - - return null; - } - /** - * - */ - public String getGatewayID(String tokenId, Connection connection) - throws CredentialStoreException { - - String sql = "SELECT GATEWAY_ID FROM CREDENTIALS WHERE TOKEN_ID=?"; - - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - - try { - preparedStatement = connection.prepareStatement(sql); - - preparedStatement.setString(1, tokenId); - - resultSet = preparedStatement.executeQuery(); - - if (resultSet.next()) { - return resultSet.getString("GATEWAY_ID"); - } - - } catch (SQLException e) { - StringBuilder stringBuilder = new StringBuilder("Error retrieving credentials for user."); - stringBuilder.append("token id - ").append(tokenId); - - log.debug(stringBuilder.toString(), e); - - throw new CredentialStoreException(stringBuilder.toString(), e); - } finally { - DBUtil.cleanup(preparedStatement, resultSet); - } - - return null; - } - /** - * String createTable = "CREATE TABLE CREDENTIALS\n" + "(\n" + " GATEWAY_ID VARCHAR(256) NOT NULL,\n" + - * " TOKEN_ID VARCHAR(256) NOT NULL,\n" + // Actual token used to identify the credential - * " CREDENTIAL BLOB NOT NULL,\n" + " PORTAL_USER_ID VARCHAR(256) NOT NULL,\n" + - * " TIME_PERSISTED TIMESTAMP DEFAULT CURRENT_TIMESTAMP,\n" + " PRIMARY KEY (GATEWAY_ID, TOKEN_ID)\n" - * + ")"; - */ - public List<Credential> getCredentials(String gatewayName, Connection connection) throws CredentialStoreException { - - List<Credential> credentialList = new ArrayList<Credential>(); - - String sql = "SELECT * FROM CREDENTIALS WHERE GATEWAY_ID=?"; - - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - - try { - preparedStatement = connection.prepareStatement(sql); - - preparedStatement.setString(1, gatewayName); - - resultSet = preparedStatement.executeQuery(); - - Credential certificateCredential; - - while (resultSet.next()) { - - Blob blobCredentials = resultSet.getBlob("CREDENTIAL"); - byte[] certificate = blobCredentials.getBytes(1, (int) blobCredentials.length()); - - certificateCredential = (Credential) convertByteArrayToObject(certificate); - certificateCredential.setToken(resultSet.getString("TOKEN_ID")); - certificateCredential.setPortalUserName(resultSet.getString("PORTAL_USER_ID")); - certificateCredential.setCertificateRequestedTime(resultSet.getTimestamp("TIME_PERSISTED")); - certificateCredential.setDescription(resultSet.getString("DESCRIPTION")); - certificateCredential.setCredentialOwnerType(CredentialOwnerType.valueOf(resultSet.getString("CREDENTIAL_OWNER_TYPE"))); - - credentialList.add(certificateCredential); - } - - } catch (SQLException e) { - StringBuilder stringBuilder = new StringBuilder("Error retrieving credential list for "); - stringBuilder.append("gateway - ").append(gatewayName); - - log.debug(stringBuilder.toString(), e); - - throw new CredentialStoreException(stringBuilder.toString(), e); - } finally { - DBUtil.cleanup(preparedStatement, resultSet); - } - - return credentialList; - } - - /** - * Gets all credentials. - * @param connection The database connection - * @return All credentials as a list - * @throws CredentialStoreException If an error occurred while rerieving credentials. - */ - public List<Credential> getCredentials(Connection connection) throws CredentialStoreException { - - List<Credential> credentialList = new ArrayList<Credential>(); - - String sql = "SELECT * FROM CREDENTIALS"; - - PreparedStatement preparedStatement = null; - ResultSet resultSet = null; - - try { - preparedStatement = connection.prepareStatement(sql); - - resultSet = preparedStatement.executeQuery(); - - Credential certificateCredential; - - while (resultSet.next()) { - - Blob blobCredentials = resultSet.getBlob("CREDENTIAL"); - byte[] certificate = blobCredentials.getBytes(1, (int) blobCredentials.length()); - - certificateCredential = (Credential) convertByteArrayToObject(certificate); - certificateCredential.setToken(resultSet.getString("TOKEN_ID")); - certificateCredential.setPortalUserName(resultSet.getString("PORTAL_USER_ID")); - certificateCredential.setCertificateRequestedTime(resultSet.getTimestamp("TIME_PERSISTED")); - certificateCredential.setDescription(resultSet.getString("DESCRIPTION")); - certificateCredential.setCredentialOwnerType(CredentialOwnerType.valueOf(resultSet.getString("CREDENTIAL_OWNER_TYPE"))); - - credentialList.add(certificateCredential); - } - - } catch (SQLException e) { - StringBuilder stringBuilder = new StringBuilder("Error retrieving all credentials"); - - log.debug(stringBuilder.toString(), e); - - throw new CredentialStoreException(stringBuilder.toString(), e); - } finally { - DBUtil.cleanup(preparedStatement, resultSet); - } - - return credentialList; - } - - public Object convertByteArrayToObject(byte[] data) throws CredentialStoreException { - ObjectInputStream objectInputStream = null; - Object o = null; - try { - try { - //decrypt the data first - if (encrypt()) { - data = SecurityUtil.decrypt(this.keyStorePath, this.secretKeyAlias, this.keyStorePasswordCallback, data); - } - - objectInputStream = new ObjectInputStream(new ByteArrayInputStream(data)); - o = objectInputStream.readObject(); - - } catch (IOException e) { - throw new CredentialStoreException("Error de-serializing object.", e); - } catch (ClassNotFoundException e) { - throw new CredentialStoreException("Error de-serializing object.", e); - } catch (GeneralSecurityException e) { - throw new CredentialStoreException("Error decrypting data.", e); - } - } finally { - if (objectInputStream != null) { - try { - objectInputStream.close(); - } catch (IOException e) { - log.error("Error occurred while closing the stream", e); - } - } - } - return o; - } - - public byte[] convertObjectToByteArray(Serializable o) throws CredentialStoreException { - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - - ObjectOutputStream objectOutputStream = null; - try { - objectOutputStream = new ObjectOutputStream(byteArrayOutputStream); - objectOutputStream.writeObject(o); - objectOutputStream.flush(); - } catch (IOException e) { - throw new CredentialStoreException("Error serializing object.", e); - } finally { - if (objectOutputStream != null) { - try { - objectOutputStream.close(); - } catch (IOException e) { - log.error("Error occurred while closing object output stream", e); - } - } - } - - // encrypt the byte array - if (encrypt()) { - byte[] array = byteArrayOutputStream.toByteArray(); - try { - return SecurityUtil.encrypt(this.keyStorePath, this.secretKeyAlias, this.keyStorePasswordCallback, array); - } catch (GeneralSecurityException e) { - throw new CredentialStoreException("Error encrypting data", e); - } catch (IOException e) { - throw new CredentialStoreException("Error encrypting data. IO exception.", e); - } - } else { - return byteArrayOutputStream.toByteArray(); - } - } - - /** - * Says whether to encrypt data or not. if alias, keystore is set - * we treat encryption true. - * @return true if data should encrypt else false. - */ - private boolean encrypt() { - return this.keyStorePath != null; - } - -} http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/488b772f/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/db/ParentDAO.java ---------------------------------------------------------------------- diff --git a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/db/ParentDAO.java b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/db/ParentDAO.java deleted file mode 100644 index 8ef0d69..0000000 --- a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/db/ParentDAO.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF 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.apache.airavata.credential.store.store.impl.db; - -import org.apache.airavata.common.utils.DBUtil; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -/** - * Super class to abstract out Data access classes. - */ -public class ParentDAO { - protected static Logger log = LoggerFactory.getLogger(ParentDAO.class); - - public ParentDAO() { - } - -} http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/488b772f/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/ConnectionPool.java ---------------------------------------------------------------------- diff --git a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/ConnectionPool.java b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/ConnectionPool.java deleted file mode 100644 index b832604..0000000 --- a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/ConnectionPool.java +++ /dev/null @@ -1,382 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF 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.apache.airavata.credential.store.store.impl.util; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import javax.sql.DataSource; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Stack; -import java.util.concurrent.Semaphore; - - -/** - * A class for preallocating, recycling, and managing JDBC connections. - */ -public class ConnectionPool { - private static final Logger logger = LoggerFactory.getLogger(ConnectionPool.class); - - private long MAX_IDLE_TIME = 5 * 60 * 1000; // 5 minutes - - private String driver; - private String url; - private String username; - private String password; - private String jdbcUrl; - - private int maxConnections; - - private boolean autoCommit = true; - private boolean waitIfBusy; - - private Semaphore needConnection = new Semaphore(0); - private boolean stop; - - private Stack<Connection> availableConnections; - private Stack<Connection> busyConnections; - - private HashMap<Connection, Long> lastAccessTimeRecord = new HashMap<Connection, Long>(); - - private String urlType = ""; - - private DataSource datasource; - - private int transactionIsolation = Connection.TRANSACTION_NONE; - - private Thread clenupThread; - private Thread producerThread; - - public ConnectionPool(String driver, String url, String username, String password, int initialConnections, - int maxConnections, boolean waitIfBusy) throws SQLException { - this.driver = driver; - this.url = url; - this.username = username; - this.password = password; - this.urlType = "speratedURL"; - initialize(initialConnections, maxConnections, waitIfBusy); - } - - public ConnectionPool(String driver, String jdbcUrl, int initialConnections, int maxConnections, - boolean waitIfBusy, boolean autoCommit, int transactionIsolation) throws SQLException { - this.driver = driver; - this.jdbcUrl = jdbcUrl; - this.urlType = "simpleURL"; - this.autoCommit = autoCommit; - this.transactionIsolation = transactionIsolation; - initialize(initialConnections, maxConnections, waitIfBusy); - } - - public ConnectionPool(String driver, String jdbcUrl, int initialConnections, int maxConnections, boolean waitIfBusy) - throws SQLException { - this.driver = driver; - this.jdbcUrl = jdbcUrl; - this.urlType = "simpleURL"; - initialize(initialConnections, maxConnections, waitIfBusy); - } - - public ConnectionPool(DataSource dataSource, int initialConnections, int maxConnections, boolean waitIfBusy) - throws SQLException { - this.urlType = "dataSource"; - this.datasource = dataSource; - initialize(initialConnections, maxConnections, waitIfBusy); - } - - /** - * Check if this connection pool is auto commit or not - * - * @return - */ - public boolean isAutoCommit() { - return this.autoCommit; - } - - private void initialize(int initialConnections, int maxConnections, boolean waitIfBusy) throws SQLException { - this.maxConnections = maxConnections; - this.waitIfBusy = waitIfBusy; - - int sizeOfConnections = (initialConnections > maxConnections) ? maxConnections : initialConnections; - - availableConnections = new Stack<Connection>(); - busyConnections = new Stack<Connection>(); - - for (int i = 0; i < sizeOfConnections; i++) { - Connection con = makeNewConnection(); - setTimeStamp(con); - availableConnections.push(con); - - } - - producerThread = new Thread(new FillUpThread()); - producerThread.start(); - - clenupThread = new Thread(new CleanUpThread()); - clenupThread.start(); - } - - public synchronized Connection getConnection() throws SQLException { - if (!availableConnections.isEmpty()) { - Connection existingConnection = availableConnections.pop(); - - // If connection on available list is closed (e.g., - // it timed out), then remove it from available list - // and race for a connection again. - if (existingConnection.isClosed()) { - lastAccessTimeRecord.remove(existingConnection); - // notifyAll for fairness - notifyAll(); - } else { - busyConnections.push(existingConnection); - setTimeStamp(existingConnection); - return existingConnection; - } - } else if (!waitIfBusy && busyConnections.size() >= maxConnections) { - // You reached maxConnections limit and waitIfBusy flag is false. - // Throw SQLException in such a case. - throw new SQLException("Connection limit reached"); - } else { - - if (busyConnections.size() < maxConnections) { - // available connection is empty, but total number of connection - // doesn't reach maxConnection. Request for more connection - needConnection.release(); - } - - try { - // wait for free connection - wait(); - } catch (InterruptedException ie) { - } - } - // always race for connection forever - return getConnection(); - } - - // This explicitly makes a new connection. Called in - // the foreground when initializing the ConnectionPool, - // and called in the background when running. - private Connection makeNewConnection() throws SQLException { - try { - // Load database driver if not already loaded - Class.forName(driver); - Connection connection; - // Establish network connection to database - if (urlType.equals("speratedURL")) { - connection = DriverManager.getConnection(url, username, password); - } else if (urlType.equals("simpleURL")) { - connection = DriverManager.getConnection(jdbcUrl); - } else { // if(urlType.equals("dataSource")){ - connection = datasource.getConnection(); - } - connection.setTransactionIsolation(this.transactionIsolation); - connection.setAutoCommit(this.autoCommit); - return connection; - } catch (ClassNotFoundException cnfe) { - // Simplify try/catch blocks of people using this by - // throwing only one exception type. - throw new SQLException("Can't find class for driver: " + driver); - } - } - - private synchronized void fillUpConnection(Connection conn) { - setTimeStamp(conn); - availableConnections.push(conn); - - // notify all since new connection is created - notifyAll(); - } - - private void setTimeStamp(Connection connection) { - lastAccessTimeRecord.put(connection, System.currentTimeMillis()); - } - - // The database connection cannot be left idle for too long, otherwise TCP - // connection will be broken. - /** - * From http://forums.mysql.com/read.php?39,28450,57460#msg-57460 Okay, then it looks like wait_timeout on the - * server is killing your connection (it is set to 8 hours of idle time by default). Either set that value higher on - * your server, or configure your connection pool to not hold connections idle that long (I prefer the latter). Most - * folks I know that run MySQL with a connection pool in high-load production environments only let connections sit - * idle for a matter of minutes, since it only takes a few milliseconds to open a connection, and the longer one - * sits idle the more chance it will go "bad" because of a network hiccup or the MySQL server being restarted. - * - * @throws java.sql.SQLException - */ - private boolean isConnectionStale(Connection connection) { - long currentTime = System.currentTimeMillis(); - long lastAccess = lastAccessTimeRecord.get(connection); - if (currentTime - lastAccess > MAX_IDLE_TIME) { - return true; - } else - return false; - } - - private synchronized void closeStaleConnections() { - // close idle connections - Iterator<Connection> iter = availableConnections.iterator(); - while (iter.hasNext()) { - Connection existingConnection = iter.next(); - if (isConnectionStale(existingConnection)) { - try { - existingConnection.close(); - iter.remove(); - } catch (SQLException sql) { - logger.error(sql.getMessage(), sql); - } - } - } - // close busy connections that have been checked out for too long. - // This should not happen since this means program has bug for not - // releasing connections . - iter = busyConnections.iterator(); - while (iter.hasNext()) { - Connection busyConnection = iter.next(); - if (isConnectionStale(busyConnection)) { - try { - busyConnection.close(); - iter.remove(); - logger.warn("****Connection has checked out too long. Forced release. Check the program for calling release connection [free(Connection) method]"); - } catch (SQLException sql) { - logger.error(sql.getMessage(), sql); - } - } - } - } - - public synchronized void free(Connection connection) { - busyConnections.removeElement(connection); - availableConnections.addElement(connection); - // Wake up threads that are waiting for a connection - notifyAll(); - } - - /** - * Close all the connections. Use with caution: be sure no connections are in use before calling. Note that you are - * not <I>required</I> to call this when done with a ConnectionPool, since connections are guaranteed to be closed - * when garbage collected. But this method gives more control regarding when the connections are closed. - */ - public synchronized void dispose() { - logger.info("Connection Pool Shutting down"); - - // stop clean up thread - this.stop = true; - this.clenupThread.interrupt(); - - // stop producer up thread - this.producerThread.interrupt(); - - // close all connection - closeConnections(availableConnections); - availableConnections = new Stack<Connection>(); - closeConnections(busyConnections); - busyConnections = new Stack<Connection>(); - lastAccessTimeRecord.clear(); - - logger.info("All connection is closed"); - - try { - this.clenupThread.join(); - this.producerThread.join(); - } catch (Exception e) { - logger.error("Cannot shutdown cleanup thread", e); - } - - logger.info("Connection Pool Shutdown"); - } - - private void closeConnections(Stack<Connection> connections) { - while (!connections.isEmpty()) { - Connection connection = connections.pop(); - try { - if (!connection.isClosed()) { - connection.close(); - } - } catch (SQLException sqle) { - // Ignore errors; garbage collect anyhow - logger.warn(sqle.getMessage()); - } - } - } - - public synchronized String toString() { - String info = "ConnectionPool(" + url + "," + username + ")" + ", available=" + availableConnections.size() - + ", busy=" + busyConnections.size() + ", max=" + maxConnections; - return (info); - } - - class CleanUpThread implements Runnable { - public void run() { - while (!stop) { - try { - Thread.sleep(MAX_IDLE_TIME); - closeStaleConnections(); - } catch (InterruptedException e) { - logger.info("Clean up thread is interrupted to close"); - } - } - } - } - - class FillUpThread implements Runnable { - public void run() { - while (!stop) { - try { - // block until get - needConnection.acquire(); - - Connection conn = makeNewConnection(); - fillUpConnection(conn); - } catch (SQLException e) { - // cannot create connection (increase semaphore value back) - needConnection.release(); - logger.error(e.getMessage(), e); - } catch (InterruptedException e) { - logger.info("Fill up thread is interrupted to close"); - break; - } - } - } - } - - public void shutdown() throws SQLException{ - for (Connection c : availableConnections) { - try { - c.close(); - } catch (SQLException e) { - logger.error("Error while closing the connection", e); - throw new SQLException("Error while closing the connection", e); - } - } - - for (Connection c : busyConnections) { - try { - c.close(); - } catch (SQLException e) { - logger.error("Error while closing the connection", e); - throw new SQLException("Error while closing the connection", e); - } - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/488b772f/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/CredentialStoreInitUtil.java ---------------------------------------------------------------------- diff --git a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/CredentialStoreInitUtil.java b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/CredentialStoreInitUtil.java deleted file mode 100644 index 8320c69..0000000 --- a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/CredentialStoreInitUtil.java +++ /dev/null @@ -1,155 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF 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.apache.airavata.credential.store.store.impl.util; - -import org.apache.airavata.common.exception.ApplicationSettingsException; -import org.apache.airavata.common.utils.ServerSettings; -import org.apache.derby.drda.NetworkServerControl; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.IOException; -import java.net.InetAddress; -import java.net.URI; -import java.sql.Connection; -import java.sql.SQLException; - -public class CredentialStoreInitUtil { - private static final Logger logger = LoggerFactory.getLogger(CredentialStoreInitUtil.class); - public static final String CREDENTIALS = "CREDENTIALS"; - public static final String START_DERBY_ENABLE = "start.derby.server.mode"; - public static final String DERBY_SERVER_MODE_SYS_PROPERTY = "derby.drda.startNetworkServer"; - private static NetworkServerControl server; - private static JdbcStorage db; - private static String jdbcURl; - private static String jdbcDriver; - private static String jdbcUser; - private static String jdbcPassword; - - - public static void initializeDB() { -// System.setProperty("appcatalog.initialize.state", "0"); - try{ - jdbcDriver = ServerSettings.getCredentialStoreDBDriver(); - jdbcURl = ServerSettings.getCredentialStoreDBURL(); - jdbcUser = ServerSettings.getCredentialStoreDBUser(); - jdbcPassword = ServerSettings.getCredentialStoreDBPassword(); - jdbcURl = jdbcURl + "?" + "user=" + jdbcUser + "&" + "password=" + jdbcPassword; - } catch (ApplicationSettingsException e) { - logger.error("Unable to read airavata server properties", e.getMessage()); - } - - if (getDBType(jdbcURl).equals("derby") && isDerbyStartEnabled()) { - startDerbyInServerMode(); - } - db = new JdbcStorage(10, 50, jdbcURl, jdbcDriver, true); - - Connection conn = null; - try { - conn = db.connect(); - if (!DatabaseCreator.isDatabaseStructureCreated(CREDENTIALS, conn)) { - DatabaseCreator.createRegistryDatabase("database_scripts/credstore", conn); - logger.info("New Database created for Credential Store !!! "); - } else { - logger.info("Database already created for Credential Store !!!"); - } - } catch (Exception e) { - logger.error(e.getMessage(), e); - throw new RuntimeException("Database failure", e); - } finally { - db.closeConnection(conn); - try { - if(conn != null){ - if (!conn.getAutoCommit()) { - conn.commit(); - } - conn.close(); - } - } catch (SQLException e) { - logger.error("Error while closing database connection...", e.getMessage(), e); - } - } -// System.setProperty("appcatalog.initialize.state", "1"); - } - - public static String getDBType(String jdbcUrl){ - try{ - String cleanURI = jdbcUrl.substring(5); - URI uri = URI.create(cleanURI); - return uri.getScheme(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - return null; - } - } - - public static boolean isDerbyStartEnabled(){ - try { - String s = ServerSettings.getSetting(START_DERBY_ENABLE); - if("true".equals(s)){ - return true; - } - } catch (ApplicationSettingsException e) { - logger.error("Unable to read airavata server properties", e.getMessage(), e); - return false; - } - return false; - } - - public static void startDerbyInServerMode() { - try { - System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "true"); - server = new NetworkServerControl(InetAddress.getByName("0.0.0.0"), - getPort(jdbcURl), - jdbcUser, jdbcPassword); - java.io.PrintWriter consoleWriter = new java.io.PrintWriter(System.out, true); - server.start(consoleWriter); - } catch (IOException e) { - logger.error("Unable to start Apache derby in the server mode! Check whether " + - "specified port is available"); - } catch (Exception e) { - logger.error("Unable to start Apache derby in the server mode! Check whether " + - "specified port is available"); - } - } - - public static void stopDerbyInServerMode() { - System.setProperty(DERBY_SERVER_MODE_SYS_PROPERTY, "false"); - if (server!=null){ - try { - server.shutdown(); - } catch (Exception e) { - logger.error("Error when stopping the derby server : "+e.getLocalizedMessage()); - } - } - } - - public static int getPort(String jdbcURL){ - try{ - String cleanURI = jdbcURL.substring(5); - URI uri = URI.create(cleanURI); - return uri.getPort(); - } catch (Exception e) { - logger.error(e.getMessage(), e); - return -1; - } - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/488b772f/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/DatabaseCreator.java ---------------------------------------------------------------------- diff --git a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/DatabaseCreator.java b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/DatabaseCreator.java deleted file mode 100644 index 627be0e..0000000 --- a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/DatabaseCreator.java +++ /dev/null @@ -1,353 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF 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.apache.airavata.credential.store.store.impl.util; - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.io.BufferedReader; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.sql.*; -import java.util.StringTokenizer; - -/** - * This class creates the database tables required for airavata with default configuration this - * class creates derby database in server mode. User can specify required database in appropriate - * properties files. - */ -public class DatabaseCreator { - private final static Logger logger = LoggerFactory.getLogger(DatabaseCreator.class); - - public enum DatabaseType { - derby("(?i).*derby.*"), mysql("(?i).*mysql.*"), other(""); - - private String pattern; - - private DatabaseType(String matchingPattern) { - this.pattern = matchingPattern; - } - - public String getMatchingPattern() { - return this.pattern; - } - } - - private static DatabaseType[] supportedDatabase = new DatabaseType[] { DatabaseType.derby, DatabaseType.mysql }; - - private static Logger log = LoggerFactory.getLogger(DatabaseCreator.class); - private static final String delimiter = ";"; - - /** - * Creates database - * - * @throws Exception - */ - public static void createRegistryDatabase(String prefix, Connection conn) throws Exception { - createDatabase(prefix, conn); - } - - - - /** - * Checks whether database tables are created by using select * on given table name - * - * @param tableName - * Table which should be existed - * @return <code>true</core> if checkSQL is success, else <code>false</code> . - */ - public static boolean isDatabaseStructureCreated(String tableName, Connection conn) { - try { - - log.debug("Running a query to test the database tables existence."); - - // check whether the tables are already created with a query - Statement statement = null; - try { - statement = conn.createStatement(); - ResultSet rs = statement.executeQuery("select * from " + tableName); - if (rs != null) { - rs.close(); - } - } finally { - try { - if (statement != null) { - statement.close(); - } - } catch (SQLException e) { - return false; - } - } - } catch (SQLException e) { - return false; - } - - return true; - } - - /** - * executes given sql - * - * @param sql - * @throws Exception - */ - private static void executeSQL(String sql, Connection conn) throws Exception { - // Check and ignore empty statements - if ("".equals(sql.trim())) { - return; - } - - Statement statement = null; - try { - log.debug("SQL : " + sql); - - boolean ret; - int updateCount = 0, updateCountTotal = 0; - statement = conn.createStatement(); - ret = statement.execute(sql); - updateCount = statement.getUpdateCount(); - do { - if (!ret) { - if (updateCount != -1) { - updateCountTotal += updateCount; - } - } - ret = statement.getMoreResults(); - if (ret) { - updateCount = statement.getUpdateCount(); - } - } while (ret); - - log.debug(sql + " : " + updateCountTotal + " rows affected"); - - SQLWarning warning = conn.getWarnings(); - while (warning != null) { - log.info(warning + " sql warning"); - warning = warning.getNextWarning(); - } - conn.clearWarnings(); - } catch (SQLException e) { - if (e.getSQLState().equals("X0Y32")) { - // eliminating the table already exception for the derby - // database - log.info("Table Already Exists", e); - } else { - throw new Exception("Error occurred while executing : " + sql, e); - } - } finally { - if (statement != null) { - try { - statement.close(); - } catch (SQLException e) { - log.error("Error occurred while closing result set.", e); - } - } - } - } - - /** - * computes relatational database type using database name - * - * @return DatabaseType - * @throws Exception - * - */ - public static DatabaseType getDatabaseType(Connection conn) throws Exception { - try { - if (conn != null && (!conn.isClosed())) { - DatabaseMetaData metaData = conn.getMetaData(); - String databaseProductName = metaData.getDatabaseProductName(); - return checkType(databaseProductName); - } - } catch (SQLException e) { - String msg = "Failed to create Airavata database." + e.getMessage(); - log.error(msg, e); - throw new Exception(msg, e); - } - return DatabaseType.other; - } - - /** - * Overloaded method with String input - * - * @return DatabaseType - * @throws Exception - * - */ - public static DatabaseType getDatabaseType(String dbUrl) throws Exception { - return checkType(dbUrl); - } - - private static DatabaseType checkType(String text) throws Exception { - try { - if (text != null) { - for (DatabaseType type : supportedDatabase) { - if (text.matches(type.getMatchingPattern())) - return type; - } - } - String msg = "Unsupported database: " + text - + ". Database will not be created automatically by the Airavata. " - + "Please create the database using appropriate database scripts for " + "the database."; - throw new Exception(msg); - - } catch (SQLException e) { - String msg = "Failed to create Airavatadatabase." + e.getMessage(); - log.error(msg, e); - throw new Exception(msg, e); - } - } - - /** - * Get scripts location which is prefix + "-" + databaseType + ".sql" - * - * @param prefix - * @param databaseType - * @return script location - */ - private static String getScriptLocation(String prefix, DatabaseType databaseType) { - String scriptName = prefix + "-" + databaseType + ".sql"; - log.debug("Loading database script from :" + scriptName); - return scriptName; - } - - private static void createDatabase(String prefix, Connection conn) throws Exception { - Statement statement = null; - try { - conn.setAutoCommit(false); - statement = conn.createStatement(); - executeSQLScript(getScriptLocation(prefix, DatabaseCreator.getDatabaseType(conn)), conn); - conn.commit(); - log.debug("Tables are created successfully."); - } catch (SQLException e) { - String msg = "Failed to create database tables for Airavata resource store. " + e.getMessage(); - log.error(msg, e); - conn.rollback(); - throw new Exception(msg, e); - } finally { - conn.setAutoCommit(true); - try { - if (statement != null) { - statement.close(); - } - } catch (SQLException e) { - log.error("Failed to close statement.", e); - } - } - } - - private static void executeSQLScript(String dbscriptName, Connection conn) throws Exception { - StringBuffer sql = new StringBuffer(); - BufferedReader reader = null; - - try { - InputStream is = DatabaseCreator.class.getClassLoader().getResourceAsStream(dbscriptName); - if(is == null) { - logger.info("Script file not found at " + dbscriptName + ". Uses default database script file"); - DatabaseType databaseType = DatabaseCreator.getDatabaseType(conn); - if(databaseType.equals(DatabaseType.derby)){ - is = DatabaseCreator.class.getClassLoader().getResourceAsStream("experiment-derby.sql"); - }else if(databaseType.equals(DatabaseType.mysql)){ - is = DatabaseCreator.class.getClassLoader().getResourceAsStream("experiment-mysql.sql"); - } - } - reader = new BufferedReader(new InputStreamReader(is)); - String line; - while ((line = reader.readLine()) != null) { - line = line.trim(); - if (line.startsWith("//")) { - continue; - } - if (line.startsWith("--")) { - continue; - } - StringTokenizer st = new StringTokenizer(line); - if (st.hasMoreTokens()) { - String token = st.nextToken(); - if ("REM".equalsIgnoreCase(token)) { - continue; - } - } - sql.append(" ").append(line); - - // SQL defines "--" as a comment to EOL - // and in Oracle it may contain a hint - // so we cannot just remove it, instead we must end it - if (line.indexOf("--") >= 0) { - sql.append("\n"); - } - if ((checkStringBufferEndsWith(sql, delimiter))) { - executeSQL(sql.substring(0, sql.length() - delimiter.length()), conn); - sql.replace(0, sql.length(), ""); - } - } - // Catch any statements not followed by ; - if (sql.length() > 0) { - executeSQL(sql.toString(), conn); - } - } catch (IOException e) { - log.error("Error occurred while executing SQL script for creating Airavata database", e); - throw new Exception("Error occurred while executing SQL script for creating Airavata database", e); - - } finally { - if (reader != null) { - reader.close(); - } - } - } - - /** - * Checks that a string buffer ends up with a given string. It may sound trivial with the existing JDK API but the - * various implementation among JDKs can make those methods extremely resource intensive and perform poorly due to - * massive memory allocation and copying. See - * - * @param buffer - * the buffer to perform the check on - * @param suffix - * the suffix - * @return <code>true</code> if the character sequence represented by the argument is a suffix of the character - * sequence represented by the StringBuffer object; <code>false</code> otherwise. Note that the result will - * be <code>true</code> if the argument is the empty string. - */ - public static boolean checkStringBufferEndsWith(StringBuffer buffer, String suffix) { - if (suffix.length() > buffer.length()) { - return false; - } - // this loop is done on purpose to avoid memory allocation performance - // problems on various JDKs - // StringBuffer.lastIndexOf() was introduced in jdk 1.4 and - // implementation is ok though does allocation/copying - // StringBuffer.toString().endsWith() does massive memory - // allocation/copying on JDK 1.5 - // See http://issues.apache.org/bugzilla/show_bug.cgi?id=37169 - int endIndex = suffix.length() - 1; - int bufferIndex = buffer.length() - 1; - while (endIndex >= 0) { - if (buffer.charAt(bufferIndex) != suffix.charAt(endIndex)) { - return false; - } - bufferIndex--; - endIndex--; - } - return true; - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/488b772f/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/JdbcStorage.java ---------------------------------------------------------------------- diff --git a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/JdbcStorage.java b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/JdbcStorage.java deleted file mode 100644 index 18b16cb..0000000 --- a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/store/impl/util/JdbcStorage.java +++ /dev/null @@ -1,175 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF 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.apache.airavata.credential.store.store.impl.util; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.sql.*; - -public class JdbcStorage { - private static Logger log = LoggerFactory.getLogger(JdbcStorage.class); - - private ConnectionPool connectionPool; - - public JdbcStorage(String jdbcUrl, String jdbcDriver) { - // default init connection and max connection - this(3, 50, jdbcUrl, jdbcDriver, true); - } - - public JdbcStorage(int initCon, int maxCon, String url, String driver, boolean enableTransactions) { - try { - if (enableTransactions) { - connectionPool = new ConnectionPool(driver, url, initCon, maxCon, true, false, - Connection.TRANSACTION_SERIALIZABLE); - } else { - connectionPool = new ConnectionPool(driver, url, initCon, maxCon, true); - } - } catch (Exception e) { - throw new RuntimeException("Failed to create database connection pool.", e); - } - } - - /** - * Check if this connection pool is auto commit or not - * - * @return - */ - public boolean isAutoCommit() { - return connectionPool.isAutoCommit(); - } - - public void commit(Connection conn) { - try { - if (conn != null && !conn.getAutoCommit()) { - conn.commit(); - } - } catch (SQLException sqle) { - log.error("Cannot commit data", sqle); - } - } - - public void commitAndFree(Connection conn) { - commit(conn); - closeConnection(conn); - } - - public void rollback(Connection conn) { - try { - if (conn != null && !conn.getAutoCommit()) { - conn.rollback(); - } - } catch (SQLException sqle) { - log.error("Cannot Rollback data", sqle); - } - } - - public void rollbackAndFree(Connection conn) { - rollback(conn); - closeConnection(conn); - } - - public Connection connect() { - - Connection conn = null; - try { - conn = connectionPool.getConnection(); - } catch (SQLException e) { - log.error(e.getMessage(), e); - } - return conn; - } - - /** - * This method is provided so that you can have better control over the statement. For example: You can use - * stmt.setString to convert quotation mark automatically in an UPDATE statement - * - * NOTE: Statement is closed after execution - */ - public int executeUpdateAndClose(PreparedStatement stmt) throws SQLException { - int rows = 0; - try { - rows = stmt.executeUpdate(); - if (rows == 0) { - log.info("Problem: 0 rows affected by insert/update/delete statement."); - } - } finally { - stmt.close(); - } - return rows; - } - - public int countRow(String tableName, String columnName) throws SQLException { - String query = new String("SELECT COUNT(" + columnName + ") FROM " + tableName); - int count = -1; - Connection conn = null; - PreparedStatement stmt = null; - try { - conn = connectionPool.getConnection(); - stmt = conn.prepareStatement(query); - ResultSet rs = stmt.executeQuery(); - rs.next(); - count = rs.getInt(1); - commit(conn); - } catch (SQLException sql) { - rollback(conn); - throw sql; - } finally { - try { - if (stmt != null && !stmt.isClosed()) { - stmt.close(); - } - } finally { - closeConnection(conn); - } - } - return count; - } - - public void quietlyClose(Connection conn, Statement... stmts) { - if (stmts != null) { - for (Statement stmt : stmts) { - try { - if (stmt != null && !stmt.isClosed()) { - stmt.close(); - } - } catch (SQLException sql) { - log.error(sql.getMessage(), sql); - } - } - } - closeConnection(conn); - } - - public void closeConnection(Connection conn) { - if (conn != null) { - connectionPool.free(conn); - } - } - - public void closeAllConnections() { - if (connectionPool != null) - connectionPool.dispose(); - } - - public void shutdown() throws SQLException { - connectionPool.shutdown(); - } -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/488b772f/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/ConfigurationReader.java ---------------------------------------------------------------------- diff --git a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/ConfigurationReader.java b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/ConfigurationReader.java deleted file mode 100644 index e44d4d8..0000000 --- a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/ConfigurationReader.java +++ /dev/null @@ -1,121 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF 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.apache.airavata.credential.store.util; - -import org.apache.airavata.credential.store.store.CredentialStoreException; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import java.io.IOException; -import java.io.InputStream; - -/** - * User: AmilaJ ([email protected]) - * Date: 8/25/13 - * Time: 6:40 AM - */ - -/** - * Reads credential store specific configurations from the client.xml file. - */ -public class ConfigurationReader { - - private String successUrl; - - private String errorUrl; - - private String portalRedirectUrl; - - public String getPortalRedirectUrl() { - return portalRedirectUrl; - } - - public void setPortalRedirectUrl(String portalRedirectUrl) { - this.portalRedirectUrl = portalRedirectUrl; - } - - public ConfigurationReader() throws CredentialStoreException { - - try { - loadConfigurations(); - } catch (Exception e) { - throw new CredentialStoreException("Unable to read credential store specific configurations." , e); - } - - - } - - private void loadConfigurations() throws ParserConfigurationException, - IOException, SAXException { - InputStream inputStream - = this.getClass().getClassLoader().getResourceAsStream("credential-store/client.xml"); - - DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance(); - DocumentBuilder dBuilder = dbFactory.newDocumentBuilder(); - Document doc = dBuilder.parse(inputStream); - - doc.getDocumentElement().normalize(); - - NodeList nodeList = doc.getElementsByTagName("credential-store"); - - readElementValue(nodeList); - - } - - private void readElementValue(NodeList nodeList) { - for (int temp = 0; temp < nodeList.getLength(); temp++) { - - Node nNode = nodeList.item(temp); - - if (nNode.getNodeType() == Node.ELEMENT_NODE) { - - Element eElement = (Element) nNode; - - this.successUrl = eElement.getElementsByTagName("successUri").item(0).getTextContent(); - this.errorUrl = eElement.getElementsByTagName("errorUri").item(0).getTextContent(); - this.portalRedirectUrl = eElement.getElementsByTagName("redirectUri").item(0).getTextContent(); - } - } - } - - public String getSuccessUrl() { - return successUrl; - } - - public void setSuccessUrl(String successUrl) { - this.successUrl = successUrl; - } - - public String getErrorUrl() { - return errorUrl; - } - - public void setErrorUrl(String errorUrl) { - this.errorUrl = errorUrl; - } -} http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/488b772f/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/CredentialStoreConstants.java ---------------------------------------------------------------------- diff --git a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/CredentialStoreConstants.java b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/CredentialStoreConstants.java deleted file mode 100644 index de3c59c..0000000 --- a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/CredentialStoreConstants.java +++ /dev/null @@ -1,37 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF 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.apache.airavata.credential.store.util; - -/** - * User: AmilaJ ([email protected]) - * Date: 8/25/13 - * Time: 4:34 PM - */ - -public class CredentialStoreConstants { - - public static final String GATEWAY_NAME_QUERY_PARAMETER = "gatewayName"; - public static final String PORTAL_USER_QUERY_PARAMETER = "portalUserName"; - public static final String PORTAL_USER_EMAIL_QUERY_PARAMETER = "email"; - public static final String PORTAL_TOKEN_ID_ASSIGNED = "associatedToken"; - public static final String DURATION_QUERY_PARAMETER = "duration"; -} http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/488b772f/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/PrivateKeyStore.java ---------------------------------------------------------------------- diff --git a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/PrivateKeyStore.java b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/PrivateKeyStore.java deleted file mode 100644 index cd6db7e..0000000 --- a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/PrivateKeyStore.java +++ /dev/null @@ -1,70 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF 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.apache.airavata.credential.store.util; - -import java.security.PrivateKey; -import java.util.HashMap; -import java.util.Map; - -/** - * User: AmilaJ ([email protected]) - * Date: 9/5/13 - * Time: 6:47 PM - */ - -public class PrivateKeyStore { - - private Map<String, PrivateKey> privateKeyMap; - - private static PrivateKeyStore privateKeyStore = null; - - private PrivateKeyStore() { - privateKeyMap = new HashMap<String, PrivateKey>(); - } - - public static PrivateKeyStore getPrivateKeyStore() { - - if (privateKeyStore == null) { - privateKeyStore = new PrivateKeyStore(); - } - - return privateKeyStore; - } - - public synchronized void addKey(String tokenId, PrivateKey privateKey) { - - privateKeyMap.put(tokenId, privateKey); - } - - public synchronized PrivateKey getKey(String tokenId) { - - PrivateKey privateKey = privateKeyMap.get(tokenId); - - if (privateKey != null) { - privateKeyMap.remove(tokenId); - } - - return privateKey; - } - - -} http://git-wip-us.apache.org/repos/asf/airavata-php-gateway/blob/488b772f/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/TokenGenerator.java ---------------------------------------------------------------------- diff --git a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/TokenGenerator.java b/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/TokenGenerator.java deleted file mode 100644 index 1c36f8d..0000000 --- a/modules/credential-store/credential-store-service/src/main/java/org/apache/airavata/credential/store/util/TokenGenerator.java +++ /dev/null @@ -1,57 +0,0 @@ -/* - * - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF 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.apache.airavata.credential.store.util; - -/** - * User: AmilaJ ([email protected]) - * Date: 5/21/13 - * Time: 3:07 PM - */ - -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import java.sql.Timestamp; -import java.util.UUID; - -/** - * Generates tokens for users. - */ -public class TokenGenerator { - - protected static Logger log = LoggerFactory.getLogger(TokenGenerator.class); - - - public TokenGenerator() { - - } - - public static String generateToken(String gatewayId, String metadata) { - - return UUID.randomUUID().toString(); - } - - public String encryptToken(String token) { - return null; - } - -}
