summaryrefslogtreecommitdiffstats
path: root/sca-java-2.x/tags/2.0.1-RC1/modules/assembly/src/main/java/org/apache/tuscany/sca/assembly/AbstractProperty.java
blob: 45fa05d66cbd26cc74a00c240908f024f9ad155f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
/*
 * Licensed to the Apache Software Foundation (ASF) under one
 * or more contributor license agreements.  See the NOTICE file
 * distributed with this work for additional information
 * regarding copyright ownership.  The ASF licenses this file
 * to you 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.apache.tuscany.sca.assembly;

import javax.xml.namespace.QName;

import org.apache.tuscany.sca.interfacedef.DataType;

/**
 * A property allows for the configuration of an implementation with externally
 * set data values. An implementation can have zero or more properties. Each
 * property has a data type, which may be either simple or complex. An
 * implementation may also define a default value for a property.
 *
 * @version $Rev$ $Date$
 */
public interface AbstractProperty extends Base, Extensible {

    /**
     * Returns the property name.
     * 
     * @return the property name
     */
    String getName();

    /**
     * Sets the property name.
     * 
     * @param name the property name
     */
    void setName(String name);

    /**
     * Returns the default value of the property.
     * 
     * @return the default value of this property
     */
    Object getValue();

    /**
     * Sets the default value of the property.
     * 
     * @param defaultValue the default value of this property
     */
    void setValue(Object defaultValue);

    /**
     * Returns true if the property allows multiple values.
     * 
     * @return true if the property allows multiple values
     */
    boolean isMany();

    /**
     * Sets whether or not the property allows multiple values.
     * 
     * @param many true if the property should allow multiple values
     */
    void setMany(boolean many);

    /**
     * Returns true if a value must be supplied for the property.
     * 
     * @return true is a value must be supplied for the property
     */
    boolean isMustSupply();

    /**
     * Sets whether a value must be supplied for the property.
     * 
     * @param mustSupply set to true to require that a value be supplied for
     *            uses of this property
     */
    void setMustSupply(boolean mustSupply);

    /**
     * Returns the data type of this property. This is the qualified name of an
     * XML schema type.
     * 
     * @return the type of this property
     */
    QName getXSDType();

    /**
     * Sets the data type of this property. This is the qualified name of an XML
     * schema type.
     * 
     * @param type the type of this property
     */
    void setXSDType(QName type);

    /**
     * Returns the element defining the data type of this property. This is the
     * qualified name of an XML schema element.
     * 
     * @return the element defining the type of this property
     */
    QName getXSDElement();

    /**
     * Sets the element defining the data type of this property. This is the
     * qualified name of an XML schema element.
     * 
     * @param element the element defining the type of this property
     */
    void setXSDElement(QName element);
    
    /**
     * Get the data type for this property
     * @return The data type
     */
    DataType getDataType();
    
    /**
     * Set the data type
     * @param dataType The data type
     */
    void setDataType(DataType dataType);
    
    /**
     * Get the XML schema that represents the type if this property.
     * Used during property value validation
     * 
     * @return
     */
    Object getXSDDefinition();
    
    /**
     * Set the XML schema that represents the type if this property.
     * Used during property value validation
     * 
     * @param xsdDefintion
     */
    void setXSDDefinition(Object xsdDefintion);
}