From 64e143968177f62a038e4882ee87714a703bc8ab Mon Sep 17 00:00:00 2001
From: Rick Herrick <jrherrick@wustl.edu>
Date: Tue, 12 Apr 2016 13:55:13 -0500
Subject: [PATCH] Added support for initializing site URL from request URL and
 servlet context. Finished StringUtils migration. Added XapiRestController
 handling.

---
 .gitignore                                    |  2 +-
 .../id/RoutedStudyDicomProjectIdentifier.java |  2 +-
 .../ScriptedSessionAssignmentExtractor.java   |  2 +-
 .../nrg/pipeline/XnatPipelineLauncher.java    |  2 +-
 .../java/org/nrg/xapi/model/users/User.java   |  2 +-
 .../nrg/xapi/rest/dicomscp/DicomSCPApi.java   |  5 +-
 .../org/nrg/xapi/rest/theme/ThemeApi.java     |  3 +-
 .../org/nrg/xapi/rest/users/UsersApi.java     |  5 +-
 .../postArchive/ClearStudyRoutingAction.java  |  2 +-
 .../xnat/archive/GradualDicomImporter.java    |  4 +-
 .../xnat/archive/PrearcSessionArchiver.java   |  4 +-
 .../xnat/archive/PrearcSessionValidator.java  |  2 +-
 .../org/nrg/xnat/configuration/WebConfig.java | 31 +++------
 .../listeners/AutomatedScriptHandler.java     |  2 +-
 .../listeners/PipelineEmailHandlerAbst.java   |  4 +-
 .../WorkflowStatusEventHandlerAbst.java       |  2 +-
 .../xnat/helpers/PrearcImporterHelper.java    |  2 +-
 .../xnat/helpers/dicom/DicomHeaderDump.java   |  4 +-
 .../xnat/helpers/merge/MergeCatCatalog.java   |  2 +-
 .../nrg/xnat/helpers/merge/MergeUtils.java    |  2 +-
 .../helpers/merge/SessionOverwriteCheck.java  |  2 +-
 .../helpers/prearchive/DatabaseSession.java   |  2 +-
 .../prearchive/FileSystemSessionTrawler.java  |  2 +-
 .../helpers/prearchive/PrearcDatabase.java    |  2 +-
 .../prearchive/PrearcTableBuilder.java        |  2 +-
 .../prearchive/PrearcUriParserUtils.java      |  2 +-
 .../xnat/helpers/prearchive/PrearcUtils.java  |  2 +-
 .../prearchive/SessionXMLRebuilder.java       |  2 +-
 .../handlers/PrearchiveMoveHandler.java       |  2 +-
 .../direct/DirectAssessResourceImpl.java      |  2 +-
 .../direct/DirectExptResourceImpl.java        |  2 +-
 .../direct/DirectProjResourceImpl.java        |  2 +-
 .../direct/DirectReconResourceImpl.java       |  2 +-
 .../direct/DirectScanResourceImpl.java        |  2 +-
 .../direct/DirectSubjResourceImpl.java        |  2 +-
 .../resource/direct/ResourceModifierA.java    |  2 +-
 .../transactions/TransactionUtils.java        |  2 +-
 .../impl/ResourcesExptAssessorURI.java        |  2 +-
 .../archive/impl/ResourcesExptReconURI.java   |  2 +-
 .../archive/impl/ResourcesExptScanURI.java    |  2 +-
 .../uri/archive/impl/ResourcesExptURI.java    |  2 +-
 .../impl/ResourcesProjSubjAssExptURI.java     |  2 +-
 .../impl/ResourcesProjSubjAssReconURI.java    |  2 +-
 .../impl/ResourcesProjSubjAssScanURI.java     |  2 +-
 .../impl/ResourcesProjSubjExptURI.java        |  2 +-
 .../archive/impl/ResourcesProjSubjURI.java    |  2 +-
 .../uri/archive/impl/ResourcesProjURI.java    |  2 +-
 .../uri/archive/impl/ResourcesSubjURI.java    |  2 +-
 .../itemBuilders/FileHistoryBuilderAbst.java  |  2 +-
 .../xnat/itemBuilders/FileSummaryBuilder.java |  2 +-
 .../org/nrg/xnat/restlet/XNATApplication.java |  2 +-
 .../actions/AutomationBasedImporter.java      |  2 +-
 .../xnat/restlet/actions/PrearcImporterA.java |  2 +-
 .../xnat/restlet/actions/SessionImporter.java |  2 +-
 .../actions/importer/ImporterHandlerA.java    |  2 +-
 .../extensions/AuthenticationRestlet.java     |  2 +-
 .../extensions/PipelineDetailsRestlet.java    |  2 +-
 .../extensions/ScanQualityLabelRestlet.java   |  2 +-
 .../extensions/SendEmailVerification.java     | 10 ++-
 .../extensions/SessionCountRestlet.java       |  2 +-
 .../extensions/StudyRoutingRestlet.java       |  2 +-
 .../restlet/extensions/UserRolesRestlet.java  |  2 +-
 .../extensions/UserSettingsRestlet.java       |  2 +-
 .../restlet/extensions/WorkflowsRestlet.java  |  2 +-
 .../restlet/files/utils/RestFileUtils.java    |  2 +-
 .../restlet/resources/AutomationResource.java |  2 +-
 .../restlet/resources/ConfigResource.java     |  2 +-
 .../xnat/restlet/resources/EventResource.java |  2 +-
 .../restlet/resources/ExperimentResource.java |  2 +-
 .../resources/ExptAssessmentResource.java     | 64 ++++++++-----------
 .../xnat/restlet/resources/PARResource.java   |  2 +-
 .../resources/ProjSubExptAsstList.java        |  2 +-
 .../resources/ProjectGroupResource.java       |  4 +-
 .../resources/ProjectMemberResource.java      |  2 +-
 .../restlet/resources/ProjectResource.java    |  2 +-
 .../resources/ProjectUserListResource.java    |  2 +-
 .../resources/ProjtExptPipelineResource.java  |  2 +-
 .../resources/RestMockCallMapRestlet.java     |  2 +-
 .../restlet/resources/ScriptResource.java     |  2 +-
 .../resources/ScriptRunnerResource.java       |  2 +-
 .../resources/ScriptTriggerResource.java      |  2 +-
 .../ScriptTriggerTemplateResource.java        |  2 +-
 .../resources/ScriptVersionsResource.java     |  2 +-
 .../restlet/resources/SecureResource.java     |  2 +-
 .../resources/SubjAssessmentResource.java     |  8 +--
 .../restlet/resources/SubjectResource.java    |  4 +-
 .../resources/WorkflowEventResource.java      |  2 +-
 .../resources/files/CatalogResource.java      |  2 +-
 .../restlet/resources/files/FileList.java     |  4 +-
 .../restlet/resources/files/XNATTemplate.java | 31 ++++-----
 .../prearchive/PrearcScanResource.java        |  2 +-
 .../prearchive/PrearcSessionListResource.java |  2 +-
 .../prearchive/PrearcSessionResource.java     |  2 +-
 .../PrearcSessionResourceFiles.java           |  2 +-
 .../restlet/services/AliasTokenRestlet.java   |  2 +-
 .../nrg/xnat/restlet/services/Archiver.java   |  2 +-
 .../services/FeatureDefinitionRestlet.java    |  4 +-
 .../nrg/xnat/restlet/services/Importer.java   |  2 +-
 .../nrg/xnat/restlet/services/MoveFiles.java  |  2 +-
 .../restlet/services/SettingsRestlet.java     |  6 +-
 .../restlet/services/mail/MailRestlet.java    |  2 +-
 .../nrg/xnat/restlet/util/RequestUtil.java    |  2 +-
 .../XnatAuthenticationEntryPoint.java         |  2 +-
 .../security/XnatAuthenticationFilter.java    |  2 +-
 ...ecFilter.java => XnatInitCheckFilter.java} | 20 +++---
 .../xnat/security/XnatProviderManager.java    |  4 +-
 .../AliasTokenAuthenticationProvider.java     |  2 +-
 .../AuthenticationProviderAggregator.java     |  2 +-
 ...dapAuthenticationProviderConfigurator.java |  2 +-
 .../security/config/PropertyAggregator.java   |  2 +-
 .../xnat/services/impl/ThemeServiceImpl.java  |  4 +-
 .../modules/actions/AcceptProjectAccess.java  |  2 +-
 .../turbine/modules/actions/AddProject.java   |  2 +-
 .../modules/actions/ConfirmRegister.java      |  2 +-
 .../modules/actions/CreateExperiment.java     |  2 +-
 .../modules/actions/DownloadImages.java       |  2 +-
 .../actions/DownloadSessionsAction2.java      |  2 +-
 .../actions/ModifySubjectAssessorData.java    |  2 +-
 .../modules/actions/PipelineActions.java      |  3 +-
 .../modules/actions/ProcessAccessRequest.java |  2 +-
 .../turbine/modules/actions/QDECAction.java   |  4 +-
 .../turbine/modules/actions/ReportIssue.java  |  2 +-
 .../modules/actions/XDATForgotLogin.java      |  2 +-
 .../modules/actions/XDATLoginUser.java        |  2 +-
 .../modules/actions/XDATRegisterUser.java     |  2 +-
 .../turbine/modules/screens/EditScript.java   |  2 +-
 .../modules/screens/InactiveAccount.java      |  6 +-
 .../modules/screens/LaunchUploadApplet.java   |  2 +-
 .../screens/XDATScreen_UpdateUser.java        | 19 +++---
 .../screens/XDATScreen_add_experiment.java    |  2 +-
 ...ATScreen_edit_scr_screeningAssessment.java |  8 +--
 ...Screen_uploaded_xnat_imageSessionData.java |  2 +-
 .../modules/screens/XnatErrorScreen.java      |  2 +-
 .../nrg/xnat/turbine/utils/IDGenerator.java   |  6 +-
 .../turbine/utils/ProjectAccessRequest.java   |  2 +-
 .../xnat/turbine/utils/ScanQualityUtils.java  |  2 +-
 .../org/nrg/xnat/turbine/utils/XNATUtils.java |  2 +-
 .../java/org/nrg/xnat/utils/CatalogUtils.java |  2 +-
 .../ChecksumsSiteConfigurationListener.java   |  2 +-
 .../java/org/nrg/xnat/utils/FileUtils.java    |  2 +-
 .../org/nrg/xnat/utils/ResourceUtils.java     |  2 +-
 .../org/nrg/xnat/utils/XnatHttpUtils.java     |  7 ++
 .../WEB-INF/conf/InstanceSettings.xml.sample  | 26 --------
 .../webapp/WEB-INF/conf/xnat-security.xml     |  4 +-
 144 files changed, 248 insertions(+), 288 deletions(-)
 rename src/main/java/org/nrg/xnat/security/{XnatArcSpecFilter.java => XnatInitCheckFilter.java} (82%)
 delete mode 100644 src/main/webapp/WEB-INF/conf/InstanceSettings.xml.sample

diff --git a/.gitignore b/.gitignore
index 48510445..c84448e5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -6,7 +6,7 @@ src/generated
 gradle.properties
 /out
 /build
-InstanceSettings.xmldependencies.txt
+dependencies.txt
 /webapps
 /bin/
 .classpath
diff --git a/src/main/java/org/nrg/dcm/id/RoutedStudyDicomProjectIdentifier.java b/src/main/java/org/nrg/dcm/id/RoutedStudyDicomProjectIdentifier.java
index 50bd47cf..60e00a80 100644
--- a/src/main/java/org/nrg/dcm/id/RoutedStudyDicomProjectIdentifier.java
+++ b/src/main/java/org/nrg/dcm/id/RoutedStudyDicomProjectIdentifier.java
@@ -15,7 +15,7 @@ import java.util.SortedSet;
 
 import javax.inject.Inject;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.dcm4che2.data.DicomObject;
 import org.dcm4che2.data.Tag;
 import org.nrg.xdat.om.XnatProjectdata;
diff --git a/src/main/java/org/nrg/dcm/id/ScriptedSessionAssignmentExtractor.java b/src/main/java/org/nrg/dcm/id/ScriptedSessionAssignmentExtractor.java
index 6f54c07c..47188bf1 100644
--- a/src/main/java/org/nrg/dcm/id/ScriptedSessionAssignmentExtractor.java
+++ b/src/main/java/org/nrg/dcm/id/ScriptedSessionAssignmentExtractor.java
@@ -1,6 +1,6 @@
 package org.nrg.dcm.id;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.dcm4che2.data.DicomObject;
 import org.nrg.automation.entities.Script;
 import org.nrg.automation.services.ScriptRunnerService;
diff --git a/src/main/java/org/nrg/pipeline/XnatPipelineLauncher.java b/src/main/java/org/nrg/pipeline/XnatPipelineLauncher.java
index 61640916..c3d6e8fc 100644
--- a/src/main/java/org/nrg/pipeline/XnatPipelineLauncher.java
+++ b/src/main/java/org/nrg/pipeline/XnatPipelineLauncher.java
@@ -11,7 +11,7 @@
 
 package org.nrg.pipeline;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
 import org.nrg.pipeline.client.XNATPipelineLauncher;
diff --git a/src/main/java/org/nrg/xapi/model/users/User.java b/src/main/java/org/nrg/xapi/model/users/User.java
index ae714c01..862323e0 100644
--- a/src/main/java/org/nrg/xapi/model/users/User.java
+++ b/src/main/java/org/nrg/xapi/model/users/User.java
@@ -4,7 +4,7 @@ import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.om.XdatUser;
 import org.nrg.xdat.om.base.auto.AutoXdatUser;
 import org.nrg.xdat.security.XDATUser;
diff --git a/src/main/java/org/nrg/xapi/rest/dicomscp/DicomSCPApi.java b/src/main/java/org/nrg/xapi/rest/dicomscp/DicomSCPApi.java
index 60c15181..d0053550 100644
--- a/src/main/java/org/nrg/xapi/rest/dicomscp/DicomSCPApi.java
+++ b/src/main/java/org/nrg/xapi/rest/dicomscp/DicomSCPApi.java
@@ -3,6 +3,7 @@ package org.nrg.xapi.rest.dicomscp;
 import io.swagger.annotations.*;
 import org.nrg.dcm.DicomSCPManager;
 import org.nrg.dcm.preferences.DicomSCPInstance;
+import org.nrg.framework.annotations.XapiRestController;
 import org.nrg.framework.exceptions.NrgServiceException;
 import org.nrg.xapi.rest.NotFoundException;
 import org.nrg.xdat.rest.AbstractXnatRestApi;
@@ -15,10 +16,8 @@ import org.springframework.web.bind.annotation.*;
 import javax.inject.Inject;
 import java.util.List;
 
