Move websession directory resolving into a provider Change-Id: Ie69d42ea18deb325c1dbd81d3551b58460d24352
diff --git a/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/FlatFileWebSession.java b/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/FlatFileWebSession.java index cb02265..475ff41 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/FlatFileWebSession.java +++ b/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/FlatFileWebSession.java
@@ -14,6 +14,7 @@ package com.googlesource.gerrit.plugins.websession.flatfile; +import com.google.gerrit.extensions.annotations.RootRelative; import com.google.gerrit.extensions.registration.DynamicItem; import com.google.gerrit.httpd.CacheBasedWebSession; import com.google.gerrit.httpd.WebSession; @@ -21,12 +22,17 @@ import com.google.gerrit.server.AnonymousUser; import com.google.gerrit.server.IdentifiedUser.RequestFactory; import com.google.gerrit.server.config.AuthConfig; +import com.google.gerrit.server.config.PluginConfigFactory; +import com.google.gerrit.server.config.SitePaths; import com.google.inject.AbstractModule; import com.google.inject.Inject; import com.google.inject.Provider; +import com.google.inject.Provides; +import com.google.inject.Singleton; import com.google.inject.servlet.RequestScoped; import com.google.inject.servlet.ServletScopes; -import com.google.gerrit.extensions.annotations.RootRelative; + +import java.io.File; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; @@ -41,6 +47,14 @@ DynamicItem.bind(binder(), WebSession.class) .to(FlatFileWebSession.class).in(RequestScoped.class); } + + @Provides + @Singleton + @WebSessionDir + File getWebSessionDir(SitePaths site, PluginConfigFactory cfg) { + return new File(cfg.getFromGerritConfig("websession-flatfile").getString( + "directory", site.site_path + "/websessions")); + } } @Inject
diff --git a/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/FlatFileWebSessionCache.java b/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/FlatFileWebSessionCache.java index 948a400..1114093 100644 --- a/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/FlatFileWebSessionCache.java +++ b/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/FlatFileWebSessionCache.java
@@ -20,8 +20,6 @@ import com.google.gerrit.common.Nullable; import com.google.gerrit.httpd.WebSessionManager; import com.google.gerrit.httpd.WebSessionManager.Val; -import com.google.gerrit.server.config.PluginConfigFactory; -import com.google.gerrit.server.config.SitePaths; import com.google.inject.Inject; import com.google.inject.Singleton; @@ -54,9 +52,8 @@ private final File dir; @Inject - public FlatFileWebSessionCache(SitePaths site, PluginConfigFactory cfg) { - dir = new File(cfg.getFromGerritConfig("websession-flatfile") - .getString("directory", site.site_path + "/websessions")); + public FlatFileWebSessionCache(@WebSessionDir File dir) { + this.dir = dir; if (!dir.exists()) { log.info(dir + " not found. Creating it."); dir.mkdir();
diff --git a/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/WebSessionDir.java b/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/WebSessionDir.java new file mode 100644 index 0000000..02288bf --- /dev/null +++ b/src/main/java/com/googlesource/gerrit/plugins/websession/flatfile/WebSessionDir.java
@@ -0,0 +1,26 @@ +// Copyright (C) 2015 The Android Open Source Project +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +package com.googlesource.gerrit.plugins.websession.flatfile; + +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +import com.google.inject.BindingAnnotation; + +import java.lang.annotation.Retention; + +@Retention(RUNTIME) +@BindingAnnotation +@interface WebSessionDir { +}