You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by gk...@apache.org on 2023/03/09 11:05:33 UTC

[turbine-core] branch trunk updated: Update dependencies: yauaa to v7.14.1, jython-standalone to v2.7.3, jakarta xml binding to 4.0.0,jaxb-impl to 4.0.2, jackson to v.2.14.2, testcontainer (docker) 1.17.6. Use Java 8 streaming in screens/PlainJSON .., make in DfaultUswerImpl setUserDelegate final, use mthode reference in AbstractSchedulerService and TurbineURLMapperService, use AtomInteger in DefaultSecurityService for variable counter, more minor code changes

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

gk pushed a commit to branch trunk
in repository https://gitbox.apache.org/repos/asf/turbine-core.git


The following commit(s) were added to refs/heads/trunk by this push:
     new 7bf0387c Update dependencies: yauaa to v7.14.1, jython-standalone to v2.7.3, jakarta xml binding to 4.0.0,jaxb-impl to 4.0.2, jackson to v.2.14.2, testcontainer (docker) 1.17.6. Use Java 8 streaming in screens/PlainJSON .., make in DfaultUswerImpl setUserDelegate final, use mthode reference in AbstractSchedulerService and TurbineURLMapperService, use AtomInteger in DefaultSecurityService  for variable counter, more minor code changes
7bf0387c is described below

commit 7bf0387cfc7b1ef7fbae5142f7185551fd5b82ea
Author: Georg Kallidis <gk...@apache.org>
AuthorDate: Mon Mar 6 12:00:23 2023 +0100

    Update dependencies: yauaa to v7.14.1, jython-standalone to v2.7.3, jakarta xml binding to 4.0.0,jaxb-impl to 4.0.2, jackson to v.2.14.2, testcontainer (docker) 1.17.6. Use Java 8 streaming in screens/PlainJSON .., make in DfaultUswerImpl setUserDelegate final, use mthode reference in AbstractSchedulerService and TurbineURLMapperService, use AtomInteger in DefaultSecurityService  for variable counter, more minor code changes
---
 pom.xml                                            | 12 +++++------
 src/java/org/apache/turbine/Turbine.java           |  1 +
 .../org/apache/turbine/modules/ActionLoader.java   |  2 +-
 .../org/apache/turbine/modules/LayoutLoader.java   |  2 +-
 .../apache/turbine/modules/NavigationLoader.java   |  2 +-
 .../org/apache/turbine/modules/PageLoader.java     |  2 +-
 .../apache/turbine/modules/ScheduledJobLoader.java |  2 +-
 .../org/apache/turbine/modules/ScreenLoader.java   |  2 +-
 .../screens/PlainJSONSecureAnnotatedScreen.java    | 23 +++++++++++-----------
 .../turbine/om/security/DefaultUserImpl.java       |  4 ++--
 .../apache/turbine/pipeline/TurbinePipeline.java   |  3 ++-
 .../apache/turbine/services/BaseServiceBroker.java |  5 +++--
 .../localization/DateTimeFormatterInterface.java   | 10 ++++++++++
 .../localization/DateTimeFormatterService.java     | 13 ++----------
 .../schedule/AbstractSchedulerService.java         |  2 +-
 .../services/security/DefaultSecurityService.java  | 14 +++++++------
 .../urlmapper/TurbineURLMapperService.java         |  4 ++--
 .../urlmapper/TurbineURLMapperServiceTest.java     |  8 ++------
 18 files changed, 56 insertions(+), 55 deletions(-)

diff --git a/pom.xml b/pom.xml
index 733764d6..1493b1e8 100644
--- a/pom.xml
+++ b/pom.xml
@@ -913,7 +913,7 @@
       <groupId>nl.basjes.parse.useragent</groupId>
       <artifactId>yauaa</artifactId>
       <!-- java 11 required for v6.1+ -->
-      <version>7.9.0</version>
+      <version>7.14.1</version>
     </dependency>
     <dependency>
       <groupId>org.apache.fulcrum</groupId>
@@ -1027,7 +1027,7 @@
     <dependency>
       <groupId>org.python</groupId>
       <artifactId>jython-standalone</artifactId>
-      <version>2.7.2</version>
+      <version>2.7.3</version>
       <optional>true</optional>
     </dependency>
     <dependency>
@@ -1102,12 +1102,12 @@
  	<dependency>
         <groupId>jakarta.xml.bind</groupId>
         <artifactId>jakarta.xml.bind-api</artifactId>