-// @XnatRestlet({"/services/dicomscp", "/services/dicomscp/instance/{SCP_ID}", "/services/dicomscp/instance/{SCP_ID}/{ACTION}", "/services/dicomscp/{ACTION}"})
-
 @Api(description = "XNAT DICOM SCP management API")
-@RestController
+@XapiRestController
 @RequestMapping(value = "/dicomscp")
 public class DicomSCPApi extends AbstractXnatRestApi {
     private static final Logger _log = LoggerFactory.getLogger(DicomSCPApi.class);
diff --git a/src/main/java/org/nrg/xapi/rest/theme/ThemeApi.java b/src/main/java/org/nrg/xapi/rest/theme/ThemeApi.java
index 480d3f47..2abf2d60 100644
--- a/src/main/java/org/nrg/xapi/rest/theme/ThemeApi.java
+++ b/src/main/java/org/nrg/xapi/rest/theme/ThemeApi.java
@@ -14,6 +14,7 @@ package org.nrg.xapi.rest.theme;
 
 import io.swagger.annotations.*;
 import org.apache.commons.io.FileUtils;
+import org.nrg.framework.annotations.XapiRestController;
 import org.nrg.xapi.rest.NotFoundException;
 import org.nrg.xdat.security.XDATUser;
 import org.nrg.xft.security.UserI;
@@ -34,7 +35,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 @Api(description = "XNAT Theme Management API")
-@RestController
+@XapiRestController
 @RequestMapping(value = "/theme")
 public class ThemeApi {
     private static final Logger _log = LoggerFactory.getLogger(ThemeApi.class);
diff --git a/src/main/java/org/nrg/xapi/rest/users/UsersApi.java b/src/main/java/org/nrg/xapi/rest/users/UsersApi.java
index 83adf8be..80691aef 100644
--- a/src/main/java/org/nrg/xapi/rest/users/UsersApi.java
+++ b/src/main/java/org/nrg/xapi/rest/users/UsersApi.java
@@ -2,6 +2,7 @@ package org.nrg.xapi.rest.users;
 
 import io.swagger.annotations.*;
 import org.apache.commons.lang3.StringUtils;
+import org.nrg.framework.annotations.XapiRestController;
 import org.nrg.xapi.model.users.User;
 import org.nrg.xapi.rest.NotFoundException;
 import org.nrg.xdat.rest.AbstractXnatRestApi;
@@ -21,7 +22,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 @Api(description = "The XNAT POC User Management API")
-@RestController
+@XapiRestController
 @RequestMapping(value = "/users")
 public class UsersApi extends AbstractXnatRestApi {
     private static final Logger _log = LoggerFactory.getLogger(UsersApi.class);
@@ -169,7 +170,7 @@ public class UsersApi extends AbstractXnatRestApi {
     }
 
     @ApiOperation(value = "Sets the user's verified state.", notes = "Sets the verified state of the user with the specified user ID to the value of the flag parameter.", response = Boolean.class)
-    @ApiResponses({@ApiResponse(code = 200, message = "User verified status successfully set."), @ApiResponse(code = 401, message = "Must be authenticated to access the XNAT REST API."), @ApiResponse(code = 403, message = "Not authorized to verify or unverify this user."), @ApiResponse(code = 404, message = "User not found."), @ApiResponse(code = 500, message = "Unexpected error")})
+    @ApiResponses({@ApiResponse(code = 200, message = "User verified status successfully set."), @ApiResponse(code = 401, message = "Must be authenticated to access the XNAT REST API."), @ApiResponse(code = 403, message = "Not authorized to verify or un-verify this user."), @ApiResponse(code = 404, message = "User not found."), @ApiResponse(code = 500, message = "Unexpected error")})
     @RequestMapping(value = {"/{id}/verified/{flag}"}, produces = {"application/json"}, method = {RequestMethod.PUT})
     public ResponseEntity<Boolean> usersIdVerifiedFlagPut(@ApiParam(value = "ID of the user to fetch", required = true) @PathVariable("id") String id, @ApiParam(value = "The value to set for the verified status.", required = true) @PathVariable("flag") Boolean flag) {
         HttpStatus status = isPermitted(id);
diff --git a/src/main/java/org/nrg/xnat/actions/postArchive/ClearStudyRoutingAction.java b/src/main/java/org/nrg/xnat/actions/postArchive/ClearStudyRoutingAction.java
index b48a1921..27f21566 100644
--- a/src/main/java/org/nrg/xnat/actions/postArchive/ClearStudyRoutingAction.java
+++ b/src/main/java/org/nrg/xnat/actions/postArchive/ClearStudyRoutingAction.java
@@ -2,7 +2,7 @@ package org.nrg.xnat.actions.postArchive;
 
 import java.util.Map;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.XDAT;
 import org.nrg.xdat.om.XnatImagesessiondata;
 import org.nrg.xdat.services.StudyRoutingService;
diff --git a/src/main/java/org/nrg/xnat/archive/GradualDicomImporter.java b/src/main/java/org/nrg/xnat/archive/GradualDicomImporter.java
index f1cfb0c0..ffa912bf 100644
--- a/src/main/java/org/nrg/xnat/archive/GradualDicomImporter.java
+++ b/src/main/java/org/nrg/xnat/archive/GradualDicomImporter.java
@@ -18,8 +18,8 @@ import net.sf.ehcache.CacheManager;
 import net.sf.ehcache.Element;
 import net.sf.ehcache.config.CacheConfiguration;
 import net.sf.ehcache.config.PersistenceConfiguration;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.time.DateUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.time.DateUtils;
 import org.dcm4che2.data.*;
 import org.dcm4che2.io.DicomInputStream;
 import org.dcm4che2.io.DicomOutputStream;
diff --git a/src/main/java/org/nrg/xnat/archive/PrearcSessionArchiver.java b/src/main/java/org/nrg/xnat/archive/PrearcSessionArchiver.java
index 33f1df82..f218a6dd 100644
--- a/src/main/java/org/nrg/xnat/archive/PrearcSessionArchiver.java
+++ b/src/main/java/org/nrg/xnat/archive/PrearcSessionArchiver.java
@@ -12,8 +12,8 @@ package org.nrg.xnat.archive;
 
 import com.google.common.collect.Lists;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.BooleanUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ClientException;
 import org.nrg.action.ServerException;
 import org.nrg.dicomtools.filters.DicomFilterService;
diff --git a/src/main/java/org/nrg/xnat/archive/PrearcSessionValidator.java b/src/main/java/org/nrg/xnat/archive/PrearcSessionValidator.java
index f3518c83..24ad218f 100644
--- a/src/main/java/org/nrg/xnat/archive/PrearcSessionValidator.java
+++ b/src/main/java/org/nrg/xnat/archive/PrearcSessionValidator.java
@@ -15,7 +15,7 @@ import java.io.IOException;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ClientException;
 import org.nrg.action.ServerException;
 import org.nrg.xdat.model.XnatImagescandataI;
diff --git a/src/main/java/org/nrg/xnat/configuration/WebConfig.java b/src/main/java/org/nrg/xnat/configuration/WebConfig.java
index d2e4900f..297f294b 100644
--- a/src/main/java/org/nrg/xnat/configuration/WebConfig.java
+++ b/src/main/java/org/nrg/xnat/configuration/WebConfig.java
@@ -1,5 +1,6 @@
 package org.nrg.xnat.configuration;
 
+import org.nrg.framework.annotations.XapiRestController;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.context.MessageSource;
@@ -29,10 +30,8 @@ import springfox.documentation.swagger2.annotations.EnableSwagger2;
 public class WebConfig extends WebMvcConfigurerAdapter {
     @Override
     public void addResourceHandlers(ResourceHandlerRegistry registry) {
-        registry.addResourceHandler("**/swagger-ui.html")
-                .addResourceLocations("classpath:/META-INF/resources/");
-        registry.addResourceHandler("/webjars/**")
-                .addResourceLocations("classpath:/META-INF/resources/webjars/");
+        registry.addResourceHandler("**/swagger-ui.html").addResourceLocations("classpath:/META-INF/resources/");
+        registry.addResourceHandler("/webjars/**").addResourceLocations("classpath:/META-INF/resources/webjars/");
     }
 
     @Bean
@@ -43,10 +42,10 @@ public class WebConfig extends WebMvcConfigurerAdapter {
     @Bean
     public ViewResolver viewResolver() {
         return new InternalResourceViewResolver() {{
-                setViewClass(JstlView.class);
-                setPrefix("/WEB-INF/views/");
-                setSuffix(".jsp");
-            }};
+            setViewClass(JstlView.class);
+            setPrefix("/WEB-INF/views/");
+            setSuffix(".jsp");
+        }};
     }
 
     @Bean
@@ -59,23 +58,11 @@ public class WebConfig extends WebMvcConfigurerAdapter {
     @Bean
     public Docket api() {
         _log.debug("Initializing the Swagger Docket object");
-        return new Docket(DocumentationType.SWAGGER_2)
-                .select()
-                .apis(RequestHandlerSelectors.basePackage("org.nrg.xapi.rest"))
-                .paths(PathSelectors.any())
-                .build()
-                .apiInfo(apiInfo());
+        return new Docket(DocumentationType.SWAGGER_2).select().apis(RequestHandlerSelectors.withClassAnnotation(XapiRestController.class)).paths(PathSelectors.any()).build().apiInfo(apiInfo());
     }
 
     private ApiInfo apiInfo() {
-        return new ApiInfo(
-                "XNAT REST API",
-                "The XNAT REST API (XAPI) functions provide remote programmatic access to XNAT internal functions.",
-                "1.7.0",
-                "http://www.xnat.org",
-                "info@xnat.org",
-                "Simplified 2-Clause BSD",
-                "API license URL");
+        return new ApiInfo("XNAT REST API", "The XNAT REST API (XAPI) functions provide access to XNAT internal functions for remote clients.", "1.7.0", "http://www.xnat.org", "info@xnat.org", "Simplified 2-Clause BSD", "API license URL");
     }
 
     private static final Logger _log = LoggerFactory.getLogger(WebConfig.class);
diff --git a/src/main/java/org/nrg/xnat/event/listeners/AutomatedScriptHandler.java b/src/main/java/org/nrg/xnat/event/listeners/AutomatedScriptHandler.java
index 2d9a5b9c..3102d310 100755
--- a/src/main/java/org/nrg/xnat/event/listeners/AutomatedScriptHandler.java
+++ b/src/main/java/org/nrg/xnat/event/listeners/AutomatedScriptHandler.java
@@ -6,7 +6,7 @@ import reactor.bus.Event;
 import reactor.bus.EventBus;
 import reactor.fn.Consumer;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.automation.entities.Script;
 import org.nrg.automation.services.ScriptRunnerService;
 import org.nrg.framework.constants.Scope;
diff --git a/src/main/java/org/nrg/xnat/event/listeners/PipelineEmailHandlerAbst.java b/src/main/java/org/nrg/xnat/event/listeners/PipelineEmailHandlerAbst.java
index f6284204..2a6ef18f 100644
--- a/src/main/java/org/nrg/xnat/event/listeners/PipelineEmailHandlerAbst.java
+++ b/src/main/java/org/nrg/xnat/event/listeners/PipelineEmailHandlerAbst.java
@@ -3,8 +3,8 @@ package org.nrg.xnat.event.listeners;
 import com.fasterxml.jackson.core.type.TypeReference;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.xmlbeans.XmlException;
 import org.nrg.pipeline.xmlbeans.AllResolvedStepsDocument;
 import org.nrg.pipeline.xmlbeans.ParameterData;
diff --git a/src/main/java/org/nrg/xnat/event/listeners/WorkflowStatusEventHandlerAbst.java b/src/main/java/org/nrg/xnat/event/listeners/WorkflowStatusEventHandlerAbst.java
index f5860b8c..fddc98c0 100644
--- a/src/main/java/org/nrg/xnat/event/listeners/WorkflowStatusEventHandlerAbst.java
+++ b/src/main/java/org/nrg/xnat/event/listeners/WorkflowStatusEventHandlerAbst.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.event.listeners;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.nrg.xft.event.WorkflowStatusEvent;
 import org.nrg.xft.event.persist.PersistentWorkflowUtils;
diff --git a/src/main/java/org/nrg/xnat/helpers/PrearcImporterHelper.java b/src/main/java/org/nrg/xnat/helpers/PrearcImporterHelper.java
index 8c3db38b..90ffa81b 100644
--- a/src/main/java/org/nrg/xnat/helpers/PrearcImporterHelper.java
+++ b/src/main/java/org/nrg/xnat/helpers/PrearcImporterHelper.java
@@ -16,7 +16,7 @@ import java.util.ArrayList;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.nrg.action.ActionException;
 import org.nrg.action.ClientException;
diff --git a/src/main/java/org/nrg/xnat/helpers/dicom/DicomHeaderDump.java b/src/main/java/org/nrg/xnat/helpers/dicom/DicomHeaderDump.java
index 4feb8ece..87f9ef93 100644
--- a/src/main/java/org/nrg/xnat/helpers/dicom/DicomHeaderDump.java
+++ b/src/main/java/org/nrg/xnat/helpers/dicom/DicomHeaderDump.java
@@ -11,7 +11,7 @@
 package org.nrg.xnat.helpers.dicom;
 
 import com.google.common.collect.ImmutableMap;
-import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang3.StringEscapeUtils;
 import org.dcm4che2.data.DicomElement;
 import org.dcm4che2.data.DicomObject;
 import org.dcm4che2.data.DicomObjectToStringParam;
@@ -130,7 +130,7 @@ public final class DicomHeaderDump {
     }
 
     public static String escapeHTML(String o){
-        return (o==null)?null: StringEscapeUtils.escapeHtml(o);
+        return (o==null)?null: StringEscapeUtils.escapeHtml4(o);
     }
 
     /**
diff --git a/src/main/java/org/nrg/xnat/helpers/merge/MergeCatCatalog.java b/src/main/java/org/nrg/xnat/helpers/merge/MergeCatCatalog.java
index dbc08e44..f65223de 100644
--- a/src/main/java/org/nrg/xnat/helpers/merge/MergeCatCatalog.java
+++ b/src/main/java/org/nrg/xnat/helpers/merge/MergeCatCatalog.java
@@ -14,7 +14,7 @@
  */
 package org.nrg.xnat.helpers.merge;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.bean.CatEntryBean;
 import org.nrg.xdat.model.CatCatalogI;
 import org.nrg.xdat.model.CatDcmentryI;
diff --git a/src/main/java/org/nrg/xnat/helpers/merge/MergeUtils.java b/src/main/java/org/nrg/xnat/helpers/merge/MergeUtils.java
index 4e99832c..feeaf096 100644
--- a/src/main/java/org/nrg/xnat/helpers/merge/MergeUtils.java
+++ b/src/main/java/org/nrg/xnat/helpers/merge/MergeUtils.java
@@ -12,7 +12,7 @@ package org.nrg.xnat.helpers.merge;
 
 import com.google.common.base.Predicate;
 import com.google.common.collect.Iterables;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.model.XnatImagescandataI;
 import org.nrg.xdat.model.XnatResourceI;
diff --git a/src/main/java/org/nrg/xnat/helpers/merge/SessionOverwriteCheck.java b/src/main/java/org/nrg/xnat/helpers/merge/SessionOverwriteCheck.java
index fc67bf8f..d6db6de5 100644
--- a/src/main/java/org/nrg/xnat/helpers/merge/SessionOverwriteCheck.java
+++ b/src/main/java/org/nrg/xnat/helpers/merge/SessionOverwriteCheck.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.merge;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.bean.CatCatalogBean;
 import org.nrg.xdat.model.*;
 import org.nrg.xft.event.EventMetaI;
diff --git a/src/main/java/org/nrg/xnat/helpers/prearchive/DatabaseSession.java b/src/main/java/org/nrg/xnat/helpers/prearchive/DatabaseSession.java
index b6946e6f..c0ce5946 100644
--- a/src/main/java/org/nrg/xnat/helpers/prearchive/DatabaseSession.java
+++ b/src/main/java/org/nrg/xnat/helpers/prearchive/DatabaseSession.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.prearchive;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 import java.sql.PreparedStatement;
 import java.sql.ResultSet;
diff --git a/src/main/java/org/nrg/xnat/helpers/prearchive/FileSystemSessionTrawler.java b/src/main/java/org/nrg/xnat/helpers/prearchive/FileSystemSessionTrawler.java
index 7bb8f40e..b79ef8e6 100644
--- a/src/main/java/org/nrg/xnat/helpers/prearchive/FileSystemSessionTrawler.java
+++ b/src/main/java/org/nrg/xnat/helpers/prearchive/FileSystemSessionTrawler.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.prearchive;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.om.XnatProjectdata;
 import org.nrg.xdat.turbine.utils.AdminUtils;
 import org.slf4j.Logger;
diff --git a/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcDatabase.java b/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcDatabase.java
index 29c48d48..859f2858 100644
--- a/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcDatabase.java
+++ b/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcDatabase.java
@@ -14,7 +14,7 @@ import com.fasterxml.jackson.core.JsonFactory;
 import com.google.common.base.Strings;
 import com.google.common.collect.Maps;
 import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ClientException;
 import org.nrg.automation.entities.Script;
 import org.nrg.automation.services.ScriptService;
diff --git a/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcTableBuilder.java b/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcTableBuilder.java
index 0acdc799..816eb750 100644
--- a/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcTableBuilder.java
+++ b/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcTableBuilder.java
@@ -14,7 +14,7 @@
  */
 package org.nrg.xnat.helpers.prearchive;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.framework.constants.PrearchiveCode;
 import org.nrg.xdat.bean.XnatImagesessiondataBean;
 import org.nrg.xdat.bean.reader.XDATXMLReader;
diff --git a/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcUriParserUtils.java b/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcUriParserUtils.java
index 616af5c6..e83ae009 100644
--- a/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcUriParserUtils.java
+++ b/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcUriParserUtils.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.prearchive;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.restlet.data.CharacterSet;
 import org.restlet.data.Form;
 import org.restlet.data.Reference;
diff --git a/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcUtils.java b/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcUtils.java
index 37aadd0b..61a3cf53 100644
--- a/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcUtils.java
+++ b/src/main/java/org/nrg/xnat/helpers/prearchive/PrearcUtils.java
@@ -13,7 +13,7 @@ package org.nrg.xnat.helpers.prearchive;
 import com.google.common.collect.Lists;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.filefilter.DirectoryFileFilter;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.config.entities.Configuration;
 import org.nrg.framework.constants.Scope;
 import org.nrg.xdat.XDAT;
diff --git a/src/main/java/org/nrg/xnat/helpers/prearchive/SessionXMLRebuilder.java b/src/main/java/org/nrg/xnat/helpers/prearchive/SessionXMLRebuilder.java
index e27d1bf6..88c0f5ec 100644
--- a/src/main/java/org/nrg/xnat/helpers/prearchive/SessionXMLRebuilder.java
+++ b/src/main/java/org/nrg/xnat/helpers/prearchive/SessionXMLRebuilder.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.prearchive;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.XDAT;
 import org.nrg.xft.exception.InvalidPermissionException;
 import org.nrg.xft.security.UserI;
diff --git a/src/main/java/org/nrg/xnat/helpers/prearchive/handlers/PrearchiveMoveHandler.java b/src/main/java/org/nrg/xnat/helpers/prearchive/handlers/PrearchiveMoveHandler.java
index 4241f868..95dfd857 100644
--- a/src/main/java/org/nrg/xnat/helpers/prearchive/handlers/PrearchiveMoveHandler.java
+++ b/src/main/java/org/nrg/xnat/helpers/prearchive/handlers/PrearchiveMoveHandler.java
@@ -1,6 +1,6 @@
 package org.nrg.xnat.helpers.prearchive.handlers;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.XDAT;
 import org.nrg.xdat.bean.XnatImagesessiondataBean;
 import org.nrg.xdat.bean.XnatPetmrsessiondataBean;
diff --git a/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectAssessResourceImpl.java b/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectAssessResourceImpl.java
index d3daa424..d16844cf 100644
--- a/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectAssessResourceImpl.java
+++ b/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectAssessResourceImpl.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.resource.direct;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatImageassessordata;
 import org.nrg.xdat.om.XnatImagesessiondata;
diff --git a/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectExptResourceImpl.java b/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectExptResourceImpl.java
index a760d183..1a75ead4 100644
--- a/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectExptResourceImpl.java
+++ b/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectExptResourceImpl.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.resource.direct;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.base.BaseElement;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.*;
diff --git a/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectProjResourceImpl.java b/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectProjResourceImpl.java
index 84c0932e..2eae3f91 100644
--- a/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectProjResourceImpl.java
+++ b/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectProjResourceImpl.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.resource.direct;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.base.BaseElement;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatExperimentdata;
diff --git a/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectReconResourceImpl.java b/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectReconResourceImpl.java
index 6f9b126a..542c94bc 100644
--- a/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectReconResourceImpl.java
+++ b/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectReconResourceImpl.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.resource.direct;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatImagesessiondata;
 import org.nrg.xdat.om.XnatProjectdata;
diff --git a/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectScanResourceImpl.java b/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectScanResourceImpl.java
index 6082b53a..e2ed3d08 100644
--- a/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectScanResourceImpl.java
+++ b/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectScanResourceImpl.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.resource.direct;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatImagescandata;
 import org.nrg.xdat.om.XnatImagesessiondata;
diff --git a/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectSubjResourceImpl.java b/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectSubjResourceImpl.java
index 3d0eea14..8b7886bd 100644
--- a/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectSubjResourceImpl.java
+++ b/src/main/java/org/nrg/xnat/helpers/resource/direct/DirectSubjResourceImpl.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.resource.direct;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatProjectdata;
 import org.nrg.xdat.om.XnatResource;
diff --git a/src/main/java/org/nrg/xnat/helpers/resource/direct/ResourceModifierA.java b/src/main/java/org/nrg/xnat/helpers/resource/direct/ResourceModifierA.java
index 3f1bb9b7..d54d43d9 100644
--- a/src/main/java/org/nrg/xnat/helpers/resource/direct/ResourceModifierA.java
+++ b/src/main/java/org/nrg/xnat/helpers/resource/direct/ResourceModifierA.java
@@ -15,7 +15,7 @@ import java.util.Calendar;
 import java.util.Date;
 import java.util.List;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.bean.CatCatalogBean;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatAbstractresource;
diff --git a/src/main/java/org/nrg/xnat/helpers/transactions/TransactionUtils.java b/src/main/java/org/nrg/xnat/helpers/transactions/TransactionUtils.java
index 7f5a2bde..616d1f89 100644
--- a/src/main/java/org/nrg/xnat/helpers/transactions/TransactionUtils.java
+++ b/src/main/java/org/nrg/xnat/helpers/transactions/TransactionUtils.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.transactions;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 
 public class TransactionUtils {
 	
diff --git a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptAssessorURI.java b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptAssessorURI.java
index ef905737..65b61151 100644
--- a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptAssessorURI.java
+++ b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptAssessorURI.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.uri.archive.impl;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatExperimentdata;
 import org.nrg.xdat.om.XnatImageassessordata;
diff --git a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptReconURI.java b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptReconURI.java
index c480c101..71c47857 100644
--- a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptReconURI.java
+++ b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptReconURI.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.uri.archive.impl;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatExperimentdata;
 import org.nrg.xdat.om.XnatImagesessiondata;
diff --git a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptScanURI.java b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptScanURI.java
index 3343d18a..7a93fb0c 100644
--- a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptScanURI.java
+++ b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptScanURI.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.uri.archive.impl;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatExperimentdata;
 import org.nrg.xdat.om.XnatImagescandata;
diff --git a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptURI.java b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptURI.java
index a28d8a0c..8917e48a 100644
--- a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptURI.java
+++ b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesExptURI.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.uri.archive.impl;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatExperimentdata;
 import org.nrg.xdat.om.XnatProjectdata;
diff --git a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjAssExptURI.java b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjAssExptURI.java
index 7d2f0fac..9360bf38 100644
--- a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjAssExptURI.java
+++ b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjAssExptURI.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.uri.archive.impl;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatExperimentdata;
 import org.nrg.xdat.om.XnatImageassessordata;
diff --git a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjAssReconURI.java b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjAssReconURI.java
index 79f8b155..f7872ff2 100644
--- a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjAssReconURI.java
+++ b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjAssReconURI.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.uri.archive.impl;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatReconstructedimagedata;
 import org.nrg.xnat.helpers.uri.URIManager;
diff --git a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjAssScanURI.java b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjAssScanURI.java
index e0212e56..7f705940 100644
--- a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjAssScanURI.java
+++ b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjAssScanURI.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.uri.archive.impl;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatImagescandata;
 import org.nrg.xdat.om.XnatImagesessiondata;
diff --git a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjExptURI.java b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjExptURI.java
index b4568dd8..383a62da 100644
--- a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjExptURI.java
+++ b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjExptURI.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.uri.archive.impl;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatExperimentdata;
 import org.nrg.xdat.om.XnatProjectdata;
diff --git a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjURI.java b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjURI.java
index 60d16d66..0b3c0136 100644
--- a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjURI.java
+++ b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjSubjURI.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.uri.archive.impl;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatProjectdata;
 import org.nrg.xdat.om.XnatSubjectdata;
diff --git a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjURI.java b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjURI.java
index b6e0f147..43aa1242 100644
--- a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjURI.java
+++ b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesProjURI.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.uri.archive.impl;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatProjectdata;
 import org.nrg.xnat.helpers.uri.URIManager;
diff --git a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesSubjURI.java b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesSubjURI.java
index dd2d1c0a..7214ff9c 100644
--- a/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesSubjURI.java
+++ b/src/main/java/org/nrg/xnat/helpers/uri/archive/impl/ResourcesSubjURI.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.helpers.uri.archive.impl;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.model.XnatAbstractresourceI;
 import org.nrg.xdat.om.XnatProjectdata;
 import org.nrg.xdat.om.XnatSubjectdata;
diff --git a/src/main/java/org/nrg/xnat/itemBuilders/FileHistoryBuilderAbst.java b/src/main/java/org/nrg/xnat/itemBuilders/FileHistoryBuilderAbst.java
index 19f3846c..f097286f 100644
--- a/src/main/java/org/nrg/xnat/itemBuilders/FileHistoryBuilderAbst.java
+++ b/src/main/java/org/nrg/xnat/itemBuilders/FileHistoryBuilderAbst.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.itemBuilders;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.nrg.xdat.om.XnatResourcecatalog;
 import org.nrg.xft.XFTItem;
diff --git a/src/main/java/org/nrg/xnat/itemBuilders/FileSummaryBuilder.java b/src/main/java/org/nrg/xnat/itemBuilders/FileSummaryBuilder.java
index b4bca498..1fcdd64d 100644
--- a/src/main/java/org/nrg/xnat/itemBuilders/FileSummaryBuilder.java
+++ b/src/main/java/org/nrg/xnat/itemBuilders/FileSummaryBuilder.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.itemBuilders;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.om.XnatResourcecatalog;
 import org.nrg.xft.XFTItem;
 import org.nrg.xft.presentation.FlattenedItem.FlattenedItemModifierI;
diff --git a/src/main/java/org/nrg/xnat/restlet/XNATApplication.java b/src/main/java/org/nrg/xnat/restlet/XNATApplication.java
index 64cd2074..3d3cda9a 100755
--- a/src/main/java/org/nrg/xnat/restlet/XNATApplication.java
+++ b/src/main/java/org/nrg/xnat/restlet/XNATApplication.java
@@ -11,7 +11,7 @@
 package org.nrg.xnat.restlet;
 
 import com.google.common.base.Joiner;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import org.nrg.config.exceptions.ConfigServiceException;
 import org.nrg.framework.exceptions.NrgServiceRuntimeException;
diff --git a/src/main/java/org/nrg/xnat/restlet/actions/AutomationBasedImporter.java b/src/main/java/org/nrg/xnat/restlet/actions/AutomationBasedImporter.java
index 90207e1a..0cd57f8a 100644
--- a/src/main/java/org/nrg/xnat/restlet/actions/AutomationBasedImporter.java
+++ b/src/main/java/org/nrg/xnat/restlet/actions/AutomationBasedImporter.java
@@ -27,7 +27,7 @@ import com.google.common.collect.Maps;
 
 import java.util.concurrent.Callable;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.exception.ExceptionUtils;
 import org.apache.log4j.Logger;
 import org.nrg.action.ClientException;
diff --git a/src/main/java/org/nrg/xnat/restlet/actions/PrearcImporterA.java b/src/main/java/org/nrg/xnat/restlet/actions/PrearcImporterA.java
index 3734086b..c3751a6c 100644
--- a/src/main/java/org/nrg/xnat/restlet/actions/PrearcImporterA.java
+++ b/src/main/java/org/nrg/xnat/restlet/actions/PrearcImporterA.java
@@ -19,7 +19,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Callable;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.nrg.action.ActionException;
 import org.nrg.action.ClientException;
diff --git a/src/main/java/org/nrg/xnat/restlet/actions/SessionImporter.java b/src/main/java/org/nrg/xnat/restlet/actions/SessionImporter.java
index 35c00393..415d8020 100644
--- a/src/main/java/org/nrg/xnat/restlet/actions/SessionImporter.java
+++ b/src/main/java/org/nrg/xnat/restlet/actions/SessionImporter.java
@@ -18,7 +18,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.concurrent.Callable;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.nrg.action.ActionException;
 import org.nrg.action.ClientException;
diff --git a/src/main/java/org/nrg/xnat/restlet/actions/importer/ImporterHandlerA.java b/src/main/java/org/nrg/xnat/restlet/actions/importer/ImporterHandlerA.java
index 3c497ce3..e84358d0 100644
--- a/src/main/java/org/nrg/xnat/restlet/actions/importer/ImporterHandlerA.java
+++ b/src/main/java/org/nrg/xnat/restlet/actions/importer/ImporterHandlerA.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.restlet.actions.importer;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.nrg.action.ClientException;
 import org.nrg.action.ServerException;
diff --git a/src/main/java/org/nrg/xnat/restlet/extensions/AuthenticationRestlet.java b/src/main/java/org/nrg/xnat/restlet/extensions/AuthenticationRestlet.java
index 9251919e..a93c308c 100644
--- a/src/main/java/org/nrg/xnat/restlet/extensions/AuthenticationRestlet.java
+++ b/src/main/java/org/nrg/xnat/restlet/extensions/AuthenticationRestlet.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.restlet.extensions;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.nrg.xdat.XDAT;
diff --git a/src/main/java/org/nrg/xnat/restlet/extensions/PipelineDetailsRestlet.java b/src/main/java/org/nrg/xnat/restlet/extensions/PipelineDetailsRestlet.java
index 117eb76a..21d2c567 100644
--- a/src/main/java/org/nrg/xnat/restlet/extensions/PipelineDetailsRestlet.java
+++ b/src/main/java/org/nrg/xnat/restlet/extensions/PipelineDetailsRestlet.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.restlet.extensions;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.pipeline.PipelineRepositoryManager;
 import org.nrg.pipeline.utils.PipelineFileUtils;
 import org.nrg.pipeline.xmlbeans.PipelineData;
diff --git a/src/main/java/org/nrg/xnat/restlet/extensions/ScanQualityLabelRestlet.java b/src/main/java/org/nrg/xnat/restlet/extensions/ScanQualityLabelRestlet.java
index 46755a18..a0f6977f 100644
--- a/src/main/java/org/nrg/xnat/restlet/extensions/ScanQualityLabelRestlet.java
+++ b/src/main/java/org/nrg/xnat/restlet/extensions/ScanQualityLabelRestlet.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.restlet.extensions;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.json.JSONException;
 import org.json.JSONObject;
 import org.nrg.xnat.restlet.XnatRestlet;
diff --git a/src/main/java/org/nrg/xnat/restlet/extensions/SendEmailVerification.java b/src/main/java/org/nrg/xnat/restlet/extensions/SendEmailVerification.java
index ae4d241e..55a3fdd7 100644
--- a/src/main/java/org/nrg/xnat/restlet/extensions/SendEmailVerification.java
+++ b/src/main/java/org/nrg/xnat/restlet/extensions/SendEmailVerification.java
@@ -10,15 +10,10 @@
  */
 package org.nrg.xnat.restlet.extensions;
 
-import java.util.Date;
-import java.util.List;
-
-import org.apache.commons.lang.StringEscapeUtils;
 import org.nrg.mail.services.EmailRequestLogService;
 import org.nrg.xdat.XDAT;
 import org.nrg.xdat.security.helpers.Users;
 import org.nrg.xdat.turbine.utils.AdminUtils;
-import org.nrg.xft.ItemI;
 import org.nrg.xft.security.UserI;
 import org.nrg.xnat.restlet.XnatRestlet;
 import org.nrg.xnat.restlet.resources.SecureResource;
@@ -30,6 +25,9 @@ import org.restlet.data.Status;
 import org.restlet.resource.Resource;
 import org.restlet.resource.Variant;
 
+import java.util.Date;
+import java.util.List;
+
 @XnatRestlet(value = {"/services/sendEmailVerification"}, secure = false)
 public class SendEmailVerification extends Resource {
 
@@ -55,7 +53,7 @@ public class SendEmailVerification extends Resource {
              }
              
              // Send email and log request.
-             AdminUtils.sendNewUserVerificationEmail(getXDATUser(StringEscapeUtils.escapeSql(email)));
+             AdminUtils.sendNewUserVerificationEmail(getXDATUser(email));
              requests.logEmailRequest(email, new Date ());
           }
           catch(ExceededRequestsException e){
diff --git a/src/main/java/org/nrg/xnat/restlet/extensions/SessionCountRestlet.java b/src/main/java/org/nrg/xnat/restlet/extensions/SessionCountRestlet.java
index ffbfce96..dadb93ed 100644
--- a/src/main/java/org/nrg/xnat/restlet/extensions/SessionCountRestlet.java
+++ b/src/main/java/org/nrg/xnat/restlet/extensions/SessionCountRestlet.java
@@ -12,7 +12,7 @@ package org.nrg.xnat.restlet.extensions;
 
 import java.util.List;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.nrg.xdat.XDAT;
diff --git a/src/main/java/org/nrg/xnat/restlet/extensions/StudyRoutingRestlet.java b/src/main/java/org/nrg/xnat/restlet/extensions/StudyRoutingRestlet.java
index ca58a9ff..fbbb4e67 100644
--- a/src/main/java/org/nrg/xnat/restlet/extensions/StudyRoutingRestlet.java
+++ b/src/main/java/org/nrg/xnat/restlet/extensions/StudyRoutingRestlet.java
@@ -12,7 +12,7 @@ package org.nrg.xnat.restlet.extensions;
 
 import java.util.Map;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.XDAT;
 import org.nrg.xdat.security.SecurityManager;
 import org.nrg.xdat.security.helpers.Permissions;
diff --git a/src/main/java/org/nrg/xnat/restlet/extensions/UserRolesRestlet.java b/src/main/java/org/nrg/xnat/restlet/extensions/UserRolesRestlet.java
index bcbe08b9..ebc9829b 100644
--- a/src/main/java/org/nrg/xnat/restlet/extensions/UserRolesRestlet.java
+++ b/src/main/java/org/nrg/xnat/restlet/extensions/UserRolesRestlet.java
@@ -4,7 +4,7 @@ import java.util.Collection;
 import java.util.Hashtable;
 import java.util.List;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.nrg.xdat.om.XdatRoleType;
 import org.nrg.xdat.security.helpers.Roles;
diff --git a/src/main/java/org/nrg/xnat/restlet/extensions/UserSettingsRestlet.java b/src/main/java/org/nrg/xnat/restlet/extensions/UserSettingsRestlet.java
index c0e44743..ff5da74b 100644
--- a/src/main/java/org/nrg/xnat/restlet/extensions/UserSettingsRestlet.java
+++ b/src/main/java/org/nrg/xnat/restlet/extensions/UserSettingsRestlet.java
@@ -12,7 +12,7 @@ package org.nrg.xnat.restlet.extensions;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.databind.JsonNode;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.nrg.mail.services.EmailRequestLogService;
diff --git a/src/main/java/org/nrg/xnat/restlet/extensions/WorkflowsRestlet.java b/src/main/java/org/nrg/xnat/restlet/extensions/WorkflowsRestlet.java
index a0323c14..7e48694e 100644
--- a/src/main/java/org/nrg/xnat/restlet/extensions/WorkflowsRestlet.java
+++ b/src/main/java/org/nrg/xnat/restlet/extensions/WorkflowsRestlet.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.restlet.extensions;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.om.WrkWorkflowdata;
 import org.nrg.xdat.om.XnatExperimentdata;
 import org.nrg.xdat.turbine.utils.PopulateItem;
diff --git a/src/main/java/org/nrg/xnat/restlet/files/utils/RestFileUtils.java b/src/main/java/org/nrg/xnat/restlet/files/utils/RestFileUtils.java
index 2f9a8268..e790ad93 100644
--- a/src/main/java/org/nrg/xnat/restlet/files/utils/RestFileUtils.java
+++ b/src/main/java/org/nrg/xnat/restlet/files/utils/RestFileUtils.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.restlet.files.utils;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.om.*;
 
 import java.io.File;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/AutomationResource.java b/src/main/java/org/nrg/xnat/restlet/resources/AutomationResource.java
index c0d62b29..125a6171 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/AutomationResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/AutomationResource.java
@@ -1,6 +1,6 @@
 package org.nrg.xnat.restlet.resources;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.http.NameValuePair;
 import org.apache.http.client.utils.URLEncodedUtils;
 import org.nrg.action.ServerException;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ConfigResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ConfigResource.java
index f24d5ab9..385f97f3 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ConfigResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ConfigResource.java
@@ -12,7 +12,7 @@ package org.nrg.xnat.restlet.resources;
 
 import org.apache.commons.fileupload.FileUploadException;
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ClientException;
 import org.nrg.config.entities.Configuration;
 import org.nrg.config.exceptions.ConfigServiceException;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/EventResource.java b/src/main/java/org/nrg/xnat/restlet/resources/EventResource.java
index 928689f8..3c1fa839 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/EventResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/EventResource.java
@@ -1,6 +1,6 @@
 package org.nrg.xnat.restlet.resources;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.http.NameValuePair;
 import org.apache.http.client.utils.URLEncodedUtils;
 import org.hibernate.HibernateException;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ExperimentResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ExperimentResource.java
index 9b4c07ee..6f02c0c8 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ExperimentResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ExperimentResource.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.restlet.resources;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.transaction.TransactionException;
 import org.nrg.xdat.base.BaseElement;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ExptAssessmentResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ExptAssessmentResource.java
index 5e784d5c..3434d2f2 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ExptAssessmentResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ExptAssessmentResource.java
@@ -68,7 +68,7 @@ public class ExptAssessmentResource extends ItemResource {
 
 		String assessedID= (String)getParameter(request,"ASSESSED_ID");
 		if(assessedID!=null){
-			if(assesed==null && assessedID!=null){
+			if(assesed == null){
 				assesed = XnatExperimentdata.getXnatExperimentdatasById(assessedID, user, false);
 				if (assesed != null && (proj != null && !assesed.hasProject(proj.getId()))) {
 					assesed = null;
@@ -93,8 +93,8 @@ public class ExptAssessmentResource extends ItemResource {
 				this.getVariants().add(new Variant(MediaType.TEXT_HTML));
 				this.getVariants().add(new Variant(MediaType.TEXT_XML));
 			}
-		}else{
-			response.setStatus(Status.CLIENT_ERROR_NOT_FOUND,"Unable to find assessed experiment '" + TurbineUtils.escapeParam(assessedID) + "'");
+		} else {
+			response.setStatus(Status.CLIENT_ERROR_NOT_FOUND, "Unable to find assessed experiment, no ID submitted or found.");
 		}
 
 		this.fieldMapping.putAll(XMLPathShortcuts.getInstance().getShortcuts(XMLPathShortcuts.DERIVED_DATA,false));
@@ -108,15 +108,13 @@ public class ExptAssessmentResource extends ItemResource {
 
 	@Override
 	public void handlePut() {
-		XFTItem item = null;
-
 		try {
 			XFTItem template=null;
 			if (existing!=null && !this.isQueryVariableTrue("allowDataDeletion")){
 				template=existing.getItem().getCurrentDBVersion();
 			}
 
-			item=this.loadItem(null,true,template);
+			XFTItem item=this.loadItem(null,true,template);
 
 			if(item==null){
 				String xsiType=this.getQueryVariable("xsiType");
@@ -150,7 +148,7 @@ public class ExptAssessmentResource extends ItemResource {
 								if(pp.getProject().equals(newProject.getId())){
 									matched=(XnatExperimentdataShare)pp;
 									if(newLabel!=null && !pp.getLabel().equals(newLabel)){
-										((XnatExperimentdataShare)pp).setLabel(newLabel);
+										pp.setLabel(newLabel);
 										BaseXnatExperimentdata.SaveSharedProject((XnatExperimentdataShare)pp, assessor, user,newEventInstance(EventUtils.CATEGORY.DATA,(getAction()!=null)?getAction():EventUtils.RENAME_IN_SHARED_PROJECT));
 									}
 									break;
@@ -188,12 +186,12 @@ public class ExptAssessmentResource extends ItemResource {
 									}
 
 									if(Permissions.canCreate(user, assessor.getXSIType()+"/project", newProject.getId())){
-										XnatExperimentdataShare pp= new XnatExperimentdataShare((UserI)user);
+										XnatExperimentdataShare pp= new XnatExperimentdataShare(user);
 										pp.setProject(newProject.getId());
 										if(newLabel!=null)pp.setLabel(newLabel);
 										pp.setProperty("sharing_share_xnat_experimentda_id", assessor.getId());
 
-										BaseXnatExperimentdata.SaveSharedProject((XnatExperimentdataShare)pp, assessor, user,newEventInstance(EventUtils.CATEGORY.DATA,(getAction()!=null)?getAction():"Shared into additional project"));
+										BaseXnatExperimentdata.SaveSharedProject(pp, assessor, user, newEventInstance(EventUtils.CATEGORY.DATA, (getAction() != null) ? getAction() : "Shared into additional project"));
 									}else{
 										this.getResponse().setStatus(Status.CLIENT_ERROR_FORBIDDEN,"Specified user account has insufficient create privileges for experiments in the " + newProject.getId() + " project.");
 										return;
@@ -207,11 +205,9 @@ public class ExptAssessmentResource extends ItemResource {
 							this.returnDefaultRepresentation();
 						}else{
 							this.getResponse().setStatus(Status.CLIENT_ERROR_NOT_FOUND,"Unable to identify project: " + newProjectS);
-							return;
 						}
 					}else{
 						this.getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
-						return;
 					}
 				}else{
 					if(assessor.getLabel()==null){
@@ -332,18 +328,18 @@ public class ExptAssessmentResource extends ItemResource {
 					}
 
 					//check for unexpected modifications of ID, Project and label
-					if(existing !=null && !org.apache.commons.lang.StringUtils.equals(existing.getId(),assessor.getId())){
+					if(existing !=null && !StringUtils.equals(existing.getId(),assessor.getId())){
 						this.getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST,"ID cannot be modified");
 						return;
 					}
 					
-					if(existing !=null && !org.apache.commons.lang.StringUtils.equals(existing.getProject(),assessor.getProject())){
+					if(existing !=null && !StringUtils.equals(existing.getProject(),assessor.getProject())){
 						this.getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST,"Project must be modified through separate URI.");
 						return;
 					}
 					
 					//MATCHED
-					if(existing !=null && !org.apache.commons.lang.StringUtils.equals(existing.getLabel(),assessor.getLabel())){
+					if(existing !=null && !StringUtils.equals(existing.getLabel(),assessor.getLabel())){
 						this.getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST,"Label must be modified through separate URI.");
 						return;
 					}
@@ -361,7 +357,6 @@ public class ExptAssessmentResource extends ItemResource {
 			this.getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST);
 		} catch (ActionException e) {
 			this.getResponse().setStatus(e.getStatus(),e.getMessage());
-			return;
 		} catch (Exception e) {
 			this.getResponse().setStatus(Status.SERVER_ERROR_INTERNAL);
 			logger.error("",e);
@@ -427,7 +422,6 @@ public class ExptAssessmentResource extends ItemResource {
 				if(msg!=null){
 					WorkflowUtils.fail(wrk, c);
 					this.getResponse().setStatus(Status.CLIENT_ERROR_FORBIDDEN,msg);
-					return;
 				}else{
 					WorkflowUtils.complete(wrk, c);
 				}
@@ -439,12 +433,10 @@ public class ExptAssessmentResource extends ItemResource {
 				}
 				logger.error("",e);
 				this.getResponse().setStatus(Status.SERVER_ERROR_INTERNAL,e.getMessage());
-				return;
 			}
 		} catch (EventRequirementAbsent e1) {
 			logger.error("",e1);
 			this.getResponse().setStatus(Status.CLIENT_ERROR_FORBIDDEN,e1.getMessage());
-			return;
 		}
 	}
 
@@ -462,7 +454,7 @@ public class ExptAssessmentResource extends ItemResource {
 
 		if(assessor!=null){
 			String filepath = this.getRequest().getResourceRef().getRemainingPart();
-			if(filepath!=null && filepath.indexOf("?")>-1){
+			if(filepath!=null && filepath.contains("?")){
 				filepath = filepath.substring(0,filepath.indexOf("?"));
 		}
 
@@ -471,37 +463,37 @@ public class ExptAssessmentResource extends ItemResource {
 			}
 			if(filepath!=null && filepath.equals("status")){
 				return returnStatus(assessor,mt);
-			}else if(filepath!=null && filepath.startsWith("projects")){
+			}else if (filepath != null && filepath.startsWith("projects")) {
 				XFTTable t = new XFTTable();
-				ArrayList<String> al = new ArrayList<String>();
+				ArrayList<String> al = new ArrayList<>();
 				al.add("label");
 				al.add("ID");
 				al.add("Secondary_ID");
 				al.add("Name");
 				t.initTable(al);
 
-				Object[] row=new Object[4];
-				row[0]=assessor.getLabel();
+				Object[] row = new Object[4];
+				row[0] = assessor.getLabel();
 				XnatProjectdata primary = assessor.getPrimaryProject(false);
-				row[1]=primary.getId();
-				row[2]=primary.getSecondaryId();
-				row[3]=primary.getName();
+				row[1] = primary.getId();
+				row[2] = primary.getSecondaryId();
+				row[3] = primary.getName();
 				t.rows().add(row);
 
-				for(Map.Entry<XnatProjectdataI, String> entry: assessor.getProjectDatas().entrySet()){
-					row=new Object[4];
-					row[0]=entry.getValue();
-					row[1]=entry.getKey().getId();
-					row[2]=entry.getKey().getSecondaryId();
-					row[3]=entry.getKey().getName();
+				for (Map.Entry<XnatProjectdataI, String> entry : assessor.getProjectDatas().entrySet()) {
+					row = new Object[4];
+					row[0] = entry.getValue();
+					row[1] = entry.getKey().getId();
+					row[2] = entry.getKey().getSecondaryId();
+					row[3] = entry.getKey().getName();
 					t.rows().add(row);
 				}
 
-				Hashtable<String,Object> params=new Hashtable<String,Object>();
-				if(t!=null)params.put("totalRecords", t.size());
+				Hashtable<String, Object> params = new Hashtable<String, Object>();
+				params.put("totalRecords", t.size());
 				return representTable(t, mt, params);
-			}else{
-				return this.representItem(assessor.getItem(),mt);
+			} else {
+				return this.representItem(assessor.getItem(), mt);
 			}
 		}else{
 			this.getResponse().setStatus(Status.CLIENT_ERROR_NOT_FOUND,"Unable to find the specified experiment.");
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/PARResource.java b/src/main/java/org/nrg/xnat/restlet/resources/PARResource.java
index 644d3308..e90dede4 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/PARResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/PARResource.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.restlet.resources;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.om.XnatProjectdata;
 import org.nrg.xdat.security.helpers.Roles;
 import org.nrg.xft.XFTTable;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ProjSubExptAsstList.java b/src/main/java/org/nrg/xnat/restlet/resources/ProjSubExptAsstList.java
index f489e01e..bda8a4b1 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ProjSubExptAsstList.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ProjSubExptAsstList.java
@@ -165,7 +165,7 @@ public class ProjSubExptAsstList extends QueryOrganizerResource {
 							}
 							
 							if(!matched){
-								XnatExperimentdataShare pp= new XnatExperimentdataShare((UserI)user);
+								XnatExperimentdataShare pp= new XnatExperimentdataShare(user);
 								pp.setProject(this.proj.getId());
 								assessor.setSharing_share(pp);
 							}
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ProjectGroupResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ProjectGroupResource.java
index 5af58320..87a625ec 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ProjectGroupResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ProjectGroupResource.java
@@ -5,8 +5,8 @@ import java.util.Hashtable;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.lang.NumberUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.math.NumberUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.nrg.xdat.om.XnatProjectdata;
 import org.nrg.xdat.security.ElementSecurity;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ProjectMemberResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ProjectMemberResource.java
index f3ea2a2b..d1c057a3 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ProjectMemberResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ProjectMemberResource.java
@@ -17,7 +17,7 @@ import java.util.List;
 
 import javax.servlet.http.HttpServletRequest;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.velocity.VelocityContext;
 import org.nrg.action.ActionException;
 import org.nrg.xdat.display.DisplayManager;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ProjectResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ProjectResource.java
index 92b3a5e1..28599749 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ProjectResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ProjectResource.java
@@ -196,7 +196,7 @@ public class ProjectResource extends ItemResource {
                             } else if (filepath.startsWith("prearchive_code/")) {
                                 String qc = filepath.substring(16);
                                 if (!qc.equals("")) {
-                                    if (XDAT.getBoolSiteConfigurationProperty("project.allow-auto-archive", true) || org.apache.commons.lang.StringUtils.equals(qc, "0")) {
+                                    if (XDAT.getBoolSiteConfigurationProperty("project.allow-auto-archive", true) || StringUtils.equals(qc, "0")) {
                                         ArcProject ap = project.getArcSpecification();
                                         try {
                                             Integer qcI = Integer.valueOf(qc);
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ProjectUserListResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ProjectUserListResource.java
index 12a5322d..9acf245c 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ProjectUserListResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ProjectUserListResource.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.restlet.resources;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.config.services.ConfigService;
 import org.nrg.framework.constants.Scope;
 import org.nrg.xdat.XDAT;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ProjtExptPipelineResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ProjtExptPipelineResource.java
index 196e45df..f82bb483 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ProjtExptPipelineResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ProjtExptPipelineResource.java
@@ -19,7 +19,7 @@ import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.xmlbeans.XmlOptions;
 import org.nrg.pipeline.XnatPipelineLauncher;
 import org.nrg.pipeline.utils.PipelineFileUtils;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/RestMockCallMapRestlet.java b/src/main/java/org/nrg/xnat/restlet/resources/RestMockCallMapRestlet.java
index 3a4288be..86936594 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/RestMockCallMapRestlet.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/RestMockCallMapRestlet.java
@@ -11,7 +11,7 @@
 package org.nrg.xnat.restlet.resources;
 
 import com.fasterxml.jackson.core.type.TypeReference;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import com.fasterxml.jackson.core.JsonFactory;
 import com.fasterxml.jackson.databind.ObjectMapper;
 import org.nrg.xdat.XDAT;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ScriptResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ScriptResource.java
index 92905f33..059d174c 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ScriptResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ScriptResource.java
@@ -1,6 +1,6 @@
 package org.nrg.xnat.restlet.resources;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ClientException;
 import org.nrg.action.ServerException;
 import org.nrg.automation.entities.Script;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ScriptRunnerResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ScriptRunnerResource.java
index 31c458d3..17c26725 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ScriptRunnerResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ScriptRunnerResource.java
@@ -1,6 +1,6 @@
 package org.nrg.xnat.restlet.resources;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.automation.runners.ScriptRunner;
 import org.nrg.automation.services.ScriptRunnerService;
 import org.nrg.xdat.XDAT;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ScriptTriggerResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ScriptTriggerResource.java
index 4564240f..efb57000 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ScriptTriggerResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ScriptTriggerResource.java
@@ -1,6 +1,6 @@
 package org.nrg.xnat.restlet.resources;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ClientException;
 import org.nrg.action.ServerException;
 import org.nrg.automation.entities.ScriptTrigger;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ScriptTriggerTemplateResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ScriptTriggerTemplateResource.java
index 4ebd8205..23100cdf 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ScriptTriggerTemplateResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ScriptTriggerTemplateResource.java
@@ -1,7 +1,7 @@
 package org.nrg.xnat.restlet.resources;
 
 import com.google.common.base.Joiner;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ClientException;
 import org.nrg.automation.entities.ScriptTrigger;
 import org.nrg.automation.entities.ScriptTriggerTemplate;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/ScriptVersionsResource.java b/src/main/java/org/nrg/xnat/restlet/resources/ScriptVersionsResource.java
index b017b3a3..6e4d199b 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/ScriptVersionsResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/ScriptVersionsResource.java
@@ -1,6 +1,6 @@
 package org.nrg.xnat.restlet.resources;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.automation.entities.Script;
 import org.nrg.automation.services.ScriptRunnerService;
 import org.nrg.automation.services.ScriptService;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/SecureResource.java b/src/main/java/org/nrg/xnat/restlet/resources/SecureResource.java
index f2d88bc8..45c58132 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/SecureResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/SecureResource.java
@@ -17,7 +17,7 @@ import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.fileupload.DefaultFileItemFactory;
 import org.apache.commons.fileupload.FileItem;
 import org.apache.commons.fileupload.FileUploadException;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.turbine.util.TurbineException;
 import org.json.JSONException;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/SubjAssessmentResource.java b/src/main/java/org/nrg/xnat/restlet/resources/SubjAssessmentResource.java
index 5818f324..41cc777e 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/SubjAssessmentResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/SubjAssessmentResource.java
@@ -336,7 +336,7 @@ public class SubjAssessmentResource extends SubjAssessmentAbst {
 					if(this.subject!=null){
 							expt.setSubjectId(this.subject.getId());
 					}else{
-						if(StringUtils.isBlank(expt.getSubjectId()) && org.apache.commons.lang.StringUtils.isNotEmpty(subID)){
+						if(StringUtils.isBlank(expt.getSubjectId()) && StringUtils.isNotEmpty(subID)){
 							expt.setSubjectId(subID);
 						}
 
@@ -528,18 +528,18 @@ public class SubjAssessmentResource extends SubjAssessmentAbst {
 						
 
 						//check for unexpected modifications of ID, Project and label
-						if(existing !=null && !org.apache.commons.lang.StringUtils.equals(existing.getId(),expt.getId())){
+						if(existing !=null && !StringUtils.equals(existing.getId(),expt.getId())){
 							this.getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST,"ID cannot be modified");
 							return;
 						}
 						
-						if(existing !=null && !org.apache.commons.lang.StringUtils.equals(existing.getProject(),expt.getProject())){
+						if(existing !=null && !StringUtils.equals(existing.getProject(),expt.getProject())){
 							this.getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST,"Project must be modified through separate URI.");
 							return;
 						}
 						
 						//MATCHED
-						if(existing !=null && !org.apache.commons.lang.StringUtils.equals(existing.getLabel(),expt.getLabel())){
+						if(existing !=null && !StringUtils.equals(existing.getLabel(),expt.getLabel())){
 							this.getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST,"Label must be modified through separate URI.");
 							return;
 						}
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/SubjectResource.java b/src/main/java/org/nrg/xnat/restlet/resources/SubjectResource.java
index b5b2d008..6fd78b27 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/SubjectResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/SubjectResource.java
@@ -365,12 +365,12 @@ public class SubjectResource extends ItemResource {
 						
 
 						//check for unexpected modifications of ID and Project
-						if(existing !=null && !org.apache.commons.lang.StringUtils.equals(existing.getId(),sub.getId())){
+						if(existing !=null && !StringUtils.equals(existing.getId(),sub.getId())){
 							this.getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST,"ID cannot be modified");
 							return;
 						}
 						
-						if(existing !=null && !org.apache.commons.lang.StringUtils.equals(existing.getProject(),sub.getProject())){
+						if(existing !=null && !StringUtils.equals(existing.getProject(),sub.getProject())){
 							this.getResponse().setStatus(Status.CLIENT_ERROR_BAD_REQUEST,"Project must be modified through separate URI.");
 							return;
 						}                       
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/WorkflowEventResource.java b/src/main/java/org/nrg/xnat/restlet/resources/WorkflowEventResource.java
index e4f20b81..34f582af 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/WorkflowEventResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/WorkflowEventResource.java
@@ -1,6 +1,6 @@
 package org.nrg.xnat.restlet.resources;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.XDAT;
 import org.nrg.xft.XFTTable;
 import org.nrg.xft.exception.DBPoolException;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/files/CatalogResource.java b/src/main/java/org/nrg/xnat/restlet/resources/files/CatalogResource.java
index 89eb9a4b..92215dad 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/files/CatalogResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/files/CatalogResource.java
@@ -77,7 +77,7 @@ public class CatalogResource extends XNATCatalogTemplate {
         private void checkForNonEmptyFilePath(String remainingUrlPart) {
         	// we don't care about path separators or query parameters
         	// everything else will be rejected
-        	filePathIsEmpty = org.apache.commons.lang.StringUtils.isBlank(remainingUrlPart)
+        	filePathIsEmpty = StringUtils.isBlank(remainingUrlPart)
         		|| remainingUrlPart.matches("^/+") || remainingUrlPart.matches("^/*\\?.*");
         }
 	
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/files/FileList.java b/src/main/java/org/nrg/xnat/restlet/resources/files/FileList.java
index 5a417cd6..4f5f9c11 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/files/FileList.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/files/FileList.java
@@ -14,8 +14,8 @@ import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.fileupload.FileUploadException;
 import org.apache.commons.io.filefilter.DirectoryFileFilter;
 import org.apache.commons.io.filefilter.FileFileFilter;
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.json.JSONObject;
 import org.nrg.action.ActionException;
 import org.nrg.action.ClientException;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/files/XNATTemplate.java b/src/main/java/org/nrg/xnat/restlet/resources/files/XNATTemplate.java
index 7bce7fc3..56190dcc 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/files/XNATTemplate.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/files/XNATTemplate.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xnat.restlet.resources.files;
 
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.bean.CatCatalogBean;
 import org.nrg.xdat.model.XnatImageassessordataI;
 import org.nrg.xdat.om.*;
@@ -319,11 +320,7 @@ public class XNATTemplate extends SecureResource {
 	}
 
 	public boolean allowMultipleMatches(){
-		if(this instanceof FileList && this.getRequest().getMethod().equals(Method.GET)){
-			return true;
-		}else{
-			return false;
-		}
+		return this instanceof FileList && this.getRequest().getMethod().equals(Method.GET);
 	}
 	
 	public ItemI getSecurityItem(){
@@ -349,7 +346,7 @@ public class XNATTemplate extends SecureResource {
 	}
 
 	public boolean insertCatalag(XnatResourcecatalog catResource,EventMetaI ci)
-			throws InvalidArchiveStructure, Exception {
+			throws Exception {
 		java.text.SimpleDateFormat formatter = new java.text.SimpleDateFormat(
 				XNATRestConstants.PREARCHIVE_TIMESTAMP);
         String uploadID = formatter.format(Calendar.getInstance().getTime());
@@ -672,10 +669,8 @@ public class XNATTemplate extends SecureResource {
 						for (String resourceID : resourceIDs) {
 							if (c++ > 0)
 								query.append(" OR ");
-							if (org.apache.commons.lang.StringUtils
-									.isNumeric(resourceID)) {
-								query
-										.append(" (map.xnat_abstractresource_xnat_abstractresource_id=");
+							if (StringUtils.isNumeric(resourceID)) {
+								query.append(" (map.xnat_abstractresource_xnat_abstractresource_id=");
 								query.append(resourceID);
 								query.append(" OR abst.label='");
 								query.append(resourceID);
@@ -721,7 +716,7 @@ public class XNATTemplate extends SecureResource {
 						for (String resourceID : resourceIDs) {
 							if (c++ > 0)
 								query.append(" OR ");
-							if (org.apache.commons.lang.StringUtils
+							if (StringUtils
 									.isNumeric(resourceID)) {
 								query
 										.append(" (map.xnat_abstractresource_xnat_abstractresource_id=");
@@ -769,7 +764,7 @@ public class XNATTemplate extends SecureResource {
 				for (String resourceID : resourceIDs) {
 					if (c++ > 0)
 						query.append(" OR ");
-					if (org.apache.commons.lang.StringUtils
+					if (StringUtils
 							.isNumeric(resourceID)) {
 						query.append(" (abst.xnat_abstractresource_id=");
 						query.append(resourceID);
@@ -826,7 +821,7 @@ public class XNATTemplate extends SecureResource {
 						for (String resourceID : resourceIDs) {
 							if (c++ > 0)
 								query.append(" OR ");
-							if (org.apache.commons.lang.StringUtils
+							if (StringUtils
 									.isNumeric(resourceID)) {
 								query
 										.append(" (map.xnat_abstractresource_xnat_abstractresource_id=");
@@ -879,7 +874,7 @@ public class XNATTemplate extends SecureResource {
 						for (String resourceID : resourceIDs) {
 							if (c++ > 0)
 								query.append(" OR ");
-							if (org.apache.commons.lang.StringUtils
+							if (StringUtils
 									.isNumeric(resourceID)) {
 								query
 										.append(" (map.xnat_abstractresource_xnat_abstractresource_id=");
@@ -1016,7 +1011,7 @@ public class XNATTemplate extends SecureResource {
 					for (String resourceID : resourceIDs) {
 						if (c++ > 0)
 							query.append(" OR ");
-						if (org.apache.commons.lang.StringUtils
+						if (StringUtils
 								.isNumeric(resourceID)) {
 							query.append(" (xnat_abstractresource_id=");
 							query.append(resourceID);
@@ -1062,7 +1057,7 @@ public class XNATTemplate extends SecureResource {
 					for (String resourceID : resourceIDs) {
 						if (c++ > 0)
 							query.append(" OR ");
-						if (org.apache.commons.lang.StringUtils
+						if (StringUtils
 								.isNumeric(resourceID)) {
 							query
 									.append(" (map.xnat_abstractresource_xnat_abstractresource_id=");
@@ -1109,7 +1104,7 @@ public class XNATTemplate extends SecureResource {
 				for (String resourceID : resourceIDs) {
 					if (c++ > 0)
 						query.append(" OR ");
-					if (org.apache.commons.lang.StringUtils
+					if (StringUtils
 							.isNumeric(resourceID)) {
 						query
 								.append(" (map.xnat_abstractresource_xnat_abstractresource_id=");
@@ -1153,7 +1148,7 @@ public class XNATTemplate extends SecureResource {
 				for (String resourceID : resourceIDs) {
 					if (c++ > 0)
 						query.append(" OR ");
-					if (org.apache.commons.lang.StringUtils
+					if (StringUtils
 							.isNumeric(resourceID)) {
 						query
 								.append(" (map.xnat_abstractresource_xnat_abstractresource_id=");
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcScanResource.java b/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcScanResource.java
index 3f65aaad..2991c2c7 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcScanResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcScanResource.java
@@ -20,7 +20,7 @@ import java.io.IOException;
 import java.util.ArrayList;
 import java.util.List;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.nrg.action.ActionException;
 import org.nrg.action.ClientException;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcSessionListResource.java b/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcSessionListResource.java
index ca0bf7e8..dac3dee8 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcSessionListResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcSessionListResource.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.restlet.resources.prearchive;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.security.helpers.Roles;
 import org.nrg.xft.XFTTable;
 import org.nrg.xnat.helpers.prearchive.*;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcSessionResource.java b/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcSessionResource.java
index acca0069..f45fc030 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcSessionResource.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcSessionResource.java
@@ -14,7 +14,7 @@ import com.google.common.base.Strings;
 import com.google.common.collect.Maps;
 
 import org.apache.commons.io.FileUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.TurbineException;
 import org.nrg.action.ActionException;
 import org.nrg.action.ClientException;
diff --git a/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcSessionResourceFiles.java b/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcSessionResourceFiles.java
index 844200e2..6e168de1 100644
--- a/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcSessionResourceFiles.java
+++ b/src/main/java/org/nrg/xnat/restlet/resources/prearchive/PrearcSessionResourceFiles.java
@@ -15,7 +15,7 @@
 package org.nrg.xnat.restlet.resources.prearchive;
 
 import com.google.common.collect.Lists;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.dcm.Dcm2Jpg;
 import org.nrg.xdat.model.CatCatalogI;
diff --git a/src/main/java/org/nrg/xnat/restlet/services/AliasTokenRestlet.java b/src/main/java/org/nrg/xnat/restlet/services/AliasTokenRestlet.java
index fd347ffa..c7c6b2ce 100644
--- a/src/main/java/org/nrg/xnat/restlet/services/AliasTokenRestlet.java
+++ b/src/main/java/org/nrg/xnat/restlet/services/AliasTokenRestlet.java
@@ -11,7 +11,7 @@
 package org.nrg.xnat.restlet.services;
 
 import com.google.common.collect.Maps;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.XDAT;
 import org.nrg.xdat.entities.AliasToken;
 import org.nrg.xdat.security.helpers.Roles;
diff --git a/src/main/java/org/nrg/xnat/restlet/services/Archiver.java b/src/main/java/org/nrg/xnat/restlet/services/Archiver.java
index 70d1700e..c7948346 100644
--- a/src/main/java/org/nrg/xnat/restlet/services/Archiver.java
+++ b/src/main/java/org/nrg/xnat/restlet/services/Archiver.java
@@ -20,7 +20,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.action.ClientException;
 import org.nrg.status.StatusListenerI;
diff --git a/src/main/java/org/nrg/xnat/restlet/services/FeatureDefinitionRestlet.java b/src/main/java/org/nrg/xnat/restlet/services/FeatureDefinitionRestlet.java
index 9e61479b..21aa9468 100644
--- a/src/main/java/org/nrg/xnat/restlet/services/FeatureDefinitionRestlet.java
+++ b/src/main/java/org/nrg/xnat/restlet/services/FeatureDefinitionRestlet.java
@@ -7,8 +7,8 @@ import java.util.Hashtable;
 import java.util.List;
 
 import org.apache.commons.io.IOUtils;
-import org.apache.commons.lang.BooleanUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.BooleanUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.json.JSONArray;
 import org.json.JSONException;
 import org.json.JSONObject;
diff --git a/src/main/java/org/nrg/xnat/restlet/services/Importer.java b/src/main/java/org/nrg/xnat/restlet/services/Importer.java
index e0a67f59..e73c3a72 100644
--- a/src/main/java/org/nrg/xnat/restlet/services/Importer.java
+++ b/src/main/java/org/nrg/xnat/restlet/services/Importer.java
@@ -11,7 +11,7 @@
 package org.nrg.xnat.restlet.services;
 
 import org.apache.commons.fileupload.FileUploadException;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ClientException;
 import org.nrg.action.ServerException;
 import org.nrg.framework.constants.PrearchiveCode;
diff --git a/src/main/java/org/nrg/xnat/restlet/services/MoveFiles.java b/src/main/java/org/nrg/xnat/restlet/services/MoveFiles.java
index 43781d73..8f65fd6d 100644
--- a/src/main/java/org/nrg/xnat/restlet/services/MoveFiles.java
+++ b/src/main/java/org/nrg/xnat/restlet/services/MoveFiles.java
@@ -13,7 +13,7 @@ package org.nrg.xnat.restlet.services;
 import com.google.common.collect.ArrayListMultimap;
 import com.google.common.collect.ListMultimap;
 import com.google.common.collect.Maps;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.action.ClientException;
 import org.nrg.xft.event.EventMetaI;
diff --git a/src/main/java/org/nrg/xnat/restlet/services/SettingsRestlet.java b/src/main/java/org/nrg/xnat/restlet/services/SettingsRestlet.java
index 5625fdcf..5763aa25 100644
--- a/src/main/java/org/nrg/xnat/restlet/services/SettingsRestlet.java
+++ b/src/main/java/org/nrg/xnat/restlet/services/SettingsRestlet.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.restlet.services;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.hibernate.PropertyNotFoundException;
 import org.nrg.config.entities.Configuration;
 import org.nrg.config.exceptions.ConfigServiceException;
@@ -42,6 +42,7 @@ import org.nrg.xnat.security.FilterSecurityInterceptorBeanPostProcessor;
 import org.nrg.xnat.security.XnatExpiredPasswordFilter;
 import org.nrg.xnat.turbine.utils.ArcSpecManager;
 import org.nrg.xnat.utils.BuildDirScriptRunnerOutputAdapter;
+import org.nrg.xnat.utils.XnatHttpUtils;
 import org.restlet.Context;
 import org.restlet.data.*;
 import org.restlet.resource.Representation;
@@ -133,7 +134,8 @@ public class SettingsRestlet extends SecureResource {
 
         settings.putAll(XDAT.getSiteConfiguration());
         settings.put("siteId", getSiteId());
-        settings.put("siteUrl", _arcSpec.getSiteUrl());
+        final String siteUrl = StringUtils.isBlank(_arcSpec.getSiteUrl()) ? XnatHttpUtils.getServerRoot(getHttpServletRequest()) : _arcSpec.getSiteUrl();
+        settings.put("siteUrl", siteUrl);
         settings.put("siteAdminEmail", _arcSpec.getSiteAdminEmail());
         settings.put("smtpHost", _arcSpec.getSmtpHost());
         settings.put("requireLogin", _arcSpec.getRequireLogin());
diff --git a/src/main/java/org/nrg/xnat/restlet/services/mail/MailRestlet.java b/src/main/java/org/nrg/xnat/restlet/services/mail/MailRestlet.java
index c25cec3d..113758c0 100644
--- a/src/main/java/org/nrg/xnat/restlet/services/mail/MailRestlet.java
+++ b/src/main/java/org/nrg/xnat/restlet/services/mail/MailRestlet.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.restlet.services.mail;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
diff --git a/src/main/java/org/nrg/xnat/restlet/util/RequestUtil.java b/src/main/java/org/nrg/xnat/restlet/util/RequestUtil.java
index 335ab80d..a28e3093 100644
--- a/src/main/java/org/nrg/xnat/restlet/util/RequestUtil.java
+++ b/src/main/java/org/nrg/xnat/restlet/util/RequestUtil.java
@@ -15,7 +15,7 @@ import java.util.Map;
 
 import javax.servlet.http.HttpServletRequest;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xnat.restlet.resources.SecureResource;
 import org.restlet.data.MediaType;
 import org.restlet.data.Request;
diff --git a/src/main/java/org/nrg/xnat/security/XnatAuthenticationEntryPoint.java b/src/main/java/org/nrg/xnat/security/XnatAuthenticationEntryPoint.java
index 82c7d4ff..3c08027a 100644
--- a/src/main/java/org/nrg/xnat/security/XnatAuthenticationEntryPoint.java
+++ b/src/main/java/org/nrg/xnat/security/XnatAuthenticationEntryPoint.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.security;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.security.core.AuthenticationException;
diff --git a/src/main/java/org/nrg/xnat/security/XnatAuthenticationFilter.java b/src/main/java/org/nrg/xnat/security/XnatAuthenticationFilter.java
index b1d2a3a9..dfb1c279 100644
--- a/src/main/java/org/nrg/xnat/security/XnatAuthenticationFilter.java
+++ b/src/main/java/org/nrg/xnat/security/XnatAuthenticationFilter.java
@@ -11,7 +11,7 @@
 package org.nrg.xnat.security;
 
 import com.google.common.collect.Maps;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.nrg.xdat.security.helpers.Users;
diff --git a/src/main/java/org/nrg/xnat/security/XnatArcSpecFilter.java b/src/main/java/org/nrg/xnat/security/XnatInitCheckFilter.java
similarity index 82%
rename from src/main/java/org/nrg/xnat/security/XnatArcSpecFilter.java
rename to src/main/java/org/nrg/xnat/security/XnatInitCheckFilter.java
index 1545fd54..07e932cb 100644
--- a/src/main/java/org/nrg/xnat/security/XnatArcSpecFilter.java
+++ b/src/main/java/org/nrg/xnat/security/XnatInitCheckFilter.java
@@ -1,5 +1,5 @@
 /*
- * org.nrg.xnat.security.XnatArcSpecFilter
+ * org.nrg.xnat.security.XnatInitCheckFilter
  * XNAT http://www.xnat.org
  * Copyright (c) 2014, Washington University School of Medicine
  * All Rights Reserved
@@ -26,9 +26,10 @@ import org.nrg.xdat.security.helpers.Roles;
 import org.nrg.xdat.turbine.utils.TurbineUtils;
 import org.nrg.xft.security.UserI;
 import org.nrg.xnat.turbine.utils.ArcSpecManager;
+import org.nrg.xnat.utils.XnatHttpUtils;
 import org.springframework.web.filter.GenericFilterBean;
 
-public class XnatArcSpecFilter extends GenericFilterBean {
+public class XnatInitCheckFilter extends GenericFilterBean {
 
     @Override
     public void doFilter(ServletRequest req, ServletResponse res, FilterChain chain) throws IOException, ServletException {
@@ -70,12 +71,15 @@ public class XnatArcSpecFilter extends GenericFilterBean {
                 	// (NB: I tried putting this check up with the basic auth check, 
                 	// but you get this weird redirect with 2 login pages on the same screen.  Seems to work here).
                         chain.doFilter(req, res);
-                    } else if (Roles.isSiteAdmin(user)) {
-                        //Otherwise, if the user has administrative permissions, direct the user to the configuration page.
-                        response.sendRedirect(TurbineUtils.GetFullServerPath() + _configurationPath);
                     } else {
-                        //The arc spec is not set but the user does not have administrative permissions. Direct the user to an error page.
-                        response.sendRedirect(TurbineUtils.GetFullServerPath() + _nonAdminErrorPath);
+                        final String serverPath = XnatHttpUtils.getServerRoot(request);
+                        if (Roles.isSiteAdmin(user)) {
+                            //Otherwise, if the user has administrative permissions, direct the user to the configuration page.
+                            response.sendRedirect(serverPath + _configurationPath);
+                        } else {
+                            //The arc spec is not set but the user does not have administrative permissions. Direct the user to an error page.
+                            response.sendRedirect(serverPath + _nonAdminErrorPath);
+                        }
                     }
                 } catch (Exception e) {
                     logger.error("Error checking user role in the Arc Spec Filter.", e);
@@ -114,5 +118,5 @@ public class XnatArcSpecFilter extends GenericFilterBean {
     private String _initializationPath = "";
     private String _configurationPath = "";
     private String _nonAdminErrorPath = "";
-    private final List<String> _exemptedPaths = new ArrayList<String>();
+    private final List<String> _exemptedPaths = new ArrayList<>();
 }
diff --git a/src/main/java/org/nrg/xnat/security/XnatProviderManager.java b/src/main/java/org/nrg/xnat/security/XnatProviderManager.java
index f24ad389..429e320f 100644
--- a/src/main/java/org/nrg/xnat/security/XnatProviderManager.java
+++ b/src/main/java/org/nrg/xnat/security/XnatProviderManager.java
@@ -11,8 +11,8 @@
 package org.nrg.xnat.security;
 
 import com.google.common.collect.Maps;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.lang.time.DateUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.lang3.time.DateUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.velocity.VelocityContext;
diff --git a/src/main/java/org/nrg/xnat/security/alias/AliasTokenAuthenticationProvider.java b/src/main/java/org/nrg/xnat/security/alias/AliasTokenAuthenticationProvider.java
index 250e2bc5..37e51060 100644
--- a/src/main/java/org/nrg/xnat/security/alias/AliasTokenAuthenticationProvider.java
+++ b/src/main/java/org/nrg/xnat/security/alias/AliasTokenAuthenticationProvider.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.security.alias;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xdat.entities.AliasToken;
 import org.nrg.xdat.security.helpers.Users;
 import org.nrg.xdat.services.AliasTokenService;
diff --git a/src/main/java/org/nrg/xnat/security/config/AuthenticationProviderAggregator.java b/src/main/java/org/nrg/xnat/security/config/AuthenticationProviderAggregator.java
index c6ed207e..f5b0ce3a 100644
--- a/src/main/java/org/nrg/xnat/security/config/AuthenticationProviderAggregator.java
+++ b/src/main/java/org/nrg/xnat/security/config/AuthenticationProviderAggregator.java
@@ -1,6 +1,6 @@
 package org.nrg.xnat.security.config;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.security.authentication.AuthenticationProvider;
 
 import java.util.*;
diff --git a/src/main/java/org/nrg/xnat/security/config/LdapAuthenticationProviderConfigurator.java b/src/main/java/org/nrg/xnat/security/config/LdapAuthenticationProviderConfigurator.java
index d24ad353..874b2d0d 100644
--- a/src/main/java/org/nrg/xnat/security/config/LdapAuthenticationProviderConfigurator.java
+++ b/src/main/java/org/nrg/xnat/security/config/LdapAuthenticationProviderConfigurator.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.security.config;
 
-import org.apache.commons.lang.NotImplementedException;
+import org.apache.commons.lang3.NotImplementedException;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.nrg.xnat.security.XnatLdapAuthoritiesPopulator;
diff --git a/src/main/java/org/nrg/xnat/security/config/PropertyAggregator.java b/src/main/java/org/nrg/xnat/security/config/PropertyAggregator.java
index e5cb2cc2..4e056eda 100644
--- a/src/main/java/org/nrg/xnat/security/config/PropertyAggregator.java
+++ b/src/main/java/org/nrg/xnat/security/config/PropertyAggregator.java
@@ -1,6 +1,6 @@
 package org.nrg.xnat.security.config;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
diff --git a/src/main/java/org/nrg/xnat/services/impl/ThemeServiceImpl.java b/src/main/java/org/nrg/xnat/services/impl/ThemeServiceImpl.java
index 8f2d1315..7673f055 100644
--- a/src/main/java/org/nrg/xnat/services/impl/ThemeServiceImpl.java
+++ b/src/main/java/org/nrg/xnat/services/impl/ThemeServiceImpl.java
@@ -12,8 +12,8 @@
 package org.nrg.xnat.services.impl;
 
 import com.fasterxml.jackson.core.JsonProcessingException;
-import org.apache.commons.lang.ArrayUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.ArrayUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.xnat.configuration.ThemeConfig;
 import org.nrg.xnat.services.ThemeService;
 import org.nrg.xnat.utils.SerializerService;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/AcceptProjectAccess.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/AcceptProjectAccess.java
index 04f02557..5aeeaa47 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/AcceptProjectAccess.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/AcceptProjectAccess.java
@@ -12,7 +12,7 @@ package org.nrg.xnat.turbine.modules.actions;
 
 import java.util.List;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.turbine.Turbine;
 import org.apache.turbine.util.RunData;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/AddProject.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/AddProject.java
index 37352e2e..6aae275a 100755
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/AddProject.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/AddProject.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.turbine.modules.actions;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.modules.ScreenLoader;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/ConfirmRegister.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/ConfirmRegister.java
index 0e905793..069a156e 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/ConfirmRegister.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/ConfirmRegister.java
@@ -12,7 +12,7 @@ package org.nrg.xnat.turbine.modules.actions;
 
 import java.util.List;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
 import org.nrg.xdat.security.helpers.Users;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/CreateExperiment.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/CreateExperiment.java
index 5c4f9f5d..9d44f323 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/CreateExperiment.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/CreateExperiment.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.turbine.modules.actions;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
 import org.nrg.xdat.schema.SchemaElement;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/DownloadImages.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/DownloadImages.java
index 5b115cfd..a365a818 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/DownloadImages.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/DownloadImages.java
@@ -11,7 +11,7 @@
 package org.nrg.xnat.turbine.modules.actions;
 
 import edu.sdsc.grid.io.GeneralFile;
-import org.apache.commons.lang.RandomStringUtils;
+import org.apache.commons.lang3.RandomStringUtils;
 import org.apache.log4j.Logger;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/DownloadSessionsAction2.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/DownloadSessionsAction2.java
index ee2173ff..18190b74 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/DownloadSessionsAction2.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/DownloadSessionsAction2.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.turbine.modules.actions;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
 import org.nrg.xdat.bean.CatCatalogBean;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/ModifySubjectAssessorData.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/ModifySubjectAssessorData.java
index 5604167d..c34f4266 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/ModifySubjectAssessorData.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/ModifySubjectAssessorData.java
@@ -14,7 +14,7 @@ import java.util.Calendar;
 import java.util.List;
 import java.util.Map;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/PipelineActions.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/PipelineActions.java
index 6d0c4ca4..942200b0 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/PipelineActions.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/PipelineActions.java
@@ -19,6 +19,7 @@ import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.List;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
@@ -294,7 +295,7 @@ public class PipelineActions extends SecureAction{
             String key = (String)keys.next();
             if (key.startsWith(pattern)) {
                 if (replace != null)
-                    rtn.put(org.apache.commons.lang.StringUtils.replace(key,replace,""),((String)org.nrg.xdat.turbine.utils.TurbineUtils.GetPassedParameter(key,data)));
+                    rtn.put(StringUtils.replace(key, replace, ""), ((String)org.nrg.xdat.turbine.utils.TurbineUtils.GetPassedParameter(key, data)));
                 else 
                     rtn.put(key,((String)org.nrg.xdat.turbine.utils.TurbineUtils.GetPassedParameter(key,data)));
             }
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/ProcessAccessRequest.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/ProcessAccessRequest.java
index ad314946..c927eca9 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/ProcessAccessRequest.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/ProcessAccessRequest.java
@@ -14,7 +14,7 @@ import java.io.StringWriter;
 import java.util.ArrayList;
 import java.util.Map;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.Template;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/QDECAction.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/QDECAction.java
index 1685b926..a42b5801 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/QDECAction.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/QDECAction.java
@@ -23,7 +23,7 @@ import java.util.Date;
 import java.util.Enumeration;
 import java.util.Hashtable;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
 import org.apache.xmlbeans.XmlOptions;
@@ -233,7 +233,7 @@ public class QDECAction extends ListingAction{
 		if (parts != null ) {
 			if (parts.length > 1) {
 				for (int i = 0; i < parts.length; i++) {
-					rtn += StringUtils.capitalise(parts[i]);
+					rtn += StringUtils.capitalize(parts[i]);
 				}
 			}else if (parts.length == 1) {
 				rtn = parts[0];
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/ReportIssue.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/ReportIssue.java
index beade2b5..1a058204 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/ReportIssue.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/ReportIssue.java
@@ -16,7 +16,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.commons.fileupload.FileItem;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.turbine.util.RunData;
 import org.apache.turbine.util.parser.ParameterParser;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/XDATForgotLogin.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/XDATForgotLogin.java
index e7b5c617..f9da0554 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/XDATForgotLogin.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/XDATForgotLogin.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.turbine.modules.actions;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
 import org.nrg.xdat.turbine.utils.TurbineUtils;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/XDATLoginUser.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/XDATLoginUser.java
index ea1ca0f3..a368b929 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/XDATLoginUser.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/XDATLoginUser.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.turbine.modules.actions;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.modules.ActionLoader;
 import org.apache.turbine.modules.actions.VelocityAction;
 import org.apache.turbine.util.RunData;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/actions/XDATRegisterUser.java b/src/main/java/org/nrg/xnat/turbine/modules/actions/XDATRegisterUser.java
index d3f6d924..ce98b187 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/actions/XDATRegisterUser.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/actions/XDATRegisterUser.java
@@ -16,7 +16,7 @@ import java.util.Map;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.turbine.Turbine;
 import org.apache.turbine.modules.ActionLoader;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/screens/EditScript.java b/src/main/java/org/nrg/xnat/turbine/modules/screens/EditScript.java
index 73c57958..bbd2bc73 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/screens/EditScript.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/screens/EditScript.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.turbine.modules.screens;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
 import org.nrg.automation.entities.Script;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/screens/InactiveAccount.java b/src/main/java/org/nrg/xnat/turbine/modules/screens/InactiveAccount.java
index 3be8414f..a85fd202 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/screens/InactiveAccount.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/screens/InactiveAccount.java
@@ -21,8 +21,8 @@ package org.nrg.xnat.turbine.modules.screens;/*
 
 import java.sql.SQLException;
 
-import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.modules.screens.VelocitySecureScreen;
 import org.apache.turbine.services.velocity.TurbineVelocity;
 import org.apache.turbine.util.RunData;
@@ -87,7 +87,7 @@ public class InactiveAccount extends VelocitySecureScreen {
                             if(userID.toLowerCase().contains("script"))
                             {
                                 e= new Exception("Illegal username &lt;script&gt; usage.");
-                                AdminUtils.sendAdminEmail("Possible Cross-site scripting attempt blocked", StringEscapeUtils.escapeHtml(userID));
+                                AdminUtils.sendAdminEmail("Possible Cross-site scripting attempt blocked", StringEscapeUtils.escapeHtml4(userID));
                                 log.error("",e);
                                 data.setScreenTemplate("Error.vm");
                                 data.getParameters().setString("exception", e.toString());
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/screens/LaunchUploadApplet.java b/src/main/java/org/nrg/xnat/turbine/modules/screens/LaunchUploadApplet.java
index 739fb943..c3838674 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/screens/LaunchUploadApplet.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/screens/LaunchUploadApplet.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.turbine.modules.screens;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.apache.turbine.util.RunData;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_UpdateUser.java b/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_UpdateUser.java
index 3b7fec4f..4049a227 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_UpdateUser.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_UpdateUser.java
@@ -10,8 +10,8 @@
  */
 package org.nrg.xnat.turbine.modules.screens;
 
-import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringEscapeUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.turbine.services.velocity.TurbineVelocity;
 import org.apache.turbine.util.RunData;
@@ -64,12 +64,11 @@ public class XDATScreen_UpdateUser extends SecureScreen {
                         try
                         {
                             context.put("forgot", true);
-                            data.getSession().setAttribute("forgot",new Boolean(true));
+                            data.getSession().setAttribute("forgot", true);
                             userID = XDAT.getContextService().getBean(AliasTokenService.class).validateToken(alias,Long.parseLong(secret));
                             if(userID!=null){
                                 user = Users.getUser(userID);
-                                boolean forcePasswordChange = true;
-                                XDAT.loginUser(data, user, forcePasswordChange);
+                                XDAT.loginUser(data, user, true);
                             }
                             else{
                                 invalidInformation(data, context, "Change password opportunity expired.  Change password requests can only be used once and expire after 24 hours.  Please restart the change password process.");
@@ -82,11 +81,11 @@ public class XDATScreen_UpdateUser extends SecureScreen {
 
                             AccessLogger.LogActionAccess(data, "Failed Login by alias '" + alias + "': " + e.getMessage());
 
-                            if(userID.toLowerCase().contains("script"))
-                            {
-                                e= new Exception("Illegal username &lt;script&gt; usage.");
-                                AdminUtils.sendAdminEmail("Possible Cross-site scripting attempt blocked", StringEscapeUtils.escapeHtml(userID));
-                                log.error("",e);
+                            if (userID == null || userID.toLowerCase().contains("script")) {
+                                e = new Exception("Illegal username &lt;script&gt; usage.");
+                                final String message = userID == null ? "No user ID found." : StringEscapeUtils.escapeHtml4(userID);
+                                AdminUtils.sendAdminEmail("Possible Cross-site scripting attempt blocked", message);
+                                log.error(message,e);
                                 data.setScreenTemplate("Error.vm");
                                 data.getParameters().setString("exception", e.toString());
                                 return;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_add_experiment.java b/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_add_experiment.java
index 0860c759..0c0682ff 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_add_experiment.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_add_experiment.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.turbine.modules.screens;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
 import org.nrg.xdat.om.XnatSubjectdata;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_edit_scr_screeningAssessment.java b/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_edit_scr_screeningAssessment.java
index 64fec9aa..5e9ac863 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_edit_scr_screeningAssessment.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_edit_scr_screeningAssessment.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.turbine.modules.screens;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
 import org.nrg.xdat.model.XnatImagescandataI;
@@ -97,12 +97,12 @@ public class XDATScreen_edit_scr_screeningAssessment extends org.nrg.xnat.turbin
         
         if (al.size()>0 || claimedIDs.size()>0){
             int count =al.size()+1;
-            String full = org.apache.commons.lang.StringUtils.leftPad((new Integer(count)).toString(), digits, '0');
+            String full = StringUtils.leftPad((new Integer(count)).toString(), digits, '0');
             temp_id = sessionLabel+labelExtension+ full;
 
             while (al.contains(temp_id) || claimedIDs.contains(temp_id)){
                 count++;
-                full =org.apache.commons.lang.StringUtils.leftPad((new Integer(count)).toString(), digits, '0');
+                full =StringUtils.leftPad((new Integer(count)).toString(), digits, '0');
                 temp_id = sessionLabel+labelExtension+ full;
             }
             
@@ -111,7 +111,7 @@ public class XDATScreen_edit_scr_screeningAssessment extends org.nrg.xnat.turbin
             return temp_id;
         }else{
             int count =1;
-            String full = org.apache.commons.lang.StringUtils.leftPad((new Integer(count)).toString(), digits, '0');
+            String full = StringUtils.leftPad((new Integer(count)).toString(), digits, '0');
             temp_id = sessionLabel+labelExtension+ full;
             return temp_id;
         }
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_uploaded_xnat_imageSessionData.java b/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_uploaded_xnat_imageSessionData.java
index d00fab1f..3f224164 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_uploaded_xnat_imageSessionData.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/screens/XDATScreen_uploaded_xnat_imageSessionData.java
@@ -11,7 +11,7 @@
 package org.nrg.xnat.turbine.modules.screens;
 
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
 import org.nrg.xdat.base.BaseElement;
diff --git a/src/main/java/org/nrg/xnat/turbine/modules/screens/XnatErrorScreen.java b/src/main/java/org/nrg/xnat/turbine/modules/screens/XnatErrorScreen.java
index 0cf83153..ac8d9b71 100644
--- a/src/main/java/org/nrg/xnat/turbine/modules/screens/XnatErrorScreen.java
+++ b/src/main/java/org/nrg/xnat/turbine/modules/screens/XnatErrorScreen.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.turbine.modules.screens;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.modules.screens.VelocityErrorScreen;
 import org.apache.turbine.util.RunData;
 import org.apache.velocity.context.Context;
diff --git a/src/main/java/org/nrg/xnat/turbine/utils/IDGenerator.java b/src/main/java/org/nrg/xnat/turbine/utils/IDGenerator.java
index 9b460146..a1a06681 100644
--- a/src/main/java/org/nrg/xnat/turbine/utils/IDGenerator.java
+++ b/src/main/java/org/nrg/xnat/turbine/utils/IDGenerator.java
@@ -87,12 +87,12 @@ public class IDGenerator implements IDGeneratorI {
 	        
 	        if (al.size()>0 || claimedIDs.size()>0){
 	            int count =al.size()+1;
-	            String full = org.apache.commons.lang.StringUtils.leftPad((new Integer(count)).toString(), digits, '0');
+	            String full = StringUtils.leftPad((new Integer(count)).toString(), digits, '0');
 	            temp_id = site+ full;
 	
 	            while (al.contains(temp_id) || claimedIDs.contains(temp_id)){
 	                count++;
-	                full =org.apache.commons.lang.StringUtils.leftPad((new Integer(count)).toString(), digits, '0');
+	                full =StringUtils.leftPad((new Integer(count)).toString(), digits, '0');
 	                temp_id = site+ full;
 	            }
 	            
@@ -101,7 +101,7 @@ public class IDGenerator implements IDGeneratorI {
 	            return temp_id;
 	        }else{
 	            int count =1;
-	            String full = org.apache.commons.lang.StringUtils.leftPad((new Integer(count)).toString(), digits, '0');
+	            String full = StringUtils.leftPad((new Integer(count)).toString(), digits, '0');
 	            temp_id = site+ full;
 	            return temp_id;
 	        }
diff --git a/src/main/java/org/nrg/xnat/turbine/utils/ProjectAccessRequest.java b/src/main/java/org/nrg/xnat/turbine/utils/ProjectAccessRequest.java
index bf86d90a..08d261b0 100644
--- a/src/main/java/org/nrg/xnat/turbine/utils/ProjectAccessRequest.java
+++ b/src/main/java/org/nrg/xnat/turbine/utils/ProjectAccessRequest.java
@@ -510,7 +510,7 @@ public class ProjectAccessRequest {
     	setUserId(user.getID());
 		setApproved(accept);
 		setApprovalDate(Calendar.getInstance().getTime());
-        if (!org.apache.commons.lang.StringUtils.equalsIgnoreCase(parEmail, user.getEmail())) {
+        if (!StringUtils.equalsIgnoreCase(parEmail, user.getEmail())) {
             setEmail(user.getEmail());
         }
         save(user);
diff --git a/src/main/java/org/nrg/xnat/turbine/utils/ScanQualityUtils.java b/src/main/java/org/nrg/xnat/turbine/utils/ScanQualityUtils.java
index c1273694..0a6bfe94 100644
--- a/src/main/java/org/nrg/xnat/turbine/utils/ScanQualityUtils.java
+++ b/src/main/java/org/nrg/xnat/turbine/utils/ScanQualityUtils.java
@@ -12,7 +12,7 @@ package org.nrg.xnat.turbine.utils;
 
 import com.google.common.base.Joiner;
 import com.google.common.base.Strings;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.config.exceptions.ConfigServiceException;
 import org.nrg.config.services.ConfigService;
 import org.nrg.framework.constants.Scope;
diff --git a/src/main/java/org/nrg/xnat/turbine/utils/XNATUtils.java b/src/main/java/org/nrg/xnat/turbine/utils/XNATUtils.java
index 0dd27da5..618a40a0 100644
--- a/src/main/java/org/nrg/xnat/turbine/utils/XNATUtils.java
+++ b/src/main/java/org/nrg/xnat/turbine/utils/XNATUtils.java
@@ -20,7 +20,7 @@ import java.util.Iterator;
 import java.util.List;
 
 import org.apache.commons.collections.MultiMap;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.log4j.Logger;
 import org.apache.turbine.util.RunData;
 import org.nrg.xdat.base.BaseElement;
diff --git a/src/main/java/org/nrg/xnat/utils/CatalogUtils.java b/src/main/java/org/nrg/xnat/utils/CatalogUtils.java
index 795973a0..d630a6af 100755
--- a/src/main/java/org/nrg/xnat/utils/CatalogUtils.java
+++ b/src/main/java/org/nrg/xnat/utils/CatalogUtils.java
@@ -12,7 +12,7 @@ package org.nrg.xnat.utils;
 
 import com.google.common.collect.Lists;
 import com.twmacinta.util.MD5;
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.config.entities.Configuration;
 import org.nrg.config.exceptions.ConfigServiceException;
 import org.nrg.framework.constants.Scope;
diff --git a/src/main/java/org/nrg/xnat/utils/ChecksumsSiteConfigurationListener.java b/src/main/java/org/nrg/xnat/utils/ChecksumsSiteConfigurationListener.java
index 2c6e4c86..fba20d1c 100644
--- a/src/main/java/org/nrg/xnat/utils/ChecksumsSiteConfigurationListener.java
+++ b/src/main/java/org/nrg/xnat/utils/ChecksumsSiteConfigurationListener.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.utils;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.config.interfaces.SiteConfigurationPropertyChangedListener;
 
 public class ChecksumsSiteConfigurationListener implements SiteConfigurationPropertyChangedListener {
diff --git a/src/main/java/org/nrg/xnat/utils/FileUtils.java b/src/main/java/org/nrg/xnat/utils/FileUtils.java
index cb0a9a88..1234010a 100644
--- a/src/main/java/org/nrg/xnat/utils/FileUtils.java
+++ b/src/main/java/org/nrg/xnat/utils/FileUtils.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.utils;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.nrg.xft.XFT;
diff --git a/src/main/java/org/nrg/xnat/utils/ResourceUtils.java b/src/main/java/org/nrg/xnat/utils/ResourceUtils.java
index 56a1b063..a525959e 100644
--- a/src/main/java/org/nrg/xnat/utils/ResourceUtils.java
+++ b/src/main/java/org/nrg/xnat/utils/ResourceUtils.java
@@ -10,7 +10,7 @@
  */
 package org.nrg.xnat.utils;
 
-import org.apache.commons.lang.StringUtils;
+import org.apache.commons.lang3.StringUtils;
 import org.nrg.action.ActionException;
 import org.nrg.action.ClientException;
 import org.nrg.action.ServerException;
diff --git a/src/main/java/org/nrg/xnat/utils/XnatHttpUtils.java b/src/main/java/org/nrg/xnat/utils/XnatHttpUtils.java
index 6cb5a668..238c25f6 100644
--- a/src/main/java/org/nrg/xnat/utils/XnatHttpUtils.java
+++ b/src/main/java/org/nrg/xnat/utils/XnatHttpUtils.java
@@ -10,6 +10,7 @@
  */
 package org.nrg.xnat.utils;
 
+import org.apache.commons.lang3.StringUtils;
 import org.apache.turbine.util.RunData;
 
 import javax.servlet.http.Cookie;
@@ -32,4 +33,10 @@ public class XnatHttpUtils {
 	public static String getJSESSIONID(RunData runData) {
 		return getJSESSIONID(runData.getRequest());
 	}
+
+    public static String getServerRoot(final HttpServletRequest request) {
+        final String port = request.getServerPort() == 80 ? "" : ":" + request.getServerPort();
+        final String servletPath = StringUtils.defaultIfBlank(request.getContextPath(), "");
+        return String.format("%s://%s%s%s", request.getScheme(), request.getServerName(), port, servletPath);
+    }
 }
diff --git a/src/main/webapp/WEB-INF/conf/InstanceSettings.xml.sample b/src/main/webapp/WEB-INF/conf/InstanceSettings.xml.sample
deleted file mode 100644
index a1764772..00000000
--- a/src/main/webapp/WEB-INF/conf/InstanceSettings.xml.sample
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<Instance_Settings xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
-                   xsi:noNamespaceSchemaLocation="schemas/xdat/instance.xsd"
-                   site_url="http://localhost:8080" admin_email="administrator@xnat.org"
-                   archive_root_path="/data/xnat/archive"
-                   prearchive_path="/data/xnat/prearchive" cache_path="/data/xnat/cache"
-                   smtp_server="mail.server" ftp_path="/data/xnat/ftp" build_path="/data/xnat/build"
-                   pipeline_path="/data/xnat/pipeline" require_login="true" user_registration="false"
-                   enable_csrf_token="true">
-    <Databases>
-        <Database Type="POSTGRESQL" Id="xnat" Driver="org.postgresql.Driver" Url="jdbc:postgresql://localhost/xnat"
-                  User="xnat" Pass="xnat" MaxConnections="10"/>
-    </Databases>
-    <Models>
-        <Data_Model File_Name="security.xsd" File_Location="schemas/security" DB="xnat"/>
-        <Data_Model File_Name="birnprov.xsd" File_Location="schemas/birn" DB="xnat"/>
-        <Data_Model File_Name="xnat.xsd" File_Location="schemas/xnat" DB="xnat"/>
-        <Data_Model File_Name="workflow.xsd" File_Location="schemas/pipeline" DB="xnat"/>
-        <Data_Model File_Name="repository.xsd" File_Location="schemas/pipeline" DB="xnat"/>
-        <Data_Model File_Name="project.xsd" File_Location="schemas/project" DB="xnat"/>
-        <Data_Model File_Name="assessments.xsd" File_Location="schemas/assessments" DB="xnat"/>
-        <Data_Model File_Name="catalog.xsd" File_Location="schemas/catalog" DB="xnat"/>
-        <Data_Model File_Name="protocolValidation.xsd" File_Location="schemas/validation" DB="xnat"/>
-        <Data_Model File_Name="screeningAssessment.xsd" File_Location="schemas/screening" DB="xnat"/>
-    </Models>
-</Instance_Settings>
diff --git a/src/main/webapp/WEB-INF/conf/xnat-security.xml b/src/main/webapp/WEB-INF/conf/xnat-security.xml
index 408afbb2..30dabc77 100644
--- a/src/main/webapp/WEB-INF/conf/xnat-security.xml
+++ b/src/main/webapp/WEB-INF/conf/xnat-security.xml
@@ -80,7 +80,7 @@
         <security:custom-filter position="CHANNEL_FILTER" ref="channelProcessingFilter"/>
         <security:custom-filter before="FORM_LOGIN_FILTER" ref="customAuthenticationFilter"/>
         <security:custom-filter after="BASIC_AUTH_FILTER" ref="customBasicAuthenticationFilter"/>
-		<security:custom-filter before="REMEMBER_ME_FILTER" ref="arcSpecFilter"/>
+		<security:custom-filter before="REMEMBER_ME_FILTER" ref="xnatInitCheckFilter"/>
 		<security:custom-filter after="SECURITY_CONTEXT_FILTER" ref="expiredPasswordFilter"/>
         <security:custom-filter position="CONCURRENT_SESSION_FILTER" ref="concurrencyFilter" />
         <security:custom-filter position="LOGOUT_FILTER" ref="logoutFilter" />
@@ -218,7 +218,7 @@
         <property name="emailVerificationDestination" value="/data/services/sendEmailVerification"/>
     </bean>
 	
-	<bean id="arcSpecFilter" class="org.nrg.xnat.security.XnatArcSpecFilter">
+	<bean id="xnatInitCheckFilter" class="org.nrg.xnat.security.XnatInitCheckFilter">
         <property name="initializationPath" value="/services/settings/initialize"/>
         <property name="configurationPath" value="/app/template/Configuration.vm"/>
         <property name="nonAdminErrorPath" value="/app/template/Unconfigured.vm"/>
-- 
GitLab