Copyright (c) 2004, 2013 IBM Corporation and others.
This program and the accompanying materials
are made available under the terms of the Eclipse Public License 2.0
which accompanies this distribution, and is available at
https://www.eclipse.org/legal/epl-2.0/
SPDX-License-Identifier: EPL-2.0
Contributors:
IBM Corporation - initial API and implementation
/*******************************************************************************
* Copyright (c) 2004, 2013 IBM Corporation and others.
*
* This program and the accompanying materials
* are made available under the terms of the Eclipse Public License 2.0
* which accompanies this distribution, and is available at
* https://www.eclipse.org/legal/epl-2.0/
*
* SPDX-License-Identifier: EPL-2.0
*
* Contributors:
* IBM Corporation - initial API and implementation
*******************************************************************************/
package org.eclipse.jdt.core.dom;
Descriptor for a simple property of an AST node.
A simple property is one whose value is a
primitive type (such as int
or boolean
)
or some simple value type (such as String
or
InfixExpression.Operator
).
See Also: - getStructuralProperty.getStructuralProperty(StructuralPropertyDescriptor)
- ASTNode.setStructuralProperty(StructuralPropertyDescriptor, Object)
Since: 3.0 @noinstantiate This class is not intended to be instantiated by clients.
/**
* Descriptor for a simple property of an AST node.
* A simple property is one whose value is a
* primitive type (such as <code>int</code> or <code>boolean</code>)
* or some simple value type (such as <code>String</code> or
* <code>InfixExpression.Operator</code>).
*
* @see org.eclipse.jdt.core.dom.ASTNode#getStructuralProperty(StructuralPropertyDescriptor)
* @see org.eclipse.jdt.core.dom.ASTNode#setStructuralProperty(StructuralPropertyDescriptor, Object)
* @since 3.0
* @noinstantiate This class is not intended to be instantiated by clients.
*/
@SuppressWarnings("rawtypes")
public final class SimplePropertyDescriptor extends StructuralPropertyDescriptor {
Value type. For example, for a node type like
SingleVariableDeclaration, the modifiers property is int.class
/**
* Value type. For example, for a node type like
* SingleVariableDeclaration, the modifiers property is int.class
*/
private final Class valueType;
Indicates whether a value is mandatory. A property value is allowed
to be null
only if it is not mandatory.
/**
* Indicates whether a value is mandatory. A property value is allowed
* to be <code>null</code> only if it is not mandatory.
*/
private final boolean mandatory;
Creates a new simple property descriptor with the given property id.
Note that this constructor is declared package-private so that
property descriptors can only be created by the AST
implementation.
Params: - nodeClass – concrete AST node type that owns this property
- propertyId – the property id
- valueType – the value type of this property
- mandatory –
true
if the property is mandatory,
and false
if it is may be null
/**
* Creates a new simple property descriptor with the given property id.
* Note that this constructor is declared package-private so that
* property descriptors can only be created by the AST
* implementation.
*
* @param nodeClass concrete AST node type that owns this property
* @param propertyId the property id
* @param valueType the value type of this property
* @param mandatory <code>true</code> if the property is mandatory,
* and <code>false</code> if it is may be <code>null</code>
*/
SimplePropertyDescriptor(Class nodeClass, String propertyId, Class valueType, boolean mandatory) {
super(nodeClass, propertyId);
if (valueType == null || ASTNode.class.isAssignableFrom(valueType)) {
throw new IllegalArgumentException();
}
this.valueType = valueType;
this.mandatory = mandatory;
}
Returns the value type of this property.
For example, for a node type like SingleVariableDeclaration,
the "modifiers" property returns int.class
.
Returns: the value type of the property
/**
* Returns the value type of this property.
* <p>
* For example, for a node type like SingleVariableDeclaration,
* the "modifiers" property returns <code>int.class</code>.
* </p>
*
* @return the value type of the property
*/
public Class getValueType() {
return this.valueType;
}
Returns whether this property is mandatory. A property value
is not allowed to be null
if it is mandatory.
Returns: true
if the property is mandatory,
and false
if it is may be null
/**
* Returns whether this property is mandatory. A property value
* is not allowed to be <code>null</code> if it is mandatory.
*
* @return <code>true</code> if the property is mandatory,
* and <code>false</code> if it is may be <code>null</code>
*/
public boolean isMandatory() {
return this.mandatory;
}
}