KickJava   Java API By Example, From Geeks To Geeks.

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


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.Map JavaDoc;
19
20 import ognl.Ognl;
21
22 import org.apache.hivemind.ApplicationRuntimeException;
23 import org.apache.tapestry.event.ResetEventListener;
24 import org.apache.tapestry.services.ExpressionCache;
25
26 /**
27  * @author Howard M. Lewis Ship
28  * @since 4.0
29  */

30 public class ExpressionCacheImpl implements ExpressionCache, ResetEventListener
31 {
32     public synchronized void resetEventDidOccur()
33     {
34         _cache.clear();
35     }
36
37     private Map JavaDoc _cache = new HashMap JavaDoc();
38
39     public synchronized Object JavaDoc getCompiledExpression(String JavaDoc expression)
40     {
41         Object JavaDoc result = _cache.get(expression);
42
43         if (result == null)
44         {
45             result = parse(expression);
46             _cache.put(expression, result);
47         }
48
49         return result;
50     }
51
52     private Object JavaDoc parse(String JavaDoc expression)
53     {
54         try
55         {
56             return Ognl.parseExpression(expression);
57         }
58         catch (Exception JavaDoc ex)
59         {
60             throw new ApplicationRuntimeException(ImplMessages.unableToParseExpression(
61                     expression,
62                     ex), ex);
63         }
64     }
65
66 }
Popular Tags