Author: gk
Date: Thu Oct 19 12:34:25 2017
New Revision: 1812628

URL: http://svn.apache.org/viewvc?rev=1812628&view=rev
Log:
- running conf/cw.sh, cleanup spaces, licenses
- deleting build.xml which relies on non existing master file 
- update todo.xml

Removed:
    turbine/core/trunk/conf/TurbineResources.properties
Modified:
    turbine/core/trunk/conf/CodeWrestler.excludes
    turbine/core/trunk/conf/componentConfiguration.xml
    turbine/core/trunk/conf/cw.sh
    turbine/core/trunk/conf/roleConfiguration.xml
    turbine/core/trunk/conf/test/CompleteTurbineResources.properties
    turbine/core/trunk/conf/test/CompleteTurbineResourcesWithEncoding.properties
    turbine/core/trunk/conf/test/ConfigurationBuilder.xml
    turbine/core/trunk/conf/test/Log4j.properties
    turbine/core/trunk/conf/test/TorqueTest.properties
    turbine/core/trunk/conf/test/fulcrumComponentConfiguration.xml
    turbine/core/trunk/conf/test/fulcrumRoleConfiguration.xml
    turbine/core/trunk/conf/test/quartz.xml
    
turbine/core/trunk/conf/test/turbine-resources/turbine-skins/myotherskin/skin.props
    
turbine/core/trunk/conf/test/turbine-resources/turbine-skins/myskin/skin.props
    turbine/core/trunk/pom.xml
    turbine/core/trunk/src/assembly/binaries.xml
    turbine/core/trunk/src/assembly/source.xml
    turbine/core/trunk/src/changes/changes.xml
    turbine/core/trunk/src/java/org/apache/turbine/Turbine.java
    
turbine/core/trunk/src/java/org/apache/turbine/annotation/AnnotationProcessor.java
    
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineActionEvent.java
    
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineConfiguration.java
    turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineLoader.java
    
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineRequiredPermission.java
    
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineRequiredRole.java
    
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineService.java
    turbine/core/trunk/src/java/org/apache/turbine/modules/ActionEvent.java
    turbine/core/trunk/src/java/org/apache/turbine/modules/Loader.java
    
turbine/core/trunk/src/java/org/apache/turbine/modules/actions/LoginUser.java
    
turbine/core/trunk/src/java/org/apache/turbine/modules/actions/sessionvalidator/SessionValidator.java
    
turbine/core/trunk/src/java/org/apache/turbine/modules/layouts/VelocityCachedLayout.java
    
turbine/core/trunk/src/java/org/apache/turbine/modules/screens/JSONScreen.java
    turbine/core/trunk/src/java/org/apache/turbine/om/OMTool.java
    turbine/core/trunk/src/java/org/apache/turbine/om/Retrievable.java
    turbine/core/trunk/src/java/org/apache/turbine/om/Retriever.java
    turbine/core/trunk/src/java/org/apache/turbine/om/RetrieverFactory.java
    
turbine/core/trunk/src/java/org/apache/turbine/om/security/DefaultUserImpl.java
    
turbine/core/trunk/src/java/org/apache/turbine/om/security/TurbineUserDelegate.java
    turbine/core/trunk/src/java/org/apache/turbine/pipeline/XmlValve.java
    
turbine/core/trunk/src/java/org/apache/turbine/services/jsonrpc/JSONProcessor.java
    
turbine/core/trunk/src/java/org/apache/turbine/services/pull/tools/UITool.java
    
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/AbstractSchedulerService.java
    
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/JobQueue.java
    
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/QuartzSchedulerService.java
    
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TorqueSchedulerService.java
    
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/TurbineNonPersistentSchedulerService.java
    
turbine/core/trunk/src/java/org/apache/turbine/services/schedule/WorkerThread.java
    
turbine/core/trunk/src/java/org/apache/turbine/services/security/DefaultSecurityService.java
    
turbine/core/trunk/src/java/org/apache/turbine/services/security/DefaultUserManager.java
    
turbine/core/trunk/src/java/org/apache/turbine/services/security/SecurityService.java
    
turbine/core/trunk/src/java/org/apache/turbine/services/ui/TurbineUIService.java
    turbine/core/trunk/src/java/org/apache/turbine/services/ui/UIService.java
    turbine/core/trunk/src/java/org/apache/turbine/services/ui/package.html
    turbine/core/trunk/src/java/org/apache/turbine/util/ObjectUtils.java
    turbine/core/trunk/src/site/site.xml
    turbine/core/trunk/src/test/org/apache/turbine/DestroyTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/annotation/AnnotationProcessorTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/modules/GenericLoaderTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/services/LoadingComponentsTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/services/crypto/FulcrumCryptoServiceTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/services/pull/tools/UIToolTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/services/pull/util/DateFormatterTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/services/rundata/DefaultTurbineRunDataTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/services/schedule/JobEntryTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/services/schedule/QuartzSchedulerServiceTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/services/schedule/TurbineNonPersistentSchedulerServiceTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/services/security/SecurityServiceTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/services/security/TurbineDefaultModelManagerTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/services/template/ClassTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/services/template/TemplateTest.java
    
turbine/core/trunk/src/test/org/apache/turbine/services/velocity/PathConverterTest.java
    turbine/core/trunk/src/torque/schema/id-table-schema.xml
    turbine/core/trunk/src/torque/schema/scheduler-schema.xml
    turbine/core/trunk/xdocs/features.xml
    turbine/core/trunk/xdocs/fsd.xml
    turbine/core/trunk/xdocs/how-to-build.xml
    turbine/core/trunk/xdocs/howto/action-event-howto.xml
    turbine/core/trunk/xdocs/howto/annotations.xml
    turbine/core/trunk/xdocs/howto/configuration-howto.xml
    turbine/core/trunk/xdocs/howto/migrate-from-2_3-howto.xml
    turbine/core/trunk/xdocs/services/index.xml
    turbine/core/trunk/xdocs/services/jsonrpc-service.xml
    turbine/core/trunk/xdocs/services/security-service.xml
    turbine/core/trunk/xdocs/services/ui-service.xml
    turbine/core/trunk/xdocs/todo.xml

Modified: turbine/core/trunk/conf/CodeWrestler.excludes
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/conf/CodeWrestler.excludes?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/conf/CodeWrestler.excludes (original)
+++ turbine/core/trunk/conf/CodeWrestler.excludes Thu Oct 19 12:34:25 2017
@@ -1,6 +1,6 @@
 #
 # This is an exclude file to parse the turbine-2 code base using CodeWrestler,
-# available from 
http://henning.schmiedehausen.org/eyewiki/Wiki.jsp?page=CodeWrestler
+# available from https://github.com/hgschmie/CodeWrestler
 #
 .*\.ai$
 .*\.psd$

Modified: turbine/core/trunk/conf/componentConfiguration.xml
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/conf/componentConfiguration.xml?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/conf/componentConfiguration.xml (original)
+++ turbine/core/trunk/conf/componentConfiguration.xml Thu Oct 19 12:34:25 2017
@@ -59,7 +59,7 @@
         <automaticUpload>true</automaticUpload>
     </parser>
 
-    <!-- These components belong to the Fulcrum-Security services -->        
+    <!-- These components belong to the Fulcrum-Security services -->
     <securityService/>
     <authenticator/>
     <modelManager/>

Modified: turbine/core/trunk/conf/cw.sh
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/conf/cw.sh?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/conf/cw.sh (original)
+++ turbine/core/trunk/conf/cw.sh Thu Oct 19 12:34:25 2017
@@ -16,9 +16,10 @@
 # under the License.
 
 # Run the CodeWrestler
-# http://henning.schmiedehausen.org/eyewiki/Wiki.jsp?page=CodeWrestler
+# https://github.com/hgschmie/CodeWrestler
 
 # Add license to new files
+# copy CodeWrestler-master.zip to ~/Dev/cw folder from 
https://github.com/hgschmie/CodeWrestler
 python ~/Dev/cw/CodeWrestler.py -e conf/CodeWrestler.excludes 