-        <version>2.3.3</version>
+        <version>4.0.0</version>
     </dependency>
     <dependency>
         <groupId>com.sun.xml.bind</groupId>
         <artifactId>jaxb-impl</artifactId>
-        <version>2.3.3</version>
+        <version>4.0.2</version>
         <scope>runtime</scope>
     </dependency>
     <!-- testcontainer minimal shared resources -->
@@ -1309,9 +1309,9 @@
      <fulcrum.security>2.1.1-SNAPSHOT</fulcrum.security>
     <fulcrum.yaafi>1.0.9-SNAPSHOT</fulcrum.yaafi>
     <torque.version>5.1</torque.version>
-    <jackson2.version>2.14.0-rc2</jackson2.version>
+    <jackson2.version>2.14.2</jackson2.version>
     <doclint>none</doclint>
-    <docker.testcontainers.version>1.17.5</docker.testcontainers.version>
+    <docker.testcontainers.version>1.17.6</docker.testcontainers.version>
     <jacoco.skip>true</jacoco.skip>
     <argLine />
   </properties>
diff --git a/src/java/org/apache/turbine/Turbine.java b/src/java/org/apache/turbine/Turbine.java
index b1f46627..69f87614 100644
--- a/src/java/org/apache/turbine/Turbine.java
+++ b/src/java/org/apache/turbine/Turbine.java
@@ -790,6 +790,7 @@ public class Turbine extends HttpServlet
         catch (Throwable t)
         {
             handleHorribleException(res, t);
+
         }
     }
 
diff --git a/src/java/org/apache/turbine/modules/ActionLoader.java b/src/java/org/apache/turbine/modules/ActionLoader.java
index fe6ee092..eb881eec 100644
--- a/src/java/org/apache/turbine/modules/ActionLoader.java
+++ b/src/java/org/apache/turbine/modules/ActionLoader.java
@@ -31,7 +31,7 @@ import org.apache.turbine.pipeline.PipelineData;
  * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
  * @version $Id$
  */
