]> source.dussan.org Git - gitblit.git/commitdiff
openshift war support (non express) 142/head 14/14/1
authoraholland <aholland@a1dutch.co.uk>
Mon, 24 Feb 2014 22:44:39 +0000 (22:44 +0000)
committeraholland <aholland@a1dutch.co.uk>
Mon, 24 Feb 2014 22:44:39 +0000 (22:44 +0000)
src/main/java/com/gitblit/servlet/GitblitContext.java

index 682b590cbd9c6f29a22e85fd63d37b38d0c8a614..d4ec9671e9ade1e58531849db060ea408293c617 100644 (file)
@@ -149,7 +149,11 @@ public class GitblitContext extends DaggerContext {
                        String contextRealPath = context.getRealPath("/");
                        File contextFolder = (contextRealPath != null) ? new File(contextRealPath) : null;
 
-                       if (!StringUtils.isEmpty(System.getenv("OPENSHIFT_DATA_DIR"))) {
+                       // if the base folder dosen't match the default assume they don't want to use express, 
+                       // this allows for other containers to customise the basefolder per context.
+                       String defaultBase = Constants.contextFolder$ + "/WEB-INF/data";
+                       String base = lookupBaseFolderFromJndi();
+                       if (!StringUtils.isEmpty(System.getenv("OPENSHIFT_DATA_DIR")) && defaultBase.equals(base)) {
                                // RedHat OpenShift
                                baseFolder = configureExpress(context, webxmlSettings, contextFolder, runtimeSettings);
                        } else {
@@ -184,6 +188,18 @@ public class GitblitContext extends DaggerContext {
                logger.info("");
        }
 
+       private String lookupBaseFolderFromJndi() {
+               try {
+                       // try to lookup JNDI env-entry for the baseFolder
+                       InitialContext ic = new InitialContext();
+                       Context env = (Context) ic.lookup("java:comp/env");
+                       return (String) env.lookup("baseFolder");
+               } catch (NamingException n) {
+                       logger.error("Failed to get JNDI env-entry: " + n.getExplanation());
+               }
+               return null;
+       }
+
        protected <X extends IManager> X startManager(ObjectGraph injector, Class<X> clazz) {
                logManager(clazz);
                X x = injector.get(clazz);
@@ -268,16 +284,9 @@ public class GitblitContext extends DaggerContext {
                        logger.error("");
                }
 
-               try {
-                       // try to lookup JNDI env-entry for the baseFolder
-                       InitialContext ic = new InitialContext();
-                       Context env = (Context) ic.lookup("java:comp/env");
-                       String val = (String) env.lookup("baseFolder");
-                       if (!StringUtils.isEmpty(val)) {
-                               path = val;
-                       }
-               } catch (NamingException n) {
-                       logger.error("Failed to get JNDI env-entry: " + n.getExplanation());
+               String baseFromJndi = lookupBaseFolderFromJndi();
+               if (!StringUtils.isEmpty(baseFromJndi)) {
+                       path = baseFromJndi;
                }
 
                File base = com.gitblit.utils.FileUtils.resolveParameter(Constants.contextFolder$, contextFolder, path);