public OAuthAppDO getAppInformation(String consumerKey) throws InvalidOAuthClientException, IdentityOAuth2Exception { Connection connection = null; PreparedStatement prepStmt = null; ResultSet rSet = null; OAuthAppDO oauthApp = null; try { connection = JDBCPersistenceManager.getInstance().getDBConnection(); prepStmt = connection.prepareStatement(SQLQueries.OAuthAppDAOSQLQueries.GET_APP_INFO); prepStmt.setString(1, tokenPersistenceProcessor.getProcessedToken(consumerKey)); rSet = prepStmt.executeQuery(); List<OAuthAppDO> oauthApps = new ArrayList<OAuthAppDO>(); /** * We need to determine whether the result set has more than 1 row. Meaning, we found an * application for the given consumer key. There can be situations where a user passed a key * which doesn't yet have an associated application. We need to barf with a meaningful error * message for this case */ boolean rSetHasRows = false; while (rSet.next()) { // There is at least one application associated with a given key rSetHasRows = true; if (rSet.getString(4) != null && rSet.getString(4).length() > 0) { oauthApp = new OAuthAppDO(); oauthApp.setOauthConsumerKey(consumerKey); oauthApp.setOauthConsumerSecret( tokenPersistenceProcessor.getPreprocessedToken(rSet.getString(1))); oauthApp.setUserName(rSet.getString(2)); oauthApp.setApplicationName(rSet.getString(3)); oauthApp.setOauthVersion(rSet.getString(4)); oauthApp.setCallbackUrl(rSet.getString(5)); oauthApp.setTenantId(rSet.getInt(6)); oauthApp.setGrantTypes(rSet.getString(7)); oauthApps.add(oauthApp); } } if (!rSetHasRows) { /** * We come here because user submitted a key that doesn't have any associated application * with it. We're throwing an error here because we cannot continue without this info. * Otherwise it'll throw a null values not supported error when it tries to cache this info */ String message = "Cannot find an application associated with the given consumer key : " + consumerKey; log.debug(message); throw new InvalidOAuthClientException(message); } } catch (IdentityException e) { log.debug(e.getMessage(), e); throw new IdentityOAuth2Exception(e.getMessage()); } catch (SQLException e) { log.debug(e.getMessage(), e); throw new IdentityOAuth2Exception(e.getMessage()); } finally { IdentityDatabaseUtil.closeAllConnections(connection, rSet, prepStmt); } return oauthApp; }
public OAuthAppDO[] getOAuthConsumerAppsOfUser(String username, int tenantId) throws IdentityOAuthAdminException { Connection connection = null; PreparedStatement prepStmt = null; ResultSet rSet = null; OAuthAppDO[] oauthAppsOfUser; try { connection = JDBCPersistenceManager.getInstance().getDBConnection(); prepStmt = connection.prepareStatement(SQLQueries.OAuthAppDAOSQLQueries.GET_APPS_OF_USER); prepStmt.setString(1, username); prepStmt.setInt(2, tenantId); rSet = prepStmt.executeQuery(); List<OAuthAppDO> oauthApps = new ArrayList<OAuthAppDO>(); while (rSet.next()) { if (rSet.getString(3) != null && rSet.getString(3).length() > 0) { OAuthAppDO oauthApp = new OAuthAppDO(); oauthApp.setUserName(username); oauthApp.setTenantId(tenantId); oauthApp.setOauthConsumerKey( tokenPersistenceProcessor.getPreprocessedToken(rSet.getString(1))); oauthApp.setOauthConsumerSecret( tokenPersistenceProcessor.getPreprocessedToken(rSet.getString(2))); oauthApp.setApplicationName(rSet.getString(3)); oauthApp.setOauthVersion(rSet.getString(4)); oauthApp.setCallbackUrl(rSet.getString(5)); oauthApp.setGrantTypes(rSet.getString(6)); oauthApps.add(oauthApp); } } oauthAppsOfUser = oauthApps.toArray(new OAuthAppDO[oauthApps.size()]); } catch (IdentityException e) { String errorMsg = "Error when getting an Identity Persistence Store instance."; log.error(errorMsg, e); throw new IdentityOAuthAdminException(errorMsg, e); } catch (SQLException e) { log.error( "Error when executing the SQL : " + SQLQueries.OAuthAppDAOSQLQueries.GET_APPS_OF_USER); log.error(e.getMessage(), e); throw new IdentityOAuthAdminException( "Error when reading the application information from the persistence store."); } finally { IdentityDatabaseUtil.closeAllConnections(connection, rSet, prepStmt); } return oauthAppsOfUser; }