Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. // Bug # 28702
  2. import java.util.Stack;
  3. interface Connection {
  4. Connection open();
  5. void close();
  6. }
  7. aspect CloseConnectionsCflow percflow(layerEntryMethods()) {
  8. Stack openConnections;
  9. pointcut layerMethods() :
  10. execution(public * com.example.businessFacade.*.*(..));
  11. pointcut layerEntryMethods() :
  12. layerMethods() && !cflowbelow(layerMethods());
  13. pointcut openedConnection() :
  14. call(* Connection.open(..));
  15. pointcut layerBoundary() : cflow(layerEntryMethods());
  16. after() returning (Connection conn) :
  17. openedConnection() && layerBoundary() {
  18. openConnections.push(conn);
  19. }
  20. after() : layerBoundary() {
  21. while (!openConnections.empty()) {
  22. Connection conn = (Connection)openConnections.pop();
  23. conn.close();
  24. }
  25. }
  26. }