|  | @@ -1,126 +0,0 @@
 | 
	
		
			
				|  |  | -package aspectj
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import org.gradle.api.Project
 | 
	
		
			
				|  |  | -import org.gradle.api.Plugin
 | 
	
		
			
				|  |  | -import org.gradle.api.tasks.TaskAction
 | 
	
		
			
				|  |  | -import org.gradle.api.logging.LogLevel
 | 
	
		
			
				|  |  | -import org.gradle.api.file.*
 | 
	
		
			
				|  |  | -import org.gradle.api.tasks.SourceSet
 | 
	
		
			
				|  |  | -import org.gradle.api.DefaultTask
 | 
	
		
			
				|  |  | -import org.gradle.api.GradleException
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -import org.gradle.api.plugins.JavaPlugin
 | 
	
		
			
				|  |  | -import org.gradle.api.tasks.compile.JavaCompile
 | 
	
		
			
				|  |  | -import org.gradle.plugins.ide.eclipse.GenerateEclipseProject
 | 
	
		
			
				|  |  | -import org.gradle.plugins.ide.eclipse.GenerateEclipseClasspath
 | 
	
		
			
				|  |  | -import org.gradle.plugins.ide.eclipse.EclipsePlugin
 | 
	
		
			
				|  |  | -import org.gradle.plugins.ide.eclipse.model.BuildCommand
 | 
	
		
			
				|  |  | -import org.gradle.plugins.ide.eclipse.model.ProjectDependency
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -/**
 | 
	
		
			
				|  |  | - *
 | 
	
		
			
				|  |  | - * @author Luke Taylor
 | 
	
		
			
				|  |  | - */
 | 
	
		
			
				|  |  | -class AspectJPlugin implements Plugin<Project> {
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	void apply(Project project) {
 | 
	
		
			
				|  |  | -		project.plugins.apply(JavaPlugin)
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		if (project.configurations.findByName('ajtools') == null) {
 | 
	
		
			
				|  |  | -			project.configurations.create('ajtools')
 | 
	
		
			
				|  |  | -			project.dependencies {
 | 
	
		
			
				|  |  | -				ajtools "org.aspectj:aspectjtools"
 | 
	
		
			
				|  |  | -				optional "org.aspectj:aspectjrt"
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		if (project.configurations.findByName('aspectpath') == null) {
 | 
	
		
			
				|  |  | -			project.configurations.create('aspectpath')
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		project.afterEvaluate {
 | 
	
		
			
				|  |  | -			setupAspectJ(project)
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	void setupAspectJ(Project project) {
 | 
	
		
			
				|  |  | -		project.tasks.withType(JavaCompile) { javaCompileTask ->
 | 
	
		
			
				|  |  | -			def javaCompileTaskName = javaCompileTask.name
 | 
	
		
			
				|  |  | -			def ajCompileTask = project.tasks.create(name: javaCompileTaskName + 'Aspect', overwrite: true, description: 'Compiles AspectJ Source', type: Ajc) {
 | 
	
		
			
				|  |  | -				inputs.files(javaCompileTask.inputs.files)
 | 
	
		
			
				|  |  | -				inputs.properties(javaCompileTask.inputs.properties.findAll {it.value != null})
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -				sourceRoots.addAll(project.sourceSets.main.java.srcDirs)
 | 
	
		
			
				|  |  | -				if(javaCompileTaskName.contains("Test")) {
 | 
	
		
			
				|  |  | -					sourceRoots.addAll(project.sourceSets.test.java.srcDirs)
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -				compileClasspath = javaCompileTask.classpath
 | 
	
		
			
				|  |  | -				destinationDir = javaCompileTask.destinationDir
 | 
	
		
			
				|  |  | -				aspectPath = project.configurations.aspectpath
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -			javaCompileTask.setActions Arrays.asList()
 | 
	
		
			
				|  |  | -			javaCompileTask.dependsOn ajCompileTask
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		project.tasks.withType(GenerateEclipseProject) {
 | 
	
		
			
				|  |  | -			project.eclipse.project.file.whenMerged { p ->
 | 
	
		
			
				|  |  | -				p.natures.add(0, 'org.eclipse.ajdt.ui.ajnature')
 | 
	
		
			
				|  |  | -				p.buildCommands = [new BuildCommand('org.eclipse.ajdt.core.ajbuilder')]
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -		project.tasks.withType(GenerateEclipseClasspath) {
 | 
	
		
			
				|  |  | -			project.eclipse.classpath.file.whenMerged { classpath ->
 | 
	
		
			
				|  |  | -				def entries = classpath.entries.findAll { it instanceof ProjectDependency}.findAll { entry ->
 | 
	
		
			
				|  |  | -					def projectPath = entry.path.replaceAll('/','')
 | 
	
		
			
				|  |  | -					project.rootProject.allprojects.find{ p->
 | 
	
		
			
				|  |  | -						if(p.plugins.findPlugin(EclipsePlugin)) {
 | 
	
		
			
				|  |  | -							return p.eclipse.project.name == projectPath && p.plugins.findPlugin(AspectJPlugin)
 | 
	
		
			
				|  |  | -						}
 | 
	
		
			
				|  |  | -						false
 | 
	
		
			
				|  |  | -					}
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -				entries.each { entry->
 | 
	
		
			
				|  |  | -					entry.entryAttributes.put('org.eclipse.ajdt.aspectpath','org.eclipse.ajdt.aspectpath')
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -class Ajc extends DefaultTask {
 | 
	
		
			
				|  |  | -	Set<File> sourceRoots = []
 | 
	
		
			
				|  |  | -	FileCollection compileClasspath
 | 
	
		
			
				|  |  | -	File destinationDir
 | 
	
		
			
				|  |  | -	FileCollection aspectPath
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	Ajc() {
 | 
	
		
			
				|  |  | -		logging.captureStandardOutput(LogLevel.INFO)
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -	@TaskAction
 | 
	
		
			
				|  |  | -	def compile() {
 | 
	
		
			
				|  |  | -		logger.info("="*30)
 | 
	
		
			
				|  |  | -		logger.info("="*30)
 | 
	
		
			
				|  |  | -		logger.info("Running ajc ...")
 | 
	
		
			
				|  |  | -		logger.info("classpath: ${compileClasspath?.files}")
 | 
	
		
			
				|  |  | -		logger.info("srcDirs ${sourceRoots}")
 | 
	
		
			
				|  |  | -		ant.taskdef(resource: "org/aspectj/tools/ant/taskdefs/aspectjTaskdefs.properties", classpath: project.configurations.ajtools.asPath)
 | 
	
		
			
				|  |  | -		if(sourceRoots.empty) {
 | 
	
		
			
				|  |  | -			return
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -		ant.iajc(classpath: compileClasspath.asPath, fork: 'true', destDir: destinationDir.absolutePath,
 | 
	
		
			
				|  |  | -				source: project.convention.plugins.java.sourceCompatibility,
 | 
	
		
			
				|  |  | -				target: project.convention.plugins.java.targetCompatibility,
 | 
	
		
			
				|  |  | -				aspectPath: aspectPath.asPath, sourceRootCopyFilter: '**/*.java', showWeaveInfo: 'true') {
 | 
	
		
			
				|  |  | -			sourceroots {
 | 
	
		
			
				|  |  | -				sourceRoots.each {
 | 
	
		
			
				|  |  | -					logger.info("	sourceRoot $it")
 | 
	
		
			
				|  |  | -					pathelement(location: it.absolutePath)
 | 
	
		
			
				|  |  | -				}
 | 
	
		
			
				|  |  | -			}
 | 
	
		
			
				|  |  | -		}
 | 
	
		
			
				|  |  | -	}
 | 
	
		
			
				|  |  | -}
 |