--module=license.ReLicense --modopts='-f conf/checkstyle-license.txt -t java -n'
 # Relicense existing files
 python ~/Dev/cw/CodeWrestler.py -e conf/CodeWrestler.excludes 
--module=license.ReLicense --modopts='-f conf/checkstyle-license.txt -t java -e'

Modified: turbine/core/trunk/conf/roleConfiguration.xml
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/conf/roleConfiguration.xml?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/conf/roleConfiguration.xml (original)
+++ turbine/core/trunk/conf/roleConfiguration.xml Thu Oct 19 12:34:25 2017
@@ -65,23 +65,23 @@
         name="org.apache.fulcrum.factory.FactoryService"
         shorthand="factory"
         default-class="org.apache.fulcrum.factory.DefaultFactoryService"/>
-        
+
     <role
         name="org.apache.fulcrum.pool.PoolService"
         shorthand="pool"
         default-class="org.apache.fulcrum.pool.DefaultPoolService"/>
-        
+
     <role
         name="org.apache.fulcrum.parser.ParserService"
         shorthand="parser"
         default-class="org.apache.fulcrum.parser.DefaultParserService"/>
-        
+
     <role
         name="org.apache.fulcrum.xslt.XSLTService"
         shorthand="xslt"
         default-class="org.apache.fulcrum.xslt.DefaultXSLTService"/>
 
-    <!-- These components belong to the Fulcrum-Security services -->        
+    <!-- These components belong to the Fulcrum-Security services -->
     <role
         name="org.apache.fulcrum.security.SecurityService"
         shorthand="securityService"

Modified: turbine/core/trunk/conf/test/CompleteTurbineResources.properties
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/conf/test/CompleteTurbineResources.properties?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/conf/test/CompleteTurbineResources.properties (original)
+++ turbine/core/trunk/conf/test/CompleteTurbineResources.properties Thu Oct 19 
12:34:25 2017
@@ -484,7 +484,7 @@ tool.session.sessionData=org.apache.turb
 # This pull tool can be used to provide skins to an application
 tool.global.ui = org.apache.turbine.services.pull.tools.UITool
 
-## These properties apply to both the old UIManager and the newer UIService
+# # These properties apply to both the old UIManager and the newer UIService
 tool.ui.dir.skin = /turbine-skins/
 tool.ui.dir.image = /turbine-images/
 tool.ui.skin = myskin

Modified: 
turbine/core/trunk/conf/test/CompleteTurbineResourcesWithEncoding.properties
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/conf/test/CompleteTurbineResourcesWithEncoding.properties?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- 
turbine/core/trunk/conf/test/CompleteTurbineResourcesWithEncoding.properties 
(original)
+++ 
turbine/core/trunk/conf/test/CompleteTurbineResourcesWithEncoding.properties 
Thu Oct 19 12:34:25 2017
@@ -1,2 +1,2 @@
-input.encoding=UTF-8
-include=CompleteTurbineResources.properties
\ No newline at end of file
+input.encoding=UTF-8
+include=CompleteTurbineResources.properties

Modified: turbine/core/trunk/conf/test/ConfigurationBuilder.xml
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/conf/test/ConfigurationBuilder.xml?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/conf/test/ConfigurationBuilder.xml (original)
+++ turbine/core/trunk/conf/test/ConfigurationBuilder.xml Thu Oct 19 12:34:25 
2017
@@ -5,11 +5,11 @@
     <!-- Meta data about the resulting combined configuration -->
   </header>
   <override><!-- only allowed configurations are user and turbine, relative 
paths   -->
-    <properties config-name="user" 
fileName="conf/test/usersettings.properties" config-optional="true" 
config-forceCreate="true"/> 
+    <properties config-name="user" 
fileName="conf/test/usersettings.properties" config-optional="true" 
config-forceCreate="true"/>
     <xml fileName="conf/test/TurbineResources.xml"/>
     <properties config-name="turbine" 
fileName="conf/test/TemplateService.properties" throwExceptionOnMissing="true"/>
    </override>
   <additional>
     <!-- Configuration declarations that form a union configuration, always 
provide a unique config-name attribute  -->
   </additional>
-</configuration>
\ No newline at end of file
+</configuration>

Modified: turbine/core/trunk/conf/test/Log4j.properties
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/conf/test/Log4j.properties?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/conf/test/Log4j.properties (original)
+++ turbine/core/trunk/conf/test/Log4j.properties Thu Oct 19 12:34:25 2017
@@ -21,7 +21,7 @@ log4j.rootLogger = ERROR, logfile
 log4j.category.org.apache.turbine=DEBUG, logfile
 
 # we want to see any errors thrown by Turbine.java, primarily in the 
handleException method
-#log4j.category.org.apache.turbine.Turbine=DEBUG, logfile
+# log4j.category.org.apache.turbine.Turbine=DEBUG, logfile
 
 log4j.appender.log = org.apache.log4j.ConsoleAppender
 log4j.appender.log.target = System.out

Modified: turbine/core/trunk/conf/test/TorqueTest.properties
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/conf/test/TorqueTest.properties?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/conf/test/TorqueTest.properties (original)
+++ turbine/core/trunk/conf/test/TorqueTest.properties Thu Oct 19 12:34:25 2017
@@ -17,7 +17,7 @@
 
 torque.applicationRoot = .
 pipeline.default.descriptor = conf/turbine-classic-pipeline.xml
-#torque.defaults.pool.defaultMaxActive=30
+# torque.defaults.pool.defaultMaxActive=30
 torque.defaults.pool.testOnBorrow=true
 torque.defaults.pool.validationQuery=SELECT 1
 
@@ -34,10 +34,10 @@ torque.dsfactory.default.factory=org.apa
 
 torque.dsfactory.default.pool.testOnBorrow=true
 torque.dsfactory.default.pool.validationQuery=SELECT 1 from 
INFORMATION_SCHEMA.SYSTEM_USERS
-torque.dsfactory.default.connection.driver = org.hsqldb.jdbcDriver 
+torque.dsfactory.default.connection.driver = org.hsqldb.jdbcDriver
 torque.dsfactory.default.connection.url = jdbc:hsqldb:.
 torque.dsfactory.default.connection.user = sa
-torque.dsfactory.default.connection.password = 
+torque.dsfactory.default.connection.password =
 
 
 

Modified: turbine/core/trunk/conf/test/fulcrumComponentConfiguration.xml
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/conf/test/fulcrumComponentConfiguration.xml?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/conf/test/fulcrumComponentConfiguration.xml (original)
+++ turbine/core/trunk/conf/test/fulcrumComponentConfiguration.xml Thu Oct 19 
12:34:25 2017
@@ -56,7 +56,7 @@
         <automaticUpload>true</automaticUpload>
     </parser>
 
-    <!-- These components belong to the Fulcrum-Security services -->        
+    <!-- These components belong to the Fulcrum-Security services -->
     <securityService/>
     <authenticator/>
     <modelManager/>
@@ -82,7 +82,7 @@
         configuration/properties := a set of properties to configure Quartz
         configuration/properties/parameter := a  single configuration
         configuration/properties/parameter@name := the name of the property
-        configuration/properties/parameter@value := the value of the property  
                  
+        configuration/properties/parameter@value := the value of the property
     -->
 
     <quartz>

Modified: turbine/core/trunk/conf/test/fulcrumRoleConfiguration.xml
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/conf/test/fulcrumRoleConfiguration.xml?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/conf/test/fulcrumRoleConfiguration.xml (original)
+++ turbine/core/trunk/conf/test/fulcrumRoleConfiguration.xml Thu Oct 19 
12:34:25 2017
@@ -72,13 +72,13 @@
         name="org.apache.fulcrum.parser.ParserService"
         shorthand="parser"
         default-class="org.apache.fulcrum.parser.DefaultParserService"/>
-       
+
     <role
         name="org.apache.fulcrum.xslt.XSLTService"
         shorthand="xslt"
         default-class="org.apache.fulcrum.xslt.DefaultXSLTService"/>
 
