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

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