Merge tag 'roller-5.2.0'
diff --git a/.gitignore b/.gitignore
index bfa6a22..c152e92 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1 +1 @@
-# Created by .ignore support plugin (hsz.mobi)
+./tomcat/*
diff --git a/NOTICE.txt b/NOTICE.txt
index 7c9e186..490d7b4 100644
--- a/NOTICE.txt
+++ b/NOTICE.txt
@@ -12,7 +12,7 @@
Copyright 2003 Simon Brown, All rights reserved.
* Code written by Sun Microsystems, Inc.
- Copyright 2005 Sun Microsystems, Inc.
+ Copyright 2009 Sun Microsystems, Inc.
* Code written by Dave Johnson for RSS and Atom in Action
Copyright 2005 David M Johnson (For RSS and Atom In Action)
diff --git a/README.md b/README.md
new file mode 100644
index 0000000..0953102
--- /dev/null
+++ b/README.md
@@ -0,0 +1,54 @@
+# Apache Roller
+
+[Apache Roller](http://roller.apache.org) is a Java-based, full-featured,
+multi-user and group-blog server suitable for blog sites large and small.
+Roller is typically run with Apache Tomcat and MySQL.
+Roller is made up of the following Maven projects:
+
+* _roller-project_: Top level project
+* _app_: Roller Weblogger webapp, JSP pages, Velocity templates
+* _assembly-release_: Used to create official distributions of Roller
+* _docs_: Roller documentation in ODT format
+* _it-selenium_: Integrated browser tests for Roller using Selenium
+
+## Documentation
+
+The Roller Install, User and Template Guides are available in ODT format
+(for OpenOffice or LibraOffice):
+
+* https://github.com/apache/roller/tree/master/docs
+
+## For more information
+
+Hit the Roller Confluence wiki:
+
+* How to build and run Roller: https://cwiki.apache.org/confluence/x/EM4
+* How to contribute to Roller: https://cwiki.apache.org/confluence/x/2hsB
+* How to make a release of Roller: https://cwiki.apache.org/confluence/x/gycB
+* Other developer resources: https://cwiki.apache.org/confluence/x/D84
+
+## Quick start
+
+Assuming you've got a UNIX shell, Java, Maven and Git:
+
+Get the code:
+
+ $ git clone https://github.com/apache/roller.git
+
+Build and test the code:
+
+ $ cd roller
+ $ mvn clean install
+
+Run Roller in Jetty with Derby database:
+
+ $ cd app
+ $ mvn jetty:run
+
+Browse to http://localhost:8080/roller
+
+
+
+
+
+
diff --git a/README.txt b/README.txt
deleted file mode 100644
index fcf2b08..0000000
--- a/README.txt
+++ /dev/null
@@ -1,49 +0,0 @@
-README.txt
-
-This file exists at the top-level of the Roller source tree.
-
-Roller is made up of the following Maven projects:
-
- roller-project: Top level project
- app: Roller Weblogger webapp, JSP pages, Velocity templates
- assembly-release: Used to create official distributions of Roller
- docs: Roller documentation in ODT (OpenOffice/LibreOffice) format
- it-selenium Integrated browser tests for Roller using Selenium
-
-To pull the latest trunk sources you need a Subversion client:
- svn co https://svn.apache.org/repos/asf/roller/trunk roller_trunk
-
-Building this version of Roller requires Apache Maven 3.0.5.
- - How to build Roller: https://cwiki.apache.org/confluence/x/EM4
- - To build and run Roller on Eclipse: https://cwiki.apache.org/confluence/x/EM4
-
-----------------------------------------------------------
-How to build the source
-
-The normal Roller build creates a product generically suitable for use several
-application containers, however see the Roller Install guide for application server
-specific configuration information.
-
-After pulling the source tree and changing directory to its top level, as
-indicated above, the following command will build and run all unit tests:
-
- mvn clean install
-
-After doing that, you should find the newly built Roller webapp, suitable
-for use in app/target/roller.
-
-To build Roller, subsequently run "mvn clean install" from the assembly-release
-folder. After that, you'll find Roller distribution files in
-assembly-release/target.
-
----------------------------
-NOTES
-
-Building other versions of Roller
-
-If you wish to pull a branch other than the trunk, replace the word
-"trunk" in both lines above with the appropriate branch name. Note that
-versions of Roller before 5.0 have an Ant-based build. In general, you should
-be able to follow instructions accompanying the sources that you pull in order
-to build that version.
-
diff --git a/app/pom.xml b/app/pom.xml
index eec883a..4739e4c 100644
--- a/app/pom.xml
+++ b/app/pom.xml
@@ -1,3 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -7,7 +24,7 @@
<parent>
<groupId>org.apache.roller</groupId>
<artifactId>roller-project</artifactId>
- <version>5.2.0-SNAPSHOT</version>
+ <version>5.2.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
@@ -16,13 +33,75 @@
<packaging>war</packaging>
<properties>
- <lucene.version>4.10.3</lucene.version>
+ <angular.version>1.2.29</angular.version>
+ <ant.version>1.10.1</ant.version>
+ <commons-validator.version>1.6</commons-validator.version>
+ <commons-beanutils.version>1.9.3</commons-beanutils.version>
+ <commons-httpclient.version>3.1</commons-httpclient.version>
+ <commons-codec.version>1.10</commons-codec.version>
+ <eclipse-link.version>2.5.2</eclipse-link.version>
+ <guice.version>4.1.0</guice.version>
+ <java-mail.version>1.4.7</java-mail.version>
+ <jsp-api.version>2.2</jsp-api.version>
+ <jstl.version>1.2</jstl.version>
+ <log4j.version>1.2.17</log4j.version>
+ <log4j2.version>2.8.2</log4j2.version>
+ <lucene.version>4.10.4</lucene.version>
+ <oauth-core.version>20100527</oauth-core.version>
+ <maven-war.version>3.1.0</maven-war.version>
+ <maven-surefire.version>2.17</maven-surefire.version>
+ <maven-antrun.version>1.0b3</maven-antrun.version>
+ <rome.version>1.7.4</rome.version>
+ <servlet.version>3.0.1</servlet.version>
+ <slf4j.version>1.7.25</slf4j.version>
<spring.version>4.1.4.RELEASE</spring.version>
<spring.security.version>3.2.5.RELEASE</spring.security.version>
+ <struts.version>2.5.12</struts.version>
+ <velocity.version>1.7</velocity.version>
+ <webjars.version>1.5</webjars.version>
+ <ws-commons-util.version>1.0.2</ws-commons-util.version>
+ <xml-security.version>1.3.0</xml-security.version>
+ <xmlrpc-version>3.1.3</xmlrpc-version>
</properties>
<dependencies>
+
+ <!-- Java EE deps -->
+
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>javax.servlet-api</artifactId>
+ <version>${servlet.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.servlet.jsp</groupId>
+ <artifactId>jsp-api</artifactId>
+ <version>${jsp-api.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.servlet</groupId>
+ <artifactId>jstl</artifactId>
+ <version>${jstl.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>javax.mail</groupId>
+ <artifactId>mail</artifactId>
+ <version>${java-mail.version}</version>
+ <scope>provided</scope>
+ <exclusions>
+ <exclusion>
+ <groupId>javax.activation</groupId>
+ <artifactId>activation</artifactId>
+ </exclusion>
+ </exclusions>
+ </dependency>
+
<!-- Eclipselink JPA is the default JPA implementation used by
Roller, comment out this dependency and uncomment Hibernate's
to use that stack instead.
@@ -34,7 +113,7 @@
<dependency>
<groupId>org.eclipse.persistence</groupId>
<artifactId>eclipselink</artifactId>
- <version>2.5.2</version>
+ <version>${eclipse-link.version}</version>
</dependency>
<!-- Alternative testing with Hibernate (used by default with JBoss)
@@ -72,16 +151,37 @@
to this pom.xml. Check the Roller source code repository for a copy of
this pom.xml prior to July 2013 for the necessary OpenJPA configuration -->
+
+ <!-- Apache deps include Velocity, Struts, Lucene, HttpClient and XML-RPC -->
+
<dependency>
- <groupId>log4j</groupId>
- <artifactId>log4j</artifactId>
- <version>1.2.17</version>
+ <groupId>org.apache.velocity</groupId>
+ <artifactId>velocity</artifactId>
+ <version>${velocity.version}</version>
</dependency>
<dependency>
- <groupId>com.google.inject</groupId>
- <artifactId>guice</artifactId>
- <version>4.0</version>
+ <groupId>org.apache.struts</groupId>
+ <artifactId>struts2-core</artifactId>
+ <version>${struts.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.struts</groupId>
+ <artifactId>struts2-spring-plugin</artifactId>
+ <version>${struts.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.struts</groupId>
+ <artifactId>struts2-convention-plugin</artifactId>
+ <version>${struts.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.struts</groupId>
+ <artifactId>struts2-tiles-plugin</artifactId>
+ <version>${struts.version}</version>
</dependency>
<dependency>
@@ -99,27 +199,64 @@
</dependency>
<dependency>
- <groupId>org.apache.velocity</groupId>
- <artifactId>velocity</artifactId>
- <version>1.7</version>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>${log4j.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.logging.log4j</groupId>
+ <artifactId>log4j-core</artifactId>
+ <version>${log4j2.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-validator</groupId>
+ <artifactId>commons-validator</artifactId>
+ <version>${commons-validator.version}</version>
+ <type>jar</type>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-beanutils</groupId>
+ <artifactId>commons-beanutils</artifactId>
+ <version>${commons-beanutils.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-httpclient</groupId>
+ <artifactId>commons-httpclient</artifactId>
+ <version>${commons-httpclient.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>commons-codec</groupId>
+ <artifactId>commons-codec</artifactId>
+ <version>${commons-codec.version}</version>
+ </dependency>
+
+ <dependency>
+ <groupId>xml-security</groupId>
+ <artifactId>xmlsec</artifactId>
+ <version>${xml-security.version}</version>
</dependency>
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-common</artifactId>
- <version>3.1.3</version>
+ <version>${xmlrpc-version}</version>
</dependency>
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-client</artifactId>
- <version>3.1.3</version>
+ <version>${xmlrpc-version}</version>
</dependency>
<dependency>
<groupId>org.apache.xmlrpc</groupId>
<artifactId>xmlrpc-server</artifactId>
- <version>3.1.3</version>
+ <version>${xmlrpc-version}</version>
<exclusions>
<exclusion>
<groupId>javax.servlet</groupId>
@@ -131,7 +268,7 @@
<dependency>
<groupId>org.apache.ws.commons.util</groupId>
<artifactId>ws-commons-util</artifactId>
- <version>1.0.2</version>
+ <version>${ws-commons-util.version}</version>
<exclusions>
<exclusion>
<groupId>xml-apis</groupId>
@@ -140,54 +277,8 @@
</exclusions>
</dependency>
- <dependency>
- <groupId>net.oauth.core</groupId>
- <artifactId>oauth-provider</artifactId>
- <scope>compile</scope>
- <version>20100527</version>
- </dependency>
- <!-- web -->
-
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>javax.servlet-api</artifactId>
- <version>3.0.1</version>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>com.rometools</groupId>
- <artifactId>rome-fetcher</artifactId>
- <version>1.5.0</version>
- <scope>compile</scope>
- </dependency>
-
- <dependency>
- <groupId>com.rometools</groupId>
- <artifactId>rome-propono</artifactId>
- <version>1.5.0</version>
- <scope>compile</scope>
- <exclusions>
- <exclusion>
- <groupId>xmlrpc</groupId>
- <artifactId>xmlrpc-common</artifactId>
- </exclusion>
- <exclusion>
- <groupId>xmlrpc</groupId>
- <artifactId>xmlrpc-client</artifactId>
- </exclusion>
- </exclusions>
- </dependency>
-
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-log4j12</artifactId>
- <version>1.7.10</version>
- <scope>runtime</scope>
- </dependency>
-
- <!-- spring deps -->
+ <!-- Spring deps (needed only for Spring Security) -->
<dependency>
<groupId>org.springframework</groupId>
@@ -249,101 +340,85 @@
</exclusions>
</dependency>
+
+ <!-- Other deps include Guice and ROME -->
+
<dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-spring-plugin</artifactId>
- <version>2.5.10.1</version>
+ <groupId>com.google.inject</groupId>
+ <artifactId>guice</artifactId>
+ <version>${guice.version}</version>
</dependency>
<dependency>
- <groupId>org.apache.struts</groupId>
- <artifactId>struts2-tiles-plugin</artifactId>
- <version>2.5.10.1</version>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-log4j12</artifactId>
+ <version>${slf4j.version}</version>
+ <scope>runtime</scope>
</dependency>
<dependency>
- <groupId>xml-security</groupId>
- <artifactId>xmlsec</artifactId>
- <version>1.3.0</version>
- </dependency>
-
- <!-- Java EE deps -->
-
- <dependency>
- <groupId>javax.servlet</groupId>
- <artifactId>jstl</artifactId>
- <version>1.2</version>
+ <groupId>com.rometools</groupId>
+ <artifactId>rome-fetcher</artifactId>
+ <version>${rome.version}</version>
+ <scope>compile</scope>
</dependency>
<dependency>
- <groupId>javax.mail</groupId>
- <artifactId>mail</artifactId>
- <version>1.4.7</version>
- <scope>provided</scope>
+ <groupId>com.rometools</groupId>
+ <artifactId>rome-propono</artifactId>
+ <version>${rome.version}</version>
+ <scope>compile</scope>
<exclusions>
<exclusion>
- <groupId>javax.activation</groupId>
- <artifactId>activation</artifactId>
+ <groupId>xmlrpc</groupId>
+ <artifactId>xmlrpc-common</artifactId>
+ </exclusion>
+ <exclusion>
+ <groupId>xmlrpc</groupId>
+ <artifactId>xmlrpc-client</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
- <groupId>javax.servlet.jsp</groupId>
- <artifactId>jsp-api</artifactId>
- <version>2.2</version>
- <scope>provided</scope>
- </dependency>
-
- <dependency>
- <groupId>commons-validator</groupId>
- <artifactId>commons-validator</artifactId>
- <version>1.4.0</version>
- <type>jar</type>
- </dependency>
- <dependency>
- <groupId>commons-httpclient</groupId>
- <artifactId>commons-httpclient</artifactId>
- <version>3.1</version>
- </dependency>
- <dependency>
- <groupId>commons-beanutils</groupId>
- <artifactId>commons-beanutils</artifactId>
- <version>1.9.2</version>
- </dependency>
- <dependency>
- <groupId>commons-codec</groupId>
- <artifactId>commons-codec</artifactId>
- <version>1.10</version>
- </dependency>
-
- <!-- WebJars deps -->
-
- <dependency>
<groupId>org.webjars</groupId>
<artifactId>webjars-servlet-2.x</artifactId>
- <version>1.5</version>
+ <version>${webjars.version}</version>
</dependency>
<dependency>
<groupId>org.webjars.npm</groupId>
<artifactId>angular</artifactId>
- <version>1.2.29</version>
+ <version>${angular.version}</version>
</dependency>
- <!-- test deps -->
+ <dependency>
+ <groupId>net.oauth.core</groupId>
+ <artifactId>oauth-provider</artifactId>
+ <scope>compile</scope>
+ <version>${oauth-core.version}</version>
+ </dependency>
+
+
+ <!-- Test deps -->
<dependency>
- <groupId>org.apache.derby</groupId>
- <artifactId>derbynet</artifactId>
- <version>${derby.version}</version>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.apache.ant</groupId>
<artifactId>ant</artifactId>
- <version>1.9.4</version>
+ <version>${ant.version}</version>
+ <scope>test</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.apache.derby</groupId>
+ <artifactId>derbynet</artifactId>
+ <version>${derby.version}</version>
<scope>test</scope>
</dependency>
@@ -354,11 +429,6 @@
<scope>test</scope>
</dependency>
- <dependency>
- <groupId>junit</groupId>
- <artifactId>junit</artifactId>
- <scope>test</scope>
- </dependency>
</dependencies>
<build>
@@ -370,7 +440,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-war-plugin</artifactId>
- <version>2.4</version>
+ <version>${maven-war.version}</version>
<configuration>
<attachClasses>true</attachClasses>
</configuration>
@@ -406,7 +476,7 @@
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
- <version>1.4.7</version>
+ <version>${java-mail.version}</version>
</dependency>
</dependencies>
</plugin>
@@ -463,7 +533,7 @@
<resources>
<resource>
<directory>src/main/resources</directory>
- <filtering>true</filtering>
+ <filtering>false</filtering>
</resource>
</resources>
</configuration>
@@ -538,7 +608,7 @@
<dependency>
<groupId>ant-contrib</groupId>
<artifactId>ant-contrib</artifactId>
- <version>1.0b3</version>
+ <version>${maven-antrun.version}</version>
<exclusions>
<exclusion>
<groupId>ant</groupId>
@@ -632,7 +702,7 @@
</resource>
<resource>
<!-- ensure version gets substitution -->
- <directory>${project.basedir}/src/main/resources</directory>
+ <directory>${project.basedir}/src/main/resources-filtered</directory>
<filtering>true</filtering>
<includes>
<include>roller-version.properties</include>
diff --git a/app/src/main/java/org/apache/roller/planet/business/PlanetManager.java b/app/src/main/java/org/apache/roller/planet/business/PlanetManager.java
index 730c922..deec197 100644
--- a/app/src/main/java/org/apache/roller/planet/business/PlanetManager.java
+++ b/app/src/main/java/org/apache/roller/planet/business/PlanetManager.java
@@ -25,6 +25,7 @@
import org.apache.roller.planet.pojos.SubscriptionEntry;
import org.apache.roller.planet.pojos.PlanetGroup;
import org.apache.roller.planet.pojos.Subscription;
+import org.apache.roller.weblogger.WebloggerException;
/**
@@ -178,5 +179,9 @@
Date endDate,
int offset,
int len) throws RollerException;
-
+
+ /**
+ * Add new PlanetGroup and add it to an existing planet.
+ */
+ void saveNewPlanetGroup(Planet planet, PlanetGroup planetGroup) throws WebloggerException;
}
diff --git a/app/src/main/java/org/apache/roller/planet/business/jpa/JPAPlanetManagerImpl.java b/app/src/main/java/org/apache/roller/planet/business/jpa/JPAPlanetManagerImpl.java
index ff2ab15..5a24a80 100644
--- a/app/src/main/java/org/apache/roller/planet/business/jpa/JPAPlanetManagerImpl.java
+++ b/app/src/main/java/org/apache/roller/planet/business/jpa/JPAPlanetManagerImpl.java
@@ -85,6 +85,10 @@
}
public void deleteGroup(PlanetGroup group) throws RollerException {
+
+ group.getPlanet().getGroups().remove(group);
+ strategy.store(group.getPlanet());
+
strategy.remove(group);
}
@@ -251,7 +255,8 @@
if (sub == null) {
throw new WebloggerException("subscription cannot be null");
}
- TypedQuery<SubscriptionEntry> q = strategy.getNamedQuery("SubscriptionEntry.getBySubscription", SubscriptionEntry.class);
+ TypedQuery<SubscriptionEntry> q = strategy.getNamedQuery(
+ "SubscriptionEntry.getBySubscription", SubscriptionEntry.class);
q.setParameter(1, sub);
if (offset != 0) {
q.setFirstResult(offset);
@@ -266,7 +271,8 @@
return getEntries(group, null, null, offset, len);
}
- public List<SubscriptionEntry> getEntries(PlanetGroup group, Date startDate, Date endDate, int offset, int len) throws RollerException {
+ public List<SubscriptionEntry> getEntries(
+ PlanetGroup group, Date startDate, Date endDate, int offset, int len) throws RollerException {
if (group == null) {
throw new WebloggerException("group cannot be null or empty");
@@ -319,6 +325,16 @@
return ret;
}
+
+ @Override
+ public void saveNewPlanetGroup(Planet planet, PlanetGroup planetGroup) throws WebloggerException {
+
+ planetGroup.setPlanet( planet );
+ strategy.store( planetGroup );
+
+ planet.getGroups().add( planetGroup );
+ strategy.store( planet );
+ }
}
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 abb2e08..afa97cf 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
@@ -33,6 +33,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.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.ParameterAware;
@@ -41,6 +42,7 @@
*
* Handles editing of planet global runtime properties.
*/
+// TODO: make this work @AllowedMethods({"execute","save"})
public class PlanetConfig extends PlanetUIAction implements ParameterAware {
private static Log log = LogFactory.getLog(PlanetConfig.class);
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 3edc03a..f65c480 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
@@ -22,13 +22,17 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.roller.planet.business.PlanetManager;
+import org.apache.roller.planet.pojos.Planet;
import org.apache.roller.planet.pojos.PlanetGroup;
+import org.apache.roller.weblogger.business.Weblogger;
import org.apache.roller.weblogger.business.WebloggerFactory;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Manage planet groups.
*/
+// TODO: make this work @AllowedMethods({"execute","save","delete"})
public class PlanetGroups extends PlanetUIAction {
private static Log log = LogFactory.getLog(PlanetGroups.class);
@@ -79,42 +83,47 @@
return LIST;
}
-
-
- /**
+
+
+ /**
* Save group.
*/
public String save() {
-
+
myValidate();
-
+
if (!hasActionErrors()) {
try {
+ PlanetManager planetManager = WebloggerFactory.getWeblogger().getPlanetManager();
+
+ Planet planet = getPlanet();
PlanetGroup planetGroup = getGroup();
- if(planetGroup == null) {
- log.debug("Adding New Group");
+
+ if (planetGroup == null) {
planetGroup = new PlanetGroup();
- planetGroup.setPlanet(getPlanet());
+ planetGroup.setPlanet(planet);
+ getBean().copyTo(planetGroup);
+
+ log.debug("Adding New Group: " + planetGroup.getHandle());
+ planetManager.saveNewPlanetGroup(getPlanet(), planetGroup);
+
} else {
- log.debug("Updating Existing Group");
+ log.debug("Updating Existing Group: " + planetGroup.getHandle());
+ getBean().copyTo(planetGroup);
+ planetManager.saveGroup(planetGroup);
}
- // copy in submitted data
- getBean().copyTo(planetGroup);
-
- // save and flush
- PlanetManager pmgr = WebloggerFactory.getWeblogger().getPlanetManager();
- pmgr.saveGroup(planetGroup);
WebloggerFactory.getWeblogger().flush();
-
addMessage("planetGroups.success.saved");
- } catch(Exception ex) {
+ setGroup(null);
+
+ } catch (Exception ex) {
log.error("Error saving planet group - " + getBean().getId(), ex);
addError("planetGroups.error.saved");
}
}
-
+
return LIST;
}
@@ -131,6 +140,9 @@
WebloggerFactory.getWeblogger().flush();
addMessage("planetSubscription.success.deleted");
+
+ setGroup(null);
+
} catch(Exception ex) {
log.error("Error deleting planet group - "+getBean().getId());
addError("Error deleting planet group");
diff --git a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetSubscriptions.java b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetSubscriptions.java
index 5063be5..899eaa2 100644
--- a/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetSubscriptions.java
+++ b/app/src/main/java/org/apache/roller/weblogger/planet/ui/PlanetSubscriptions.java
@@ -30,11 +30,13 @@
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.convention.annotation.AllowedMethods;
/**
* Manage planet group subscriptions, default group is "all".
*/
+// TODO: make this work @AllowedMethods({"execute","save","delete"})
public class PlanetSubscriptions extends PlanetUIAction {
private static final Log LOGGER = LogFactory.getLog(PlanetSubscriptions.class);
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 79a2783..e75f266 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
@@ -24,11 +24,13 @@
import org.apache.roller.weblogger.pojos.GlobalPermission;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Action for displaying rendering cache info.
*/
+// TODO: make this work @AllowedMethods({"execute"})
public class CacheInfo extends UIAction {
// map of stats to display
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 21b40dc..750a8f1 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
@@ -41,12 +41,14 @@
import org.apache.roller.weblogger.util.cache.CacheManager;
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;
/**
* Action for managing global set of comments.
*/
+// TODO: make this work @AllowedMethods({"query","delete","update"})
public class GlobalCommentManagement extends UIAction implements ServletRequestAware {
private static Log log = LogFactory.getLog(GlobalCommentManagement.class);
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 6f474b7..da71a41 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
@@ -39,6 +39,7 @@
import org.apache.roller.weblogger.pojos.RuntimeConfigProperty;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.ParameterAware;
import org.apache.struts2.interceptor.ServletRequestAware;
@@ -46,6 +47,7 @@
/**
* Action which handles editing of global configuration.
*/
+// TODO: make this work @AllowedMethods({"execute","save"})
public class GlobalConfig extends UIAction implements ParameterAware, ServletRequestAware {
private static Log log = LogFactory.getLog(GlobalConfig.class);
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 2769576..1b5d13c 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
@@ -26,10 +26,12 @@
import org.apache.roller.weblogger.business.pings.PingTargetManager;
import org.apache.roller.weblogger.pojos.PingTarget;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Add or modify a common ping target.
*/
+// TODO: make this work @AllowedMethods({"execute","save"})
public class PingTargetEdit extends UIAction {
private static Log log = LogFactory.getLog(PingTargetEdit.class);
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 1f8b487..fa7529a 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
@@ -29,10 +29,12 @@
import org.apache.roller.weblogger.business.pings.PingTargetManager;
import org.apache.roller.weblogger.pojos.PingTarget;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Admin action for managing global ping targets.
*/
+// TODO: make this work @AllowedMethods({"execute","enable","disable","delete","deleteConfirm"})
public class PingTargets extends UIAction {
private static Log log = LogFactory.getLog(PingTargets.class);
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 dce1f79..63613a5 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
@@ -25,11 +25,13 @@
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.pojos.GlobalPermission;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Action which displays user admin search page.
*/
+// TODO: make this work @AllowedMethods({"execute"})
public class UserAdmin extends UIAction {
public UserAdmin() {
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 cd73584..afdc522 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
@@ -39,12 +39,14 @@
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.ui.struts2.core.Register;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
* Action that allows an admin to modify a users profile.
*/
+// TODO: make this work @AllowedMethods({"execute","save","firstSave"})
public class UserEdit extends UIAction {
private static Log log = LogFactory.getLog(UserEdit.class);
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 10f918f..8795442 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
@@ -33,6 +33,7 @@
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.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.validation.SkipValidation;
import java.util.List;
@@ -41,6 +42,7 @@
/**
* Allows user to create a new website.
*/
+// TODO: make this work @AllowedMethods({"execute","save"})
public class CreateWeblog extends UIAction {
private static Log log = LogFactory.getLog(CreateWeblog.class);
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 b5becd2..e67cc85 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
@@ -31,12 +31,14 @@
import org.apache.roller.weblogger.business.startup.WebloggerStartup;
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.springframework.beans.factory.access.BootstrapException;
/**
* Walk user through install process.
*/
+// TODO: make this work @AllowedMethods({"execute","create","update","bootstrap"})
public class Install extends UIAction {
private static Log log = LogFactory.getLog(Install.class);
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 4485c7d..f0fbe76 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
@@ -21,6 +21,7 @@
import org.apache.roller.weblogger.config.AuthMethod;
import org.apache.roller.weblogger.config.WebloggerConfig;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Handle user logins.
@@ -33,6 +34,7 @@
*
* @see org.apache.roller.weblogger.ui.struts2.core.Register
*/
+// TODO: make this work @AllowedMethods({"execute"})
public class Login extends UIAction {
private String error = null;
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 ae48acc..9378018 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
@@ -29,11 +29,13 @@
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Allows user to view and pick from list of his/her websites.
*/
+// TODO: make this work @AllowedMethods({"execute","accept","decline"})
public class MainMenu extends UIAction {
private static Log log = LogFactory.getLog(MainMenu.class);
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
index f20c67d..f36e07b 100644
--- 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
@@ -22,6 +22,7 @@
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;
@@ -29,6 +30,7 @@
/**
* 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;
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
index 1d5d4d6..6b6fa51 100644
--- 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
@@ -26,12 +26,14 @@
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;
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 f9e1d63..37e01d5 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,12 +28,14 @@
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.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
* Allows user to edit his/her profile.
*/
+// TODO: make this work @AllowedMethods({"execute","save"})
public class Profile extends UIAction {
private static Log log = LogFactory.getLog(Profile.class);
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 138aadb..f3b906c 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
@@ -37,6 +37,7 @@
import org.apache.roller.weblogger.ui.core.security.CustomUserRegistry;
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.validation.SkipValidation;
@@ -49,6 +50,7 @@
*
* @see org.apache.roller.weblogger.ui.struts2.core.Login
*/
+// TODO: make this work @AllowedMethods({"execute","save","activate"})
public class Register extends UIAction implements ServletRequestAware {
private static Log log = LogFactory.getLog(Register.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Setup.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Setup.java
index f7ac6cb..0cd64fb 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Setup.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/core/Setup.java
@@ -28,11 +28,13 @@
import org.apache.roller.weblogger.pojos.RuntimeConfigProperty;
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Page used to display Roller install instructions.
*/
+// TODO: make this work @AllowedMethods({"execute","save"})
public class Setup extends UIAction {
private static final Log LOG = LogFactory.getLog(Setup.class);
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 725dcfd..852ec72 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,12 +27,14 @@
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.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
* Edit a new or existing bookmark (blogroll item).
*/
+// TODO: make this work @AllowedMethods({"execute","save"})
public class BookmarkEdit extends UIAction {
private static Log log = LogFactory.getLog(BookmarkEdit.class);
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 77b3daa..f695072 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
@@ -32,11 +32,13 @@
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.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
* List bookmarks and folders and allow for moving them around and deleting them.
*/
+// TODO: make this work @AllowedMethods({"execute","delete","deleteFolder","move","view","folderCreated"})
public class Bookmarks extends UIAction {
private static Log log = LogFactory.getLog(Bookmarks.class);
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 c2d7cd2..b225cc2 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
@@ -31,11 +31,13 @@
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.convention.annotation.AllowedMethods;
/**
* Import opml file into bookmarks folder.
*/
+// TODO: make this work @AllowedMethods({"execute","save"})
public final class BookmarksImport extends UIAction {
private static Log log = LogFactory.getLog(BookmarksImport.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Categories.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Categories.java
index ae6e7fa..dd9389f 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Categories.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Categories.java
@@ -28,10 +28,12 @@
import org.apache.roller.weblogger.pojos.WeblogCategory;
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Manage weblog categories.
*/
+// TODO: make this work @AllowedMethods({"execute","move"})
public class Categories extends UIAction {
private static Log log = LogFactory.getLog(Categories.class);
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 99fbc9f..9d2c517 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
@@ -30,12 +30,14 @@
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.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
* Edit a new or existing weblog category.
*/
+// TODO: make this work @AllowedMethods({"execute","save"})
public class CategoryEdit extends UIAction {
private static Log log = LogFactory.getLog(CategoryEdit.class);
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 c161b27..206e89b 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
@@ -32,11 +32,13 @@
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.convention.annotation.AllowedMethods;
/**
* Remove a category.
*/
+// TODO: make this work @AllowedMethods({"execute","remove","cancel"})
public class CategoryRemove extends UIAction {
private static Log log = LogFactory.getLog(CategoryRemove.class);
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 899009e..10c663a 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
@@ -47,10 +47,12 @@
import org.apache.roller.weblogger.util.I18nMessages;
import org.apache.roller.weblogger.util.MailUtil;
import org.apache.roller.weblogger.util.Utilities;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Action for managing weblog comments.
*/
+// TODO: make this work @AllowedMethods({"execute","query","delete","update"})
public class Comments extends UIAction {
private static final long serialVersionUID = -104973988372024709L;
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 b0530ad..9f15e2d 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
@@ -36,11 +36,13 @@
import org.apache.roller.weblogger.ui.struts2.pagers.EntriesPager;
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;
/**
* A list view of entries in a weblog.
*/
+// TODO: make this work @AllowedMethods({"execute"})
public class Entries extends UIAction {
private static Log log = LogFactory.getLog(Entries.class);
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 c3bb6ef..02a3677 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
@@ -23,12 +23,14 @@
import org.apache.roller.weblogger.business.MediaFileManager;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.pojos.MediaFile;
+import org.apache.struts2.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
* Prepares creation of a new weblog entry with an embedded pointer to a media file.
*/
@SuppressWarnings("serial")
+// TODO: make this work @AllowedMethods({"execute"})
public class EntryAddWithMediaFile extends MediaFileBase {
private static Log log = LogFactory.getLog(EntryAddWithMediaFile.class);
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 3d2461c..9ffcb2e 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
@@ -57,11 +57,13 @@
import org.apache.roller.weblogger.util.RollerMessages.RollerMessage;
import org.apache.roller.weblogger.util.Trackback;
import org.apache.roller.weblogger.util.TrackbackNotAllowedException;
+import org.apache.struts2.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
* Edit a new or existing entry.
*/
+// TODO: make this work @AllowedMethods({"execute","firstSave","saveDraft","publish","entryEdit","entryAdd"})
public final class EntryEdit extends UIAction {
private static Log log = LogFactory.getLog(EntryEdit.class);
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 b6832c4..64266ed 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
@@ -28,6 +28,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.convention.annotation.AllowedMethods;
import java.util.Collections;
import java.util.List;
@@ -35,6 +36,7 @@
/**
* Remove a weblog entry.
*/
+// TODO: make this work @AllowedMethods({"execute","remove"})
public class EntryRemove extends UIAction {
private static Log log = LogFactory.getLog(EntryRemove.class);
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 10a7201..141c1c2 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,12 +27,14 @@
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.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
* Edit a new or existing folder.
*/
+// TODO: make this work @AllowedMethods({"execute","save"})
public class FolderEdit extends UIAction {
private static Log log = LogFactory.getLog(FolderEdit.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Maintenance.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Maintenance.java
index a1d4ade..8b57dd9 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Maintenance.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/Maintenance.java
@@ -28,11 +28,13 @@
import org.apache.roller.weblogger.pojos.Weblog;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Allows user to perform maintenance operations such as flushing the page cache
* or re-indexing the search index.
*/
+// TODO: make this work @AllowedMethods({"execute","index","flushCache","reset"})
public class Maintenance extends UIAction {
private static Log log = LogFactory.getLog(Maintenance.class);
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 8c9e48b..dc75df8 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
@@ -36,12 +36,14 @@
import org.apache.roller.weblogger.util.RollerMessages;
import org.apache.roller.weblogger.util.RollerMessages.RollerMessage;
import org.apache.roller.weblogger.util.Utilities;
+import org.apache.struts2.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
* Adds a new media file.
*/
@SuppressWarnings("serial")
+// TODO: make this work @AllowedMethods({"execute","save"})
public class MediaFileAdd extends MediaFileBase {
private static Log log = LogFactory.getLog(MediaFileAdd.class);
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 8977ae3..f6045d4 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
@@ -29,12 +29,14 @@
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.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);
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 4a17fe3..4e90654 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
@@ -33,12 +33,14 @@
import org.apache.roller.weblogger.pojos.MediaFileDirectoryComparator.DirectoryComparatorType;
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.validation.SkipValidation;
/**
* Browse media files action.
*/
@SuppressWarnings("serial")
+// TODO: make this work @AllowedMethods({"execute"})
public class MediaFileImageChooser extends MediaFileBase {
private static Log log = LogFactory.getLog(MediaFileImageChooser.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageDim.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageDim.java
index cad891a..df5d2e7 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageDim.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MediaFileImageDim.java
@@ -23,12 +23,14 @@
import org.apache.roller.weblogger.business.MediaFileManager;
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.pojos.MediaFile;
+import org.apache.struts2.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
* Action class for choosing image dimensions.
*/
@SuppressWarnings("serial")
+// TODO: make this work @AllowedMethods({"execute"})
public class MediaFileImageDim extends MediaFileBase {
private static Log log = LogFactory.getLog(MediaFileImageDim.class);
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 4590748..62644c0 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,12 +37,14 @@
import org.apache.roller.weblogger.ui.struts2.pagers.MediaFilePager;
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.validation.SkipValidation;
/**
* View media files.
*/
@SuppressWarnings("serial")
+// TODO: make this work @AllowedMethods({"execute","view","search","delete","deleteSelected","deleteFolder","includeInGallery","moveSelected"})
public class MediaFileView extends MediaFileBase {
private static Log log = LogFactory.getLog(MediaFileView.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MemberResign.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MemberResign.java
index a38e0c4..9f01f31 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MemberResign.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/MemberResign.java
@@ -27,10 +27,12 @@
import org.apache.roller.weblogger.business.WebloggerFactory;
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Action for resigning from a weblog.
*/
+// TODO: make this work @AllowedMethods({"execute","resign"})
public class MemberResign extends UIAction {
private static Log log = LogFactory.getLog(MemberResign.class);
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 e0b7e1a..ee89d9a 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
@@ -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.Utilities;
+import org.apache.struts2.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.ParameterAware;
@@ -40,6 +41,7 @@
* TODO: fix bug in UserManager which doesn't remove permissions from the
* website.permissions collection when a permission is deleted.
*/
+// TODO: make this work @AllowedMethods({"execute","save"})
public class Members extends UIAction implements ParameterAware {
private static Log log = LogFactory.getLog(Members.class);
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 e8a17cf..46104b8 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
@@ -30,6 +30,7 @@
import org.apache.roller.weblogger.pojos.WeblogPermission;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.MailUtil;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
@@ -37,6 +38,7 @@
*
* TODO: handle 'disabled' result
*/
+// TODO: make this work @AllowedMethods({"execute","save","cancel"})
public class MembersInvite extends UIAction {
private static Log log = LogFactory.getLog(MembersInvite.class);
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 2ab252e..737a649 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
@@ -28,6 +28,7 @@
import org.apache.roller.weblogger.pojos.AutoPing;
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.xmlrpc.XmlRpcException;
import java.io.IOException;
import java.net.SocketException;
@@ -43,6 +44,7 @@
/**
* Actions for setting up automatic ping configuration for a weblog.
*/
+// TODO: make this work @AllowedMethods({"execute","enable","disable","pingNow"})
public class Pings extends UIAction {
private static Log log = LogFactory.getLog(Pings.class);
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 27d0b49..a206b05 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
@@ -37,10 +37,12 @@
import org.apache.roller.weblogger.pojos.WeblogTheme;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Action which handles editing for a weblog stylesheet override template.
*/
+// TODO: make this work @AllowedMethods({"execute","move","delete","revert"})
public class StylesheetEdit extends UIAction {
private static final long serialVersionUID = 4657591015852311907L;
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 9be3ba4..19d34ff 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
@@ -27,6 +27,7 @@
import org.apache.roller.weblogger.pojos.WeblogTemplate;
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.validation.SkipValidation;
import java.util.Date;
@@ -37,6 +38,7 @@
/**
* Action which handles editing for a single WeblogTemplate.
*/
+// TODO: make this work @AllowedMethods({"execute","move"})
public class TemplateEdit extends UIAction {
private static Log log = LogFactory.getLog(TemplateEdit.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateRemove.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateRemove.java
index 298e54b..4f9a82b 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateRemove.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplateRemove.java
@@ -29,10 +29,12 @@
import org.apache.roller.weblogger.pojos.WeblogTheme;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Remove a template.
*/
+// TODO: make this work @AllowedMethods({"execute","remove","cancel"})
public class TemplateRemove extends UIAction {
private static Log log = LogFactory.getLog(TemplateRemove.class);
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 cb5ef89..4793e11 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
@@ -31,6 +31,7 @@
import org.apache.roller.weblogger.pojos.WeblogTemplate;
import org.apache.roller.weblogger.pojos.WeblogTheme;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
+import org.apache.struts2.convention.annotation.AllowedMethods;
import java.util.ArrayList;
import java.util.Collections;
@@ -42,6 +43,7 @@
/**
* Templates listing page.
*/
+// TODO: make this work @AllowedMethods({"execute","add"})
public class Templates extends UIAction {
private static Log log = LogFactory.getLog(Templates.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplatesRemove.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplatesRemove.java
index e92db7f..7fd3e26 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplatesRemove.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/TemplatesRemove.java
@@ -32,10 +32,12 @@
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.Utilities;
import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Remove templates.
*/
+// TODO: make this work @AllowedMethods({"execute","remove","cancel"})
public class TemplatesRemove extends UIAction {
private static final long serialVersionUID = 895186156151331087L;
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 4d48abf..c603fdb 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
@@ -37,10 +37,12 @@
import org.apache.roller.weblogger.pojos.WeblogTemplate;
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
/**
* Action for controlling theme selection.
*/
+// TODO: make this work @AllowedMethods({"execute","save"})
public class ThemeEdit extends UIAction {
private static final long serialVersionUID = 4644653507344432426L;
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 a0a8fc0..bcc9f57 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
@@ -36,12 +36,14 @@
import org.apache.roller.weblogger.ui.struts2.util.UIAction;
import org.apache.roller.weblogger.util.Blacklist;
import org.apache.roller.weblogger.util.cache.CacheManager;
+import org.apache.struts2.convention.annotation.AllowedMethods;
import org.apache.struts2.interceptor.validation.SkipValidation;
/**
* Action for modifying weblog configuration.
*/
+// TODO: make this work @AllowedMethods({"execute","save"})
public class WeblogConfig extends UIAction {
private static Log log = LogFactory.getLog(WeblogConfig.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogRemove.java b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogRemove.java
index be2b4ef..b41a9ca 100644
--- a/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogRemove.java
+++ b/app/src/main/java/org/apache/roller/weblogger/ui/struts2/editor/WeblogRemove.java
@@ -23,11 +23,13 @@
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.convention.annotation.AllowedMethods;
/**
* Action for removing a weblog.
*/
+// TODO: make this work @AllowedMethods({"execute","remove"})
public class WeblogRemove extends UIAction {
private static Log log = LogFactory.getLog(WeblogRemove.class);
diff --git a/app/src/main/java/org/apache/roller/weblogger/util/PasswordUtility.java b/app/src/main/java/org/apache/roller/weblogger/util/PasswordUtility.java
index bec0388..4d567ca 100644
--- a/app/src/main/java/org/apache/roller/weblogger/util/PasswordUtility.java
+++ b/app/src/main/java/org/apache/roller/weblogger/util/PasswordUtility.java
@@ -214,7 +214,7 @@
}
/**
- * Reset user's password to specified value using specified algorythm (if needed)
+ * Reset user's password to specified value using specified algorithm (if needed)
*/
private static void resetPassword(
Connection con, String username, String password, String algorithm)
diff --git a/app/src/main/resources/roller-version.properties b/app/src/main/resources-filtered/roller-version.properties
similarity index 100%
rename from app/src/main/resources/roller-version.properties
rename to app/src/main/resources-filtered/roller-version.properties
diff --git a/app/src/main/resources/ApplicationResources.properties b/app/src/main/resources/ApplicationResources.properties
index 0a2f8c5..8a68c56 100644
--- a/app/src/main/resources/ApplicationResources.properties
+++ b/app/src/main/resources/ApplicationResources.properties
@@ -1179,6 +1179,8 @@
planetGroups.title=Title
planetGroups.handle=Handle
+planetGroups.subscriptions.tip=Edit the subscriptions in this Custom Group
+
planetGroups.success.saved=Saved group
planetGroups.error.saved=Error saving planet group - duplicate?
diff --git a/app/src/main/resources/log4j2.xml b/app/src/main/resources/log4j2.xml
new file mode 100644
index 0000000..6fcf939
--- /dev/null
+++ b/app/src/main/resources/log4j2.xml
@@ -0,0 +1,32 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
+<Configuration status="WARN">
+ <Appenders>
+ <Console name="Console" target="SYSTEM_OUT">
+ <PatternLayout pattern="%d{HH:mm:ss.SSS} [%t] %-5level %logger{36} - %msg%n"/>
+ </Console>
+ </Appenders>
+ <Loggers>
+ <Root level="error">
+ <AppenderRef ref="Console"/>
+ </Root>
+ <Logger name="org.apache.struts2" level="warn">
+ <AppenderRef ref="Console"/>
+ </Logger>
+ </Loggers>
+</Configuration>
diff --git a/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties b/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties
index aa3997f..785a893 100644
--- a/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties
+++ b/app/src/main/resources/org/apache/roller/weblogger/config/roller.properties
@@ -567,7 +567,7 @@
log4j.rootLogger=ERROR, roller
log4j.appender.roller=org.apache.log4j.DailyRollingFileAppender
-log4j.appender.roller.File=${env.CATALINA_HOME}/logs/roller.log
+log4j.appender.roller.File=${catalina.base}/logs/roller.log
log4j.appender.roller.layout=org.apache.log4j.PatternLayout
log4j.appender.roller.layout.ConversionPattern=%-5p %d{yyyy-MM-dd HH:mm:ss,SSS} %C{1}:%M - %m%n
diff --git a/app/src/main/resources/sql/510-to-520-migration.vm b/app/src/main/resources/sql/510-to-520-migration.vm
index a06e998..42dcecb 100644
--- a/app/src/main/resources/sql/510-to-520-migration.vm
+++ b/app/src/main/resources/sql/510-to-520-migration.vm
@@ -32,8 +32,8 @@
#expandTimestampNotNull('pingqueueentry' 'entrytime')
#expandTimestamp('pingtarget' 'lastsuccess')
-#expandTimestampNotNull('rag_entry' 'published')
#expandTimestamp('rag_entry' 'updated')
+#expandTimestampNotNull('rag_entry' 'published')
#expandTimestamp('rag_subscription' 'last_updated')
#expandTimestamp('roller_audit_log' 'change_time')
#expandTimestampNotNull('roller_comment' 'posttime')
diff --git a/app/src/main/resources/struts.xml b/app/src/main/resources/struts.xml
index fd24563..3c9a4c6 100644
--- a/app/src/main/resources/struts.xml
+++ b/app/src/main/resources/struts.xml
@@ -1,11 +1,12 @@
+<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE struts PUBLIC
- "-//Apache Software Foundation//DTD Struts Configuration 2.3//EN"
- "http://struts.apache.org/dtds/struts-2.3.dtd">
+ "-//Apache Software Foundation//DTD Struts Configuration 2.5//EN"
+ "http://struts.apache.org/dtds/struts-2.5.dtd">
<struts>
-
+
<!-- Weblogger default package -->
<package name="weblogger" namespace="/roller-ui" extends="struts-default">
-
+
<!-- Define Tiles result type -->
<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult" />
@@ -71,12 +72,18 @@
<!-- use our own interceptor stack which extends the default stack -->
<default-interceptor-ref name="rollerStack"/>
-
<!-- results made available to all actions -->
<global-results>
<result name="access-denied" type="tiles">.denied</result>
</global-results>
-
+
+ <global-allowed-methods>
+ accept,
+ activate,
+ decline,
+ execute
+ </global-allowed-methods>
+
<!-- Simple actions which basically just replace the global-forwards from
the old struts 1 config. this is the only way to do it in struts 2 -->
<action name="home">
@@ -102,64 +109,88 @@
<result type="tiles">.Login</result>
</action>
- <action name="register!*" method="{1}"
+ <action name="register"
class="org.apache.roller.weblogger.ui.struts2.core.Register">
<result name="input" type="tiles">.Register</result>
<result name="disabled" type="tiles">.GenericError</result>
<result name="success" type="tiles">.Welcome</result>
</action>
- <action name="profile!*" method="{1}"
+ <action name="profile"
class="org.apache.roller.weblogger.ui.struts2.core.Profile">
<result name="input" type="tiles">.Profile</result>
<result name="cancel" type="redirectAction">menu</result>
<result name="success" type="tiles">.Profile</result>
</action>
- <action name="oauthKeys!*" method="{1}"
+ <action name="oauthKeys"
class="org.apache.roller.weblogger.ui.struts2.core.OAuthKeys">
<result name="success" type="tiles">.OAuthKeys</result>
</action>
- <action name="oauthAuthorize!*" method="{1}"
+ <action name="oauthAuthorize"
class="org.apache.roller.weblogger.ui.struts2.core.OAuthAuthorize">
<result name="success" type="tiles">.OAuthAuthorize</result>
</action>
- <action name="createWeblog!*" method="{1}"
+ <action name="createWeblog"
class="org.apache.roller.weblogger.ui.struts2.core.CreateWeblog">
<result name="input" type="tiles">.CreateWeblog</result>
<result name="disabled" type="tiles">.GenericError</result>
<result name="success" type="chain">menu</result>
</action>
- <action name="menu!*" method="{1}"
+ <action name="menu"
class="org.apache.roller.weblogger.ui.struts2.core.MainMenu">
<result type="tiles">.MainMenu</result>
</action>
-
+
</package>
<!-- Weblogger install/bootstrap actions -->
- <package name="weblogger-install" namespace="/roller-ui/install" extends="weblogger">
-
+ <package name="weblogger-install" namespace="/roller-ui/install" extends="weblogger" >
+
+ <global-allowed-methods>
+ execute,
+ create,
+ update,
+ bootstrap
+ </global-allowed-methods>
+
<action name="install"
class="org.apache.roller.weblogger.ui.struts2.core.Install">
<result name="database_error" type="tiles">.DatabaseError</result>
<result name="create_database" type="tiles">.CreateDatabase</result>
<result name="upgrade_database" type="tiles">.UpgradeDatabase</result>
<result name="bootstrap" type="tiles">.Bootstrap</result>
- <result name="success" type="chain">home</result>
+ <result name="success" type="chain">
+ <param name="actionName">home</param>
+ <param name="namespace">/roller-ui</param>
+ </result>
</action>
</package>
<!-- Weblogger Admin UI (includes planet) -->
- <package name="weblogger-admin" namespace="/roller-ui/admin" extends="weblogger">
+ <package name="weblogger-admin" namespace="/roller-ui/admin" extends="weblogger" >
+
+ <global-allowed-methods>
+ clear,
+ disable,
+ delete,
+ deleteConfirm,
+ enable,
+ execute,
+ firstSave,
+ save,
+ query,
+ delete,
+ update
+ </global-allowed-methods>
- <action name="globalConfig!*" method="{1}"
+ <action name="globalConfig"
class="org.apache.roller.weblogger.ui.struts2.admin.GlobalConfig">
<result name="success" type="tiles">.GlobalConfig</result>
</action>
@@ -171,7 +202,7 @@
<result name="input" type="tiles">.UserAdmin</result>
</action>
- <action name="createUser!*" method="{1}"
+ <action name="createUser"
class="org.apache.roller.weblogger.ui.struts2.admin.UserEdit">
<param name="actionName">createUser</param>
<param name="pageTitle">userAdmin.title.createNewUser</param>
@@ -182,7 +213,7 @@
</result>
</action>
- <action name="modifyUser!*" method="{1}"
+ <action name="modifyUser"
class="org.apache.roller.weblogger.ui.struts2.admin.UserEdit">
<param name="actionName">modifyUser</param>
<param name="pageTitle">userAdmin.title.editUser</param>
@@ -193,18 +224,18 @@
</result>
</action>
- <action name="globalCommentManagement!*" method="{1}"
+ <action name="globalCommentManagement"
class="org.apache.roller.weblogger.ui.struts2.admin.GlobalCommentManagement">
<result name="list" type="tiles">.GlobalCommentManagement</result>
</action>
- <action name="commonPingTargets!*" method="{1}"
+ <action name="commonPingTargets"
class="org.apache.roller.weblogger.ui.struts2.admin.PingTargets">
<result name="list" type="tiles">.PingTargets</result>
<result name="confirm" type="tiles">.PingTargetConfirm</result>
</action>
- <action name="commonPingTargetAdd!*" method="{1}"
+ <action name="commonPingTargetAdd"
class="org.apache.roller.weblogger.ui.struts2.admin.PingTargetEdit">
<param name="actionName">commonPingTargetAdd</param>
<param name="pageTitle">pingTarget.addTarget</param>
@@ -212,7 +243,7 @@
<result name="success" type="chain">commonPingTargets</result>
</action>
- <action name="commonPingTargetEdit!*" method="{1}"
+ <action name="commonPingTargetEdit"
class="org.apache.roller.weblogger.ui.struts2.admin.PingTargetEdit">
<param name="actionName">commonPingTargetEdit</param>
<param name="pageTitle">pingTarget.editTarget</param>
@@ -221,23 +252,23 @@
<result name="error" type="chain">commonPingTargets</result>
</action>
- <action name="cacheInfo!*" method="{1}"
+ <action name="cacheInfo"
class="org.apache.roller.weblogger.ui.struts2.admin.CacheInfo">
<result name="success" type="tiles">.CacheInfo</result>
</action>
- <action name="planetConfig!*" method="{1}"
+ <action name="planetConfig"
class="org.apache.roller.weblogger.planet.ui.PlanetConfig">
<result name="input" type="tiles">.PlanetConfig</result>
</action>
- <action name="planetSubscriptions!*" method="{1}"
+ <action name="planetSubscriptions"
class="org.apache.roller.weblogger.planet.ui.PlanetSubscriptions">
<result name="list" type="tiles">.PlanetSubscriptions</result>
</action>
- <action name="planetGroups!*" method="{1}"
+ <action name="planetGroups"
class="org.apache.roller.weblogger.planet.ui.PlanetGroups">
<result name="list" type="tiles">.PlanetGroups</result>
</action>
@@ -245,9 +276,40 @@
<!-- Weblogger Authoring UI -->
- <package name="weblogger-authoring" namespace="/roller-ui/authoring" extends="weblogger">
+ <package name="weblogger-authoring" namespace="/roller-ui/authoring" extends="weblogger" >
- <action name="mediaFileAdd!*" method="{1}"
+ <global-allowed-methods>
+ add,
+ cancel,
+ createNewDirectory,
+ execute,
+ delete,
+ deleteConfirm,
+ deleteFolder,
+ deleteSelected,
+ disable,
+ enable,
+ entryAdd,
+ entryEdit,
+ firstSave,
+ folderCreated,
+ flushCache,
+ includeInGallery,
+ moveSelected,
+ pingNow,
+ publish,
+ query,
+ remove,
+ revert,
+ reset,
+ save,
+ saveDraft,
+ search,
+ update,
+ view
+ </global-allowed-methods>
+
+ <action name="mediaFileAdd"
class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileAdd">
<result name="input" type="tiles">.MediaFileAdd</result>
<result name="success" type="tiles">.MediaFileAddSuccess</result>
@@ -258,36 +320,36 @@
</result>
</action>
- <action name="mediaFileEdit!*" method="{1}"
+ <action name="mediaFileEdit"
class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileEdit">
<result name="input" type="tiles">.MediaFileEdit</result>
<result name="success" type="tiles">.MediaFileEditSuccess</result>
</action>
- <action name="mediaFileAddExternalInclude!*" method="{1}"
+ <action name="mediaFileAddExternalInclude"
class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileEdit">
<result name="input" type="tiles">.MediaFileAddExternalInclude</result>
<result name="success" type="tiles">.MediaFileAddExternalInclude</result>
<result name="error" type="tiles">.MediaFileAddExternalInclude</result>
</action>
- <action name="mediaFileView!*" method="{1}"
+ <action name="mediaFileView"
class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileView">
<result name="success" type="tiles">.MediaFileView</result>
<result name="success.json" type="dispatcher">/WEB-INF/jsps/editor/MediaFileViewLight.jsp</result>
</action>
- <action name="mediaFileImageDim!*" method="{1}"
+ <action name="mediaFileImageDim"
class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileImageDim">
<result name="success" type="tiles">.MediaFileImageDimension</result>
</action>
- <action name="entryAddWithMediaFile!*" method="{1}"
+ <action name="entryAddWithMediaFile"
class="org.apache.roller.weblogger.ui.struts2.editor.EntryAddWithMediaFile">
<result name="success" type="chain">entryAdd</result>
</action>
- <action name="entryAdd!*" method="{1}"
+ <action name="entryAdd"
class="org.apache.roller.weblogger.ui.struts2.editor.EntryEdit">
<param name="actionName">entryAdd</param>
<param name="pageTitle">weblogEdit.title.newEntry</param>
@@ -299,24 +361,30 @@
</result>
</action>
- <action name="entryEdit!*" method="{1}"
+ <action name="entryEdit"
class="org.apache.roller.weblogger.ui.struts2.editor.EntryEdit">
<param name="actionName">entryEdit</param>
<param name="pageTitle">weblogEdit.title.editEntry</param>
<result name="input" type="tiles">.EntryEdit</result>
- <result name="error" type="chain">menu</result>
+ <result name="error" type="chain">
+ <param name="actionName">menu</param>
+ <param name="namespace">/roller-ui</param>
+ </result>
</action>
- <action name="entryRemove!*" method="{1}"
+ <action name="entryRemove"
class="org.apache.roller.weblogger.ui.struts2.editor.EntryRemove">
<param name="actionName">entryRemove</param>
<result name="input" type="tiles">.EntryRemove</result>
- <result name="error" type="chain">menu</result>
+ <result name="error" type="chain">
+ <param name="actionName">menu</param>
+ <param name="namespace">/roller-ui</param>
+ </result>
<result name="success" type="chain">entryAdd</result>
</action>
<!-- Below activated by Entries.jsp and EntryRemove.jsp, kept separate from
- entryRemove!* above as return pages are different, both in the confirm delete
+ entryRemove above as return pages are different, both in the confirm delete
and cancel delete scenarios.
Note the different actionName parameters. The actionName is used to determine
@@ -325,11 +393,14 @@
to return to the appropriate pages based on the actionName. See Struts2
StaticParametersInterceptor javadoc for more info on static parameters.
-->
- <action name="entryRemoveViaList!*" method="{1}"
+ <action name="entryRemoveViaList"
class="org.apache.roller.weblogger.ui.struts2.editor.EntryRemove">
<param name="actionName">entryRemoveViaList</param>
<result name="input" type="tiles">.EntryRemove</result>
- <result name="error" type="chain">menu</result>
+ <result name="error" type="chain">
+ <param name="actionName">menu</param>
+ <param name="namespace">/roller-ui</param>
+ </result>
<result name="success" type="chain">entries</result>
</action>
@@ -338,17 +409,17 @@
<result name="list" type="tiles">.Entries</result>
</action>
- <action name="comments!*" method="{1}"
+ <action name="comments"
class="org.apache.roller.weblogger.ui.struts2.editor.Comments">
<result name="list" type="tiles">.Comments</result>
</action>
- <action name="categories!*" method="{1}"
+ <action name="categories"
class="org.apache.roller.weblogger.ui.struts2.editor.Categories">
<result name="list" type="tiles">.Categories</result>
</action>
- <action name="categoryAdd!*" method="{1}"
+ <action name="categoryAdd"
class="org.apache.roller.weblogger.ui.struts2.editor.CategoryEdit">
<param name="actionName">categoryAdd</param>
<param name="pageTitle">categoryForm.add.title</param>
@@ -357,7 +428,7 @@
<result name="error" type="chain">categories</result>
</action>
- <action name="categoryEdit!*" method="{1}"
+ <action name="categoryEdit"
class="org.apache.roller.weblogger.ui.struts2.editor.CategoryEdit">
<param name="actionName">categoryEdit</param>
<param name="pageTitle">categoryForm.edit.title</param>
@@ -369,7 +440,7 @@
</result>
</action>
- <action name="categoryRemove!*" method="{1}"
+ <action name="categoryRemove"
class="org.apache.roller.weblogger.ui.struts2.editor.CategoryRemove">
<result name="input" type="tiles">.CategoryRemove</result>
<result name="cancel" type="redirectAction">
@@ -379,12 +450,12 @@
<result name="success" type="chain">categories</result>
</action>
- <action name="bookmarks!*" method="{1}"
+ <action name="bookmarks"
class="org.apache.roller.weblogger.ui.struts2.editor.Bookmarks">
<result name="list" type="tiles">.Bookmarks</result>
</action>
- <action name="bookmarkAdd!*" method="{1}"
+ <action name="bookmarkAdd"
class="org.apache.roller.weblogger.ui.struts2.editor.BookmarkEdit">
<param name="actionName">bookmarkAdd</param>
<param name="pageTitle">bookmarkForm.add.title</param>
@@ -393,7 +464,7 @@
<result name="error" type="chain">bookmarks</result>
</action>
- <action name="bookmarkEdit!*" method="{1}"
+ <action name="bookmarkEdit"
class="org.apache.roller.weblogger.ui.struts2.editor.BookmarkEdit">
<param name="actionName">bookmarkEdit</param>
<param name="pageTitle">bookmarkForm.edit.title</param>
@@ -407,13 +478,13 @@
<result name="error" type="chain">bookmarkEdit</result>
</action>
- <action name="bookmarksImport!*" method="{1}"
+ <action name="bookmarksImport"
class="org.apache.roller.weblogger.ui.struts2.editor.BookmarksImport">
<result name="input" type="tiles">.BookmarksImport</result>
<result name="success" type="chain">bookmarks</result>
</action>
- <action name="folderAdd!*" method="{1}"
+ <action name="folderAdd"
class="org.apache.roller.weblogger.ui.struts2.editor.FolderEdit">
<param name="actionName">folderAdd</param>
<param name="pageTitle">folderForm.add.title</param>
@@ -427,7 +498,7 @@
<result name="error" type="chain">bookmarks</result>
</action>
- <action name="folderEdit!*" method="{1}"
+ <action name="folderEdit"
class="org.apache.roller.weblogger.ui.struts2.editor.FolderEdit">
<param name="actionName">folderEdit</param>
<param name="pageTitle">folderForm.edit.title</param>
@@ -441,39 +512,42 @@
<result name="error" type="chain">bookmarks</result>
</action>
- <action name="weblogConfig!*" method="{1}"
+ <action name="weblogConfig"
class="org.apache.roller.weblogger.ui.struts2.editor.WeblogConfig">
<result name="input" type="tiles">.WeblogConfig</result>
</action>
- <action name="weblogRemove!*" method="{1}"
+ <action name="weblogRemove"
class="org.apache.roller.weblogger.ui.struts2.editor.WeblogRemove">
<result name="confirm" type="tiles">.WeblogRemoveConfirm</result>
- <result name="success" type="chain">menu</result>
+ <result name="success" type="chain">
+ <param name="actionName">menu</param>
+ <param name="namespace">/roller-ui</param>
+ </result>
</action>
- <action name="themeEdit!*" method="{1}"
+ <action name="themeEdit"
class="org.apache.roller.weblogger.ui.struts2.editor.ThemeEdit">
<result name="input" type="tiles">.ThemeEdit</result>
</action>
- <action name="stylesheetEdit!*" method="{1}"
+ <action name="stylesheetEdit"
class="org.apache.roller.weblogger.ui.struts2.editor.StylesheetEdit">
<result name="input" type="tiles">.StylesheetEdit</result>
</action>
- <action name="templates!*" method="{1}"
+ <action name="templates"
class="org.apache.roller.weblogger.ui.struts2.editor.Templates">
<result name="list" type="tiles">.Templates</result>
</action>
- <action name="templateEdit!*" method="{1}"
+ <action name="templateEdit"
class="org.apache.roller.weblogger.ui.struts2.editor.TemplateEdit">
<result name="list" type="chain">templates</result>
<result name="input" type="tiles">.TemplateEdit</result>
</action>
- <action name="templateRemove!*" method="{1}"
+ <action name="templateRemove"
class="org.apache.roller.weblogger.ui.struts2.editor.TemplateRemove">
<result name="confirm" type="tiles">.TemplateRemove</result>
<result name="cancel" type="redirectAction">
@@ -483,7 +557,7 @@
<result name="success" type="chain">templates</result>
</action>
- <action name="templatesRemove!*" method="{1}"
+ <action name="templatesRemove"
class="org.apache.roller.weblogger.ui.struts2.editor.TemplatesRemove">
<result name="input" type="tiles">.TemplatesRemove</result>
<result name="confirm" type="tiles">.TemplatesRemove</result>
@@ -495,15 +569,15 @@
<result name="error" type="chain">templates</result>
</action>
- <action name="members!*" method="{1}"
+ <action name="members"
class="org.apache.roller.weblogger.ui.struts2.editor.Members">
<result name="list" type="tiles">.Members</result>
</action>
- <action name="invite!*" method="{1}"
+ <action name="invite"
class="org.apache.roller.weblogger.ui.struts2.editor.MembersInvite">
<result name="input" type="tiles">.MembersInvite</result>
- <result name="disabled" type="tiles">.disabled</result>
+ <!-- <result name="disabled" type="tiles">.disabled</result> -->
<result name="success" type="chain">members</result>
<result name="cancel" type="redirectAction">
<param name="actionName">members</param>
@@ -511,19 +585,25 @@
</result>
</action>
- <action name="memberResign!*" method="{1}"
+ <action name="memberResign"
class="org.apache.roller.weblogger.ui.struts2.editor.MemberResign">
<result name="input" type="tiles">.MemberResign</result>
- <result name="error" type="chain">menu</result>
- <result name="success" type="chain">menu</result>
+ <result name="error" type="chain">
+ <param name="actionName">menu</param>
+ <param name="namespace">/roller-ui</param>
+ </result>
+ <result name="success" type="chain">
+ <param name="actionName">menu</param>
+ <param name="namespace">/roller-ui</param>
+ </result>
</action>
- <action name="pings!*" method="{1}"
+ <action name="pings"
class="org.apache.roller.weblogger.ui.struts2.editor.Pings">
<result name="list" type="tiles">.Pings</result>
</action>
- <action name="maintenance!*" method="{1}"
+ <action name="maintenance"
class="org.apache.roller.weblogger.ui.struts2.editor.Maintenance">
<result name="success" type="tiles">.Maintenance</result>
</action>
@@ -532,9 +612,13 @@
<!-- Weblogger Authoring UI - overlay pages-->
- <package name="weblogger-authoring-overlay" namespace="/roller-ui/authoring/overlay" extends="weblogger-authoring">
+ <package name="weblogger-authoring-overlay" namespace="/roller-ui/authoring/overlay" extends="weblogger-authoring" >
- <action name="mediaFileAdd!*" method="{1}"
+ <global-allowed-methods>
+ execute,save
+ </global-allowed-methods>
+
+ <action name="mediaFileAdd"
class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileAdd">
<param name="overlayMode">true</param>
<result name="input" type="tiles">.MediaFileAddInclude</result>
@@ -542,7 +626,7 @@
<result name="error" type="tiles">.MediaFileAddInclude</result>
</action>
- <action name="mediaFileImageChooser!*" method="{1}"
+ <action name="mediaFileImageChooser"
class="org.apache.roller.weblogger.ui.struts2.editor.MediaFileImageChooser">
<param name="overlayMode">true</param>
<result name="input" type="tiles">.MediaFileImageChooser</result>
diff --git a/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroups.jsp b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroups.jsp
index 420cbd0..f518ac6 100644
--- a/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroups.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/admin/PlanetGroups.jsp
@@ -33,13 +33,13 @@
<s:hidden name="bean.id" />
<div class="formrow">
- <label for="title" class="formrow" /><s:text name="planetGroups.title" /></label>
+ <label for="bean.title" class="formrow" /><s:text name="planetGroups.title" /></label>
<s:textfield name="bean.title" size="40" maxlength="255" />
<img src="<s:url value="/images/help.png"/>" alt="help" title='<s:text name="planetGroups.tip.title" />' />
</div>
<div class="formrow">
- <label for="handle" class="formrow" /><s:text name="planetGroups.handle" /></label>
+ <label for="bean.handle" class="formrow" /><s:text name="planetGroups.handle" /></label>
<s:textfield name="bean.handle" size="40" maxlength="255" />
<img src="<s:url value="/images/help.png"/>" alt="help" title='<s:text name="planetGroups.tip.handle" />' />
</div>
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp b/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp
index e233946..2d615e5 100644
--- a/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/core/CreateWeblog.jsp
@@ -42,19 +42,19 @@
<table class="formtable">
<tr>
- <td class="label"><label for="name" /><s:text name="generic.name" /></label></td>
+ <td class="label"><label for="name"><s:text name="generic.name" /></label></td>
<td class="field"><s:textfield name="bean.name" size="30" maxlength="30" /></td>
<td class="description"><s:text name="createWebsite.tip.name" /></td>
</tr>
<tr>
- <td class="label"><label for="description" /><s:text name="generic.tagline" /></td>
+ <td class="label"><label for="description"><s:text name="generic.tagline" /></td>
<td class="field"><s:textfield name="bean.description" size="40" maxlength="255" /></td>
<td class="description"><s:text name="createWebsite.tip.description" /></td>
</tr>
<tr>
- <td class="label"><label for="handle" /><s:text name="createWebsite.handle" /></label></td>
+ <td class="label"><label for="handle"><s:text name="createWebsite.handle" /></label></td>
<td class="field">
<s:textfield name="bean.handle" size="30" maxlength="30" onkeyup="handlePreview(this)" /><br />
<span style="text-size:70%">
@@ -66,7 +66,7 @@
</tr>
<tr>
- <td class="label"><label for="emailAddress" /><s:text name="createWebsite.emailAddress" /></label></td>
+ <td class="label"><label for="emailAddress"><s:text name="createWebsite.emailAddress" /></label></td>
<td class="field"><s:textfield name="bean.emailAddress" size="40" maxlength="50" /></td>
<td class="description"><s:text name="createWebsite.tip.email" /></td>
</tr>
@@ -80,7 +80,7 @@
</tr>
<tr>
- <td class="label"><label for="timeZone" /><s:text name="createWebsite.timeZone" /></label></td>
+ <td class="label"><label for="timeZone"><s:text name="createWebsite.timeZone" /></label></td>
<td class="field">
<s:select name="bean.timeZone" size="1" list="timeZonesList" />
</td>
@@ -88,7 +88,7 @@
</tr>
<tr>
- <td class="label"><label for="theme" /><s:text name="createWebsite.theme" /></label></td>
+ <td class="label"><label for="theme"><s:text name="createWebsite.theme" /></label></td>
<td class="field" ng-app="themeSelectModule" ng-controller="themeController">
<select id="themeSelector" name="bean.theme" size="1"
ng-model="selectedTheme" ng-options="theme as theme.name for theme in themes track by theme.id"></select>
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/Login.jsp b/app/src/main/webapp/WEB-INF/jsps/core/Login.jsp
index 738e0ba..bf9914d 100644
--- a/app/src/main/webapp/WEB-INF/jsps/core/Login.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/core/Login.jsp
@@ -34,8 +34,6 @@
}
%>
-<p>L'utilisateur a été invité avec succés</p>
-
<s:if test="authMethod == 'OPENID' || authMethod == 'DB_OPENID'">
<p><s:text name="loginPage.openIdPrompt" /></p>
diff --git a/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp b/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp
index 76e83d7..eb565f8 100644
--- a/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/core/MainMenu.jsp
@@ -20,7 +20,7 @@
<%-- PROMPT: Welcome... you have no blog --%>
<s:if test="existingPermissions.isEmpty && pendingPermissions.isEmpty">
<p><s:text name="yourWebsites.prompt.noBlog" />
- <a href="<s:url action="createWeblog"/>"><s:text name="yourWebsites.createOne" /></a></p>
+ <a id="createWeblogLink" href="<s:url action="createWeblog"/>"><s:text name="yourWebsites.createOne" /></a></p>
</s:if>
<%-- PROMPT: You have invitation(s) --%>
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/EntrySidebar.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/EntrySidebar.jsp
index 58649a7..2bb3b35 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/EntrySidebar.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/EntrySidebar.jsp
@@ -26,7 +26,7 @@
<h3><s:text name="weblogEdit.comments" /></h3>
<s:if test="bean.commentCount > 0">
- <s:url action="comments" id="commentsURL">
+ <s:url action="comments" var="commentsURL">
<s:param name="bean.entryId" value="bean.id" />
<s:param name="weblog" value="weblog" />
</s:url>
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp
index 42f3b8e..1214149 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileAddSuccess.jsp
@@ -80,7 +80,7 @@
<%-- checkboxed list of images uploaded --%>
<table class="mediaFileTable">
- <s:iterator value="newImages" id="newImage">
+ <s:iterator value="newImages" var="newImage">
<tr>
<td width="5%">
<%-- checkbox for file --%>
@@ -122,7 +122,7 @@
<%-- checkboxed list of other files uploaded --%>
<table class="mediaFileTable">
- <s:iterator value="newFiles" id="newFile">
+ <s:iterator value="newFiles" var="newFile">
<tr>
<td width="20%">
<%-- radio button for file --%>
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp
index 474e674..670eaa6 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileEdit.jsp
@@ -77,20 +77,23 @@
</td>
</tr>
- <tr>
+ <tr>
<td class="entryEditFormLabel">
- <label for="status"><s:text name="mediaFileEdit.permalink" /></label>
+ <label for="status"><s:text name="mediaFileEdit.permalink"/></label>
</td>
<td>
- <a href='<s:text name="bean.permalink" />' target="_blank"
+ <s:url var="linkIconURL" value="/images/link.png"></s:url>
+
+ <a href='<s:property value="bean.permalink" />' target="_blank"
title='<s:text name="mediaFileEdit.linkTitle" />'>
- <s:url var="linkIconURL" value="/images/link.png"></s:url>
- <img border="0" src='<s:property value="%{linkIconURL}" />'
- style="padding:2px 2px;" alt="link" />
+ <img border="0" src='<s:property value="%{linkIconURL}" />' style="padding:2px 2px;" alt="link"/>
</a>
- <input type="text" id="clip_text" size="50" style="width:90%" value='<s:text name="bean.permalink" />' readonly />
+
+ <input type="text" id="clip_text" size="50" style="width:90%"
+ value='<s:property value="bean.permalink" />' readonly/>
+
</td>
- </tr>
+ </tr>
<tr>
<td class="entryEditFormLabel">
@@ -158,8 +161,8 @@
<label for="originalPath"><s:text name="mediaFileEdit.originalPath" /></label>
</td>
<td>
- <div id="fileControldiv" class="miscControl">
- <s:textfield name="bean.originalPath" size="30" maxlength="100" tabindex="3" />
+ <div id="originalPathdiv" class="miscControl">
+ <s:textfield name="bean.originalPath" id="originalPath" size="30" maxlength="100" tabindex="3" />
<br />
</div>
</td>
diff --git a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp
index eb90e11..163a869 100644
--- a/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp
+++ b/app/src/main/webapp/WEB-INF/jsps/editor/MediaFileView.jsp
@@ -209,7 +209,7 @@
<s:else>
<p class="subtitle">
- <s:text name="mediaFileView.folderName"/>: <s:text name="currentDirectory.name" />
+ <s:text name="mediaFileView.folderName"/>: <s:property value="%{currentDirectory.name}" />
</p>
<p class="pagetip">
<s:text name="mediaFileView.dirPageTip" />
diff --git a/assembly-release/pom.xml b/assembly-release/pom.xml
index 5d4281a..77dac0d 100644
--- a/assembly-release/pom.xml
+++ b/assembly-release/pom.xml
@@ -22,7 +22,7 @@
<parent>
<groupId>org.apache.roller</groupId>
<artifactId>roller-project</artifactId>
- <version>5.2.0-SNAPSHOT</version>
+ <version>5.2.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
@@ -33,7 +33,7 @@
<description>Assembles Roller into a distribution package</description>
<!--
- Check the README.txt in the Roller base folder for
+ Check the README.md in the Roller base folder for
information on creating the Roller distribution files.
-->
<build>
diff --git a/assembly-release/sign-release.sh b/assembly-release/sign-release.sh
old mode 100644
new mode 100755
index a385590..77fdd59
--- a/assembly-release/sign-release.sh
+++ b/assembly-release/sign-release.sh
@@ -1,8 +1,18 @@
+#!/usr/bin/env bash
+
export rcstring=""
export vstring="5.2.0"
-gpg --armor --detach-sig target/roller-release-${vstring}${rcstring}-standard.tar.gz
-gpg --armor --detach-sig target/roller-release-${vstring}${rcstring}-standard.zip
+# for rc releases we rename the release files
+if [ rcstring != "" ]; then
+ mv target/roller-release-${vstring}-source.tar.gz target/roller-release-${vstring}${rcstring}-source.tar.gz
+ mv target/roller-release-${vstring}-source.zip target/roller-release-${vstring}${rcstring}-source.zip
+ mv target/roller-release-${vstring}-standard.tar.gz target/roller-release-${vstring}${rcstring}-standard.tar.gz
+ mv target/roller-release-${vstring}-standard.zip target/roller-release-${vstring}${rcstring}-standard.zip
+fi
+
+gpg --armor --detach-sig target/roller-release-${vstring}${rcstring}-standard.tar.gz
+gpg --armor --detach-sig target/roller-release-${vstring}${rcstring}-standard.zip
gpg --armor --detach-sig target/roller-release-${vstring}${rcstring}-source.tar.gz
gpg --armor --detach-sig target/roller-release-${vstring}${rcstring}-source.zip
diff --git a/assembly-release/src/main/assembly/source.xml b/assembly-release/src/main/assembly/source.xml
index aec3510..ea36aeb 100644
--- a/assembly-release/src/main/assembly/source.xml
+++ b/assembly-release/src/main/assembly/source.xml
@@ -30,19 +30,25 @@
</outputDirectory>
<directory>${project.basedir}/../</directory>
<includes>
- <include>**</include>
+ <include>app/**</include>
+ <include>assembly-release/**</include>
+ <include>docs/**</include>
+ <include>it-selenium/**</include>
+ <include>LICENSE.txt</include>
+ <include>NOTICE.txt</include>
+ <include>pom.xml</include>
+ <include>README.md</include>
</includes>
<excludes>
- <exclude>it-selenium/**</exclude>
<exclude>**/target/**</exclude>
- <exclude>**/derby.log</exclude>
<exclude>**/.idea/**</exclude>
- <exclude>**/._*</exclude>
- <exclude>**/._*/**</exclude>
+ <exclude>**/.settings/**</exclude>
<exclude>**/.repository/**</exclude>
+ <exclude>**/.git</exclude>
<exclude>**/.classpath</exclude>
<exclude>**/.project</exclude>
- <exclude>**/.settings/**</exclude>
+ <exclude>**/*.log</exclude>
+ <exclude>**/*.iml</exclude>
</excludes>
</fileSet>
</fileSets>
diff --git a/assembly-release/src/main/assembly/standard.xml b/assembly-release/src/main/assembly/standard.xml
index 12b5f71..2bec4cf 100644
--- a/assembly-release/src/main/assembly/standard.xml
+++ b/assembly-release/src/main/assembly/standard.xml
@@ -32,7 +32,7 @@
<outputDirectory>${artifact.artifactId}-${artifact.version}/webapp</outputDirectory>
</file>
<file>
- <source>../README.txt</source>
+ <source>../README.md</source>
<outputDirectory>${artifact.artifactId}-${artifact.version}</outputDirectory>
</file>
<file>
diff --git a/docs/examples/scripting/groovy/examples/rollerapi/createtestdata.gy b/docs/examples/scripting/groovy/examples/rollerapi/createtestdata.gy
index bdf785b..280003a 100644
--- a/docs/examples/scripting/groovy/examples/rollerapi/createtestdata.gy
+++ b/docs/examples/scripting/groovy/examples/rollerapi/createtestdata.gy
@@ -133,19 +133,21 @@
try {
def website = new org.apache.roller.weblogger.pojos.Weblog(
handle,
- user,
+ user.getUserName(),
name,
desc,
user.getEmailAddress(),
- user.getEmailAddress(),
theme,
user.getLocale(),
user.getTimeZone());
+ roller.getWeblogManager().addWeblog(website)
+ roller.flush()
+
def cat = new org.apache.roller.weblogger.pojos.WeblogCategory(
- website, null, "cat1", "cat1", null);
- roller.getWeblogManager().saveWeblogCategory(cat);
- website.setDefaultCategory(cat);
- roller.getUserManager().addWebsite(website);
+ website, "cat1", "cat1", null);
+ roller.getWeblogEntryManager().saveWeblogCategory(cat);
+ //website.setDefaultCategory(cat);
+ roller.getUserManager().grantWeblogPermission(website, user, ["post", "admin"]);
roller.flush();
return website
} catch (Exception e) {
@@ -158,17 +160,17 @@
try {
def entry = new org.apache.roller.weblogger.pojos.WeblogEntry();
entry.setWebsite(blog);
- entry.setCreator(blog.getCreator());
+ entry.setCreatorUserName(blog.getCreatorUserName());
def catName = categories.get((int)(Math.random() * categories.size()))
- def category = roller.getWeblogManager().getWeblogCategoryByPath(blog,catName)
+ def category = roller.getWeblogEntryManager().getWeblogCategoryByName(blog,catName)
entry.setCategory(category);
- entry.setPubTime(new java.sql.Timestamp(pubTime.getTime()));
- entry.setUpdateTime(new java.sql.Timestamp(pubTime.getTime()));
- entry.setStatus(org.apache.roller.weblogger.pojos.WeblogEntry.PUBLISHED);
+ entry.setPubTime( new java.sql.Timestamp(pubTime.getTime()));
+ entry.setUpdateTime( new java.sql.Timestamp(pubTime.getTime()));
+ entry.setStatus(org.apache.roller.weblogger.pojos.WeblogEntry.PubStatus.PUBLISHED);
entry.setText(text);
entry.setTitle(title);
entry.setLocale("en_US");
- roller.getWeblogManager().saveWeblogEntry(entry);
+ roller.getWeblogEntryManager().saveWeblogEntry(entry);
roller.flush();
return entry
} catch (Exception e) {
@@ -185,8 +187,8 @@
comment.setPostTime(new java.sql.Timestamp(new java.util.Date().getTime()));
comment.setContent(content);
comment.setNotify(Boolean.FALSE);
- comment.setStatus(org.apache.roller.weblogger.pojos.WeblogEntryComment.APPROVED);
- roller.getWeblogManager().saveComment(comment);
+ comment.setStatus(org.apache.roller.weblogger.pojos.WeblogEntryComment.ApprovalStatus.APPROVED);
+ roller.getWeblogEntryManager().saveComment(comment);
roller.flush();
} catch (Exception e) {
e.printStackTrace()
@@ -205,12 +207,12 @@
// drop any existing Roller tables
ant.sql(onerror:"continue", driver:jdbcClass, url:jdbcUrl,
userid:jdbcUser, password:jdbcPassword,
- src:"../../../../../apps/weblogger/build/webapp/WEB-INF/classes/dbscripts/droptables.sql")
+ src:"../../../../../../app/target/roller/WEB-INF/classes/dbscripts/droptables.sql")
// create fresh set of Roller tables
ant.sql(onerror:"continue", driver:jdbcClass, url:jdbcUrl,
userid:jdbcUser, password:jdbcPassword,
- src:"../../../../../apps/weblogger/build/webapp/WEB-INF/classes/dbscripts/derby/createdb.sql")
+ src:"../../../../../../app/target/roller/WEB-INF/classes/dbscripts/mysql/createdb.sql")
bootstrap()
diff --git a/docs/examples/scripting/groovy/examples/rollerapi/groovy b/docs/examples/scripting/groovy/examples/rollerapi/groovy
index 62909ad..737484b 100755
--- a/docs/examples/scripting/groovy/examples/rollerapi/groovy
+++ b/docs/examples/scripting/groovy/examples/rollerapi/groovy
@@ -3,22 +3,22 @@
# -- ENSURE THESE ARE CORRECT ---
# Directory where Groovy release is installed
-export GROOVY_HOME=/Applications/Java/groovy
+export GROOVY_HOME=/Applications/Java/groovy-2.4.8
# Directory of Roller webapp context
-export WEBAPP_DIR=../../../../../apps/weblogger/build/webapp
+export WEBAPP_DIR=../../../../../../app/target/roller
# Directory of additional jars
-export JARS_DIR=/Applications/Java/tomcat/common/lib
+export JARS_DIR=/Applications/Java/lib
# --- SHOULD NOT NEED TO EDIT BELOW THIS LINE ---
RGPATH=${WEBAPP_DIR}/WEB-INF/classes:\
-${GROOVY_HOME}/embeddable/groovy-all-1.0.jar:\
-${GROOVY_HOME}/lib/commons-cli-1.0.jar:\
-${GROOVY_HOME}/lib/ant-1.6.5.jar:\
-${GROOVY_HOME}/lib/ant-launcher.1.6.5.jar
+${GROOVY_HOME}/embeddable/groovy-all-2.4.8.jar:\
+${GROOVY_HOME}/lib/commons-cli-1.2.jar:\
+${GROOVY_HOME}/lib/ant-1.9.4.jar:\
+${GROOVY_HOME}/lib/ant-launcher-1.9.4.jar
for i in "$WEBAPP_DIR"/WEB-INF/lib/*.jar; do
RGPATH="$RGPATH":"$i"
diff --git a/docs/examples/scripting/groovy/examples/rollerapi/listusers.gy b/docs/examples/scripting/groovy/examples/rollerapi/listusers.gy
index 6de967d..f908a6a 100644
--- a/docs/examples/scripting/groovy/examples/rollerapi/listusers.gy
+++ b/docs/examples/scripting/groovy/examples/rollerapi/listusers.gy
@@ -21,12 +21,12 @@
org.apache.roller.weblogger.business.WebloggerFactory.bootstrap();
roller = org.apache.roller.weblogger.business.WebloggerFactory.getWeblogger();
- users = roller.getUserManager().getUsers(null, null, null, null, 0, -1);
+ users = roller.getUserManager().getUsers(null, null, null, 0, -1);
for (u in users) {
println " User [${u.userName}] has password [${u.password}]";
- weblogs = roller.getUserManager().getWebsites(u, null, null, null, null, 0, Integer.MAX_VALUE);
- for (w in weblogs) {
- println " Belongs to weblog [${w.handle}]";
+ permissions = roller.getUserManager().getWeblogPermissions(u)
+ for (p in permissions) {
+ println " Belongs to weblog [${p.getWeblog().getHandle()}]";
}
}
} catch (Exception e) {
diff --git a/docs/examples/scripting/groovy/examples/rollerapi/roller-custom.properties b/docs/examples/scripting/groovy/examples/rollerapi/roller-custom.properties
index 04317de..202603d 100644
--- a/docs/examples/scripting/groovy/examples/rollerapi/roller-custom.properties
+++ b/docs/examples/scripting/groovy/examples/rollerapi/roller-custom.properties
@@ -1,9 +1,9 @@
database.configurationType=jdbc
-database.jdbc.driverClass=org.apache.derby.jdbc.ClientDriver
-database.jdbc.connectionURL=jdbc:derby://localhost:1527/roller40test;create=true
-database.jdbc.username=APP
-database.jdbc.password=APP
+database.jdbc.driverClass=com.mysql.jdbc.Driver
+database.jdbc.connectionURL=jdbc:mysql://localhost/roller520new?autoReconnect=true&useUnicode=true&characterEncoding=utf-8&mysqlEncoding=utf&useFastDateParsing=false
+database.jdbc.username=scott
+database.jdbc.password=tiger
log4j.category.org.apache.roller=DEBUG
diff --git a/docs/roller-install-guide.odt b/docs/roller-install-guide.odt
index 608c279..39054c4 100644
--- a/docs/roller-install-guide.odt
+++ b/docs/roller-install-guide.odt
Binary files differ
diff --git a/docs/roller-template-guide.odt b/docs/roller-template-guide.odt
index 2f89f0a..56d8158 100644
--- a/docs/roller-template-guide.odt
+++ b/docs/roller-template-guide.odt
Binary files differ
diff --git a/docs/roller-user-guide.odt b/docs/roller-user-guide.odt
index b323775..1bf7d45 100644
--- a/docs/roller-user-guide.odt
+++ b/docs/roller-user-guide.odt
Binary files differ
diff --git a/it-selenium/pom.xml b/it-selenium/pom.xml
index f4f28d2..2854584 100644
--- a/it-selenium/pom.xml
+++ b/it-selenium/pom.xml
@@ -24,7 +24,7 @@
<parent>
<groupId>org.apache.roller</groupId>
<artifactId>roller-project</artifactId>
- <version>5.2.0-SNAPSHOT</version>
+ <version>5.2.0</version>
<relativePath>../pom.xml</relativePath>
</parent>
@@ -32,11 +32,6 @@
<artifactId>roller-selenium-tests</artifactId>
<packaging>war</packaging>
- <properties>
- <selenium.version>2.47.1</selenium.version>
- <javamail.version>1.4.7</javamail.version>
- </properties>
-
<!-- Process to run Selenium tests (actually no tests right now, just a skeleton)
1. Tests presently require Firefox browser, Chrome on the to-do list.
@@ -49,27 +44,38 @@
4. Feel free to add more Selenium tests!
-->
<dependencies>
+
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
- <version>${selenium.version}</version>
+ <version>3.4.0</version>
+ <exclusions>
+ <exclusion>
+ <groupId>org.apache.commons</groupId>
+ <artifactId>commons-lang3</artifactId>
+ </exclusion>
+ </exclusions>
</dependency>
+
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
- <version>${selenium.version}</version>
+ <version>3.4.0</version>
</dependency>
+
<!-- Will bring in once we configure a Chrome option -->
<!--dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>${selenium.version}</version>
</dependency-->
+
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
+
<!--
Type "war" listed below makes this a WAR overlay (i.e., incorporating
another WAR into this project in making a new WAR, with any additional
@@ -81,16 +87,22 @@
<version>${project.version}</version>
<type>war</type>
</dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ </dependency>
+
</dependencies>
<build>
<plugins>
- <!-- Activates integration tests (by default, classes under tests
- that end with "IT")
+
+ <!-- Activates integration tests (by default, classes under tests that end with "IT")
-->
<plugin>
<artifactId>maven-failsafe-plugin</artifactId>
- <version>2.12.4</version>
+ <version>2.20</version>
<executions>
<execution>
<goals>
@@ -100,6 +112,7 @@
</execution>
</executions>
</plugin>
+
<!-- Activates the Derby database during the integration test phase -->
<plugin>
<groupId>com.btmatthews.maven.plugins.inmemdb</groupId>
@@ -135,6 +148,7 @@
</execution>
</executions>
</plugin>
+
<!-- Activates the Roller application during the integration test phase -->
<plugin>
<groupId>org.eclipse.jetty</groupId>
@@ -163,7 +177,7 @@
</goals>
<configuration>
<scanIntervalSeconds>0</scanIntervalSeconds>
- <daemon>true</daemon>
+ <!-- <daemon>true</daemon> -->
</configuration>
</execution>
<execution>
@@ -175,21 +189,25 @@
</execution>
</executions>
<dependencies>
+
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derby</artifactId>
<version>${derby.version}</version>
</dependency>
+
<dependency>
<groupId>org.apache.derby</groupId>
<artifactId>derbyclient</artifactId>
<version>${derby.version}</version>
</dependency>
+
<dependency>
<groupId>javax.mail</groupId>
<artifactId>mail</artifactId>
- <version>${javamail.version}</version>
+ <version>1.4.7</version>
</dependency>
+
</dependencies>
</plugin>
</plugins>
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/AbstractRollerPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/AbstractRollerPage.java
index 5bd89a9..5bce387 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/AbstractRollerPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/AbstractRollerPage.java
@@ -21,7 +21,9 @@
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
+import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
+import org.openqa.selenium.support.ui.WebDriverWait;
/**
* Abstract class holding functionality common to Selenium Page Objects
@@ -30,13 +32,21 @@
public abstract class AbstractRollerPage {
protected WebDriver driver;
- protected String pageName;
+
+ protected void verifyPageTitle(String waitForElementId, String pageTitle) {
+
+ WebDriverWait wait = new WebDriverWait(driver, 10);
+ wait.until( ExpectedConditions.visibilityOf( driver.findElement(By.id(waitForElementId))));
+
+ verifyPageTitle(pageTitle);
+ }
protected void verifyPageTitle(String pageTitle) {
- if(!driver.getTitle().equals(pageTitle)) {
- throw new IllegalStateException("This is not the " + pageName + ", current page is: "
- + driver.getTitle());
+
+ if (!driver.getTitle().equals(pageTitle)) {
+ throw new IllegalStateException("This is not the " + pageTitle + ", current page is: " + driver.getTitle());
}
+ System.out.println("Verified page title: " + pageTitle);
}
/*
@@ -48,8 +58,7 @@
try {
WebElement div = driver.findElement(By.id(idOnPage));
} catch (NoSuchElementException e) {
- throw new IllegalStateException("This is not the " + pageName + ", HTML ID: "
- + idOnPage + " not found.");
+ throw new IllegalStateException("HTML ID: " + idOnPage + " not found.");
}
}
@@ -60,11 +69,15 @@
}
protected void clickById(String buttonId) {
- driver.findElement(By.id(buttonId)).click();
+ WebElement element = driver.findElement(By.id(buttonId));
+ element.click();
+ System.out.println("Element " + element.getTagName() + " id:" + element.getAttribute("id") + " clicked");
}
protected void clickByLinkText(String buttonText) {
- driver.findElement(By.linkText(buttonText)).click();
+ WebElement element = driver.findElement(By.linkText(buttonText));
+ element.click();
+ System.out.println("Element " + element.getTagName() + " id:" + element.getAttribute("id") + " clicked");
}
protected String getTextByCSS(String cssSelector) {
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/InitialLoginTestIT.java b/it-selenium/src/test/java/org/apache/roller/selenium/InitialLoginTestIT.java
index 2c5f019..15d521d 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/InitialLoginTestIT.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/InitialLoginTestIT.java
@@ -62,10 +62,12 @@
LoginPage lp = wp.doRollerLogin();
MainMenuPage mmp = lp.loginToRoller("bsmith", "roller123");
CreateWeblogPage cwp = mmp.createWeblog();
- mmp = cwp.createWeblog("Bob's Blog", "bobsblog", "bsmith@email.com");
+ cwp.createWeblog("Bob's Blog", "bobsblog", "bsmith@email.com");
// set bobsblog as the front page blog
driver.get(baseUrl);
+ sp = new SetupPage(driver);
+ driver.navigate().refresh();
BlogHomePage bhp = sp.chooseFrontPageBlog();
// create and read first blog entry
@@ -84,7 +86,6 @@
@After
public void tearDown() throws Exception {
- driver.quit();
String verificationErrorString = verificationErrors.toString();
if (!"".equals(verificationErrorString)) {
fail(verificationErrorString);
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/core/CreateWeblogPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/core/CreateWeblogPage.java
index 1c0a75a..19db6cb 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/core/CreateWeblogPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/core/CreateWeblogPage.java
@@ -31,8 +31,8 @@
public CreateWeblogPage(WebDriver driver) {
this.driver = driver;
- this.pageName = "Create Weblog Page";
- verifyPageTitle("Front Page: Create Weblog");
+ String pageTitle = "Front Page: Create Weblog";
+ verifyPageTitle("createWeblog", pageTitle);
}
public MainMenuPage createWeblog() {
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/core/LoginPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/core/LoginPage.java
index e3834b9..6d90ae8 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/core/LoginPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/core/LoginPage.java
@@ -30,8 +30,8 @@
public LoginPage(WebDriver driver) {
this.driver = driver;
- this.pageName = "Roller Login Page";
- verifyPageTitle("Front Page: Welcome to Roller");
+ String pageTitle = "Front Page: Welcome to Roller";
+ verifyPageTitle("loginForm", pageTitle);
}
public MainMenuPage loginToRoller() {
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/core/MainMenuPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/core/MainMenuPage.java
index 1eb4e00..1c3ba96 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/core/MainMenuPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/core/MainMenuPage.java
@@ -28,19 +28,21 @@
* Post-login page object to create, choose, configure blogs.
*/
public class MainMenuPage extends AbstractRollerPage {
+ String pageTitle;
public MainMenuPage(WebDriver driver) {
this.driver = driver;
- this.pageName = "Main Menu Page";
- verifyPageTitle("Front Page: Main Menu");
+ pageTitle = "Front Page: Main Menu";
}
public CreateWeblogPage createWeblog() {
+ verifyPageTitle("createWeblogLink", pageTitle);
clickByLinkText("create one?");
return new CreateWeblogPage(driver);
}
public EntryAddPage createNewBlogEntry() {
+ verifyPageTitle("createWeblogLink", pageTitle);
clickByLinkText("New Entry");
return new EntryAddPage(driver);
}
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/core/RegisterPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/core/RegisterPage.java
index 38cab2c..0d85498 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/core/RegisterPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/core/RegisterPage.java
@@ -18,7 +18,10 @@
package org.apache.roller.selenium.core;
import org.apache.roller.selenium.AbstractRollerPage;
+import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
import java.lang.String;
@@ -30,12 +33,18 @@
public RegisterPage(WebDriver driver) {
this.driver = driver;
- this.pageName = "New User Registration Page";
- verifyPageTitle("Front Page: New User Registration");
+ String pageTitle = "Front Page: New User Registration";
+
+ verifyPageTitle("register", pageTitle);
}
public WelcomePage submitUserRegistration() {
clickById("submit");
+
+ WebDriverWait wait = new WebDriverWait(driver, 10);
+ wait.until( ExpectedConditions.visibilityOf( driver.findElement(By.id("a_clickHere"))));
+ driver.findElement(By.id("a_clickHere")).click();
+
return new WelcomePage(driver);
}
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/core/SetupPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/core/SetupPage.java
index 2328095..7422235 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/core/SetupPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/core/SetupPage.java
@@ -19,7 +19,12 @@
import org.apache.roller.selenium.AbstractRollerPage;
import org.apache.roller.selenium.view.BlogHomePage;
+import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
+import org.openqa.selenium.support.ui.ExpectedConditions;
+import org.openqa.selenium.support.ui.WebDriverWait;
+
+import java.util.concurrent.TimeUnit;
/**
* represents core/Setup.jsp
@@ -32,16 +37,16 @@
public SetupPage(WebDriver driver) {
this.driver = driver;
- this.pageName = "Initial Setup Page";
- verifyPageTitle("Front Page: Welcome to Roller!");
}
public RegisterPage createNewUser() {
+ verifyPageTitle("Front Page: Welcome to Roller!");
clickById("a_createUser");
return new RegisterPage(driver);
}
public BlogHomePage chooseFrontPageBlog() {
+ verifyPageTitle("setup_0", "Front Page: Welcome to Roller!");
clickById("setup_0");
return new BlogHomePage(driver);
}
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/core/WelcomePage.java b/it-selenium/src/test/java/org/apache/roller/selenium/core/WelcomePage.java
index 1f64d87..87bafdf 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/core/WelcomePage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/core/WelcomePage.java
@@ -32,12 +32,11 @@
public WelcomePage(WebDriver driver) {
this.driver = driver;
- this.pageName = "New User Registration Welcome Page";
- verifyPageTitle("Front Page: New User Registration");
+ String pageTitle = "Front Page: Welcome to Roller";
+ verifyPageTitle("loginForm", pageTitle);
}
public LoginPage doRollerLogin() {
- clickById("a_clickHere");
return new LoginPage(driver);
}
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryAddPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryAddPage.java
index 5f9319a..d58c2a3 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryAddPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryAddPage.java
@@ -29,8 +29,7 @@
public EntryAddPage(WebDriver driver) {
this.driver = driver;
- this.pageName = "New Blog Entry Page";
- verifyPageTitle("Front Page: New Entry");
+ verifyPageTitle("entry", "Front Page: New Entry");
}
}
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryEditPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryEditPage.java
index 1a3fd28..09bf6a7 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryEditPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/editor/EntryEditPage.java
@@ -32,8 +32,7 @@
public EntryEditPage(WebDriver driver) {
this.driver = driver;
- this.pageName = "blog entry edit page";
- verifyPageTitle("Front Page: Edit Entry");
+ verifyPageTitle("messages", "Front Page: Edit Entry");
}
public SingleBlogEntryPage viewBlogEntry() {
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/view/BlogHomePage.java b/it-selenium/src/test/java/org/apache/roller/selenium/view/BlogHomePage.java
index 2ec2a98..2fc4140 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/view/BlogHomePage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/view/BlogHomePage.java
@@ -31,8 +31,7 @@
public BlogHomePage(WebDriver driver) {
this.driver = driver;
- this.pageName = "blog home page";
- verifyIdOnPage("id_weblog");
+ verifyPageTitle("searchForm", "Bob's Blog");
}
public EntryAddPage createNewBlogEntry() {
diff --git a/it-selenium/src/test/java/org/apache/roller/selenium/view/SingleBlogEntryPage.java b/it-selenium/src/test/java/org/apache/roller/selenium/view/SingleBlogEntryPage.java
index 595977f..0660e40 100644
--- a/it-selenium/src/test/java/org/apache/roller/selenium/view/SingleBlogEntryPage.java
+++ b/it-selenium/src/test/java/org/apache/roller/selenium/view/SingleBlogEntryPage.java
@@ -30,7 +30,7 @@
public SingleBlogEntryPage(WebDriver driver) {
this.driver = driver;
- this.pageName = "Single blog entry view";
+ String pageTitle = "Single blog entry view";
/* id_permalink added to basic template's permalink.vm only to distinguish
this page from by-month or by-day views of blog entries */
verifyIdOnPage("id_permalink");
diff --git a/it-selenium/src/test/resources/roller-jettyrun.properties b/it-selenium/src/test/resources/roller-jettyrun.properties
index 771de23..643e0c5 100644
--- a/it-selenium/src/test/resources/roller-jettyrun.properties
+++ b/it-selenium/src/test/resources/roller-jettyrun.properties
@@ -23,7 +23,7 @@
passwds.encryption.enabled=false
# use src copy of themes for read-only access
-themes.dir=target/roller-selenium-tests-5.2.0-SNAPSHOT/themes
+themes.dir=target/roller-selenium-tests-5.2.0/themes
# put work in work dir
search.index.dir =target/work/search-index
diff --git a/pom.xml b/pom.xml
index 475ec4e..408d530 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,3 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+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.
+-->
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
@@ -5,7 +22,7 @@
<modelVersion>4.0.0</modelVersion>
<groupId>org.apache.roller</groupId>
<artifactId>roller-project</artifactId>
- <version>5.2.0-SNAPSHOT</version>
+ <version>5.2.0</version>
<packaging>pom</packaging>
<prerequisites>
@@ -21,20 +38,21 @@
<inceptionYear>2002</inceptionYear>
<scm>
- <connection>scm:svn:http://svn.apache.org/repos/asf/roller/trunk</connection>
- <developerConnection>scm:svn:https://svn.apache.org/repos/asf/roller/trunk</developerConnection>
- <url>http://svn.apache.org/viewvc/roller/trunk</url>
+ <url>https://github.com/apache/roller</url>
+ <connection>scm:git:git://github.com/apache/roller.git</connection>
+ <developerConnection>scm:git:git@github.com:apache/roller.git</developerConnection>
</scm>
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<derby.version>10.11.1.1</derby.version>
- <roller.version>5.2.0-SNAPSHOT</roller.version>
+ <roller.version>5.2.0</roller.version>
</properties>
<modules>
<module>app</module>
+ <!-- <module>it-selenium</module> -->
</modules>
<build>