Logo Search packages:      
Sourcecode: aspectj version File versions  Download package

ReferenceTypeDelegate.java

/* *******************************************************************
 * Copyright (c) 2002 Contributors
 * 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: 
 *     PARC     initial implementation 
 *     Andy Clement - June 2005 - separated out from ResolvedType
 * ******************************************************************/
package org.aspectj.weaver;

import java.util.Collection;

import org.aspectj.weaver.patterns.Declare;
import org.aspectj.weaver.patterns.PerClause;

/**
 * Abstraction over a type - a reference type is Object or a descendant of Object, other types (int/etc) are considered primitive
 * types. Abstract implementation provided by AbstractReferenceTypeDelegate.
 */

00025 public interface ReferenceTypeDelegate {

      public boolean isAspect();

      /**
       * @return true if the type is an annotation style aspect (a type marked @Aspect)
       */
      public boolean isAnnotationStyleAspect();

      public boolean isInterface();

      public boolean isEnum();

      public boolean isAnnotation();

      public String getRetentionPolicy();

      /**
       * @return true if this annotation type can be on a regular type (ie. it doesn't specify anything or it specifies TYPE)
       */
      public boolean canAnnotationTargetType();

      /**
       * @return all the possible targets that this annotation can be placed upon
       */
      public AnnotationTargetKind[] getAnnotationTargetKinds();

      /**
       * @return true if this annotation type has a retention policy of RUNTIME
       */
      public boolean isAnnotationWithRuntimeRetention();

      public boolean isClass();

      public boolean isGeneric();

      public boolean isAnonymous();

      public boolean isNested();

      public boolean hasAnnotation(UnresolvedType ofType);

      public AnnotationAJ[] getAnnotations();

      public ResolvedType[] getAnnotationTypes();

      public ResolvedMember[] getDeclaredFields();

      public ResolvedType[] getDeclaredInterfaces();

      public ResolvedMember[] getDeclaredMethods();

      public ResolvedMember[] getDeclaredPointcuts();

      public TypeVariable[] getTypeVariables();

      public int getModifiers();

      // aspect declaration related members
      /**
       * @return for an aspect declaration, return the
       */
      public PerClause getPerClause();

      public Collection<Declare> getDeclares();

      public Collection getTypeMungers();

      public Collection getPrivilegedAccesses();

      // end of aspect declaration related members

      public ResolvedType getSuperclass();

      public WeaverStateInfo getWeaverState();

      public ReferenceType getResolvedTypeX();

      // needs renaming isWeavable or removing from here
      public boolean isExposedToWeaver();

      public boolean doesNotExposeShadowMungers();

      public ISourceContext getSourceContext();

      public String getSourcefilename();

      public String getDeclaredGenericSignature();

      public ResolvedType getOuterClass();

      public boolean copySourceContext();

}

Generated by  Doxygen 1.6.0   Back to index