Updated Branches:
  refs/heads/5.3 f656ce399 -> 7c95c161e

FIXED - TAP5-2097: Use a JavaScriptStack to import the
tapestry-beanvalidator.js file. 
- apply Alejandro Scandroli's patch without changes

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

Branch: refs/heads/5.3
Commit: 7c95c161ee2f9c7af0b18c517e086e421e95e6f4
Parents: f656ce3
Author: kaosko <[email protected]>
Authored: Sat Apr 13 20:48:23 2013 -0700
Committer: kaosko <[email protected]>
Committed: Sat Apr 13 20:48:23 2013 -0700

----------------------------------------------------------------------
 .../beanvalidator/BeanValidatorModule.java         |   43 ++++------
 .../beanvalidator/BeanValidatorStack.java          |   46 ++++++++++
 .../FormResourcesInclusionWorker.java              |   65 +++++++++++++++
 3 files changed, 126 insertions(+), 28 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/7c95c161/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorModule.java
----------------------------------------------------------------------
diff --git 
a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorModule.java
 
b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorModule.java
index e64fb4b..82d1a68 100644
--- 
a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorModule.java
+++ 
b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorModule.java
@@ -13,18 +13,20 @@
 // limitations under the License.
 package org.apache.tapestry5.beanvalidator;
 
-import org.apache.tapestry5.Asset;
-import org.apache.tapestry5.MarkupWriter;
-import org.apache.tapestry5.RenderSupport;
 import org.apache.tapestry5.internal.beanvalidator.*;
 import org.apache.tapestry5.ioc.Configuration;
 import org.apache.tapestry5.ioc.MappedConfiguration;
 import org.apache.tapestry5.ioc.OrderedConfiguration;
 import org.apache.tapestry5.ioc.ServiceBinder;
+import org.apache.tapestry5.ioc.annotations.Contribute;
 import org.apache.tapestry5.ioc.annotations.Local;
+import org.apache.tapestry5.ioc.annotations.Primary;
 import org.apache.tapestry5.ioc.services.PropertyShadowBuilder;
 import org.apache.tapestry5.ioc.services.ThreadLocale;
-import org.apache.tapestry5.services.*;
+import org.apache.tapestry5.services.FieldValidatorDefaultSource;
+import org.apache.tapestry5.services.javascript.JavaScriptStack;
+import org.apache.tapestry5.services.javascript.JavaScriptStackSource;
+import org.apache.tapestry5.services.transform.ComponentClassTransformWorker2;
 
 import javax.validation.MessageInterpolator;
 import javax.validation.Validator;
@@ -96,32 +98,17 @@ public class BeanValidatorModule
         configuration.add(new ClientConstraintDescriptor(Size.class, "size", 
"min", "max"));
     }
 
-    public void contributeMarkupRenderer(
-            OrderedConfiguration<MarkupRendererFilter> configuration,
-
-            final AssetSource assetSource,
-
-            final ThreadLocale threadLocale,
-
-            final Environment environment)
+    @Contribute(JavaScriptStackSource.class)
+    public static void addBeanValidationStack(MappedConfiguration<String, 
JavaScriptStack> configuration)
     {
-        MarkupRendererFilter injectBeanValidatorScript = new 
MarkupRendererFilter()
-        {
-            public void renderMarkup(MarkupWriter writer, MarkupRenderer 
renderer)
-            {
-                RenderSupport renderSupport = 
environment.peek(RenderSupport.class);
-
-                Asset validators = assetSource.getAsset(null, 
"org/apache/tapestry5/beanvalidator/tapestry-beanvalidator.js",
-                        threadLocale.getLocale());
-
-                renderSupport.addScriptLink(validators);
-
-                renderer.renderMarkup(writer);
-            }
-        };
-
+        configuration.addInstance(BeanValidatorStack.STACK_ID, 
BeanValidatorStack.class);
+    }
 
-        configuration.add("BeanValidatorScript", injectBeanValidatorScript, 
"after:*");
+    @Contribute(ComponentClassTransformWorker2.class)
+    @Primary
+    public static void 
addWorker(OrderedConfiguration<ComponentClassTransformWorker2> configuration)
+    {
+        configuration.addInstance("FeebboFormResourcesInclusionWorker", 
FormResourcesInclusionWorker.class);
     }
 
 }

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/7c95c161/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorStack.java
----------------------------------------------------------------------
diff --git 
a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorStack.java
 
