12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- /* *******************************************************************
- * Copyright (c) 2005 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://eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Adrian Colyer Initial implementation
- * ******************************************************************/
- package org.aspectj.internal.lang.reflect;
-
- import java.lang.reflect.Type;
-
- import org.aspectj.lang.reflect.AjType;
- import org.aspectj.lang.reflect.DeclareParents;
- import org.aspectj.lang.reflect.TypePattern;
-
- /**
- * @author colyer
- *
- */
- public class DeclareParentsImpl implements DeclareParents {
-
- private AjType<?> declaringType;
- private TypePattern targetTypesPattern;
- private Type[] parents;
- private String parentsString;
- private String firstMissingTypeName;
- private boolean isExtends;
- private boolean parentsError = false;
-
-
- // Parents arg is a comma-separate list of type names that needs to be turned into
- // AjTypes
- public DeclareParentsImpl(String targets, String parentsAsString, boolean isExtends, AjType<?> declaring)
- {
- this.targetTypesPattern = new TypePatternImpl(targets);
- this.isExtends = isExtends;
- this.declaringType = declaring;
- this.parentsString = parentsAsString;
- try {
- this.parents = StringToType.commaSeparatedListToTypeArray(parentsAsString, declaring.getJavaClass());
- } catch (ClassNotFoundException cnfEx) {
- this.parentsError = true;
- this.firstMissingTypeName = cnfEx.getMessage();
- }
- }
-
- public AjType getDeclaringType() {
- return this.declaringType;
- }
-
- public TypePattern getTargetTypesPattern() {
- return this.targetTypesPattern;
- }
-
- public boolean isExtends() {
- return this.isExtends;
- }
-
- public boolean isImplements() {
- return !this.isExtends;
- }
-
- public Type[] getParentTypes() throws ClassNotFoundException {
- if (parentsError) {
- throw new ClassNotFoundException(this.firstMissingTypeName);
- }
- return this.parents;
- }
-
- public String toString() {
- StringBuffer sb = new StringBuffer();
- sb.append("declare parents : ");
- sb.append(getTargetTypesPattern().asString());
- sb.append(isExtends() ? " extends " : " implements ");
- sb.append(this.parentsString);
- return sb.toString();
- }
- }
|