-    <!-- These components belong to the Fulcrum-Security services -->        
+    <!-- These components belong to the Fulcrum-Security services -->
     <role
         name="org.apache.fulcrum.security.SecurityService"
         shorthand="securityService"
@@ -120,7 +120,7 @@
         shorthand="aclFactory"
         
default-class="org.apache.fulcrum.security.model.turbine.TurbineACLFactory"/>
 
-    <!-- Service required for the QuartzSchedulerService -->        
+    <!-- Service required for the QuartzSchedulerService -->
     <role
         name="org.apache.fulcrum.quartz.QuartzScheduler"
         shorthand="quartz"

Modified: turbine/core/trunk/conf/test/quartz.xml
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/conf/test/quartz.xml?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/conf/test/quartz.xml (original)
+++ turbine/core/trunk/conf/test/quartz.xml Thu Oct 19 12:34:25 2017
@@ -1,19 +1,21 @@
 <?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
+ 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
+   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.
+ 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.
 -->
 <job-scheduling-data 
xmlns="http://www.quartz-scheduler.org/xml/JobSchedulingData";
                      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";

Modified: 
turbine/core/trunk/conf/test/turbine-resources/turbine-skins/myotherskin/skin.props
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/conf/test/turbine-resources/turbine-skins/myotherskin/skin.props?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- 
turbine/core/trunk/conf/test/turbine-resources/turbine-skins/myotherskin/skin.props
 (original)
+++ 
turbine/core/trunk/conf/test/turbine-resources/turbine-skins/myotherskin/skin.props
 Thu Oct 19 12:34:25 2017
@@ -1 +1 @@
-skin_property_1 = skin_property_1_my_other_skin
\ No newline at end of file
+skin_property_1 = skin_property_1_my_other_skin

Modified: 
turbine/core/trunk/conf/test/turbine-resources/turbine-skins/myskin/skin.props
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/conf/test/turbine-resources/turbine-skins/myskin/skin.props?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- 
turbine/core/trunk/conf/test/turbine-resources/turbine-skins/myskin/skin.props 
(original)
+++ 
turbine/core/trunk/conf/test/turbine-resources/turbine-skins/myskin/skin.props 
Thu Oct 19 12:34:25 2017
@@ -1 +1 @@
-skin_property_1 = skin_property_1_my_skin
\ No newline at end of file
+skin_property_1 = skin_property_1_my_skin

Modified: turbine/core/trunk/pom.xml
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/pom.xml?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/pom.xml (original)
+++ turbine/core/trunk/pom.xml Thu Oct 19 12:34:25 2017
@@ -1,21 +1,21 @@
 <?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
 
-   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.
+   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/maven-v4_0_0.xsd";>
   <modelVersion>4.0.0</modelVersion>
@@ -33,9 +33,9 @@
     can also be used independently of the web portion of Turbine as
     well. In other words, we strive to make portions of Turbine easily
     available for use in other applications.</description>
-    
+
   <url>http://turbine.apache.org/${turbine.site.path}</url>
-  
+
   <inceptionYear>2000</inceptionYear>
 
   <developers>
@@ -470,7 +470,7 @@
       <url />
       <organization />
       <timezone />
-    </contributor>    
+    </contributor>
   </contributors>
 
   <scm>
@@ -492,7 +492,7 @@
         </includes>
       </resource>
     </resources>
-    
+
     <testResources>
       <testResource>
         <targetPath />
@@ -502,16 +502,16 @@
         </includes>
       </testResource>
     </testResources>
-    
+
     <plugins>
-      <!-- run optionally, use not as reporting plugin, as it exposes file 
paths to artifacts 
-        mvn org.owasp:dependency-check-maven:check 
+      <!-- run optionally, use not as reporting plugin, as it exposes file 
paths to artifacts
+        mvn org.owasp:dependency-check-maven:check
         check each possible vulnerability carefully, find more info about how 
to read, false positives et al. here: 
https://jeremylong.github.io/DependencyCheck/dependency-check-maven/plugin-info.html
       -->
       <plugin>
         <groupId>org.owasp</groupId>
         <artifactId>dependency-check-maven</artifactId>
-        <version>2.1.1</version> 
+        <version>2.1.1</version>
         <executions>
             <execution>
                 <goals>
@@ -519,9 +519,9 @@
                 </goals>
             </execution>
         </executions>
-        <!--configuration> 
+        <!--configuration>
            <suppressionFiles>true</suppressionFiles>
-        </configuration--> 
+        </configuration-->
       </plugin>
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
@@ -538,7 +538,7 @@
         <version>4.0</version>
         <configuration>
           <targetDatabase>mysql</targetDatabase>
-          <schemaDir>src/torque/schema</schemaDir> 
+          <schemaDir>src/torque/schema</schemaDir>
         </configuration>
         <executions>
           <execution>
@@ -802,13 +802,13 @@
       <plugin>
         <groupId>org.apache.maven.plugins</groupId>
         <artifactId>maven-jxr-plugin</artifactId>
-        <configuration> 
+        <configuration>
           <aggregate>false</aggregate>
-        </configuration> 
+        </configuration>
       </plugin>
     </plugins>
   </reporting>
-  
+
   <dependencies>
     <dependency>
       <groupId>javax.servlet</groupId>
@@ -938,7 +938,7 @@
             <artifactId>avalon-logkit</artifactId>
         </exclusion>
       </exclusions>
-    </dependency> 
+    </dependency>
     <!-- using snapshot, until released -->
     <dependency>
       <groupId>org.apache.fulcrum</groupId>
@@ -965,7 +965,7 @@
       <version>1.1.0</version>
     </dependency>
     <dependency>
-      <!-- TODO update to stable 2.7.1, because of CVE-2016-5699 --> 
+      <!-- TODO update to stable 2.7.1, because of CVE-2016-5699 -->
       <groupId>org.python</groupId>
       <artifactId>jython</artifactId>
       <version>2.7.0</version>
@@ -1044,7 +1044,7 @@
                        <scope>test</scope>
                </dependency>
   </dependencies>
-  
+
   <profiles>
     <profile>
       <id>apache-release</id>
@@ -1090,16 +1090,16 @@
                 </configuration>
               </execution>
             </executions>
-          </plugin>      
+          </plugin>
         </plugins>
       </build>
-    </profile>    
+    </profile>
   </profiles>
 
   <properties>
-    <!-- TODO: Change for release -->  
+    <!-- TODO: Change for release -->
     <turbine.site.path>turbine/development/turbine-4.0</turbine.site.path>
     <slf4j.version>1.7.25</slf4j.version>
   </properties>
-  
+
 </project>

Modified: turbine/core/trunk/src/assembly/binaries.xml
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/assembly/binaries.xml?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/src/assembly/binaries.xml (original)
+++ turbine/core/trunk/src/assembly/binaries.xml Thu Oct 19 12:34:25 2017
@@ -17,7 +17,7 @@
  specific language governing permissions and limitations
  under the License.
 -->
-<assembly 
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"; 
+<assembly 
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
   
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0
 http://maven.apache.org/xsd/assembly-1.1.0.xsd";>
   <id>binaries</id>
@@ -75,4 +75,4 @@
       </includes>
     </fileSet>
   </fileSets>
-</assembly>
\ No newline at end of file
+</assembly>

Modified: turbine/core/trunk/src/assembly/source.xml
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/assembly/source.xml?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/src/assembly/source.xml (original)
+++ turbine/core/trunk/src/assembly/source.xml Thu Oct 19 12:34:25 2017
@@ -17,7 +17,7 @@
  specific language governing permissions and limitations
  under the License.
 -->
-<assembly 
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0"; 
+<assembly 
xmlns="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0";
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
   
xsi:schemaLocation="http://maven.apache.org/plugins/maven-assembly-plugin/assembly/1.1.0
 http://maven.apache.org/xsd/assembly-1.1.0.xsd";>
   <id>source</id>
@@ -73,4 +73,4 @@
       </includes>
     </fileSet>
   </fileSets>
-</assembly>
\ No newline at end of file
+</assembly>