b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorStack.java
new file mode 100644
index 0000000..c17e8aa
--- /dev/null
+++ 
b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/BeanValidatorStack.java
@@ -0,0 +1,46 @@
+package org.apache.tapestry5.beanvalidator;
+
+import org.apache.tapestry5.Asset;
+import org.apache.tapestry5.ioc.services.ThreadLocale;
+import org.apache.tapestry5.services.AssetSource;
+import org.apache.tapestry5.services.javascript.JavaScriptStack;
+import org.apache.tapestry5.services.javascript.StylesheetLink;
+
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+
+public class BeanValidatorStack implements JavaScriptStack
+{
+    public static final String STACK_ID = "BeanValidatorStack";
+
+    private final List<Asset> javaScriptStack;
+
+    public BeanValidatorStack(final AssetSource assetSource, final 
ThreadLocale threadLocale)
+    {
+        javaScriptStack = Arrays.asList(assetSource.getAsset(null,
+                
"org/apache/tapestry5/beanvalidator/tapestry-beanvalidator.js", 
threadLocale.getLocale()));
+    }
+
+    public List<String> getStacks()
+    {
+        return Collections.emptyList();
+    }
+
+    public List<Asset> getJavaScriptLibraries()
+    {
+
+        return javaScriptStack;
+    }
+
+    public List<StylesheetLink> getStylesheets()
+    {
+
+        return Collections.emptyList();
+    }
+
+    public String getInitialization()
+    {
+        return null;
+    }
+}

http://git-wip-us.apache.org/repos/asf/tapestry-5/blob/7c95c161/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/FormResourcesInclusionWorker.java
----------------------------------------------------------------------
diff --git 
a/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/FormResourcesInclusionWorker.java
 
b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/FormResourcesInclusionWorker.java
new file mode 100644
index 0000000..0aed927
--- /dev/null
+++ 
b/tapestry-beanvalidator/src/main/java/org/apache/tapestry5/beanvalidator/FormResourcesInclusionWorker.java
@@ -0,0 +1,65 @@
+//
+// Copyright 2010 GOT5 (Gang Of Tapestry 5)
+//
+// 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
+//
+//     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.
+//
+
+package org.apache.tapestry5.beanvalidator;
+
+import org.apache.tapestry5.annotations.SetupRender;
+import org.apache.tapestry5.corelib.components.Form;
+import org.apache.tapestry5.corelib.components.FormFragment;
+import org.apache.tapestry5.model.MutableComponentModel;
+import org.apache.tapestry5.plastic.MethodAdvice;
+import org.apache.tapestry5.plastic.MethodInvocation;
+import org.apache.tapestry5.plastic.PlasticClass;
+import org.apache.tapestry5.plastic.PlasticMethod;
+import org.apache.tapestry5.services.TransformConstants;
+import org.apache.tapestry5.services.javascript.JavaScriptSupport;
+import org.apache.tapestry5.services.transform.ComponentClassTransformWorker2;
+import org.apache.tapestry5.services.transform.TransformationSupport;
+
+/**
+ * Respectfully borrowed from the tapestry5-jquery project
+ * 
https://github.com/got5/tapestry5-jquery/blob/master/src/main/java/org/got5/tapestry5/jquery/services/FormResourcesInclusionWorker.java
+ */
+public class FormResourcesInclusionWorker implements 
ComponentClassTransformWorker2
+{
+    private final JavaScriptSupport javaScriptSupport;
+
+    public FormResourcesInclusionWorker(JavaScriptSupport javaScriptSupport)
+    {
+        this.javaScriptSupport = javaScriptSupport;
+    }
+
+    public void transform(PlasticClass plasticClass, TransformationSupport 
support, MutableComponentModel model)
+    {
+        if (model.getComponentClassName().equals(Form.class.getName()) ||
+                
model.getComponentClassName().equals(FormFragment.class.getName()))
+        {
+            PlasticMethod setupRender = 
plasticClass.introduceMethod(TransformConstants.SETUP_RENDER_DESCRIPTION);
+
+            setupRender.addAdvice(new MethodAdvice()
+            {
+                public void advise(MethodInvocation invocation)
+                {
+                    javaScriptSupport.importStack(BeanValidatorStack.STACK_ID);
+
+                    invocation.proceed();
+                }
+            });
+
+            model.addRenderPhase(SetupRender.class);
+        }
+    }
+}
\ No newline at end of file

Reply via email to