01: /*
02: * Copyright 2001-2007 Geert Bevin <gbevin[remove] at uwyn dot com>
03: * Distributed under the terms of either:
04: * - the common development and distribution license (CDDL), v1.0; or
05: * - the GNU Lesser General Public License, v2.1 or later
06: * $Id: ContentLoaderBackend.java 3634 2007-01-08 21:42:24Z gbevin $
07: */
08: package com.uwyn.rife.cmf.loader;
09:
10: import java.util.Set;
11:
12: /**
13: * This is an interface that should be implemented by all content loader
14: * back-ends.
15: * <p>All content loader back-ends that are fronted by the same {@link
16: * ContentLoader} should handle the same <code>InternalType</code>, which is
17: * returned by the {@link #load(Object, boolean, Set) load} method.
18: *
19: * @author Geert Bevin (gbevin[remove] at uwyn dot com)
20: * @version $Revision: 3634 $
21: * @since 1.0
22: */
23: public interface ContentLoaderBackend<InternalType> {
24: /**
25: * Indicates whether the back-end is present.
26: * <p>This can be important for optional libraries that should only
27: * actually try to load the data when the required classes are available
28: * in the classpath.
29: *
30: * @return <code>true</code> if the back-end is present; or
31: * <p><code>false</code> if this is not the case
32: * @since 1.0
33: */
34: public boolean isBackendPresent();
35:
36: /**
37: * Loads any kind of raw data and tries to accommodate as much as possible
38: * to return an instance of <code>InternalType</code> after successful
39: * loading and handling.
40: * <p>Should any errors occur, then they will be added as text messages to
41: * the <code>errors</code> collection.
42: *
43: * @param data the raw data that has to be loaded
44: * @param fragment <code>true</code> if the raw data is a fragment; or
45: * <p><code>false</code> if the raw data is a complete document or file
46: * @param errors a set to which possible error messages will be added
47: * @return an instance of the <code>InternalType</code>; or
48: * <p><code>null</code> if the raw data couldn't be loaded
49: * @since 1.0
50: */
51: public InternalType load(Object data, boolean fragment,
52: Set<String> errors);
53: }
|