Clover Coverage Report - magnolia-module-templating 4.4.5
Coverage timestamp: Mon Sep 12 2011 16:32:30 CEST
../../../../img/srcFileCovDistChart0.png 54% of files have more coverage
20   120   10   4
6   53   0.5   5
5     2  
1    
 
  TemplateRendererManager       Line # 55 20 0% 10 31 0% 0.0
 
No Tests
 
1    /**
2    * This file Copyright (c) 2003-2011 Magnolia International
3    * Ltd. (http://www.magnolia-cms.com). All rights reserved.
4    *
5    *
6    * This file is dual-licensed under both the Magnolia
7    * Network Agreement and the GNU General Public License.
8    * You may elect to use one or the other of these licenses.
9    *
10    * This file is distributed in the hope that it will be
11    * useful, but AS-IS and WITHOUT ANY WARRANTY; without even the
12    * implied warranty of MERCHANTABILITY or FITNESS FOR A
13    * PARTICULAR PURPOSE, TITLE, or NONINFRINGEMENT.
14    * Redistribution, except as permitted by whichever of the GPL
15    * or MNA you select, is prohibited.
16    *
17    * 1. For the GPL license (GPL), you can redistribute and/or
18    * modify this file under the terms of the GNU General
19    * Public License, Version 3, as published by the Free Software
20    * Foundation. You should have received a copy of the GNU
21    * General Public License, Version 3 along with this program;
22    * if not, write to the Free Software Foundation, Inc., 51
23    * Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
24    *
25    * 2. For the Magnolia Network Agreement (MNA), this file
26    * and the accompanying materials are made available under the
27    * terms of the MNA which accompanies this distribution, and
28    * is available at http://www.magnolia-cms.com/mna.html
29    *
30    * Any modifications to this file must keep this entire header
31    * intact.
32    *
33    */
34    package info.magnolia.module.templating;
35   
36    import info.magnolia.cms.core.Content;
37    import info.magnolia.cms.core.ItemType;
38    import info.magnolia.cms.beans.config.ObservedManager;
39    import info.magnolia.objectfactory.Classes;
40    import info.magnolia.objectfactory.Components;
41   
42    import java.util.Collection;
43    import java.util.HashMap;
44    import java.util.Iterator;
45    import java.util.Map;
46   
47    import org.apache.commons.lang.StringUtils;
48   
49   
50    /**
51    * Manages the template renderers of the system.
52    * @author fgiust
53    * @version $Revision: 41137 $ ($Author: gjoseph $)
54    */
 
55    public class TemplateRendererManager extends ObservedManager {
56   
57    private static final String ND_RENDERER = "renderer";
58   
59    private static final String ND_TYPE = "type";
60   
61    private Map renderers = new HashMap();
62   
63    /**
64    * @return Returns the instance.
65    */
 
66  0 toggle public static TemplateRendererManager getInstance() {
67  0 return Components.getSingleton(TemplateRendererManager.class);
68    }
69   
70    /**
71    * @see info.magnolia.cms.beans.config.ObservedManager#onRegister(info.magnolia.cms.core.Content)
72    */
 
73  0 toggle protected void onRegister(Content node) {
74  0 Collection list = node.getChildren(ItemType.CONTENTNODE);
75  0 for (Iterator iter = list.iterator(); iter.hasNext();) {
76  0 Content tr = (Content) iter.next();
77  0 String type = tr.getNodeData(ND_TYPE).getString();
78  0 String rendererClass = tr.getNodeData(ND_RENDERER).getString();
79   
80  0 if (StringUtils.isEmpty(type)) {
81  0 type = tr.getName();
82    }
83   
84  0 if (StringUtils.isBlank(type) || StringUtils.isBlank(rendererClass)) {
85  0 log.warn("Can't register template render at {}, type=\"{}\" renderer=\"{}\"", new Object[]{tr.getHandle(), type, rendererClass});
86  0 continue;
87    }
88   
89   
90  0 try {
91  0 final TemplateRenderer renderer = (TemplateRenderer) Classes.newInstance(rendererClass);
92  0 log.debug("Registering template render [{}] for type {}", rendererClass, type);
93  0 registerTemplateRenderer(type, renderer);
94    }
95    catch (Exception e) {
96  0 log.warn("Can't register template renderer at {}, type=\"{}\" renderer=\"{}\" due to a {} exception: {}", new Object[]{tr.getHandle(), type, rendererClass, e.getClass().getName(), e.getMessage()}, e);
97    }
98   
99    }
100   
101    }
102   
103    /**
104    * @see info.magnolia.cms.beans.config.ObservedManager#onClear()
105    */
 
106  0 toggle protected void onClear() {
107  0 this.renderers.clear();
108    }
109   
 
110  0 toggle public void registerTemplateRenderer(String type, TemplateRenderer instance) {
111  0 synchronized (renderers) {
112  0 renderers.put(type, instance);
113    }
114    }
115   
 
116  0 toggle public TemplateRenderer getRenderer(String type) {
117  0 return (TemplateRenderer) renderers.get(type);
118    }
119   
120    }