I have not used those directories or any files inside them at all. I hope I am not taking away anything helpful from people who prefer working with inter-linked Eclipse projects instead of Maven, but I think we will notice if anyone complains and can revert in case of an emergency. Signed-off-by: Alexander Kriegisch <Alexander@Kriegisch.name>tags/V1_9_19
<?xml version="1.0" encoding="UTF-8"?> | |||||
<classpath> | |||||
<classpathentry kind="src" path="src"/> | |||||
<classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER"/> | |||||
<classpathentry kind="con" path="org.eclipse.ajdt.core.ASPECTJRT_CONTAINER"/> | |||||
<classpathentry kind="src" path="testsrc"/> | |||||
<classpathentry sourcepath="/lib/junit/junit-src.jar" kind="lib" path="/lib/junit/junit.jar"/> | |||||
<classpathentry kind="output" path="bin"/> | |||||
</classpath> |
<!-- wrapped at 70 characters, long elements wrapped --> | |||||
<!-- =========================================================================== | |||||
Copyright (c) 2005 Contributors. | |||||
All rights reserved. | |||||
This program and the accompanying materials are made available | |||||
under the terms of the Eclipse Public License v 2.0 | |||||
which accompanies this distribution and is available at | |||||
https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt | |||||
Contributors: | |||||
Wes Isberg initial implementation | |||||
============================================================================ --> | |||||
<project name="aspectj-library" default="aspectjlib" basedir="."> | |||||
<target name="aspectjlib" depends="compile" /> | |||||
<target name="info"> | |||||
<echo> | |||||
This script builds the AspectJ library. | |||||
Relevant targets: | |||||
aspectjlib build library | |||||
Setup: | |||||
- Run from the doc/aspectjlib directory in your AspectJ distribution. | |||||
The tasks in ../../lib/aspectjtools.jar are used automatically. | |||||
Variants: | |||||
- To define a variable, use the Ant -D option - e.g., on Windows: | |||||
ant -f build.xml -DJAVA_HOME=c:\jdk1.3.1 -Dnorun=skip | |||||
</echo> | |||||
</target> | |||||
<!-- ============================================================= --> | |||||
<!-- setup and cleanup targets --> | |||||
<!-- ============================================================= --> | |||||
<target name="clean" | |||||
depends="init" | |||||
description="clean and create classes/jar dir, .ajesym files" | |||||
> | |||||
<delete quiet="on" dir="${jar.dir}" /> | |||||
<delete quiet="on"> | |||||
<fileset dir="${org.aspectj.lib.dir}" | |||||
includes="**/*.ajesym" | |||||
/> | |||||
</delete> | |||||
<mkdir dir="${jar.dir}" /> | |||||
</target> | |||||
<target name="init" depends="init.variables,init.taskdefs" /> | |||||
<target name="init.variables" description="init variables"> | |||||
<property name="org.aspectj.lib.dir" location="${basedir}" /> | |||||
<property name="src.dir" | |||||
location="${org.aspectj.lib.dir}/src" | |||||
/> | |||||
<!-- find AspectJ lib dir in distribution or AspectJ CVS tree --> | |||||
<property name="aspectj.dist.lib" | |||||
location="${basedir}/../../lib" | |||||
/> | |||||
<property name="aspectj.tree.lib" | |||||
location="${basedir}/../lib/aspectj/lib" | |||||
/> | |||||
<condition property="aspectj.lib.dir" | |||||
value="${aspectj.dist.lib}" | |||||
> | |||||
<available file="${aspectj.dist.lib}/aspectjtools.jar" /> | |||||
</condition> | |||||
<condition property="aspectj.lib.dir" | |||||
value="${aspectj.tree.lib}" | |||||
> | |||||
<available file="${aspectj.tree.lib}/aspectjtools.jar" /> | |||||
</condition> | |||||
<property name="aspectjrt.jar" | |||||
location="${aspectj.lib.dir}/aspectjrt.jar" | |||||
/> | |||||
<property name="aspectjtools.jar" | |||||
location="${aspectj.lib.dir}/aspectjtools.jar" | |||||
/> | |||||
<property name="aspectjweaver.jar" | |||||
location="${aspectj.lib.dir}/aspectjweaver.jar" | |||||
/> | |||||
<property name="jar.dir" | |||||
location="${org.aspectj.lib.dir}/jars" | |||||
/> | |||||
<property name="aspectjlib.out.jar" | |||||
location="${jar.dir}/aspectjlib.out.jar" | |||||
/> | |||||
<available file="${aspectjtools.jar}" | |||||
property="aspectjtools.jar.available" | |||||
/> | |||||
<available file="${aspectjrt.jar}" | |||||
property="aspectjrt.jar.available" | |||||
/> | |||||
<property name="library.packages" value="org.aspectj.lib" /> | |||||
</target> | |||||
<target name="init.taskdefs" | |||||
depends="init.variables, | |||||
aspectjtools.jar.available, | |||||
aspectjrt.jar.available" | |||||
unless="taskdefs.init" | |||||
> | |||||
<taskdef resource="org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties" | |||||
> | |||||
<classpath> | |||||
<pathelement path="${aspectjtools.jar}" /> | |||||
</classpath> | |||||
</taskdef> | |||||
<property name="taskdefs.init" value="true" /> | |||||
</target> | |||||
<target name="aspectjrt.jar.available" | |||||
depends="init.variables" | |||||
unless="aspectjrt.jar.available" | |||||
> | |||||
<fail message="expecting aspectjrt.jar at ${aspectjrt.jar}" /> | |||||
</target> | |||||
<target name="aspectjtools.jar.available" | |||||
depends="init.variables" | |||||
unless="aspectjtools.jar.available" | |||||
> | |||||
<fail message="expecting aspectjtools.jar at ${aspectjtools.jar}" | |||||
/> | |||||
</target> | |||||
<target name="compile" | |||||
depends="init" | |||||
description="compile library" | |||||
> | |||||
<antcall target="clean" /> | |||||
<!-- can use ajc or iajc here --> | |||||
<iajc sourceroots="${src.dir}" | |||||
fork="true" | |||||
forkclasspath="${aspectjtools.jar}" | |||||
classpath="${aspectjrt.jar}" | |||||
outjar="${aspectjlib.out.jar}" | |||||
/> | |||||
</target> | |||||
</project> |
src.includes = src/,\ | |||||
testsrc/ |
Manifest-Version: 1.0 | |||||
Name: org/aspectj/lib/ | |||||
Specification-Title: AspectJ Library Classes | |||||
Specification-Version: @build.version.base@ | |||||
Specification-Vendor: @company.name@ | |||||
Implementation-Title: org.aspectj.lib | |||||
Implementation-Version: @build.version@ | |||||
Implementation-Vendor: @company.name@ | |||||
Bundle-Name: AspectJ | |||||
Bundle-Version: @build.version.base@ | |||||
Import-Package: org.aspectj.lib,org.aspectj.lib.pointcuts | |||||
Bundle-Copyright: (C) Copyright 2005 Contributors. | |||||
All Rights Reserved. | |||||
<project xmlns="http://maven.apache.org/POM/4.0.0" | |||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |||||
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> | |||||
<modelVersion>4.0.0</modelVersion> | |||||
<parent> | |||||
<groupId>org.aspectj</groupId> | |||||
<artifactId>aspectj-parent</artifactId> | |||||
<version>1.9.4</version> | |||||
</parent> | |||||
<artifactId>runtime</artifactId> | |||||
<dependencies> | |||||
<dependency> | |||||
<groupId>org.aspectj</groupId> | |||||
<artifactId>testing-util</artifactId> | |||||
<version>${project.version}</version> | |||||
<scope>test</scope> | |||||
</dependency> | |||||
</dependencies> | |||||
</project> |
<html> | |||||
<head><title>org.aspectj.lib library module</title></head> | |||||
<body> | |||||
<h2>org.aspectj.lib library module</h2> | |||||
<p> | |||||
This module has source for both <code>{AspectJ}/lib/aspectjlib.jar</code> | |||||
and <code>{AspectJ}/docs/aspectjlib/*</code>. | |||||
</p> | |||||
<h3>Building {AspectJ}/lib/aspectjlib.jar</h3> | |||||
<p> | |||||
This module is compiled using AspectJ, both in Eclipse and with Ant. | |||||
The Eclipse support is defined as usual in | |||||
<a href=".classpath">.classpath</a> and <a href=".project">.project</a>. | |||||
The Ant build support in <a href="../build/build.xml">../build/build.xml</a> | |||||
is limited: | |||||
</p> | |||||
<ul> | |||||
<li>This module is built and published as | |||||
<code>{aspectj}/lib/aspectjlib.jar</code>. | |||||
This happens automatically, with no explicit Ant script. | |||||
The <a href="../build/src/org/aspectj/internal/tools/build/Builder.java"> | |||||
Builder.java</a> | |||||
task uses <code>moduleAliasFor(String)</code> to map from the name of | |||||
the empty file | |||||
<a href="../build/products/tools/dist/lib/aspectjlib.jar"> | |||||
../build/products/tools/dist/lib/aspectjlib.jar</a> | |||||
back to the module output | |||||
<a href="../aj-build/jars/org.aspectj.lib.jar"> | |||||
../aj-build/jars/org.aspectj.lib.jar</a>.</li> | |||||
<li>The AspectJ support compiles only source files in <a href="src/">src/</a></li> | |||||
<li>It does not use inpath, aspectpath, or any other aspectj-specific | |||||
option</li> | |||||
<li>All non-Java (resource) files in the source directory will be included | |||||
in the library.</li> | |||||
<li>There should be no dependencies. Any libraries or modules on | |||||
the Java classpath would be included in the shipped library.</li> | |||||
<li>This is built using the release of AspectJ in | |||||
<a href="../lib/aspectj">../lib/aspectj</a>.</li> | |||||
</ul> | |||||
<h3>Building {AspectJ}/examples/aspectjlib/*</h3> | |||||
<p> | |||||
The docs build script <a href="../docs/build.xml">../docs/build.xml</a> | |||||
is responsible for assembling sources from this directory into the docs | |||||
directory. It relies on the name of the source directory and build script. | |||||
Also, <code>Builder.java</code> is designed to try to use any | |||||
<code>build.xml</code> to build the module, but Ant builds are now disabled. | |||||
So if you change the build script name or the source directory names, update | |||||
the docs build script and the builder as needed. | |||||
</p> | |||||
<p> | |||||
The <a href="build-aspectjlib.xml">build-aspectjlib.xml</a> script looks for | |||||
an AspectJ lib directory from either the distribution (aspectj/docs/aspectjlib) | |||||
or from the CVS tree (modules/org.aspectj.lib), so the script can be tested | |||||
in situ. | |||||
</p> | |||||
</body> | |||||
</html> |
/* ******************************************************************* | |||||
* Copyright (c) 2003-2005 Contributors. | |||||
* All rights reserved. | |||||
* This program and the accompanying materials are made available | |||||
* under the terms of the Eclipse Public License v 2.0 | |||||
* which accompanies this distribution and is available at | |||||
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt | |||||
* | |||||
* Contributors: | |||||
* Wes Isberg initial implementation | |||||
* ******************************************************************/ | |||||
// START-SAMPLE library-pointcutIdioms Standard pointcut idioms | |||||
package org.aspectj.lib.pointcuts; | |||||
import java.util.Collection; | |||||
import java.io.PrintStream; | |||||
/** | |||||
* Library of pointcut idioms to use in combination with | |||||
* other pointcuts. | |||||
* | |||||
* @author Wes Isberg | |||||
*/ | |||||
public final class Pointcuts { | |||||
// ------- not staticly-determinable | |||||
public pointcut adviceCflow() : cflow(adviceexecution()); | |||||
public pointcut notInAdviceCflow() : !adviceCflow(); | |||||
public pointcut cflowMainExecution() : | |||||
cflow(mainExecution()); | |||||
// ------- staticly-determinable | |||||
public pointcut mainExecution() : | |||||
execution(public static void main(String[])); | |||||
/** staticly-determinable to never match any join point */ | |||||
public pointcut never(); | |||||
public pointcut afterAdviceSupported() : !handler(*); | |||||
public pointcut aroundAdviceSupported() : !handler(*) | |||||
&& !initialization(new(..)) && !preinitialization(new(..)); | |||||
public pointcut anyMethodExecution() : | |||||
execution(* *(..)); | |||||
public pointcut anyPublicMethodExecution() : | |||||
execution(public * *(..)); | |||||
public pointcut anyPackageProtectedMethodExecution() : | |||||
execution(!private !public !protected * *(..)); | |||||
public pointcut anyNonPrivateMethodExecution() : | |||||
execution(!private * *(..)); | |||||
public pointcut anyConstructorExecution() : | |||||
execution(new(..)); | |||||
public pointcut anyPublicConstructorExecution() : | |||||
execution(public new(..)); | |||||
public pointcut anyNonPrivateConstructorExecution() : | |||||
execution(!private new(..)); | |||||
public pointcut anyPublicFieldGet() : | |||||
get(public * *); | |||||
public pointcut anyNonPrivateFieldGet() : | |||||
get(!private * *); | |||||
public pointcut anyPublicFieldSet() : | |||||
set(public * *); | |||||
public pointcut anyNonPrivateFieldSet() : | |||||
set(!private * *); // also !transient? | |||||
public pointcut withinSetter() : // require !static? | |||||
withincode(void set*(*)); // use any return type? multiple parms? | |||||
public pointcut withinGetter() : | |||||
withincode(!void get*()); // permit parms? require !static? | |||||
public pointcut anyNonPublicFieldSetOutsideConstructorOrSetter() : | |||||
set(!public * *) && !withincode(new(..)) | |||||
&& !withinSetter(); | |||||
public pointcut anyRunnableImplementation() : | |||||
staticinitialization(Runnable+); | |||||
public pointcut anyGetSystemErrOut() : | |||||
get(PrintStream System.err) || get(PrintStream System.out); | |||||
public pointcut anySetSystemErrOut() : | |||||
call(void System.setOut(..)) || call(void System.setErr(..)); | |||||
public pointcut withinAnyJavaCode() : | |||||
within(java..*) || within(javax..*); | |||||
public pointcut notWithinJavaCode() : | |||||
!withinAnyJavaCode(); | |||||
public pointcut toStringExecution() : | |||||
execution(String toString()) && !within(String); | |||||
/** call or execution of any Thread constructor, including subclasses */ | |||||
public pointcut anyThreadConstruction() : | |||||
call(Thread+.new(..)) || execution(Thread+.new(..)); | |||||
/** | |||||
* Any calls to java.io classes | |||||
* (but not methods declared only on their subclasses). | |||||
*/ | |||||
public pointcut anyJavaIOCalls() : | |||||
call(* java.io..*.*(..)) || call(java.io..*.new(..)); | |||||
/** | |||||
* Any calls to java.awt or javax.swing methods or constructors | |||||
* (but not methods declared only on their subclasses). | |||||
*/ | |||||
public pointcut anyJavaAWTOrSwingCalls() : | |||||
call(* java.awt..*.*(..)) || call(java.awt..*.new(..)) | |||||
|| call(* javax.swing..*.*(..)) || call(javax.swing..*.new(..)); | |||||
public pointcut cloneImplementationsInNonCloneable() : | |||||
execution(Object !Cloneable+.clone()); | |||||
public pointcut runImplementationsInNonRunnable() : | |||||
execution(void !Runnable+.run()); | |||||
/** any calls to java.lang.reflect or Class.get* (except getName()) */ | |||||
public pointcut anySystemReflectiveCalls() : | |||||
call(* java.lang.reflect..*.*(..)) | |||||
|| (!call(* Class.getName()) | |||||
&& call(* Class.get*(..))); | |||||
/** standard class-loading calls by Class and ClassLoader | |||||
* Note that `Foo.class` in bytecode is `Class.forName("Foo")`, | |||||
* so 'Foo.class' will also be picked out by this pointcut. | |||||
*/ | |||||
public pointcut anySystemClassLoadingCalls() : | |||||
call(Class Class.forName(..)) | |||||
|| call(Class ClassLoader.loadClass(..)); | |||||
public pointcut anySystemProcessSpawningCalls() : | |||||
call(Process Runtime.exec(..)) | |||||
|| call(Class ClassLoader.loadClass(..)); | |||||
/** Write methods on Collection | |||||
* Warning: Does not pick out <code>iterator()</code>, even though | |||||
* an Iterator can remove elements. | |||||
*/ | |||||
public pointcut anyCollectionWriteCalls() : | |||||
call(boolean Collection+.add(Object)) | |||||
|| call(boolean Collection+.addAll(Collection)) | |||||
|| call(void Collection+.clear()) | |||||
|| call(boolean Collection+.remove(Object)) | |||||
|| call(boolean Collection+.removeAll(Collection)) | |||||
|| call(boolean Collection+.retainAll(Collection)); | |||||
public pointcut mostThrowableReadCalls() : | |||||
call(* Throwable+.get*(..)) | |||||
|| call(* Throwable+.print*(..)) | |||||
|| call(String Throwable+.toString(..)); | |||||
public pointcut exceptionWrappingCalls() : | |||||
(args(Throwable+,..) || args(.., Throwable+)) | |||||
&& (set(Throwable+ Throwable+.*) | |||||
|| (call(* Throwable+.*(..)) | |||||
|| call(Throwable+.new(..)))); | |||||
public pointcut anyCodeThrowingException() : | |||||
execution(* *(..) throws Exception+) | |||||
|| execution(new(..) throws Exception+); | |||||
private Pointcuts() {} | |||||
} | |||||
//END-SAMPLE library-pointcutIdioms | |||||
/* ******************************************************************* | |||||
* Copyright (c) 2005 Contributors. | |||||
* All rights reserved. | |||||
* This program and the accompanying materials are made available | |||||
* under the terms of the Eclipse Public License v 2.0 | |||||
* which accompanies this distribution and is available at | |||||
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt | |||||
* | |||||
* Contributors: | |||||
* Wes Isberg initial implementation | |||||
* ******************************************************************/ | |||||
// START-SAMPLE tracing-traceJoinPoints Trace join points executed to log | |||||
package org.aspectj.lib.tracing; | |||||
import org.aspectj.lang.*; | |||||
import org.aspectj.lang.reflect.*; | |||||
import java.io.*; | |||||
/** | |||||
* Print join points being executed in context to a log.xml file. | |||||
* To use this, define the abstract pointcuts in a subaspect. | |||||
* @author Jim Hugunin, Wes Isberg | |||||
*/ | |||||
public abstract aspect TraceJoinPoints | |||||
extends TraceJoinPointsBase { | |||||
// abstract protected pointcut entry(); | |||||
PrintStream out; | |||||
int logs = 0; | |||||
int depth = 0; | |||||
boolean terminal = false; | |||||
/** | |||||
* Emit a message in the log, e.g., | |||||
* <pre>TraceJoinPoints tjp = TraceJoinPoints.aspectOf(); | |||||
* if (null != tjp) tjp.message("Hello, World!");</pre> | |||||
*/ | |||||
public void message(String s) { | |||||
out.println("<message>" + prepareMessage(s) + "</message>"); | |||||
} | |||||
protected void startLog() { | |||||
makeLogStream(); | |||||
} | |||||
protected void completeLog() { | |||||
closeLogStream(); | |||||
} | |||||
protected void logEnter(JoinPoint.StaticPart jp) { | |||||
if (terminal) out.println(">"); | |||||
indent(depth); | |||||
out.print("<" + jp.getKind()); | |||||
writeSig(jp); | |||||
writePos(jp); | |||||
depth += 1; | |||||
terminal = true; | |||||
} | |||||
protected void logExit(JoinPoint.StaticPart jp) { | |||||
depth -= 1; | |||||
if (terminal) { | |||||
getOut().println("/>"); | |||||
} else { | |||||
indent(depth); | |||||
getOut().println("</" + jp.getKind() + ">"); | |||||
} | |||||
terminal = false; | |||||
} | |||||
protected PrintStream getOut() { | |||||
if (null == out) { | |||||
String m = "not in the control flow of entry()"; | |||||
throw new IllegalStateException(m); | |||||
} | |||||
return out; | |||||
} | |||||
protected void makeLogStream() { | |||||
try { | |||||
String name = "log" + logs++ + ".xml"; | |||||
out = new PrintStream(new FileOutputStream(name)); | |||||
} catch (IOException ioe) { | |||||
out = System.err; | |||||
} | |||||
} | |||||
protected void closeLogStream() { | |||||
PrintStream out = this.out; | |||||
if (null != out) { | |||||
out.close(); | |||||
// this.out = null; | |||||
} | |||||
} | |||||
/** @return input String formatted for XML */ | |||||
protected String prepareMessage(String s) { // XXX unimplemented | |||||
return s; | |||||
} | |||||
void message(String sink, String s) { | |||||
if (null == sink) { | |||||
message(s); | |||||
} else { | |||||
getOut().println("<message sink=" + quoteXml(sink) | |||||
+ " >" + prepareMessage(s) + "</message>"); | |||||
} | |||||
} | |||||
void writeSig(JoinPoint.StaticPart jp) { | |||||
PrintStream out = getOut(); | |||||
out.print(" sig="); | |||||
out.print(quoteXml(jp.getSignature().toShortString())); | |||||
} | |||||
void writePos(JoinPoint.StaticPart jp) { | |||||
SourceLocation loc = jp.getSourceLocation(); | |||||
if (loc == null) return; | |||||
PrintStream out = getOut(); | |||||
out.print(" pos="); | |||||
out.print(quoteXml(loc.getFileName() + | |||||
":" + loc.getLine() + | |||||
":" + loc.getColumn())); | |||||
} | |||||
protected String quoteXml(String s) { // XXX weak | |||||
return "\"" + s.replace('<', '_').replace('>', '_') + "\""; | |||||
} | |||||
protected void indent(int i) { | |||||
PrintStream out = getOut(); | |||||
while (i-- > 0) out.print(" "); | |||||
} | |||||
} | |||||
// END-SAMPLE tracing-traceJoinPoints | |||||
/* ******************************************************************* | |||||
* Copyright (c) 2005 Contributors. | |||||
* All rights reserved. | |||||
* This program and the accompanying materials are made available | |||||
* under the terms of the Eclipse Public License v 2.0 | |||||
* which accompanies this distribution and is available at | |||||
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt | |||||
* | |||||
* Contributors: | |||||
* Wes Isberg initial implementation | |||||
* ******************************************************************/ | |||||
// START-SAMPLE tracing-traceJoinPoints Trace join points executed | |||||
package org.aspectj.lib.tracing; | |||||
import org.aspectj.lang.JoinPoint; | |||||
/** | |||||
* Trace join points being executed in context. | |||||
* To use this, define the abstract members in a subaspect. | |||||
* <b>Warning</b>: this does not trace join points that do not | |||||
* support after advice. | |||||
* @author Jim Hugunin, Wes Isberg | |||||
*/ | |||||
abstract aspect TraceJoinPointsBase { | |||||
declare precedence : TraceJoinPointsBase, *; | |||||
abstract protected pointcut entry(); | |||||
/** ignore join points outside this scope - use within(..) */ | |||||
abstract protected pointcut withinScope(); | |||||
protected pointcut exit(): withinScope() && call(* java..*.*(..)); | |||||
final pointcut start(): withinScope() && entry() && !cflowbelow(entry()); | |||||
final pointcut trace(): withinScope() && cflow(entry()) | |||||
&& !cflowbelow(exit()) && !within(TraceJoinPointsBase+); | |||||
private pointcut supportsAfterAdvice() : !handler(*) | |||||
&& !preinitialization(new(..)); | |||||
before(): start() { startLog(); } | |||||
before(): trace() && supportsAfterAdvice(){ | |||||
logEnter(thisJoinPointStaticPart); | |||||
} | |||||
after(): trace() && supportsAfterAdvice() { | |||||
logExit(thisJoinPointStaticPart); | |||||
} | |||||
after(): start() { completeLog(); } | |||||
abstract protected void logEnter(JoinPoint.StaticPart jp); | |||||
abstract protected void logExit(JoinPoint.StaticPart jp); | |||||
/** called before any logging */ | |||||
abstract protected void startLog(); | |||||
/** called after any logging */ | |||||
abstract protected void completeLog(); | |||||
} | |||||
// END-SAMPLE tracing-traceJoinPoints | |||||
package org.aspectj.lib; | |||||
/* ******************************************************************* | |||||
* Copyright (c) 2005 Contributors. | |||||
* All rights reserved. | |||||
* This program and the accompanying materials are made available | |||||
* under the terms of the Eclipse Public License v 2.0 | |||||
* which accompanies this distribution and is available at | |||||
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt | |||||
* | |||||
* Contributors: | |||||
* Wes Isberg initial implementation | |||||
* ******************************************************************/ | |||||
// default package | |||||
import junit.framework.Test; | |||||
import junit.framework.TestCase; | |||||
import junit.framework.TestSuite; | |||||
public class LibModuleTests extends TestCase { | |||||
public static Test suite() { | |||||
TestSuite suite = new TestSuite(LibModuleTests.class.getName()); | |||||
suite.addTest(org.aspectj.lib.pointcuts.PointcutsTests.suite()); | |||||
suite.addTest(org.aspectj.lib.tracing.TracingTests.suite()); | |||||
return suite; | |||||
} | |||||
} |
/* ******************************************************************* | |||||
* Copyright (c) 2005 Contributors. | |||||
* All rights reserved. | |||||
* This program and the accompanying materials are made available | |||||
* under the terms of the Eclipse Public License v 2.0 | |||||
* which accompanies this distribution and is available at | |||||
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt | |||||
* | |||||
* Contributors: | |||||
* Wes Isberg initial implementation | |||||
* ******************************************************************/ | |||||
package org.aspectj.lib.pointcuts; | |||||
import junit.framework.TestCase; | |||||
/** | |||||
* | |||||
*/ | |||||
public class PointcutsTest extends TestCase { | |||||
public void test_anyPublicMethodExecution() { | |||||
try { | |||||
Test_anyPublicMethodExecution.error(); | |||||
assertTrue("no exception thrown", false); | |||||
} catch (Error e) { | |||||
// ok, advice worked | |||||
} | |||||
} | |||||
private static aspect Test_anyPublicMethodExecution { | |||||
public static void error() { | |||||
throw new RuntimeException("wrong exception"); | |||||
} | |||||
static void nonpublic() {} | |||||
before() : | |||||
execution(static void Test_anyPublicMethodExecution.error()) | |||||
&& Pointcuts.anyPublicMethodExecution() { | |||||
throw new Error(""); | |||||
} | |||||
declare error : | |||||
execution(static void Test_anyPublicMethodExecution.nonpublic()) | |||||
&& Pointcuts.anyPublicMethodExecution() | |||||
: "anyPublicMethodExecution failed - not public"; | |||||
} | |||||
private static aspect compileChecks { | |||||
/** balk if Pointcuts has code - s.b. only pointcuts */ | |||||
declare error : within(Pointcuts) && | |||||
(set(* *) || Pointcuts.anyMethodExecution() || | |||||
(Pointcuts.anyConstructorExecution() | |||||
&& !execution(private Pointcuts.new()))) : | |||||
"only pointcuts permitted in Pointcuts"; | |||||
} | |||||
} |
/* ******************************************************************* | |||||
* Copyright (c) 2005 Contributors. | |||||
* All rights reserved. | |||||
* This program and the accompanying materials are made available | |||||
* under the terms of the Eclipse Public License v 2.0 | |||||
* which accompanies this distribution and is available at | |||||
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt | |||||
* | |||||
* Contributors: | |||||
* Wes Isberg initial implementation | |||||
* ******************************************************************/ | |||||
package org.aspectj.lib.pointcuts; | |||||
import junit.framework.Test; | |||||
import junit.framework.TestCase; | |||||
import junit.framework.TestSuite; | |||||
public class PointcutsTests extends TestCase { | |||||
public static Test suite() { | |||||
TestSuite suite = new TestSuite(PointcutsTests.class.getName()); | |||||
//$JUnit-BEGIN$ | |||||
suite.addTestSuite(PointcutsTest.class); | |||||
//$JUnit-END$ | |||||
return suite; | |||||
} | |||||
public PointcutsTests(String name) { super(name); } | |||||
} |
/* ******************************************************************* | |||||
* Copyright (c) 2005 Contributors. | |||||
* All rights reserved. | |||||
* This program and the accompanying materials are made available | |||||
* under the terms of the Eclipse Public License v 2.0 | |||||
* which accompanies this distribution and is available at | |||||
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt | |||||
* | |||||
* Contributors: | |||||
* Wes Isberg initial implementation | |||||
* ******************************************************************/ | |||||
package org.aspectj.lib.tracing; | |||||
import junit.framework.TestCase; | |||||
import org.aspectj.lang.JoinPoint.StaticPart; | |||||
/** | |||||
* | |||||
*/ | |||||
public class TraceJoinPointsTest extends TestCase { | |||||
public void testTraceJoinPoints() { | |||||
checkTjp(); | |||||
TestTJP aspect = TestTJP.aspectOf(); | |||||
assertNotNull("aspect", aspect); | |||||
assertTrue("checked", aspect.checked); | |||||
} | |||||
static final int NUMJP = 1; | |||||
static void checkTjp() { | |||||
// NUMJP: only 1 join point | |||||
long l = System.currentTimeMillis(); | |||||
} | |||||
/** poor design/test */ | |||||
static aspect TestTJP extends TraceJoinPoints { | |||||
protected pointcut withinScope() : within(TraceJoinPointsTest) | |||||
&& !within(TestTJP); | |||||
pointcut traceJoinPoints() : | |||||
execution(static void TraceJoinPointsTest.testTraceJoinPoints()); | |||||
protected pointcut entry() : | |||||
execution(static void TraceJoinPointsTest.checkTjp()); | |||||
boolean checked; | |||||
int logEnter = 10; | |||||
int logExit = 10; | |||||
int startLog = 10; | |||||
int completeLog = 10; | |||||
protected void logEnter(StaticPart jp) { | |||||
logEnter++; | |||||
} | |||||
protected void logExit(StaticPart jp) { | |||||
logExit++; | |||||
} | |||||
protected void startLog() { | |||||
startLog = 0; | |||||
completeLog = 0; | |||||
logEnter = 0; | |||||
logExit = 0; | |||||
startLog++; | |||||
} | |||||
protected void completeLog() { | |||||
completeLog++; | |||||
} | |||||
after() returning : entry() { | |||||
assertEquals("startLog", 1, startLog); | |||||
assertEquals("completeLog", 1, startLog); | |||||
assertEquals("logExit", NUMJP, startLog); | |||||
assertEquals("logEntry", NUMJP, startLog); | |||||
assertTrue(!checked); | |||||
checked = true; | |||||
} | |||||
} | |||||
} |
/* ******************************************************************* | |||||
* Copyright (c) 2005 Contributors. | |||||
* All rights reserved. | |||||
* This program and the accompanying materials are made available | |||||
* under the terms of the Eclipse Public License v 2.0 | |||||
* which accompanies this distribution and is available at | |||||
* https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.txt | |||||
* | |||||
* Contributors: | |||||
* Wes Isberg initial implementation | |||||
* ******************************************************************/ | |||||
package org.aspectj.lib.tracing; | |||||
import junit.framework.Test; | |||||
import junit.framework.TestCase; | |||||
import junit.framework.TestSuite; | |||||
public class TracingTests extends TestCase { | |||||
public static Test suite() { | |||||
TestSuite suite = new TestSuite(TracingTests.class.getName()); | |||||
//$JUnit-BEGIN$ | |||||
suite.addTestSuite(TraceJoinPointsTest.class); | |||||
//$JUnit-END$ | |||||
return suite; | |||||
} | |||||
} |
<?xml version="1.0" encoding="UTF-8"?> | |||||
<classpath> | |||||
<classpathentry kind="src" path=""/> | |||||
<classpathentry kind="output" path=""/> | |||||
</classpath> |
<?xml version="1.0" encoding="UTF-8"?> | |||||
<projectDescription> | |||||
<name>shadows.org.eclipse.jdt.core</name> | |||||
<comment></comment> | |||||
<projects> | |||||
</projects> | |||||
<buildSpec> | |||||
<buildCommand> | |||||
<name>org.eclipse.jdt.core.javabuilder</name> | |||||
<arguments> | |||||
</arguments> | |||||
</buildCommand> | |||||
</buildSpec> | |||||
<natures> | |||||
<nature>org.eclipse.jdt.core.javanature</nature> | |||||
</natures> | |||||
</projectDescription> |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> | |||||
<html> | |||||
<head> | |||||
<title>Placeholder for the Shadow version Eclipse JDT compiler</title> | |||||
</head> | |||||
<body> | |||||
<h1>Placeholder for the Shadow version of the Eclipse JDT Compiler</h1> | |||||
<p>This module is here so that the org.eclipse.jdt.core project can | |||||
fulfill its project dependencies when not working with the 'real' | |||||
shadow version of org.eclipse.jdt.core (the normal mode). It contains | |||||
a build.xml file that does nothing, in order to satisfy the external | |||||
builder tool added to the chain of the org.eclipse.jdt.core HEAD project. | |||||
</p> | |||||
</body> | |||||
</html> |
<project name="ShadowJdtCore" basedir="." default="make.jdtcore.jar"> | |||||
<target name="make.jdtcore.jar"> | |||||
<echo message="dummy build of jdtcore.jar complete."/> | |||||
</target> | |||||
</project> |