You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by tv...@apache.org on 2019/03/05 19:53:39 UTC
svn commit: r1854867 - in
/turbine/core/trunk/src/java/org/apache/turbine/pipeline:
DefaultSetEncodingValve.java DetermineActionValve.java
DetermineTargetValve.java Valve.java ValveContext.java
Author: tv
Date: Tue Mar 5 19:53:39 2019
New Revision: 1854867
URL: http://svn.apache.org/viewvc?rev=1854867&view=rev
Log:
Made Valve and ValveContext functional interfaces
Some cosmetics
Modified:
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineActionValve.java
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineTargetValve.java
turbine/core/trunk/src/java/org/apache/turbine/pipeline/Valve.java
turbine/core/trunk/src/java/org/apache/turbine/pipeline/ValveContext.java
Modified: turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java
URL: http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java?rev=1854867&r1=1854866&r2=1854867&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java (original)
+++ turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java Tue Mar 5 19:53:39 2019
@@ -64,7 +64,6 @@ public class DefaultSetEncodingValve
if (requestEncoding == null)
{
requestEncoding = LocaleUtils.getDefaultInputEncoding();
-
log.debug("Changing Input Encoding to {}", requestEncoding);
try
Modified: turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineActionValve.java
URL: http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineActionValve.java?rev=1854867&r1=1854866&r2=1854867&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineActionValve.java (original)
+++ turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineActionValve.java Tue Mar 5 19:53:39 2019
@@ -51,7 +51,7 @@ public class DetermineActionValve
throws IOException, TurbineException
{
RunData data = pipelineData.getRunData();
- if (! data.hasAction())
+ if (!data.hasAction())
{
String action =
data.getParameters().getString(URIConstants.CGI_ACTION_PARAM);
@@ -59,7 +59,6 @@ public class DetermineActionValve
if (action != null)
{
data.setAction(action);
-
log.debug("Set action from request parameter");
}
else
Modified: turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineTargetValve.java
URL: http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineTargetValve.java?rev=1854867&r1=1854866&r2=1854867&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineTargetValve.java (original)
+++ turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineTargetValve.java Tue Mar 5 19:53:39 2019
@@ -41,8 +41,7 @@ import org.apache.turbine.util.uri.URICo
* @author <a href="mailto:james@jamestaylor.org">James Taylor</a>
* @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
*/
-public class DetermineTargetValve
- implements Valve
+public class DetermineTargetValve implements Valve
{
private static final Logger log
= LogManager.getLogger(DetermineTargetValve.class);
@@ -55,26 +54,19 @@ public class DetermineTargetValve
throws IOException, TurbineException
{
RunData runData = pipelineData.getRunData();
- if (! runData.hasScreen())
+ if (!runData.hasScreen())
{
String target = runData.getParameters().getString(URIConstants.CGI_SCREEN_PARAM);
if (target != null)
{
runData.setScreen(target);
-
log.debug("Set screen target from request parameter");
}
else
{
- /* data.setScreen(Turbine.getConfiguration().getString(
- Turbine.TEMPLATE_HOMEPAGE));
-
- log.debug("Set target using default value");
- */
log.debug("No target screen");
}
-
}
log.debug("Screen Target is now: {}", runData::getScreen);
Modified: turbine/core/trunk/src/java/org/apache/turbine/pipeline/Valve.java
URL: http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/pipeline/Valve.java?rev=1854867&r1=1854866&r2=1854867&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/pipeline/Valve.java (original)
+++ turbine/core/trunk/src/java/org/apache/turbine/pipeline/Valve.java Tue Mar 5 19:53:39 2019
@@ -42,6 +42,7 @@ import org.apache.turbine.util.TurbineEx
*
* @see #invoke(PipelineData, ValveContext)
*/
+@FunctionalInterface
public interface Valve
{
/**
Modified: turbine/core/trunk/src/java/org/apache/turbine/pipeline/ValveContext.java
URL: http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/pipeline/ValveContext.java?rev=1854867&r1=1854866&r2=1854867&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/pipeline/ValveContext.java (original)
+++ turbine/core/trunk/src/java/org/apache/turbine/pipeline/ValveContext.java Tue Mar 5 19:53:39 2019
@@ -43,6 +43,7 @@ import org.apache.turbine.util.TurbineEx
* @author <a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a>
* @version $Revision$ $Date$
*/
+@FunctionalInterface
public interface ValveContext
{
/**
Re: svn commit: r1854867 - in
/turbine/core/trunk/src/java/org/apache/turbine/pipeline:
DefaultSetEncodingValve.java DetermineActionValve.java
DetermineTargetValve.java Valve.java ValveContext.java
Posted by Thomas Vandahl <tv...@apache.org>.
Hi Georg,
On 11.03.19 10:28, Georg Kallidis wrote:
> It started like this, that I thought it might be better to use a stream's
> method tryAdvance in TurbinePipeline.invokeNext (to begin with setting
> instead of valves.iterator valves.stream in TP.invoke call to state.set) -
> but this resulted into a endless loop/stackoverflow. After this using bulk
> stream/foreach would make ValveContext's invokeNext useless (or better it
> have to be removed ).
I understand that the invokeNext method exists to give valves a way of
stopping execution if they see fit. It is of not much use otherwise.
Another question was: Is ThreadLocal of use here
> really? The mechanism of using a ThreadLocal<Iterator<Valve>> might be
> quite robust, although a valves stream seemed better. Could we not use a
> stream instead of CopyOnWriteArrayList for valves? But if valves are
> thread safe, do we need ThreadLocal at all?
The iterator keeps the state of a single request, so keeping it
thread-local is essential. I moved from synchronized methods to
CopyOnWriteArrayList to achieve a lock-free operation. This made
parallel execution about 30% faster.
If you make any changes, be sure to compare performance with
org.apache.turbine.pipeline.PipelineTest.testPipelinePerformance()
> Is it worth the effort?
I don't think so.
Bye, Thomas
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@turbine.apache.org
For additional commands, e-mail: dev-help@turbine.apache.org
Re: Re: svn commit: r1854867 - in /turbine/core/trunk/src/java/org/apache/turbine/pipeline: DefaultSetEncodingValve.java
DetermineActionValve.java DetermineTargetValve.java Valve.java
ValveContext.java
Posted by Georg Kallidis <ge...@cedis.fu-berlin.de>.
Hi Thomas,
thanks for pointing for a more precise answer ;-) This might come to the
heart of Turbine ;-)
It started like this, that I thought it might be better to use a stream's
method tryAdvance in TurbinePipeline.invokeNext (to begin with setting
instead of valves.iterator valves.stream in TP.invoke call to state.set) -
but this resulted into a endless loop/stackoverflow. After this using bulk
stream/foreach would make ValveContext's invokeNext useless (or better it
have to be removed ). Another question was: Is ThreadLocal of use here
really? The mechanism of using a ThreadLocal<Iterator<Valve>> might be
quite robust, although a valves stream seemed better. Could we not use a
stream instead of CopyOnWriteArrayList for valves? But if valves are
thread safe, do we need ThreadLocal at all?
Is it worth the effort?
Best regards,
Georg
P.S. We might need more testing to understand better, what's happening
here? ;-)
Von: Thomas Vandahl <tv...@apache.org>
An: Turbine Developers List <de...@turbine.apache.org>
Datum: 08.03.2019 17:28
Betreff: Re: svn commit: r1854867 - in
/turbine/core/trunk/src/java/org/apache/turbine/pipeline:
DefaultSetEncodingValve.java DetermineActionValve.java
DetermineTargetValve.java Valve.java ValveContext.java
Hi Georg,
On 06.03.19 14:15, Georg Kallidis wrote:
> I'll let this for now. Changing the mechanism in TurbinePipeline
> invokeNext method seems (to me) to be more complex, if we do not want to
> remove ValveContext entirely ... might be more performant now than
> otherwise without it.
Would you care to explain what your initial intention was?
Bye, Thomas
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@turbine.apache.org
For additional commands, e-mail: dev-help@turbine.apache.org
Re: svn commit: r1854867 - in
/turbine/core/trunk/src/java/org/apache/turbine/pipeline:
DefaultSetEncodingValve.java DetermineActionValve.java
DetermineTargetValve.java Valve.java ValveContext.java
Posted by Thomas Vandahl <tv...@apache.org>.
Hi Georg,
On 06.03.19 14:15, Georg Kallidis wrote:
> I'll let this for now. Changing the mechanism in TurbinePipeline
> invokeNext method seems (to me) to be more complex, if we do not want to
> remove ValveContext entirely ... might be more performant now than
> otherwise without it.
Would you care to explain what your initial intention was?
Bye, Thomas
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@turbine.apache.org
For additional commands, e-mail: dev-help@turbine.apache.org
Re: svn commit: r1854867 - in /turbine/core/trunk/src/java/org/apache/turbine/pipeline: DefaultSetEncodingValve.java
DetermineActionValve.java DetermineTargetValve.java Valve.java
ValveContext.java
Posted by Georg Kallidis <ge...@cedis.fu-berlin.de>.
Hi Thomas,
thanks!
I'll let this for now. Changing the mechanism in TurbinePipeline
invokeNext method seems (to me) to be more complex, if we do not want to
remove ValveContext entirely ... might be more performant now than
otherwise without it.
Best regards, Georg
Von: tv@apache.org
An: commits@turbine.apache.org
Datum: 05.03.2019 20:53
Betreff: svn commit: r1854867 - in
/turbine/core/trunk/src/java/org/apache/turbine/pipeline:
DefaultSetEncodingValve.java DetermineActionValve.java
DetermineTargetValve.java Valve.java ValveContext.java
Author: tv
Date: Tue Mar 5 19:53:39 2019
New Revision: 1854867
URL: http://svn.apache.org/viewvc?rev=1854867&view=rev
Log:
Made Valve and ValveContext functional interfaces
Some cosmetics
Modified:
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineActionValve.java
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineTargetValve.java
turbine/core/trunk/src/java/org/apache/turbine/pipeline/Valve.java
turbine/core/trunk/src/java/org/apache/turbine/pipeline/ValveContext.java
Modified:
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java?rev=1854867&r1=1854866&r2=1854867&view=diff
==============================================================================
---
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java
(original)
+++
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DefaultSetEncodingValve.java
Tue Mar 5 19:53:39 2019
@@ -64,7 +64,6 @@ public class DefaultSetEncodingValve
if (requestEncoding == null)
{
requestEncoding = LocaleUtils.getDefaultInputEncoding();
-
log.debug("Changing Input Encoding to {}", requestEncoding);
try
Modified:
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineActionValve.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineActionValve.java?rev=1854867&r1=1854866&r2=1854867&view=diff
==============================================================================
---
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineActionValve.java
(original)
+++
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineActionValve.java
Tue Mar 5 19:53:39 2019
@@ -51,7 +51,7 @@ public class DetermineActionValve
throws IOException, TurbineException
{
RunData data = pipelineData.getRunData();
- if (! data.hasAction())
+ if (!data.hasAction())
{
String action =
data.getParameters().getString(URIConstants.CGI_ACTION_PARAM);
@@ -59,7 +59,6 @@ public class DetermineActionValve
if (action != null)
{
data.setAction(action);
-
log.debug("Set action from request parameter");
}
else
Modified:
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineTargetValve.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineTargetValve.java?rev=1854867&r1=1854866&r2=1854867&view=diff
==============================================================================
---
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineTargetValve.java
(original)
+++
turbine/core/trunk/src/java/org/apache/turbine/pipeline/DetermineTargetValve.java
Tue Mar 5 19:53:39 2019
@@ -41,8 +41,7 @@ import org.apache.turbine.util.uri.URICo
* @author <a href="mailto:james@jamestaylor.org">James Taylor</a>
* @author <a href="mailto:peter@courcoux.biz">Peter Courcoux</a>
*/
-public class DetermineTargetValve
- implements Valve
+public class DetermineTargetValve implements Valve
{
private static final Logger log
= LogManager.getLogger(DetermineTargetValve.class);
@@ -55,26 +54,19 @@ public class DetermineTargetValve
throws IOException, TurbineException
{
RunData runData = pipelineData.getRunData();
- if (! runData.hasScreen())
+ if (!runData.hasScreen())
{
String target =
runData.getParameters().getString(URIConstants.CGI_SCREEN_PARAM);
if (target != null)
{
runData.setScreen(target);
-
log.debug("Set screen target from request parameter");
}
else
{
- /* data.setScreen(Turbine.getConfiguration().getString(
- Turbine.TEMPLATE_HOMEPAGE));
-
- log.debug("Set target using default value");
- */
log.debug("No target screen");
}
-
}
log.debug("Screen Target is now: {}", runData::getScreen);
Modified:
turbine/core/trunk/src/java/org/apache/turbine/pipeline/Valve.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/pipeline/Valve.java?rev=1854867&r1=1854866&r2=1854867&view=diff
==============================================================================
--- turbine/core/trunk/src/java/org/apache/turbine/pipeline/Valve.java
(original)
+++ turbine/core/trunk/src/java/org/apache/turbine/pipeline/Valve.java Tue
Mar 5 19:53:39 2019
@@ -42,6 +42,7 @@ import org.apache.turbine.util.TurbineEx
*
* @see #invoke(PipelineData, ValveContext)
*/
+@FunctionalInterface
public interface Valve
{
/**
Modified:
turbine/core/trunk/src/java/org/apache/turbine/pipeline/ValveContext.java
URL:
http://svn.apache.org/viewvc/turbine/core/trunk/src/java/org/apache/turbine/pipeline/ValveContext.java?rev=1854867&r1=1854866&r2=1854867&view=diff
==============================================================================
---
turbine/core/trunk/src/java/org/apache/turbine/pipeline/ValveContext.java
(original)
+++
turbine/core/trunk/src/java/org/apache/turbine/pipeline/ValveContext.java
Tue Mar 5 19:53:39 2019
@@ -43,6 +43,7 @@ import org.apache.turbine.util.TurbineEx
* @author <a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a>
* @version $Revision$ $Date$
*/
+@FunctionalInterface
public interface ValveContext
{
/**