Modified: turbine/core/trunk/src/changes/changes.xml
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/changes/changes.xml?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/src/changes/changes.xml (original)
+++ turbine/core/trunk/src/changes/changes.xml Thu Oct 19 12:34:25 2017
@@ -25,6 +25,21 @@
 
   <body>
     <release version="4.0" date="in Subversion">
+      <action type="update" dev="gk">
+        OWASP vulnerability check
+      </action>
+      <action type="update" dev="gk">
+        Decoupling from DefaultUserImpl class by introducing a user wrapper 
class definition, which the UserManager uses as wrapper for Fulcrum Security 
and a TurbineUserDelegate marker interface.
+      </action>
+      <action type="update" dev="gk">
+        Update/Add Tests for Turbine and Fulcrum Security Service version 
1.1.1 interaction / handling
+      </action>
+      <action type="update" dev="gk">
+        Using slf4j over log4j (currently version 1.7.25)
+      </action>
+      <action type="update" dev="tv">
+        Assembly bugfixes
+      </action>
       <action type="update" dev="tv">
         Replace mockobjects with Mockito
       </action>
@@ -59,7 +74,7 @@
         Add annotation processing to pull tools
       </action>
       <action type="remove" dev="tv">
-        Eventually remove all static service accessors and replace them by 
lookups or annotations 
+        Eventually remove all static service accessors and replace them by 
lookups or annotations
       </action>
     </release>
     <release version="4.0-M2" date="2015-12-21">
@@ -88,7 +103,7 @@
         Update to Torque 4.0.0
       </action>
       <action type="add" dev="tv">
-        Add Annotation @TurbineActionEvent to annotate action methods 
+        Add Annotation @TurbineActionEvent to annotate action methods
         with arbitrary event names.
       </action>
       <action type="update" dev="tv">
@@ -103,7 +118,7 @@
         Update Turbine Parent POM to version 3
       </action>
       <action type="add" dev="tv">
-        Add Annotation @TurbineLoader to inject a loader 
+        Add Annotation @TurbineLoader to inject a loader
         instance into objects.
       </action>
       <action type="update" dev="tv">
@@ -113,14 +128,14 @@
         Refactor handling of annotated fields into AnnotationProcessor.
       </action>
       <action type="add" dev="tv">
-        Add Annotation @TurbineConfiguration to inject a configuration 
+        Add Annotation @TurbineConfiguration to inject a configuration
         instance into objects.
       </action>
       <action type="fix" dev="tv">
         Fix Velocity logging.
       </action>
       <action type="update" dev="gk">
-        Reintroduce VelocityCachedLayout/Screen classes 
+        Reintroduce VelocityCachedLayout/Screen classes
       </action>
       <action type="update" dev="tv">
         Adjust site for Apache Turbine Parent POM version 2
@@ -130,7 +145,7 @@
       </action>
       <action type="add" dev="tv">
         Add Annotation @TurbineService to inject Turbine service instance into 
assemblers
-        such as screens, actions, navigations etc. and pipeline valves. 
+        such as screens, actions, navigations etc. and pipeline valves.
         See VelocityActionWithServiceInjection for an example.
       </action>
       <action type="add" dev="tv">
@@ -232,7 +247,7 @@
         loaders. Loaders are expected to be provided by the module factories.
       </action>
       <action type="update" dev="tv">
-        Moved the different loader caches into the AssemblerBrokerService and 
+        Moved the different loader caches into the AssemblerBrokerService and
         centralized several loader features. The loaders do no longer extend
         Hashtable.
       </action>
@@ -243,18 +258,18 @@
         without any hard-wired module types.
       </action>
       <action type="update" dev="tv">
-        Ported the class cache for JavaBaseFactory from Turbine 2.3 
+        Ported the class cache for JavaBaseFactory from Turbine 2.3
       </action>
       <action type="update" dev="tv">
         Use the transparent service lookup in all service lookups
       </action>
       <action type="update" dev="tv">
-        Initialize the locale of RunData, the ParameterParser and the 
CookieParser 
-        from the HttpServletRequest. Make RunData.setLocale propagate the 
locale 
+        Initialize the locale of RunData, the ParameterParser and the 
CookieParser
+        from the HttpServletRequest. Make RunData.setLocale propagate the 
locale
         setting to the parsers.
       </action>
       <action type="update" dev="tv" issue="TRB-39">
-        Make sure that Turbine uses the ParserService to get 
+        Make sure that Turbine uses the ParserService to get
         correctly initialized parser objects.
       </action>
       <action type="fix" dev="seade">

Modified: turbine/core/trunk/src/java/org/apache/turbine/Turbine.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/Turbine.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/Turbine.java (original)
+++ turbine/core/trunk/src/java/org/apache/turbine/Turbine.java Thu Oct 19 
12:34:25 2017
@@ -403,7 +403,7 @@ public class Turbine
         if (!descriptorPath.startsWith( "/" )) {
                descriptorPath  = "/" + descriptorPath;
         }
-               
+
         InputStream reader = context.getResourceAsStream(descriptorPath);
         JAXBContext jaxb = JAXBContext.newInstance(TurbinePipeline.class);
         Unmarshaller unmarshaller = jaxb.createUnmarshaller();

Modified: 
turbine/core/trunk/src/java/org/apache/turbine/annotation/AnnotationProcessor.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/annotation/AnnotationProcessor.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- 
turbine/core/trunk/src/java/org/apache/turbine/annotation/AnnotationProcessor.java
 (original)
+++ 
turbine/core/trunk/src/java/org/apache/turbine/annotation/AnnotationProcessor.java
 Thu Oct 19 12:34:25 2017