-public class ActionLoader
+public final class ActionLoader
     extends GenericLoader<Action>
 {
     /** The single instance of this class. */
diff --git a/src/java/org/apache/turbine/modules/LayoutLoader.java b/src/java/org/apache/turbine/modules/LayoutLoader.java
index 90b67d80..f548b0d8 100644
--- a/src/java/org/apache/turbine/modules/LayoutLoader.java
+++ b/src/java/org/apache/turbine/modules/LayoutLoader.java
@@ -31,7 +31,7 @@ import org.apache.turbine.pipeline.PipelineData;
  * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
  * @version $Id$
  */
-public class LayoutLoader
+public final class LayoutLoader
     extends GenericLoader<Layout>
 {
     /** The single instance of this class. */
diff --git a/src/java/org/apache/turbine/modules/NavigationLoader.java b/src/java/org/apache/turbine/modules/NavigationLoader.java
index f52408f8..3f7e9f20 100644
--- a/src/java/org/apache/turbine/modules/NavigationLoader.java
+++ b/src/java/org/apache/turbine/modules/NavigationLoader.java
@@ -31,7 +31,7 @@ import org.apache.turbine.pipeline.PipelineData;
  * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
  * @version $Id$
  */
-public class NavigationLoader
+public final class NavigationLoader
     extends GenericLoader<Navigation>
 {
     /** The single instance of this class. */
diff --git a/src/java/org/apache/turbine/modules/PageLoader.java b/src/java/org/apache/turbine/modules/PageLoader.java
index 587567b6..1eab0255 100644
--- a/src/java/org/apache/turbine/modules/PageLoader.java
+++ b/src/java/org/apache/turbine/modules/PageLoader.java
@@ -31,7 +31,7 @@ import org.apache.turbine.pipeline.PipelineData;
  * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
  * @version $Id$
  */
-public class PageLoader
+public final class PageLoader
     extends GenericLoader<Page>
 {
     /** The single instance of this class. */
diff --git a/src/java/org/apache/turbine/modules/ScheduledJobLoader.java b/src/java/org/apache/turbine/modules/ScheduledJobLoader.java
index c682d6d8..122aa3eb 100644
--- a/src/java/org/apache/turbine/modules/ScheduledJobLoader.java
+++ b/src/java/org/apache/turbine/modules/ScheduledJobLoader.java
@@ -32,7 +32,7 @@ import org.apache.turbine.services.schedule.JobEntry;
  * @author <a href="mailto:hps@intermeta.de">Henning P. Schmiedehausen</a>
  * @version $Id$
  */
-public class ScheduledJobLoader
+public final class ScheduledJobLoader
     extends GenericLoader<ScheduledJob>
 {
     /** The single instance of this class. */
diff --git a/src/java/org/apache/turbine/modules/ScreenLoader.java b/src/java/org/apache/turbine/modules/ScreenLoader.java
index 3b5b3034..25cea9b5 100644
--- a/src/java/org/apache/turbine/modules/ScreenLoader.java
+++ b/src/java/org/apache/turbine/modules/ScreenLoader.java
@@ -33,7 +33,7 @@ import org.apache.turbine.pipeline.PipelineData;
  * @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
  * @version $Id$
  */
-public class ScreenLoader
+public final class ScreenLoader
     extends GenericLoader<Screen>
 {
     /** The single instance of this class. */
diff --git a/src/java/org/apache/turbine/modules/screens/PlainJSONSecureAnnotatedScreen.java b/src/java/org/apache/turbine/modules/screens/PlainJSONSecureAnnotatedScreen.java
index 4e56828b..f0bbe88f 100644
--- a/src/java/org/apache/turbine/modules/screens/PlainJSONSecureAnnotatedScreen.java
+++ b/src/java/org/apache/turbine/modules/screens/PlainJSONSecureAnnotatedScreen.java
@@ -20,6 +20,8 @@ package org.apache.turbine.modules.screens;
  */
 
 import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.Optional;
 
 import org.apache.fulcrum.security.model.turbine.TurbineAccessControlList;
 import org.apache.turbine.annotation.AnnotationProcessor;
@@ -59,17 +61,14 @@ public class PlainJSONSecureAnnotatedScreen extends PlainJSONScreen
     protected boolean isAuthorized(PipelineData pipelineData) throws Exception {
         RunData data = pipelineData.getRunData();
         Method[] methods = getClass().getMethods();
-        for (Method m : methods)
-        {
-            if (m.getName().equals( "doOutput" ))
-            {
-                if (data.getACL() == null)
-                {
-                    return false;
-                }
-                return AnnotationProcessor.isAuthorized( m, (TurbineAccessControlList<?>)data.getACL(), ConditionType.ANY );
-            }
-        }
-        return false;
+        // if the method passes the filter, it is authorized
+        return Arrays.stream(methods).filter(m ->
+                        m.getName().equals("doOutput"))
+                .takeWhile(m ->
+                        data.getACL() != null)
+                .findFirst()
+                .filter(m ->
+                        AnnotationProcessor.isAuthorized(m, (TurbineAccessControlList<?>) data.getACL(), ConditionType.ANY))
+                .isPresent();
     }
 }
diff --git a/src/java/org/apache/turbine/om/security/DefaultUserImpl.java b/src/java/org/apache/turbine/om/security/DefaultUserImpl.java
index 98295143..e716704d 100644
--- a/src/java/org/apache/turbine/om/security/DefaultUserImpl.java
+++ b/src/java/org/apache/turbine/om/security/DefaultUserImpl.java
@@ -660,7 +660,7 @@ public class DefaultUserImpl implements User
      * @param createDate The new creation date of the user
      */
     @Override
-    public void setCreateDate(Date createDate)
+    public final void setCreateDate(Date createDate)
     {
         setPerm(CREATE_DATE, createDate);
     }
@@ -751,7 +751,7 @@ public class DefaultUserImpl implements User
 	 * @see org.apache.turbine.om.security.UserDelegate#setUserDelegate(org.apache.fulcrum.security.model.turbine.entity.TurbineUser)
 	 */
     @Override
-	public void setUserDelegate(TurbineUser userDelegate)
+	public final void setUserDelegate(TurbineUser userDelegate)
     {
         this.userDelegate = userDelegate;
     }
diff --git a/src/java/org/apache/turbine/pipeline/TurbinePipeline.java b/src/java/org/apache/turbine/pipeline/TurbinePipeline.java
index d1ad7e41..de0fbeed 100644
--- a/src/java/org/apache/turbine/pipeline/TurbinePipeline.java
+++ b/src/java/org/apache/turbine/pipeline/TurbinePipeline.java
@@ -20,6 +20,7 @@ package org.apache.turbine.pipeline;
  */
 
 import java.io.IOException;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.concurrent.CopyOnWriteArrayList;
 
@@ -157,7 +158,7 @@ public class TurbinePipeline
             throws TurbineException, IOException
     {
         // Initialize the per-thread state for this thread
-        state.set(valves.iterator());
+        state.set(Collections.unmodifiableCollection(valves).iterator());
 
         // Invoke the first Valve in this pipeline for this request
         invokeNext(pipelineData);
diff --git a/src/java/org/apache/turbine/services/BaseServiceBroker.java b/src/java/org/apache/turbine/services/BaseServiceBroker.java
index 07857c84..cbdb0c68 100644
--- a/src/java/org/apache/turbine/services/BaseServiceBroker.java
+++ b/src/java/org/apache/turbine/services/BaseServiceBroker.java
@@ -21,6 +21,7 @@ package org.apache.turbine.services;
 
 
 import java.util.ArrayList;
+import java.util.Collections;
 import java.util.Iterator;
 import java.util.LinkedHashMap;
 import java.util.LinkedHashSet;
@@ -324,7 +325,7 @@ public abstract class BaseServiceBroker implements ServiceBroker
      */
     public Iterator<String> getServiceNames()
     {
-        return mapping.keySet().iterator();
+        return Collections.unmodifiableSet(mapping.keySet()).iterator();
     }
 
     /**
@@ -340,7 +341,7 @@ public abstract class BaseServiceBroker implements ServiceBroker
 
         keys.removeIf(key -> !key.startsWith(prefix));
 
-        return keys.iterator();
+        return Collections.unmodifiableSet(keys).iterator();
     }
 
     /**
diff --git a/src/java/org/apache/turbine/services/localization/DateTimeFormatterInterface.java b/src/java/org/apache/turbine/services/localization/DateTimeFormatterInterface.java
index 79784843..007abe13 100644
--- a/src/java/org/apache/turbine/services/localization/DateTimeFormatterInterface.java
+++ b/src/java/org/apache/turbine/services/localization/DateTimeFormatterInterface.java
@@ -5,6 +5,16 @@ import java.time.temporal.TemporalAccessor;
 import java.util.Locale;
 
 public interface DateTimeFormatterInterface {
+
+    /** Default date format. find supporrted formats in {@link DateTimeFormatterService} */
+    final String DATE_TIME_FORMAT_DEFAULT = "MM/dd/yyyy";
+
+    /**
+     * Property tag for the date format that is to be used for the web
+     * application.
+     */
+    final String DATE_TIME_FORMAT_KEY = "tool.datetimeTool.format";
+
     DateTimeFormatter getDefaultFormat();
 
     String getDateTimeFormatPattern();
diff --git a/src/java/org/apache/turbine/services/localization/DateTimeFormatterService.java b/src/java/org/apache/turbine/services/localization/DateTimeFormatterService.java
index 7d27064e..8786e43b 100644
--- a/src/java/org/apache/turbine/services/localization/DateTimeFormatterService.java
+++ b/src/java/org/apache/turbine/services/localization/DateTimeFormatterService.java
@@ -26,18 +26,9 @@ import java.util.Locale;
 public class DateTimeFormatterService
         extends TurbineBaseService implements DateTimeFormatterInterface {
 
-    public static String SERVICE_NAME = "DateTimeFormatterService";
+    public static final String SERVICE_NAME = "DateTimeFormatterService";
 
-    public static String ROLE = DateTimeFormatterService.class.getName();
-
-    /** Default date format. find supporrted formats in {@link DateTimeFormatterService} */
-    private static final String DATE_TIME_FORMAT_DEFAULT = "MM/dd/yyyy";
-
-    /**
-     * Property tag for the date format that is to be used for the web
-     * application.
-     */
-    private static final String DATE_TIME_FORMAT_KEY = "tool.datetimeTool.format";
+    public static final String ROLE = DateTimeFormatterService.class.getName();
 
     private String dateTimeFormatPattern = null;
     
diff --git a/src/java/org/apache/turbine/services/schedule/AbstractSchedulerService.java b/src/java/org/apache/turbine/services/schedule/AbstractSchedulerService.java
index 1f7a191b..d21af2d6 100644
--- a/src/java/org/apache/turbine/services/schedule/AbstractSchedulerService.java
+++ b/src/java/org/apache/turbine/services/schedule/AbstractSchedulerService.java
@@ -259,7 +259,7 @@ public abstract class AbstractSchedulerService extends TurbineBaseService implem
                 // Create the the housekeeping thread of the scheduler. It will
                 // wait for the time when the next task needs to be started,
                 // and then launch a worker thread to execute the task.
-                houseKeepingThread = new Thread(() -> houseKeeping(), ScheduleService.SERVICE_NAME);
+                houseKeepingThread = new Thread(this::houseKeeping, ScheduleService.SERVICE_NAME);
                 // Indicate that this is a system thread. JVM will quit only
                 // when there are no more enabled user threads. Settings threads
                 // spawned internally by Turbine as daemons allows commandline
diff --git a/src/java/org/apache/turbine/services/security/DefaultSecurityService.java b/src/java/org/apache/turbine/services/security/DefaultSecurityService.java
index 7000b3bb..d6dc658f 100644
--- a/src/java/org/apache/turbine/services/security/DefaultSecurityService.java
+++ b/src/java/org/apache/turbine/services/security/DefaultSecurityService.java
@@ -1,6 +1,8 @@
 package org.apache.turbine.services.security;
 
 
+import java.util.concurrent.atomic.AtomicInteger;
+
 /*
  * Licensed to the Apache Software Foundation (ASF) under one
  * or more contributor license agreements.  See the NOTICE file
@@ -74,7 +76,7 @@ public class DefaultSecurityService
         implements SecurityService
 {
     /** The number of threads concurrently reading security information */
-    private int readerCount = 0;
+    private AtomicInteger readerCount = new AtomicInteger(0);
 
     /** The instance of UserManager the SecurityService uses */
     private UserManager userManager = null;
@@ -563,9 +565,9 @@ public class DefaultSecurityService
      * Methods that read security information need to invoke this
      * method at the beginning of their body.
      */
-    protected synchronized void lockShared()
+    protected void lockShared()
     {
-        readerCount++;
+        readerCount.incrementAndGet();
     }
 
     /**
@@ -574,9 +576,9 @@ public class DefaultSecurityService
      * Methods that read security information need to invoke this
      * method at the end of their body.
      */
-    protected synchronized void unlockShared()
+    protected void unlockShared()
     {
-        readerCount--;
+        readerCount.decrementAndGet();
         this.notify();
     }
 
@@ -589,7 +591,7 @@ public class DefaultSecurityService
      */
     protected void lockExclusive()
     {
-        while (readerCount > 0)
+        while (readerCount.get() > 0)
         {
             try
             {
diff --git a/src/java/org/apache/turbine/services/urlmapper/TurbineURLMapperService.java b/src/java/org/apache/turbine/services/urlmapper/TurbineURLMapperService.java
index 23777871..6ace476c 100644
--- a/src/java/org/apache/turbine/services/urlmapper/TurbineURLMapperService.java
+++ b/src/java/org/apache/turbine/services/urlmapper/TurbineURLMapperService.java
@@ -232,11 +232,11 @@ public class TurbineURLMapperService
 
                 // add implicit parameters
                 urlMap.getImplicitParameters()
-                        .forEach((key1, value1) -> pp.add(key1, value1));
+                        .forEach(pp::add);
 
                 // add override parameters
                 urlMap.getOverrideParameters()
-                        .forEach((key, value) -> pp.setString(key, value));
+                        .forEach(pp::setString);
 
                 // remove ignore parameters
                 urlMap.getIgnoreParameters().keySet()
diff --git a/src/test/org/apache/turbine/services/urlmapper/TurbineURLMapperServiceTest.java b/src/test/org/apache/turbine/services/urlmapper/TurbineURLMapperServiceTest.java
index 6492fde4..7aed2ab8 100644
--- a/src/test/org/apache/turbine/services/urlmapper/TurbineURLMapperServiceTest.java
+++ b/src/test/org/apache/turbine/services/urlmapper/TurbineURLMapperServiceTest.java
@@ -197,14 +197,10 @@ public class TurbineURLMapperServiceTest extends BaseTestCase
 
         System.out.println("s1 estimateSize: " + spliterator1.estimateSize());
         spliterator1.forEachRemaining((IntConsumer) i ->
-        {
-            runCheck(templateURIs, counterSum, counters, parallel, sr);
-        });
+                runCheck(templateURIs, counterSum, counters, parallel, sr));
         System.out.println("s2 estimateSize: " + spliterator2.estimateSize());
         spliterator2.forEachRemaining((IntConsumer) i ->
-        {
-            runCheck(templateURIs, counterSum, counters, parallel, sr);
-        });
+                runCheck(templateURIs, counterSum, counters, parallel, sr));
 
         for (int i = 0; i < counters.size() - 1; i++)
         {