1 /**
2 * Copyright 2005-2016 The Kuali Foundation
3 *
4 * Licensed under the Educational Community 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.opensource.org/licenses/ecl2.php
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.kuali.rice.krms.api.repository.term;
17
18 import org.kuali.rice.core.api.mo.common.Identifiable;
19 import org.kuali.rice.core.api.mo.common.Versioned;
20 import org.kuali.rice.core.api.mo.common.active.Inactivatable;
21
22 import java.util.Map;
23 import java.util.Set;
24
25 /**
26 * <p>The contract for a {@link TermResolverDefinition} which defines a term resolver.
27 * </p>
28 *
29 * @author Kuali Rice Team (rice.collab@kuali.org)
30 * @see TermResolverDefinition
31 * @see org.kuali.rice.krms.api.engine.TermResolver
32 */
33 public interface TermResolverDefinitionContract extends Identifiable, Inactivatable, Versioned {
34
35 /**
36 * Gets the namespace for the defined term resolver. Will not be null or empty.
37 *
38 * @return the namespace
39 */
40 String getNamespace();
41
42 /**
43 * Gets the name for the defined term resolver. The namespace and name should uniquely identify a
44 * term resolver definition. Will not be null or empty.
45 *
46 * @return the name
47 */
48 String getName();
49
50 /**
51 * Gets the type id for the defined term resolver. This id refers to a
52 * type which configures how the term resolver may be obtained. May be null, but never empty.
53 *
54 * @return the type id.
55 */
56 String getTypeId();
57
58 /**
59 * Gets the term specification for the output of the defined term resolver. Will never be null.
60 *
61 * @return the output term's specification.
62 */
63 TermSpecificationDefinitionContract getOutput();
64
65 /**
66 * Gets the term specifications for any prerequisite terms of the defined term resolver. May be empty, but will
67 * never be null.
68 *
69 * @return any prerequisite terms.
70 */
71 Set<? extends TermSpecificationDefinitionContract> getPrerequisites();
72
73 /**
74 * Gets any attributes specified on the term resolver definition. May be empty, but never null.
75 *
76 * @return the attribute map for the term resolver definition.
77 */
78 public Map<String, String> getAttributes();
79
80 /**
81 * Gets the names of any parameters that the defined term resolver requires. May be empty, but never null.
82 *
83 * @return the parameter names.
84 */
85 Set<String> getParameterNames();
86
87 }