@@ -1,416 +1,414 @@
-package org.apache.turbine.annotation;
-
-
-/*
- * 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.
- */
-
-
-import java.lang.annotation.Annotation;
-import java.lang.reflect.AccessibleObject;
-import java.lang.reflect.Field;
-import java.util.List;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import org.apache.commons.configuration.Configuration;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.apache.turbine.Turbine;
-import org.apache.turbine.modules.Loader;
-import org.apache.turbine.services.ServiceManager;
-import org.apache.turbine.services.TurbineServices;
-import org.apache.turbine.services.assemblerbroker.AssemblerBrokerService;
-import org.apache.turbine.util.TurbineException;
-
-/**
- * AnnotationProcessor contains static helper methods that handle the
- * Turbine annotations for objects
- *
- * @author <a href="mailto:[email protected]";>Thomas Vandahl</a>
- * @version $Id: TurbineAssemblerBrokerService.java 1521103 2013-09-09 
13:38:07Z tv $
- */
-public class AnnotationProcessor
-{
-    /** Logging */
-    private static Log log = LogFactory.getLog(AnnotationProcessor.class);
-
-    /** Annotation cache */
-    private static ConcurrentMap<String, Annotation[]> annotationCache = new 
ConcurrentHashMap<String, Annotation[]>();
-
-    /**
-     * Get cached annotations for field, class or method
-     *
-     * @param object a field, class or method
-     *
-     * @return the declared annotations for the object
-     */
-    public static Annotation[] getAnnotations(AccessibleObject object)
-    {
-        String key = object.getClass() + object.toString();
-        Annotation[] annotations = annotationCache.get(key);
-        if (annotations == null)
-        {
-            Annotation[] newAnnotations = object.getDeclaredAnnotations();
-            annotations = annotationCache.putIfAbsent(key, newAnnotations);
-            if (annotations == null)
-            {
-                annotations = newAnnotations;
-            }
-        }
-        return annotations;
-    }
-
-    /**
-     * Search for annotated fields of the object and inject the appropriate
-     * objects
-     *
-     * @param object the object
-     * @throws TurbineException if the objects could not be injected
-     */
-    public static void process(Object object) throws TurbineException
-    {
-        ServiceManager manager = null;
-        Configuration config = null;
-        AssemblerBrokerService assembler = null;
-        Class<?> clazz = object.getClass();
-
-        while (clazz != null)
-        {
-            Field[] fields = clazz.getDeclaredFields();
-
-            for (Field field : fields)
-            {
-                Annotation[] annotations = getAnnotations(field);
-
-                for (Annotation a : annotations)
-                {
-                    if (a instanceof TurbineService)
-                    {
-                        if (manager == null)
-                        {
-                            manager = TurbineServices.getInstance();
-                        }
-                        injectTurbineService(object, manager, field, 
(TurbineService) a);
-                    }
-                    else if (a instanceof TurbineConfiguration)
-                    {
-                        if (config == null)
-                        {
-                            config = Turbine.getConfiguration();
-                        }
-                        injectTurbineConfiguration(object, config, field, 
(TurbineConfiguration) a);
-                    }
-                    else if (a instanceof TurbineLoader)
-                    {
-                        if (assembler == null)
-                        {
-                            assembler = (AssemblerBrokerService) 
TurbineServices.getInstance().
-                                
getService(AssemblerBrokerService.SERVICE_NAME);
-                        }
-                        injectTurbineLoader(object, assembler, field, 
(TurbineLoader) a);
-                    }
-                }
-            }
-
-            clazz = clazz.getSuperclass();
-        }
-    }
-
-    /**
-     * Inject Turbine configuration into field of object
-     *
-     * @param object the object to process
-     * @param assembler AssemblerBrokerService, provides the loader
-     * @param field the field
-     * @param annotation the value of the annotation
-     *
-     * @throws TurbineException if loader cannot be set
-     */
-    private static void injectTurbineLoader(Object object, 
AssemblerBrokerService assembler, Field field, TurbineLoader annotation) throws 
TurbineException
-    {
-        Loader<?> loader = assembler.getLoader(annotation.value());
-        field.setAccessible(true);
-
-        try
-        {
-            if (log.isDebugEnabled())
-            {
-                log.debug("Injection of " + loader + " into object " + object);
-            }
-
-            field.set(object, loader);
-        }
-        catch (IllegalArgumentException e)
-        {
-            throw new TurbineException("Could not inject loader "
-                    + loader + " into object " + object, e);
-        }
-        catch (IllegalAccessException e)
-        {
-            throw new TurbineException("Could not inject loader "
-                    + loader + " into object " + object, e);
-        }
-    }
-
-    /**
-     * Inject Turbine configuration into field of object
-     *
-     * @param object the object to process
-     * @param conf the configuration to use
-     * @param field the field
-     * @param annotation the value of the annotation
-     *
-     * @throws TurbineException if configuration cannot be set
-     */
-    private static void injectTurbineConfiguration(Object object, 
Configuration conf, Field field, TurbineConfiguration annotation) throws 
TurbineException
-    {
-        Class<?> type = field.getType();
-        String key = annotation.value();
-
-        try
-        {
-            if (Configuration.class.isAssignableFrom(type))
-            {
-                // Check for annotation value
-                if (StringUtils.isNotEmpty(key))
-                {
-                    conf = conf.subset(key);
-                }
-
-                if (log.isDebugEnabled())
-                {
-                    log.debug("Injection of " + conf + " into object " + 
object);
-                }
-
-                field.setAccessible(true);
-                field.set(object, conf);
-            }
-            else if (conf.containsKey(key))
-            {
-                if ( String.class.isAssignableFrom( type ) )
-                {
-                    String value = conf.getString(key);
-                    if (log.isDebugEnabled())
-                    {
-                        log.debug("Injection of " + value + " into object " + 
object);
-                    }
-
-                    field.setAccessible(true);
-                    field.set(object, value);
-                }
-                else if ( Boolean.TYPE.isAssignableFrom( type ) )
-                {
-                    boolean value = conf.getBoolean(key);
-                    if (log.isDebugEnabled())
-                    {
-                        log.debug("Injection of " + value + " into object " + 
object);
-                    }
-
-                    field.setAccessible(true);
-                    field.setBoolean(object, value);
-                }
-                else if ( Integer.TYPE.isAssignableFrom( type ) )
-                {
-                    int value = conf.getInt(key);
-                    if (log.isDebugEnabled())
-                    {
-                        log.debug("Injection of " + value + " into object " + 
object);
-                    }
-
-                    field.setAccessible(true);
-                    field.setInt(object, value);
-                }
-                else if ( Long.TYPE.isAssignableFrom( type ) )
-                {
-                    long value = conf.getLong(key);
-                    if (log.isDebugEnabled())
-                    {
-                        log.debug("Injection of " + value + " into object " + 
object);
-                    }
-
-                    field.setAccessible(true);
-                    field.setLong(object, value);
-                }
-                else if ( Short.TYPE.isAssignableFrom( type ) )
-                {
-                    short value = conf.getShort(key);
-                    if (log.isDebugEnabled())
-                    {
-                        log.debug("Injection of " + value + " into object " + 
object);
-                    }
-
-                    field.setAccessible(true);
-                    field.setShort(object, value);
-                }
-                else if ( Long.TYPE.isAssignableFrom( type ) )
-                {
-                    long value = conf.getLong(key);
-                    if (log.isDebugEnabled())
-                    {
-                        log.debug("Injection of " + value + " into object " + 
object);
-                    }
-
-                    field.setAccessible(true);
-                    field.setLong(object, value);
-                }
-                else if ( Float.TYPE.isAssignableFrom( type ) )
-                {
-                    float value = conf.getFloat(key);
-                    if (log.isDebugEnabled())
-                    {
-                        log.debug("Injection of " + value + " into object " + 
object);
-                    }
-
-                    field.setAccessible(true);
-                    field.setFloat(object, value);
-                }
-                else if ( Double.TYPE.isAssignableFrom( type ) )
-                {
-                    double value = conf.getDouble(key);
-                    if (log.isDebugEnabled())
-                    {
-                        log.debug("Injection of " + value + " into object " + 
object);
-                    }
-
-                    field.setAccessible(true);
-                    field.setDouble(object, value);
-                }
-                else if ( Byte.TYPE.isAssignableFrom( type ) )
-                {
-                    byte value = conf.getByte(key);
-                    if (log.isDebugEnabled())
-                    {
-                        log.debug("Injection of " + value + " into object " + 
object);
-                    }
-
-                    field.setAccessible(true);
-                    field.setByte(object, value);
-                }
-                else if ( List.class.isAssignableFrom( type ) )
-                {
-                    List<Object> values = conf.getList(key);
-                    if (log.isDebugEnabled())
-                    {
-                        log.debug("Injection of " + values + " into object " + 
object);
-                    }
-
-                    field.setAccessible(true);
-                    field.set(object, values);
-                }
-            }
-        }
-        catch (IllegalArgumentException e)
-        {
-            throw new TurbineException("Could not inject configuration "
-                    + conf + " into object " + object, e);
-        }
-        catch (IllegalAccessException e)
-        {
-            throw new TurbineException("Could not inject configuration "
-                    + conf + " into object " + object, e);
-        }
-    }
-
-    /**
-     * Inject Turbine service into field of object
-     *
-     * @param object the object to process
-     * @param manager the service manager
-     * @param field the field
-     * @param annotation the value of the annotation
-     *
-     * @throws TurbineException if service is not available
-     */
-    private static void injectTurbineService(Object object, ServiceManager 
manager, Field field, TurbineService annotation) throws TurbineException
-    {
-        String serviceName = null;
-        // Check for annotation value
-        if (StringUtils.isNotEmpty(annotation.value()))
-        {
-            serviceName = annotation.value();
-        }
-        // Check for fields SERVICE_NAME and ROLE
-        else
-        {
-            Field[] typeFields = field.getType().getFields();
-            for (Field f : typeFields)
-            {
-                if (TurbineService.SERVICE_NAME.equals(f.getName()))
-                {
-                    try
-                    {
-                        serviceName = (String)f.get(null);
-                    }
-                    catch (Exception e)
-                    {
-                        continue;
-                    }
-                    break;
-                }
-                else if (TurbineService.ROLE.equals(f.getName()))
-                {
-                    try
-                    {
-                        serviceName = (String)f.get(null);
-                    }
-                    catch (Exception e)
-                    {
-                        continue;
-                    }
-                    break;
-                }
-            }
-        }
-
-        if (StringUtils.isEmpty(serviceName))
-        {
-            // Try interface class name
-            serviceName = field.getType().getName();
-        }
-
-        if (log.isDebugEnabled())
-        {
-            log.debug("Looking up service for injection: " + serviceName + " 
for object " + object);
-        }
-
-        Object service = manager.getService(serviceName); // throws Exception 
on unknown service
-        field.setAccessible(true);
-
-        try
-        {
-            if (log.isDebugEnabled())
-            {
-                log.debug("Injection of " + serviceName + " into object " + 
object);
-            }
-
-            field.set(object, service);
-        }
-        catch (IllegalArgumentException e)
-        {
-            throw new TurbineException("Could not inject service "
-                    + serviceName + " into object " + object, e);
-        }
-        catch (IllegalAccessException e)
-        {
-            throw new TurbineException("Could not inject service "
-                    + serviceName + " into object " + object, e);
-        }
-    }
-}
+package org.apache.turbine.annotation;
+
+/*
+ * 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.
+ */
+
+import java.lang.annotation.Annotation;
+import java.lang.reflect.AccessibleObject;
+import java.lang.reflect.Field;
+import java.util.List;
+import java.util.concurrent.ConcurrentHashMap;
+import java.util.concurrent.ConcurrentMap;
+
+import org.apache.commons.configuration.Configuration;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.apache.turbine.Turbine;
+import org.apache.turbine.modules.Loader;
+import org.apache.turbine.services.ServiceManager;
+import org.apache.turbine.services.TurbineServices;
+import org.apache.turbine.services.assemblerbroker.AssemblerBrokerService;
+import org.apache.turbine.util.TurbineException;
+
+/**
+ * AnnotationProcessor contains static helper methods that handle the
+ * Turbine annotations for objects
+ *
+ * @author <a href="mailto:[email protected]";>Thomas Vandahl</a>
+ * @version $Id: TurbineAssemblerBrokerService.java 1521103 2013-09-09 
13:38:07Z tv $
+ */
+public class AnnotationProcessor
+{
+    /** Logging */
+    private static Log log = LogFactory.getLog(AnnotationProcessor.class);
+
+    /** Annotation cache */
+    private static ConcurrentMap<String, Annotation[]> annotationCache = new 
ConcurrentHashMap<String, Annotation[]>();
+
+    /**
+     * Get cached annotations for field, class or method
+     *
+     * @param object a field, class or method
+     *
+     * @return the declared annotations for the object
+     */
+    public static Annotation[] getAnnotations(AccessibleObject object)
+    {
+        String key = object.getClass() + object.toString();
+        Annotation[] annotations = annotationCache.get(key);
+        if (annotations == null)
+        {
+            Annotation[] newAnnotations = object.getDeclaredAnnotations();
+            annotations = annotationCache.putIfAbsent(key, newAnnotations);
+            if (annotations == null)
+            {
+                annotations = newAnnotations;
+            }
+        }
+        return annotations;
+    }
+
+    /**
+     * Search for annotated fields of the object and inject the appropriate
+     * objects
+     *
+     * @param object the object
+     * @throws TurbineException if the objects could not be injected
+     */
+    public static void process(Object object) throws TurbineException
+    {
+        ServiceManager manager = null;
+        Configuration config = null;
+        AssemblerBrokerService assembler = null;
+        Class<?> clazz = object.getClass();
+
+        while (clazz != null)
+        {
+            Field[] fields = clazz.getDeclaredFields();
+
+            for (Field field : fields)
+            {
+                Annotation[] annotations = getAnnotations(field);
+
+                for (Annotation a : annotations)
+                {
+                    if (a instanceof TurbineService)
+                    {
+                        if (manager == null)
+                        {
+                            manager = TurbineServices.getInstance();
+                        }
+                        injectTurbineService(object, manager, field, 
(TurbineService) a);
+                    }
+                    else if (a instanceof TurbineConfiguration)
+                    {
+                        if (config == null)
+                        {
+                            config = Turbine.getConfiguration();
+                        }
+                        injectTurbineConfiguration(object, config, field, 
(TurbineConfiguration) a);
+                    }
+                    else if (a instanceof TurbineLoader)
+                    {
+                        if (assembler == null)
+                        {
+                            assembler = (AssemblerBrokerService) 
TurbineServices.getInstance().
+                                
getService(AssemblerBrokerService.SERVICE_NAME);
+                        }
+                        injectTurbineLoader(object, assembler, field, 
(TurbineLoader) a);
+                    }
+                }
+            }
+
+            clazz = clazz.getSuperclass();
+        }
+    }
+
+    /**
+     * Inject Turbine configuration into field of object
+     *
+     * @param object the object to process
+     * @param assembler AssemblerBrokerService, provides the loader
+     * @param field the field
+     * @param annotation the value of the annotation
+     *
+     * @throws TurbineException if loader cannot be set
+     */
+    private static void injectTurbineLoader(Object object, 
AssemblerBrokerService assembler, Field field, TurbineLoader annotation) throws 
TurbineException
+    {
+        Loader<?> loader = assembler.getLoader(annotation.value());
+        field.setAccessible(true);
+
+        try
+        {
+            if (log.isDebugEnabled())
+            {
+                log.debug("Injection of " + loader + " into object " + object);
+            }
+
+            field.set(object, loader);
+        }
+        catch (IllegalArgumentException e)
+        {
+            throw new TurbineException("Could not inject loader "
+                    + loader + " into object " + object, e);
+        }
+        catch (IllegalAccessException e)
+        {
+            throw new TurbineException("Could not inject loader "
+                    + loader + " into object " + object, e);
+        }
+    }
+
+    /**
+     * Inject Turbine configuration into field of object
+     *
+     * @param object the object to process
+     * @param conf the configuration to use
+     * @param field the field
+     * @param annotation the value of the annotation
+     *
+     * @throws TurbineException if configuration cannot be set
+     */
+    private static void injectTurbineConfiguration(Object object, 
Configuration conf, Field field, TurbineConfiguration annotation) throws 
TurbineException
+    {
+        Class<?> type = field.getType();
+        String key = annotation.value();
+
+        try
+        {
+            if (Configuration.class.isAssignableFrom(type))
+            {
+                // Check for annotation value
+                if (StringUtils.isNotEmpty(key))
+                {
+                    conf = conf.subset(key);
+                }
+
+                if (log.isDebugEnabled())
+                {
+                    log.debug("Injection of " + conf + " into object " + 
object);
+                }
+
+                field.setAccessible(true);
+                field.set(object, conf);
+            }
+            else if (conf.containsKey(key))
+            {
+                if ( String.class.isAssignableFrom( type ) )
+                {
+                    String value = conf.getString(key);
+                    if (log.isDebugEnabled())
+                    {
+                        log.debug("Injection of " + value + " into object " + 
object);
+                    }
+
+                    field.setAccessible(true);
+                    field.set(object, value);
+                }
+                else if ( Boolean.TYPE.isAssignableFrom( type ) )
+                {
+                    boolean value = conf.getBoolean(key);
+                    if (log.isDebugEnabled())
+                    {
+                        log.debug("Injection of " + value + " into object " + 
object);
+                    }
+
+                    field.setAccessible(true);
+                    field.setBoolean(object, value);
+                }
+                else if ( Integer.TYPE.isAssignableFrom( type ) )
+                {
+                    int value = conf.getInt(key);
+                    if (log.isDebugEnabled())
+                    {
+                        log.debug("Injection of " + value + " into object " + 
object);
+                    }
+
+                    field.setAccessible(true);
+                    field.setInt(object, value);
+                }
+                else if ( Long.TYPE.isAssignableFrom( type ) )
+                {
+                    long value = conf.getLong(key);
+                    if (log.isDebugEnabled())
+                    {
+                        log.debug("Injection of " + value + " into object " + 
object);
+                    }
+
+                    field.setAccessible(true);
+                    field.setLong(object, value);
+                }
+                else if ( Short.TYPE.isAssignableFrom( type ) )
+                {
+                    short value = conf.getShort(key);
+                    if (log.isDebugEnabled())
+                    {
+                        log.debug("Injection of " + value + " into object " + 
object);
+                    }
+
+                    field.setAccessible(true);
+                    field.setShort(object, value);
+                }
+                else if ( Long.TYPE.isAssignableFrom( type ) )
+                {
+                    long value = conf.getLong(key);
+                    if (log.isDebugEnabled())
+                    {
+                        log.debug("Injection of " + value + " into object " + 
object);
+                    }
+
+                    field.setAccessible(true);
+                    field.setLong(object, value);
+                }
+                else if ( Float.TYPE.isAssignableFrom( type ) )
+                {
+                    float value = conf.getFloat(key);
+                    if (log.isDebugEnabled())
+                    {
+                        log.debug("Injection of " + value + " into object " + 
object);
+                    }
+
+                    field.setAccessible(true);
+                    field.setFloat(object, value);
+                }
+                else if ( Double.TYPE.isAssignableFrom( type ) )
+                {
+                    double value = conf.getDouble(key);
+                    if (log.isDebugEnabled())
+                    {
+                        log.debug("Injection of " + value + " into object " + 
object);
+                    }
+
+                    field.setAccessible(true);
+                    field.setDouble(object, value);
+                }
+                else if ( Byte.TYPE.isAssignableFrom( type ) )
+                {
+                    byte value = conf.getByte(key);
+                    if (log.isDebugEnabled())
+                    {
+                        log.debug("Injection of " + value + " into object " + 
object);
+                    }
+
+                    field.setAccessible(true);
+                    field.setByte(object, value);
+                }
+                else if ( List.class.isAssignableFrom( type ) )
+                {
+                    List<Object> values = conf.getList(key);
+                    if (log.isDebugEnabled())
+                    {
+                        log.debug("Injection of " + values + " into object " + 
object);
+                    }
+
+                    field.setAccessible(true);
+                    field.set(object, values);
+                }
+            }
+        }
+        catch (IllegalArgumentException e)
+        {
+            throw new TurbineException("Could not inject configuration "
+                    + conf + " into object " + object, e);
+        }
+        catch (IllegalAccessException e)
+        {
+            throw new TurbineException("Could not inject configuration "
+                    + conf + " into object " + object, e);
+        }
+    }
+
+    /**
+     * Inject Turbine service into field of object
+     *
+     * @param object the object to process
+     * @param manager the service manager
+     * @param field the field
+     * @param annotation the value of the annotation
+     *
+     * @throws TurbineException if service is not available
+     */
+    private static void injectTurbineService(Object object, ServiceManager 
manager, Field field, TurbineService annotation) throws TurbineException
+    {
+        String serviceName = null;
+        // Check for annotation value
+        if (StringUtils.isNotEmpty(annotation.value()))
+        {
+            serviceName = annotation.value();
+        }
+        // Check for fields SERVICE_NAME and ROLE
+        else
+        {
+            Field[] typeFields = field.getType().getFields();
+            for (Field f : typeFields)
+            {
+                if (TurbineService.SERVICE_NAME.equals(f.getName()))
+                {
+                    try
+                    {
+                        serviceName = (String)f.get(null);
+                    }
+                    catch (Exception e)
+                    {
+                        continue;
+                    }
+                    break;
+                }
+                else if (TurbineService.ROLE.equals(f.getName()))
+                {
+                    try
+                    {
+                        serviceName = (String)f.get(null);
+                    }
+                    catch (Exception e)
+                    {
+                        continue;
+                    }
+                    break;
+                }
+            }
+        }
+
+        if (StringUtils.isEmpty(serviceName))
+        {
+            // Try interface class name
+            serviceName = field.getType().getName();
+        }
+
+        if (log.isDebugEnabled())
+        {
+            log.debug("Looking up service for injection: " + serviceName + " 
for object " + object);
+        }
+
+        Object service = manager.getService(serviceName); // throws Exception 
on unknown service
+        field.setAccessible(true);
+
+        try
+        {
+            if (log.isDebugEnabled())
+            {
+                log.debug("Injection of " + serviceName + " into object " + 
object);
+            }
+
+            field.set(object, service);
+        }
+        catch (IllegalArgumentException e)
+        {
+            throw new TurbineException("Could not inject service "
+                    + serviceName + " into object " + object, e);
+        }
+        catch (IllegalAccessException e)
+        {
+            throw new TurbineException("Could not inject service "
+                    + serviceName + " into object " + object, e);
+        }
+    }
+}

Modified: 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineActionEvent.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineActionEvent.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineActionEvent.java
 (original)
+++ 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineActionEvent.java
 Thu Oct 19 12:34:25 2017
@@ -1,10 +1,5 @@
 package org.apache.turbine.annotation;
 
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -24,6 +19,12 @@ import java.lang.annotation.Target;
  * under the License.
  */
 
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
 /**
  * Annotation to associate methods in modules to action events
  */

Modified: 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineConfiguration.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineConfiguration.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineConfiguration.java
 (original)
+++ 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineConfiguration.java
 Thu Oct 19 12:34:25 2017
@@ -1,10 +1,5 @@
 package org.apache.turbine.annotation;
 
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -24,6 +19,12 @@ import java.lang.annotation.Target;
  * under the License.
  */
 
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
 /**
  * Annotation to mark fields in modules that require a configuration to be 
injected
  */

Modified: 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineLoader.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineLoader.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineLoader.java 
(original)
+++ 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineLoader.java 
Thu Oct 19 12:34:25 2017
@@ -1,12 +1,5 @@
 package org.apache.turbine.annotation;
 
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-import org.apache.turbine.modules.Assembler;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -26,6 +19,14 @@ import org.apache.turbine.modules.Assemb
  * under the License.
  */
 
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+import org.apache.turbine.modules.Assembler;
+
+
 /**
  * Annotation to mark fields in modules that require a loader to be injected
  */

Modified: 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineRequiredPermission.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineRequiredPermission.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineRequiredPermission.java
 (original)
+++ 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineRequiredPermission.java
 Thu Oct 19 12:34:25 2017
@@ -1,10 +1,5 @@
 package org.apache.turbine.annotation;
 
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -24,6 +19,12 @@ import java.lang.annotation.Target;
  * under the License.
  */
 
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
 /**
  * Annotation to mark modules or methods in modules that require certain 
permissions to be executed
  */
@@ -40,7 +41,7 @@ public @interface TurbineRequiredPermiss
 
     /**
      * Get the name of the permission-associated group
-     * 
+     *
      * @return a group name, empty string if the global group
      */
     String group() default "";

Modified: 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineRequiredRole.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineRequiredRole.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineRequiredRole.java
 (original)
+++ 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineRequiredRole.java
 Thu Oct 19 12:34:25 2017
@@ -1,10 +1,5 @@
 package org.apache.turbine.annotation;
 
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -24,6 +19,12 @@ import java.lang.annotation.Target;
  * under the License.
  */
 
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
 /**
  * Annotation to mark modules or methods in modules that require certain roles 
to be executed
  */
@@ -37,10 +38,10 @@ public @interface TurbineRequiredRole
      * @return an array of role names
      */
     String[] value();
-    
+
     /**
      * Get the name of the role-associated group
-     * 
+     *
      * @return a group name, empty string if the global group
      */
     String group() default "";

Modified: 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineService.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineService.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineService.java 
(original)
+++ 
turbine/core/trunk/src/java/org/apache/turbine/annotation/TurbineService.java 
Thu Oct 19 12:34:25 2017
@@ -1,10 +1,5 @@
 package org.apache.turbine.annotation;
 
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -24,6 +19,12 @@ import java.lang.annotation.Target;
  * under the License.
  */
 
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+
 /**
  * Annotation to mark fields in modules that require a service to be injected
  */

Modified: 
turbine/core/trunk/src/java/org/apache/turbine/modules/ActionEvent.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/modules/ActionEvent.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/modules/ActionEvent.java 
(original)
+++ turbine/core/trunk/src/java/org/apache/turbine/modules/ActionEvent.java Thu 
Oct 19 12:34:25 2017
@@ -1,7 +1,5 @@
 package org.apache.turbine.modules;
 
-import java.lang.annotation.Annotation;
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -21,6 +19,9 @@ import java.lang.annotation.Annotation;
  * under the License.
  */
 
+import java.lang.annotation.Annotation;
+
+
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Method;
 import java.util.Arrays;

Modified: turbine/core/trunk/src/java/org/apache/turbine/modules/Loader.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/modules/Loader.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/modules/Loader.java 
(original)
+++ turbine/core/trunk/src/java/org/apache/turbine/modules/Loader.java Thu Oct 
19 12:34:25 2017
@@ -1,6 +1,5 @@
 package org.apache.turbine.modules;
 
-
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file

Modified: 
turbine/core/trunk/src/java/org/apache/turbine/modules/actions/LoginUser.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/modules/actions/LoginUser.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- 
turbine/core/trunk/src/java/org/apache/turbine/modules/actions/LoginUser.java 
(original)
+++ 
turbine/core/trunk/src/java/org/apache/turbine/modules/actions/LoginUser.java 
Thu Oct 19 12:34:25 2017
@@ -101,7 +101,7 @@ public class LoginUser
             {
                 throw new TurbineException("Anonymous user cannot login");
             }
-               
+
             // Authenticate the user and get the object.
             User user = security.getAuthenticatedUser(username, password);
 

Modified: 
turbine/core/trunk/src/java/org/apache/turbine/modules/actions/sessionvalidator/SessionValidator.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/modules/actions/sessionvalidator/SessionValidator.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- 
turbine/core/trunk/src/java/org/apache/turbine/modules/actions/sessionvalidator/SessionValidator.java
 (original)
+++ 
turbine/core/trunk/src/java/org/apache/turbine/modules/actions/sessionvalidator/SessionValidator.java
 Thu Oct 19 12:34:25 2017
@@ -52,10 +52,10 @@ import org.apache.turbine.util.RunData;
  */
 public abstract class SessionValidator extends Action
 {
-    
+
     @TurbineService
     protected SecurityService security;
-    
+
     @TurbineConfiguration( TurbineConstants.TEMPLATE_HOMEPAGE )
     protected String templateHomepage;
 
@@ -72,13 +72,13 @@ public abstract class SessionValidator e
     // forms.  This can be used to prevent a user from using the
     // browsers back button and submitting stale data.
     /**
-     * 
+     *
      * @param data
-     * @param screenOnly {@link DefaultSessionValidator} 
+     * @param screenOnly {@link DefaultSessionValidator}
      */
     protected void handleFormCounterToken( RunData data, boolean screenOnly )
     {
-        if (data.getParameters().containsKey("_session_access_counter")) 
+        if (data.getParameters().containsKey("_session_access_counter"))
         {
             if (screenOnly) {
                 // See comments in screens.error.InvalidState.

Modified: 
turbine/core/trunk/src/java/org/apache/turbine/modules/layouts/VelocityCachedLayout.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/modules/layouts/VelocityCachedLayout.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- 
turbine/core/trunk/src/java/org/apache/turbine/modules/layouts/VelocityCachedLayout.java
 (original)
+++ 
turbine/core/trunk/src/java/org/apache/turbine/modules/layouts/VelocityCachedLayout.java
 Thu Oct 19 12:34:25 2017
@@ -35,10 +35,10 @@ import org.apache.velocity.context.Conte
 /**
  * This Layout module is Turbine 2.3.3 VelocityDirectLayout (same package)
  * with methods added for {@link PipelineData}. It is used in Jetspeed-1 
portal.
- * 
- * By using this layout any view write will immediately call the provided 
print writer {@link RunData#getOut()} and 
+ *
+ * By using this layout any view write will immediately call the provided 
print writer {@link RunData#getOut()} and
  * the HTTP servlet response will be flushed and set the committed flag. This 
means of course
- * no change to the HTTP response header will be possible afterwards. By 
setting the {@link RunData#setAction(String)} in the request 
+ * no change to the HTTP response header will be possible afterwards. By 
setting the {@link RunData#setAction(String)} in the request
  * (not only the model, but also) additional response headers could be set, 
cft. {@link DefaultPage#doBuild(PipelineData)}.
  *
  * @author <a href="mailto:[email protected]";>Raphaël Luta</a>

Modified: 
turbine/core/trunk/src/java/org/apache/turbine/modules/screens/JSONScreen.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/modules/screens/JSONScreen.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- 
turbine/core/trunk/src/java/org/apache/turbine/modules/screens/JSONScreen.java 
(original)
+++ 
turbine/core/trunk/src/java/org/apache/turbine/modules/screens/JSONScreen.java 
Thu Oct 19 12:34:25 2017
@@ -70,7 +70,7 @@ import org.jabsorb.JSONRPCBridge;
  * }
  * </code>
  *
- * <p>This code is derived from the com.metaparadigm.jsonrpc.JSONRPCServlet 
and (after upgrade) checked against 
+ * <p>This code is derived from the com.metaparadigm.jsonrpc.JSONRPCServlet 
and (after upgrade) checked against
  * org.jabsorb.JSONRPCServlet.
  *
  * @author [email protected]
@@ -98,7 +98,7 @@ public class JSONScreen extends RawScree
 
     /**
      * Output the dynamic content.
-     * 
+     *
      * Encodign is UTF-8. @{@link #JSONRPC_CONTENT_TYPE}: {@value 
#JSONRPC_CONTENT_TYPE}.
      *
      * @param pipelineData The PipelineData object.

Modified: turbine/core/trunk/src/java/org/apache/turbine/om/OMTool.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/om/OMTool.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/om/OMTool.java (original)
+++ turbine/core/trunk/src/java/org/apache/turbine/om/OMTool.java Thu Oct 19 
12:34:25 2017
@@ -32,7 +32,7 @@ import org.apache.turbine.services.pull.
  * @author <a href="mailto:[email protected]";>John D. McNally</a>
  * @author <a href="mailto:[email protected]";>Henning P. Schmiedehausen</a>
  * @version $Id$
- * 
+ *
  * @deprecated This class is probably not used anymore, it may have been 
intended for cacheable Torque OM or might be used with Fulcrum Security Torque.
  */
 @Deprecated

Modified: turbine/core/trunk/src/java/org/apache/turbine/om/Retrievable.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/om/Retrievable.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/om/Retrievable.java 
(original)
+++ turbine/core/trunk/src/java/org/apache/turbine/om/Retrievable.java Thu Oct 
19 12:34:25 2017
@@ -26,7 +26,7 @@ package org.apache.turbine.om;
  *
  * @author <a href="mailto:[email protected]";>John D. McNally</a>
  * @version $Id$
- * 
+ *
  * @deprecated cft. deprecation comment in {@link OMTool}.
  */
 @Deprecated

Modified: turbine/core/trunk/src/java/org/apache/turbine/om/Retriever.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/om/Retriever.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/om/Retriever.java (original)
+++ turbine/core/trunk/src/java/org/apache/turbine/om/Retriever.java Thu Oct 19 
12:34:25 2017
@@ -26,7 +26,7 @@ package org.apache.turbine.om;
  *
  * @author <a href="mailto:[email protected]";>John D. McNally</a>
  * @version $Id$
- * 
+ *
  * @deprecated cft. deprecation comment in {@link OMTool}.
  */
 @Deprecated

Modified: 
turbine/core/trunk/src/java/org/apache/turbine/om/RetrieverFactory.java
URL: 
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/om/RetrieverFactory.java?rev=1812628&r1=1812627&r2=1812628&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/om/RetrieverFactory.java 
(original)
+++ turbine/core/trunk/src/java/org/apache/turbine/om/RetrieverFactory.java Thu 
Oct 19 12:34:25 2017
@@ -26,7 +26,7 @@ package org.apache.turbine.om;
  *
  * @author <a href="mailto:[email protected]";>John D. McNally</a>
  * @version $Id$
- * 
+ *
  * @deprecated cft. deprecation comment in {@link OMTool}.
  */
 @Deprecated


Reply via email to