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.

BcweaverJarMaker.java 15KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416
  1. /* *******************************************************************
  2. * Copyright (c) 2002 Palo Alto Research Center, Incorporated (PARC).
  3. * All rights reserved.
  4. * This program and the accompanying materials are made available
  5. * under the terms of the Common Public License v1.0
  6. * which accompanies this distribution and is available at
  7. * http://www.eclipse.org/legal/cpl-v10.html
  8. *
  9. * Contributors:
  10. * PARC initial implementation
  11. * ******************************************************************/
  12. package org.aspectj.ajdt.internal.compiler.batch;
  13. import java.io.File;
  14. import java.io.IOException;
  15. import java.util.*;
  16. import java.util.ArrayList;
  17. import org.aspectj.ajdt.ajc.AjdtAjcTests;
  18. public class BcweaverJarMaker {
  19. public BcweaverJarMaker() {
  20. super();
  21. }
  22. public static void main(String[] args) throws IOException {
  23. makeJar0();
  24. makeJar1();
  25. makeJar1a();
  26. makeJar2();
  27. makeJarObviousNothing();
  28. makeJarHardNothing();
  29. makeTestJars();
  30. makeURLWeavingClassLoaderJars();
  31. makeDuplicateManifestTestJars();
  32. makeOutjarTestJars();
  33. }
  34. public static void makeJar0() throws IOException {
  35. List args = new ArrayList();
  36. args.add("-outjar");
  37. args.add("../weaver/testdata/tracing.jar");
  38. args.add("-classpath");
  39. args.add("../runtime/bin" + File.pathSeparator +
  40. System.getProperty("aspectjrt.path"));
  41. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/Trace.java");
  42. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/MyTrace.java");
  43. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  44. }
  45. public static void makeJar1() throws IOException {
  46. List args = new ArrayList();
  47. args.add("-outjar");
  48. args.add("../weaver/testdata/megatrace.jar");
  49. args.add("-classpath");
  50. args.add("../runtime/bin" + File.pathSeparator +
  51. System.getProperty("aspectjrt.path"));
  52. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/trace/MegaTrace.java");
  53. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/trace/ExecTrace.java");
  54. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  55. }
  56. public static void makeJarObviousNothing() throws IOException {
  57. List args = new ArrayList();
  58. args.add("-outjar");
  59. args.add("../weaver/testdata/megatrace0easy.jar");
  60. args.add("-classpath");
  61. args.add("../runtime/bin" + File.pathSeparator +
  62. System.getProperty("aspectjrt.path"));
  63. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/trace/MegaTrace.java");
  64. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/trace/ObviousTraceNothing.java");
  65. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  66. }
  67. public static void makeJarHardNothing() throws IOException {
  68. List args = new ArrayList();
  69. args.add("-outjar");
  70. args.add("../weaver/testdata/megatrace0hard.jar");
  71. args.add("-classpath");
  72. args.add("../runtime/bin" + File.pathSeparator +
  73. System.getProperty("aspectjrt.path"));
  74. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/trace/MegaTrace.java");
  75. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/trace/HardTraceNothing.java");
  76. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  77. }
  78. public static void makeJar1a() throws IOException {
  79. List args = new ArrayList();
  80. args.add("-outjar");
  81. args.add("../weaver/testdata/megatraceNoweave.jar");
  82. args.add("-noweave");
  83. args.add("-classpath");
  84. args.add("../runtime/bin" + File.pathSeparator +
  85. System.getProperty("aspectjrt.path"));
  86. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/trace/MegaTrace.java");
  87. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/trace/ExecTrace.java");
  88. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  89. }
  90. public static void makeJar2() throws IOException {
  91. List args = new ArrayList();
  92. args.add("-outjar");
  93. args.add("../weaver/testdata/dummyAspect.jar");
  94. args.add("-classpath");
  95. args.add("../runtime/bin" + File.pathSeparator +
  96. System.getProperty("aspectjrt.path"));
  97. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/DummyAspect.java");
  98. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  99. }
  100. public static void makeTestJars() throws IOException {
  101. List args = new ArrayList();
  102. args.add("-classpath");
  103. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
  104. File.pathSeparator + System.getProperty("aspectjrt.path"));
  105. args.add("-outjar");
  106. args.add("../tests/new/options11/aspectlib1.jar");
  107. args.add("../tests/new/options11/library1/*.java");
  108. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  109. args = new ArrayList();
  110. args.add("-classpath");
  111. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
  112. File.pathSeparator + System.getProperty("aspectjrt.path"));
  113. args.add("-outjar");
  114. args.add("../tests/new/options11/aspectlib2.jar");
  115. args.add("../tests/new/options11/library2/*.java");
  116. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  117. args = new ArrayList();
  118. args.add("-classpath");
  119. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
  120. File.pathSeparator + System.getProperty("aspectjrt.path"));
  121. args.add("-outjar");
  122. args.add("../tests/new/options11/injar.jar");
  123. args.add("../tests/new/options11/injar/*.java");
  124. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  125. args = new ArrayList();
  126. args.add("-classpath");
  127. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
  128. File.pathSeparator + System.getProperty("aspectjrt.path"));
  129. args.add("-outjar");
  130. args.add("../tests/bugs/serialVersionUID/injar.jar");
  131. args.add("../tests/bugs/serialVersionUID/Test.java");
  132. args.add("../tests/bugs/serialVersionUID/Util.java");
  133. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  134. // For PR55341
  135. args = new ArrayList();
  136. args.add("-classpath");
  137. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
  138. File.pathSeparator + System.getProperty("aspectjrt.path"));
  139. args.add("-outjar");
  140. args.add("../tests/bugs/StringToString/helloworld.jar");
  141. args.add("../tests/bugs/StringToString/HW.java");
  142. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  143. buildShowWeaveInfoTestingJars();
  144. }
  145. public static void makeURLWeavingClassLoaderJars() throws IOException {
  146. List args = new ArrayList();
  147. /*
  148. * Vanilla classes
  149. */
  150. args.add("-classpath");
  151. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
  152. File.pathSeparator + System.getProperty("aspectjrt.path"));
  153. args.add("-outjar");
  154. args.add("../weaver/testdata/ltw-classes.jar");
  155. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/LTWHelloWorld.java");
  156. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/ltw/LTWPackageTest.java");
  157. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  158. /*
  159. * Woven classes
  160. */
  161. args = new ArrayList();
  162. args.add("-classpath");
  163. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar;../weaver/testdata/ltw-classes.jar" +
  164. File.pathSeparator + System.getProperty("aspectjrt.path"));
  165. args.add("-outjar");
  166. args.add("../weaver/testdata/ltw-woven.jar");
  167. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/LTWHelloWorld.java");
  168. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/LTWAspect.aj");
  169. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  170. /*
  171. * Advice
  172. */
  173. args = new ArrayList();
  174. args.add("-classpath");
  175. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar;../weaver/testdata/ltw-classes.jar" +
  176. File.pathSeparator + System.getProperty("aspectjrt.path"));
  177. args.add("-outjar");
  178. args.add("../weaver/testdata/ltw-aspects.jar");
  179. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/LTWAspect.aj");
  180. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  181. /*
  182. * Declare warning advice
  183. */
  184. args = new ArrayList();
  185. args.add("-classpath");
  186. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar;../weaver/testdata/ltw-classes.jar" +
  187. File.pathSeparator + System.getProperty("aspectjrt.path"));
  188. args.add("-outjar");
  189. args.add("../weaver/testdata/ltw-dwaspects.jar");
  190. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/LTWDeclareWarning.aj");
  191. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  192. /*
  193. * Declare error advice
  194. */
  195. args = new ArrayList();
  196. args.add("-classpath");
  197. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar;../weaver/testdata/ltw-classes.jar" +
  198. File.pathSeparator + System.getProperty("aspectjrt.path"));
  199. args.add("-outjar");
  200. args.add("../weaver/testdata/ltw-deaspects.jar");
  201. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/LTWDeclareError.aj");
  202. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  203. /*
  204. * Around closure advice
  205. */
  206. args = new ArrayList();
  207. args.add("-classpath");
  208. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar;../weaver/testdata/ltw-classes.jar" +
  209. File.pathSeparator + System.getProperty("aspectjrt.path"));
  210. args.add("-outjar");
  211. args.add("../weaver/testdata/ltw-acaspects.jar");
  212. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/LTWAroundClosure.aj");
  213. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  214. /*
  215. * ITD
  216. */
  217. args = new ArrayList();
  218. args.add("-Xlint:ignore");
  219. args.add("-classpath");
  220. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar;../weaver/testdata/ltw-classes.jar" +
  221. File.pathSeparator + System.getProperty("aspectjrt.path"));
  222. args.add("-outjar");
  223. args.add("../weaver/testdata/ltw-itdaspects.jar");
  224. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/LTWInterfaceITD.aj");
  225. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/LTWFieldITD.aj");
  226. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/LTWMethodITD.aj");
  227. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  228. /*
  229. * perXXX()
  230. */
  231. args = new ArrayList();
  232. args.add("-classpath");
  233. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar;../weaver/testdata/ltw-classes.jar" +
  234. File.pathSeparator + System.getProperty("aspectjrt.path"));
  235. args.add("-outjar");
  236. args.add("../weaver/testdata/ltw-peraspects.jar");
  237. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/LTWPerthis.aj");
  238. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  239. }
  240. private static void buildJarWithClasspath(String outjar,String input,String deps,boolean nodebug) {
  241. System.out.println(" Building "+outjar);
  242. List args = new ArrayList();
  243. if (nodebug) args.add("-g:none");
  244. args.add("-classpath");
  245. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
  246. File.pathSeparator + System.getProperty("aspectjrt.path") +
  247. (deps!=null?File.pathSeparator + "../ajde/testdata/WeaveInfoMessagesTest/"+deps:""));
  248. args.add("-outjar");
  249. args.add("../ajde/testdata/WeaveInfoMessagesTest/"+outjar);
  250. args.add("../ajde/testdata/WeaveInfoMessagesTest/"+input);
  251. System.err.println(args);
  252. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  253. }
  254. private static void buildShowWeaveInfoTestingJars() {
  255. System.out.println("For binary weave info message testing (ShowWeaveMessagesTestCase.java)");
  256. buildJarWithClasspath("Simple.jar","Simple.java",null,false);
  257. // Build with javac and jar
  258. // buildJarWithClasspath("Simple_nodebug.jar","Simple.java",null,true);
  259. buildJarWithClasspath("AspectAdvice.jar","AspectAdvice.aj",null,false);
  260. buildJarWithClasspath("AspectAdvice_nodebug.jar","AspectAdvice.aj","Simple.jar",true);
  261. buildJarWithClasspath("AspectDeclare.jar","AspectDeclare.aj","Simple.jar",false);
  262. buildJarWithClasspath("AspectDeclare_nodebug.jar","AspectDeclare.aj","Simple.jar",true);
  263. buildJarWithClasspath("AspectITD.jar","AspectITD.aj","Simple.jar",false);
  264. buildJarWithClasspath("AspectITD_nodebug.jar","AspectITD.aj","Simple.jar",true);
  265. buildJarWithClasspath("AspectDeclareSoft.jar","AspectDeclareSoft.aj","Simple.jar",false);
  266. buildJarWithClasspath("AspectDeclareSoft_nodebug.jar","AspectDeclareSoft.aj","Simple.jar",true);
  267. }
  268. public static void makeDuplicateManifestTestJars() throws IOException {
  269. List args = new ArrayList();
  270. /*
  271. * injar
  272. */
  273. args.add("-classpath");
  274. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
  275. File.pathSeparator + System.getProperty("aspectjrt.path"));
  276. args.add("-outjar");
  277. args.add("../ajde/testdata/DuplicateManifestTest/injar.jar");
  278. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/Hello.java");
  279. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  280. /*
  281. * aspectjar
  282. */
  283. args = new ArrayList();
  284. args.add("-classpath");
  285. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
  286. File.pathSeparator + System.getProperty("aspectjrt.path"));
  287. args.add("-outjar");
  288. args.add("../ajde/testdata/DuplicateManifestTest/aspectjar.jar");
  289. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/Trace.java");
  290. args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/TraceHello.java");
  291. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  292. }
  293. public static void makeOutjarTestJars() throws IOException {
  294. List args = new ArrayList();
  295. /*
  296. * parent
  297. */
  298. args.clear();
  299. args.add("-classpath");
  300. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
  301. File.pathSeparator + System.getProperty("aspectjrt.path"));
  302. args.add("-outjar");
  303. args.add("./testdata/OutjarTest/parent.jar");
  304. args.add(AjdtAjcTests.TESTDATA_PATH + "/OutjarTest/src/jar1/Parent.java");
  305. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  306. /*
  307. * child
  308. */
  309. args.clear();
  310. args.add("-classpath");
  311. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar"
  312. + File.pathSeparator + System.getProperty("aspectjrt.path")
  313. + File.pathSeparator + "./testdata/OutjarTest/parent.jar");
  314. args.add("-outjar");
  315. args.add("./testdata/OutjarTest/child.jar");
  316. args.add(AjdtAjcTests.TESTDATA_PATH + "/OutjarTest/src/jar2/Child.java");
  317. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  318. /*
  319. * aspects
  320. */
  321. args.clear();
  322. args.add("-classpath");
  323. args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar"
  324. + File.pathSeparator + System.getProperty("aspectjrt.path"));
  325. args.add("-outjar");
  326. args.add("./testdata/OutjarTest/aspects.jar");
  327. args.add(AjdtAjcTests.TESTDATA_PATH + "/OutjarTest/src/jar3/Aspect.aj");
  328. CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  329. /*
  330. * aspectjar
  331. */
  332. // args = new ArrayList();
  333. // args.add("-classpath");
  334. // args.add("../lib/test/aspectjrt.jar;../lib/test/testing-client.jar" +
  335. // File.pathSeparator + System.getProperty("aspectjrt.path"));
  336. // args.add("-outjar");
  337. // args.add("../ajde/testdata/DuplicateManifestTest/aspectjar.jar");
  338. // args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/Trace.java");
  339. // args.add(AjdtAjcTests.TESTDATA_PATH + "/src1/TraceHello.java");
  340. // CommandTestCase.runCompiler(args, CommandTestCase.NO_ERRORS);
  341. }
  342. }