import org.gradle.plugins.ide.eclipse.model.AccessRule

project(':repository:org.eclipse.virgo.repository') {
    dependencies {
		testCompile group: 'org.easymock', name: 'easymock', version: easymockVersion

		testCompile project(':medic:org.eclipse.virgo.medic.test')
		testCompile project(':test:org.eclipse.virgo.test.stubs')
        testCompile group: 'org.eclipse.virgo.mirrored', name: 'org.apache.commons.codec', version: commonsCodecVersion, ext: "jar"
		testCompile group: 'org.eclipse.virgo.mirrored', name: 'org.apache.commons.logging', version: commonsLoggingVersion, ext: "jar"

        testRuntime "org.aspectj:aspectjrt:${project.aspectjVersion}"

        compile group: "org.slf4j", name: "slf4j-api", version: slf4jVersion
        compile group: "org.eclipse.virgo.mirrored", name: "org.eclipse.osgi", version: equinoxVersion, configuration: "compile", ext: "jar"

		compile group: 'org.eclipse.virgo.mirrored', name: 'oevm.org.apache.commons.httpclient', version: commonsHttpClientVersion, ext: "jar"

		compile project(':util:org.eclipse.virgo.util.common')
		compile project(':util:org.eclipse.virgo.util.io')
		compile project(':util:org.eclipse.virgo.util.jmx')
		compile project(':util:org.eclipse.virgo.util.math')
		compile project(':util:org.eclipse.virgo.util.osgi')
		compile project(':util:org.eclipse.virgo.util.osgi.manifest')
		compile project(':medic:org.eclipse.virgo.medic')

        if (System.properties['weaving.enabled'] == 'true') {
            aspectpath project(':medic:org.eclipse.virgo.medic')
            aspectpath project(':util:org.eclipse.virgo.util.jmx')
        }
	}

	eclipse.classpath {
		file.whenMerged {
			entries.each { source ->
				if (source.kind == 'con' && source.path.startsWith('org.eclipse.jdt.launching.JRE_CONTAINER')) {
					source.accessRules.add(new AccessRule('0', 'com/sun/net/httpserver/*'))
				}
			}
		}
	}
}
