validate
diff --git a/app/src/main/java/org/apache/roller/planet/util/MailUtil.java b/app/src/main/java/org/apache/roller/planet/util/MailUtil.java
index 970795610b..02befd6373 100644
--- a/app/src/main/java/org/apache/roller/planet/util/MailUtil.java
+++ b/app/src/main/java/org/apache/roller/planet/util/MailUtil.java
@@ -20,14 +20,14 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.SendFailedException;
-import javax.mail.Session;
-import javax.mail.Transport;
-import javax.mail.Address;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
+import jakarta.mail.Message;
+import jakarta.mail.MessagingException;
+import jakarta.mail.SendFailedException;
+import jakarta.mail.Session;
+import jakarta.mail.Transport;
+import jakarta.mail.Address;
+import jakarta.mail.internet.InternetAddress;
+import jakarta.mail.internet.MimeMessage;
import org.apache.commons.lang3.StringUtils;
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/MailProvider.java b/app/src/main/java/org/apache/roller/weblogger/business/MailProvider.java
index 1a682c360e..898a59294f 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/MailProvider.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/MailProvider.java
@@ -19,9 +19,9 @@
package org.apache.roller.weblogger.business;
import java.util.Properties;
-import javax.mail.MessagingException;
-import javax.mail.Session;
-import javax.mail.Transport;
+import jakarta.mail.MessagingException;
+import jakarta.mail.Session;
+import jakarta.mail.Transport;
import javax.naming.Context;
import javax.naming.InitialContext;
import javax.naming.NamingException;
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/MultiWeblogURLStrategy.java b/app/src/main/java/org/apache/roller/weblogger/business/MultiWeblogURLStrategy.java
index acb077ec5b..583e9b5066 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/MultiWeblogURLStrategy.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/MultiWeblogURLStrategy.java
@@ -455,21 +455,5 @@ public String getOpenSearchWeblogURL(String weblogHandle) {
return WebloggerRuntimeConfig.getAbsoluteContextURL() + "/roller-services/opensearch/" + weblogHandle;
}
- @Override
- public String getOAuthRequestTokenURL() {
- return WebloggerRuntimeConfig.getAbsoluteContextURL() + "/roller-services/oauth/requestToken";
- }
-
- @Override
- public String getOAuthAuthorizationURL() {
- return WebloggerRuntimeConfig.getAbsoluteContextURL() + "/roller-services/oauth/authorize";
- }
- @Override
- public String getOAuthAccessTokenURL() {
- return WebloggerRuntimeConfig.getAbsoluteContextURL() + "/roller-services/oauth/accessToken";
- }
-
}
-
-
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/OAuthManager.java b/app/src/main/java/org/apache/roller/weblogger/business/OAuthManager.java
deleted file mode 100644
index 80657bbe99..0000000000
--- a/app/src/main/java/org/apache/roller/weblogger/business/OAuthManager.java
+++ /dev/null
@@ -1,142 +0,0 @@
-/*
- * Copyright 2007 AOL, LLC.
- *
- * 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 org.apache.roller.weblogger.business;
-
-import java.io.IOException;
-
-import net.oauth.OAuthAccessor;
-import net.oauth.OAuthConsumer;
-import net.oauth.OAuthException;
-import net.oauth.OAuthMessage;
-import net.oauth.OAuthProblemException;
-import net.oauth.OAuthServiceProvider;
-import net.oauth.OAuthValidator;
-import org.apache.roller.weblogger.WebloggerException;
-
-
-/**
- * Management of and access to configured and persistent OAuth objects.
- */
-public interface OAuthManager {
-
- /**
- * Get validator to be used to OAuth validate messages.
- */
- OAuthServiceProvider getServiceProvider();
-
- /**
- * Get validator to be used to OAuth validate messages.
- */
- OAuthValidator getValidator();
-
- /**
- * Get the site-wide consumer.
- */
- OAuthConsumer getConsumer()
- throws WebloggerException;
-
- /**
- * Get consumer corresponding to request.
- */
- OAuthConsumer getConsumerByUsername(String username)
- throws WebloggerException;
-
- /**
- * Get consumer corresponding to request.
- */
- OAuthConsumer getConsumer(
- OAuthMessage requestMessage)
- throws IOException, OAuthProblemException;
-
- /**
- * Add a site-wide consumer provided a key, there can only be one.
- */
- OAuthConsumer addConsumer(String consumerKey)
- throws OAuthException, WebloggerException;
-
- /**
- * Store a new consumer for specified user, each user can have only one.
- */
- OAuthConsumer addConsumer(String username, String consumerKey)
- throws OAuthException;
-
- /**
- * Get the access token and token secret for the given request.
- * If token is provided, it better be good; otherwise exception.
- * If consumer key is provided and no accessor exists, will return null.
- *
- * @param requestMessage Request with token or consumer key
- * @return Accessor or null if consumer key does not have a token yet
- * @throws OAuthProblemException If provided token is bad
- * @throws java.io.IOException on IO error
- */
- OAuthAccessor getAccessor(OAuthMessage requestMessage)
- throws IOException, OAuthProblemException;
-
- /**
- * Set the access token
- *
- * @deprecated Records approval against the consumer key alone, without
- * naming the request token being approved and without
- * requiring that it is still pending. Use
- * {@link #authorizeRequestToken(String, String, String)},
- * which does both in one statement. No longer called from
- * Roller; retained for callers outside the project.
- */
- @Deprecated
- void markAsAuthorized(OAuthAccessor accessor, String userId)
- throws OAuthException;
-
- /**
- * Record a user's approval of one pending request token.
- *
- * The whole transition happens in a single conditional statement: the
- * record is claimed only if it still matches the consumer key and the
- * exact request token and has not yet been exchanged for an access token.
- * A pending token already approved by the same user is accepted as an
- * idempotent retry; a different user cannot claim it. The transition stays
- * in one statement, without a read-then-write window.
- *
- * @param consumerKey key of the consumer the token was issued to
- * @param requestToken the pending request token being approved
- * @param userName the approving user
- * @return true if this call performed the approval or confirmed the same
- * user's prior approval; false if the record did not match, belongs
- * to another user, or was already exchanged. Callers should not
- * distinguish these cases to the client.
- * @throws OAuthException on persistence failure
- */
- boolean authorizeRequestToken(String consumerKey, String requestToken, String userName)
- throws OAuthException;
-
- /**
- * Generate a fresh request token and secret for a consumer.
- *
- * @throws OAuthException
- */
- void generateRequestToken(
- OAuthAccessor accessor)
- throws OAuthException;
-
- /**
- * Generate a fresh request token and secret for a consumer.
- *
- * @throws OAuthException
- */
- void generateAccessToken(OAuthAccessor accessor)
- throws OAuthException;
-}
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/URLStrategy.java b/app/src/main/java/org/apache/roller/weblogger/business/URLStrategy.java
index db87407aa1..053bbf48f6 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/URLStrategy.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/URLStrategy.java
@@ -235,14 +235,4 @@ String getWeblogResourceURL(Weblog weblog,
* Get url to JSON tags service url, optionally for a given weblog.
*/
String getWeblogTagsJsonURL(Weblog weblog, boolean absolute, int pageNum);
-
-
- /* Get URL for obtaining OAuth Request Token */
- String getOAuthRequestTokenURL();
-
- /* Get URL authorizing an OAuth Request Token */
- String getOAuthAuthorizationURL();
-
- /* Get URL for obtaining OAuth Access Token */
- String getOAuthAccessTokenURL();
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/Weblogger.java b/app/src/main/java/org/apache/roller/weblogger/business/Weblogger.java
index 834efed2c9..62f498efbc 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/Weblogger.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/Weblogger.java
@@ -50,13 +50,6 @@ public interface Weblogger {
BookmarkManager getBookmarkManager();
- /**
- *
- * Get OAuthManager associated with this Weblogger instance.
- */
- OAuthManager getOAuthManager();
-
-
/**
*
* Get WeblogManager associated with this Weblogger instance.
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/WebloggerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/WebloggerImpl.java
index 14e65a9f6d..0a75aac80a 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/WebloggerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/WebloggerImpl.java
@@ -69,7 +69,6 @@ public abstract class WebloggerImpl implements Weblogger {
private final UserManager userManager;
private final WeblogManager weblogManager;
private final WeblogEntryManager weblogEntryManager;
- private final OAuthManager oauthManager;
private final FeedFetcher feedFetcher;
private final PlanetManager planetManager;
@@ -99,7 +98,6 @@ protected WebloggerImpl(
UserManager userManager,
WeblogManager weblogManager,
WeblogEntryManager weblogEntryManager,
- OAuthManager oauthManager,
FeedFetcher feedFetcher,
PlanetManager planetManager,
org.apache.roller.planet.business.PlanetURLStrategy planetUrlStrategy,
@@ -119,7 +117,6 @@ protected WebloggerImpl(
this.userManager = userManager;
this.weblogManager = weblogManager;
this.weblogEntryManager = weblogEntryManager;
- this.oauthManager = oauthManager;
this.urlStrategy = urlStrategy;
this.feedFetcher = feedFetcher;
this.planetManager = planetManager;
@@ -292,17 +289,6 @@ public PluginManager getPluginManager() {
}
- /**
- *
- *
- * @see org.apache.roller.weblogger.business.Weblogger#getOAuthManager()
- */
- @Override
- public OAuthManager getOAuthManager() {
- return oauthManager;
- }
-
-
/**
* @inheritDoc
*/
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAOAuthManagerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAOAuthManagerImpl.java
deleted file mode 100644
index 373711c94a..0000000000
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAOAuthManagerImpl.java
+++ /dev/null
@@ -1,420 +0,0 @@
-/*
- * 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.business.jpa;
-
-import java.io.IOException;
-import java.sql.Timestamp;
-import java.util.Date;
-import java.util.UUID;
-import jakarta.persistence.Query;
-import jakarta.persistence.TypedQuery;
-import net.oauth.OAuthAccessor;
-import net.oauth.OAuthConsumer;
-import net.oauth.OAuthException;
-import net.oauth.OAuthMessage;
-import net.oauth.OAuthProblemException;
-import net.oauth.OAuthServiceProvider;
-import net.oauth.OAuthValidator;
-import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.roller.weblogger.WebloggerException;
-import org.apache.roller.weblogger.business.OAuthManager;
-import org.apache.roller.weblogger.business.Weblogger;
-import org.apache.roller.weblogger.pojos.OAuthAccessorRecord;
-import org.apache.roller.weblogger.pojos.OAuthConsumerRecord;
-
-
-/**
- * JPA based OAuth manager implementation.
- */
-public class JPAOAuthManagerImpl implements OAuthManager {
- private final Weblogger roller;
- private final JPAPersistenceStrategy strategy;
- private final OAuthValidator validator;
-
- /**
- * The logger instance for this class.
- */
- private static final Log log = LogFactory.getFactory().getInstance(JPAOAuthManagerImpl.class);
-
-
- @com.google.inject.Inject
- public JPAOAuthManagerImpl(
- Weblogger roller,
- JPAPersistenceStrategy strategy,
- OAuthValidator validator) {
- this.roller = roller;
- this.strategy = strategy;
- this.validator = validator;
- }
-
- @Override
- public OAuthServiceProvider getServiceProvider() {
- return new OAuthServiceProvider(
- roller.getUrlStrategy().getOAuthRequestTokenURL(),
- roller.getUrlStrategy().getOAuthAuthorizationURL(),
- roller.getUrlStrategy().getOAuthAccessTokenURL());
- }
-
- @Override
- public OAuthValidator getValidator() {
- return validator;
- }
-
- @Override
- public OAuthConsumer getConsumer(
- OAuthMessage requestMessage)
- throws IOException, OAuthProblemException {
-
- OAuthConsumer consumer;
- // try to load from local cache if not throw exception
- String consumer_key = requestMessage.getConsumerKey();
-
- consumer = getConsumerByKey(consumer_key);
-
- if(consumer == null) {
- throw new OAuthProblemException("token_rejected");
- }
-
- return consumer;
- }
-
- /**
- * Get the access token and token secret for the given oauth_token.
- */
- @Override
- public OAuthAccessor getAccessor(OAuthMessage requestMessage)
- throws IOException, OAuthProblemException {
-
- String consumerToken = requestMessage.getToken();
- OAuthAccessor accessor = null;
- if (StringUtils.isNotEmpty(consumerToken)) {
- // caller provided a token, it better be good or else
- accessor = getAccessorByToken(consumerToken);
- if (accessor == null) {
- throw new OAuthProblemException("token_expired");
- }
- }
-
- String consumerKey = requestMessage.getConsumerKey();
- if (accessor == null && StringUtils.isNotEmpty(consumerKey)) {
- // caller provided contumer key, do we have an accessor yet
- accessor = getAccessorByKey(consumerKey);
- }
- return accessor;
- }
-
- /**
- * Set the access token
- */
- @Override
- public void markAsAuthorized(OAuthAccessor accessor, String userId)
- throws OAuthException {
- try {
- OAuthAccessorRecord record = (OAuthAccessorRecord) strategy.load(
- OAuthAccessorRecord.class, accessor.consumer.consumerKey);
- record.setUserName(userId);
- record.setAuthorized(Boolean.TRUE);
- strategy.store(record);
-
- } catch (WebloggerException ex) {
- throw new OAuthException("ERROR: setting authorization flag", ex);
- }
- }
-
- @Override
- public boolean authorizeRequestToken(String consumerKey, String requestToken, String userName)
- throws OAuthException {
- if (consumerKey == null || requestToken == null || userName == null) {
- return false;
- }
- try {
- Query q = strategy.getNamedUpdate("OAuthAccessorRecord.authorizeRequestToken");
- q.setParameter(1, userName);
- q.setParameter(2, new Timestamp(new Date().getTime()));
- q.setParameter(3, consumerKey);
- q.setParameter(4, requestToken);
- return q.executeUpdate() == 1;
-
- } catch (WebloggerException ex) {
- throw new OAuthException("ERROR: authorizing request token", ex);
- }
- }
-
- /**
- * Generate a fresh request token and secret for a consumer.
- * @throws OAuthException
- */
- @Override
- public void generateRequestToken(
- OAuthAccessor accessor)
- throws OAuthException {
-
- // generate oauth_token and oauth_secret
- String consumer_key = accessor.consumer.consumerKey;
- // generate token and secret based on consumer_key
-
- // for now use md5 of name + current time as token
- String token_data = consumer_key + System.nanoTime();
- String token = DigestUtils.md5Hex(token_data);
- // for now use md5 of name + current time + token as secret
- String secret_data = consumer_key + System.nanoTime() + token;
- String secret = DigestUtils.md5Hex(secret_data);
-
- accessor.requestToken = token;
- accessor.tokenSecret = secret;
- accessor.accessToken = null;
-
- // add to the local cache
- addAccessor(accessor);
- }
-
- /**
- * Generate a fresh request token and secret for a consumer.
- * @throws OAuthException
- */
- @Override
- public void generateAccessToken(OAuthAccessor accessor)
- throws OAuthException {
-
- try {
- // generate oauth_token and oauth_secret
- // generate token and secret based on consumer_key
- String consumer_key = accessor.consumer.consumerKey;
-
- OAuthAccessorRecord record = (OAuthAccessorRecord) strategy.load(
- OAuthAccessorRecord.class, accessor.consumer.consumerKey);
-
- // for now use md5 of name + current time as token
- String token_data = consumer_key + System.nanoTime();
- String token = DigestUtils.md5Hex(token_data);
-
- record.setRequestToken(null);
- record.setAccessToken(token);
- strategy.store(record);
-
- } catch (WebloggerException ex) {
- throw new OAuthException("ERROR: generating access token", ex);
- }
- }
-
- @Override
- public OAuthConsumer addConsumer(String username, String consumerKey) throws OAuthException {
-
- OAuthConsumerRecord record = new OAuthConsumerRecord();
- record.setConsumerKey(consumerKey);
- record.setUserName(username);
- record.setConsumerSecret(UUID.randomUUID().toString());
-
- try {
- strategy.store(record);
- } catch (WebloggerException ex) {
- throw new OAuthException("ERROR storing accessor", ex);
- }
-
- return new OAuthConsumer(null,
- record.getConsumerKey(),
- record.getConsumerSecret(),
- getServiceProvider());
- }
-
- @Override
- public OAuthConsumer addConsumer(String consumerKey)
- throws OAuthException, WebloggerException {
- if (getConsumer() == null) {
- return addConsumer(null, consumerKey);
- } else {
- throw new OAuthException("ERROR: cannot have more than one site-wide consumer");
- }
- }
-
- @Override
- public OAuthConsumer getConsumer() throws WebloggerException {
- OAuthConsumerRecord record = null;
- try {
- TypedQuery q = strategy.getNamedQuery("OAuthConsumerRecord.getSiteWideConsumer",
- OAuthConsumerRecord.class);
- record = q.getSingleResult();
-
- } catch (Exception ex) {
- log.debug("ERROR fetching site-wide consumer", ex);
- }
- if (record != null) {
- return new OAuthConsumer(
- null,
- record.getConsumerKey(),
- record.getConsumerSecret(),
- getServiceProvider());
- }
- return null;
- }
-
- @Override
- public OAuthConsumer getConsumerByUsername(String username) throws WebloggerException {
- OAuthConsumerRecord record = null;
- try {
- TypedQuery q = strategy.getNamedQuery("OAuthConsumerRecord.getByUsername",
- OAuthConsumerRecord.class);
- q.setParameter(1, username);
- record = q.getSingleResult();
-
- } catch (Exception ex) {
- log.debug("ERROR fetching consumer", ex);
- }
- if (record != null) {
- OAuthConsumer consumer = new OAuthConsumer(
- null,
- record.getConsumerKey(),
- record.getConsumerSecret(),
- getServiceProvider());
- consumer.setProperty("userName", record.getUserName());
- return consumer;
- }
- return null;
- }
-
-
- //--------------------------------------------- package protected internals
-
- OAuthConsumer consumerFromRecord(OAuthConsumerRecord record) {
- OAuthConsumer consumer = null;
- if (record != null) {
- consumer = new OAuthConsumer(
- null,
- record.getConsumerKey(),
- record.getConsumerSecret(),
- getServiceProvider());
- if (record.getUserName() != null) {
- consumer.setProperty("userId", record.getUserName());
- }
- }
- return consumer;
- }
-
- OAuthAccessor accessorFromRecord(OAuthAccessorRecord record) {
- OAuthAccessor accessor = null;
- if (record != null) {
- accessor =
- new OAuthAccessor(getConsumerByKey(record.getConsumerKey()));
- accessor.accessToken = record.getAccessToken();
- accessor.requestToken = record.getRequestToken();
- accessor.tokenSecret = record.getTokenSecret();
- if (record.getAuthorized() != null) {
- accessor.setProperty("authorized", record.getAuthorized());
- }
- if (record.getUserName() != null) {
- accessor.setProperty("userId", record.getUserName());
- }
- }
- return accessor;
- }
-
- OAuthConsumer getConsumerByKey(String consumerKey) {
- OAuthConsumerRecord record = null;
- try {
- TypedQuery q = strategy.getNamedQuery("OAuthConsumerRecord.getByConsumerKey",
- OAuthConsumerRecord.class);
- q.setParameter(1, consumerKey);
- record = q.getSingleResult();
-
- } catch (Exception ex) {
- log.debug("ERROR fetching consumer", ex);
- }
- return consumerFromRecord(record);
- }
-
- void addAccessor(OAuthAccessor accessor) throws OAuthException {
-
- OAuthAccessorRecord record = new OAuthAccessorRecord();
- record.setConsumerKey(accessor.consumer.consumerKey);
- record.setRequestToken(accessor.requestToken);
- record.setAccessToken(accessor.accessToken);
- record.setTokenSecret(accessor.tokenSecret);
- if (accessor.getProperty("userId") != null) {
- record.setUserName((String)accessor.getProperty("userId"));
- }
-
- if (record.getCreated() != null) {
- record.setCreated(record.getCreated());
- } else {
- record.setCreated(new Timestamp(new Date().getTime()));
- }
-
- if (record.getUpdated() != null) {
- record.setUpdated(record.getUpdated());
- } else {
- record.setUpdated(record.getCreated());
- }
-
- if (accessor.getProperty("authorized") != null) {
- record.setAuthorized((Boolean)accessor.getProperty("authorized"));
- }
- try {
- strategy.store(record);
- } catch (WebloggerException ex) {
- throw new OAuthException("ERROR storing accessor", ex);
- }
- }
-
- OAuthAccessor getAccessorByKey(String consumerKey) {
- OAuthAccessorRecord record = null;
- try {
- TypedQuery q = strategy.getNamedQuery("OAuthAccessorRecord.getByKey",
- OAuthAccessorRecord.class);
- q.setParameter(1, consumerKey);
- record = q.getSingleResult();
-
- } catch (Exception ex) {
- log.debug("ERROR fetching accessor", ex);
- }
- return accessorFromRecord(record);
- }
-
- OAuthAccessor getAccessorByToken(String token) {
- OAuthAccessorRecord record = null;
- try {
- TypedQuery q = strategy.getNamedQuery("OAuthAccessorRecord.getByToken",
- OAuthAccessorRecord.class);
- q.setParameter(1, token);
- record = q.getSingleResult();
-
- } catch (Exception ex) {
- log.debug("ERROR fetching accessor", ex);
- }
- return accessorFromRecord(record);
- }
-
- void removeConsumer(OAuthConsumer consumer) throws OAuthException {
- try {
- strategy.remove(OAuthConsumerRecord.class, consumer.consumerKey);
- } catch (WebloggerException ex) {
- throw new OAuthException("ERROR removing consumer", ex);
- }
- }
-
- void removeAccessor(OAuthAccessor accessor) throws OAuthException {
- try {
- strategy.remove(OAuthAccessorRecord.class, accessor.consumer.consumerKey);
- } catch (WebloggerException ex) {
- throw new OAuthException("ERROR removing accessor", ex);
- }
- }
-}
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java
index fe74ea0406..91597ca10e 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerImpl.java
@@ -61,7 +61,6 @@ protected JPAWebloggerImpl(
UserManager userManager,
WeblogManager weblogManager,
WeblogEntryManager weblogEntryManager,
- OAuthManager oauthManager,
FeedFetcher feedFetcher,
PlanetManager planetManager,
PlanetURLStrategy planetUrlStrategy,
@@ -82,7 +81,6 @@ protected JPAWebloggerImpl(
userManager,
weblogManager,
weblogEntryManager,
- oauthManager,
feedFetcher,
planetManager,
planetUrlStrategy,
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerModule.java b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerModule.java
index d9e189494f..f3e392862a 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerModule.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/jpa/JPAWebloggerModule.java
@@ -20,8 +20,6 @@
import com.google.inject.Binder;
import com.google.inject.Module;
-import net.oauth.OAuthValidator;
-import net.oauth.SimpleOAuthValidator;
import org.apache.roller.planet.business.MultiPlanetURLStrategy;
import org.apache.roller.planet.business.Planet;
import org.apache.roller.planet.business.PlanetManager;
@@ -34,7 +32,6 @@
import org.apache.roller.weblogger.business.FileContentManagerImpl;
import org.apache.roller.weblogger.business.MediaFileManager;
import org.apache.roller.weblogger.business.MultiWeblogURLStrategy;
-import org.apache.roller.weblogger.business.OAuthManager;
import org.apache.roller.weblogger.business.PropertiesManager;
import org.apache.roller.weblogger.business.URLStrategy;
import org.apache.roller.weblogger.business.Weblogger;
@@ -75,10 +72,6 @@ public void configure(Binder binder) {
binder.bind(UserManager.class).to( JPAUserManagerImpl.class);
binder.bind(WeblogManager.class).to( JPAWeblogManagerImpl.class);
binder.bind(WeblogEntryManager.class).to( JPAWeblogEntryManagerImpl.class);
- binder.bind(OAuthManager.class).to( JPAOAuthManagerImpl.class);
-
- binder.bind(OAuthValidator.class).to( SimpleOAuthValidator.class);
-
binder.bind(MediaFileManager.class).to( JPAMediaFileManagerImpl.class);
binder.bind(FileContentManager.class).to( FileContentManagerImpl.class);
binder.bind(IndexManager.class).to( LuceneIndexManager.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java b/app/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java
index 13467171ce..744cc57153 100644
--- a/app/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java
+++ b/app/src/main/java/org/apache/roller/weblogger/business/themes/ThemeManagerImpl.java
@@ -30,8 +30,8 @@
import java.util.Map;
import java.util.Set;
-import javax.activation.FileTypeMap;
-import javax.activation.MimetypesFileTypeMap;
+import jakarta.activation.FileTypeMap;
+import jakarta.activation.MimetypesFileTypeMap;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java
index 8d24508f5e..2543c67d0c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetConfig.java
@@ -30,7 +30,7 @@
import org.apache.roller.weblogger.config.runtime.RuntimeConfigDefs;
import org.apache.roller.weblogger.pojos.GlobalPermission;
import org.apache.roller.weblogger.pojos.RuntimeConfigProperty;
-import org.apache.struts2.interceptor.HttpParametersAware;
+import org.apache.struts2.action.ParametersAware;
import org.apache.struts2.dispatcher.HttpParameters;
import org.apache.struts2.dispatcher.Parameter;
@@ -45,12 +45,17 @@
* Handles editing of planet global runtime properties.
*/
// TODO: make this work @AllowedMethods({"execute","save"})
-public class PlanetConfig extends PlanetUIAction implements HttpParametersAware {
+public class PlanetConfig extends PlanetUIAction implements ParametersAware {
private static final Log log = LogFactory.getLog(PlanetConfig.class);
// original request parameters
private HttpParameters parameters = HttpParameters.create().build();
+
+ @Override
+ public void withParameters(HttpParameters parameters) {
+ this.parameters = parameters;
+ }
// runtime properties data
private Map properties = Collections.emptyMap();
@@ -180,11 +185,6 @@ public HttpParameters getParameters() {
return parameters;
}
- @Override
- public void setParameters(HttpParameters parameters) {
- this.parameters = parameters;
- }
-
public Map getProperties() {
return properties;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroupBean.java b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroupBean.java
new file mode 100644
index 0000000000..b6806b8da3
--- /dev/null
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroupBean.java
@@ -0,0 +1,66 @@
+/*
+ * 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.planet.ui;
+
+import org.apache.roller.planet.pojos.PlanetGroup;
+
+/**
+ * Bean for managing planet group form data.
+ */
+public class PlanetGroupBean {
+
+ private String id = null;
+ private String handle = null;
+ private String title = null;
+
+ public String getId() {
+ return id;
+ }
+
+ public void setId(String id) {
+ this.id = id;
+ }
+
+ public String getHandle() {
+ return handle;
+ }
+
+ public void setHandle(String handle) {
+ this.handle = handle;
+ }
+
+ public String getTitle() {
+ return title;
+ }
+
+ public void setTitle(String title) {
+ this.title = title;
+ }
+
+ public void copyTo(PlanetGroup dataHolder) {
+ dataHolder.setHandle(this.handle);
+ dataHolder.setTitle(this.title);
+ }
+
+ public void copyFrom(PlanetGroup dataHolder) {
+ this.id = dataHolder.getId();
+ this.handle = dataHolder.getHandle();
+ this.title = dataHolder.getTitle();
+ }
+}
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroupSubs.java b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroupSubs.java
index 7d6ed549e3..ecc8903489 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroupSubs.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroupSubs.java
@@ -28,9 +28,10 @@
import org.apache.roller.planet.pojos.Subscription;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.pojos.GlobalPermission;
-import org.apache.struts2.interceptor.ServletRequestAware;
+import org.apache.struts2.Preparable;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.*;
@@ -38,12 +39,15 @@
* Manage planet group subscriptions, default group is "all".
*/
// TODO: make this work @AllowedMethods({"execute","saveSubscription","saveGroup","deleteSubscription"})
-public class PlanetGroupSubs extends PlanetUIAction implements ServletRequestAware {
+public class PlanetGroupSubs extends PlanetUIAction implements Preparable {
private static final Log log = LogFactory.getLog(PlanetGroupSubs.class);
// the planet group we are working in
- private PlanetGroup group = null;
+ private PlanetGroup planetGroup = null;
+
+ // form data for the group
+ private PlanetGroupBean group = new PlanetGroupBean();
// the subscription to deal with
private String subUrl = null;
@@ -67,13 +71,21 @@ public boolean isWeblogRequired() {
}
+ /**
+ * Loads the group being edited. This runs before the params interceptor so
+ * that submitted values are bound onto the form bean rather than being
+ * overwritten by it.
+ */
@Override
- public void setServletRequest(HttpServletRequest request) {
- if (request.getParameter("createNew") != null) {
- group = new PlanetGroup();
- } else {
- group = getGroupFromRequest(request, getPlanet());
+ public void prepare() {
+ HttpServletRequest request = getServletRequest();
+ if (request.getParameter("createNew") == null) {
+ planetGroup = getGroupFromRequest(request, getPlanet());
}
+ if (planetGroup == null) {
+ planetGroup = new PlanetGroup();
+ }
+ group.copyFrom(planetGroup);
}
@@ -121,20 +133,22 @@ public String saveGroup() {
try {
PlanetManager planetManager = WebloggerFactory.getWeblogger().getPlanetManager();
- PlanetGroup existingGroup = planetManager.getGroup(getPlanet(), getGroup().getHandle());
+ getGroup().copyTo(planetGroup);
+ PlanetGroup existingGroup = planetManager.getGroup(getPlanet(), planetGroup.getHandle());
if (existingGroup == null) {
- log.debug("Adding New Group: " + getGroup().getHandle());
- planetManager.saveNewPlanetGroup(getPlanet(), getGroup());
+ log.debug("Adding New Group: " + planetGroup.getHandle());
+ planetManager.saveNewPlanetGroup(getPlanet(), planetGroup);
} else {
log.debug("Updating Existing Group: " + existingGroup.getHandle());
- existingGroup.setTitle( getGroup().getTitle() );
- existingGroup.setHandle( getGroup().getHandle() );
+ existingGroup.setTitle( planetGroup.getTitle() );
+ existingGroup.setHandle( planetGroup.getHandle() );
planetManager.saveGroup(existingGroup);
}
WebloggerFactory.getWeblogger().flush();
+ getGroup().copyFrom(planetGroup);
addMessage("planetGroups.success.saved");
} catch (Exception ex) {
@@ -196,9 +210,9 @@ public String saveSubscription() {
}
// add the sub to the group
- group.getSubscriptions().add(sub);
- sub.getGroups().add(group);
- pmgr.saveGroup(group);
+ planetGroup.getSubscriptions().add(sub);
+ sub.getGroups().add(planetGroup);
+ pmgr.saveGroup(planetGroup);
WebloggerFactory.getWeblogger().flush();
// clear field after success
@@ -232,11 +246,11 @@ public String deleteSubscription() {
Subscription sub = pmgr.getSubscription(getSubUrl());
// remove sub from group
- getGroup().getSubscriptions().remove(sub);
- pmgr.saveGroup(getGroup());
+ planetGroup.getSubscriptions().remove(sub);
+ pmgr.saveGroup(planetGroup);
// remove group from sub
- sub.getGroups().remove(getGroup());
+ sub.getGroups().remove(planetGroup);
pmgr.saveSubscription(sub);
WebloggerFactory.getWeblogger().flush();
@@ -272,10 +286,10 @@ public String getPageTitle() {
if (pageTitle == null) {
if (getCreateNew()) {
pageTitle = getText("planetGroupSubs.custom.title.new");
- } else if (getGroup().getHandle().equals("all")) {
+ } else if (planetGroup.getHandle().equals("all")) {
pageTitle = getText("planetGroupSubs.default.title");
} else {
- pageTitle = getText("planetGroupSubs.custom.title", new String[]{getGroup().getHandle()});
+ pageTitle = getText("planetGroupSubs.custom.title", new String[]{planetGroup.getHandle()});
}
}
return pageTitle;
@@ -285,8 +299,8 @@ public String getPageTitle() {
public List getSubscriptions() {
List subs = Collections.emptyList();
- if (getGroup() != null) {
- Set subsSet = getGroup().getSubscriptions();
+ if (planetGroup != null) {
+ Set subsSet = planetGroup.getSubscriptions();
// iterate over list and build display list
subs = new ArrayList<>();
@@ -301,18 +315,16 @@ public List getSubscriptions() {
return subs;
}
- public PlanetGroup getGroup() {
+ @StrutsParameter(depth = 1)
+ public PlanetGroupBean getGroup() {
return group;
}
- public void setGroup(PlanetGroup group) {
- this.group = group;
- }
-
public String getSubUrl() {
return subUrl;
}
+ @StrutsParameter
public void setSubUrl(String subUrl) {
this.subUrl = subUrl;
}
@@ -322,7 +334,7 @@ public boolean getCreateNew() {
PlanetManager pmgr = WebloggerFactory.getWeblogger().getPlanetManager();
PlanetGroup existingGroup = null;
try {
- existingGroup = pmgr.getGroupById(group.getId());
+ existingGroup = pmgr.getGroupById(planetGroup.getId());
} catch (RollerException e) {
log.error("Error getting group by ID", e);
}
@@ -336,7 +348,7 @@ public void setCreateNew(boolean createNew) {
}
public String getGroupHandle() {
- return group.getHandle();
+ return planetGroup.getHandle();
}
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java
index cea9025766..ec7eababbc 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetGroups.java
@@ -21,9 +21,8 @@
import org.apache.roller.planet.business.PlanetManager;
import org.apache.roller.planet.pojos.PlanetGroup;
import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.struts2.interceptor.ServletRequestAware;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.ArrayList;
import java.util.List;
@@ -32,7 +31,7 @@
* Manage planet groups.
*/
// TODO: make this work @AllowedMethods({"execute","save","delete"})
-public class PlanetGroups extends PlanetUIAction implements ServletRequestAware {
+public class PlanetGroups extends PlanetUIAction {
private static Log log = LogFactory.getLog(PlanetGroups.class);
@@ -51,7 +50,8 @@ public boolean isWeblogRequired() {
}
@Override
- public void setServletRequest(HttpServletRequest request) {
+ public void myPrepare() {
+ HttpServletRequest request = getServletRequest();
group = PlanetGroupSubs.getGroupFromRequest(request, getPlanet());
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/pojos/OAuthAccessorRecord.java b/app/src/main/java/org/apache/roller/weblogger/pojos/OAuthAccessorRecord.java
deleted file mode 100644
index e76e9b7ee6..0000000000
--- a/app/src/main/java/org/apache/roller/weblogger/pojos/OAuthAccessorRecord.java
+++ /dev/null
@@ -1,185 +0,0 @@
-/*
- * 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.pojos;
-
-import java.io.Serializable;
-import java.sql.Timestamp;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-
-
-/**
- * Stores data for an OAuth accessor
- */
-public class OAuthAccessorRecord implements Serializable {
- private String consumerKey;
- private String requestToken;
- private String accessToken;
- private String tokenSecret;
- private Timestamp created;
- private Timestamp updated;
- private Boolean authorized;
- private String userName;
-
- public OAuthAccessorRecord() {
- }
-
- /**
- * @return the consumerKey
- */
- public String getConsumerKey() {
- return consumerKey;
- }
-
- /**
- * @param consumerKey the consumerKey to set
- */
- public void setConsumerKey(String consumerKey) {
- this.consumerKey = consumerKey;
- }
-
- /**
- * @return the requestToken
- */
- public String getRequestToken() {
- return requestToken;
- }
-
- /**
- * @param requestToken the requestToken to set
- */
- public void setRequestToken(String requestToken) {
- this.requestToken = requestToken;
- }
-
- /**
- * @return the accessToken
- */
- public String getAccessToken() {
- return accessToken;
- }
-
- /**
- * @param accessToken the accessToken to set
- */
- public void setAccessToken(String accessToken) {
- this.accessToken = accessToken;
- }
-
- /**
- * @return the tokenSecret
- */
- public String getTokenSecret() {
- return tokenSecret;
- }
-
- /**
- * @param tokenSecret the tokenSecret to set
- */
- public void setTokenSecret(String tokenSecret) {
- this.tokenSecret = tokenSecret;
- }
-
- /**
- * @return the created
- */
- public Timestamp getCreated() {
- return created;
- }
-
- /**
- * @param created the created to set
- */
- public void setCreated(Timestamp created) {
- this.created = created;
- }
-
- /**
- * @return the updated
- */
- public Timestamp getUpdated() {
- return updated;
- }
-
- /**
- * @param updated the updated to set
- */
- public void setUpdated(Timestamp updated) {
- this.updated = updated;
- }
-
- //------------------------------------------------------- Good citizenship
-
- @Override
- public String toString() {
- StringBuilder buf = new StringBuilder();
- buf.append("{");
- buf.append(this.getConsumerKey());
- buf.append("}");
- return buf.toString();
- }
-
- @Override
- public boolean equals(Object other) {
- if (other == this) {
- return true;
- }
- if (!(other instanceof OAuthAccessorRecord)) {
- return false;
- }
- OAuthAccessorRecord o = (OAuthAccessorRecord)other;
- return new EqualsBuilder()
- .append(getConsumerKey(), o.getConsumerKey())
- .isEquals();
- }
-
- @Override
- public int hashCode() {
- return new HashCodeBuilder().append(getConsumerKey()).toHashCode();
- }
-
- /**
- * @return the authorized
- */
- public Boolean getAuthorized() {
- return authorized;
- }
-
- /**
- * @param authorized the authorized to set
- */
- public void setAuthorized(Boolean authorized) {
- this.authorized = authorized;
- }
-
- /**
- * @return the userName
- */
- public String getUserName() {
- return userName;
- }
-
- /**
- * @param userName the userName to set
- */
- public void setUserName(String userName) {
- this.userName = userName;
- }
-
-}
diff --git a/app/src/main/java/org/apache/roller/weblogger/pojos/OAuthConsumerRecord.java b/app/src/main/java/org/apache/roller/weblogger/pojos/OAuthConsumerRecord.java
deleted file mode 100644
index 5ab75b0c9b..0000000000
--- a/app/src/main/java/org/apache/roller/weblogger/pojos/OAuthConsumerRecord.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * 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.pojos;
-
-import java.io.Serializable;
-import org.apache.commons.lang3.builder.EqualsBuilder;
-import org.apache.commons.lang3.builder.HashCodeBuilder;
-
-
-/**
- * Stores data for an OAuth consumer key and secret.
- * There can be up to one for the whole site and up to one per user.
- */
-public class OAuthConsumerRecord implements Serializable {
- private String consumerKey;
- private String consumerSecret;
- private String userName;
-
- public OAuthConsumerRecord() {
- }
-
- /**
- * @return the consumerKey
- */
- public String getConsumerKey() {
- return consumerKey;
- }
-
- /**
- * @param consumerKey the consumerKey to set
- */
- public void setConsumerKey(String consumerKey) {
- this.consumerKey = consumerKey;
- }
-
- /**
- * @return the consumerSecret
- */
- public String getConsumerSecret() {
- return consumerSecret;
- }
-
- /**
- * @param consumerSecret the consumerSecret to set
- */
- public void setConsumerSecret(String consumerSecret) {
- this.consumerSecret = consumerSecret;
- }
-
- /**
- * @return the username
- */
- public String getUserName() {
- return userName;
- }
-
- /**
- * @param username the username to set
- */
- public void setUserName(String username) {
- this.userName = username;
- }
-
- //------------------------------------------------------- Good citizenship
-
- @Override
- public String toString() {
- StringBuilder buf = new StringBuilder();
- buf.append("{");
- buf.append(this.getConsumerKey());
- buf.append("}");
- return buf.toString();
- }
-
- @Override
- public boolean equals(Object other) {
- if (other == this) {
- return true;
- }
- if (!(other instanceof OAuthConsumerRecord)) {
- return false;
- }
- OAuthConsumerRecord o = (OAuthConsumerRecord)other;
- return new EqualsBuilder()
- .append(getConsumerKey(), o.getConsumerKey())
- .isEquals();
- }
-
- @Override
- public int hashCode() {
- return new HashCodeBuilder().append(getConsumerKey()).toHashCode();
- }
-
-}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/CmaRollerContext.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/CmaRollerContext.java
index 3e2d544987..29c1eb1b77 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/CmaRollerContext.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/CmaRollerContext.java
@@ -18,7 +18,7 @@
package org.apache.roller.weblogger.ui.core;
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
/**
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java
index 0955747bc9..b78991085d 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerContext.java
@@ -23,9 +23,9 @@
import java.util.HashMap;
import java.util.Map;
import java.util.Properties;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletContextEvent;
-import javax.servlet.ServletContextListener;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletContextEvent;
+import jakarta.servlet.ServletContextListener;
import org.apache.roller.weblogger.business.Weblogger;
import org.springframework.security.authentication.AuthenticationProvider;
@@ -317,10 +317,10 @@ private DelegatingPasswordEncoder createPasswordEncoder() {
// supported encoders
encoders.put("bcrypt", new BCryptPasswordEncoder());
- encoders.put("pbkdf2", new Pbkdf2PasswordEncoder());
+ encoders.put("pbkdf2", Pbkdf2PasswordEncoder.defaultsForSpringSecurity_v5_8());
// provided by bouncy castle dependency
- encoders.put("scrypt", new SCryptPasswordEncoder());
- encoders.put("argon2", new Argon2PasswordEncoder());
+ encoders.put("scrypt", SCryptPasswordEncoder.defaultsForSpringSecurity_v5_8());
+ encoders.put("argon2", Argon2PasswordEncoder.defaultsForSpringSecurity_v5_8());
// just for testing
encoders.put("noop", org.springframework.security.crypto.password.NoOpPasswordEncoder.getInstance());
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerSession.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerSession.java
index 5c0f029c25..959cc3e908 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerSession.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/RollerSession.java
@@ -21,11 +21,11 @@
import java.io.Serializable;
import java.security.Principal;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
-import javax.servlet.http.HttpSessionActivationListener;
-import javax.servlet.http.HttpSessionEvent;
-import javax.servlet.http.HttpSessionListener;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpSessionActivationListener;
+import jakarta.servlet.http.HttpSessionEvent;
+import jakarta.servlet.http.HttpSessionListener;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
@@ -89,16 +89,7 @@ public static RollerSession getRollerSession(HttpServletRequest request) {
UserManager umgr = WebloggerFactory.getWeblogger().getUserManager();
User user = umgr.getUserByUserName(principal.getName());
-
- // check for OpenID username (in the form of a URL)
- if (user == null && principal.getName() != null && principal.getName().startsWith("http://")) {
- String openidurl = principal.getName();
- if (openidurl.endsWith("/")) {
- openidurl = openidurl.substring(0, openidurl.length() - 1);
- }
- user = umgr.getUserByOpenIdUrl(openidurl);
- }
-
+
// try one time to auto-provision, only happens if user==null
// which means installation has LDAP enabled in security.xml
if (user == null && WebloggerConfig.getBooleanProperty("users.ldap.autoProvision.enabled")) {
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/BootstrapFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/BootstrapFilter.java
index a9d20c2283..1ccc442ce5 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/BootstrapFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/BootstrapFilter.java
@@ -19,16 +19,16 @@
package org.apache.roller.weblogger.ui.core.filters;
import java.io.IOException;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.business.WebloggerFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/BootstrapSecurityFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/BootstrapSecurityFilter.java
index 32b63922c1..727b061d20 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/BootstrapSecurityFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/BootstrapSecurityFilter.java
@@ -1,8 +1,8 @@
package org.apache.roller.weblogger.ui.core.filters;
import java.io.IOException;
-import javax.servlet.*;
-import javax.servlet.http.*;
+import jakarta.servlet.*;
+import jakarta.servlet.http.*;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.ui.core.security.BootstrapSecurity;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/CharEncodingFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/CharEncodingFilter.java
index c8109a59c5..99f44624b3 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/CharEncodingFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/CharEncodingFilter.java
@@ -20,12 +20,12 @@
import java.io.IOException;
import java.io.UnsupportedEncodingException;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/CustomOpenIDAuthenticationProcessingFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/CustomOpenIDAuthenticationProcessingFilter.java
deleted file mode 100644
index 9076578d88..0000000000
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/CustomOpenIDAuthenticationProcessingFilter.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * 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.core.filters;
-
-import java.io.IOException;
-import java.net.MalformedURLException;
-import java.net.URL;
-
-import javax.servlet.Filter;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.springframework.security.core.Authentication;
-import org.springframework.security.core.GrantedAuthority;
-import org.springframework.security.openid.OpenIDAuthenticationToken;
-import org.springframework.security.openid.OpenIDAuthenticationFilter;
-//import org.springframework.security.userdetails.openid.OpenIDUserAttribute;
-
-
-/**
- * Handle response from OpenID provider.
- * @author Tatyana Tokareva
- */
-public class CustomOpenIDAuthenticationProcessingFilter
- extends OpenIDAuthenticationFilter implements Filter {
-
- private static Log log = LogFactory.getLog(CustomOpenIDAuthenticationProcessingFilter.class);
-
- /**
- * @throws org.springframework.security.core.AuthenticationException
- */
- @Override
- public Authentication attemptAuthentication(HttpServletRequest req, HttpServletResponse rsp) throws IOException {
- OpenIDAuthenticationToken auth;
-
- // Processing standard OpenId user authentication
- auth = (OpenIDAuthenticationToken) super.attemptAuthentication(req, rsp);
-
- // auth will be null on the first pass of super.attemptAuthentication()
- if (auth != null) {
- GrantedAuthority ga = (GrantedAuthority) auth.getAuthorities().toArray()[0];
-
- if (ga.getAuthority().equals("rollerOpenidLogin")) {
-
- /* TODO: when Spring Security 2.1 is released, we can uncomment
- * this code, which will allow us to pre-populate the new user
- * registration form with information from the OpenID Provider.
- *
- Collection sREGAttributesList = auth.getAttributes();
- OpenIDUserAttribute openidName = new OpenIDUserAttribute(
- OpenIDUserAttribute.Attributes.openidname.toString(), "");
- openidName.setValue(auth.getIdentityUrl());
- sREGAttributesList.add(openidName);
-
- // TODO: find a better place to stash attributes
- UserManager mgr = WebloggerFactory.getWeblogger().getUserManager();
- mgr.userAttributes.put(
- UserAttribute.Attributes.openidUrl.toString(),
- sREGAttributesList);
- */
-
- }
- }
- return auth;
- }
-
- /**
- * {@inheritDoc}
- */
- @Override
- protected String lookupRealm(String returnToUrl) {
-
- String mapping = super.lookupRealm(returnToUrl);
-
- if (mapping == null) {
- try {
- URL url = new URL(returnToUrl);
- int port = url.getPort();
-
- StringBuilder realmBuffer = new StringBuilder(returnToUrl.length())
- .append(url.getProtocol())
- .append("://")
- .append(url.getHost());
- if (port != -1) {
- realmBuffer.append(":").append(port);
- }
- realmBuffer.append("/");
- mapping = realmBuffer.toString();
- } catch (MalformedURLException e) {
- log.warn("returnToUrl was not a valid URL: [" + returnToUrl + "]", e);
- }
- }
-
- return mapping;
- }
-}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/DebugFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/DebugFilter.java
index 1bf1508c88..de994e489b 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/DebugFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/DebugFilter.java
@@ -19,14 +19,14 @@
package org.apache.roller.weblogger.ui.core.filters;
import java.io.IOException;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/IPBanFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/IPBanFilter.java
index eda17e24eb..2846d821e3 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/IPBanFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/IPBanFilter.java
@@ -19,14 +19,14 @@
package org.apache.roller.weblogger.ui.core.filters;
import java.io.IOException;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.util.IPBanList;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/InitFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/InitFilter.java
index 554ccc6beb..6d9da1abfb 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/InitFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/InitFilter.java
@@ -20,13 +20,13 @@
import java.io.IOException;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/LoadSaltFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/LoadSaltFilter.java
index 8a1c830fa3..f0729400bb 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/LoadSaltFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/LoadSaltFilter.java
@@ -20,8 +20,8 @@
import java.io.IOException;
import java.security.SecureRandom;
-import javax.servlet.*;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.*;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.roller.weblogger.ui.core.RollerSession;
import org.apache.roller.weblogger.ui.rendering.util.cache.SaltCache;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/PersistenceSessionFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/PersistenceSessionFilter.java
index a687552f7a..44127249d9 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/PersistenceSessionFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/PersistenceSessionFilter.java
@@ -19,14 +19,14 @@
package org.apache.roller.weblogger.ui.core.filters;
import java.io.IOException;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.business.WebloggerFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/RoleAssignmentFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/RoleAssignmentFilter.java
index bf4aaba709..37e9e03ef6 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/RoleAssignmentFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/RoleAssignmentFilter.java
@@ -19,14 +19,14 @@
package org.apache.roller.weblogger.ui.core.filters;
import java.io.IOException;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletRequestWrapper;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequestWrapper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/SaltValidator.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/SaltValidator.java
index e1dba53f73..50e4a5f729 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/SaltValidator.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/SaltValidator.java
@@ -22,8 +22,8 @@
import java.util.Locale;
import java.util.Objects;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.roller.weblogger.pojos.User;
import org.apache.roller.weblogger.ui.core.RollerSession;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/SpringFirewallExceptionFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/SpringFirewallExceptionFilter.java
index 2ff028cea6..186e84ff91 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/SpringFirewallExceptionFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/SpringFirewallExceptionFilter.java
@@ -19,14 +19,14 @@
package org.apache.roller.weblogger.ui.core.filters;
import java.io.IOException;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.security.web.firewall.RequestRejectedException;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/ValidateSaltFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/ValidateSaltFilter.java
index 78a32474b9..8c7e125c8e 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/ValidateSaltFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/ValidateSaltFilter.java
@@ -20,13 +20,13 @@
import java.io.IOException;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/XmlRpcEnabledFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/XmlRpcEnabledFilter.java
index 3d5255bbcf..c5fac53ea9 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/XmlRpcEnabledFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/filters/XmlRpcEnabledFilter.java
@@ -19,13 +19,13 @@
package org.apache.roller.weblogger.ui.core.filters;
import java.io.IOException;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/AutoProvision.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/AutoProvision.java
index 0df869f3e1..aa52fd5348 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/AutoProvision.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/AutoProvision.java
@@ -17,7 +17,7 @@
*/
package org.apache.roller.weblogger.ui.core.security;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
public interface AutoProvision {
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java
index d526e06bcf..f3e4e724f7 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/BasicUserAutoProvision.java
@@ -17,7 +17,7 @@
*/
package org.apache.roller.weblogger.ui.core.security;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/BootstrapSecurity.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/BootstrapSecurity.java
index 54f9ae2d3e..c67abc6d75 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/BootstrapSecurity.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/BootstrapSecurity.java
@@ -23,7 +23,7 @@
import java.security.MessageDigest;
import java.security.SecureRandom;
import java.util.Base64;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/CustomUserRegistry.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/CustomUserRegistry.java
index 14d184f870..01eb5fa845 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/CustomUserRegistry.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/CustomUserRegistry.java
@@ -24,7 +24,7 @@
import javax.naming.NamingException;
import javax.naming.directory.Attribute;
import javax.naming.directory.Attributes;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.roller.weblogger.config.AuthMethod;
import org.springframework.security.core.Authentication;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerUserDetailsService.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerUserDetailsService.java
index db41c19b1e..853cfb7429 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerUserDetailsService.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/security/RollerUserDetailsService.java
@@ -39,54 +39,17 @@ public UserDetails loadUserByUsername(String userName) {
try {
UserManager umgr = roller.getUserManager();
User userData;
- // OpenID user?
- if (userName.startsWith("http://") || userName.startsWith("https://")) {
- if (userName.endsWith("/")) {
- userName = userName.substring(0, userName.length() -1 );
- }
- try {
- userData = umgr.getUserByOpenIdUrl(userName);
- if (userData == null) {
- log.warn("No user found with OpenID URL: " + userName +
- " (OpenID aliased by auth provider?) Confirm URL exists in roller_user table");
- }
- } catch (WebloggerException ex) {
- throw new DataRetrievalFailureException("ERROR in user lookup", ex);
- }
- String name;
- String password;
- List authorities;
-
- // We are not throwing UsernameNotFound exception in case of
- // openid authentication in order to receive OpenID Simple Registration (SREG)
- // attributes from the authentication filter and save them
- if (userData == null) {
- authorities = new ArrayList<>(1);
- SimpleGrantedAuthority g = new SimpleGrantedAuthority("rollerOpenidLogin");
- authorities.add(g);
- name = "openid";
- password = "openid";
- } else {
- authorities = getAuthorities(userData, umgr);
- name = userData.getUserName();
- password = userData.getPassword();
- }
- return new org.springframework.security.core.userdetails.User(name, password,
- true, true, true, true, authorities);
- } else {
- // standard username/password auth
- try {
- userData = umgr.getUserByUserName(userName);
- } catch (WebloggerException ex) {
- throw new DataRetrievalFailureException("ERROR in user lookup", ex);
- }
- if (userData == null) {
- throw new UsernameNotFoundException("ERROR no user: " + userName);
- }
- List authorities = getAuthorities(userData, umgr);
- return new org.springframework.security.core.userdetails.User(userData.getUserName(), userData.getPassword(),
- true, true, true, true, authorities);
- }
+ try {
+ userData = umgr.getUserByUserName(userName);
+ } catch (WebloggerException ex) {
+ throw new DataRetrievalFailureException("ERROR in user lookup", ex);
+ }
+ if (userData == null) {
+ throw new UsernameNotFoundException("ERROR no user: " + userName);
+ }
+ List authorities = getAuthorities(userData, umgr);
+ return new org.springframework.security.core.userdetails.User(userData.getUserName(), userData.getPassword(),
+ true, true, true, true, authorities);
} catch (WebloggerException ex) {
throw new DataAccessResourceFailureException("ERROR: fetching roles", ex);
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/core/tags/calendar/CalendarTag.java b/app/src/main/java/org/apache/roller/weblogger/ui/core/tags/calendar/CalendarTag.java
index 2993837bb5..afa3099911 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/core/tags/calendar/CalendarTag.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/core/tags/calendar/CalendarTag.java
@@ -32,9 +32,9 @@
import java.util.ResourceBundle;
import java.util.StringTokenizer;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.tagext.Tag;
-import javax.servlet.jsp.tagext.TagSupport;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.tagext.Tag;
+import jakarta.servlet.jsp.tagext.TagSupport;
/**
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/RequestMapper.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/RequestMapper.java
index 4bac5118f8..00fb58068f 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/RequestMapper.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/RequestMapper.java
@@ -2,9 +2,9 @@
package org.apache.roller.weblogger.ui.rendering;
import java.io.IOException;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
/**
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper.java
index ee12cb7d09..f3f0f123be 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/WeblogRequestMapper.java
@@ -23,10 +23,10 @@
import java.util.Arrays;
import java.util.HashSet;
import java.util.Set;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/filters/DeviceResolverRequestFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/filters/DeviceResolverRequestFilter.java
index 8add354065..732000d16b 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/filters/DeviceResolverRequestFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/filters/DeviceResolverRequestFilter.java
@@ -23,10 +23,10 @@
import java.io.IOException;
-import javax.servlet.FilterChain;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.roller.weblogger.ui.rendering.util.mobile.Device;
import org.apache.roller.weblogger.ui.rendering.util.mobile.DeviceResolver;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/filters/RequestMappingFilter.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/filters/RequestMappingFilter.java
index 4c56fb92be..c305131382 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/filters/RequestMappingFilter.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/filters/RequestMappingFilter.java
@@ -22,14 +22,14 @@
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
-import javax.servlet.Filter;
-import javax.servlet.FilterChain;
-import javax.servlet.FilterConfig;
-import javax.servlet.ServletException;
-import javax.servlet.ServletRequest;
-import javax.servlet.ServletResponse;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.Filter;
+import jakarta.servlet.FilterChain;
+import jakarta.servlet.FilterConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.ServletRequest;
+import jakarta.servlet.ServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.ui.rendering.RequestMapper;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/mobile/MobileDeviceRepository.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/mobile/MobileDeviceRepository.java
index ddad1e2d1b..e57ce5c8cd 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/mobile/MobileDeviceRepository.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/mobile/MobileDeviceRepository.java
@@ -18,8 +18,8 @@
package org.apache.roller.weblogger.ui.rendering.mobile;
import java.util.regex.Pattern;
-import javax.servlet.http.Cookie;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.Cookie;
+import jakarta.servlet.http.HttpServletRequest;
import static org.apache.roller.weblogger.ui.rendering.mobile.MobileDeviceRepository.DeviceType.*;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/CalendarModel.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/CalendarModel.java
index dfb778ec02..a558887eac 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/CalendarModel.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/model/CalendarModel.java
@@ -19,7 +19,7 @@
package org.apache.roller.weblogger.ui.rendering.model;
import java.util.Map;
-import javax.servlet.jsp.PageContext;
+import jakarta.servlet.jsp.PageContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/CommentAuthenticator.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/CommentAuthenticator.java
index 68c707f176..1440f92690 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/CommentAuthenticator.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/CommentAuthenticator.java
@@ -18,7 +18,7 @@
package org.apache.roller.weblogger.ui.rendering.plugins.comments;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
/**
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/CommentAuthenticatorUtils.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/CommentAuthenticatorUtils.java
index 12a78f600a..309e1232de 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/CommentAuthenticatorUtils.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/CommentAuthenticatorUtils.java
@@ -24,7 +24,7 @@
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.pojos.Weblog;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.Locale;
class CommentAuthenticatorUtils {
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/DefaultCommentAuthenticator.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/DefaultCommentAuthenticator.java
index 49b48fd7be..81b02a109e 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/DefaultCommentAuthenticator.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/DefaultCommentAuthenticator.java
@@ -18,7 +18,7 @@
package org.apache.roller.weblogger.ui.rendering.plugins.comments;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
/**
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/LdapCommentAuthenticator.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/LdapCommentAuthenticator.java
index b851048ff1..e49ad85194 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/LdapCommentAuthenticator.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/LdapCommentAuthenticator.java
@@ -24,8 +24,8 @@
import javax.naming.NamingException;
import javax.naming.ldap.InitialLdapContext;
import javax.naming.ldap.LdapContext;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/MathCommentAuthenticator.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/MathCommentAuthenticator.java
index 74ab7bfa16..41a5684017 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/MathCommentAuthenticator.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/plugins/comments/MathCommentAuthenticator.java
@@ -21,8 +21,8 @@
import java.util.Locale;
import java.util.Random;
import java.security.SecureRandom;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpSession;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.util.I18nMessages;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/CommentAuthenticatorServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/CommentAuthenticatorServlet.java
index b808050ef9..781bcfafbe 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/CommentAuthenticatorServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/CommentAuthenticatorServlet.java
@@ -20,11 +20,11 @@
import java.io.IOException;
import java.io.PrintWriter;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.config.WebloggerConfig;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/CommentServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/CommentServlet.java
index 2e2b5bd7df..f60f327471 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/CommentServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/CommentServlet.java
@@ -22,12 +22,12 @@
import java.sql.Timestamp;
import java.util.Iterator;
-import javax.servlet.RequestDispatcher;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.RequestDispatcher;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/FeedServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/FeedServlet.java
index c05bdfd56d..8a8b3d9689 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/FeedServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/FeedServlet.java
@@ -21,11 +21,11 @@
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.util.RollerConstants;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/MediaResourceServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/MediaResourceServlet.java
index a42faec283..10cdf4af56 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/MediaResourceServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/MediaResourceServlet.java
@@ -22,11 +22,11 @@
import java.io.InputStream;
import java.io.OutputStream;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PageServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PageServlet.java
index baf5e0948a..39280f4945 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PageServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PageServlet.java
@@ -53,13 +53,13 @@
import org.apache.roller.weblogger.util.I18nMessages;
import org.apache.roller.weblogger.util.cache.CachedContent;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.jsp.JspFactory;
-import javax.servlet.jsp.PageContext;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.jsp.JspFactory;
+import jakarta.servlet.jsp.PageContext;
import java.io.IOException;
import java.util.Date;
import java.util.HashMap;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PlanetFeedServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PlanetFeedServlet.java
index 432a0c33a1..19008086ac 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PlanetFeedServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PlanetFeedServlet.java
@@ -22,11 +22,11 @@
import java.util.Date;
import java.util.HashMap;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewResourceServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewResourceServlet.java
index 3fea57ff2b..5a944ef174 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewResourceServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewResourceServlet.java
@@ -20,12 +20,12 @@
import java.io.IOException;
import java.io.InputStream;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewServlet.java
index a2ed8ced82..fbf07ebe4d 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/PreviewServlet.java
@@ -37,13 +37,13 @@
import org.apache.roller.weblogger.ui.rendering.util.WeblogPreviewRequest;
import org.apache.roller.weblogger.util.cache.CachedContent;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.jsp.JspFactory;
-import javax.servlet.jsp.PageContext;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.jsp.JspFactory;
+import jakarta.servlet.jsp.PageContext;
import java.io.IOException;
import java.util.HashMap;
import java.util.Map;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/RSDServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/RSDServlet.java
index cd23152115..da5ba82af9 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/RSDServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/RSDServlet.java
@@ -20,11 +20,11 @@
import java.io.IOException;
import java.util.HashMap;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.util.RollerConstants;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/ResourceServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/ResourceServlet.java
index 4f793e7036..b78f1a09be 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/ResourceServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/ResourceServlet.java
@@ -21,12 +21,12 @@
import java.io.IOException;
import java.io.InputStream;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletContext;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletContext;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/SearchServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/SearchServlet.java
index 9b3c90c6e0..eaeafa7bfd 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/SearchServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/servlets/SearchServlet.java
@@ -22,13 +22,13 @@
import java.util.HashMap;
import java.util.Map;
-import javax.servlet.ServletConfig;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-import javax.servlet.jsp.JspFactory;
-import javax.servlet.jsp.PageContext;
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+import jakarta.servlet.jsp.JspFactory;
+import jakarta.servlet.jsp.PageContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/ModDateHeaderUtil.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/ModDateHeaderUtil.java
index d227de531a..67367bb6c1 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/ModDateHeaderUtil.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/ModDateHeaderUtil.java
@@ -21,8 +21,8 @@
import java.text.SimpleDateFormat;
import java.util.Date;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/ParsedRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/ParsedRequest.java
index e14414bf47..1133da3370 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/ParsedRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/ParsedRequest.java
@@ -18,7 +18,7 @@
package org.apache.roller.weblogger.ui.rendering.util;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/PlanetRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/PlanetRequest.java
index 11f1fb7f86..09fb4c00fb 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/PlanetRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/PlanetRequest.java
@@ -18,7 +18,7 @@
package org.apache.roller.weblogger.ui.rendering.util;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogCommentRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogCommentRequest.java
index 95eea79896..6c0e087200 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogCommentRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogCommentRequest.java
@@ -20,7 +20,7 @@
import java.net.URLDecoder;
import java.nio.charset.StandardCharsets;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogFeedRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogFeedRequest.java
index 2c0832f6d7..bd94b83cbd 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogFeedRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogFeedRequest.java
@@ -20,7 +20,7 @@
import java.util.List;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogMediaResourceRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogMediaResourceRequest.java
index ee94984aea..1d297c4efa 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogMediaResourceRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogMediaResourceRequest.java
@@ -18,7 +18,7 @@
package org.apache.roller.weblogger.ui.rendering.util;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPageRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPageRequest.java
index 4e7dc7cb52..bdf766e09b 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPageRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPageRequest.java
@@ -33,7 +33,7 @@
import org.apache.roller.weblogger.util.URLUtilities;
import org.apache.roller.weblogger.util.Utilities;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewRequest.java
index 5df599d4ea..2c87413235 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewRequest.java
@@ -18,7 +18,7 @@
package org.apache.roller.weblogger.ui.rendering.util;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewResourceRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewResourceRequest.java
index d689d2c8fa..686aa286fc 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewResourceRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogPreviewResourceRequest.java
@@ -18,7 +18,7 @@
package org.apache.roller.weblogger.ui.rendering.util;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogRequest.java
index 37fa6d8067..f42c5ac400 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogRequest.java
@@ -19,7 +19,7 @@
package org.apache.roller.weblogger.ui.rendering.util;
import java.util.Locale;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogResourceRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogResourceRequest.java
index 19107c4c21..9e7fe6ca2c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogResourceRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogResourceRequest.java
@@ -18,7 +18,7 @@
package org.apache.roller.weblogger.ui.rendering.util;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.util.URLUtilities;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogSearchRequest.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogSearchRequest.java
index d1037ee5d6..b518fb14a7 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogSearchRequest.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/WeblogSearchRequest.java
@@ -18,7 +18,7 @@
package org.apache.roller.weblogger.ui.rendering.util;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/DeviceResolver.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/DeviceResolver.java
index 60e6010aad..9e47cb2a73 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/DeviceResolver.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/DeviceResolver.java
@@ -20,7 +20,7 @@
*/
package org.apache.roller.weblogger.ui.rendering.util.mobile;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
/**
* Service interface for resolving Devices that originate web requests with the
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/DeviceUtils.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/DeviceUtils.java
index dea2f82453..79bb814aa4 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/DeviceUtils.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/DeviceUtils.java
@@ -20,7 +20,7 @@
*/
package org.apache.roller.weblogger.ui.rendering.util.mobile;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.springframework.web.context.request.RequestAttributes;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/LiteDeviceResolver.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/LiteDeviceResolver.java
index d02929b94b..f29e59e032 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/LiteDeviceResolver.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/LiteDeviceResolver.java
@@ -24,7 +24,7 @@
import java.util.Arrays;
import java.util.Enumeration;
import java.util.List;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
/**
* A "lightweight" device resolver algorithm based on Wordpress's Mobile pack.
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/MobileDeviceRepository.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/MobileDeviceRepository.java
index 7c8e2bd819..201755e996 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/MobileDeviceRepository.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/util/mobile/MobileDeviceRepository.java
@@ -20,7 +20,7 @@
*/
package org.apache.roller.weblogger.ui.rendering.util.mobile;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
/**
* The Class MobileDeviceRepository.
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/velocity/WebappResourceLoader.java b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/velocity/WebappResourceLoader.java
index 0a53e17a22..35b18cfd66 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/rendering/velocity/WebappResourceLoader.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/rendering/velocity/WebappResourceLoader.java
@@ -25,7 +25,7 @@
import java.util.HashMap;
import java.util.Map;
-import javax.servlet.ServletContext;
+import jakarta.servlet.ServletContext;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/CacheInfo.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/CacheInfo.java
index 7f199baf5e..9feae539fb 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/CacheInfo.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/CacheInfo.java
@@ -25,6 +25,7 @@
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
@@ -105,6 +106,7 @@ public String getCache() {
return cache;
}
+ @StrutsParameter
public void setCache(String cache) {
this.cache = cache;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalCommentManagement.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalCommentManagement.java
index ef1774f8c4..caac1056d9 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalCommentManagement.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalCommentManagement.java
@@ -24,7 +24,6 @@
import java.util.HashMap;
import java.util.List;
import java.util.Map;
-import javax.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -42,14 +41,14 @@
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.Utilities;
import org.apache.struts2.convention.annotation.AllowedMethods;
-import org.apache.struts2.interceptor.ServletRequestAware;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
* Action for managing global set of comments.
*/
// TODO: make this work @AllowedMethods({"query","delete","update"})
-public class GlobalCommentManagement extends UIAction implements ServletRequestAware {
+public class GlobalCommentManagement extends UIAction {
private static Log log = LogFactory.getLog(GlobalCommentManagement.class);
@@ -245,6 +244,7 @@ public String delete() {
* Update a list of comments.
*/
public String update() {
+ httpMethod = getServletRequest().getMethod();
if (!"POST".equals(httpMethod)) {
return ERROR;
}
@@ -338,6 +338,7 @@ public List getCommentStatusOptions() {
return opts;
}
+ @StrutsParameter(depth = 1)
public GlobalCommentManagementBean getBean() {
return bean;
}
@@ -378,9 +379,4 @@ public void setPager(CommentsPager pager) {
this.pager = pager;
}
- @Override
- public void setServletRequest(HttpServletRequest req) {
- httpMethod = req.getMethod();
- }
-
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java
index 4cd235084d..d39b036cf2 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/GlobalConfig.java
@@ -19,8 +19,6 @@
package org.apache.roller.weblogger.ui.struts2.admin;
import java.util.*;
-import javax.servlet.http.HttpServletRequest;
-
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -43,23 +41,28 @@
import org.apache.roller.weblogger.ui.rendering.util.cache.WeblogPageCache;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.Utilities;
+import org.apache.struts2.action.ParametersAware;
import org.apache.struts2.dispatcher.HttpParameters;
import org.apache.struts2.dispatcher.Parameter;
-import org.apache.struts2.interceptor.HttpParametersAware;
-import org.apache.struts2.interceptor.ServletRequestAware;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
* Action which handles editing of global configuration.
*/
// TODO: make this work @AllowedMethods({"execute","save"})
-public class GlobalConfig extends UIAction implements HttpParametersAware, ServletRequestAware {
+public class GlobalConfig extends UIAction implements ParametersAware {
private static final Log log = LogFactory.getLog(GlobalConfig.class);
// the request parameters
private HttpParameters params = HttpParameters.create().build();
+ @Override
+ public void withParameters(HttpParameters parameters) {
+ this.params = parameters;
+ }
+
// map of config properties
private Map properties = Collections.emptyMap();
@@ -105,6 +108,13 @@ public List requiredGlobalPermissionActions() {
*/
@Override
public void myPrepare() {
+ if (log.isDebugEnabled()) {
+ log.debug("Parameter map:");
+ for (Map.Entry entry : params.entrySet()) {
+ log.debug(entry.getKey() + " = " + Utilities.stringArrayToString(entry.getValue().getMultipleValues(), ","));
+ }
+ }
+
try {
// just grab our properties map and make it available to the action
PropertiesManager mgr = WebloggerFactory.getWeblogger().getPropertiesManager();
@@ -156,6 +166,7 @@ public String execute() {
* Save global properties.
*/
public String save() {
+ httpMethod = getServletRequest().getMethod();
if (!"POST".equals(httpMethod)) {
return ERROR;
}
@@ -293,19 +304,6 @@ private void invalidateRenderedContent() {
}
- @Override
- public void setParameters(HttpParameters parameters) {
- this.params = parameters;
-
- if (log.isDebugEnabled()) {
- log.debug("Parameter map:");
-
- for (Map.Entry entry : parameters.entrySet()) {
- log.debug(entry.getKey() + " = " + Utilities.stringArrayToString(entry.getValue().getMultipleValues(), ","));
- }
- }
- }
-
// convenience method for getting a single parameter as a String
private String getParameter(String key) {
return this.params.get(key).getValue();
@@ -343,15 +341,11 @@ public String[] getCommentPlugins() {
return commentPlugins.clone();
}
+ @StrutsParameter
public void setCommentPlugins(String[] commentPlugins) {
this.commentPlugins = commentPlugins.clone();
}
- @Override
- public void setServletRequest(HttpServletRequest req) {
- httpMethod = req.getMethod();
- }
-
public Collection getWeblogs() {
return weblogs;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargetEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargetEdit.java
index 148dbc9625..93c956eeea 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargetEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargetEdit.java
@@ -27,6 +27,7 @@
import org.apache.roller.weblogger.pojos.PingTarget;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
* Add or modify a common ping target.
@@ -140,6 +141,7 @@ private boolean isAdd() {
return actionName.equals("commonPingTargetAdd");
}
+ @StrutsParameter(depth = 1)
public PingTargetBean getBean() {
return bean;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargets.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargets.java
index c34fbc1904..5311271532 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargets.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/PingTargets.java
@@ -30,6 +30,7 @@
import org.apache.roller.weblogger.pojos.PingTarget;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
* Admin action for managing global ping targets.
@@ -203,6 +204,7 @@ public String getPingTargetId() {
return pingTargetId;
}
+ @StrutsParameter
public void setPingTargetId(String pingTargetId) {
this.pingTargetId = pingTargetId;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserAdmin.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserAdmin.java
index 53c0daa60a..3b438db605 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserAdmin.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserAdmin.java
@@ -27,6 +27,7 @@
import org.apache.roller.weblogger.pojos.GlobalPermission;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
@@ -70,6 +71,7 @@ public String getAuthMethod() {
return authMethod.name();
}
+ @StrutsParameter(depth = 1)
public CreateUserBean getBean() {
return bean;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserEdit.java
index 70878ecf82..d27a0e0ca0 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/admin/UserEdit.java
@@ -40,6 +40,7 @@
import org.apache.roller.weblogger.ui.core.RollerLoginSessionManager;
import org.apache.roller.weblogger.ui.struts2.core.Register;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
@@ -272,6 +273,7 @@ private void myValidate() {
}
}
+ @StrutsParameter(depth = 1)
public CreateUserBean getBean() {
return bean;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/CommentDataServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/CommentDataServlet.java
index 6868c27ebd..93862fae6c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/CommentDataServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/CommentDataServlet.java
@@ -19,10 +19,10 @@
package org.apache.roller.weblogger.ui.struts2.ajax;
import java.io.IOException;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.text.StringEscapeUtils;
import org.apache.commons.text.WordUtils;
import org.apache.roller.weblogger.business.Weblogger;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/ThemeDataServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/ThemeDataServlet.java
index bf395a2a0a..166f738ead 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/ThemeDataServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/ThemeDataServlet.java
@@ -28,10 +28,10 @@
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
/**
* Return theme information (id, name, description, relative path to thumbnail)
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/UserDataServlet.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/UserDataServlet.java
index b3739ce408..2472bd1d4c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/UserDataServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/ajax/UserDataServlet.java
@@ -21,10 +21,10 @@
import java.io.IOException;
import java.util.List;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.Weblogger;
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/BootstrapToken.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/BootstrapToken.java
index 0d4ce17bcb..b42e4a704a 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/BootstrapToken.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/BootstrapToken.java
@@ -19,21 +19,19 @@
package org.apache.roller.weblogger.ui.struts2.core;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.ui.core.security.BootstrapSecurity;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
-import org.apache.struts2.interceptor.ServletRequestAware;
-import org.apache.struts2.interceptor.ServletResponseAware;
+import org.apache.struts2.action.ServletResponseAware;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
-public class BootstrapToken extends UIAction implements ServletRequestAware, ServletResponseAware {
+public class BootstrapToken extends UIAction implements ServletResponseAware {
private static final Log LOG = LogFactory.getLog(BootstrapToken.class);
- private HttpServletRequest request;
private HttpServletResponse response;
private String token;
@@ -45,17 +43,17 @@ public String execute() {
setResponseHeaders();
LOG.info("Roller is waiting for an administrator to submit the one-time setup token; "
+ "database setup will not continue until the token is accepted. Setup page: "
- + request.getRequestURL());
+ + getServletRequest().getRequestURL());
return INPUT;
}
public String redeem() {
setResponseHeaders();
- if (!"POST".equalsIgnoreCase(request.getMethod())) {
+ if (!"POST".equalsIgnoreCase(getServletRequest().getMethod())) {
addActionError(getText("installer.bootstrap.postRequired"));
return INPUT;
}
- if (BootstrapSecurity.redeem(request, token == null ? null : token.trim())) {
+ if (BootstrapSecurity.redeem(getServletRequest(), token == null ? null : token.trim())) {
LOG.info("One-time setup token accepted; continuing database setup.");
return SUCCESS;
}
@@ -68,15 +66,12 @@ private void setResponseHeaders() {
response.setHeader("Referrer-Policy", "no-referrer");
}
+ @StrutsParameter
public void setToken(String token) {
this.token = token;
}
- public void setServletRequest(HttpServletRequest request) {
- this.request = request;
- }
-
- public void setServletResponse(HttpServletResponse response) {
+ public void withServletResponse(HttpServletResponse response) {
this.response = response;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java
index f2ffe2b3be..a763437f80 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/CreateWeblog.java
@@ -34,6 +34,7 @@
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.Utilities;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
import java.util.List;
@@ -199,6 +200,7 @@ public List getThemes() {
return themeMgr.getEnabledThemesList();
}
+ @StrutsParameter(depth = 1)
public CreateWeblogBean getBean() {
return bean;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/FrontpageSetup.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/FrontpageSetup.java
index cac83ba4e1..3e1dbfb1b7 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/FrontpageSetup.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/FrontpageSetup.java
@@ -21,7 +21,7 @@
import java.util.Collections;
import java.util.List;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -31,7 +31,7 @@
import org.apache.roller.weblogger.ui.rendering.util.cache.SiteWideCache;
import org.apache.roller.weblogger.ui.rendering.util.cache.WeblogFeedCache;
import org.apache.roller.weblogger.ui.rendering.util.cache.WeblogPageCache;
-import org.apache.struts2.ServletActionContext;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
* Chooses the site frontpage weblog for the first time.
@@ -110,7 +110,7 @@ public String save() {
}
protected boolean isPostRequest() {
- HttpServletRequest req = ServletActionContext.getRequest();
+ HttpServletRequest req = getServletRequest();
return req != null && "POST".equalsIgnoreCase(req.getMethod());
}
@@ -124,6 +124,7 @@ public String getFrontpageBlog() {
return frontpageBlog;
}
+ @StrutsParameter
public void setFrontpageBlog(String frontpageBlog) {
this.frontpageBlog = frontpageBlog;
}
@@ -132,6 +133,7 @@ public Boolean getAggregated() {
return aggregated;
}
+ @StrutsParameter
public void setAggregated(Boolean aggregated) {
this.aggregated = aggregated;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Install.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
index 4ccc4d5105..871d6e1c5d 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Install.java
@@ -32,7 +32,6 @@
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.springframework.beans.FatalBeanException;
-import org.apache.struts2.ServletActionContext;
import org.apache.roller.weblogger.ui.core.security.BootstrapSecurity;
@@ -115,7 +114,7 @@ public String execute() {
public String create() {
- if (!BootstrapSecurity.isValid(ServletActionContext.getRequest())) return BOOTSTRAP;
+ if (!BootstrapSecurity.isValid(getServletRequest())) return BOOTSTRAP;
if (WebloggerFactory.isBootstrapped()) {
return SUCCESS;
@@ -136,7 +135,7 @@ public String create() {
public String upgrade() {
- if (!BootstrapSecurity.isValid(ServletActionContext.getRequest())) return BOOTSTRAP;
+ if (!BootstrapSecurity.isValid(getServletRequest())) return BOOTSTRAP;
if (WebloggerFactory.isBootstrapped()) {
return SUCCESS;
@@ -157,7 +156,7 @@ public String upgrade() {
public String bootstrap() {
- if (!BootstrapSecurity.isValid(ServletActionContext.getRequest())) return BOOTSTRAP;
+ if (!BootstrapSecurity.isValid(getServletRequest())) return BOOTSTRAP;
log.info("ENTERING");
if (WebloggerFactory.isBootstrapped()) {
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Login.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Login.java
index 0cd3a83860..254c6d49d1 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Login.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Login.java
@@ -22,6 +22,7 @@
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
* Handle user logins.
@@ -81,6 +82,7 @@ public String getError() {
return error;
}
+ @StrutsParameter
public void setError(String error) {
this.error = error;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java
index 566db7fc9d..1879137391 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/MainMenu.java
@@ -30,6 +30,7 @@
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
@@ -133,6 +134,7 @@ public String getInviteId() {
return inviteId;
}
+ @StrutsParameter
public void setInviteId(String inviteId) {
this.inviteId = inviteId;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthAuthorize.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthAuthorize.java
deleted file mode 100644
index 93a0359fd7..0000000000
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthAuthorize.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * 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.core;
-
-import javax.servlet.http.HttpServletRequest;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.roller.weblogger.pojos.User;
-import org.apache.roller.weblogger.ui.struts2.util.UIAction;
-import org.apache.struts2.convention.annotation.AllowedMethods;
-import org.apache.struts2.interceptor.ServletRequestAware;
-import org.apache.struts2.interceptor.validation.SkipValidation;
-
-
-/**
- * Allow user to authorized OAuth access to his/her account.
- */
-// TODO: make this work @AllowedMethods({"execute"})
-public class OAuthAuthorize extends UIAction implements ServletRequestAware {
- private static Log log = LogFactory.getLog(OAuthAuthorize.class);
- private String appDesc = null;
- private String token = null;
- private String callback = null;
-
-
- public OAuthAuthorize() {
- this.pageTitle = "oauthAuthorize.title";
- }
-
-
- // override default security, we do not require an action weblog
- @Override
- public boolean isWeblogRequired() {
- return false;
- }
-
-
- @SkipValidation
- @Override
- public String execute() {
- try {
- User ud = getAuthenticatedUser();
- } catch (Exception ex) {
- log.error("ERROR fetching user information", ex);
- }
- return SUCCESS;
- }
-
- /**
- * @return the appDesc
- */
- public String getAppDesc() {
- return appDesc;
- }
-
- /**
- * @return the token
- */
- public String getToken() {
- return token;
- }
-
- /**
- * @return the callback
- */
- public String getCallback() {
- return callback;
- }
-
- /**
- * @return the userName
- */
- public String getUserName() {
- return getAuthenticatedUser().getUserName();
- }
-
- @Override
- public void setServletRequest(HttpServletRequest request) {
- this.appDesc = (String)request.getAttribute("CONS_DESC");
- this.token = (String)request.getAttribute("TOKEN");
- this.callback = (String)request.getAttribute("CALLBACK");
- if (this.getCallback() == null) {
- this.callback = "";
- }
- }
-}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthKeys.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthKeys.java
deleted file mode 100644
index 52546b647b..0000000000
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/OAuthKeys.java
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * 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.core;
-
-import net.oauth.OAuthConsumer;
-import org.apache.commons.codec.digest.DigestUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.roller.weblogger.business.OAuthManager;
-import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
-import org.apache.roller.weblogger.pojos.User;
-import org.apache.roller.weblogger.ui.struts2.util.UIAction;
-import org.apache.struts2.convention.annotation.AllowedMethods;
-import org.apache.struts2.interceptor.validation.SkipValidation;
-
-
-/**
- * Allows user to view his/her OAuth consumer key and secret.
- */
-// TODO: make this work @AllowedMethods({"execute"})
-public class OAuthKeys extends UIAction {
- private static Log log = LogFactory.getLog(OAuthKeys.class);
- private OAuthConsumer userConsumer;
- private OAuthConsumer siteWideConsumer;
-
- public OAuthKeys() {
- this.pageTitle = "oauthKeys.title";
- }
-
-
- // override default security, we do not require an action weblog
- @Override
- public boolean isWeblogRequired() {
- return false;
- }
-
-
- @SkipValidation
- @Override
- public String execute() {
- boolean flush = false;
-
- try {
- User ud = getAuthenticatedUser();
- OAuthManager omgr = WebloggerFactory.getWeblogger().getOAuthManager();
- userConsumer = omgr.getConsumerByUsername(ud.getUserName());
- if (userConsumer == null) {
- String consumerKey = DigestUtils.md5Hex(ud.getUserName());
- userConsumer = omgr.addConsumer(ud.getUserName(), consumerKey);
- flush = true;
- }
-
- if (isUserIsAdmin()) {
- siteWideConsumer = omgr.getConsumer();
- if (siteWideConsumer == null) {
- String consumerKey = DigestUtils.md5Hex(
- WebloggerRuntimeConfig.getAbsoluteContextURL());
- siteWideConsumer = omgr.addConsumer(consumerKey);
- flush = true;
- }
- }
-
- if (flush) {
- WebloggerFactory.getWeblogger().flush();
- }
-
- } catch (Exception ex) {
- log.error("ERROR creating or retrieving your OAuth information", ex);
- }
-
- return SUCCESS;
- }
-
- /**
- * @return the user's consumer
- */
- public OAuthConsumer getUserConsumer() {
- return userConsumer;
- }
-
- /**
- * @return the site's consumer
- */
- public OAuthConsumer getSiteWideConsumer() {
- return siteWideConsumer;
- }
-
- public String getRequestTokenURL() {
- return WebloggerFactory.getWeblogger().getUrlStrategy().getOAuthRequestTokenURL();
- }
-
- public String getAuthorizationURL() {
- return WebloggerFactory.getWeblogger().getUrlStrategy().getOAuthAuthorizationURL();
- }
-
- public String getAccessTokenURL() {
- return WebloggerFactory.getWeblogger().getUrlStrategy().getOAuthAccessTokenURL();
- }
-
-
-}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Profile.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Profile.java
index 6f83a0ddb6..1cf8243916 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Profile.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Profile.java
@@ -28,6 +28,7 @@
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.pojos.User;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
import java.util.Arrays;
@@ -180,6 +181,7 @@ public String getAuthMethod() {
return authMethod.name();
}
+ @StrutsParameter(depth = 1)
public ProfileBean getBean() {
return bean;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Register.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Register.java
index 8d9c85050c..a8ed278e5f 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Register.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Register.java
@@ -20,7 +20,7 @@
import java.util.TimeZone;
import java.util.UUID;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.CharSetUtils;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
@@ -40,7 +40,7 @@
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.MailUtil;
import org.apache.struts2.convention.annotation.AllowedMethods;
-import org.apache.struts2.interceptor.ServletRequestAware;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
@@ -53,14 +53,13 @@
* @see org.apache.roller.weblogger.ui.struts2.core.Login
*/
// TODO: make this work @AllowedMethods({"execute","save","activate"})
-public class Register extends UIAction implements ServletRequestAware {
+public class Register extends UIAction {
private static Log log = LogFactory.getLog(Register.class);
private static final String DISABLED_RETURN_CODE = "disabled";
public static final String DEFAULT_ALLOWED_CHARS = "A-Za-z0-9";
// this is a no-no, we should not need this
- private HttpServletRequest servletRequest = null;
private AuthMethod authMethod = WebloggerConfig.getAuthMethod();
@@ -449,15 +448,7 @@ private void checkOpenID() {
}
- public HttpServletRequest getServletRequest() {
- return servletRequest;
- }
-
- @Override
- public void setServletRequest(HttpServletRequest servletRequest) {
- this.servletRequest = servletRequest;
- }
-
+ @StrutsParameter(depth = 1)
public ProfileBean getBean() {
return bean;
}
@@ -478,6 +469,7 @@ public String getActivationCode() {
return activationCode;
}
+ @StrutsParameter
public void setActivationCode(String activationCode) {
this.activationCode = activationCode;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkEdit.java
index 0bc9387858..9dbfec3941 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarkEdit.java
@@ -27,6 +27,7 @@
import org.apache.roller.weblogger.pojos.WeblogBookmark;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
@@ -145,10 +146,12 @@ public String getFolderId() {
return folderId;
}
+ @StrutsParameter
public void setFolderId(String folderId) {
this.folderId = folderId;
}
+ @StrutsParameter(depth = 1)
public BookmarkBean getBean() {
return bean;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java
index df499162ee..89cdb6be46 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Bookmarks.java
@@ -33,6 +33,7 @@
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
@@ -269,6 +270,7 @@ public String getFolderId() {
return folderId;
}
+ @StrutsParameter
public void setFolderId(String folderId) {
this.folderId = folderId;
}
@@ -277,6 +279,7 @@ public String[] getSelectedBookmarks() {
return selectedBookmarks;
}
+ @StrutsParameter
public void setSelectedBookmarks(String[] bookmarks) {
this.selectedBookmarks = bookmarks;
}
@@ -285,6 +288,7 @@ public String getTargetFolderId() {
return targetFolderId;
}
+ @StrutsParameter
public void setTargetFolderId(String targetFolderId) {
this.targetFolderId = targetFolderId;
}
@@ -312,6 +316,7 @@ public String getViewFolderId() {
return viewFolderId;
}
+ @StrutsParameter
public void setViewFolderId(String viewFolderId) {
this.viewFolderId = viewFolderId;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarksImport.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarksImport.java
index 01aca355bc..9ae5900a5d 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarksImport.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/BookmarksImport.java
@@ -24,6 +24,7 @@
import java.io.InputStream;
import java.text.SimpleDateFormat;
import java.util.Date;
+import java.util.List;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.util.RollerConstants;
@@ -31,31 +32,27 @@
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.action.UploadedFilesAware;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.dispatcher.multipart.UploadedFile;
/**
* Import opml file into bookmarks folder.
*/
// TODO: make this work @AllowedMethods({"execute","save"})
-public final class BookmarksImport extends UIAction {
-
+public final class BookmarksImport extends UIAction implements UploadedFilesAware {
+
private static Log log = LogFactory.getLog(BookmarksImport.class);
-
+
// only write files out that are below this threshold
private static final long WRITE_THRESHOLD_IN_MB = 4;
private static final long WRITE_THRESHOLD = WRITE_THRESHOLD_IN_MB * 1024000;
- // uploaded opml file
- private File opmlFile = null;
-
- // content type of uploaded file
- private String opmlFileContentType = null;
-
- // file name of uploaded file
- private String opmlFileFileName = null;
-
-
+ // uploaded opml file, injected by the actionFileUpload interceptor
+ private UploadedFile opmlFile = null;
+
+
public BookmarksImport() {
this.actionName = "bookmarksImport";
this.desiredMenu = "editor";
@@ -70,20 +67,25 @@ public String execute() {
return INPUT;
}
+ @Override
+ public void withUploadedFiles(List uploadedFiles) {
+ this.opmlFile = uploadedFiles.isEmpty() ? null : uploadedFiles.get(0);
+ }
+
/**
* Save imported bookmarks.
*/
public String save() {
-
+
BookmarkManager bm = WebloggerFactory.getWeblogger().getBookmarkManager();
-
+
InputStream stream = null;
- if(getOpmlFile() != null && getOpmlFile().exists()) {
+ if (opmlFile != null && opmlFile.getContent() instanceof File file && file.exists()) {
try {
//only write files out that are less than 4MB
- if (getOpmlFile().length() < WRITE_THRESHOLD) {
+ if (file.length() < WRITE_THRESHOLD) {
- stream = new FileInputStream(getOpmlFile());
+ stream = new FileInputStream(file);
ByteArrayOutputStream baos = new ByteArrayOutputStream();
byte[] buffer = new byte[RollerConstants.EIGHT_KB_IN_BYTES];
@@ -109,14 +111,14 @@ public String save() {
addMessage("bookmarksImport.imported", folderName);
// destroy the temporary file created
- getOpmlFile().delete();
+ opmlFile.delete();
return SUCCESS;
} else {
String data = "The file is greater than " + WRITE_THRESHOLD_IN_MB
+" MB, and has not been written to stream."
- +" File Size: " + getOpmlFile().length() + " bytes. "
+ +" File Size: " + file.length() + " bytes. "
+" This is a limitation of this particular "
+" web application";
addError("bookmarksImport.error", data);
@@ -136,30 +138,5 @@ public String save() {
}
return INPUT;
}
-
-
- public File getOpmlFile() {
- return opmlFile;
- }
-
- public void setOpmlFile(File opmlFile) {
- this.opmlFile = opmlFile;
- }
-
- public String getOpmlFileContentType() {
- return opmlFileContentType;
- }
-
- public void setOpmlFileContentType(String opmlFileContentType) {
- this.opmlFileContentType = opmlFileContentType;
- }
-
- public String getOpmlFileFileName() {
- return opmlFileFileName;
- }
-
- public void setOpmlFileFileName(String opmlFileFileName) {
- this.opmlFileFileName = opmlFileFileName;
- }
-
+
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryEdit.java
index f12f6abf68..4e2aa67b6c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryEdit.java
@@ -31,6 +31,7 @@
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
@@ -164,6 +165,7 @@ public void myValidate() {
}
}
+ @StrutsParameter(depth = 1)
public CategoryBean getBean() {
return bean;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryRemove.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryRemove.java
index 0dbd8dc681..4cd2675c21 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryRemove.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/CategoryRemove.java
@@ -33,6 +33,7 @@
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
@@ -151,6 +152,7 @@ public String getRemoveId() {
return removeId;
}
+ @StrutsParameter
public void setRemoveId(String categoryId) {
this.removeId = categoryId;
}
@@ -167,6 +169,7 @@ public String getTargetCategoryId() {
return targetCategoryId;
}
+ @StrutsParameter
public void setTargetCategoryId(String targetCategoryId) {
this.targetCategoryId = targetCategoryId;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Comments.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Comments.java
index 08699cd552..889fc9cae4 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Comments.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Comments.java
@@ -48,6 +48,7 @@
import org.apache.roller.weblogger.util.MailUtil;
import org.apache.roller.weblogger.util.Utilities;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
* Action for managing weblog comments.
@@ -454,6 +455,7 @@ public List getCommentStatusOptions() {
return opts;
}
+ @StrutsParameter(depth = 1)
public CommentsBean getBean() {
return bean;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Entries.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Entries.java
index 0a3bb6066a..e34aa47784 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Entries.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Entries.java
@@ -37,6 +37,7 @@
import org.apache.roller.weblogger.ui.struts2.util.KeyValueObject;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
@@ -207,6 +208,7 @@ public List getStatusOptions() {
}
+ @StrutsParameter(depth = 1)
public EntriesBean getBean() {
return bean;
}
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 600d6276d1..344416e0cb 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
@@ -24,6 +24,7 @@
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.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
@@ -116,6 +117,7 @@ public String execute() {
return SUCCESS;
}
+ @StrutsParameter(depth = 1)
public EntryBean getBean() {
return bean;
}
@@ -134,6 +136,7 @@ public String[] getSelectedImages() {
/**
* @param selectedImages the selectedImages to set
*/
+ @StrutsParameter
public void setSelectedImages(String[] selectedImages) {
this.selectedImages = selectedImages;
}
@@ -150,6 +153,7 @@ public String getWeblog() {
* @param weblog the weblog to set
*/
@Override
+ @StrutsParameter
public void setWeblog(String weblog) {
this.weblog = weblog;
}
@@ -164,6 +168,7 @@ public String getSelectedImage() {
/**
* @param selectedImage the selectedImage to set
*/
+ @StrutsParameter
public void setSelectedImage(String selectedImage) {
this.selectedImage = selectedImage;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java
index 8fda6fcbdc..99aded8008 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryEdit.java
@@ -50,6 +50,7 @@
import org.apache.roller.weblogger.util.MailUtil;
import org.apache.roller.weblogger.util.cache.CacheManager;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
@@ -356,6 +357,7 @@ private String failedSave() {
return INPUT;
}
+ @StrutsParameter(depth = 1)
public EntryBean getBean() {
return bean;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryRemove.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryRemove.java
index 0db70756e1..f458b0dbfc 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryRemove.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/EntryRemove.java
@@ -29,6 +29,7 @@
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import java.util.Collections;
import java.util.List;
@@ -124,6 +125,7 @@ public String getRemoveId() {
return removeId;
}
+ @StrutsParameter
public void setRemoveId(String removeId) {
this.removeId = removeId;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderEdit.java
index 9df65972f1..cdb380a5cd 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/FolderEdit.java
@@ -27,11 +27,12 @@
import org.apache.roller.weblogger.pojos.WeblogBookmarkFolder;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
-import org.apache.struts2.interceptor.ServletResponseAware;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
+import org.apache.struts2.action.ServletResponseAware;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
/**
@@ -40,6 +41,8 @@
// TODO: make this work @AllowedMethods({"execute","save"})
public class FolderEdit extends UIAction implements ServletResponseAware {
+ private HttpServletResponse servletResponse = null;
+
private static final Log log = LogFactory.getLog(FolderEdit.class);
// bean for managing form data
@@ -51,8 +54,6 @@ public class FolderEdit extends UIAction implements ServletResponseAware {
// the folder we are adding or editing
private WeblogBookmarkFolder folder = null;
- private HttpServletResponse httpServletResponse;
-
public FolderEdit() {
this.desiredMenu = "editor";
@@ -82,8 +83,8 @@ public void myPrepare() {
}
@Override
- public void setServletResponse(HttpServletResponse httpServletResponse) {
- this.httpServletResponse = httpServletResponse;
+ public void withServletResponse(HttpServletResponse response) {
+ this.servletResponse = response;
}
/**
@@ -138,7 +139,7 @@ public String save() {
// HTTP response splitting defense
String sanetizedFolderID = folderId.replace("\n", "").replace("\r", "");
- httpServletResponse.addHeader("folderId", sanetizedFolderID);
+ servletResponse.addHeader("folderId", sanetizedFolderID);
return SUCCESS;
@@ -169,6 +170,7 @@ private boolean isAdd() {
return actionName.equals("folderAdd");
}
+ @StrutsParameter(depth = 1)
public FolderBean getBean() {
return bean;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java
index 9c9fdfcf04..6651cfc64c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileAdd.java
@@ -38,6 +38,9 @@
import org.apache.roller.weblogger.util.RollerMessages.RollerMessage;
import org.apache.roller.weblogger.util.MediaTypePolicy;
import org.apache.roller.weblogger.util.Utilities;
+import org.apache.struts2.action.UploadedFilesAware;
+import org.apache.struts2.dispatcher.multipart.UploadedFile;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
@@ -45,20 +48,16 @@
*/
@SuppressWarnings("serial")
// TODO: make this work @AllowedMethods({"execute","save"})
-public class MediaFileAdd extends MediaFileBase {
+public class MediaFileAdd extends MediaFileBase implements UploadedFilesAware {
private static final Log log = LogFactory.getLog(MediaFileAdd.class);
private MediaFileBean bean = new MediaFileBean();
private MediaFileDirectory directory;
- // an array of files uploaded by the user, if applicable
- private File[] uploadedFiles = null;
-
- // an array of content types for upload files
- private String[] uploadedFilesContentType = null;
-
- // an array of filenames for uploaded files
- private String[] uploadedFilesFileName = null;
+ // files uploaded by the user, injected by the actionFileUpload interceptor;
+ // deliberately not exposed via a getter/setter pair so the params
+ // interceptor can't collide with the form field of the same name
+ private List uploadedFiles = null;
private List newImages = new ArrayList<>();
@@ -118,7 +117,7 @@ public void myPrepare() {
/**
* Show form for adding a new media file.
- *
+ *
* @return String The result of the action.
*/
@SkipValidation
@@ -127,6 +126,11 @@ public String execute() {
return INPUT;
}
+ @Override
+ public void withUploadedFiles(List uploadedFiles) {
+ this.uploadedFiles = uploadedFiles;
+ }
+
/**
* Save a media file.
*
@@ -142,15 +146,16 @@ public String save() {
RollerMessages errors = new RollerMessages();
List uploaded = new ArrayList<>();
- File[] uploads = getUploadedFiles();
- if (uploads != null && uploads.length > 0) {
+ if (uploadedFiles != null && !uploadedFiles.isEmpty()) {
// loop over uploaded files and try saving them
- for (int i = 0; i < uploads.length; i++) {
+ for (UploadedFile upload : uploadedFiles) {
// skip null files
- if (uploads[i] == null || !uploads[i].exists()) {
+ if (upload == null
+ || !(upload.getContent() instanceof File uploadFile)
+ || !uploadFile.exists()) {
continue;
}
@@ -158,7 +163,7 @@ public String save() {
MediaFile mediaFile = new MediaFile();
bean.copyTo(mediaFile);
- String fileName = getUploadedFilesFileName()[i];
+ String fileName = upload.getOriginalName();
int terminated = fileName.indexOf('\000');
if (terminated != -1) {
// disallow sneaky null terminated strings
@@ -176,17 +181,16 @@ public String save() {
mediaFile.setName(fileName);
mediaFile.setDirectory(getDirectory());
mediaFile.setWeblog(getActionWeblog());
- mediaFile.setLength(this.uploadedFiles[i].length());
- mediaFile.setInputStream(new FileInputStream(
- this.uploadedFiles[i]));
+ mediaFile.setLength(uploadFile.length());
+ mediaFile.setInputStream(new FileInputStream(uploadFile));
// The type the browser put on the part describes what
// the sender meant to send. It is taken as a hint and
// the stored type is worked out from the file name.
String declaredType = MediaTypePolicy.normalizeType(
- this.uploadedFilesContentType[i]);
+ upload.getContentType());
if (!WebloggerFactory.getWeblogger().getFileContentManager().canSave(
getActionWeblog(), fileName, declaredType,
- this.uploadedFiles[i].length(), errors)) {
+ uploadFile.length(), errors)) {
continue;
}
mediaFile.setContentType(MediaTypePolicy.storedTypeFor(
@@ -248,6 +252,7 @@ public void myValidate() {
}
}
+ @StrutsParameter(depth = 1)
public MediaFileBean getBean() {
return bean;
}
@@ -264,30 +269,6 @@ public void setDirectory(MediaFileDirectory directory) {
this.directory = directory;
}
- public File[] getUploadedFiles() {
- return uploadedFiles;
- }
-
- public void setUploadedFiles(File[] uploadedFiles) {
- this.uploadedFiles = uploadedFiles;
- }
-
- public String[] getUploadedFilesContentType() {
- return uploadedFilesContentType;
- }
-
- public void setUploadedFilesContentType(String[] uploadedFilesContentType) {
- this.uploadedFilesContentType = uploadedFilesContentType;
- }
-
- public String[] getUploadedFilesFileName() {
- return uploadedFilesFileName;
- }
-
- public void setUploadedFilesFileName(String[] uploadedFilesFileName) {
- this.uploadedFilesFileName = uploadedFilesFileName;
- }
-
/**
* @return the newImages
*/
@@ -329,6 +310,7 @@ public String getDirectoryName() {
* @param directoryName
* the directoryName to set
*/
+ @StrutsParameter
public void setDirectoryName(String directoryName) {
this.directoryName = directoryName;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileBase.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileBase.java
index e48c50ec6b..7feecc7be0 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileBase.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileBase.java
@@ -32,6 +32,7 @@
import org.apache.roller.weblogger.pojos.MediaFileDirectoryComparator.DirectoryComparatorType;
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
* Base class for all actions related to media files.
@@ -214,6 +215,7 @@ public String[] getSelectedMediaFiles() {
return selectedMediaFiles;
}
+ @StrutsParameter
public void setSelectedMediaFiles(String[] selectedMediaFiles) {
this.selectedMediaFiles = selectedMediaFiles;
}
@@ -222,6 +224,7 @@ public String getSelectedDirectory() {
return selectedDirectory;
}
+ @StrutsParameter
public void setSelectedDirectory(String selectedDirectory) {
this.selectedDirectory = selectedDirectory;
}
@@ -238,6 +241,7 @@ public String getMediaFileId() {
return mediaFileId;
}
+ @StrutsParameter
public void setMediaFileId(String mediaFileId) {
this.mediaFileId = mediaFileId;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java
index 11a787aea9..fe9d46a83e 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileEdit.java
@@ -1,235 +1,198 @@
-/*
- * 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 java.io.File;
-import java.io.FileInputStream;
-
-import org.apache.commons.lang3.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.roller.weblogger.util.MediaTypePolicy;
-import org.apache.roller.weblogger.WebloggerException;
-import org.apache.roller.weblogger.business.FileIOException;
-import org.apache.roller.weblogger.business.MediaFileManager;
-import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.pojos.MediaFile;
-import org.apache.roller.weblogger.pojos.MediaFileDirectory;
+/*
+ * 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 java.io.File;
+import java.io.FileInputStream;
+
+import org.apache.commons.lang3.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.roller.weblogger.util.MediaTypePolicy;
+import org.apache.roller.weblogger.WebloggerException;
+import org.apache.roller.weblogger.business.FileIOException;
+import org.apache.roller.weblogger.business.MediaFileManager;
+import org.apache.roller.weblogger.business.WebloggerFactory;
+import org.apache.roller.weblogger.pojos.MediaFile;
+import org.apache.roller.weblogger.pojos.MediaFileDirectory;
+import org.apache.struts2.action.UploadedFilesAware;
import org.apache.roller.weblogger.ui.core.RollerContext;
import org.apache.roller.weblogger.util.RollerMessages;
-import org.apache.struts2.convention.annotation.AllowedMethods;
-import org.apache.struts2.interceptor.validation.SkipValidation;
-
-/**
- * Edits metadata for a media file.
- */
-@SuppressWarnings("serial")
-// TODO: make this work @AllowedMethods({"execute","save"})
-public class MediaFileEdit extends MediaFileBase {
-
- private static Log log = LogFactory.getLog(MediaFileEdit.class);
- private MediaFileBean bean = new MediaFileBean();
- private MediaFileDirectory directory;
-
- // file uploaded by the user, if applicable
- private File uploadedFile = null;
-
- // content types for upload file
- private String uploadedFileContentType = null;
-
- // filename for uploaded file
- private String uploadedFileName = null;
-
- public MediaFileEdit() {
- this.actionName = "mediaFileEdit";
- this.desiredMenu = "editor";
- this.pageTitle = "mediaFile.edit.title";
- }
-
- /**
- * Prepares edit action.
- */
- @Override
- public void myPrepare() {
- refreshAllDirectories();
- try {
- MediaFileManager mgr = WebloggerFactory.getWeblogger().getMediaFileManager();
- if (!StringUtils.isEmpty(bean.getDirectoryId())) {
- setDirectory(mgr.getMediaFileDirectory(getActionWeblog(), bean.getDirectoryId()));
- }
- } catch (WebloggerException ex) {
- log.error("Error looking up media file directory", ex);
- }
-
- }
-
- /**
- * Validates media file metadata to be updated.
- */
- public void myValidate() {
- MediaFile fileWithSameName = getDirectory().getMediaFile(getBean().getName());
- if (fileWithSameName != null && !fileWithSameName.getId().equals(getMediaFileId())) {
- addError("MediaFile.error.duplicateName", getBean().getName());
- }
- }
-
- /**
- * Show form for adding a new media file.
- *
- * @return String The result of the action.
- */
- @SkipValidation
- @Override
- public String execute() {
- MediaFileManager manager = WebloggerFactory.getWeblogger().getMediaFileManager();
- try {
- MediaFile mediaFile = manager.getMediaFile(getActionWeblog(), getMediaFileId());
- this.bean.copyFrom(mediaFile);
-
- } catch (FileIOException ex) {
- addError("uploadFiles.error.upload", bean.getName());
-
- } catch (Exception e) {
- log.error("Error uploading file " + bean.getName(), e);
- addError("uploadFiles.error.upload", bean.getName());
- }
-
- return INPUT;
- }
-
- /**
- * Save a media file.
- *
- * @return String The result of the action.
- */
- public String save() {
- myValidate();
- if (!hasActionErrors()) {
- MediaFileManager manager = WebloggerFactory.getWeblogger().getMediaFileManager();
- try {
- MediaFile mediaFile = manager.getMediaFile(getActionWeblog(), getMediaFileId());
- bean.copyTo(mediaFile);
-
- if (uploadedFile != null) {
- mediaFile.setLength(this.uploadedFile.length());
+import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.dispatcher.multipart.UploadedFile;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
+import org.apache.struts2.interceptor.validation.SkipValidation;
+
+import java.util.List;
+
+/**
+ * Edits metadata for a media file.
+ */
+@SuppressWarnings("serial")
+// TODO: make this work @AllowedMethods({"execute","save"})
+public class MediaFileEdit extends MediaFileBase implements UploadedFilesAware {
+
+ private static Log log = LogFactory.getLog(MediaFileEdit.class);
+ private MediaFileBean bean = new MediaFileBean();
+ private MediaFileDirectory directory;
+
+ // replacement file uploaded by the user, if applicable, injected
+ // by the actionFileUpload interceptor
+ private UploadedFile uploadedFile = null;
+
+ public MediaFileEdit() {
+ this.actionName = "mediaFileEdit";
+ this.desiredMenu = "editor";
+ this.pageTitle = "mediaFile.edit.title";
+ }
+
+ /**
+ * Prepares edit action.
+ */
+ @Override
+ public void myPrepare() {
+ refreshAllDirectories();
+ try {
+ MediaFileManager mgr = WebloggerFactory.getWeblogger().getMediaFileManager();
+ if (!StringUtils.isEmpty(bean.getDirectoryId())) {
+ setDirectory(mgr.getMediaFileDirectory(getActionWeblog(), bean.getDirectoryId()));
+ }
+ } catch (WebloggerException ex) {
+ log.error("Error looking up media file directory", ex);
+ }
+
+ }
+
+ @Override
+ public void withUploadedFiles(List uploadedFiles) {
+ this.uploadedFile = uploadedFiles.isEmpty() ? null : uploadedFiles.get(0);
+ }
+
+ /**
+ * Validates media file metadata to be updated.
+ */
+ public void myValidate() {
+ MediaFile fileWithSameName = getDirectory().getMediaFile(getBean().getName());
+ if (fileWithSameName != null && !fileWithSameName.getId().equals(getMediaFileId())) {
+ addError("MediaFile.error.duplicateName", getBean().getName());
+ }
+ }
+
+ /**
+ * Show form for adding a new media file.
+ *
+ * @return String The result of the action.
+ */
+ @SkipValidation
+ @Override
+ public String execute() {
+ MediaFileManager manager = WebloggerFactory.getWeblogger().getMediaFileManager();
+ try {
+ MediaFile mediaFile = manager.getMediaFile(getActionWeblog(), getMediaFileId());
+ this.bean.copyFrom(mediaFile);
+
+ } catch (FileIOException ex) {
+ addError("uploadFiles.error.upload", bean.getName());
+
+ } catch (Exception e) {
+ log.error("Error uploading file " + bean.getName(), e);
+ addError("uploadFiles.error.upload", bean.getName());
+ }
+
+ return INPUT;
+ }
+
+ /**
+ * Save a media file.
+ *
+ * @return String The result of the action.
+ */
+ public String save() {
+ myValidate();
+ if (!hasActionErrors()) {
+ MediaFileManager manager = WebloggerFactory.getWeblogger().getMediaFileManager();
+ try {
+ MediaFile mediaFile = manager.getMediaFile(getActionWeblog(), getMediaFileId());
+ bean.copyTo(mediaFile);
+
+ if (uploadedFile != null
+ && uploadedFile.getContent() instanceof File uploadFile) {
+ mediaFile.setLength(uploadFile.length());
String declaredType = MediaTypePolicy.normalizeType(
- this.uploadedFileContentType);
+ uploadedFile.getContentType());
RollerMessages errors = new RollerMessages();
if (!WebloggerFactory.getWeblogger().getFileContentManager().canSave(
- getActionWeblog(), this.uploadedFileName, declaredType,
- this.uploadedFile.length(), errors)) {
+ getActionWeblog(), uploadedFile.getOriginalName(), declaredType,
+ uploadFile.length(), errors)) {
throw new FileIOException(errors.toString());
}
// Replacing the body re-decides the type, on the same
// terms as the original upload.
mediaFile.setContentType(MediaTypePolicy.storedTypeFor(
- this.uploadedFileName, declaredType,
+ uploadedFile.getOriginalName(), declaredType,
RollerContext.getServletContext()::getMimeType));
- manager.updateMediaFile(getActionWeblog(), mediaFile,
- new FileInputStream(this.uploadedFile));
- } else {
- manager.updateMediaFile(getActionWeblog(), mediaFile);
- }
-
- // Move file
- if (!getBean().getDirectoryId().equals(
- mediaFile.getDirectory().getId())) {
- log.debug("Processing move of " + mediaFile.getId());
- setSelectedMediaFiles(new String[] { mediaFile.getId() });
- setSelectedDirectory(getBean().getDirectoryId());
- doMoveSelected();
- }
-
- WebloggerFactory.getWeblogger().flush();
-
- addMessage("mediaFile.update.success");
- return SUCCESS;
-
- } catch (FileIOException ex) {
- addError("uploadFiles.error.upload", bean.getName());
-
- } catch (Exception e) {
- log.error("Error uploading file " + bean.getName(), e);
- addError("uploadFiles.error.upload", bean.getName());
- }
-
- }
- return INPUT;
- }
-
- public MediaFileBean getBean() {
- return bean;
- }
-
- public void setBean(MediaFileBean b) {
- this.bean = b;
- }
-
- public MediaFileDirectory getDirectory() {
- return directory;
- }
-
- public void setDirectory(MediaFileDirectory directory) {
- this.directory = directory;
- }
-
- /**
- * @return the uploadedFile
- */
- public File getUploadedFile() {
- return uploadedFile;
- }
-
- /**
- * @param uploadedFile
- * the uploadedFile to set
- */
- public void setUploadedFile(File uploadedFile) {
- this.uploadedFile = uploadedFile;
- }
-
- /**
- * @return the uploadedFileContentType
- */
- public String getUploadedFileContentType() {
- return uploadedFileContentType;
- }
-
- /**
- * @param uploadedFileContentType
- * the uploadedFileContentType to set
- */
- public void setUploadedFileContentType(String uploadedFileContentType) {
- this.uploadedFileContentType = uploadedFileContentType;
- }
-
- /**
- * @return the uploadedFileName
- */
- public String getUploadedFileName() {
- return uploadedFileName;
- }
-
- /**
- * @param uploadedFileName
- * the uploadedFileName to set
- */
- public void setUploadedFileName(String uploadedFileName) {
- this.uploadedFileName = uploadedFileName;
- }
-}
+ manager.updateMediaFile(getActionWeblog(), mediaFile,
+ new FileInputStream(uploadFile));
+ } else {
+ manager.updateMediaFile(getActionWeblog(), mediaFile);
+ }
+
+ // Move file
+ if (!getBean().getDirectoryId().equals(
+ mediaFile.getDirectory().getId())) {
+ log.debug("Processing move of " + mediaFile.getId());
+ setSelectedMediaFiles(new String[] { mediaFile.getId() });
+ setSelectedDirectory(getBean().getDirectoryId());
+ doMoveSelected();
+ }
+
+ WebloggerFactory.getWeblogger().flush();
+
+ addMessage("mediaFile.update.success");
+ return SUCCESS;
+
+ } catch (FileIOException ex) {
+ addError("uploadFiles.error.upload", bean.getName());
+
+ } catch (Exception e) {
+ log.error("Error uploading file " + bean.getName(), e);
+ addError("uploadFiles.error.upload", bean.getName());
+ }
+
+ }
+ return INPUT;
+ }
+
+ @StrutsParameter(depth = 1)
+ public MediaFileBean getBean() {
+ return bean;
+ }
+
+ public void setBean(MediaFileBean b) {
+ this.bean = b;
+ }
+
+ public MediaFileDirectory getDirectory() {
+ return directory;
+ }
+
+ public void setDirectory(MediaFileDirectory directory) {
+ this.directory = directory;
+ }
+
+}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageChooser.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageChooser.java
index c16f0a78eb..172acdf4f0 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageChooser.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageChooser.java
@@ -34,6 +34,7 @@
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.ui.struts2.util.KeyValueObject;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
@@ -151,6 +152,7 @@ public String getDirectoryId() {
* @param directoryId
* the directoryId to set
*/
+ @StrutsParameter
public void setDirectoryId(String directoryId) {
this.directoryId = directoryId;
}
@@ -166,6 +168,7 @@ public String getDirectoryName() {
* @param directoryName
* the directoryName to set
*/
+ @StrutsParameter
public void setDirectoryName(String directoryName) {
this.directoryName = directoryName;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java
index 32b83dc340..e52a7b2431 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileView.java
@@ -37,6 +37,7 @@
import org.apache.roller.weblogger.ui.struts2.util.KeyValueObject;
import org.apache.roller.weblogger.util.cache.CacheManager;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
@@ -376,6 +377,7 @@ public String getDirectoryId() {
return directoryId;
}
+ @StrutsParameter
public void setDirectoryId(String id) {
this.directoryId = id;
}
@@ -392,6 +394,7 @@ public String getNewDirectoryName() {
return newDirectoryName;
}
+ @StrutsParameter
public void setNewDirectoryName(String newDirectoryName) {
this.newDirectoryName = newDirectoryName;
}
@@ -408,6 +411,7 @@ public String getDirectoryName() {
return directoryName;
}
+ @StrutsParameter
public void setDirectoryName(String path) {
this.directoryName = path;
}
@@ -416,6 +420,7 @@ public String getSortBy() {
return sortBy;
}
+ @StrutsParameter
public void setSortBy(String sortBy) {
this.sortBy = sortBy;
}
@@ -433,6 +438,7 @@ public boolean myValidate() {
return true;
}
+ @StrutsParameter(depth = 1)
public MediaFileSearchBean getBean() {
return bean;
}
@@ -477,6 +483,7 @@ public String getViewDirectoryId() {
return viewDirectoryId;
}
+ @StrutsParameter
public void setViewDirectoryId(String viewDirectoryId) {
this.viewDirectoryId = viewDirectoryId;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java
index bda8961946..8c03ccdc0d 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Members.java
@@ -20,7 +20,6 @@
import java.util.ArrayList;
import java.util.List;
-import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.weblogger.WebloggerException;
@@ -30,9 +29,8 @@
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.Utilities;
+import org.apache.struts2.action.ParametersAware;
import org.apache.struts2.dispatcher.HttpParameters;
-import org.apache.struts2.dispatcher.Parameter;
-import org.apache.struts2.interceptor.HttpParametersAware;
/**
@@ -42,22 +40,31 @@
* website.permissions collection when a permission is deleted.
*/
// TODO: make this work @AllowedMethods({"execute","save"})
-public class Members extends UIAction implements HttpParametersAware {
+public class Members extends UIAction implements ParametersAware {
private static final Log log = LogFactory.getLog(Members.class);
// raw parameters from request
private HttpParameters parameters = HttpParameters.create().build();
+
+ @Override
+ public void withParameters(HttpParameters parameters) {
+ this.parameters = parameters;
+ }
public Members() {
log.debug("Instantiating members action");
-
+
this.actionName = "members";
this.desiredMenu = "editor";
this.pageTitle = "memberPermissions.title";
}
-
+
+ @Override
+ public void myPrepare() {
+ }
+
@Override
public String execute() {
log.debug("Showing weblog members page");
@@ -159,14 +166,9 @@ public String getParameter(String key) {
}
- public Map getParameters() {
+ public HttpParameters getParameters() {
return parameters;
}
-
- @Override
- public void setParameters(HttpParameters parameters) {
- this.parameters = parameters;
- }
public List getWeblogPermissions() {
try {
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MembersInvite.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MembersInvite.java
index 6d589f9694..b913ea7c7c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MembersInvite.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MembersInvite.java
@@ -31,6 +31,7 @@
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.MailUtil;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
@@ -167,6 +168,7 @@ public String getUserName() {
return userName;
}
+ @StrutsParameter
public void setUserName(String userId) {
this.userName = userId;
}
@@ -175,6 +177,7 @@ public String getPermissionString() {
return permissionString;
}
+ @StrutsParameter
public void setPermissionString(String permission) {
this.permissionString = permission;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Pings.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Pings.java
index 3a90368f76..1246aec3c6 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Pings.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Pings.java
@@ -29,6 +29,7 @@
import org.apache.roller.weblogger.pojos.PingTarget;
import org.apache.roller.weblogger.business.pings.WeblogUpdatePinger;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.xmlrpc.XmlRpcException;
import java.io.IOException;
import java.net.SocketException;
@@ -242,6 +243,7 @@ public String getPingTargetId() {
return pingTargetId;
}
+ @StrutsParameter
public void setPingTargetId(String pingTargetId) {
this.pingTargetId = pingTargetId;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/StylesheetEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/StylesheetEdit.java
index cb50e00bd8..ea8f5fd29d 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/StylesheetEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/StylesheetEdit.java
@@ -32,6 +32,7 @@
import org.apache.roller.weblogger.util.cache.CacheManager;
import java.util.Date;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
* Action which handles editing for a weblog stylesheet override template.
@@ -382,6 +383,7 @@ public String getContentsStandard() {
* Sets the contents standard.
* @param contents the new contents standard
*/
+ @StrutsParameter
public void setContentsStandard(String contents) {
this.contentsStandard = contents;
}
@@ -398,6 +400,7 @@ public String getContentsMobile() {
* Sets the contents mobile.
* @param contents the new contents mobile
*/
+ @StrutsParameter
public void setContentsMobile(String contents) {
this.contentsMobile = contents;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEdit.java
index a1f95cebb0..8553cf18f9 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateEdit.java
@@ -28,6 +28,7 @@
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
import java.util.Date;
@@ -184,6 +185,7 @@ public Map getTemplateLanguages() {
}
+ @StrutsParameter(depth = 1)
public TemplateEditBean getBean() {
return bean;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java
index 157e8f4092..4a7d64f5df 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Templates.java
@@ -32,6 +32,7 @@
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import java.util.ArrayList;
import java.util.Collections;
@@ -320,6 +321,7 @@ public String getNewTmplName() {
return newTmplName;
}
+ @StrutsParameter
public void setNewTmplName(String newTmplName) {
this.newTmplName = newTmplName;
}
@@ -328,6 +330,7 @@ public ComponentType getNewTmplAction() {
return newTmplAction;
}
+ @StrutsParameter
public void setNewTmplAction(ComponentType newTmplAction) {
this.newTmplAction = newTmplAction;
}
@@ -336,6 +339,7 @@ public String getRemoveId() {
return removeId;
}
+ @StrutsParameter
public void setRemoveId(String removeId) {
this.removeId = removeId;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java
index bf5a52725a..9318ab9c13 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/ThemeEdit.java
@@ -38,6 +38,7 @@
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
/**
* Action for controlling theme selection.
@@ -252,6 +253,7 @@ public String getThemeType() {
return themeType;
}
+ @StrutsParameter
public void setThemeType(String themeType) {
this.themeType = themeType;
}
@@ -268,6 +270,7 @@ public boolean isImportTheme() {
return importTheme;
}
+ @StrutsParameter
public void setImportTheme(boolean importTheme) {
this.importTheme = importTheme;
}
@@ -276,6 +279,7 @@ public String getSelectedThemeId() {
return selectedThemeId;
}
+ @StrutsParameter
public void setSelectedThemeId(String importThemeId) {
this.selectedThemeId = importThemeId;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogConfig.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogConfig.java
index 03bbc1ba6e..61ca6acc0c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogConfig.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogConfig.java
@@ -40,6 +40,7 @@
import org.apache.roller.weblogger.util.Bannedwordslist;
import org.apache.roller.weblogger.util.cache.CacheManager;
import org.apache.struts2.convention.annotation.AllowedMethods;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
import org.apache.struts2.interceptor.validation.SkipValidation;
@@ -213,6 +214,7 @@ private void myValidate() {
}
+ @StrutsParameter(depth = 1)
public WeblogConfigBean getBean() {
return bean;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java
index b5be30dcba..361c46817d 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIAction.java
@@ -18,7 +18,10 @@
package org.apache.roller.weblogger.ui.struts2.util;
-import com.opensymphony.xwork2.ActionSupport;
+import org.apache.struts2.action.ServletRequestAware;
+import org.apache.struts2.ActionSupport;
+import org.apache.struts2.interceptor.parameter.StrutsParameter;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.text.StringEscapeUtils;
import org.apache.roller.weblogger.business.UserManager;
import org.apache.roller.weblogger.business.WebloggerFactory;
@@ -30,8 +33,6 @@
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.ui.core.util.menu.Menu;
import org.apache.roller.weblogger.ui.core.util.menu.MenuHelper;
-import org.apache.struts2.interceptor.RequestAware;
-
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
@@ -39,7 +40,6 @@
import java.util.Collections;
import java.util.List;
import java.util.Locale;
-import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.IntStream;
@@ -53,7 +53,7 @@
* getText(key) on the param passed into setError() and setSuccess().
*/
public abstract class UIAction extends ActionSupport
- implements UIActionPreparable, UISecurityEnforced, RequestAware {
+ implements UIActionPreparable, UISecurityEnforced, ServletRequestAware {
// a result that sends the user to an access denied warning
public static final String DENIED = "access-denied";
@@ -83,18 +83,27 @@ public abstract class UIAction extends ActionSupport
protected String pageTitle = null;
protected String salt = null;
+
+ private HttpServletRequest servletRequest = null;
@Override
public void myPrepare() {
// no-op
}
-
- @Override
- public void setRequest(Map map) {
- this.salt = (String) map.get("salt");
+
+ @Override
+ public void withServletRequest(HttpServletRequest request) {
+ this.servletRequest = request;
+ }
+
+ protected HttpServletRequest getServletRequest() {
+ return servletRequest;
}
public String getSalt() {
+ if (salt == null && servletRequest != null) {
+ salt = (String) servletRequest.getAttribute("salt");
+ }
return salt;
}
@@ -103,6 +112,7 @@ public String getSalt() {
* See also https://issues.apache.org/jira/browse/ROL-2068
* @param salt previous salt
*/
+ @StrutsParameter
public void setSalt(String salt) {
// no-op
}
@@ -297,6 +307,7 @@ public String getWeblog() {
return weblog;
}
+ @StrutsParameter
public void setWeblog(String weblog) {
this.weblog = weblog;
}
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIActionInterceptor.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIActionInterceptor.java
index 08b65f4bbc..d3d1442998 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIActionInterceptor.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIActionInterceptor.java
@@ -18,7 +18,7 @@
package org.apache.roller.weblogger.ui.struts2.util;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
@@ -28,9 +28,9 @@
import org.apache.roller.weblogger.ui.core.RollerSession;
import org.apache.struts2.StrutsStatics;
-import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
+import org.apache.struts2.ActionContext;
+import org.apache.struts2.ActionInvocation;
+import org.apache.struts2.interceptor.MethodFilterInterceptor;
/**
* A struts2 interceptor for configuring specifics of the weblogger ui.
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIActionPrepareInterceptor.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIActionPrepareInterceptor.java
index 7e558dd0a9..862f0a3e77 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIActionPrepareInterceptor.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UIActionPrepareInterceptor.java
@@ -20,8 +20,8 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
+import org.apache.struts2.ActionInvocation;
+import org.apache.struts2.interceptor.MethodFilterInterceptor;
/**
* A struts2 interceptor for doing custom prepare logic.
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UISecurityInterceptor.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UISecurityInterceptor.java
index 8e97899b82..64fbcb8804 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UISecurityInterceptor.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/UISecurityInterceptor.java
@@ -27,8 +27,8 @@
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.pojos.WeblogPermission;
-import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.interceptor.MethodFilterInterceptor;
+import org.apache.struts2.ActionInvocation;
+import org.apache.struts2.interceptor.MethodFilterInterceptor;
/**
* A struts2 interceptor for configuring specifics of the weblogger ui.
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/ValidateSaltInterceptor.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/ValidateSaltInterceptor.java
index 76afb21da5..466dbc5ed0 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/ValidateSaltInterceptor.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/util/ValidateSaltInterceptor.java
@@ -19,8 +19,8 @@
package org.apache.roller.weblogger.ui.struts2.util;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -28,9 +28,9 @@
import org.apache.struts2.StrutsStatics;
import org.apache.struts2.dispatcher.multipart.MultiPartRequestWrapper;
-import com.opensymphony.xwork2.ActionContext;
-import com.opensymphony.xwork2.ActionInvocation;
-import com.opensymphony.xwork2.interceptor.AbstractInterceptor;
+import org.apache.struts2.ActionContext;
+import org.apache.struts2.ActionInvocation;
+import org.apache.struts2.interceptor.AbstractInterceptor;
/**
* Validates salts after Struts has wrapped a multipart form request.
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/tags/StringTagSupport.java b/app/src/main/java/org/apache/roller/weblogger/ui/tags/StringTagSupport.java
index 0286801c7d..86297d4c80 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/tags/StringTagSupport.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/tags/StringTagSupport.java
@@ -18,9 +18,9 @@
import java.io.IOException;
import java.io.StringWriter;
-import javax.servlet.jsp.JspException;
-import javax.servlet.jsp.JspWriter;
-import javax.servlet.jsp.tagext.BodyTagSupport;
+import jakarta.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspWriter;
+import jakarta.servlet.jsp.tagext.BodyTagSupport;
/**
* Abstract support class for the String Taglib.
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/tags/TruncateNicelyTag.java b/app/src/main/java/org/apache/roller/weblogger/ui/tags/TruncateNicelyTag.java
index 33ab6d9d9a..e9381249d7 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/tags/TruncateNicelyTag.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/tags/TruncateNicelyTag.java
@@ -15,7 +15,7 @@
*/
package org.apache.roller.weblogger.ui.tags;
-import javax.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspException;
import org.apache.commons.lang3.math.NumberUtils;
/**
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/tags/WordWrapTag.java b/app/src/main/java/org/apache/roller/weblogger/ui/tags/WordWrapTag.java
index 293ce90da0..f7f81ebc96 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/tags/WordWrapTag.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/tags/WordWrapTag.java
@@ -15,7 +15,7 @@
*/
package org.apache.roller.weblogger.ui.tags;
-import javax.servlet.jsp.JspException;
+import jakarta.servlet.jsp.JspException;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.math.NumberUtils;
diff --git a/app/src/main/java/org/apache/roller/weblogger/util/I18nMessages.java b/app/src/main/java/org/apache/roller/weblogger/util/I18nMessages.java
index c6de4c3538..d1582d1c4c 100644
--- a/app/src/main/java/org/apache/roller/weblogger/util/I18nMessages.java
+++ b/app/src/main/java/org/apache/roller/weblogger/util/I18nMessages.java
@@ -192,7 +192,7 @@ public static void reloadBundle(Locale key) {
/**
* Clear tomcat cache.
*
- * @see com.opensymphony.xwork2.util.LocalizedTextUtil
+ * @see org.apache.struts2.util.LocalizedTextUtil
*/
private static void clearTomcatCache() {
diff --git a/app/src/main/java/org/apache/roller/weblogger/util/MailUtil.java b/app/src/main/java/org/apache/roller/weblogger/util/MailUtil.java
index eeedc9e322..6c519bd46e 100644
--- a/app/src/main/java/org/apache/roller/weblogger/util/MailUtil.java
+++ b/app/src/main/java/org/apache/roller/weblogger/util/MailUtil.java
@@ -27,14 +27,14 @@
import java.util.ResourceBundle;
import java.util.Set;
import java.util.TreeSet;
-import javax.mail.Message;
-import javax.mail.MessagingException;
-import javax.mail.SendFailedException;
-import javax.mail.Session;
-import javax.mail.Transport;
-import javax.mail.Address;
-import javax.mail.internet.InternetAddress;
-import javax.mail.internet.MimeMessage;
+import jakarta.mail.Message;
+import jakarta.mail.MessagingException;
+import jakarta.mail.SendFailedException;
+import jakarta.mail.Session;
+import jakarta.mail.Transport;
+import jakarta.mail.Address;
+import jakarta.mail.internet.InternetAddress;
+import jakarta.mail.internet.MimeMessage;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/util/MediaTypePolicy.java b/app/src/main/java/org/apache/roller/weblogger/util/MediaTypePolicy.java
index 2c8a7ebee7..3fa2675971 100644
--- a/app/src/main/java/org/apache/roller/weblogger/util/MediaTypePolicy.java
+++ b/app/src/main/java/org/apache/roller/weblogger/util/MediaTypePolicy.java
@@ -24,7 +24,7 @@
import java.util.Locale;
import java.util.Set;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
/**
* Decides what type an uploaded file is stored as, and how it is served back.
diff --git a/app/src/main/java/org/apache/roller/weblogger/util/Utilities.java b/app/src/main/java/org/apache/roller/weblogger/util/Utilities.java
index 7caf9a6826..df9e0368ef 100644
--- a/app/src/main/java/org/apache/roller/weblogger/util/Utilities.java
+++ b/app/src/main/java/org/apache/roller/weblogger/util/Utilities.java
@@ -19,10 +19,10 @@
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import javax.activation.FileTypeMap;
-import javax.activation.MimetypesFileTypeMap;
-import javax.mail.internet.AddressException;
-import javax.mail.internet.InternetAddress;
+import jakarta.activation.FileTypeMap;
+import jakarta.activation.MimetypesFileTypeMap;
+import jakarta.mail.internet.AddressException;
+import jakarta.mail.internet.InternetAddress;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.text.StringEscapeUtils;
diff --git a/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/MediaCollection.java b/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/MediaCollection.java
index b4b100fb87..fde16ec858 100644
--- a/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/MediaCollection.java
+++ b/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/MediaCollection.java
@@ -44,7 +44,7 @@
import java.util.StringTokenizer;
import java.util.TreeSet;
import java.util.UUID;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
diff --git a/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java b/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java
index d1bdbb2026..d82854c6be 100644
--- a/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java
+++ b/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandler.java
@@ -20,7 +20,7 @@
import com.rometools.propono.atom.server.AtomRequest;
import java.util.StringTokenizer;
import java.util.Locale;
-import javax.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletRequest;
import org.apache.commons.codec.binary.Base64;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -37,13 +37,10 @@
import com.rometools.propono.atom.server.AtomNotFoundException;
import com.rometools.rome.feed.atom.Entry;
import com.rometools.rome.feed.atom.Feed;
-import javax.servlet.http.HttpServletResponse;
-import net.oauth.OAuthAccessor;
-import net.oauth.OAuthMessage;
-import net.oauth.server.OAuthServlet;
+import java.nio.charset.StandardCharsets;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.roller.weblogger.WebloggerException;
-import org.apache.roller.weblogger.business.OAuthManager;
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.config.WebloggerRuntimeConfig;
import org.apache.roller.weblogger.pojos.WeblogPermission;
@@ -119,18 +116,20 @@ public RollerAtomHandler(HttpServletRequest request, HttpServletResponse respons
roller = WebloggerFactory.getWeblogger();
String userName;
- String authenticationMethod = WebloggerRuntimeConfig
- .getProperty("webservices.atomPubAuth");
- if (authenticationMethod != null) {
- authenticationMethod = authenticationMethod.trim().toLowerCase(Locale.ROOT);
+ String authScheme = WebloggerRuntimeConfig.getProperty("webservices.atomPubAuth");
+ if (authScheme != null) {
+ authScheme = authScheme.trim().toLowerCase(Locale.ROOT);
}
- if ("oauth".equals(authenticationMethod)) {
- userName = authenticationOAUTH(request, response);
- } else if ("basic".equals(authenticationMethod)) {
+ if ("basic".equals(authScheme)) {
userName = authenticateBASIC(request);
+
} else {
- log.warn("Unsupported AtomPub authentication method '" + authenticationMethod
- + "'; expected 'basic' or 'oauth'. Authentication denied.");
+ // an upgraded site may still have "oauth" or "wsse" stored in the
+ // runtime config; refuse authentication instead of silently
+ // accepting a scheme the administrator did not choose
+ log.error("Unsupported webservices.atomPubAuth value '" + authScheme
+ + "' (OAuth 1.0a and WSSE support were removed); set it to 'basic'."
+ + " Refusing AtomPub authentication until it is corrected.");
userName = null;
}
@@ -453,29 +452,6 @@ public String authenticateBASIC(HttpServletRequest request) {
}
- private String authenticationOAUTH(
- HttpServletRequest request, HttpServletResponse response) {
- try {
- OAuthManager omgr = WebloggerFactory.getWeblogger().getOAuthManager();
- OAuthMessage requestMessage = OAuthServlet.getMessage(request, null);
- OAuthAccessor accessor = omgr.getAccessor(requestMessage);
- omgr.getValidator().validateMessage(requestMessage, accessor);
- return (String)accessor.consumer.getProperty("userId");
-
- } catch (Exception ex) {
- log.debug("ERROR authenticating user", ex);
- String realm = (request.isSecure())?"https://":"http://";
- realm += request.getLocalName();
- try {
- OAuthServlet.handleException(response, ex, realm, true);
- } catch (Exception ioe) {
- log.debug("ERROR writing error response", ioe);
- }
- }
- return null;
- }
-
-
public static void oneSecondThrottle() {
// Throttle one entry per second per weblog because time-
// stamp in MySQL and other DBs has only 1 sec resolution
diff --git a/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandlerFactory.java b/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandlerFactory.java
deleted file mode 100644
index 4b3e1f3611..0000000000
--- a/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomHandlerFactory.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-* 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.webservices.atomprotocol;
-
-import com.rometools.propono.atom.server.AtomHandlerFactory;
-import com.rometools.propono.atom.server.AtomHandler;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-/**
- * Extends {@link com.rometools.propono.atom.server.AtomHandlerFactory} to create and return
- * {@link com.rometools.propono.atom.server.impl.FileBasedAtomHandler}.
- */
-public class RollerAtomHandlerFactory extends AtomHandlerFactory {
-
- /**
- * Create new AtomHandler.
- */
- @Override
- public AtomHandler newAtomHandler(
- HttpServletRequest req, HttpServletResponse res) {
- return new RollerAtomHandler(req, res);
- }
-}
-
diff --git a/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomRequestImpl.java b/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomRequestImpl.java
new file mode 100644
index 0000000000..643e4ce624
--- /dev/null
+++ b/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomRequestImpl.java
@@ -0,0 +1,137 @@
+/*
+ * 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.
+ */
+/*
+ * Derived from com.rometools.propono.atom.server.AtomRequestImpl.
+ * Forked to use jakarta.servlet instead of javax.servlet.
+ */
+package org.apache.roller.weblogger.webservices.atomprotocol;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.security.Principal;
+import java.util.Enumeration;
+import java.util.Map;
+
+import jakarta.servlet.http.HttpServletRequest;
+
+import com.rometools.propono.atom.server.AtomRequest;
+
+public class RollerAtomRequestImpl implements AtomRequest {
+
+ private final HttpServletRequest wrapped;
+
+ public RollerAtomRequestImpl(HttpServletRequest request) {
+ this.wrapped = request;
+ }
+
+ @Override
+ public String getPathInfo() {
+ // the handler splits this without a null check, and a request to the
+ // exact servlet mapping has no path info
+ return wrapped.getPathInfo() != null ? wrapped.getPathInfo() : "";
+ }
+
+ @Override
+ public String getQueryString() {
+ return wrapped.getQueryString();
+ }
+
+ @Override
+ public String getRemoteUser() {
+ return wrapped.getRemoteUser();
+ }
+
+ @Override
+ public boolean isUserInRole(String role) {
+ return wrapped.isUserInRole(role);
+ }
+
+ @Override
+ public Principal getUserPrincipal() {
+ return wrapped.getUserPrincipal();
+ }
+
+ @Override
+ public String getRequestURI() {
+ return wrapped.getRequestURI();
+ }
+
+ @Override
+ public StringBuffer getRequestURL() {
+ return wrapped.getRequestURL();
+ }
+
+ @Override
+ public int getContentLength() {
+ return wrapped.getContentLength();
+ }
+
+ @Override
+ public String getContentType() {
+ return wrapped.getContentType();
+ }
+
+ @Override
+ public String getParameter(String name) {
+ return wrapped.getParameter(name);
+ }
+
+ @Override
+ public Enumeration getParameterNames() {
+ return wrapped.getParameterNames();
+ }
+
+ @Override
+ public String[] getParameterValues(String name) {
+ return wrapped.getParameterValues(name);
+ }
+
+ @Override
+ @SuppressWarnings("unchecked")
+ public Map getParameterMap() {
+ return (Map) wrapped.getParameterMap();
+ }
+
+ @Override
+ public InputStream getInputStream() throws IOException {
+ return wrapped.getInputStream();
+ }
+
+ @Override
+ public long getDateHeader(String name) {
+ return wrapped.getDateHeader(name);
+ }
+
+ @Override
+ public String getHeader(String name) {
+ return wrapped.getHeader(name);
+ }
+
+ @Override
+ public Enumeration getHeaders(String name) {
+ return wrapped.getHeaders(name);
+ }
+
+ @Override
+ public Enumeration getHeaderNames() {
+ return wrapped.getHeaderNames();
+ }
+
+ @Override
+ public int getIntHeader(String name) {
+ return wrapped.getIntHeader(name);
+ }
+}
diff --git a/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomServlet.java b/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomServlet.java
new file mode 100644
index 0000000000..e30033ed24
--- /dev/null
+++ b/app/src/main/java/org/apache/roller/weblogger/webservices/atomprotocol/RollerAtomServlet.java
@@ -0,0 +1,368 @@
+/*
+ * 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.webservices.atomprotocol;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.Writer;
+import java.util.Collections;
+import java.util.Locale;
+
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import org.jdom2.Document;
+import org.jdom2.output.Format;
+import org.jdom2.output.XMLOutputter;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import com.rometools.propono.atom.common.AtomService;
+import com.rometools.propono.atom.common.Categories;
+import com.rometools.propono.atom.server.AtomException;
+import com.rometools.propono.atom.server.AtomHandler;
+import com.rometools.propono.atom.server.AtomMediaResource;
+import com.rometools.propono.atom.server.AtomRequest;
+import com.rometools.rome.feed.atom.Content;
+import com.rometools.rome.feed.atom.Entry;
+import com.rometools.rome.feed.atom.Feed;
+import com.rometools.rome.feed.atom.Link;
+import com.rometools.rome.io.WireFeedOutput;
+import com.rometools.rome.io.impl.Atom10Generator;
+import com.rometools.rome.io.impl.Atom10Parser;
+import org.apache.roller.weblogger.util.Utilities;
+
+/**
+ * Forked from rome-propono's AtomServlet to remove the dependency on propono's
+ * servlet class, which has no Jakarta-compatible release. This servlet directly
+ * creates a {@link RollerAtomHandler} instead of going through propono's
+ * AtomHandlerFactory/FactoryFinder lookup.
+ *
+ * Handles Atom Publishing Protocol requests by parsing incoming XML into
+ * ROME Atom {@link Entry} objects, passing those to the handler, and
+ * serializing entries and feeds returned by the handler to the response.
+ */
+public class RollerAtomServlet extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ /** Feed type supported by this servlet */
+ public static final String FEED_TYPE = "atom_1.0";
+
+ private static String contextDirPath = null;
+
+ private static final Logger LOG = LoggerFactory.getLogger(RollerAtomServlet.class);
+
+ static {
+ Atom10Parser.setResolveURIs(true);
+ }
+
+ /**
+ * Create an Atom request handler directly, bypassing propono's factory lookup.
+ */
+ private AtomHandler createAtomRequestHandler(final HttpServletRequest request, final HttpServletResponse response) {
+ return new RollerAtomHandler(request, response);
+ }
+
+ /**
+ * Handles an Atom GET by calling handler and writing results to response.
+ */
+ @Override
+ protected void doGet(final HttpServletRequest req, final HttpServletResponse res) throws ServletException, IOException {
+ LOG.debug("Entering");
+ final AtomHandler handler = createAtomRequestHandler(req, res);
+ final String userName = handler.getAuthenticatedUsername();
+ if (userName != null) {
+ final AtomRequest areq = new RollerAtomRequestImpl(req);
+ try {
+ if (handler.isAtomServiceURI(areq)) {
+ // return an Atom Service document
+ final AtomService service = handler.getAtomService(areq);
+ final Document doc = service.serviceToDocument();
+ res.setContentType("application/atomsvc+xml; charset=utf-8");
+ final Writer writer = res.getWriter();
+ final XMLOutputter outputter = new XMLOutputter();
+ outputter.setFormat(Format.getPrettyFormat());
+ outputter.output(doc, writer);
+ writer.close();
+ res.setStatus(HttpServletResponse.SC_OK);
+ } else if (handler.isCategoriesURI(areq)) {
+ final Categories cats = handler.getCategories(areq);
+ res.setContentType("application/xml");
+ final Writer writer = res.getWriter();
+ final Document catsDoc = new Document();
+ catsDoc.setRootElement(cats.categoriesToElement());
+ final XMLOutputter outputter = new XMLOutputter();
+ outputter.output(catsDoc, writer);
+ writer.close();
+ res.setStatus(HttpServletResponse.SC_OK);
+ } else if (handler.isCollectionURI(areq)) {
+ // return a collection
+ final Feed col = handler.getCollection(areq);
+ col.setFeedType(FEED_TYPE);
+ final WireFeedOutput wireFeedOutput = new WireFeedOutput();
+ final Document feedDoc = wireFeedOutput.outputJDom(col);
+ res.setContentType("application/atom+xml; charset=utf-8");
+ final Writer writer = res.getWriter();
+ final XMLOutputter outputter = new XMLOutputter();
+ outputter.setFormat(Format.getPrettyFormat());
+ outputter.output(feedDoc, writer);
+ writer.close();
+ res.setStatus(HttpServletResponse.SC_OK);
+ } else if (handler.isEntryURI(areq)) {
+ // return an entry
+ final Entry entry = handler.getEntry(areq);
+ if (entry != null) {
+ res.setContentType("application/atom+xml; type=entry; charset=utf-8");
+ final Writer writer = res.getWriter();
+ Atom10Generator.serializeEntry(entry, writer);
+ writer.close();
+ } else {
+ res.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ }
+ } else if (handler.isMediaEditURI(areq)) {
+ final AtomMediaResource entry = handler.getMediaResource(areq);
+ res.setContentType(entry.getContentType());
+ res.setContentLength((int) entry.getContentLength());
+ Utilities.copyInputToOutput(entry.getInputStream(), res.getOutputStream());
+ res.getOutputStream().flush();
+ res.getOutputStream().close();
+ } else {
+ res.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ }
+ } catch (final AtomException ae) {
+ res.sendError(ae.getStatus(), ae.getMessage());
+ LOG.debug("An error occurred while processing GET", ae);
+ } catch (final Exception e) {
+ res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
+ LOG.debug("An error occurred while processing GET", e);
+ }
+ } else {
+ res.setHeader("WWW-Authenticate", "BASIC realm=\"AtomPub\"");
+ res.sendError(HttpServletResponse.SC_UNAUTHORIZED);
+ }
+ LOG.debug("Exiting");
+ }
+
+ /**
+ * Handles an Atom POST by calling handler to identify URI, reading/parsing
+ * data, calling handler and writing results to response.
+ */
+ @Override
+ protected void doPost(final HttpServletRequest req, final HttpServletResponse res) throws ServletException, IOException {
+ LOG.debug("Entering");
+ final AtomHandler handler = createAtomRequestHandler(req, res);
+ final String userName = handler.getAuthenticatedUsername();
+ if (userName != null) {
+ final AtomRequest areq = new RollerAtomRequestImpl(req);
+ try {
+ if (handler.isCollectionURI(areq)) {
+
+ final String contentType = req.getContentType();
+ if (contentType != null && contentType.startsWith("application/atom+xml")) {
+
+ // parse incoming entry
+ final Entry entry = Atom10Parser.parseEntry(
+ new BufferedReader(new InputStreamReader(req.getInputStream(), "UTF-8")),
+ null, Locale.US);
+
+ // call handler to post it
+ final Entry newEntry = handler.postEntry(areq, entry);
+
+ // set Location and Content-Location headers
+ for (final Object element : newEntry.getOtherLinks()) {
+ final Link link = (Link) element;
+ if ("edit".equals(link.getRel())) {
+ res.addHeader("Location", link.getHrefResolved());
+ break;
+ }
+ }
+ for (final Object element : newEntry.getAlternateLinks()) {
+ final Link link = (Link) element;
+ if ("alternate".equals(link.getRel())) {
+ res.addHeader("Content-Location", link.getHrefResolved());
+ break;
+ }
+ }
+
+ // write entry back out to response
+ res.setStatus(HttpServletResponse.SC_CREATED);
+ res.setContentType("application/atom+xml; type=entry; charset=utf-8");
+
+ final Writer writer = res.getWriter();
+ Atom10Generator.serializeEntry(newEntry, writer);
+ writer.close();
+
+ } else if (contentType != null) {
+
+ // get incoming title and slug from HTTP header
+ final String title = areq.getHeader("Title");
+
+ // create new entry for resource, set title and type
+ final Entry resource = new Entry();
+ resource.setTitle(title);
+ final Content content = new Content();
+ content.setType(areq.getContentType());
+ resource.setContents(Collections.singletonList(content));
+
+ // hand input stream off to handler to post file
+ final Entry newEntry = handler.postMedia(areq, resource);
+
+ // set Location and Content-Location headers
+ for (final Object element : newEntry.getOtherLinks()) {
+ final Link link = (Link) element;
+ if ("edit".equals(link.getRel())) {
+ res.addHeader("Location", link.getHrefResolved());
+ break;
+ }
+ }
+ for (final Object element : newEntry.getAlternateLinks()) {
+ final Link link = (Link) element;
+ if ("alternate".equals(link.getRel())) {
+ res.addHeader("Content-Location", link.getHrefResolved());
+ break;
+ }
+ }
+
+ res.setStatus(HttpServletResponse.SC_CREATED);
+ res.setContentType("application/atom+xml; type=entry; charset=utf-8");
+
+ final Writer writer = res.getWriter();
+ Atom10Generator.serializeEntry(newEntry, writer);
+ writer.close();
+
+ } else {
+ res.sendError(HttpServletResponse.SC_UNSUPPORTED_MEDIA_TYPE, "No content-type specified in request");
+ }
+
+ } else {
+ res.sendError(HttpServletResponse.SC_NOT_FOUND, "Invalid collection specified in request");
+ }
+ } catch (final AtomException ae) {
+ res.sendError(ae.getStatus(), ae.getMessage());
+ LOG.debug("An error occurred while processing POST", ae);
+ } catch (final Exception e) {
+ res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
+ LOG.debug("An error occurred while processing POST", e);
+ }
+ } else {
+ res.setHeader("WWW-Authenticate", "BASIC realm=\"AtomPub\"");
+ res.sendError(HttpServletResponse.SC_UNAUTHORIZED);
+ }
+ LOG.debug("Exiting");
+ }
+
+ /**
+ * Handles an Atom PUT by calling handler to identify URI, reading/parsing
+ * data, calling handler and writing results to response.
+ */
+ @Override
+ protected void doPut(final HttpServletRequest req, final HttpServletResponse res) throws ServletException, IOException {
+ LOG.debug("Entering");
+ final AtomHandler handler = createAtomRequestHandler(req, res);
+ final String userName = handler.getAuthenticatedUsername();
+ if (userName != null) {
+ final AtomRequest areq = new RollerAtomRequestImpl(req);
+ try {
+ if (handler.isEntryURI(areq)) {
+
+ // parse incoming entry
+ final Entry unsavedEntry = Atom10Parser.parseEntry(
+ new BufferedReader(new InputStreamReader(req.getInputStream(), "UTF-8")),
+ null, Locale.US);
+
+ // call handler to put entry
+ handler.putEntry(areq, unsavedEntry);
+
+ res.setStatus(HttpServletResponse.SC_OK);
+
+ } else if (handler.isMediaEditURI(areq)) {
+
+ // hand input stream to handler
+ handler.putMedia(areq);
+
+ res.setStatus(HttpServletResponse.SC_OK);
+
+ } else {
+ res.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ }
+ } catch (final AtomException ae) {
+ res.sendError(ae.getStatus(), ae.getMessage());
+ LOG.debug("An error occurred while processing PUT", ae);
+ } catch (final Exception e) {
+ res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
+ LOG.debug("An error occurred while processing PUT", e);
+ }
+ } else {
+ res.setHeader("WWW-Authenticate", "BASIC realm=\"AtomPub\"");
+ res.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+ }
+ LOG.debug("Exiting");
+ }
+
+ /**
+ * Handle Atom DELETE by calling appropriate handler.
+ */
+ @Override
+ protected void doDelete(final HttpServletRequest req, final HttpServletResponse res) throws ServletException, IOException {
+ LOG.debug("Entering");
+ final AtomHandler handler = createAtomRequestHandler(req, res);
+ final String userName = handler.getAuthenticatedUsername();
+ if (userName != null) {
+ final AtomRequest areq = new RollerAtomRequestImpl(req);
+ try {
+ if (handler.isEntryURI(areq)) {
+ handler.deleteEntry(areq);
+ res.setStatus(HttpServletResponse.SC_OK);
+ } else {
+ res.setStatus(HttpServletResponse.SC_NOT_FOUND);
+ }
+ } catch (final AtomException ae) {
+ res.sendError(ae.getStatus(), ae.getMessage());
+ LOG.debug("An error occurred while processing DELETE", ae);
+ } catch (final Exception e) {
+ res.sendError(HttpServletResponse.SC_INTERNAL_SERVER_ERROR, e.getMessage());
+ LOG.debug("An error occurred while processing DELETE", e);
+ }
+ } else {
+ res.setHeader("WWW-Authenticate", "BASIC realm=\"AtomPub\"");
+ res.setStatus(HttpServletResponse.SC_UNAUTHORIZED);
+ }
+ LOG.debug("Exiting");
+ }
+
+ /**
+ * Initialize servlet.
+ */
+ @Override
+ public void init(final ServletConfig config) throws ServletException {
+ super.init(config);
+ contextDirPath = getServletContext().getRealPath("/");
+ }
+
+ /**
+ * Get absolute path to Servlet context directory.
+ */
+ public static String getContextDirPath() {
+ return contextDirPath;
+ }
+}
diff --git a/app/src/main/java/org/apache/roller/weblogger/webservices/oauth/AccessTokenServlet.java b/app/src/main/java/org/apache/roller/weblogger/webservices/oauth/AccessTokenServlet.java
deleted file mode 100644
index 344fac29d2..0000000000
--- a/app/src/main/java/org/apache/roller/weblogger/webservices/oauth/AccessTokenServlet.java
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * Copyright 2007 AOL, LLC.
- * Portions Copyright 2009 Apache Software Foundation
- *
- * 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 org.apache.roller.weblogger.webservices.oauth;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import net.oauth.OAuth;
-import net.oauth.OAuthAccessor;
-import net.oauth.OAuthMessage;
-import net.oauth.OAuthProblemException;
-import net.oauth.server.OAuthServlet;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.roller.weblogger.business.OAuthManager;
-import org.apache.roller.weblogger.business.WebloggerFactory;
-
-/**
- * Access Token request handler
- *
- * @author Praveen Alavilli
- * @author Dave Johnson (adapted for Roller)
- */
-public class AccessTokenServlet extends HttpServlet {
- protected static final Log log = LogFactory.getFactory().getInstance(AccessTokenServlet.class);
-
- @Override
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
- processRequest(request, response);
- }
- @Override
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
- processRequest(request, response);
- }
-
- public void processRequest(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
- try{
- OAuthMessage requestMessage = OAuthServlet.getMessage(request, null);
-
- OAuthManager omgr = WebloggerFactory.getWeblogger().getOAuthManager();
- OAuthAccessor accessor = omgr.getAccessor(requestMessage);
- omgr.getValidator().validateMessage(requestMessage, accessor);
-
- // make sure token is authorized
- if (!Boolean.TRUE.equals(accessor.getProperty("authorized"))) {
- OAuthProblemException problem = new OAuthProblemException("permission_denied");
- throw problem;
- }
- // generate access token and secret
- if (accessor.accessToken == null) {
- omgr.generateAccessToken(accessor);
- WebloggerFactory.getWeblogger().flush();
- }
-
- response.setContentType("text/plain");
- try (OutputStream out = response.getOutputStream()) {
- OAuth.formEncode(OAuth.newList(
- "oauth_token", accessor.accessToken,
- "oauth_token_secret", accessor.tokenSecret), out);
- }
-
- } catch (Exception e){
- handleException(e, request, response, true);
- }
- }
-
- public void handleException(Exception e, HttpServletRequest request,
- HttpServletResponse response, boolean sendBody)
- throws IOException, ServletException {
- log.debug("ERROR authorizing token", e);
- String realm = (request.isSecure())?"https://":"http://";
- realm += request.getLocalName();
- OAuthServlet.handleException(response, e, realm, sendBody);
- }
-
-}
diff --git a/app/src/main/java/org/apache/roller/weblogger/webservices/oauth/AuthorizationServlet.java b/app/src/main/java/org/apache/roller/weblogger/webservices/oauth/AuthorizationServlet.java
deleted file mode 100644
index cc54c4702f..0000000000
--- a/app/src/main/java/org/apache/roller/weblogger/webservices/oauth/AuthorizationServlet.java
+++ /dev/null
@@ -1,276 +0,0 @@
-/*
- * Copyright 2007 AOL, LLC.
- * Portions Copyright 2009 Apache Software Foundation
- *
- * 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 org.apache.roller.weblogger.webservices.oauth;
-
-import java.io.IOException;
-import java.io.PrintWriter;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import net.oauth.OAuth;
-import net.oauth.OAuthAccessor;
-import net.oauth.OAuthMessage;
-import net.oauth.OAuthProblemException;
-import net.oauth.server.OAuthServlet;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.roller.weblogger.business.OAuthManager;
-import org.apache.roller.weblogger.business.WebloggerFactory;
-import org.apache.roller.weblogger.pojos.User;
-import org.apache.roller.weblogger.ui.core.RollerSession;
-import org.apache.roller.weblogger.ui.core.filters.SaltValidator;
-import org.springframework.security.web.savedrequest.SimpleSavedRequest;
-
-/**
- * Authorization request handler.
- *
- * @author Praveen Alavilli
- * @author Dave Johnson (adapted for Roller)
- */
-public class AuthorizationServlet extends HttpServlet {
- protected static final Log log = LogFactory.getFactory().getInstance(AuthorizationServlet.class);
-
- /**
- * One response for every refusal, so the endpoint reveals nothing about
- * tokens the caller does not hold.
- */
- private static final String PERMISSION_DENIED = "permission_denied";
-
-
- @Override
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
-
- try{
- OAuthMessage requestMessage = OAuthServlet.getMessage(request, null);
-
- OAuthManager omgr = WebloggerFactory.getWeblogger().getOAuthManager();
- OAuthAccessor accessor = omgr.getAccessor(requestMessage);
-
- if (accessor == null || accessor.consumer == null
- || accessor.requestToken == null) {
- denyPermission(response);
- return;
- }
-
- if (Boolean.TRUE.equals(accessor.getProperty("authorized"))) {
- // already authorized send the user back
- returnToConsumer(request, response, accessor);
- } else {
- User user = getAuthenticatedUser(request);
- if (user == null) {
- sendToLogin(request, response, accessor);
- return;
- }
- if (!Boolean.TRUE.equals(user.getEnabled())) {
- denyPermission(response);
- return;
- }
- sendToAuthorizePage(request, response, accessor);
- }
-
- } catch (OAuthProblemException e) {
- denyPermission(response);
- } catch (Exception e){
- handleException(e, request, response, true);
- }
- }
-
- @Override
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
-
- try{
- OAuthMessage requestMessage = OAuthServlet.getMessage(request, null);
-
- OAuthManager omgr = WebloggerFactory.getWeblogger().getOAuthManager();
- OAuthAccessor accessor = omgr.getAccessor(requestMessage);
- if (accessor == null || accessor.consumer == null || accessor.requestToken == null) {
- denyPermission(response);
- return;
- }
-
- // The approving identity comes from the browser session, consistent
- // with the rest of the UI. Without a session there is nobody to
- // approve on behalf of, so send the caller through the login flow.
- User user = getAuthenticatedUser(request);
- if (user == null) {
- sendToLogin(request, response, accessor);
- return;
- }
- if (!Boolean.TRUE.equals(user.getEnabled())) {
- denyPermission(response);
- return;
- }
- String userId = user.getUserName();
-
- // A consumer key bound to one user may only be approved by that
- // user. A site-wide key has no bound user and is approved as
- // whoever is logged in.
- String consumerUserId = (String)accessor.consumer.getProperty("userId");
- if (consumerUserId != null && !consumerUserId.equals(userId)) {
- denyPermission(response);
- return;
- }
-
- // Older clients still post the identity; accept it only when it
- // agrees with the session.
- String submittedUserId = request.getParameter("userId");
- if (submittedUserId == null) {
- submittedUserId = request.getParameter("xoauth_requestor_id");
- }
- if (submittedUserId != null && !submittedUserId.equals(userId)) {
- denyPermission(response);
- return;
- }
-
- // A stale or already-used consent form is safe to show again. The
- // forward passes through LoadSaltFilter and receives a fresh salt.
- if (!hasValidSalt(request)) {
- sendToAuthorizePage(request, response, accessor);
- return;
- }
-
- // Claim the pending request token in one conditional statement, so
- // approval is one-shot. A token that is missing, belongs to another
- // consumer, or has already been approved or exchanged all produce
- // the same answer here and the same response below.
- if (!omgr.authorizeRequestToken(
- accessor.consumer.consumerKey, accessor.requestToken, userId)) {
- denyPermission(response);
- return;
- }
- WebloggerFactory.getWeblogger().flush();
-
- accessor.setProperty("userId", userId);
- accessor.setProperty("authorized", Boolean.TRUE);
-
- returnToConsumer(request, response, accessor);
-
- } catch (OAuthProblemException e) {
- denyPermission(response);
- } catch (Exception e){
- handleException(e, request, response, true);
- }
- }
-
- /**
- * The Roller user behind this request's session, or null if there is none.
- */
- private User getAuthenticatedUser(HttpServletRequest request) {
- RollerSession rollerSession = RollerSession.getRollerSession(request);
- return rollerSession == null ? null : rollerSession.getAuthenticatedUser();
- }
-
- boolean hasValidSalt(HttpServletRequest request) {
- return SaltValidator.consumeSubmittedSalt(request);
- }
-
- private void sendToLogin(HttpServletRequest request,
- HttpServletResponse response, OAuthAccessor accessor) throws IOException {
- String resume = OAuth.addParameters(request.getRequestURL().toString(),
- "oauth_token", accessor.requestToken);
- String callback = request.getParameter("oauth_callback");
- if (callback != null) {
- resume = OAuth.addParameters(resume, "oauth_callback", callback);
- }
-
- SimpleSavedRequest savedRequest = new SimpleSavedRequest(resume);
- savedRequest.setMethod("GET");
- request.getSession(true).setAttribute(
- "SPRING_SECURITY_SAVED_REQUEST", savedRequest);
- response.sendRedirect(request.getContextPath() + "/roller-ui/login.rol");
- }
-
- /**
- * Refuse the approval, in the OAuth problem-reporting form and with the
- * same body for every reason. Written directly rather than thrown so the
- * response does not vary with how the library happens to render a given
- * exception.
- */
- private void denyPermission(HttpServletResponse response) throws IOException {
- response.setStatus(HttpServletResponse.SC_FORBIDDEN);
- response.setContentType("text/plain");
- try (PrintWriter out = response.getWriter()) {
- out.println("oauth_problem=" + PERMISSION_DENIED);
- }
- }
-
- private void sendToAuthorizePage(HttpServletRequest request,
- HttpServletResponse response, OAuthAccessor accessor)
- throws IOException, ServletException{
- String callback = request.getParameter("oauth_callback");
- if(callback == null || callback.length() <=0) {
- callback = "none";
- }
- String consumer_description = (String)accessor.consumer.getProperty("description");
- request.setAttribute("CONS_DESC", consumer_description);
- request.setAttribute("CALLBACK", callback);
- request.setAttribute("TOKEN", accessor.requestToken);
- request.getRequestDispatcher("/roller-ui/oauthAuthorize.rol").forward(request, response);
- }
-
- private void returnToConsumer(HttpServletRequest request,
- HttpServletResponse response, OAuthAccessor accessor)
- throws IOException, ServletException {
-
- // send the user back to site's callBackUrl
- String callback = request.getParameter("oauth_callback");
- if ("none".equals(callback)
- && accessor.consumer.callbackURL != null
- && accessor.consumer.callbackURL.length() > 0){
- // first check if we have something in our properties file
- callback = accessor.consumer.callbackURL;
- }
-
- if ( "none".equals(callback) ) {
- // no call back it must be a client
- response.setContentType("text/plain");
- try (PrintWriter out = response.getWriter()) {
- out.println("You have successfully authorized for consumer key '"
- + accessor.consumer.consumerKey
- + "'. Please close this browser window and click continue"
- + " in the client.");
- }
- } else {
- // if callback is not passed in, use the callback from config
- if(callback == null || callback.length() <=0 ) {
- callback = accessor.consumer.callbackURL;
- }
- String token = accessor.requestToken;
- if (token != null && callback != null) {
- callback = OAuth.addParameters(callback, "oauth_token", token);
- }
-
- response.setStatus(HttpServletResponse.SC_MOVED_TEMPORARILY);
- response.setHeader("Location", callback);
- }
- }
-
- public void handleException(Exception e, HttpServletRequest request,
- HttpServletResponse response, boolean sendBody)
- throws IOException, ServletException {
- log.debug("ERROR authorizing token", e);
- String realm = (request.isSecure())?"https://":"http://";
- realm += request.getLocalName();
- OAuthServlet.handleException(response, e, realm, sendBody);
- }
-}
diff --git a/app/src/main/java/org/apache/roller/weblogger/webservices/oauth/RequestTokenServlet.java b/app/src/main/java/org/apache/roller/weblogger/webservices/oauth/RequestTokenServlet.java
deleted file mode 100644
index 797252f8bb..0000000000
--- a/app/src/main/java/org/apache/roller/weblogger/webservices/oauth/RequestTokenServlet.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*
- * Copyright 2007 AOL, LLC.
- * Portions Copyright 2009 Apache Software Foundation
- *
- * 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 org.apache.roller.weblogger.webservices.oauth;
-
-import java.io.IOException;
-import java.io.OutputStream;
-
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
-
-import net.oauth.OAuth;
-import net.oauth.OAuthAccessor;
-import net.oauth.OAuthConsumer;
-import net.oauth.OAuthMessage;
-import net.oauth.server.OAuthServlet;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.roller.weblogger.business.OAuthManager;
-import org.apache.roller.weblogger.business.WebloggerFactory;
-
-
-/**
- * Request token request handler
- *
- * @author Praveen Alavilli
- * @author Dave Johnson (adapted for Roller)
- */
-public class RequestTokenServlet extends HttpServlet {
- protected static final Log log = LogFactory.getFactory().getInstance(RequestTokenServlet.class);
-
- @Override
- public void doGet(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
- processRequest(request, response);
- }
-
- @Override
- public void doPost(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
- processRequest(request, response);
- }
-
- public void processRequest(HttpServletRequest request, HttpServletResponse response)
- throws IOException, ServletException {
-
- try {
- OAuthMessage requestMessage = OAuthServlet.getMessage(request, null);
- OAuthManager omgr = WebloggerFactory.getWeblogger().getOAuthManager();
- OAuthAccessor accessor = omgr.getAccessor(requestMessage);
-
- if (accessor == null) {
-
- OAuthConsumer consumer = omgr.getConsumer(requestMessage);
- accessor = new OAuthAccessor(consumer);
- omgr.getValidator().validateMessage(requestMessage, accessor);
-
- {
- // Support the 'Variable Accessor Secret' extension
- // described in http://oauth.pbwiki.com/AccessorSecret
- String secret = requestMessage.getParameter("oauth_accessor_secret");
- if (secret != null) {
- accessor.setProperty(OAuthConsumer.ACCESSOR_SECRET, secret);
- }
- }
-
- // generate request_token and secret
- omgr.generateRequestToken(accessor);
- WebloggerFactory.getWeblogger().flush();
- }
-
- response.setContentType("text/plain");
- try (OutputStream out = response.getOutputStream()) {
- String token = accessor.requestToken != null ? accessor.requestToken: accessor.accessToken;
- OAuth.formEncode(OAuth.newList(
- "oauth_token", token,
- "oauth_token_secret", accessor.tokenSecret), out);
- }
-
- } catch (Exception e){
- handleException(e, request, response, true);
- }
-
- }
-
- public void handleException(Exception e, HttpServletRequest request,
- HttpServletResponse response, boolean sendBody)
- throws IOException, ServletException {
- log.debug("ERROR authorizing token", e);
- String realm = (request.isSecure())?"https://":"http://";
- realm += request.getLocalName();
- OAuthServlet.handleException(response, e, realm, sendBody);
- }
-}
diff --git a/app/src/main/java/org/apache/roller/weblogger/webservices/opensearch/OpenSearchServlet.java b/app/src/main/java/org/apache/roller/weblogger/webservices/opensearch/OpenSearchServlet.java
index fe8e7b57a9..511866b28d 100644
--- a/app/src/main/java/org/apache/roller/weblogger/webservices/opensearch/OpenSearchServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/webservices/opensearch/OpenSearchServlet.java
@@ -19,10 +19,10 @@
import java.io.IOException;
import java.io.PrintWriter;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.roller.weblogger.WebloggerException;
import org.apache.roller.weblogger.business.URLStrategy;
diff --git a/app/src/main/java/org/apache/roller/weblogger/webservices/tagdata/TagDataServlet.java b/app/src/main/java/org/apache/roller/weblogger/webservices/tagdata/TagDataServlet.java
index e239839ebb..7712e156ec 100644
--- a/app/src/main/java/org/apache/roller/weblogger/webservices/tagdata/TagDataServlet.java
+++ b/app/src/main/java/org/apache/roller/weblogger/webservices/tagdata/TagDataServlet.java
@@ -22,10 +22,10 @@
import java.util.Collections;
import java.util.Iterator;
import java.util.List;
-import javax.servlet.ServletException;
-import javax.servlet.http.HttpServlet;
-import javax.servlet.http.HttpServletRequest;
-import javax.servlet.http.HttpServletResponse;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.text.StringEscapeUtils;
import org.apache.roller.weblogger.WebloggerException;
diff --git a/app/src/main/java/org/apache/roller/weblogger/webservices/xmlrpc/RollerXmlRpcServlet.java b/app/src/main/java/org/apache/roller/weblogger/webservices/xmlrpc/RollerXmlRpcServlet.java
new file mode 100644
index 0000000000..62db6b427e
--- /dev/null
+++ b/app/src/main/java/org/apache/roller/weblogger/webservices/xmlrpc/RollerXmlRpcServlet.java
@@ -0,0 +1,213 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. 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.
+ */
+/*
+ * Derived from org.apache.xmlrpc.webserver.XmlRpcServlet
+ * in Apache XML-RPC 3.1.3. Forked into the Roller codebase because
+ * xmlrpc-server has no Jakarta Servlet compatible release.
+ */
+package org.apache.roller.weblogger.webservices.xmlrpc;
+
+import java.io.IOException;
+import java.lang.reflect.InvocationTargetException;
+import java.net.URL;
+import java.util.Enumeration;
+
+import jakarta.servlet.ServletConfig;
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServlet;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.xmlrpc.XmlRpcConfig;
+import org.apache.xmlrpc.XmlRpcException;
+import org.apache.xmlrpc.common.TypeConverterFactory;
+import org.apache.xmlrpc.server.AbstractReflectiveHandlerMapping;
+import org.apache.xmlrpc.server.PropertyHandlerMapping;
+import org.apache.xmlrpc.server.RequestProcessorFactoryFactory;
+import org.apache.xmlrpc.server.XmlRpcHandlerMapping;
+import org.apache.xmlrpc.server.XmlRpcServer;
+import org.apache.xmlrpc.util.ReflectionUtil;
+
+
+/**
+ * A servlet for processing XML-RPC requests, derived from the Apache XML-RPC
+ * library's {@code XmlRpcServlet}. The typical use is to configure it in
+ * {@code web.xml} with an {@code XmlRpcServlet.properties} resource on the
+ * classpath that maps handler names to implementation classes.
+ *
+ * The servlet accepts the following init parameters:
+ *
+ * | Name | Description |
+ * | enabledForExtensions | Sets the value of
+ * {@link XmlRpcConfig#isEnabledForExtensions()} to true. |
+ *
+ */
+public class RollerXmlRpcServlet extends HttpServlet {
+ private static final long serialVersionUID = 2348768267234L;
+ private static final Log log = LogFactory.getLog(RollerXmlRpcServlet.class);
+
+ /**
+ * Classpath location of the handler mapping properties file.
+ * Roller ships this at {@code org/apache/xmlrpc/webserver/XmlRpcServlet.properties}.
+ */
+ private static final String HANDLER_MAPPING_RESOURCE =
+ "org/apache/xmlrpc/webserver/XmlRpcServlet.properties";
+
+ private RollerXmlRpcServletServer server;
+ private AbstractReflectiveHandlerMapping.AuthenticationHandler authenticationHandler;
+ private RequestProcessorFactoryFactory requestProcessorFactoryFactory;
+ private TypeConverterFactory typeConverterFactory;
+
+ /**
+ * Returns the servlet's instance of {@link RollerXmlRpcServletServer}.
+ * @return The configurable server instance.
+ */
+ public RollerXmlRpcServletServer getXmlRpcServletServer() {
+ return server;
+ }
+
+ private void handleInitParameters(ServletConfig pConfig) throws ServletException {
+ for (Enumeration en = pConfig.getInitParameterNames(); en.hasMoreElements(); ) {
+ String name = (String) en.nextElement();
+ String value = pConfig.getInitParameter(name);
+ try {
+ if (!ReflectionUtil.setProperty(this, name, value)
+ && !ReflectionUtil.setProperty(server, name, value)
+ && !ReflectionUtil.setProperty(server.getConfig(), name, value)) {
+ throw new ServletException("Unknown init parameter " + name);
+ }
+ } catch (IllegalAccessException e) {
+ throw new ServletException("Illegal access to instance of " + server.getClass().getName()
+ + " while setting property " + name + ": " + e.getMessage(), e);
+ } catch (InvocationTargetException e) {
+ Throwable t = e.getTargetException();
+ throw new ServletException("Failed to invoke setter for property " + name
+ + " on instance of " + server.getClass().getName()
+ + ": " + t.getMessage(), t);
+ }
+ }
+ }
+
+ public void init(ServletConfig pConfig) throws ServletException {
+ super.init(pConfig);
+ try {
+ server = newXmlRpcServer(pConfig);
+ handleInitParameters(pConfig);
+ server.setHandlerMapping(newXmlRpcHandlerMapping());
+ } catch (XmlRpcException e) {
+ try {
+ log("Failed to create XmlRpcServer: " + e.getMessage(), e);
+ } catch (Throwable ignore) {
+ }
+ throw new ServletException(e);
+ }
+ }
+
+ /** Sets the servlet's {@link AbstractReflectiveHandlerMapping.AuthenticationHandler}. */
+ public void setAuthenticationHandler(AbstractReflectiveHandlerMapping.AuthenticationHandler pHandler) {
+ authenticationHandler = pHandler;
+ }
+
+ /** Returns the servlet's {@link AbstractReflectiveHandlerMapping.AuthenticationHandler}. */
+ public AbstractReflectiveHandlerMapping.AuthenticationHandler getAuthenticationHandler() {
+ return authenticationHandler;
+ }
+
+ /** Sets the servlet's {@link RequestProcessorFactoryFactory}. */
+ public void setRequestProcessorFactoryFactory(RequestProcessorFactoryFactory pFactory) {
+ requestProcessorFactoryFactory = pFactory;
+ }
+
+ /** Returns the servlet's {@link RequestProcessorFactoryFactory}. */
+ public RequestProcessorFactoryFactory getRequestProcessorFactoryFactory() {
+ return requestProcessorFactoryFactory;
+ }
+
+ /** Sets the servlet's {@link TypeConverterFactory}. */
+ public void setTypeConverterFactory(TypeConverterFactory pFactory) {
+ typeConverterFactory = pFactory;
+ }
+
+ /** Returns the servlet's {@link TypeConverterFactory}. */
+ public TypeConverterFactory getTypeConverterFactory() {
+ return typeConverterFactory;
+ }
+
+ /**
+ * Creates a new instance of {@link RollerXmlRpcServletServer} to process requests.
+ * @param pConfig The servlet's configuration.
+ * @throws XmlRpcException Creating the server failed.
+ */
+ protected RollerXmlRpcServletServer newXmlRpcServer(ServletConfig pConfig)
+ throws XmlRpcException {
+ return new RollerXmlRpcServletServer();
+ }
+
+ /**
+ * Creates a new handler mapping. Loads the property file from the classpath
+ * resource {@value #HANDLER_MAPPING_RESOURCE}.
+ */
+ protected XmlRpcHandlerMapping newXmlRpcHandlerMapping() throws XmlRpcException {
+ URL url = Thread.currentThread().getContextClassLoader()
+ .getResource(HANDLER_MAPPING_RESOURCE);
+ if (url == null) {
+ throw new XmlRpcException("Failed to locate resource " + HANDLER_MAPPING_RESOURCE);
+ }
+ try {
+ return newPropertyHandlerMapping(url);
+ } catch (IOException e) {
+ throw new XmlRpcException("Failed to load resource " + url + ": " + e.getMessage(), e);
+ }
+ }
+
+ /**
+ * Creates a new instance of {@link PropertyHandlerMapping} by loading
+ * the property file from the given URL.
+ */
+ protected PropertyHandlerMapping newPropertyHandlerMapping(URL url) throws IOException, XmlRpcException {
+ PropertyHandlerMapping mapping = new PropertyHandlerMapping();
+ mapping.setAuthenticationHandler(authenticationHandler);
+ if (requestProcessorFactoryFactory != null) {
+ mapping.setRequestProcessorFactoryFactory(requestProcessorFactoryFactory);
+ }
+ if (typeConverterFactory != null) {
+ mapping.setTypeConverterFactory(typeConverterFactory);
+ } else {
+ mapping.setTypeConverterFactory(server.getTypeConverterFactory());
+ }
+ mapping.setVoidMethodEnabled(server.getConfig().isEnabledForExtensions());
+ mapping.load(Thread.currentThread().getContextClassLoader(), url);
+ return mapping;
+ }
+
+ /** Handles an XML-RPC POST request. */
+ public void doPost(HttpServletRequest pRequest, HttpServletResponse pResponse) throws IOException, ServletException {
+ server.execute(pRequest, pResponse);
+ }
+
+ public void log(String pMessage, Throwable pThrowable) {
+ server.getErrorLogger().log(pMessage, pThrowable);
+ }
+
+ public void log(String pMessage) {
+ log.info(pMessage);
+ }
+}
diff --git a/app/src/main/java/org/apache/roller/weblogger/webservices/xmlrpc/RollerXmlRpcServletServer.java b/app/src/main/java/org/apache/roller/weblogger/webservices/xmlrpc/RollerXmlRpcServletServer.java
new file mode 100644
index 0000000000..3bed68a639
--- /dev/null
+++ b/app/src/main/java/org/apache/roller/weblogger/webservices/xmlrpc/RollerXmlRpcServletServer.java
@@ -0,0 +1,150 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. 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.
+ */
+/*
+ * Derived from org.apache.xmlrpc.webserver.XmlRpcServletServer
+ * in Apache XML-RPC 3.1.3. Forked into the Roller codebase because
+ * xmlrpc-server has no Jakarta Servlet compatible release.
+ */
+package org.apache.roller.weblogger.webservices.xmlrpc;
+
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.OutputStream;
+
+import jakarta.servlet.ServletException;
+import jakarta.servlet.http.HttpServletRequest;
+import jakarta.servlet.http.HttpServletResponse;
+
+import org.apache.xmlrpc.XmlRpcException;
+import org.apache.xmlrpc.common.ServerStreamConnection;
+import org.apache.xmlrpc.common.XmlRpcHttpRequestConfig;
+import org.apache.xmlrpc.common.XmlRpcHttpRequestConfigImpl;
+import org.apache.xmlrpc.common.XmlRpcStreamRequestConfig;
+import org.apache.xmlrpc.server.XmlRpcHttpServer;
+import org.apache.xmlrpc.server.XmlRpcHttpServerConfig;
+import org.apache.xmlrpc.util.HttpUtil;
+
+
+/**
+ * An extension of {@link org.apache.xmlrpc.server.XmlRpcServer}
+ * suitable for processing servlet requests.
+ */
+public class RollerXmlRpcServletServer extends XmlRpcHttpServer {
+
+ protected static class ServletStreamConnection implements ServerStreamConnection {
+ private final HttpServletRequest request;
+ private final HttpServletResponse response;
+
+ protected ServletStreamConnection(HttpServletRequest pRequest,
+ HttpServletResponse pResponse) {
+ request = pRequest;
+ response = pResponse;
+ }
+
+ /** Returns the servlet request. */
+ public HttpServletRequest getRequest() { return request; }
+
+ /** Returns the servlet response. */
+ public HttpServletResponse getResponse() { return response; }
+
+ public InputStream newInputStream() throws IOException {
+ return request.getInputStream();
+ }
+
+ public OutputStream newOutputStream() throws IOException {
+ response.setContentType("text/xml");
+ return response.getOutputStream();
+ }
+
+ public void close() throws IOException {
+ response.getOutputStream().close();
+ }
+ }
+
+ /**
+ * @param pRequest The request object.
+ */
+ protected XmlRpcHttpRequestConfigImpl newConfig(HttpServletRequest pRequest) {
+ return new XmlRpcHttpRequestConfigImpl();
+ }
+
+ protected XmlRpcHttpRequestConfigImpl getConfig(HttpServletRequest pRequest) {
+ XmlRpcHttpRequestConfigImpl result = newConfig(pRequest);
+ XmlRpcHttpServerConfig serverConfig = (XmlRpcHttpServerConfig) getConfig();
+ result.setBasicEncoding(serverConfig.getBasicEncoding());
+ result.setContentLengthOptional(serverConfig.isContentLengthOptional()
+ && (pRequest.getHeader("Content-Length") == null));
+ result.setEnabledForExtensions(serverConfig.isEnabledForExtensions());
+ result.setGzipCompressing(HttpUtil.isUsingGzipEncoding(pRequest.getHeader("Content-Encoding")));
+ result.setGzipRequesting(HttpUtil.isUsingGzipEncoding(pRequest.getHeaders("Accept-Encoding")));
+ result.setEncoding(pRequest.getCharacterEncoding());
+ result.setEnabledForExceptions(serverConfig.isEnabledForExceptions());
+ HttpUtil.parseAuthorization(result, pRequest.getHeader("Authorization"));
+ return result;
+ }
+
+ protected ServletStreamConnection newStreamConnection(HttpServletRequest pRequest,
+ HttpServletResponse pResponse) {
+ return new ServletStreamConnection(pRequest, pResponse);
+ }
+
+ /**
+ * Processes the servlet request.
+ * @param pRequest The servlet request being read.
+ * @param pResponse The servlet response being created.
+ * @throws IOException Reading the request or writing the response failed.
+ * @throws ServletException Processing the request failed.
+ */
+ public void execute(HttpServletRequest pRequest, HttpServletResponse pResponse)
+ throws ServletException, IOException {
+ XmlRpcHttpRequestConfigImpl config = getConfig(pRequest);
+ ServletStreamConnection ssc = newStreamConnection(pRequest, pResponse);
+ try {
+ super.execute(config, ssc);
+ } catch (XmlRpcException e) {
+ throw new ServletException(e);
+ }
+ }
+
+ /** Returns whether the request's content length is required. */
+ protected boolean isContentLengthRequired(XmlRpcStreamRequestConfig pConfig) {
+ if (!pConfig.isEnabledForExtensions()) {
+ // The spec requires a content-length.
+ return true;
+ }
+ boolean isRequired = !((XmlRpcHttpServerConfig) getConfig()).isContentLengthOptional();
+ if (pConfig instanceof XmlRpcHttpRequestConfig) {
+ isRequired |= !((XmlRpcHttpRequestConfig) pConfig).isContentLengthOptional();
+ }
+ return isRequired;
+ }
+
+ protected OutputStream getOutputStream(XmlRpcStreamRequestConfig pConfig,
+ ServerStreamConnection pConnection,
+ int pSize) throws IOException {
+ if (pSize != -1) {
+ ((ServletStreamConnection) pConnection).getResponse().setContentLength(pSize);
+ }
+ return super.getOutputStream(pConfig, pConnection, pSize);
+ }
+
+ protected void setResponseHeader(ServerStreamConnection pConnection, String pHeader, String pValue) {
+ ((ServletStreamConnection) pConnection).getResponse().setHeader(pHeader, pValue);
+ }
+}
diff --git a/app/src/main/resources/ApplicationResources.properties b/app/src/main/resources/ApplicationResources.properties
index 1aba85d745..bc61ab836c 100644
--- a/app/src/main/resources/ApplicationResources.properties
+++ b/app/src/main/resources/ApplicationResources.properties
@@ -338,7 +338,7 @@ configForm.editorPages=Editor Pages
configForm.webServicesSettings=Web Services Settings
configForm.enableAtomPub=Enable Atom Publishing Protocol
-configForm.AtomPubAuth=AtomPub authentication (basic or oauth)
+configForm.AtomPubAuth=AtomPub authentication (basic)
configForm.enableXmlRpc=Enable Blogger / MetaWeblog API
configForm.weblogSettings=Weblog Rendering Settings
@@ -948,37 +948,6 @@ navigationBar.logout=Logout
navigationBar.login=Login
navigationBar.register=Register
-# ----------------------------------------------------------------- OAuth pages
-
-oauthKeys.title=OAuth Keys
-oauthKeys.description=OAuth key and secret for your account {0}
-oauthKeys.tip=You can authorize other sites and weblog client programs \
-to access your account to create and edit weblog posts, but only if those \
-sites and programs support OAuth.
-oauthKeys.consumerKey=Consumer Key
-oauthKeys.consumerSecret=Consumer Secret
-oauthKeys.userKeys=User Specific Secret and Key
-oauthKeys.userKeysTip=These keys are tied to your user account, use them to \
-authorize weblog clients that need access your account.
-oauthKeys.siteWideKeys=Site Wide Secret and Key
-oauthKeys.siteWideKeysTip=Since you are a site admin, you have access to the \
-site wide key and secret. You can provide them to other sites that need to \
-access accounts on this site. Users will still have to authenticate access \
-by logging in to Roller.
-oauthKeys.urls=OAuth URLs
-oauthKeys.urlsTip=These are the URLs that your weblog client will need to \
-perform OAuth authorization against Roller.
-oauthKeys.requestTokenURL=Request Token URL
-oauthKeys.authorizationURL=Authorization URL
-oauthKeys.accessTokenURL=Access Token URL
-
-
-oauthAuthorize.title=OAuth Authorization
-oauthAuthorize.description=Authorize OAuth access to user account {0}?
-oauthAuthorize.tip=A web site is asking to have access your account. Press \
-the button below to allow access or simply close this window to deny it.
-
-
# -------------------------------------------------------------- Page management
pagesForm.title=Templates
@@ -1842,10 +1811,6 @@ Feel like you''ve got more to say? Maybe another weblog is what you need.
yourWebsites.editProfile=Your Profile
yourWebsites.editProfile.desc=Change user info, password, timezone
-yourWebsites.oauthKeys=OAuth Credentials
-yourWebsites.oauthKeys.desc=Enable other sites and programs to access your \
-account remotely.
-
yourWebsites.globalAdmin=Server administration
yourWebsites.globalAdmin.desc=Make site-wide administration changes.
diff --git a/app/src/main/resources/ApplicationResources_ja.properties b/app/src/main/resources/ApplicationResources_ja.properties
index 0111318f0c..f6ca6b5561 100644
--- a/app/src/main/resources/ApplicationResources_ja.properties
+++ b/app/src/main/resources/ApplicationResources_ja.properties
@@ -1061,7 +1061,6 @@ mediaFileAdd.includeGallery=\u30AE\u30E3\u30E9\u30EA\u30FC\u306B\u542B\u3081\u30
mediaFileView.create=\u4F5C\u6210
themeEditor.customThemeDescription=\u81EA\u5206\u3067\u30D6\u30ED\u30B0\u3092\u30C7\u30B6\u30A4\u30F3\u3057\u305F\u3044\u30AF\u30EA\u30A8\u30A4\u30C6\u30A3\u30D6\u306A\u30D6\u30ED\u30AC\u30FC\u306E\u305F\u3081\u306E\u9078\u629E\u80A2\u3067\u3059\u3002\u305F\u3060\u3057\u30D6\u30ED\u30B0\u306E\u30C7\u30B6\u30A4\u30F3\u3092\u81EA\u5206\u3067\u7BA1\u7406\u3059\u308B\u306B\u306F\u591A\u5C11\u306E\u624B\u9593\u304C\u304B\u304B\u308A\u307E\u3059\u3002
pagesForm.deleteselected=\u9078\u629E\u3055\u308C\u305F\u9805\u76EE\u3092\u524A\u9664
-yourWebsites.oauthKeys.desc=\u30EA\u30E2\u30FC\u30C8\u306E\u4ED6\u306E\u30B5\u30A4\u30C8\u304A\u3088\u3073\u30D7\u30ED\u30B0\u30E9\u30E0\u304B\u3089\u3001\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u53EF\u80FD\u306B\u3057\u307E\u3059\u3002
configForm.enableAtomPub=Atom \u30D1\u30D6\u30EA\u30C3\u30B7\u30F3\u30B0\u30FB\u30D7\u30ED\u30C8\u30B3\u30EB\u3092\u6709\u52B9\u306B\u3059\u308B
Register.disabled=\u3053\u306E\u30B5\u30A4\u30C8\u306E\u7BA1\u7406\u8005\u306F\u3001\u73FE\u5728\u3001\u65B0\u898F\u30E6\u30FC\u30B6\u767B\u9332\u3092\u7121\u52B9\u306B\u3057\u3066\u3044\u307E\u3059\u3002\u554F\u984C\u304C\u3042\u308B\u5834\u5408\u306F\u3001\u7BA1\u7406\u8005\u306B\u9023\u7D61\u3057\u3066\u304F\u3060\u3055\u3044\u3002
weblogEdit.searchDescription=\u691C\u7D22\u30A8\u30F3\u30B8\u30F3\u7528\u306E\u6982\u8981
@@ -1089,7 +1088,6 @@ mediaFile.error.view.dirNameInvalid=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u540D\u
mediaFileAdd.tags=\u30BF\u30B0\uFF08\u30B9\u30DA\u30FC\u30B9\u3067\u5206\u5272\uFF09
themeEditor.yourThemeStyleSheet=\u5171\u6709\u30C6\u30FC\u30DE\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u30FB\u30B9\u30BF\u30A4\u30EB\u30B7\u30FC\u30C8\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059\u3002
pageForm.useManualContentType=\u72EC\u81EA\u306EContent-Type\u3092\u4F7F\u7528\u3059\u308B
-oauthKeys.siteWideKeys=\u30B5\u30A4\u30C8\u5168\u4F53\u306E\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u304A\u3088\u3073\u30AD\u30FC
installer.errorUpgradingTablesExplanation=\u30C6\u30FC\u30D6\u30EB\u306E\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u306E\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u30B9\u30AF\u30EA\u30D7\u30C8\u306B\u554F\u984C\u304C\u3042\u308B\u304B\u3001\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u306A\u3044\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u3042\u306A\u305F\u306F\u3001\u3053\u306E\u554F\u984C\u3092\u89E3\u6C7A\u3057\u3066Roller\u3092\u518D\u8D77\u52D5\u307E\u305F\u306F\u518D\u30C7\u30D7\u30ED\u30A4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u51E6\u7406\u4E2D\u306E\u6210\u529F/\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u4EE5\u4E0B\u3067\u3059\:
userRegister.heading.authentication=\u3069\u306E\u3088\u3046\u306B\u8A8D\u8A3C\u3057\u307E\u3059\u304B?
mediaFileView.title=\u30E1\u30C7\u30A3\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB
@@ -1112,7 +1110,6 @@ mediaFileView.bytes=\u30D0\u30A4\u30C8
mediaFile.delete.confirm=\u9078\u629E\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u524A\u9664\u3057\u3066\u3088\u308D\u3057\u3044\u3067\u3059\u304B?
commentManagement.saveError=\u30B3\u30E1\u30F3\u30C8\u306E\u4FDD\u5B58\u306B\u5931\u6557\u3057\u307E\u3057\u305F
comments.ldapAuthenticatorUserName=\u3042\u306A\u305F\u306EActive Directory\u30E6\u30FC\u30B6\u540D\u3092\u5165\u529B\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-oauthKeys.urlsTip=\u3053\u308C\u3089\u306F\u3001\u3042\u306A\u305F\u306E\u30D6\u30ED\u30B0\u30FB\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u304CRoller\u306B\u5BFE\u3057\u3066OAuth\u8A8D\u8A3C\u3092\u5B9F\u884C\u3059\u308B\u305F\u3081\u306B\u5FC5\u8981\u3068\u306A\u308BURL\u3067\u3059\u3002
inviteMember.title=\u65B0\u3057\u3044\u30E1\u30F3\u30D0\u30FC\u306E\u62DB\u5F85
mediaFileSuccess.pageTip=\u30D5\u30A1\u30A4\u30EB\u304C\u6B63\u5E38\u306B\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3055\u308C\u307E\u3057\u305F\u3002\u65B0\u3057\u304F\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u542B\u3080\u65B0\u3057\u3044\u30A8\u30F3\u30C8\u30EA\u3092\u4F5C\u6210\u3057\u305F\u3044\u5834\u5408\u306F\u3001\u4EE5\u4E0B\u306E\u30D5\u30A9\u30FC\u30E0\u3092\u4F7F\u3063\u3066\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u30BF\u30A4\u30D7\u304C\u753B\u50CF\u306E\u5834\u5408\u306F\u30B5\u30E0\u30CD\u30A4\u30EB\u3068\u3057\u3066\u8FFD\u52A0\u3055\u308C\u307E\u3059\u3002\u30BF\u30A4\u30D7\u304C\u753B\u50CF\u4EE5\u5916\u306E\u5834\u5408\u306F\u3001\u30A8\u30F3\u30AF\u30ED\u30FC\u30B8\u30E3\uFF08\u4F8B\uFF1APodcast\uFF09\u3068\u3057\u3066\u542B\u3081\u308B\u304B\u3069\u3046\u304B\u9078\u629E\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002
websiteRemove.error=\u30D6\u30ED\u30B0 [{0}] \u306E\u524A\u9664\u30A8\u30E9\u30FC
@@ -1146,7 +1143,6 @@ planetGroupSubs.prompt.add=\u65B0\u3057\u3044\u30B5\u30D6\u30B9\u30AF\u30EA\u30D
MediaFile.error.view=\u30C7\u30A3\u30EC\u30AF\u30C8\u30EA\u3092\u8868\u793A\u3059\u308B\u969B\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002
mediaFileAdd.multipleNames=(\u8907\u6570\u306E\u540D\u524D)
macro.bookmark.urlFeed=\u30B5\u30A4\u30C8\u306ERSS\u30D5\u30A3\u30FC\u30C9\u306EURL
-oauthKeys.title=OAuth\u30AD\u30FC
commonPingTargets.error.enabling=Ping\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u6709\u52B9\u5316\u306B\u5931\u6557\u3057\u307E\u3057\u305F
inviteMember.notificationContent=\u3042\u306A\u305F\u306F\u3001\u30D6\u30ED\u30B0 "{0}" ({1}) \u3078\u306E\u53C2\u52A0\u3092\u62DB\u5F85\u3055\u308C\u307E\u3057\u305F\u3002\u4EE5\u4E0B\u306E\u30EA\u30F3\u30AF\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u30E6\u30FC\u30B6 [{2}] \u3068\u3057\u3066\u30ED\u30B0\u30A4\u30F3\u3057\u3001\u3053\u306E\u62DB\u5F85 <{3}> \u3092\u627F\u8AFE\u3059\u308B\u304B\u62D2\u5426\u3057\u3066\u304F\u3060\u3055\u3044\u3002
mediaFileView.addDirectory=\u65B0\u3057\u3044\u30D5\u30A9\u30EB\u30C0\u3092\u8FFD\u52A0
@@ -1155,7 +1151,6 @@ pingTargetEdit.subtitle=Ping\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u7DE8\u96C6
installer.errorUpgradingTables=\u30C6\u30FC\u30D6\u30EB\u306E\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u306B\u5931\u6557
folderForm.updated=\u30D5\u30A9\u30EB\u30C0\u540D\u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F
frontpageConfig.frontpageAggregated=\u30B5\u30A4\u30C8\u5168\u4F53\u304C\u96C6\u7D04\u3055\u308C\u305F\u30D5\u30ED\u30F3\u30C8\u30FB\u30DA\u30FC\u30B8\u3092\u6709\u52B9\u306B\u3059\u308B
-oauthAuthorize.title=OAuth\u306E\u8A8D\u53EF
mediaFileView.rootPageTip=\u3053\u306E\u30DA\u30FC\u30B8\u306B\u306F\u3001\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3068\u30C6\u30FC\u30DE\u306E\u30AB\u30B9\u30BF\u30DE\u30A4\u30BA\u3092\u9078\u629E\u3057\u305F\u969B\u306B\u30B3\u30D4\u30FC\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u304C\u8868\u793A\u3055\u308C\u3066\u3044\u307E\u3059\u3002\u30D5\u30A9\u30EB\u30C0\u3092\u4F7F\u3063\u3066\u30D5\u30A1\u30A4\u30EB\u3092\u7BA1\u7406\u3067\u304D\u307E\u3059\u3002\u306A\u304A\u3001\u30D5\u30A1\u30A4\u30EB\u3092\u79FB\u52D5\u3057\u305F\u308A\u540D\u524D\u3092\u5909\u66F4\u3057\u3066\u3082URL\u306F\u5909\u308F\u3089\u306A\u3044\u305F\u3081\u30EA\u30F3\u30AF\u5207\u308C\u306E\u5FC3\u914D\u306F\u3042\u308A\u307E\u305B\u3093\u3002
mediaFileSuccess.type=\u30BF\u30A4\u30D7\:
mediaFileAddSuccess.title=\u30E1\u30C7\u30A3\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u5B8C\u4E86
@@ -1183,7 +1178,6 @@ mediaFile.update.success=\u30E1\u30C7\u30A3\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\
userRegister.tip.localeAndTimeZone=\u3042\u306A\u305F\u306B\u3068\u3063\u3066\u671B\u307E\u3057\u3044\u3068\u601D\u308F\u308C\u308B\u8A00\u8A9E\u3068\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u306F\u4EE5\u4E0B\u306E\u901A\u308A\u3067\u3059\u3002\u3053\u308C\u306F\u3001\u3042\u306A\u305F\u304C\u4ECA\u5F8C\u4F5C\u6210\u3059\u308B\u30A8\u30F3\u30C8\u30EA\u30FC\u306B\u9069\u7528\u3055\u308C\u307E\u3059\u306E\u3067\u3001\u6B63\u3057\u304F\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002
macro.weblog.on=\u6295\u7A3F\u65E5\u6642\:
planetConfig.prompt=\u30A2\u30B0\u30EA\u30B2\u30FC\u30BF\u304C\u751F\u6210\u3059\u308B\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9\u306B\u542B\u307E\u308C\u308B\u30BF\u30A4\u30C8\u30EB\u3001\u8AAC\u660E\u3001\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u3001\u30B5\u30A4\u30C8URL\u3092\u8A2D\u5B9A\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u5FC5\u8981\u3067\u3042\u308C\u3070\u30D7\u30ED\u30AD\u30B7\u3092\u8A2D\u5B9A\u3059\u308B\u3053\u3068\u3082\u3067\u304D\u307E\u3059\u3002
-oauthKeys.description=\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8 {0} \u306EOAuth\u30AD\u30FC\u3068\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8
generic.changes.saved=\u5909\u66F4\u304C\u4FDD\u5B58\u3055\u308C\u307E\u3057\u305F
error.commentPostFailedEmailAddress=\u30E1\u30FC\u30EB\u30A2\u30C9\u30EC\u30B9\u304C\u4E0D\u6B63\u3067\u3059\u3002
ConfigForm.title=Planet \u30BF\u30A4\u30C8\u30EB\t
@@ -1192,12 +1186,10 @@ mediaFile.move.confirm=\u9078\u629E\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3
pingTarget.updated=Ping\u30BF\u30FC\u30B2\u30C3\u30C8 "{0}" \u304C\u66F4\u65B0\u3055\u308C\u307E\u3057\u305F
generic.name=\u540D\u524D
pingTarget.malformedUrl=URL\u304C\u4E0D\u6B63\u306A\u5F62\u5F0F\u3067\u3059\u3002
-oauthKeys.tip=OAuth\u3092\u30B5\u30DD\u30FC\u30C8\u3059\u308B\u30B5\u30A4\u30C8\u3084\u30D6\u30ED\u30B0\u30FB\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u30FB\u30D7\u30ED\u30B0\u30E9\u30E0\u306B\u5BFE\u3057\u3066\u3001\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u3078\u30A2\u30AF\u30BB\u30B9\u3057\u3066\u30A8\u30F3\u30C8\u30EA\u30FC\u3092\u6295\u7A3F\u30FB\u7DE8\u96C6\u3059\u308B\u3053\u3068\u3092\u8A8D\u53EF\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002
mediaFileView.filesTagged=\u30BF\u30B0\u304C {0} \u306E\u30D5\u30A1\u30A4\u30EB
weblogEdit.hasComments=\u30B3\u30E1\u30F3\u30C8 [{1}]
categoryDeleteOK.title=\u30AB\u30C6\u30B4\u30EA\u306E\u524A\u9664
bookmarksForm.url=URL
-oauthKeys.accessTokenURL=\u30A2\u30AF\u30BB\u30B9\u30FB\u30C8\u30FC\u30AF\u30F3URL
mediaFile.move.success=\u30E1\u30C7\u30A3\u30A2\u30FB\u30D5\u30A1\u30A4\u30EB\u306F\u6B63\u5E38\u306B\u79FB\u52D5\u3055\u308C\u307E\u3057\u305F\u3002
mediaFileView.noResults=\u6761\u4EF6\u306B\u5408\u81F4\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u306F\u898B\u3064\u304B\u308A\u307E\u305B\u3093\u3067\u3057\u305F\u3002\u4ED6\u306E\u6761\u4EF6\u3092\u8A66\u3057\u3066\u304F\u3060\u3055\u3044\u3002
planetGroups.error.title=\u30BF\u30A4\u30C8\u30EB\u306F\u5FC5\u9808\u9805\u76EE\u3067\u3059
@@ -1256,7 +1248,6 @@ installer.yesCreateTables=\u306F\u3044 - \u4ECA\u3059\u3050\u30C6\u30FC\u30D6\u3
tabbedmenu.bookmarks.allFolders=Blogroll
pageForm.tip.required=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3092\u7DE8\u96C6\u3057\u3066\u3001\u751F\u6210\u3055\u308C\u308B\u30DA\u30FC\u30B8\u3092\u5909\u66F4\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3067\u4F7F\u7528\u3059\u308B\u3053\u3068\u306E\u3067\u304D\u308B\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u304A\u3088\u3073\u30B3\u30FC\u30C9\u306B\u3064\u3044\u3066\u306F\u3001Roller\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u30FB\u30AC\u30A4\u30C9\u3092\u53C2\u7167\u3057\u3066\u304F\u3060\u3055\u3044\u3002\u3053\u308C\u306F\u4E0A\u7D1A\u30E6\u30FC\u30B6\u30FC\u306E\u305F\u3081\u306E\u3082\u306E\u3067\u3042\u308A\u3001\u3082\u3057\u3042\u306A\u305F\u304CHTML\u306B\u8A73\u3057\u304F\u306A\u3044\u5834\u5408\u3001\u7DE8\u96C6\u3057\u306A\u3044\u65B9\u304C\u826F\u3044\u3067\u3057\u3087\u3046\u3002\u30E1\u30E2\: \u3053\u308C\u306F\u5FC5\u9808\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u3067\u3059\u3002\u3042\u306A\u305F\u306F\u3001\u540D\u524D\u3001\u30EA\u30F3\u30AF\u304A\u3088\u3073\u8A73\u7D30\u3092\u5909\u66F4\u3059\u308B\u3053\u3068\u306F\u3067\u304D\u307E\u305B\u3093\u3002
mediaFileView.lt=<
-oauthAuthorize.tip=\u30A6\u30A7\u30D6\u30B5\u30A4\u30C8\u304C\u3001\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u3092\u8981\u6C42\u3057\u3066\u3044\u307E\u3059\u3002\u4EE5\u4E0B\u306E\u30DC\u30BF\u30F3\u3092\u62BC\u3057\u3066\u30A2\u30AF\u30BB\u30B9\u3092\u8A8D\u53EF\u3059\u308B\u304B\u3001\u3053\u306E\u30A6\u30A4\u30F3\u30C9\u30A6\u3092\u9589\u3058\u3066\u62D2\u5426\u3057\u3066\u304F\u3060\u3055\u3044\u3002
planetSubscription.error.deleting=\u30AA\u30D6\u30B8\u30A7\u30AF\u30C8\u306E\u524A\u9664\u30A8\u30E9\u30FC
error.add.user.openIdInUse=Open ID\u306F\u4ED6\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u3067\u65E2\u306B\u4F7F\u308F\u308C\u3066\u3044\u307E\u3059\u3002
themeEditor.importAndOverwriteTemplates=\u30C6\u30FC\u30DE\u3092\u65E2\u5B58\u306E\u30AB\u30B9\u30BF\u30E0\u30FB\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306B\u30A4\u30F3\u30DD\u30FC\u30C8\u3057\u3001\u540C\u540D\u306E\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u4E0A\u66F8\u304D\u3057\u307E\u3059\u3002
@@ -1305,12 +1296,10 @@ mediaFile.includeInGallery.success=\u30E1\u30C7\u30A3\u30A2\u30FB\u30D5\u30A1\u3
mediaFileEdit.directory=\u30D5\u30A9\u30EB\u30C0
bookmarksForm.feedurl=\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9URL
planetSubscription.success.deleted=\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3\u304C\u6B63\u5E38\u306B\u524A\u9664\u3055\u308C\u307E\u3057\u305F
-oauthKeys.userKeys=\u5404\u30E6\u30FC\u30B6\u30FC\u306E\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u304A\u3088\u3073\u30AD\u30FC
mediaFileView.type=\u30BF\u30A4\u30D7
mediaFileEdit.includeGallery=\u30AE\u30E3\u30E9\u30EA\u30FC\u306B\u542B\u3081\u307E\u3059\u304B?
statCount.weblogCommentCountType=\u30D6\u30ED\u30B0\u306E\u30B3\u30E1\u30F3\u30C8\u6570
mediaFileSuccess.subtitle=\u65B0\u3057\u3044\u30A8\u30F3\u30C8\u30EA\u3092\u4F5C\u6210\u3057\u307E\u3059\u304B?
-oauthKeys.userKeysTip=\u3053\u308C\u3089\u306F\u3001\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306B\u7D10\u3065\u3051\u3089\u308C\u305F\u30AD\u30FC\u3067\u3059\u3002\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u304C\u5FC5\u8981\u306A\u30D6\u30ED\u30B0\u30FB\u30AF\u30E9\u30A4\u30A2\u30F3\u30C8\u3092\u8A8D\u53EF\u3059\u308B\u305F\u3081\u306B\u4F7F\u7528\u3057\u3066\u304F\u3060\u3055\u3044\u3002
categoriesForm.noresults=\u73FE\u5728\u3001\u30AB\u30C6\u30B4\u30EA\u306F\u3042\u308A\u307E\u305B\u3093
installer.errorCreatingTablesExplanation=\u30C6\u30FC\u30D6\u30EB\u306E\u4F5C\u6210\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F\u3002\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u4F5C\u6210\u30B9\u30AF\u30EA\u30D7\u30C8\u306B\u554F\u984C\u304C\u3042\u308B\u304B\u3001\u30B5\u30DD\u30FC\u30C8\u3055\u308C\u3066\u306A\u3044\u30C7\u30FC\u30BF\u30D9\u30FC\u30B9\u304C\u4F7F\u7528\u3055\u308C\u3066\u3044\u308B\u53EF\u80FD\u6027\u304C\u3042\u308A\u307E\u3059\u3002\u3042\u306A\u305F\u306F\u3001\u3053\u306E\u554F\u984C\u3092\u89E3\u6C7A\u3057\u3066Roller\u3092\u518D\u8D77\u52D5\u307E\u305F\u306F\u518D\u30C7\u30D7\u30ED\u30A4\u3059\u308B\u5FC5\u8981\u304C\u3042\u308A\u307E\u3059\u3002\u4F5C\u6210\u51E6\u7406\u4E2D\u306E\u6210\u529F/\u30A8\u30E9\u30FC\u30E1\u30C3\u30BB\u30FC\u30B8\u306F\u4EE5\u4E0B\u3067\u3059\:
commonPingTargets.error.loading=\u5171\u901APing\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u8AAD\u307F\u8FBC\u307F\u306B\u5931\u6557\u3057\u307E\u3057\u305F
@@ -1333,7 +1322,6 @@ mediaFileView.gt=>
pageForm.action=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306E\u7DE8\u96C6
mediaFileSuccess.size=\u30B5\u30A4\u30BA\:
configForm.allowUserWeblogCreation=\u30E6\u30FC\u30B6\u306B\u65B0\u3057\u3044\u30D6\u30ED\u30B0\u306E\u4F5C\u6210\u3092\u8A31\u53EF\u3057\u307E\u3059\u304B?
-oauthKeys.consumerKey=\u30B3\u30F3\u30B7\u30E5\u30FC\u30DE\u30FC\u30FB\u30AD\u30FC
categoryForm.requiredFields={0} \u306F\u5FC5\u9808\u9805\u76EE\u3067\u3059
mediaFileEdit.updateFileContents=\u30D5\u30A1\u30A4\u30EB\u306E\u5185\u5BB9\u3092\u66F4\u65B0\u3059\u308B
websiteSettings.error.processingBannedwordslist=\u30D6\u30E9\u30C3\u30AF\u30EA\u30B9\u30C8\u306E\u51E6\u7406\u30A8\u30E9\u30FC\: {0}
@@ -1362,7 +1350,7 @@ pingTargetAdd.subtitle=Ping\u30BF\u30FC\u30B2\u30C3\u30C8\u306E\u8FFD\u52A0
planetSubscription.feedUrl=\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9URL
mediaFileSuccess.noEnclosure=\u30A8\u30F3\u30AF\u30ED\u30FC\u30B8\u30E3\u306A\u3057
userRegister.tip.ready=\u3088\u308D\u3057\u3051\u308C\u3070\u3001\u4EE5\u4E0B\u306E\u30DC\u30BF\u30F3\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-configForm.AtomPubAuth=AtomPub\u8A8D\u8A3C (basic \u307E\u305F\u306F oauth)
+configForm.AtomPubAuth=AtomPub\u8A8D\u8A3C (basic)
ConfigForm.proxyPort=Feed fetcher\u304C\u4F7F\u7528\u3059\u308B\u30D7\u30ED\u30AD\u30B7\u306E\u30DD\u30FC\u30C8
mediaFileView.searchTitle=\u691C\u7D22\u7D50\u679C
weblogEdit.enclosureLength=\u9577\u3055
@@ -1374,7 +1362,6 @@ pageRemoves.youSure=\u3053\u306E\u30DA\u30FC\u30B8\u3092\u524A\u9664\u3057\u307E
mediaFileAdd.fileLocation=\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u3059\u308B\u30D5\u30A1\u30A4\u30EB\u3092\u9078\u629E
mediaFileView.eq=\=
userAdmin.error.userNotFound=\u6307\u5B9A\u3055\u308C\u305F\u30E6\u30FC\u30B6\u306F\u5B58\u5728\u3057\u307E\u305B\u3093
-oauthKeys.siteWideKeysTip=\u3042\u306A\u305F\u306F\u30B5\u30A4\u30C8\u306E\u7BA1\u7406\u8005\u3067\u3042\u308B\u305F\u3081\u3001\u30B5\u30A4\u30C8\u5168\u4F53\u306E\u30AD\u30FC\u3068\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u6A29\u3092\u6301\u3063\u3066\u3044\u307E\u3059\u3002\u3042\u306A\u305F\u306F\u3053\u308C\u3092\u3001\u3053\u306E\u30B5\u30A4\u30C8\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u304C\u5FC5\u8981\u306A\u4ED6\u306E\u30B5\u30A4\u30C8\u306B\u5BFE\u3057\u3066\u63D0\u4F9B\u3059\u308B\u3053\u3068\u304C\u3067\u304D\u307E\u3059\u3002\u305F\u3060\u3057\u3001\u30E6\u30FC\u30B6\u306F\u30A2\u30AF\u30BB\u30B9\u3092\u8A8D\u53EF\u3059\u308B\u305F\u3081\u306BRoller\u3078\u30ED\u30B0\u30A4\u30F3\u3057\u306A\u3051\u308C\u3070\u306A\u308A\u307E\u305B\u3093\u3002
editPages.remove.notFound=\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8ID {0} \u306F\u5B58\u5728\u3057\u307E\u305B\u3093\u3067\u3057\u305F
planetGroups.prompt.add=\u30B0\u30EB\u30FC\u30D7\u3092\u4F5C\u6210\u3059\u308B\u306B\u306F\u3001\u30CB\u30E5\u30FC\u30B9\u30D5\u30A3\u30FC\u30C9URL\u3067\u4F7F\u7528\u3055\u308C\u308B\u8868\u793A\u540D\u304A\u3088\u3073\u30E6\u30CB\u30FC\u30AF\u30FB\u30CF\u30F3\u30C9\u30EB\u3092\u5165\u529B\u3057\u3066\u4FDD\u5B58\u3092\u30AF\u30EA\u30C3\u30AF\u3057\u3066\u304F\u3060\u3055\u3044\u3002
mediaFileView.matchingResults=\u6761\u4EF6\u306B\u5408\u81F4\u3059\u308B {0} \u4EF6\u306E\u30D5\u30A1\u30A4\u30EB\u304C\u898B\u3064\u304B\u308A\u307E\u3057\u305F\u3002
@@ -1387,9 +1374,7 @@ mediaFileView.filesNamed=\u540D\u524D\u304C {0} \u3067\u59CB\u307E\u308B\
editPages.remove.requiredTemplate=\u5FC5\u9808\u30C6\u30F3\u30D7\u30EC\u30FC\u30C8\u306F\u524A\u9664\u3067\u304D\u307E\u305B\u3093
user.account.activation.mail.subject=Roller\: \u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8\u306E\u30A2\u30AF\u30C6\u30A3\u30D9\u30FC\u30B7\u30E7\u30F3\u30FB\u30B3\u30FC\u30C9
generic.error.check.logs=Roller\u30B7\u30B9\u30C6\u30E0\u30FB\u30A8\u30E9\u30FC - \u7BA1\u7406\u8005\u306BRoller\u306E\u30ED\u30B0\u306E\u78BA\u8A8D\u3092\u4F9D\u983C\u3057\u3066\u304F\u3060\u3055\u3044\u3002
-oauthKeys.authorizationURL=\u8A8D\u53EFURL
weblogEdit.scheduledEntry=\u30A8\u30F3\u30C8\u30EA\u30FC\u306E\u516C\u958B\u304C {0} \u306B\u30B9\u30B1\u30B8\u30E5\u30FC\u30EB\u3055\u308C\u307E\u3057\u305F
-yourWebsites.oauthKeys=OAuth\u8A8D\u8A3C\u60C5\u5831
frontpageConfig.weblogs.error=\u30D6\u30ED\u30B0\u3078\u306E\u30A2\u30AF\u30BB\u30B9\u4E2D\u306B\u4E88\u671F\u305B\u306C\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
pingTarget.created=Ping\u30BF\u30FC\u30B2\u30C3\u30C8 "{0}" \u304C\u8FFD\u52A0\u3055\u308C\u307E\u3057\u305F
themeEditor.yourCustomStylesheet=\u30AB\u30B9\u30BF\u30E0\u30FB\u30AA\u30FC\u30D0\u30FC\u30E9\u30A4\u30C9\u30FB\u30B9\u30BF\u30A4\u30EB\u30B7\u30FC\u30C8\u3092\u4F7F\u7528\u3057\u3066\u3044\u307E\u3059\u3002
@@ -1401,12 +1386,10 @@ mediaFileEdit.tags=\u30BF\u30B0\uFF08\u30B9\u30DA\u30FC\u30B9\u3067\u5206\u5272\
macro.weblog.noEntriesForCategory=\u6307\u5B9A\u3055\u308C\u305F\u30AB\u30C6\u30B4\u30EA\u306B\u306F\u30A8\u30F3\u30C8\u30EA\u30FC\u304C\u3042\u308A\u307E\u305B\u3093
userAdmin.noPasswordForOpenID=OpenID\u3092\u6307\u5B9A\u3059\u308B\u5834\u5408\u306F\u3001\u30D1\u30B9\u30EF\u30FC\u30C9\u30D5\u30A3\u30FC\u30EB\u30C9\u3092\u7A7A\u767D\u306E\u307E\u307E\u306B\u3057\u3066\u304F\u3060\u3055\u3044\u3002
mediaFileAdd.errorUploading=\u30D5\u30A1\u30A4\u30EB {0} \u306E\u30A2\u30C3\u30D7\u30ED\u30FC\u30C9\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F
-oauthKeys.requestTokenURL=\u30EA\u30AF\u30A8\u30B9\u30C8\u30FB\u30C8\u30FC\u30AF\u30F3URL
Register.error.timeZoneNull=\u30BF\u30A4\u30E0\u30BE\u30FC\u30F3\u306F\u5FC5\u9808\u9805\u76EE\u3067\u3059
mediaFileSuccess.selectEnclosure=RSS/Atom\u30A8\u30F3\u30AF\u30ED\u30FC\u30B8\u30E3\uFF08\u4F8B\uFF1APodcast\uFF09\u3068\u3057\u3066\u30A8\u30F3\u30C8\u30EA\u306B\u542B\u3081\u308B\u30D5\u30A1\u30A4\u30EB\u30921\u3064\uFF08\u307E\u305F\u306F\u3001\u306A\u3057\uFF09\u9078\u629E\u3057\u3066\u304F\u3060\u3055\u3044\:
mediaFileSuccess.bytes=\u30D0\u30A4\u30C8
mediaFileView.moveSelected=\u9078\u629E\u3055\u308C\u305F\u30D5\u30A1\u30A4\u30EB\u3092\u30D5\u30A9\u30EB\u30C0\u306B\u79FB\u52D5\:
-oauthKeys.urls=OAuth\u306EURL
tabbedmenu.admin.planetGroupSubs=\u30B5\u30D6\u30B9\u30AF\u30EA\u30D7\u30B7\u30E7\u30F3
weblogEdit.submittedForReview=\u30A8\u30F3\u30C8\u30EA\u30FC\u304C\u30EC\u30D3\u30E5\u30FC\u3092\u53D7\u3051\u308B\u305F\u3081\u306B\u9001\u4FE1\u3055\u308C\u307E\u3057\u305F
installer.upgradeTables=\u30C6\u30FC\u30D6\u30EB\u3092\u30A2\u30C3\u30D7\u30B0\u30EC\u30FC\u30C9\u3057\u307E\u3059\u304B?
@@ -1415,7 +1398,6 @@ mediaFileSuccess.selectImages=\u65B0\u3057\u3044\u30A8\u30F3\u30C8\u30EA\u306B\u
bookmarkForm.created=\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF "{0}" \u304C\u4F5C\u6210\u3055\u308C\u307E\u3057\u305F
installer.bannerTitleLeft=Apache Roller Weblogger
stylesheetEdit.confirmRevert=\u30B9\u30BF\u30A4\u30EB\u30B7\u30FC\u30C8\u3092\u30C6\u30FC\u30DE\u306E\u30C7\u30D5\u30A9\u30EB\u30C8\u306B\u623B\u3057\u3066\u3088\u308D\u3057\u3044\u3067\u3059\u304B?
-oauthKeys.consumerSecret=\u30B3\u30F3\u30B7\u30E5\u30FC\u30DE\u30FC\u30FB\u30B7\u30FC\u30AF\u30EC\u30C3\u30C8
categoryForm.removed=\u30AB\u30C6\u30B4\u30EA "{0}" \u304C\u524A\u9664\u3055\u308C\u307E\u3057\u305F
maintenance.message.indexed.failure=\u691C\u7D22\u30A4\u30F3\u30C7\u30C3\u30AF\u30B9\u306E\u518D\u69CB\u7BC9\u4E2D\u306B\u30A8\u30E9\u30FC\u304C\u767A\u751F\u3057\u307E\u3057\u305F - \u30B7\u30B9\u30C6\u30E0\u30FB\u30ED\u30B0\u3092\u78BA\u8A8D\u3057\u3066\u304F\u3060\u3055\u3044
bookmarksForm.selectAllLabel=\u3059\u3079\u3066\u306E\u30D6\u30C3\u30AF\u30DE\u30FC\u30AF\u3092\u9078\u629E
@@ -1428,6 +1410,5 @@ userSettings.tip.username=\u30E6\u30FC\u30B6\u540D\u306F\u5909\u66F4\u3067\u304D
installer.heresTheStackTrace=\u30C7\u30D0\u30C3\u30B0\u306E\u52A9\u3051\u3068\u306A\u308B\u3001\u4F8B\u5916\u306E\u30B9\u30BF\u30C3\u30AF\u30C8\u30EC\u30FC\u30B9\u306F\u3053\u3061\u3089\:
weblogEntry.pendingEntrySubject=Roller\: \u30D6\u30ED\u30B0 "{0}" \u306E\u65B0\u3057\u3044\u30EC\u30D3\u30E5\u30FC\u5F85\u3061\u306E\u6295\u7A3F ({1})
frontpageConfig.frontpageBlogName=\u30D5\u30ED\u30F3\u30C8\u30FB\u30DA\u30FC\u30B8\u30FB\u30D6\u30ED\u30B0\u306E\u540D\u524D
-oauthAuthorize.description=\u3042\u306A\u305F\u306E\u30A2\u30AB\u30A6\u30F3\u30C8 {0} \u306BOAuth\u30A2\u30AF\u30BB\u30B9\u3092\u8A8D\u53EF\u3057\u307E\u3059\u304B?
weblogEntryQuery.date.toStringFormat={0,date,yy/MM/dd HH:mm}
commentManagement.date.toStringFormat={0,date,yy/MM/dd HH:mm}
diff --git a/app/src/main/resources/ApplicationResources_zh_CN.properties b/app/src/main/resources/ApplicationResources_zh_CN.properties
index b14a965252..03792b4a7a 100644
--- a/app/src/main/resources/ApplicationResources_zh_CN.properties
+++ b/app/src/main/resources/ApplicationResources_zh_CN.properties
@@ -336,7 +336,7 @@ configForm.editorPages=\u7F16\u8F91\u5668\u9875\u9762
configForm.webServicesSettings=Web\u670D\u52A1\u8BBE\u7F6E
configForm.enableAtomPub=\u542F\u7528 Atom \u53D1\u5E03\u534F\u8BAE
-configForm.AtomPubAuth=AtomPub \u8BA4\u8BC1\u65B9\u5F0F (basic / oauth)
+configForm.AtomPubAuth=AtomPub \u8BA4\u8BC1\u65B9\u5F0F (basic)
configForm.enableXmlRpc=\u542F\u7528 Blogger / MetaWeblog API
configForm.weblogSettings=\u535A\u5BA2\u663E\u793A\u8BBE\u7F6E
@@ -930,37 +930,6 @@ navigationBar.logout=\u6CE8\u9500
navigationBar.login=\u767B\u5F55
navigationBar.register=\u6CE8\u518C
-# ----------------------------------------------------------------- OAuth pages
-
-oauthKeys.title=OAuth\u5BC6\u94A5
-oauthKeys.description=\u4F60\u7684\u8D26\u6237{0}\u4F7F\u7528\u7684OAuth\u5BC6\u94A5
-oauthKeys.tip=\u4F60\u53EF\u4EE5\u6388\u6743\u5176\u4ED6\u652F\u6301OAuth\u7684\u7AD9\u70B9\u548C\u5BA2\u6237\u7AEF\u7A0B\u5E8F\u767B\u5F55\u4F60\u7684\u8D26\u53F7\u53D1\u5E03\u548C\u7F16\u8F91\u6587\u7AE0\u3002
-
-
-oauthKeys.consumerKey=\u5BA2\u6237\u79C1\u94A5
-oauthKeys.consumerSecret=\u5BA2\u6237\u5BC6\u94A5
-oauthKeys.userKeys=\u7528\u6237\u6307\u5B9A\u7684\u5BC6\u94A5
-oauthKeys.userKeysTip=\u8FD9\u4E9B\u5BC6\u94A5\u4E0E\u4F60\u7684\u8D26\u6237\u76F8\u5173\u8054\uFF0C\u53EF\u4EE5\u7528\u6765\u6388\u6743\u5BA2\u6237\u7AEF\u7A0B\u5E8F\u767B\u5F55\u4F60\u7684\u8D26\u53F7\u3002
-
-oauthKeys.siteWideKeys=\u5168\u7AD9\u8303\u56F4\u5BC6\u94A5
-oauthKeys.siteWideKeysTip=\u7531\u4E8E\u4F60\u662F\u8D85\u7EA7\u7BA1\u7406\u5458\uFF0C\u4F60\u53EF\u4EE5\u4F7F\u7528\u5168\u7AD9\u8303\u56F4\u5BC6\u94A5\u3002\u4F60\u53EF\u4EE5\u5C06\u5176\u7ED9\u4E88\u5176\u4ED6\u9700\u8981\u767B\u5F55\u672C\u7AD9\u8D26\u53F7\u7684\u7AD9\u70B9\u3002
-
-
-
-oauthKeys.urls=OAuth\u8BA4\u8BC1URL
-oauthKeys.urlsTip=\u8FD9\u662F\u4F60\u7684\u5BA2\u6237\u7AEF\u7A0B\u5E8F\u767B\u5F55\u535A\u5BA2\u8D26\u6237\u65F6\u9700\u8981\u4F7F\u7528\u7684OAuth\u8BA4\u8BC1URL\u3002
-
-oauthKeys.requestTokenURL=\u8BF7\u6C42\u6807\u8BC6URL
-oauthKeys.authorizationURL=\u8BA4\u8BC1URL
-oauthKeys.accessTokenURL=\u8BBF\u95EE\u6807\u8BC6URL
-
-
-oauthAuthorize.title=OAuth\u8BA4\u8BC1
-oauthAuthorize.description=\u786E\u5B9A\u8981\u5141\u8BB8OAuth\u8BA4\u8BC1\u5BA2\u6237\u7AEF\u8BBF\u95EE{0}\u8D26\u53F7\u5417\uFF1F
-oauthAuthorize.tip=\u6709\u67D0\u4E2A\u7AD9\u70B9\u8BF7\u6C42\u8BBF\u95EE\u4F60\u7684\u8D26\u53F7\u3002\u8BF7\u70B9\u51FB\u4EE5\u4E0B\u6309\u94AE\u4EE5\u5141\u8BB8\u8BBF\u95EE\u6216\u5173\u95ED\u7A97\u53E3\u4EE5\u62D2\u7EDD\u8BBF\u95EE\u3002
-
-
-
# -------------------------------------------------------------- Page management
pagesForm.title=\u9875\u9762\u6A21\u677F
@@ -1817,10 +1786,6 @@ yourWebsites.createWeblog.desc=\u4F60\u8FD8\u6709\u66F4\u591A\u60F3\u8981\u8868\
yourWebsites.editProfile=\u7F16\u8F91\u7528\u6237\u4FE1\u606F
yourWebsites.editProfile.desc=\u4FEE\u6539\u5BC6\u7801\u3001\u8054\u7CFB\u4FE1\u606F\u6216\u754C\u9762\u8BED\u8A00\u3002
-yourWebsites.oauthKeys=OAuth\u51ED\u8BC1
-yourWebsites.oauthKeys.desc=\u5141\u8BB8\u5176\u4ED6\u7AD9\u70B9\u548C\u7A0B\u5E8F\u8FDC\u7A0B\u8BBF\u95EE\u4F60\u7684\u8D26\u53F7\u3002
-
-
yourWebsites.globalAdmin=\u670D\u52A1\u5668\u7BA1\u7406
yourWebsites.globalAdmin.desc=\u8FDB\u884C\u5168\u7AD9\u8303\u56F4\u7684\u7BA1\u7406\u64CD\u4F5C\u3002
diff --git a/app/src/main/resources/META-INF/persistence.xml b/app/src/main/resources/META-INF/persistence.xml
index 199c87280b..e27c7b43ff 100644
--- a/app/src/main/resources/META-INF/persistence.xml
+++ b/app/src/main/resources/META-INF/persistence.xml
@@ -1,5 +1,8 @@
-
+
+ "-//Apache Software Foundation//DTD Struts Configuration 6.5//EN"
+ "https://struts.apache.org/dtds/struts-6.5.dtd">
+
+
+
+
+
+
@@ -50,14 +60,16 @@
-
+
+
-
+
@@ -157,18 +169,6 @@
execute,save
-
- .OAuthKeys
- execute
-
-
-
- .OAuthAuthorize
- execute
-
-
.CreateWeblog
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/MainMenuSidebar.jsp b/app/src/main/webapp/WEB-INF/jsps/core/MainMenuSidebar.jsp
index 29cbb23d1b..b70cc1eeb0 100644
--- a/app/src/main/webapp/WEB-INF/jsps/core/MainMenuSidebar.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/core/MainMenuSidebar.jsp
@@ -34,14 +34,6 @@
">
- <%-- Edit profile --%>
-
-
-
- ">
-
-
-
<%-- Create weblog --%>
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/OAuthAuthorize.jsp b/app/src/main/webapp/WEB-INF/jsps/core/OAuthAuthorize.jsp
deleted file mode 100644
index befdfe26fd..0000000000
--- a/app/src/main/webapp/WEB-INF/jsps/core/OAuthAuthorize.jsp
+++ /dev/null
@@ -1,40 +0,0 @@
-<%--
- 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.
---%>
-<%@ include file="/WEB-INF/jsps/taglibs-struts2.jsp" %>
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-