01: /*
02: * The contents of this file are subject to the terms of the Common Development
03: * and Distribution License (the License). You may not use this file except in
04: * compliance with the License.
05: *
06: * You can obtain a copy of the License at http://www.netbeans.org/cddl.html
07: * or http://www.netbeans.org/cddl.txt.
08: *
09: * When distributing Covered Code, include this CDDL Header Notice in each file
10: * and include the License file at http://www.netbeans.org/cddl.txt.
11: * If applicable, add the following below the CDDL Header, with the fields
12: * enclosed by brackets [] replaced by your own identifying information:
13: * "Portions Copyrighted [year] [name of copyright owner]"
14: *
15: * The Original Software is NetBeans. The Initial Developer of the Original
16: * Software is Sun Microsystems, Inc. Portions Copyright 1997-2007 Sun
17: * Microsystems, Inc. All Rights Reserved.
18: */
19: package org.netbeans.modules.xslt.model.impl;
20:
21: import java.util.Collection;
22: import java.util.LinkedList;
23: import java.util.List;
24:
25: import org.netbeans.modules.xslt.model.ReferenceableXslComponent;
26: import org.netbeans.modules.xslt.model.XslReference;
27:
28: /**
29: * This interface is intended for custom
30: * reference list resolving.
31: * There is a comon way for resolving reference list :
32: * when each token in list correspond ONLY one referenced
33: * component. It is used in AttributeAccess#resolveGlobalReferenceList
34: * method. But sometimes there can be more referenced
35: * elements than original token size in list.
36: * This interface will be used for applying implemented
37: * in custom way such logic.
38: *
39: * @author ads
40: *
41: */
42: interface ReferenceListResolveFactory {
43:
44: boolean isApplicable(Class referenceType);
45:
46: <T extends ReferenceableXslComponent> List<XslReference<T>> resolve(
47: AttributeAccess access, Class<T> clazz, String value);
48:
49: class Factories {
50: static final Collection<ReferenceListResolveFactory> FACTORIES = new LinkedList<ReferenceListResolveFactory>();
51:
52: static {
53: FACTORIES.add(new AttributeSetReferenceListResolver());
54: }
55: }
56: }
|