You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@tapestry.apache.org by dr...@apache.org on 2010/04/21 08:23:09 UTC

svn commit: r936168 - in /tapestry/tapestry5/trunk/tapestry-core/src: main/java/org/apache/tapestry5/ main/java/org/apache/tapestry5/internal/bindings/ main/java/org/apache/tapestry5/services/ test/java/org/apache/tapestry5/internal/bindings/

Author: drobiazko
Date: Wed Apr 21 06:23:09 2010
New Revision: 936168

URL: http://svn.apache.org/viewvc?rev=936168&view=rev
Log:
TAP5-1094: Create a binding prefix, "symbol:", that is used to access IoC symbols

Added:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/SymbolBindingFactory.java   (with props)
Modified:
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/BindingConstants.java
    tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
    tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/BindingFactoryTest.java

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/BindingConstants.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/BindingConstants.java?rev=936168&r1=936167&r2=936168&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/BindingConstants.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/BindingConstants.java Wed Apr 21 06:23:09 2010
@@ -91,4 +91,12 @@ public class BindingConstants
      * @since 5.1.0.0
      */
     public static final String CONTEXT = "context";
+    
+
+    /**
+     * References a value of a symbol.
+     * 
+     * @since 5.2.0
+     */
+    public static final String SYMBOL = "symbol";
 }

Added: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/SymbolBindingFactory.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/SymbolBindingFactory.java?rev=936168&view=auto
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/SymbolBindingFactory.java (added)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/SymbolBindingFactory.java Wed Apr 21 06:23:09 2010
@@ -0,0 +1,40 @@
+// Copyright 2010 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
+//
+//     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.internal.bindings;
+
+import org.apache.tapestry5.Binding;
+import org.apache.tapestry5.ComponentResources;
+import org.apache.tapestry5.ioc.Location;
+import org.apache.tapestry5.ioc.services.SymbolSource;
+import org.apache.tapestry5.services.BindingFactory;
+
+public class SymbolBindingFactory implements BindingFactory
+{
+    private SymbolSource symbolSource;
+    
+    public SymbolBindingFactory(SymbolSource symbolSource)
+    {
+        this.symbolSource = symbolSource;
+    }
+
+    public Binding newBinding(String description, ComponentResources container,
+            ComponentResources component, String expression, Location location)
+    {
+     
+        String value = symbolSource.valueForSymbol(expression);
+        
+        return new LiteralBinding(location, description, value);
+    }
+
+}

Propchange: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/SymbolBindingFactory.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/internal/bindings/SymbolBindingFactory.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java?rev=936168&r1=936167&r2=936168&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/main/java/org/apache/tapestry5/services/TapestryModule.java Wed Apr 21 06:23:09 2010
@@ -353,6 +353,7 @@ public final class TapestryModule
         binder.bind(BindingFactory.class, ContextBindingFactory.class).withId("ContextBindingFactory");
         binder.bind(BindingFactory.class, NullFieldStrategyBindingFactory.class).withId(
                 "NullFieldStrategyBindingFactory");
+        binder.bind(BindingFactory.class, SymbolBindingFactory.class).withId("SymbolBindingFactory");
         binder.bind(URLEncoder.class, URLEncoderImpl.class);
         binder.bind(ContextPathEncoder.class, ContextPathEncoderImpl.class);
         binder.bind(ApplicationStatePersistenceStrategy.class, SessionApplicationStatePersistenceStrategy.class)
@@ -427,7 +428,10 @@ public final class TapestryModule
     BindingFactory nullFieldStrategyBindingFactory,
 
     @InjectService("ContextBindingFactory")
-    BindingFactory contextBindingFactory)
+    BindingFactory contextBindingFactory,
+
+    @InjectService("SymbolBindingFactory")
+    BindingFactory symbolBindingFactory)
     {
         configuration.add(BindingConstants.LITERAL, new LiteralBindingFactory());
         configuration.add(BindingConstants.COMPONENT, new ComponentBindingFactory());
@@ -440,7 +444,7 @@ public final class TapestryModule
         configuration.add(BindingConstants.TRANSLATE, translateBindingFactory);
         configuration.add(BindingConstants.ASSET, assetBindingFactory);
         configuration.add(BindingConstants.NULLFIELDSTRATEGY, nullFieldStrategyBindingFactory);
-        configuration.add(BindingConstants.CONTEXT, contextBindingFactory);
+        configuration.add(BindingConstants.SYMBOL, symbolBindingFactory);
     }
 
     public static void contributeClasspathAssetAliasManager(MappedConfiguration<String, String> configuration,

Modified: tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/BindingFactoryTest.java
URL: http://svn.apache.org/viewvc/tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/BindingFactoryTest.java?rev=936168&r1=936167&r2=936168&view=diff
==============================================================================
--- tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/BindingFactoryTest.java (original)
+++ tapestry/tapestry5/trunk/tapestry-core/src/test/java/org/apache/tapestry5/internal/bindings/BindingFactoryTest.java Wed Apr 21 06:23:09 2010
@@ -17,6 +17,7 @@ package org.apache.tapestry5.internal.bi
 import org.apache.tapestry5.Binding;
 import org.apache.tapestry5.ComponentResources;
 import org.apache.tapestry5.FieldTranslator;
+import org.apache.tapestry5.SymbolConstants;
 import org.apache.tapestry5.internal.services.StringInternerImpl;
 import org.apache.tapestry5.internal.test.InternalBaseTestCase;
 import org.apache.tapestry5.ioc.Location;
@@ -88,4 +89,21 @@ public class BindingFactoryTest extends 
 
         verify();
     }
+    
+    @Test
+    public void symbol_binding()
+    {
+        ComponentResources res = mockInternalComponentResources();
+        Location l = mockLocation();
+
+        replay();
+        
+        BindingFactory factory = getService("SymbolBindingFactory", BindingFactory.class);
+        
+        Binding binding = factory.newBinding("Test binding", res, null, SymbolConstants.START_PAGE_NAME, l);
+        
+        assertEquals(binding.get(), "start");
+        
+        verify();
+    }
 }