You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
3.2 KiB
79 lines
3.2 KiB
/******************************************************************** |
|
* Copyright (c) 2006 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: IBM Corporation - initial API and implementation |
|
* Helen Hawkins - initial version |
|
*******************************************************************/ |
|
package com.fr.third.aspectj.weaver.model; |
|
|
|
import com.fr.third.aspectj.weaver.patterns.AndPointcut; |
|
import com.fr.third.aspectj.weaver.patterns.OrPointcut; |
|
import com.fr.third.aspectj.weaver.patterns.Pointcut; |
|
import com.fr.third.aspectj.weaver.patterns.ReferencePointcut; |
|
|
|
/** |
|
* Provides utility methods for generating details for IProgramElements used when creating the model both from source (via |
|
* AsmElementFormatter.visit(..)) and when filling in the model for binary aspects (via AsmRelationshipProvider bug 145963) |
|
*/ |
|
public class AsmRelationshipUtils { |
|
|
|
// public static final String UNDEFINED="<undefined>"; |
|
public static final String DECLARE_PRECEDENCE = "precedence"; |
|
public static final String DECLARE_SOFT = "soft"; |
|
public static final String DECLARE_PARENTS = "parents"; |
|
public static final String DECLARE_WARNING = "warning"; |
|
public static final String DECLARE_ERROR = "error"; |
|
public static final String DECLARE_UNKNONWN = "<unknown declare>"; |
|
public static final String POINTCUT_ABSTRACT = "<abstract pointcut>"; |
|
public static final String POINTCUT_ANONYMOUS = "<anonymous pointcut>"; |
|
public static final String DOUBLE_DOTS = ".."; |
|
public static final int MAX_MESSAGE_LENGTH = 18; |
|
public static final String DEC_LABEL = "declare"; |
|
|
|
/** |
|
* Generates the declare message used in the details, for example if the declare warning statement has message |
|
* "There should be no printlns" will return 'declare warning: "There should be n.."' |
|
*/ |
|
public static String genDeclareMessage(String message) { |
|
int length = message.length(); |
|
if (length < MAX_MESSAGE_LENGTH) { |
|
return message; |
|
} else { |
|
return message.substring(0, MAX_MESSAGE_LENGTH - 1) + DOUBLE_DOTS; |
|
} |
|
} |
|
|
|
/** |
|
* Generates the pointcut details for the given pointcut, for example an anonymous pointcut will return '<anonymous pointcut>' |
|
* and a named pointcut called p() will return 'p()..' |
|
*/ |
|
public static String genPointcutDetails(Pointcut pcd) { |
|
StringBuffer details = new StringBuffer(); |
|
if (pcd instanceof ReferencePointcut) { |
|
ReferencePointcut rp = (ReferencePointcut) pcd; |
|
details.append(rp.name).append(DOUBLE_DOTS); |
|
} else if (pcd instanceof AndPointcut) { |
|
AndPointcut ap = (AndPointcut) pcd; |
|
if (ap.getLeft() instanceof ReferencePointcut) { |
|
details.append(ap.getLeft().toString()).append(DOUBLE_DOTS); |
|
} else { |
|
details.append(POINTCUT_ANONYMOUS).append(DOUBLE_DOTS); |
|
} |
|
} else if (pcd instanceof OrPointcut) { |
|
OrPointcut op = (OrPointcut) pcd; |
|
if (op.getLeft() instanceof ReferencePointcut) { |
|
details.append(op.getLeft().toString()).append(DOUBLE_DOTS); |
|
} else { |
|
details.append(POINTCUT_ANONYMOUS).append(DOUBLE_DOTS); |
|
} |
|
} else { |
|
details.append(POINTCUT_ANONYMOUS); |
|
} |
|
return details.toString(); |
|
} |
|
|
|
}
|
|
|