Tue, 10 Feb 2015 18:12:00 +0100
Import initial revisions of existing project AndroidCaldavSyncAdapater,
forked from upstream repository at 27e8a0f8495c92e0780d450bdf0c7cec77a03a55.
1 /**
2 * Copyright (c) 2012, Ben Fortuna
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 *
9 * o Redistributions of source code must retain the above copyright
10 * notice, this list of conditions and the following disclaimer.
11 *
12 * o Redistributions in binary form must reproduce the above copyright
13 * notice, this list of conditions and the following disclaimer in the
14 * documentation and/or other materials provided with the distribution.
15 *
16 * o Neither the name of Ben Fortuna nor the names of any other contributors
17 * may be used to endorse or promote products derived from this software
18 * without specific prior written permission.
19 *
20 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
21 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
23 * A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
24 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
25 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
26 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
27 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
28 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
29 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
30 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
31 */
32 package net.fortuna.ical4j.model;
34 import java.util.HashMap;
35 import java.util.Map;
37 import net.fortuna.ical4j.util.CompatibilityHints;
39 /**
40 * $Id$
41 *
42 * Created on 28/01/2007
43 *
44 * Abstract implementation of a content factory.
45 * @author Ben Fortuna
46 */
47 public abstract class AbstractContentFactory {
49 /**
50 * Map of delegate factories.
51 */
52 private final Map defaultFactories;
54 private final Map extendedFactories;
56 /**
57 * Default constructor.
58 */
59 public AbstractContentFactory() {
60 defaultFactories = new HashMap();
61 extendedFactories = new HashMap();
62 }
64 /**
65 * Register a standard content factory.
66 */
67 protected final void registerDefaultFactory(String key, Object factory) {
68 defaultFactories.put(key, factory);
69 }
71 /**
72 * Register a non-standard content factory.
73 */
74 protected final void registerExtendedFactory(String key, Object factory) {
75 extendedFactories.put(key, factory);
76 }
78 /**
79 * @param key a factory key
80 * @return a factory associated with the specified key, giving preference to
81 * standard factories
82 */
83 protected final Object getFactory(String key) {
84 Object factory = defaultFactories.get(key);
85 if (factory == null) {
86 factory = extendedFactories.get(key);
87 }
88 return factory;
89 }
91 /**
92 * @return true if non-standard names are allowed, otherwise false
93 */
94 protected boolean allowIllegalNames() {
95 return CompatibilityHints
96 .isHintEnabled(CompatibilityHints.KEY_RELAXED_PARSING);
97 }
98 }