01: /*
02: Copyright (c) 2007, Dennis M. Sosnoski
03: All rights reserved.
04:
05: Redistribution and use in source and binary forms, with or without modification,
06: are permitted provided that the following conditions are met:
07:
08: * Redistributions of source code must retain the above copyright notice, this
09: list of conditions and the following disclaimer.
10: * Redistributions in binary form must reproduce the above copyright notice,
11: this list of conditions and the following disclaimer in the documentation
12: and/or other materials provided with the distribution.
13: * Neither the name of JiBX nor the names of its contributors may be used
14: to endorse or promote products derived from this software without specific
15: prior written permission.
16:
17: THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
18: ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
19: WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
20: DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
21: ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
22: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
23: LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
24: ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25: (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
26: SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27: */
28:
29: package org.jibx.ws.wsdl;
30:
31: import java.util.List;
32:
33: import org.jibx.binding.generator.CustomBase;
34:
35: /**
36: * Method parameter or return collection value customization information.
37: */
38: public class CollectionValueCustom extends ValueCustom {
39: // value customization information
40: private String m_itemType;
41: private String m_itemName;
42:
43: /**
44: * Constructor.
45: *
46: * @param parent
47: * @param name
48: */
49: protected CollectionValueCustom(NestingBase parent, String name) {
50: super (parent, name);
51: }
52:
53: /**
54: * Get item type for collection. This method should only be used after the
55: * {@link #complete(String, String, List, Boolean)} method is called.
56: *
57: * @return collection item type, <code>null</code> if not a collection
58: */
59: public String getItemType() {
60: return m_itemType;
61: }
62:
63: /**
64: * Get name for elements representing items in collection. This method
65: * should only be used after the
66: * {@link #complete(String, String, List, Boolean)} method is called.
67: *
68: * @return collection item type, <code>null</code> if not a collection
69: */
70: public String getItemElementName() {
71: return m_itemName;
72: }
73:
74: /**
75: * Complete customization information based on supplied type. If the type
76: * information has not previously been set, this will set it. It will also
77: * derive the appropriate XML name, if not previously set.
78: *
79: * @param type
80: * @param itype
81: * @param docs default documentation node list (<code>null</code> if none)
82: * @param req required member flag (<code>null</code> if unknown)
83: */
84: /*package*/void complete(String type, String itype, List docs,
85: Boolean req) {
86: if (m_itemType == null) {
87: m_itemType = itype;
88: }
89: complete(type, docs, req);
90: if (m_itemName == null && getElementName() != null) {
91: m_itemName = deriveItemName(getElementName(), m_itemType,
92: CustomBase.CAMEL_CASE_NAMES);
93: }
94: }
95: }
|