You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@roller.apache.org by mr...@apache.org on 2026/08/13 12:35:31 UTC

(roller) branch fix-media-file-link-markup created (now d737206da)

This is an automated email from the ASF dual-hosted git repository.

mraible pushed a change to branch fix-media-file-link-markup
in repository https://gitbox.apache.org/repos/asf/roller.git


      at d737206da Use double-quoted attributes in the media file links inserted into new entries

This branch includes the following new commits:

     new d737206da Use double-quoted attributes in the media file links inserted into new entries

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



(roller) 01/01: Use double-quoted attributes in the media file links inserted into new entries

Posted by mr...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

mraible pushed a commit to branch fix-media-file-link-markup
in repository https://gitbox.apache.org/repos/asf/roller.git

commit d737206da0a7d2f93bc1c9d06f4192b05263023b
Author: Matt Raible <ma...@raibledesigns.com>
AuthorDate: Thu Aug 13 06:35:22 2026 -0600

    Use double-quoted attributes in the media file links inserted into new entries
    
    The "create a post from your uploaded files" flow built its image and enclosure markup with single-quoted attributes and an invalid closing </img> tag, and the resulting image did not render after publishing. The media chooser on the entry editor already inserts the same link with double quotes and a self-closing img tag, and that form works, so this flow now matches it. Reported by Greg Huber on dev@roller.
---
 .../ui/struts2/editor/EntryAddWithMediaFile.java   | 330 ++++++++---------
 logs/roller.log                                    | 409 +++++++++++++++++++++
 2 files changed, 574 insertions(+), 165 deletions(-)

diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAddWithMediaFile.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAddWithMediaFile.java
index 40c67e39b..f883e8736 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAddWithMediaFile.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryAddWithMediaFile.java
@@ -1,165 +1,165 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- *  contributor license agreements.  The ASF licenses this file to You
- * 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.  For additional information regarding
- * copyright in this work, please see the NOTICE file in the top level
- * directory of this distribution.
- */
-package org.apache.roller.weblogger.ui.struts2.editor;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.roller.weblogger.business.MediaFileManager;
-import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.pojos.MediaFile;
-import org.apache.struts2.convention.annotation.AllowedMethods;
-import org.apache.struts2.interceptor.validation.SkipValidation;
-
-/**
- * Prepares creation of a new weblog entry with an embedded pointer to a media file.
- */
-@SuppressWarnings("serial")
-// TODO: make this work @AllowedMethods({"execute"})
-public class EntryAddWithMediaFile extends MediaFileBase {
-
-    private static Log log = LogFactory.getLog(EntryAddWithMediaFile.class);
-
-    // bean for managing form data
-    private EntryBean bean = new EntryBean();
-
-    private String   weblog = null;
-    // used by MediaFileView.jsp: multiple images and optional enclosure URL to create a blog post
-    private String[] selectedImages = null;
-    // used by MediaFileView.jsp: single image to create a blog post
-    private String   selectedImage = null;
-    
-
-    public EntryAddWithMediaFile() {
-        this.actionName = "entryAdd";
-        this.desiredMenu = "editor";
-        this.pageTitle = "weblogEdit.title.newEntry";
-    }
-
-    /**
-     * Prepare bean for creating a new weblog entry with a link to a media file.
-     * @return String The result of the action.
-     */
-    @SkipValidation
-    @Override
-    public String execute() {
-        MediaFileManager manager =
-             WebloggerFactory.getWeblogger().getMediaFileManager();
-        try {
-
-            if (StringUtils.isNotEmpty(selectedImage) && selectedImages == null) {
-                selectedImages = new String[1];
-                selectedImages[0] = selectedImage;
-            }
-
-            StringBuilder sb = new StringBuilder();
-
-            if (selectedImages != null) {
-                for (String image : selectedImages) {
-                    MediaFile mediaFile = manager.getMediaFile(image);
-                    String link;
-
-                    if (mediaFile.isImageFile()) {
-                        link = "<p>" + mediaFile.getName() + "</p>";
-                        link += "<a href='<url>'><img src='<urlt>' alt='<name>' width='<width>' height='<height>'></img></a>";
-                        link = link.replace("<url>", mediaFile.getPermalink())
-                                   .replace("<urlt>", mediaFile.getThumbnailURL())
-                                   .replace("<name>", mediaFile.getName())
-                                   .replace("<width>", ""+mediaFile.getThumbnailWidth())
-                                   .replace("<height>", ""+mediaFile.getThumbnailHeight());
-                    } else {
-                        link = "<a href='<url>'><name></a> (<size> bytes, <type>)";
-                        link = link.replace("<url>", mediaFile.getPermalink())
-                                   .replace("<name>", mediaFile.getName())
-                                   .replace("<size>",""+mediaFile.getLength())
-                                   .replace("<type>",mediaFile.getContentType());
-                    }
-                    sb.append(link);
-                }
-            }
-
-            if (!StringUtils.isEmpty(bean.getEnclosureURL())) {
-                sb.append("<p>")
-                  .append(getText("mediaFileEdit.includesEnclosure"))
-                  .append("<br />")
-                  .append("<a href='" + bean.getEnclosureURL() + "'>")
-                  .append(bean.getEnclosureURL())
-                  .append("</a></p>");
-            }
-
-            bean.setText(sb.toString());
-
-        } catch (Exception e) {
-            log.error("Error while constructing media file link for new entry", e);
-        }
-        return SUCCESS;
-    }
-
-    public EntryBean getBean() {
-        return bean;
-    }
-
-    public void setBean(EntryBean bean) {
-        this.bean = bean;
-    }
-
-    /**
-     * @return the selectedImages
-     */
-    public String[] getSelectedImages() {
-        return selectedImages;
-    }
-
-    /**
-     * @param selectedImages the selectedImages to set
-     */
-    public void setSelectedImages(String[] selectedImages) {
-        this.selectedImages = selectedImages;
-    }
-
-    /**
-     * @return the weblog
-     */
-    @Override
-    public String getWeblog() {
-        return weblog;
-    }
-
-    /**
-     * @param weblog the weblog to set
-     */
-    @Override
-    public void setWeblog(String weblog) {
-        this.weblog = weblog;
-    }
-
-    /**
-     * @return the selectedImage
-     */
-    public String getSelectedImage() {
-        return selectedImage;
-    }
-
-    /**
-     * @param selectedImage the selectedImage to set
-     */
-    public void setSelectedImage(String selectedImage) {
-        this.selectedImage = selectedImage;
-    }
-
-}
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ *  contributor license agreements.  The ASF licenses this file to You
+ * 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.  For additional information regarding
+ * copyright in this work, please see the NOTICE file in the top level
+ * directory of this distribution.
+ */
+package org.apache.roller.weblogger.ui.struts2.editor;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.roller.weblogger.business.MediaFileManager;
+import org.apache.roller.weblogger.business.WebloggerFactory;
+import org.apache.roller.weblogger.pojos.MediaFile;
+import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.validation.SkipValidation;
+
+/**
+ * Prepares creation of a new weblog entry with an embedded pointer to a media file.
+ */
+@SuppressWarnings("serial")
+// TODO: make this work @AllowedMethods({"execute"})
+public class EntryAddWithMediaFile extends MediaFileBase {
+
+    private static Log log = LogFactory.getLog(EntryAddWithMediaFile.class);
+
+    // bean for managing form data
+    private EntryBean bean = new EntryBean();
+
+    private String   weblog = null;
+    // used by MediaFileView.jsp: multiple images and optional enclosure URL to create a blog post
+    private String[] selectedImages = null;
+    // used by MediaFileView.jsp: single image to create a blog post
+    private String   selectedImage = null;
+    
+
+    public EntryAddWithMediaFile() {
+        this.actionName = "entryAdd";
+        this.desiredMenu = "editor";
+        this.pageTitle = "weblogEdit.title.newEntry";
+    }
+
+    /**
+     * Prepare bean for creating a new weblog entry with a link to a media file.
+     * @return String The result of the action.
+     */
+    @SkipValidation
+    @Override
+    public String execute() {
+        MediaFileManager manager =
+             WebloggerFactory.getWeblogger().getMediaFileManager();
+        try {
+
+            if (StringUtils.isNotEmpty(selectedImage) && selectedImages == null) {
+                selectedImages = new String[1];
+                selectedImages[0] = selectedImage;
+            }
+
+            StringBuilder sb = new StringBuilder();
+
+            if (selectedImages != null) {
+                for (String image : selectedImages) {
+                    MediaFile mediaFile = manager.getMediaFile(image);
+                    String link;
+
+                    if (mediaFile.isImageFile()) {
+                        link = "<p>" + mediaFile.getName() + "</p>";
+                        link += "<a href=\"<url>\"><img src=\"<urlt>\" alt=\"<name>\" width=\"<width>\" height=\"<height>\" /></a>";
+                        link = link.replace("<url>", mediaFile.getPermalink())
+                                   .replace("<urlt>", mediaFile.getThumbnailURL())
+                                   .replace("<name>", mediaFile.getName())
+                                   .replace("<width>", ""+mediaFile.getThumbnailWidth())
+                                   .replace("<height>", ""+mediaFile.getThumbnailHeight());
+                    } else {
+                        link = "<a href=\"<url>\"><name></a> (<size> bytes, <type>)";
+                        link = link.replace("<url>", mediaFile.getPermalink())
+                                   .replace("<name>", mediaFile.getName())
+                                   .replace("<size>",""+mediaFile.getLength())
+                                   .replace("<type>",mediaFile.getContentType());
+                    }
+                    sb.append(link);
+                }
+            }
+
+            if (!StringUtils.isEmpty(bean.getEnclosureURL())) {
+                sb.append("<p>")
+                  .append(getText("mediaFileEdit.includesEnclosure"))
+                  .append("<br />")
+                  .append("<a href=\"" + bean.getEnclosureURL() + "\">")
+                  .append(bean.getEnclosureURL())
+                  .append("</a></p>");
+            }
+
+            bean.setText(sb.toString());
+
+        } catch (Exception e) {
+            log.error("Error while constructing media file link for new entry", e);
+        }
+        return SUCCESS;
+    }
+
+    public EntryBean getBean() {
+        return bean;
+    }
+
+    public void setBean(EntryBean bean) {
+        this.bean = bean;
+    }
+
+    /**
+     * @return the selectedImages
+     */
+    public String[] getSelectedImages() {
+        return selectedImages;
+    }
+
+    /**
+     * @param selectedImages the selectedImages to set
+     */
+    public void setSelectedImages(String[] selectedImages) {
+        this.selectedImages = selectedImages;
+    }
+
+    /**
+     * @return the weblog
+     */
+    @Override
+    public String getWeblog() {
+        return weblog;
+    }
+
+    /**
+     * @param weblog the weblog to set
+     */
+    @Override
+    public void setWeblog(String weblog) {
+        this.weblog = weblog;
+    }
+
+    /**
+     * @return the selectedImage
+     */
+    public String getSelectedImage() {
+        return selectedImage;
+    }
+
+    /**
+     * @param selectedImage the selectedImage to set
+     */
+    public void setSelectedImage(String selectedImage) {
+        this.selectedImage = selectedImage;
+    }
+
+}
diff --git a/logs/roller.log b/logs/roller.log
new file mode 100644
index 000000000..4c1e9b6b9
--- /dev/null
+++ b/logs/roller.log
@@ -0,0 +1,409 @@
+INFO  2026-08-12 08:47:12 [main] ContextLoader - Root WebApplicationContext: initialization started
+INFO  2026-08-12 08:47:13 [main] SpringSecurityCoreVersion - You are running with Spring Security Core 5.8.14
+INFO  2026-08-12 08:47:13 [main] SecurityNamespaceHandler - Spring Security 'config' module version is 5.8.14
+INFO  2026-08-12 08:47:13 [main] HttpSecurityBeanDefinitionParser - Checking sorted filter chain: [Root bean: class [org.springframework.security.web.session.DisableEncodeUrlFilter]; scope=; abstract=false; lazyInit=null; autowireMode=0; dependencyCheck=0; autowireCandidate=true; primary=false; factoryBeanName=null; factoryMethodName=null; initMethodName=null; destroyMethodName=null, order = 100, Root bean: class [org.springframework.security.web.context.SecurityContextPersistenceFilter] [...]
+INFO  2026-08-12 08:47:13 [main] DefaultSecurityFilterChain - Will not secure Ant [pattern='/images/**']
+INFO  2026-08-12 08:47:13 [main] DefaultSecurityFilterChain - Will not secure Ant [pattern='/scripts/**']
+INFO  2026-08-12 08:47:13 [main] DefaultSecurityFilterChain - Will not secure Ant [pattern='/styles/**']
+WARN  2026-08-12 08:47:13 [main] RealmVerifier - RP discovery / realm validation disabled; 
+INFO  2026-08-12 08:47:13 [main] DefaultSecurityFilterChain - Will secure any request with [org.springframework.security.web.session.DisableEncodeUrlFilter@5276330a, org.springframework.security.web.context.SecurityContextPersistenceFilter@221961f2, org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter@541d8a9e, org.springframework.security.web.header.HeaderWriterFilter@51c0346d, org.springframework.security.web.authentication.UsernamePasswordAuthenticat [...]
+INFO  2026-08-12 08:47:13 [main] DefaultFilterChainValidator - Checking whether login URL '/roller-ui/login.rol' is accessible with your configuration
+INFO  2026-08-12 08:47:13 [main] ContextLoader - Root WebApplicationContext initialized in 266 ms
+INFO  2026-08-12 08:47:13 [main] DatabaseProvider - SUCCESS: Got parameters. Using configuration type JDBC_PROPERTIES
+INFO  2026-08-12 08:47:13 [main] DatabaseProvider - -- Using JDBC driver class: org.apache.derby.jdbc.ClientDriver
+INFO  2026-08-12 08:47:13 [main] DatabaseProvider - -- Using JDBC connection URL: jdbc:derby://localhost:4224/memory:rollerdb;create=true
+INFO  2026-08-12 08:47:13 [main] DatabaseProvider - -- Using JDBC username: app
+INFO  2026-08-12 08:47:13 [main] DatabaseProvider - -- Using JDBC password: [hidden]
+INFO  2026-08-12 08:47:13 [main] DatabaseProvider - SUCCESS: loaded JDBC driver class [org.apache.derby.jdbc.ClientDriver]
+WARN  2026-08-12 08:47:13 [main] WebloggerStartup - Failed to setup mail provider, continuing anyways.
+Reason: ERROR connecting to mail server
+INFO  2026-08-12 08:47:13 [main] WebloggerStartup - The cause of setting up mail provider error was: 
+org.apache.roller.weblogger.business.startup.StartupException: ERROR connecting to mail server
+	at org.apache.roller.weblogger.business.MailProvider.<init>(MailProvider.java:99) ~[classes/:?]
+	at org.apache.roller.weblogger.business.startup.WebloggerStartup.prepare(WebloggerStartup.java:177) [classes/:?]
+	at org.apache.roller.weblogger.ui.core.RollerContext.contextInitialized(RollerContext.java:154) [classes/:?]
+	at org.eclipse.jetty.server.handler.ContextHandler.callContextInitialized(ContextHandler.java:1049) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletContextHandler.callContextInitialized(ServletContextHandler.java:624) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.ContextHandler.contextInitialized(ContextHandler.java:984) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletHandler.initialize(ServletHandler.java:740) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletContextHandler.startContext(ServletContextHandler.java:392) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.webapp.WebAppContext.startContext(WebAppContext.java:1304) [jetty-webapp-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.ContextHandler.doStart(ContextHandler.java:901) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletContextHandler.doStart(ServletContextHandler.java:306) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.webapp.WebAppContext.doStart(WebAppContext.java:532) [jetty-webapp-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.maven.plugin.MavenWebAppContext.doStart(MavenWebAppContext.java:294) [jetty-maven-plugin-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:121) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.component.ContainerLifeCycle.start(ContainerLifeCycle.java:171) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.Server.start(Server.java:470) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.component.ContainerLifeCycle.doStart(ContainerLifeCycle.java:114) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.AbstractHandler.doStart(AbstractHandler.java:89) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.Server.doStart(Server.java:415) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.maven.plugin.JettyEmbedder.doStart(JettyEmbedder.java:224) [jetty-maven-plugin-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.component.AbstractLifeCycle.start(AbstractLifeCycle.java:93) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.maven.plugin.JettyRunMojo.startJettyEmbedded(JettyRunMojo.java:97) [jetty-maven-plugin-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.maven.plugin.AbstractWebAppMojo.startJetty(AbstractWebAppMojo.java:441) [jetty-maven-plugin-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.maven.plugin.AbstractWebAppMojo.execute(AbstractWebAppMojo.java:419) [jetty-maven-plugin-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.maven.plugin.JettyRunMojo.execute(JettyRunMojo.java:85) [jetty-maven-plugin-10.0.24.jar:10.0.24]
+	at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo(DefaultBuildPluginManager.java:126) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2(MojoExecutor.java:328) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute(MojoExecutor.java:316) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:212) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:174) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.lifecycle.internal.MojoExecutor.access$000(MojoExecutor.java:75) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.lifecycle.internal.MojoExecutor$1.run(MojoExecutor.java:162) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.plugin.DefaultMojosExecutionStrategy.execute(DefaultMojosExecutionStrategy.java:39) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.lifecycle.internal.MojoExecutor.execute(MojoExecutor.java:159) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:105) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject(LifecycleModuleBuilder.java:73) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build(SingleThreadedBuilder.java:53) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.lifecycle.internal.LifecycleStarter.execute(LifecycleStarter.java:118) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:261) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:173) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:101) [maven-core-3.9.8.jar:3.9.8]
+	at org.apache.maven.cli.MavenCli.execute(MavenCli.java:903) [maven-embedder-3.9.8.jar:3.9.8]
+	at org.apache.maven.cli.MavenCli.doMain(MavenCli.java:280) [maven-embedder-3.9.8.jar:3.9.8]
+	at org.apache.maven.cli.MavenCli.main(MavenCli.java:203) [maven-embedder-3.9.8.jar:3.9.8]
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
+	at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[?:?]
+	at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced(Launcher.java:255) [plexus-classworlds-2.8.0.jar:?]
+	at org.codehaus.plexus.classworlds.launcher.Launcher.launch(Launcher.java:201) [plexus-classworlds-2.8.0.jar:?]
+	at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode(Launcher.java:361) [plexus-classworlds-2.8.0.jar:?]
+	at org.codehaus.plexus.classworlds.launcher.Launcher.main(Launcher.java:314) [plexus-classworlds-2.8.0.jar:?]
+INFO  2026-08-12 08:47:13 [main] RollerContext - 
+--------------------------------------------------------------
+Roller Weblogger startup INCOMPLETE, user interaction required
+--------------------------------------------------------------
+INFO  2026-08-12 08:47:13 [main] RollerContext - Remember Me enabled: false
+WARN  2026-08-12 08:47:13 [main] RollerContext - New passwords are stored in plain text!
+INFO  2026-08-12 08:47:13 [main] RollerContext - Password Encryption Algorithm set to 'noop'
+INFO  2026-08-12 08:47:13 [main] RollerContext - Initializing Velocity
+INFO  2026-08-12 08:47:13 [main] StrutsTilesListener - Starting Struts Tiles 3 integration ...
+INFO  2026-08-12 08:47:13 [main] TilesAccess - Publishing TilesContext for context: org.apache.struts2.tiles.StrutsWildcardServletApplicationContext
+INFO  2026-08-12 08:47:13 [main] StrutsSpringObjectFactory - Initializing Struts-Spring integration...
+INFO  2026-08-12 08:47:13 [main] SpringObjectFactory - Setting autowire strategy to name
+INFO  2026-08-12 08:47:13 [main] StrutsSpringObjectFactory - ... initialized Struts-Spring integration successfully
+WARN  2026-08-12 08:47:13 [main] DefaultExcludedPatternsChecker - Replacing excluded patterns [[(^|\%\{)((#?)(top(\.|\['|\[")|\[\d\]\.)?)(dojo|struts|session|request|response|application|servlet(Request|Response|Context)|parameters|context|_memberAccess)(\.|\[).*, .*(^|\.|\[|\'|"|get)class(\(\.|\[|\'|").*]] with [[^method:.*, ^action:.*]], be aware that this affects all instances and safety of your application!
+WARN  2026-08-12 08:47:13 [main] PackageBasedActionConfigBuilder - The includeJars pattern [false] did not match any jars in the classpath
+INFO  2026-08-12 08:47:13 [main] RequestMappingFilter - Request mapping filter initialized, 1 mappers configured.
+INFO  2026-08-12 08:47:13 [main] RequestMappingFilter - [class org.apache.roller.weblogger.ui.rendering.WeblogRequestMapper]
+INFO  2026-08-12 08:47:13 [main] IPBanFilter - INIT IPBanFilter
+INFO  2026-08-12 08:47:13 [main] WebjarsServlet - The webjars-locator-core library is not present, WebjarsServlet will not try to resolve the version of requested WebJar assets (for the version agnostic way of working)
+INFO  2026-08-12 08:47:13 [main] WebjarsServlet - WebjarsServlet initialization completed
+INFO  2026-08-12 08:47:13 [main] FeedServlet - Initializing FeedServlet
+INFO  2026-08-12 08:47:13 [main] WeblogFeedCache - {size=200, id=cache.weblogfeed, enabled=false, timeout=3600}
+WARN  2026-08-12 08:47:13 [main] WeblogFeedCache - Caching has been DISABLED
+INFO  2026-08-12 08:47:13 [main] SiteWideCache - {size=50, id=cache.sitewide, enabled=false, timeout=1800}
+WARN  2026-08-12 08:47:13 [main] SiteWideCache - Caching has been DISABLED
+INFO  2026-08-12 08:47:13 [main] MediaResourceServlet - Initializing ResourceServlet
+INFO  2026-08-12 08:47:13 [main] PageServlet - Initializing PageServlet
+INFO  2026-08-12 08:47:13 [main] WeblogPageCache - {size=400, id=cache.weblogpage, enabled=false, timeout=3600}
+WARN  2026-08-12 08:47:13 [main] WeblogPageCache - Caching has been DISABLED
+INFO  2026-08-12 08:47:13 [main] PageServlet - Referrer spam check enabled = false
+INFO  2026-08-12 08:47:13 [main] ResourceServlet - Initializing ResourceServlet
+INFO  2026-08-12 08:47:13 [main] SearchServlet - Initializing SearchServlet
+INFO  2026-08-12 08:47:13 [main] CommentServlet - Initializing CommentServlet
+INFO  2026-08-12 08:47:13 [main] CommentValidationManager - Configured 3 CommentValidators
+INFO  2026-08-12 08:47:13 [main] CommentValidationManager - [class org.apache.roller.weblogger.ui.rendering.plugins.comments.BannedwordslistCommentValidator,class org.apache.roller.weblogger.ui.rendering.plugins.comments.ExcessLinksCommentValidator,class org.apache.roller.weblogger.ui.rendering.plugins.comments.ExcessSizeCommentValidator]
+INFO  2026-08-12 08:47:13 [main] CommentServlet - Comment Throttling DISABLED
+INFO  2026-08-12 08:47:13 [main] PlanetFeedServlet - Initializing PlanetRssServlet
+INFO  2026-08-12 08:47:13 [main] PlanetCache - Planet cache = {size=10, id=cache.planet, enabled=false, timeout=1800}
+WARN  2026-08-12 08:47:13 [main] PlanetCache - Caching has been DISABLED
+INFO  2026-08-12 08:47:13 [main] RSDServlet - Initializing RSDServlet
+INFO  2026-08-12 08:47:13 [main] CommentValidationManager - Configured 3 CommentValidators
+INFO  2026-08-12 08:47:13 [main] CommentValidationManager - [class org.apache.roller.weblogger.ui.rendering.plugins.comments.BannedwordslistCommentValidator,class org.apache.roller.weblogger.ui.rendering.plugins.comments.ExcessLinksCommentValidator,class org.apache.roller.weblogger.ui.rendering.plugins.comments.ExcessSizeCommentValidator]
+INFO  2026-08-12 08:47:13 [main] PreviewResourceServlet - Initializing PreviewResourceServlet
+INFO  2026-08-12 08:47:13 [main] PreviewServlet - Initializing PreviewServlet
+WARN  2026-08-12 08:47:16 [qtp580515543-44] StrutsLocalizedTextProvider - Trying to find text with null key!
+WARN  2026-08-12 08:48:27 [qtp580515543-57] StrutsLocalizedTextProvider - Trying to find text with null key!
+INFO  2026-08-12 08:48:27 [qtp580515543-60] SaltCache - {size=5000, id=cache.salt, timeout=3600, enabled=true}
+INFO  2026-08-12 08:48:27 [qtp580515543-60] CacheManager - Cache Manager Initialized.
+INFO  2026-08-12 08:48:27 [qtp580515543-60] CacheManager - Cache Factory = org.apache.roller.weblogger.util.cache.ExpiringLRUCacheFactoryImpl
+WARN  2026-08-12 08:49:06 [qtp580515543-48] StrutsLocalizedTextProvider - Trying to find text with null key!
+INFO  2026-08-12 08:49:19 [qtp580515543-57] DatabaseInstaller - Creating Roller Weblogger database tables.
+WARN  2026-08-12 08:49:19 [qtp580515543-57] StrutsLocalizedTextProvider - Trying to find text with null key!
+INFO  2026-08-12 08:49:28 [qtp580515543-47] Install - ENTERING
+INFO  2026-08-12 08:49:28 [qtp580515543-47] WebloggerFactory - Bootstrapping Roller Weblogger business tier
+INFO  2026-08-12 08:49:28 [qtp580515543-47] WebloggerFactory - Weblogger Provider = org.apache.roller.weblogger.business.GuiceWebloggerProvider
+INFO  2026-08-12 08:49:28 [qtp580515543-47] DatabaseProvider - SUCCESS: Got parameters. Using configuration type JDBC_PROPERTIES
+INFO  2026-08-12 08:49:28 [qtp580515543-47] DatabaseProvider - -- Using JDBC driver class: org.apache.derby.jdbc.ClientDriver
+INFO  2026-08-12 08:49:28 [qtp580515543-47] DatabaseProvider - -- Using JDBC connection URL: jdbc:derby://localhost:4224/memory:rollerdb;create=true
+INFO  2026-08-12 08:49:28 [qtp580515543-47] DatabaseProvider - -- Using JDBC username: app
+INFO  2026-08-12 08:49:28 [qtp580515543-47] DatabaseProvider - -- Using JDBC password: [hidden]
+INFO  2026-08-12 08:49:28 [qtp580515543-47] DatabaseProvider - SUCCESS: loaded JDBC driver class [org.apache.derby.jdbc.ClientDriver]
+INFO  2026-08-12 08:49:28 [qtp580515543-47] JPAPersistenceStrategy - hibernate.transaction.factory_class: org.hibernate.transaction.JDBCTransactionFactory
+INFO  2026-08-12 08:49:28 [qtp580515543-47] JPAPersistenceStrategy - eclipselink.logging.logger: org.eclipse.persistence.logging.slf4j.SLF4JLogger
+INFO  2026-08-12 08:49:28 [qtp580515543-47] JPAPersistenceStrategy - hibernate.dialect: org.hibernate.dialect.DerbyDialect
+INFO  2026-08-12 08:49:28 [qtp580515543-47] JPAPersistenceStrategy - eclipselink.persistence-context.flush-mode: auto
+INFO  2026-08-12 08:49:28 [qtp580515543-47] JPAPersistenceStrategy - hibernate.transaction.manager_lookup_class: org.hibernate.transaction.JBossTransactionManagerLookup
+INFO  2026-08-12 08:49:29 [qtp580515543-47] LuceneIndexManager - search enabled: true
+INFO  2026-08-12 08:49:29 [qtp580515543-47] LuceneIndexManager - index dir: /Users/mraible/dev/roller-master/app/target/work/search-index
+INFO  2026-08-12 08:49:29 [qtp580515543-47] PluginManagerImpl - Configured comment plugins
+INFO  2026-08-12 08:49:29 [qtp580515543-47] PluginManagerImpl - [class org.apache.roller.weblogger.business.plugins.comment.LinkMarkupPlugin,class org.apache.roller.weblogger.business.plugins.comment.AutoformatPlugin,class org.apache.roller.weblogger.business.plugins.comment.HTMLSubsetPlugin]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] ThreadManagerImpl - Instantiating Thread Manager
+INFO  2026-08-12 08:49:29 [qtp580515543-47] WebloggerFactory - Roller Weblogger business tier successfully bootstrapped
+INFO  2026-08-12 08:49:29 [qtp580515543-47] WebloggerFactory -    Version: 6.1.5
+INFO  2026-08-12 08:49:29 [qtp580515543-47] WebloggerFactory -    Revision: rdb3915af6f6f198cc8efed8da172f7c4acad157f
+INFO  2026-08-12 08:49:29 [qtp580515543-47] WebloggerImpl - Initializing Roller Weblogger business tier
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property site.name not yet in roller_properties database table, will store with default value of [Roller Site`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property site.shortName not yet in roller_properties database table, will store with default value of [Front Page`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property site.description not yet in roller_properties database table, will store with default value of [A default install of the Roller Weblogger open source blog server`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property site.frontpage.weblog.handle not yet in roller_properties database table, will store with default value of [`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property site.frontpage.weblog.aggregated not yet in roller_properties database table, will store with default value of [false`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property site.adminemail not yet in roller_properties database table, will store with default value of [`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property site.absoluteurl not yet in roller_properties database table, will store with default value of [`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property pings.suspendPingProcessing not yet in roller_properties database table, will store with default value of [false`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property users.registration.enabled not yet in roller_properties database table, will store with default value of [false`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property user.account.email.activation not yet in roller_properties database table, will store with default value of [false`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property users.registration.url not yet in roller_properties database table, will store with default value of [`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property site.allowUserWeblogCreation not yet in roller_properties database table, will store with default value of [true`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property users.editor.pages not yet in roller_properties database table, will store with default value of [editor-text.jsp,editor-summernote.jsp`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property webservices.enableXmlRpc not yet in roller_properties database table, will store with default value of [false`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property webservices.enableAtomPub not yet in roller_properties database table, will store with default value of [false`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property webservices.atomPubAuth not yet in roller_properties database table, will store with default value of [basic`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property site.pages.maxEntries not yet in roller_properties database table, will store with default value of [30`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property site.newsfeeds.defaultEntries not yet in roller_properties database table, will store with default value of [30`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property site.newsfeeds.styledFeeds not yet in roller_properties database table, will store with default value of [true`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property users.comments.enabled not yet in roller_properties database table, will store with default value of [true`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property comments.ignoreSpam.enabled not yet in roller_properties database table, will store with default value of [false`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property users.trackbacks.enabled not yet in roller_properties database table, will store with default value of [true`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property trackbacks.ignoreSpam.enabled not yet in roller_properties database table, will store with default value of [true`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property users.comments.htmlenabled not yet in roller_properties database table, will store with default value of [false`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property users.comments.plugins not yet in roller_properties database table, will store with default value of [HTMLSubset`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property users.comments.emailnotify not yet in roller_properties database table, will store with default value of [false`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property users.moderation.required not yet in roller_properties database table, will store with default value of [false`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property site.trackbackVerification.enabled not yet in roller_properties database table, will store with default value of [false`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property uploads.enabled not yet in roller_properties database table, will store with default value of [false`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property uploads.types.allowed not yet in roller_properties database table, will store with default value of [`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property uploads.types.forbid not yet in roller_properties database table, will store with default value of [exe`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property uploads.file.maxsize not yet in roller_properties database table, will store with default value of [2.00`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property uploads.dir.maxsize not yet in roller_properties database table, will store with default value of [20.00`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property users.themes.path not yet in roller_properties database table, will store with default value of [/themes`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property themes.customtheme.allowed not yet in roller_properties database table, will store with default value of [false`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property spam.bannedwordslist not yet in roller_properties database table, will store with default value of [`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property analytics.default.tracking.code not yet in roller_properties database table, will store with default value of [`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] JPAPropertiesManagerImpl - Property analytics.code.override.allowed not yet in roller_properties database table, will store with default value of [true`]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] ThemeManagerImpl - Loading themes from /Users/mraible/dev/roller-master/app/../app/src/main/webapp/themes...
+INFO  2026-08-12 08:49:29 [qtp580515543-47] ThemeManagerImpl - Loaded theme 'basic'
+INFO  2026-08-12 08:49:29 [qtp580515543-47] ThemeManagerImpl - Loaded theme 'basicmobile'
+INFO  2026-08-12 08:49:29 [qtp580515543-47] ThemeManagerImpl - Loaded theme 'gaurav'
+INFO  2026-08-12 08:49:29 [qtp580515543-47] ThemeManagerImpl - Loaded theme 'fauxcoly'
+INFO  2026-08-12 08:49:29 [qtp580515543-47] ThemeManagerImpl - Loaded theme 'frontpage'
+INFO  2026-08-12 08:49:29 [qtp580515543-47] ThemeManagerImpl - Successfully loaded 5 themes from disk.
+INFO  2026-08-12 08:49:29 [qtp580515543-47] ThreadManagerImpl - Initializing task: ScheduledEntriesTask
+INFO  2026-08-12 08:49:29 [qtp580515543-47] ThreadManagerImpl - Initializing task: ResetHitCountsTask
+INFO  2026-08-12 08:49:29 [qtp580515543-47] ThreadManagerImpl - Initializing task: PingQueueTask
+INFO  2026-08-12 08:49:29 [qtp580515543-47] ThreadManagerImpl - Initializing task: TestTask
+INFO  2026-08-12 08:49:29 [qtp580515543-47] LuceneIndexManager - Index was inconsistent. Rebuilding index in the background...
+INFO  2026-08-12 08:49:29 [qtp580515543-47] PingConfig - Creating common ping target 'Technorati' from configuration properties.
+INFO  2026-08-12 08:49:29 [qtp580515543-47] PingConfig - Creating common ping target 'Weblogs.com' from configuration properties.
+INFO  2026-08-12 08:49:29 [qtp580515543-47] PingConfig - Creating common ping target 'blo.gs' from configuration properties.
+INFO  2026-08-12 08:49:29 [qtp580515543-47] PingConfig - Creating common ping target 'IceRocket' from configuration properties.
+INFO  2026-08-12 08:49:29 [pool-3-thread-1] RebuildWebsiteIndexOperation - Completed rebuilding index for all users in '0.031' secs
+INFO  2026-08-12 08:49:29 [qtp580515543-47] WebloggerImpl - Roller Weblogger business tier successfully initialized
+INFO  2026-08-12 08:49:29 [qtp580515543-47] DatabaseProvider - SUCCESS: Got parameters. Using configuration type JDBC_PROPERTIES
+INFO  2026-08-12 08:49:29 [qtp580515543-47] DatabaseProvider - -- Using JDBC driver class: org.apache.derby.jdbc.ClientDriver
+INFO  2026-08-12 08:49:29 [qtp580515543-47] DatabaseProvider - -- Using JDBC connection URL: jdbc:derby://localhost:4224/memory:rollerdb;create=true
+INFO  2026-08-12 08:49:29 [qtp580515543-47] DatabaseProvider - -- Using JDBC username: app
+INFO  2026-08-12 08:49:29 [qtp580515543-47] DatabaseProvider - -- Using JDBC password: [hidden]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] DatabaseProvider - SUCCESS: loaded JDBC driver class [org.apache.derby.jdbc.ClientDriver]
+WARN  2026-08-12 08:49:29 [qtp580515543-47] WebloggerStartup - Failed to setup mail provider, continuing anyways.
+Reason: ERROR connecting to mail server
+INFO  2026-08-12 08:49:29 [qtp580515543-47] WebloggerStartup - The cause of setting up mail provider error was: 
+org.apache.roller.weblogger.business.startup.StartupException: ERROR connecting to mail server
+	at org.apache.roller.weblogger.business.MailProvider.<init>(MailProvider.java:99) ~[classes/:?]
+	at org.apache.roller.weblogger.business.startup.WebloggerStartup.prepare(WebloggerStartup.java:177) [classes/:?]
+	at org.apache.roller.weblogger.ui.struts2.core.Install.bootstrap(Install.java:167) [classes/:?]
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:?]
+	at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77) ~[?:?]
+	at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:?]
+	at java.base/java.lang.reflect.Method.invoke(Method.java:569) ~[?:?]
+	at ognl.OgnlRuntime.invokeMethodInsideSandbox(OgnlRuntime.java:1266) [ognl-3.1.29.jar:?]
+	at ognl.OgnlRuntime.invokeMethod(OgnlRuntime.java:1251) [ognl-3.1.29.jar:?]
+	at ognl.OgnlRuntime.callAppropriateMethod(OgnlRuntime.java:1969) [ognl-3.1.29.jar:?]
+	at ognl.ObjectMethodAccessor.callMethod(ObjectMethodAccessor.java:68) [ognl-3.1.29.jar:?]
+	at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethodWithDebugInfo(XWorkMethodAccessor.java:98) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.ognl.accessor.XWorkMethodAccessor.callMethod(XWorkMethodAccessor.java:90) [struts2-core-2.5.29.jar:2.5.29]
+	at ognl.OgnlRuntime.callMethod(OgnlRuntime.java:2045) [ognl-3.1.29.jar:?]
+	at ognl.ASTMethod.getValueBody(ASTMethod.java:97) [ognl-3.1.29.jar:?]
+	at ognl.SimpleNode.evaluateGetValueBody(SimpleNode.java:212) [ognl-3.1.29.jar:?]
+	at ognl.SimpleNode.getValue(SimpleNode.java:258) [ognl-3.1.29.jar:?]
+	at ognl.Ognl.getValue(Ognl.java:537) [ognl-3.1.29.jar:?]
+	at ognl.Ognl.getValue(Ognl.java:501) [ognl-3.1.29.jar:?]
+	at com.opensymphony.xwork2.ognl.OgnlUtil$3.execute(OgnlUtil.java:492) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.ognl.OgnlUtil.compileAndExecuteMethod(OgnlUtil.java:544) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.ognl.OgnlUtil.callMethod(OgnlUtil.java:490) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:438) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:293) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:254) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:179) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:263) [struts2-core-2.5.29.jar:2.5.29]
+	at org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:49) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at org.apache.roller.weblogger.ui.struts2.util.UIActionPrepareInterceptor.doIntercept(UIActionPrepareInterceptor.java:55) [classes/:?]
+	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at org.apache.roller.weblogger.ui.struts2.util.UISecurityInterceptor.doIntercept(UISecurityInterceptor.java:123) [classes/:?]
+	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at org.apache.roller.weblogger.ui.struts2.util.UIActionInterceptor.doIntercept(UIActionInterceptor.java:89) [classes/:?]
+	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.interceptor.ConversionErrorInterceptor.doIntercept(ConversionErrorInterceptor.java:142) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:140) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.interceptor.ParametersInterceptor.doIntercept(ParametersInterceptor.java:140) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:99) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.interceptor.StaticParametersInterceptor.intercept(StaticParametersInterceptor.java:201) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at org.apache.struts2.interceptor.MultiselectInterceptor.intercept(MultiselectInterceptor.java:67) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at org.apache.struts2.interceptor.CheckboxInterceptor.intercept(CheckboxInterceptor.java:89) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at org.apache.struts2.interceptor.FileUploadInterceptor.intercept(FileUploadInterceptor.java:243) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.interceptor.ChainingInterceptor.intercept(ChainingInterceptor.java:160) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at org.apache.struts2.interceptor.I18nInterceptor.intercept(I18nInterceptor.java:121) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at org.apache.struts2.interceptor.ServletConfigInterceptor.intercept(ServletConfigInterceptor.java:167) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.interceptor.ExceptionMappingInterceptor.intercept(ExceptionMappingInterceptor.java:196) [struts2-core-2.5.29.jar:2.5.29]
+	at com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:249) [struts2-core-2.5.29.jar:2.5.29]
+	at org.apache.struts2.factory.StrutsActionProxy.execute(StrutsActionProxy.java:48) [struts2-core-2.5.29.jar:2.5.29]
+	at org.apache.struts2.dispatcher.Dispatcher.serviceAction(Dispatcher.java:574) [struts2-core-2.5.29.jar:2.5.29]
+	at org.apache.struts2.dispatcher.ExecuteOperations.executeAction(ExecuteOperations.java:79) [struts2-core-2.5.29.jar:2.5.29]
+	at org.apache.struts2.dispatcher.filter.StrutsPrepareAndExecuteFilter.doFilter(StrutsPrepareAndExecuteFilter.java:141) [struts2-core-2.5.29.jar:2.5.29]
+	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.apache.roller.weblogger.ui.rendering.filters.RequestMappingFilter.doFilter(RequestMappingFilter.java:108) [classes/:?]
+	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.apache.roller.weblogger.ui.core.filters.ValidateSaltFilter.doFilter(ValidateSaltFilter.java:84) [classes/:?]
+	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.apache.roller.weblogger.ui.core.filters.LoadSaltFilter.doFilter(LoadSaltFilter.java:49) [classes/:?]
+	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.apache.roller.weblogger.ui.core.filters.InitFilter.doFilter(InitFilter.java:82) [classes/:?]
+	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.apache.roller.weblogger.ui.core.filters.PersistenceSessionFilter.doFilter(PersistenceSessionFilter.java:59) [classes/:?]
+	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.apache.roller.weblogger.ui.core.filters.BootstrapFilter.doFilter(BootstrapFilter.java:68) [classes/:?]
+	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:352) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:117) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:83) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:126) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:120) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:131) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:85) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:100) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:145) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.authentication.rememberme.RememberMeAuthenticationFilter.doFilter(RememberMeAuthenticationFilter.java:101) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:164) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:227) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:221) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:227) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.authentication.AbstractAuthenticationProcessingFilter.doFilter(AbstractAuthenticationProcessingFilter.java:221) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.header.HeaderWriterFilter.doHeadersAfter(HeaderWriterFilter.java:90) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:75) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.39.jar:5.3.39]
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:62) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.39.jar:5.3.39]
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:117) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:87) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.session.DisableEncodeUrlFilter.doFilterInternal(DisableEncodeUrlFilter.java:42) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:117) [spring-web-5.3.39.jar:5.3.39]
+	at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:361) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:225) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:190) [spring-security-web-5.8.14.jar:5.8.14]
+	at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:354) [spring-web-5.3.39.jar:5.3.39]
+	at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:267) [spring-web-5.3.39.jar:5.3.39]
+	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.apache.roller.weblogger.ui.core.filters.SpringFirewallExceptionFilter.doFilter(SpringFirewallExceptionFilter.java:51) [classes/:?]
+	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.apache.roller.weblogger.ui.core.filters.CharEncodingFilter.doFilter(CharEncodingFilter.java:86) [classes/:?]
+	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:210) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.websocket.servlet.WebSocketUpgradeFilter.doFilter(WebSocketUpgradeFilter.java:170) [websocket-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.FilterHolder.doFilter(FilterHolder.java:202) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletHandler$Chain.doFilter(ServletHandler.java:1635) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletHandler.doHandle(ServletHandler.java:527) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:131) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.security.SecurityHandler.handle(SecurityHandler.java:598) [jetty-security-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:223) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.session.SessionHandler.doHandle(SessionHandler.java:1580) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextHandle(ScopedHandler.java:221) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:1384) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:176) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.servlet.ServletHandler.doScope(ServletHandler.java:484) [jetty-servlet-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.session.SessionHandler.doScope(SessionHandler.java:1553) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.ScopedHandler.nextScope(ScopedHandler.java:174) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:1306) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:129) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:149) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.HandlerList.handle(HandlerList.java:51) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:122) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.Server.handle(Server.java:563) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.HttpChannel$RequestDispatchable.dispatch(HttpChannel.java:1598) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.HttpChannel.dispatch(HttpChannel.java:753) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.HttpChannel.handle(HttpChannel.java:501) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.server.HttpConnection.onFillable(HttpConnection.java:287) [jetty-server-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.io.AbstractConnection$ReadCallback.succeeded(AbstractConnection.java:314) [jetty-io-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.io.FillInterest.fillable(FillInterest.java:100) [jetty-io-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.io.SelectableChannelEndPoint$1.run(SelectableChannelEndPoint.java:53) [jetty-io-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.runTask(AdaptiveExecutionStrategy.java:421) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.consumeTask(AdaptiveExecutionStrategy.java:390) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.tryProduce(AdaptiveExecutionStrategy.java:277) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.thread.strategy.AdaptiveExecutionStrategy.run(AdaptiveExecutionStrategy.java:199) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.thread.ReservedThreadExecutor$ReservedThread.run(ReservedThreadExecutor.java:411) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:969) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.doRunJob(QueuedThreadPool.java:1194) [jetty-util-10.0.24.jar:10.0.24]
+	at org.eclipse.jetty.util.thread.QueuedThreadPool$Runner.run(QueuedThreadPool.java:1149) [jetty-util-10.0.24.jar:10.0.24]
+	at java.base/java.lang.Thread.run(Thread.java:840) [?:?]
+INFO  2026-08-12 08:49:29 [qtp580515543-47] Install - EXITING - Bootstrap successful, forwarding to Roller
+WARN  2026-08-12 08:49:47 [qtp580515543-46] UIPluginManagerImpl - Default editor was not properly configured, picking one at random instead.
+INFO  2026-08-12 08:50:29 [qtp580515543-50] Dispatcher - Unable to find 'struts.multipart.saveDir' property setting. Defaulting to javax.servlet.context.tempdir
+WARN  2026-08-12 08:50:36 [qtp580515543-68] TextProviderHelper - The first TextProvider in the ValueStack (org.apache.roller.weblogger.ui.struts2.editor.Bookmarks) could not locate the message resource with key 'default'
+WARN  2026-08-12 08:50:36 [qtp580515543-68] TextProviderHelper - The default value expression 'default' was evaluated and did not match a property. The literal value 'default' will be used.
+INFO  2026-08-12 08:51:00 [JettyShutdownThread] TilesAccess - Removing TilesContext for context: org.apache.struts2.tiles.StrutsWildcardServletApplicationContext
+INFO  2026-08-12 08:51:00 [JettyShutdownThread] HitCountQueue - stopping worker HitCountQueueProcessor
+INFO  2026-08-12 08:51:00 [HitCountQueueProcessor] ContinuousWorkerThread - HitCountQueueProcessor Started.
+INFO  2026-08-12 08:51:00 [HitCountQueueProcessor] ContinuousWorkerThread - HitCountQueueProcessor Done.