From 6da7efdb9b104672d39254dc90f4ae62b9e63205 Mon Sep 17 00:00:00 2001 From: Sebastian Sdorra Date: Thu, 16 Apr 2020 13:49:43 +0200 Subject: [PATCH] fixed missing servlets and filters WebElements with same attributes are not bound, because they are stored in a HashSet and the fields from the parent class were not used for hashCode and equals. The equals and hashCode methods of WebElementDescriptor are now taking the fields of ClassElement in account. --- .../scm/plugin/WebElementDescriptor.java | 4 +- .../sonia/scm/filter/WebElementModule.java | 57 +++++-------------- 2 files changed, 15 insertions(+), 46 deletions(-) diff --git a/scm-core/src/main/java/sonia/scm/plugin/WebElementDescriptor.java b/scm-core/src/main/java/sonia/scm/plugin/WebElementDescriptor.java index 65651b1616..d5dabb9698 100644 --- a/scm-core/src/main/java/sonia/scm/plugin/WebElementDescriptor.java +++ b/scm-core/src/main/java/sonia/scm/plugin/WebElementDescriptor.java @@ -49,9 +49,9 @@ import java.util.Arrays; * @since 2.0.0 */ @Getter -@AllArgsConstructor @ToString -@EqualsAndHashCode +@AllArgsConstructor +@EqualsAndHashCode(callSuper = true) @XmlRootElement(name = "web-element") @XmlAccessorType(XmlAccessType.FIELD) @NoArgsConstructor(access = AccessLevel.PACKAGE) diff --git a/scm-webapp/src/main/java/sonia/scm/filter/WebElementModule.java b/scm-webapp/src/main/java/sonia/scm/filter/WebElementModule.java index 9b19b9a7f5..eb5f2c1cc8 100644 --- a/scm-webapp/src/main/java/sonia/scm/filter/WebElementModule.java +++ b/scm-webapp/src/main/java/sonia/scm/filter/WebElementModule.java @@ -44,34 +44,18 @@ import javax.servlet.http.HttpServlet; * * @author Sebastian Sdorra */ -public class WebElementModule extends ServletModule -{ +public class WebElementModule extends ServletModule { /** * the logger for WebElementModule */ - private static final Logger logger = - LoggerFactory.getLogger(WebElementModule.class); + private static final Logger LOG = LoggerFactory.getLogger(WebElementModule.class); - //~--- constructors --------------------------------------------------------- - - /** - * Constructs ... - * - * - * @param pluginLoader - */ public WebElementModule(PluginLoader pluginLoader) { collector = WebElementCollector.collect(pluginLoader); } - //~--- methods -------------------------------------------------------------- - - /** - * Method description - * - */ @Override protected void configureServlets() { @@ -86,17 +70,10 @@ public class WebElementModule extends ServletModule } } - /** - * Method description - * - * - * @param filter - */ - private void bindFilter(TypedWebElementDescriptor filter) - { + private void bindFilter(TypedWebElementDescriptor filter) { Class clazz = filter.getClazz(); - logger.info("bind filter {} to filter chain", clazz); + LOG.info("bind filter {} to filter chain", clazz); // filters must be in singleton scope bind(clazz).in(Scopes.SINGLETON); @@ -104,12 +81,13 @@ public class WebElementModule extends ServletModule WebElementDescriptor opts = filter.getDescriptor(); FilterKeyBindingBuilder builder; - if (opts.isRegex()) - { + if (opts.isRegex()) { + LOG.debug("bind regex filter {} to {} and {}", clazz, opts.getPattern(), opts.getMorePatterns()); builder = filterRegex(opts.getPattern(), opts.getMorePatterns()); } else { + LOG.debug("bind glob filter {} to {} and {}", clazz, opts.getPattern(), opts.getMorePatterns()); builder = filter(opts.getPattern(), opts.getMorePatterns()); } @@ -117,18 +95,10 @@ public class WebElementModule extends ServletModule builder.through(clazz); } - /** - * Method description - * - * - * @param servlet - */ - private void bindServlet( - TypedWebElementDescriptor servlet) - { + private void bindServlet(TypedWebElementDescriptor servlet) { Class clazz = servlet.getClazz(); - logger.info("bind servlet {} to servlet chain", clazz); + LOG.info("bind servlet {} to servlet chain", clazz); // filters must be in singleton scope bind(clazz).in(Scopes.SINGLETON); @@ -136,12 +106,11 @@ public class WebElementModule extends ServletModule WebElementDescriptor opts = servlet.getDescriptor(); ServletKeyBindingBuilder builder; - if (opts.isRegex()) - { + if (opts.isRegex()) { + LOG.debug("bind regex servlet {} to {} and {}", clazz, opts.getPattern(), opts.getMorePatterns()); builder = serveRegex(opts.getPattern(), opts.getMorePatterns()); - } - else - { + } else { + LOG.debug("bind glob servlet {} to {} and {}", clazz, opts.getPattern(), opts.getMorePatterns()); builder = serve(opts.getPattern(), opts.getMorePatterns()); }