You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by hl...@apache.org on 2014/08/01 17:46:21 UTC

git commit: TAP5-2364: Tapestry can use prohibited operations in some environments, such as Google App Engine

Repository: tapestry-5
Updated Branches:
  refs/heads/master b25c8cde5 -> 7345bfb29


TAP5-2364: Tapestry can use prohibited operations in some environments, such as Google App Engine


Project: http://git-wip-us.apache.org/repos/asf/tapestry-5/repo
Commit: http://git-wip-us.apache.org/repos/asf/tapestry-5/commit/7345bfb2
Tree: http://git-wip-us.apache.org/repos/asf/tapestry-5/tree/7345bfb2
Diff: http://git-wip-us.apache.org/repos/asf/tapestry-5/diff/7345bfb2

Branch: refs/heads/master
Commit: 7345bfb29bbb995209fcfb9f98f365b1cb643f68
Parents: b25c8cd
Author: Howard M. Lewis Ship <hl...@apache.org>
Authored: Fri Aug 1 08:46:08 2014 -0700
Committer: Howard M. Lewis Ship <hl...@apache.org>
Committed: Fri Aug 1 08:46:08 2014 -0700

----------------------------------------------------------------------
 .../org/apache/tapestry5/SymbolConstants.java   |  7 +++++++
 .../exceptions/ExceptionReporterImpl.java       | 20 +++++++++++++++++---
 .../tapestry5/modules/TapestryModule.java       |  8 +++++---
 .../ResourceTransformerFactoryImpl.java         |  9 +++++----
 4 files changed, 34 insertions(+), 10 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/7345bfb2/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java b/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
index 4ed67a8..bef3df4 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/SymbolConstants.java
@@ -520,4 +520,11 @@ public class SymbolConstants
      */
     public static final String ENABLE_HTML5_SUPPORT = "tapestry.enable-html5-support";
 
+    /**
+     * A general switch for restrictive environments, such as Google App Engine, which forbid some useful operations,
+     * such as creating files or directories. Defaults to false.
+     *
+     * @since 5.4
+     */
+    public static final String RESTRICTIVE_ENVIRONMENT = "tapestry.restrictive-environment";
 }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/7345bfb2/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/exceptions/ExceptionReporterImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/exceptions/ExceptionReporterImpl.java b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/exceptions/ExceptionReporterImpl.java
index 6a9bfad..3d0ab83 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/exceptions/ExceptionReporterImpl.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/internal/services/exceptions/ExceptionReporterImpl.java
@@ -69,6 +69,10 @@ public class ExceptionReporterImpl implements ExceptionReporter
     private String contextPath;
 
     @Inject
+    @Symbol(SymbolConstants.RESTRICTIVE_ENVIRONMENT)
+    private boolean restrictive;
+
+    @Inject
     private ExceptionAnalyzer analyzer;
 
     private final AtomicInteger uid = new AtomicInteger();
@@ -83,15 +87,25 @@ public class ExceptionReporterImpl implements ExceptionReporter
     public void reportException(Throwable exception)
     {
         Date date = new Date();
-        String folderName = String.format("%tY-%<tm-%<td/%<tH/%<tM", date);
         String fileName = String.format(
                 "exception-%tY%<tm%<td-%<tH%<tM%<tS-%<tL.%d.txt", date,
                 uid.getAndIncrement());
 
+        File folder;
+
         try
         {
-            File folder = new File(logDir, folderName);
-            folder.mkdirs();
+            if (restrictive)
+            {
+                // Good luck with this; all exceptions written to a single folder.
+                folder = logDir;
+            } else
+            {
+                String folderName = String.format("%tY-%<tm-%<td/%<tH/%<tM", date);
+                folder = new File(logDir, folderName);
+
+                folder.mkdirs();
+            }
 
             File log = new File(folder, fileName);
 

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/7345bfb2/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
----------------------------------------------------------------------
diff --git a/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java b/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
index de06610..2d852a9 100644
--- a/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
+++ b/tapestry-core/src/main/java/org/apache/tapestry5/modules/TapestryModule.java
@@ -2128,15 +2128,17 @@ public final class TapestryModule
         configuration.add(SymbolConstants.FORM_FIELD_CSS_CLASS, "form-control");
         
         // TAP5-1998
-        configuration.add(SymbolConstants.LENIENT_DATE_FORMAT, "false");
+        configuration.add(SymbolConstants.LENIENT_DATE_FORMAT, false);
         
         // TAP5-2187
-        configuration.add(SymbolConstants.STRICT_CSS_URL_REWRITING, "false");
+        configuration.add(SymbolConstants.STRICT_CSS_URL_REWRITING, false);
 
         configuration.add(SymbolConstants.EXCEPTION_REPORTS_DIR, "build/exceptions");
         
         // TAP5-1815
-        configuration.add(SymbolConstants.ENABLE_HTML5_SUPPORT, "false");
+        configuration.add(SymbolConstants.ENABLE_HTML5_SUPPORT, false);
+
+        configuration.add(SymbolConstants.RESTRICTIVE_ENVIRONMENT, false);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/7345bfb2/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/ResourceTransformerFactoryImpl.java
----------------------------------------------------------------------
diff --git a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/ResourceTransformerFactoryImpl.java b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/ResourceTransformerFactoryImpl.java
index 5fea1d9..904fa54 100644
--- a/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/ResourceTransformerFactoryImpl.java
+++ b/tapestry-webresources/src/main/java/org/apache/tapestry5/internal/webresources/ResourceTransformerFactoryImpl.java
@@ -1,5 +1,3 @@
-// Copyright 2013 The Apache Software Foundation
-//
 // Licensed under the Apache License, Version 2.0 (the "License");
 // you may not use this file except in compliance with the License.
 // You may obtain a copy of the License at
@@ -60,9 +58,12 @@ public class ResourceTransformerFactoryImpl implements ResourceTransformerFactor
     }
 
     @PostInjection
-    public void createCacheDir()
+    public void createCacheDir(@Symbol(SymbolConstants.RESTRICTIVE_ENVIRONMENT) boolean restrictive)
     {
-        cacheDir.mkdirs();
+        if (!restrictive)
+        {
+            cacheDir.mkdirs();
+        }
     }
 
     static class Compiled extends ContentChangeTracker