/******************************************************************************* * Copyright (c) 2001, 2005 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at * http://www.eclipse.org/legal/epl-v10.html * * Contributors: * IBM Corporation - initial API and implementation *******************************************************************************/ package org.eclipse.jem.java; /* */ import java.util.List; import org.eclipse.emf.common.util.EList; import org.eclipse.emf.ecore.EClass; /** * <!-- begin-user-doc --> * @extends JavaHelpers * <!-- end-user-doc --> * * <p> * The following features are supported: * <ul> * <li>{@link org.eclipse.jem.java.JavaClass#getKind <em>Kind</em>}</li> * <li>{@link org.eclipse.jem.java.JavaClass#isPublic <em>Public</em>}</li> * <li>{@link org.eclipse.jem.java.JavaClass#isFinal <em>Final</em>}</li> * <li>{@link org.eclipse.jem.java.JavaClass#getImplementsInterfaces <em>Implements Interfaces</em>}</li> * <li>{@link org.eclipse.jem.java.JavaClass#getClassImport <em>Class Import</em>}</li> * <li>{@link org.eclipse.jem.java.JavaClass#getPackageImports <em>Package Imports</em>}</li> * <li>{@link org.eclipse.jem.java.JavaClass#getFields <em>Fields</em>}</li> * <li>{@link org.eclipse.jem.java.JavaClass#getMethods <em>Methods</em>}</li> * <li>{@link org.eclipse.jem.java.JavaClass#getInitializers <em>Initializers</em>}</li> * <li>{@link org.eclipse.jem.java.JavaClass#getDeclaredClasses <em>Declared Classes</em>}</li> * <li>{@link org.eclipse.jem.java.JavaClass#getDeclaringClass <em>Declaring Class</em>}</li> * <li>{@link org.eclipse.jem.java.JavaClass#getJavaPackage <em>Java Package</em>}</li> * <li>{@link org.eclipse.jem.java.JavaClass#getEvents <em>Events</em>}</li> * <li>{@link org.eclipse.jem.java.JavaClass#getAllEvents <em>All Events</em>}</li> * </ul> * </p> * * @see org.eclipse.jem.java.JavaRefPackage#getJavaClass() * @model * @generated */ public interface JavaClass extends EClass, JavaHelpers{ public static final String DEFAULT_METHOD_NAME = "*"; /** * Return a method matching the name, and non-return parameters with fully qualified types matching all the types in the list, if it exists. It will not look up the supertype hierarchy. */ public Method getPublicMethodExtended(String methodName, List parameterTypes) ; /** * Returns a filtered list on the methods of this class, having a name equal to that of the parameter. */ public List getPublicMethodsExtendedNamed(String name); /** * Return an array listing our Fields, including inherited fields. * The field relationship is derived from contents. */ public Field[] listFieldExtended(); /** * Return an array listing our Methods, including inherited methods. * The method relationship is derived from contents. */ public Method[] listMethodExtended(); //FB /** //FB * This is required for internal reflection. Do not use. //FB */ //FB Object primRefValue(EObject feature); /** * @generated This field/method will be replaced during code generation * @return The value of the Kind attribute */ TypeKind getKind(); /** * Sets the value of the '{@link org.eclipse.jem.java.JavaClass#getKind <em>Kind</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @param value the new value of the '<em>Kind</em>' attribute. * @see org.eclipse.jem.java.TypeKind * @see #getKind() * @generated */ void setKind(TypeKind value); /** * @generated This field/method will be replaced during code generation * @return The value of the IsPublic attribute */ boolean isPublic(); /** * Sets the value of the '{@link org.eclipse.jem.java.JavaClass#isPublic <em>Public</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @param value the new value of the '<em>Public</em>' attribute. * @see #isPublic() * @generated */ void setPublic(boolean value); /** * @generated This field/method will be replaced during code generation * @return The value of the IsFinal attribute */ boolean isFinal(); /** * Sets the value of the '{@link org.eclipse.jem.java.JavaClass#isFinal <em>Final</em>}' attribute. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @param value the new value of the '<em>Final</em>' attribute. * @see #isFinal() * @generated */ void setFinal(boolean value); /** * @generated This field/method will be replaced during code generation * @return The list of ImplementsInterfaces references */ EList getImplementsInterfaces(); /** * @generated This field/method will be replaced during code generation * @return The list of ClassImport references */ EList getClassImport(); /** * @generated This field/method will be replaced during code generation * @return The list of PackageImports references */ EList getPackageImports(); /** * @generated This field/method will be replaced during code generation * @return The list of Fields references */ EList getFields(); /** * @generated This field/method will be replaced during code generation * @return The list of Methods references */ EList getMethods(); /** * @generated This field/method will be replaced during code generation * @return The list of Initializers references */ EList getInitializers(); /** * @generated This field/method will be replaced during code generation * @return The DeclaringClass reference */ JavaClass getDeclaringClass(); /** * Sets the value of the '{@link org.eclipse.jem.java.JavaClass#getDeclaringClass <em>Declaring Class</em>}' reference. * <!-- begin-user-doc --> * <!-- end-user-doc --> * @param value the new value of the '<em>Declaring Class</em>' reference. * @see #getDeclaringClass() * @generated */ void setDeclaringClass(JavaClass value); /** * @generated This field/method will be replaced during code generation * @return The list of DeclaredClasses references */ EList getDeclaredClasses(); /** * @generated This field/method will be replaced during code generation * @return The JavaPackage reference */ JavaPackage getJavaPackage(); /** * @generated This field/method will be replaced during code generation * @return The list of Events references */ EList getEvents(); /** * Returns the value of the '<em><b>All Events</b></em>' reference list. * The list contents are of type {@link org.eclipse.jem.java.JavaEvent}. * <!-- begin-user-doc --> * <p> * If the meaning of the '<em>All Events</em>' reference list isn't clear, * there really should be more of a description here... * </p> * <!-- end-user-doc --> * @return the value of the '<em>All Events</em>' reference list. * @see org.eclipse.jem.java.JavaRefPackage#getJavaClass_AllEvents() * @model type="org.eclipse.jem.java.JavaEvent" transient="true" volatile="true" * @generated */ EList getAllEvents(); /** * @generated This field/method will be replaced during code generation */ boolean isNested(); /** * @generated This field/method will be replaced during code generation * Return an Field with the passed name, or null. */ Field getField(String fieldName); /** * @generated This field/method will be replaced during code generation * Return an Field with the passed name from this JavaClass or any supertypes. * * Return null if a Field named fieldName is not found. */ Field getFieldExtended(String fieldName); /** * @generated This field/method will be replaced during code generation * Return an Field with the passed name, or null. */ Field getFieldNamed(String fieldName); /** * @generated This field/method will be replaced during code generation * Return all fields, including those from supertypes. */ List getFieldsExtended(); /** * @generated This field/method will be replaced during code generation * Get the method of this name and these parameters. It will not look up the * supertype hierarchy. */ Method getMethod(String methodName, List parameterTypes); /** * @generated This field/method will be replaced during code generation * Return a List of Strings that represent MethodElement signatures from most * general to most specific. */ List getMethodElementSignatures(); /** * @generated This field/method will be replaced during code generation * Get the method of this name and these parameters. It will look up the supertype * hierarchy. */ Method getMethodExtended(String methodName, List parameterTypes); /** * @generated This field/method will be replaced during code generation * Return all methods, including those from supertypes. */ List getMethodsExtended(); /** * Return all methods, including those from supertypes excluding particular classes and methods. * @param excludedClasses - A list of JavaClass instances to be ignored. * @param excludedMethods - A list of Method instances to be ignored. */ List getMethodsExtendedWithFilters(List excludedClasses, List excludedMethods) ; /** * @generated This field/method will be replaced during code generation * Return a List of Methods that begins with @aMethodNamePrefix and is not * included in the @excludedNames list. If @aMethodNamePrefix is null, all methods * will be returned. */ List getOnlySpecificMethods(String aMethodNamePrefix, List excludedNames); /** * @generated This field/method will be replaced during code generation * Return a method matching the name, and non-return parameters with fully * qualified types matching all the types in the list, if it exists. It will not * look up the supertype hierarchy. */ Method getPublicMethod(String methodName, List parameterTypes); /** * @generated This field/method will be replaced during code generation * Return all methods, it will not go up the supertype hierarchy. */ List getPublicMethods(); /** * @generated This field/method will be replaced during code generation * Return all public methods, including those from supertypes. */ List getPublicMethodsExtended(); /** * @generated This field/method will be replaced during code generation * Returns a filtered list on the methods of this class, having a name equal to * that of the parameter. */ List getPublicMethodsNamed(String name); /** * @generated This field/method will be replaced during code generation */ JavaClass getSupertype(); /** * @generated This field/method will be replaced during code generation * Test whether the receiver implements the passed interface (or one of its * supertypes). */ boolean implementsInterface(JavaClass interfaceType); /** * @generated This field/method will be replaced during code generation * Return a string showing our details. */ String infoString(); /** * @generated This field/method will be replaced during code generation * Tests whether this class inherits from the passed in class. */ boolean inheritsFrom(JavaClass javaClass); /** * @generated This field/method will be replaced during code generation * Does this type exist. */ boolean isExistingType(); /** * <!-- begin-user-doc --> * <!-- end-user-doc --> * <!-- begin-model-doc --> * Is this an interface. * <!-- end-model-doc --> * @model kind="operation" * @generated */ boolean isInterface(); /** * @generated This field/method will be replaced during code generation * Set the supertype. */ void setSupertype(JavaClass javaclass) throws InheritanceCycleException; /** * Return true if the passed JavaClass can be set as the supertype * of this JavaClass. This method will test to see if aJavaClass will * create a cycle in the inheritance structure. Return true if no * inheritance cycle will be created. */ public boolean isValidSupertype(JavaClass aJavaClass) ; /** * Get the EStructuralFeatures that represent the BeanInfo properties for * just this Java class, not including inherited. It will return any EStructuralFeature * that was specified as being at this class either through the XMI override document or * through the BeanInfo. Structural features through the XMI may not be bean properties, * but they are part of the features available at this class only. * * This is a combination of getEAttributes() and getEReferences(). * * To retrieve only the Bean Properties, then use Beaninfo * Utilities.getPropertiesIterator(javaclass.getProperties()) and this will iterate over * the Bean PropertyDecorators, and filter out the non-bean features. * * @return The list of properties (as EStructuralFeature's) for this java class. This list is * not modifiable. */ EList getProperties(); /** * Get all of the EStructuralFeatures that represent the BeanInfo properties for * just this Java class, including inherited. It will return any EStructuralFeature * that was specified through the XMI override document or * through the BeanInfo. Structural features through the XMI may not be bean properties, * but they are part of the features available. * * The is like getEAllStructuralFeatures() except that if BeanInfo hides any bean properties * from the super class, this list will also hide them, while getEAllStructuralFeatures * will not. * * To retrieve only the Bean Properties, then use Beaninfo * Utilities.getPropertiesIterator(javaclass.getAllProperties()) and this will iterate over * the Bean PropertyDecorators, and filter out the non-bean features. * * @return The list of all properties, including inherited, (as EStructuralFeature's) for this class. This list is * not modifiable. */ EList getAllProperties(); /** * Return the reflection type, if it exists, for this class. If running within Eclipse this * will be an {@link org.eclipse.jdt.core.IType}, or running outside of Eclipse it will be a {@link java.lang.Class}. * * @return IType if in Eclipse, Class if outside Eclipse, or <code>null</code> if type not found. * * @since 1.1.0 */ Object getReflectionType(); }