Changeset 26912 for main/trunk/greenstone3
- Timestamp:
- 2013-02-21T14:04:36+13:00 (11 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
main/trunk/greenstone3/src/java/org/greenstone/gsdl3/service/Authentication.java
r26425 r26912 127 127 protected static final String GET_USER_INFORMATION_SERVICE = "GetUserInformation"; 128 128 129 protected DerbyWrapper _derbyWrapper = null; 129 protected static DerbyWrapper _derbyWrapper = null; 130 protected static boolean _derbyWrapperDoneForcedShutdown = false; 130 131 131 132 protected String _recaptchaPrivateKey = null; … … 135 136 public Authentication() 136 137 { 138 } 139 140 public void cleanUp() { 141 142 super.cleanUp(); 143 144 if (!_derbyWrapperDoneForcedShutdown) { 145 146 // This boolean is used to ensure we always shutdown the derby server, even if it is never 147 // used by the Authentication server. This is because the Tomcat greenstone3.xml 148 // config file also specifies a connection to the database, which can result in the 149 // server being initialized when the servlet is first accessed. Note also, 150 // Authentication is a ServiceRack, meaning cleanUp() is called for each service 151 // supported, however we only need to shutdown the Derby server once. Again 152 // this boolean variable helps achieve this. 153 154 logger.info("Authentication Service performing forced shutdown of Derby Server ..."); 155 156 DerbyWrapper.shutdownDatabaseServer(); 157 _derbyWrapper = null; 158 _derbyWrapperDonwForcedShutdown = true; 159 137 160 } 138 161 … … 254 277 } 255 278 256 DerbyWrapper dbWrapper = new DerbyWrapper(); 257 258 String usersDB_dir = this.site_home + File.separatorChar + "etc" + File.separatorChar + "usersDB"; 259 dbWrapper.connectDatabase(usersDB_dir, true); 260 261 UserQueryResult userQueryResult; 279 openDatabase(); 280 262 281 try 263 282 { 264 userQueryResult = dbWrapper.findUser(username); 283 UserQueryResult userQueryResult = _derbyWrapper.findUser(username); 284 265 285 Vector<UserTermInfo> terms = userQueryResult.getUserTerms(); 266 286 … … 268 288 { 269 289 GSXML.addError(this.doc, result, _errorMessageMap.get(ERROR_REQUESTED_USER_NOT_FOUND)); 290 closeDatabase(); 270 291 return result; 271 292 } … … 292 313 ex.printStackTrace(); 293 314 } 315 316 317 closeDatabase(); 294 318 295 319 return result; … … 803 827 private void checkAdminUserExists() 804 828 { 805 if (_derbyWrapper == null) 806 { 807 openDatabase(); 808 } 829 openDatabase(); 809 830 810 831 UserQueryResult userQueryResult = _derbyWrapper.findUser(null, null); 811 closeDatabase();812 832 813 833 if (userQueryResult != null) … … 835 855 private boolean openDatabase() 836 856 { 857 if (_derbyWrapper == null) { 837 858 _derbyWrapper = new DerbyWrapper(); 838 859 … … 860 881 _derbyWrapper.connectDatabase(usersDB_dir, false); 861 882 } 862 return true; 883 } 884 return true; 863 885 } 864 886 … … 873 895 874 896 private int addUserInformationToNode(String username, Element serviceNode) 875 { 876 if (_derbyWrapper == null) 877 { 878 openDatabase(); 879 } 897 { 898 openDatabase(); 880 899 881 900 UserQueryResult userQueryResult = _derbyWrapper.findUser(username, null); 882 closeDatabase();883 901 884 902 if (userQueryResult != null) … … 901 919 } 902 920 903 if (_derbyWrapper == null) 904 { 905 openDatabase(); 906 } 921 openDatabase(); 907 922 908 923 boolean success = _derbyWrapper.deleteUser(username); 924 925 if (success) 926 { 927 closeDatabase(); 928 return NO_ERROR; 929 } 930 909 931 closeDatabase(); 910 911 if (success)912 {913 return NO_ERROR;914 }915 916 932 return ERROR_REMOVING_USER; 917 933 } … … 919 935 private int addUser(String newUsername, String newPassword, String newGroups, String newStatus, String newComment, String newEmail) 920 936 { 921 if (_derbyWrapper == null) 922 { 923 openDatabase(); 924 } 937 openDatabase(); 925 938 926 939 newGroups = newGroups.replaceAll(" ", ""); … … 928 941 //Check if the user already exists 929 942 UserQueryResult userQueryResult = _derbyWrapper.findUser(newUsername, null); 943 930 944 if (userQueryResult != null) 931 945 { … … 943 957 } 944 958 } 959 945 960 closeDatabase(); 946 961 return NO_ERROR; … … 949 964 private boolean checkUserExists(String username) 950 965 { 951 if (_derbyWrapper == null) 952 { 953 openDatabase(); 954 } 966 boolean check_status = false; 967 968 openDatabase(); 955 969 956 970 try … … 960 974 if (result != null) 961 975 { 962 return true; 963 } 964 else 965 { 966 return false; 976 check_status = true; 967 977 } 968 978 … … 970 980 catch (Exception ex) 971 981 { 972 return false;973 }974 finally975 { 976 977 }982 // some error occurred accessing the database 983 ex.printStackTrace(); 984 } 985 986 closeDatabase(); 987 return check_status; 978 988 } 979 989 980 990 private String retrieveDataForUser(String username, String dataType) 981 991 { 982 if (_derbyWrapper == null) 983 { 984 openDatabase(); 985 } 986 987 String password = null; 992 openDatabase(); 993 994 String data = null; 988 995 989 996 try … … 996 1003 if (dataType.equals("password")) 997 1004 { 998 return ((UserTermInfo) userInfo.get(i)).password; 1005 data = ((UserTermInfo) userInfo.get(i)).password; 1006 break; 999 1007 } 1000 1008 else if (dataType.equals("groups")) 1001 1009 { 1002 return ((UserTermInfo) userInfo.get(i)).groups; 1010 data = ((UserTermInfo) userInfo.get(i)).groups; 1011 break; 1003 1012 } 1004 1013 else if (dataType.equals("status")) 1005 1014 { 1006 return ((UserTermInfo) userInfo.get(i)).accountstatus; 1015 data = ((UserTermInfo) userInfo.get(i)).accountstatus; 1016 break; 1007 1017 } 1008 1018 else if (dataType.equals("comment")) 1009 1019 { 1010 return ((UserTermInfo) userInfo.get(i)).comment; 1020 data = ((UserTermInfo) userInfo.get(i)).comment; 1021 break; 1011 1022 } 1012 1023 else if (dataType.equals("email")) 1013 1024 { 1014 return ((UserTermInfo) userInfo.get(i)).email; 1025 data = ((UserTermInfo) userInfo.get(i)).email; 1026 break; 1015 1027 } 1016 1028 } … … 1022 1034 1023 1035 closeDatabase(); 1024 return password;1036 return data; 1025 1037 } 1026 1038
Note:
See TracChangeset
for help on using the changeset viewer.