View Javadoc
1   /*
2     (C) Copyright IBM Corp. 2006, 2012
3    
4     THIS FILE IS PROVIDED UNDER THE TERMS OF THE ECLIPSE PUBLIC LICENSE 
5     ("AGREEMENT"). ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE 
6     CONSTITUTES RECIPIENTS ACCEPTANCE OF THE AGREEMENT.
7    
8     You can obtain a current copy of the Eclipse Public License from
9     http://www.opensource.org/licenses/eclipse-1.0.php
10   
11    @author : Endre Bak, ebak@de.ibm.com  
12   * 
13   * Flag       Date        Prog         Description
14   * -------------------------------------------------------------------------------
15   * 1565892    2006-10-06  ebak         Make SBLIM client JSR48 compliant
16   * 1660756    2007-02-22  ebak         Embedded object support
17   * 1737141    2007-06-19  ebak         Sync up with JSR48 evolution
18   * 2003590    2008-06-30  blaschke-oss Change licensing from CPL to EPL
19   * 2524131    2009-01-21  raman_arora  Upgrade client to JDK 1.5 (Phase 1)
20   * 2750520    2009-04-10  blaschke-oss Code cleanup from empty statement et al
21   * 2797550    2009-06-01  raman_arora  JSR48 compliance - add Java Generics
22   * 2935258    2010-01-22  blaschke-oss Sync up javax.cim.* javadoc with JSR48 1.0.0
23   * 2944842    2010-02-08  blaschke-oss Missing thrown ArrayIndexOutOfBoundsException
24   * 3400209    2011-08-31  blaschke-oss Highlighted Static Analysis (PMD) issues
25   * 3565581    2012-09-07  blaschke-oss TCK: remove unnecessary overriding methods
26   */
27  
28  package org.metricshub.wbem.javax.cim;
29  
30  /*-
31   * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
32   * WBEM Java Client
33   * ჻჻჻჻჻჻
34   * Copyright 2023 - 2025 MetricsHub
35   * ჻჻჻჻჻჻
36   * Licensed under the Apache License, Version 2.0 (the "License");
37   * you may not use this file except in compliance with the License.
38   * You may obtain a copy of the License at
39   *
40   *      http://www.apache.org/licenses/LICENSE-2.0
41   *
42   * Unless required by applicable law or agreed to in writing, software
43   * distributed under the License is distributed on an "AS IS" BASIS,
44   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
45   * See the License for the specific language governing permissions and
46   * limitations under the License.
47   * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
48   */
49  
50  import org.metricshub.wbem.sblim.cimclient.internal.cim.CIMQualifiedElementInterfaceImpl;
51  import org.metricshub.wbem.sblim.cimclient.internal.util.MOF;
52  
53  //Sync'd against JSR48 1.0.0 javadoc (build 1.5.0_10) on Wed Jan 20 02:20:59 EST 2010
54  /**
55   * This class represents a CIM Parameter. A CIM Parameter is a schema item, thus
56   * it can only be part of a <code>CIMMethod</code> definition for a
57   * <code>CIMClass</code>. A parameter can be used to define an input, output or
58   * input/output parameter. A <code>CIMParameter</code> consists of a name, data
59   * type and qualifiers. <code>CIMParameters</code> do not have values - so you
60   * can not set a default value. CIM Parameters are defined by the Distributed
61   * Management Task Force (<a href=http://www.dmtf.org>DMTF</a>) CIM
62   * Infrastructure Specification (<a
63   * href=http://www.dmtf.org/standards/published_documents/DSP0004V2.3_final.pdf
64   * >DSP004</a>). To invoke a method, you would use <code>CIMArgument</code>.
65   *
66   * @param <E>
67   *            Type parameter.
68   *
69   * @see CIMMethod
70   */
71  public class CIMParameter<E> extends CIMTypedElement implements CIMQualifiedElementInterface {
72  	private static final long serialVersionUID = -4741931597423829396L;
73  
74  	private CIMQualifiedElementInterfaceImpl iQualiImpl;
75  
76  	/**
77  	 * Constructs a <code>CIMParameter</code> object using the specified name,
78  	 * data type and qualifiers. Takes a string for the name of an existing CIM
79  	 * parameter and creates a new instance of a CIM parameter, using the name
80  	 * and identifier of the existing CIM parameter.
81  	 *
82  	 * @param pName
83  	 *            Name of this parameter.
84  	 * @param pType
85  	 *            Data type of this parameter.
86  	 * @param pQualifiers
87  	 *            Qualifiers for this parameter.
88  	 */
89  	public CIMParameter(String pName, CIMDataType pType, CIMQualifier<?>[] pQualifiers) {
90  		super(pName, pType);
91  		this.iQualiImpl = new CIMQualifiedElementInterfaceImpl(pQualifiers, false, true);
92  	}
93  
94  	/**
95  	 * Compares this object against the specified object. The result is
96  	 * <code>true</code> if and only if the argument is not <code>null</code>
97  	 * and is a <code>CIMParameter</code> object that represents the same value
98  	 * as this object.
99  	 *
100 	 * @param pObj
101 	 *            The object to compare.
102 	 * @return <code>true</code> if the objects are the same; <code>false</code>
103 	 *         otherwise.
104 	 */
105 	@Override
106 	public boolean equals(Object pObj) {
107 		if (!(pObj instanceof CIMParameter)) return false;
108 		if (!super.equals(pObj)) return false;
109 		CIMParameter<?> that = (CIMParameter<?>) pObj;
110 		return this.iQualiImpl.equals(that.iQualiImpl);
111 	}
112 
113 	/**
114 	 * Returns a <code>CIMParameter</code> filtered as specified.
115 	 *
116 	 * @param pIncludeQualifiers
117 	 *            If <code>true</code> all qualifiers are returned; otherwise no
118 	 *            qualifiers.
119 	 * @param pLocalOnly
120 	 *            If <code>true</code> only the qualifiers that were not
121 	 *            propagated will be included.
122 	 * @return A filtered <code>CIMParameter</code>.
123 	 */
124 	public CIMParameter<E> filter(boolean pIncludeQualifiers, boolean pLocalOnly) {
125 		return new CIMParameter<E>(
126 			getName(),
127 			getDataType(),
128 			pIncludeQualifiers ? this.iQualiImpl.getQualifiers(pLocalOnly) : null
129 		);
130 	}
131 
132 	/**
133 	 * Get a qualifier by index.
134 	 *
135 	 * @param pIndex
136 	 *            The index of the qualifier.
137 	 * @return The Qualifier at index pIndex.
138 	 * @throws ArrayIndexOutOfBoundsException
139 	 */
140 	public CIMQualifier<?> getQualifier(int pIndex) throws ArrayIndexOutOfBoundsException {
141 		return this.iQualiImpl.getQualifier(pIndex);
142 	}
143 
144 	/**
145 	 * Gets a qualifier by name.
146 	 *
147 	 * @param pName
148 	 *            The name of the qualifier to get.
149 	 * @return <code>null</code> if the qualifier does not exist, otherwise
150 	 *         returns the reference to the qualifier.
151 	 */
152 	public CIMQualifier<?> getQualifier(String pName) {
153 		return this.iQualiImpl.getQualifier(pName);
154 	}
155 
156 	/**
157 	 * Get the number of qualifiers defined for this CIM Parameter.
158 	 *
159 	 * @return The number of qualifiers.
160 	 */
161 	public int getQualifierCount() {
162 		return this.iQualiImpl.getQualifierCount();
163 	}
164 
165 	/**
166 	 * Returns the list of qualifiers for this class.
167 	 *
168 	 * @return Qualifiers for this class.
169 	 */
170 	public CIMQualifier<?>[] getQualifiers() {
171 		return this.iQualiImpl.getQualifiers();
172 	}
173 
174 	/**
175 	 * Gets a qualifier value by name.
176 	 *
177 	 * @param pName
178 	 *            The name of the qualifier to get.
179 	 * @return <code>null</code> if the qualifier does not exist or value is
180 	 *         <code>null</code>, otherwise returns the reference to the
181 	 *         qualifier.
182 	 */
183 	public Object getQualifierValue(String pName) {
184 		return this.iQualiImpl.getQualifierValue(pName);
185 	}
186 
187 	/**
188 	 * Checks whether the specified qualifier is one of the qualifiers in this
189 	 * CIM element.
190 	 *
191 	 * @param pName
192 	 *            The name of the qualifier.
193 	 * @return <code>true</code> if the qualifier exists in this CIM parameter,
194 	 *         otherwise <code>false</code>.
195 	 */
196 	public boolean hasQualifier(String pName) {
197 		return this.iQualiImpl.hasQualifier(pName);
198 	}
199 
200 	/**
201 	 * Checks whether the specified qualifier is one of the qualifiers defined
202 	 * for this parameter with the specified value. This method will return
203 	 * <code>false</code> if the qualifier is not applied or if the value does
204 	 * not match.
205 	 *
206 	 * @param pName
207 	 *            The name of the qualifier.
208 	 * @param pValue
209 	 *            The value to be tested.
210 	 * @return <code>true</code> if the qualifier exists in this property,
211 	 *         otherwise <code>false</code>.
212 	 */
213 	public boolean hasQualifierValue(String pName, Object pValue) {
214 		return this.iQualiImpl.hasQualifierValue(pName, pValue);
215 	}
216 
217 	/**
218 	 * Returns a <code>String</code> representation of the
219 	 * <code>CIMParameter</code>. This method is intended to be used only for
220 	 * debugging purposes, and the format of the returned string may vary
221 	 * between implementations. The returned string may be empty but may not be
222 	 * <code>null</code>.
223 	 *
224 	 * @return String representation of this parameter.
225 	 */
226 	@Override
227 	public String toString() {
228 		return MOF.parameter(this, MOF.EMPTY);
229 	}
230 }