KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > outerj > daisy > frontend > editor > HtmlCleaningConvertorBuilder


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

16 package org.outerj.daisy.frontend.editor;
17
18 import org.apache.cocoon.forms.datatype.convertor.ConvertorBuilder;
19 import org.apache.cocoon.forms.datatype.convertor.Convertor;
20 import org.apache.cocoon.forms.util.DomHelper;
21 import org.apache.cocoon.forms.CacheManager;
22 import org.apache.cocoon.components.source.SourceUtil;
23 import org.apache.avalon.framework.service.Serviceable;
24 import org.apache.avalon.framework.service.ServiceManager;
25 import org.apache.avalon.framework.service.ServiceException;
26 import org.apache.excalibur.source.SourceResolver;
27 import org.apache.excalibur.source.Source;
28 import org.w3c.dom.Element JavaDoc;
29 import org.outerj.daisy.htmlcleaner.HtmlCleanerTemplate;
30 import org.outerj.daisy.htmlcleaner.HtmlCleanerFactory;
31 import org.outerj.daisy.frontend.editor.HtmlCleaningConvertor;
32 import org.xml.sax.InputSource JavaDoc;
33
34 /**
35  * Builds {@link org.outerj.daisy.frontend.editor.HtmlCleaningConvertor}s.
36  */

37 public class HtmlCleaningConvertorBuilder implements ConvertorBuilder, Serviceable {
38     private ServiceManager serviceManager;
39
40     public void service(ServiceManager serviceManager) throws ServiceException {
41         this.serviceManager = serviceManager;
42     }
43
44     public Convertor build(Element JavaDoc element) throws Exception JavaDoc {
45         String JavaDoc config = DomHelper.getAttribute(element, "config");
46
47
48         Source source = null;
49         SourceResolver sourceResolver = null;
50         CacheManager cacheManager = null;
51         try {
52             cacheManager = (CacheManager)serviceManager.lookup(CacheManager.ROLE);
53             sourceResolver = (SourceResolver)serviceManager.lookup(SourceResolver.ROLE);
54             source = sourceResolver.resolveURI(config);
55
56             String JavaDoc prefix = HtmlCleanerTemplate.class.getName();
57             HtmlCleanerTemplate template = (HtmlCleanerTemplate)cacheManager.get(source, prefix);
58             if (template == null) {
59                 HtmlCleanerFactory factory = new HtmlCleanerFactory();
60                 InputSource JavaDoc is = SourceUtil.getInputSource(source);
61                 template = factory.buildTemplate(is);
62                 cacheManager.set(template, source, prefix);
63             }
64
65             return new HtmlCleaningConvertor(template);
66         } finally {
67             if (source != null)
68                 sourceResolver.release(source);
69             if (sourceResolver != null)
70                 serviceManager.release(sourceResolver);
71             if (cacheManager != null)
72                 serviceManager.release(cacheManager);
73         }
74     }
75 }
76
Popular Tags