KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > tapestry > services > impl > BindingSourceImpl


1 // Copyright 2004, 2005 The Apache Software Foundation
2
//
3
// Licensed under the Apache License, Version 2.0 (the "License");
4
// you may not use this file except in compliance with the License.
5
// You may obtain a copy of the License at
6
//
7
// http://www.apache.org/licenses/LICENSE-2.0
8
//
9
// Unless required by applicable law or agreed to in writing, software
10
// distributed under the License is distributed on an "AS IS" BASIS,
11
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12
// See the License for the specific language governing permissions and
13
// limitations under the License.
14

15 package org.apache.tapestry.services.impl;
16
17 import java.util.HashMap JavaDoc;
18 import java.util.Iterator JavaDoc;
19 import java.util.List JavaDoc;
20 import java.util.Map JavaDoc;
21
22 import org.apache.hivemind.Location;
23 import org.apache.tapestry.IBinding;
24 import org.apache.tapestry.IComponent;
25 import org.apache.tapestry.binding.BindingFactory;
26 import org.apache.tapestry.binding.BindingSource;
27
28 /**
29  * Implementation of the <code>tapestry.bindings.BindingSource</code> service.
30  *
31  * @author Howard Lewis Ship
32  * @since 4.0
33  */

34 public class BindingSourceImpl implements BindingSource
35 {
36     private List JavaDoc _contributions;
37
38     private BindingFactory _literalBindingFactory;
39
40     /**
41      * Keyed on prefix, value is {@link BindingFactory}.
42      */

43     private Map JavaDoc _factoryMap = new HashMap JavaDoc();
44
45     public void initializeService()
46     {
47         Iterator JavaDoc i = _contributions.iterator();
48
49         while (i.hasNext())
50         {
51             BindingPrefixContribution c = (BindingPrefixContribution) i.next();
52
53             _factoryMap.put(c.getPrefix(), c.getFactory());
54         }
55     }
56
57     public IBinding createBinding(IComponent component, String JavaDoc bindingDescription,
58             String JavaDoc reference, String JavaDoc defaultPrefix, Location location)
59     {
60         String JavaDoc prefix = defaultPrefix;
61         String JavaDoc path = reference;
62
63         int colonx = reference.indexOf(':');
64
65         if (colonx > 1)
66         {
67             prefix = reference.substring(0, colonx);
68
69             if (_factoryMap.containsKey(prefix))
70                 path = reference.substring(colonx + 1);
71         }
72
73         BindingFactory factory = (BindingFactory) _factoryMap.get(prefix);
74
75         if (factory == null)
76             factory = _literalBindingFactory;
77
78         return factory.createBinding(component, bindingDescription, path, location);
79     }
80
81     public void setContributions(List JavaDoc contributions)
82     {
83         _contributions = contributions;
84     }
85
86     public void setLiteralBindingFactory(BindingFactory literalBindingFactory)
87     {
88         _literalBindingFactory = literalBindingFactory;
89     }
90 }
Popular Tags