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   * 1737141    2007-06-18  ebak         Sync up with JSR48 evolution
17   * 2003590    2008-06-30  blaschke-oss Change licensing from CPL to EPL
18   * 2524131    2009-01-21  raman_arora  Upgrade client to JDK 1.5 (Phase 1)
19   * 2750520    2009-04-10  blaschke-oss Code cleanup from empty statement et al
20   * 2763216    2009-04-14  blaschke-oss Code cleanup: visible spelling/grammar errors
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   * 3400209    2011-08-31  blaschke-oss Highlighted Static Analysis (PMD) issues
24   * 3565581    2012-09-07  blaschke-oss TCK: remove unnecessary overriding methods
25   */
26  
27  package org.metricshub.wbem.javax.cim;
28  
29  /*-
30   * ╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲
31   * WBEM Java Client
32   * ჻჻჻჻჻჻
33   * Copyright 2023 - 2025 MetricsHub
34   * ჻჻჻჻჻჻
35   * Licensed under the Apache License, Version 2.0 (the "License");
36   * you may not use this file except in compliance with the License.
37   * You may obtain a copy of the License at
38   *
39   *      http://www.apache.org/licenses/LICENSE-2.0
40   *
41   * Unless required by applicable law or agreed to in writing, software
42   * distributed under the License is distributed on an "AS IS" BASIS,
43   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
44   * See the License for the specific language governing permissions and
45   * limitations under the License.
46   * ╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱╲╱
47   */
48  
49  import org.metricshub.wbem.sblim.cimclient.internal.util.MOF;
50  
51  //Sync'd against JSR48 1.0.0 javadoc (build 1.5.0_10) on Wed Jan 20 02:20:59 EST 2010
52  /**
53   * This class represents a CIM qualifier as defined by the Distributed
54   * Management Task Force (<a href=http://www.dmtf.org>DMTF</a>) CIM
55   * Infrastructure Specification (<a
56   * href=http://www.dmtf.org/standards/published_documents/DSP0004V2.3_final.pdf
57   * >DSP004</a>). A qualifier provides additional information about classes,
58   * associations, methods, parameters, properties, and/or references. A
59   * <code>CIMQualifier</code> must have a CIM Qualifier Type. A qualifier and its
60   * qualifier type must have the same name and data type. CIM Qualifiers can only
61   * be applied to elements that are allowed by the scope defined by the CIM
62   * Qualifier Type.
63   *
64   * @param <E>
65   *            Type parameter.
66   * @see CIMQualifierType
67   */
68  public class CIMQualifier<E> extends CIMValuedElement<E> {
69  	private static final long serialVersionUID = 3568987946093931214L;
70  
71  	private int iFlavor;
72  
73  	private boolean iPropagated;
74  
75  	/**
76  	 * Constructs a CIM qualifier with the specified name, type, value, and
77  	 * flavors.
78  	 *
79  	 * @param pName
80  	 *            The name of the qualifier.
81  	 * @param pType
82  	 *            The data type of the qualifier.
83  	 * @param pValue
84  	 *            The value of the qualifier.
85  	 * @param pFlavor
86  	 *            A list of override permissions. Flavors can be overridden from
87  	 *            the Qualifier Type definition to either restrict the
88  	 *            subclassing of a qualifier or to allow it. For the list of CIM
89  	 *            Flavors see the <code>CIMFlavor</code> class.
90  	 * @see CIMFlavor
91  	 */
92  	public CIMQualifier(String pName, CIMDataType pType, E pValue, int pFlavor) {
93  		this(pName, pType, pValue, pFlavor, false);
94  	}
95  
96  	/**
97  	 * Constructs a CIM qualifier with the specified name, type, value, and
98  	 * flavors.
99  	 *
100 	 * @param pName
101 	 *            The name of the qualifier.
102 	 * @param pType
103 	 *            The data type of the qualifier.
104 	 * @param pValue
105 	 *            The value of the qualifier.
106 	 * @param pFlavor
107 	 *            A list of override permissions. Flavors can be overridden from
108 	 *            the Qualifier Type definition to either restrict the
109 	 *            subclassing of a qualifier or to allow it. For the list of CIM
110 	 *            Flavors see the <code>CIMFlavor</code> class.
111 	 * @param pIsPropagated
112 	 *            <code>true</code> if the qualifier was propagated;
113 	 *            <code>false</code> otherwise.
114 	 * @see CIMFlavor
115 	 */
116 	public CIMQualifier(String pName, CIMDataType pType, E pValue, int pFlavor, boolean pIsPropagated) {
117 		super(pName, pType, pValue);
118 		this.iFlavor = pFlavor;
119 		this.iPropagated = pIsPropagated;
120 	}
121 
122 	/**
123 	 * Compares this <code>CIMQualifier</code> against the specified
124 	 * <code>CIMQualifier</code>. The result is <code>true</code> if and only if
125 	 * the argument is not <code>null</code> and is a <code>CIMQualifier</code>
126 	 * that represents the same name, type and value as this
127 	 * <code>CIMQualifier</code>.
128 	 *
129 	 * @param pObj
130 	 *            The object to compare.
131 	 * @return <code>true</code> if the input qualifier is equal, otherwise
132 	 *         <code>false</code>.
133 	 */
134 	@Override
135 	public boolean equals(Object pObj) {
136 		if (!(pObj instanceof CIMQualifier)) return false;
137 		if (!super.equals(pObj)) return false;
138 		CIMQualifier<?> that = (CIMQualifier<?>) pObj;
139 		return this.iFlavor == that.iFlavor && this.iPropagated == that.iPropagated;
140 	}
141 
142 	/**
143 	 * Returns the CIM flavors for this CIM qualifier.
144 	 *
145 	 * @return A <code>BitSet</code> of CIM flavors in this CIM qualifier.
146 	 */
147 	public int getFlavor() {
148 		return this.iFlavor;
149 	}
150 
151 	/**
152 	 * Determines if this qualifier is propagated. If the qualifier was
153 	 * inherited, this value will be <code>true</code>. If the qualifier was
154 	 * applied to the element directly, this value will be <code>false</code>.
155 	 *
156 	 * @return <code>true</code> if this property is propagated;
157 	 *         <code>false</code> otherwise.
158 	 */
159 	public boolean isPropagated() {
160 		return this.iPropagated;
161 	}
162 
163 	/**
164 	 * Returns a <code>String</code> representation of the
165 	 * <code>CIMQualifier</code>. This method is intended to be used only for
166 	 * debugging purposes, and the format of the returned string may vary
167 	 * between implementations. The returned string may be empty but may not be
168 	 * <code>null</code>.
169 	 *
170 	 * @return A string representation of this qualifier.
171 	 */
172 	@Override
173 	public String toString() {
174 		return MOF.qualifier(this);
175 	}
176 }