All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.aspectj.org.eclipse.jdt.core.dom.StructuralPropertyDescriptor Maven / Gradle / Ivy

/*******************************************************************************
 * 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.aspectj.org.eclipse.jdt.core.dom;

/**
 * Abstract base class for property descriptors of AST nodes.
 * There are three kinds of properties:
 * 
    *
  • simple properties ({@link SimplePropertyDescriptor}) * - properties where the value is a primitive (int, boolean) * or simple (String, InfixExprsssion.Operator) type other than an * AST node; for example, the identifier of a {@link SimpleName}
  • *
  • child properties ({@link ChildPropertyDescriptor}) * - properties whose value is another AST node; * for example, the name of a {@link MethodDeclaration}
  • *
  • child list properties ({@link ChildListPropertyDescriptor}) * - properties where the value is a list of AST nodes; * for example, the statements of a {@link Block}
  • *
* * @since 3.0 * @noextend This class is not intended to be subclassed by clients. */ @SuppressWarnings("rawtypes") public abstract class StructuralPropertyDescriptor { /** * Property id. */ private final String propertyId; /** * The concrete AST node type that owns this property. */ private final Class nodeClass; /** * Creates a new property descriptor for the given node type * 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 */ StructuralPropertyDescriptor(Class nodeClass, String propertyId) { if (nodeClass == null || propertyId == null) { throw new IllegalArgumentException(); } this.propertyId = propertyId; this.nodeClass = nodeClass; } /** * Returns the id of this property. * * @return the property id */ public final String getId() { return this.propertyId; } /** * Returns the AST node type that owns this property. *

* For example, for all properties of the node type * TypeDeclaration, this method returns TypeDeclaration.class. *

* * @return the node type that owns this property */ public final Class getNodeClass() { return this.nodeClass; } /** * Returns whether this property is a simple property * (instance of {@link SimplePropertyDescriptor}. * * @return true if this is a simple property, and * false otherwise */ public final boolean isSimpleProperty(){ return (this instanceof SimplePropertyDescriptor); } /** * Returns whether this property is a child property * (instance of {@link ChildPropertyDescriptor}. * * @return true if this is a child property, and * false otherwise */ public final boolean isChildProperty() { return (this instanceof ChildPropertyDescriptor); } /** * Returns whether this property is a child list property * (instance of {@link ChildListPropertyDescriptor}. * * @return true if this is a child list property, and * false otherwise */ public final boolean isChildListProperty() { return (this instanceof ChildListPropertyDescriptor); } /** * Returns a string suitable for debug purposes. * @return {@inheritDoc} */ @Override public String toString() { StringBuffer b = new StringBuffer(); if (isChildListProperty()) { b.append("ChildList"); //$NON-NLS-1$ } if (isChildProperty()) { b.append("Child"); //$NON-NLS-1$ } if (isSimpleProperty()) { b.append("Simple"); //$NON-NLS-1$ } b.append("Property["); //$NON-NLS-1$ if (this.nodeClass != null) { b.append(this.nodeClass.getName()); } b.append(","); //$NON-NLS-1$ if (this.propertyId != null) { b.append(this.propertyId); } b.append("]"); //$NON-NLS-1$ return b.toString(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy