| /* |
| * Copyright (C) 2010 Google Inc. |
| * |
| * 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.clearsilver; |
| |
| import java.io.IOException; |
| |
| /** |
| * Utility class that delegates all methods of an CS object. Made to |
| * facilitate the transition to CS being an interface and thus not |
| * extensible in the same way as it was. |
| * <p> |
| * This class, and its subclasses must take care to wrap or unwrap HDF and CS |
| * objects as they are passed through from the callers to the delegate object. |
| * |
| */ |
| public abstract class DelegatedCs implements CS { |
| private final CS cs; |
| |
| public DelegatedCs(CS cs) { |
| // Give it an empty HDF. We aren't going to be using the super object anyways. |
| this.cs = cs; |
| } |
| |
| public CS getCs() { |
| return cs; |
| } |
| |
| /** |
| * Method subclasses are required to override with a method that returns a |
| * new DelegatedHdf object that wraps the specified HDF object. |
| * |
| * @param hdf an HDF object that should be wrapped in a new DelegatedHdf |
| * object of the same type as this current object. |
| * @return an object that is a subclass of DelegatedHdf and which wraps the |
| * given HDF object. |
| */ |
| protected abstract DelegatedHdf newDelegatedHdf(HDF hdf); |
| |
| public void setGlobalHDF(HDF global) { |
| if (global != null && global instanceof DelegatedHdf) { |
| global = ((DelegatedHdf)global).getHdf(); |
| } |
| getCs().setGlobalHDF(global); |
| } |
| |
| public HDF getGlobalHDF() { |
| HDF hdf = getCs().getGlobalHDF(); |
| return hdf != null ? newDelegatedHdf(hdf) : null; |
| } |
| |
| public void close() { |
| getCs().close(); |
| } |
| |
| public void parseFile(String filename) throws IOException { |
| getCs().parseFile(filename); |
| } |
| public void parseStr(String content) { |
| getCs().parseStr(content); |
| } |
| |
| public String render() { |
| return getCs().render(); |
| } |
| |
| public CSFileLoader getFileLoader() { |
| return getCs().getFileLoader(); |
| } |
| |
| public void setFileLoader(CSFileLoader fileLoader) { |
| getCs().setFileLoader(fileLoader); |
| } |
| |
| } |