package pack;
import java.util.ArrayList;
import java.util.List;
public class Inventory {
private List<Item> _items = new ArrayList<Item>();
public void addItem(Item item) {
_items.add(item);
}
public void removeItem(Item item) {
_items.remove(item);
}
}
...............................
package pack;
import java.util.logging.*;
public class Item {
private static Logger _logger = Logger.getLogger("cart");
private String _id;
private float _price;
public Item(String id, float price) {
_id = id;
_price = price;
}
public String getID() {
_logger.logp(Level.INFO, "Item", "getID", "Entering");
return _id;
}
public float getPrice() {
_logger.logp(Level.INFO, "Item", "getPrice", "Entering");
return _price;
}
public String toString() {
_logger.logp(Level.INFO, "Item", "toString", "Entering");
return "Item: " + _id;
}
}
............................
package pack;
import java.util.*;
public class ShoppingCart {
private List<Item> _items = new ArrayList<Item>();
public void addItem(Item item) {
_items.add(item);
}
public void removeItem(Item item) {
_items.remove(item);
}
public void empty() {
_items.clear();
}
public float totalValue() {
// unimplemented... free!
return 0;
}
}
..................................
package pack;
public class ShoppingCartOperator {
public static void addShoppingCartItem(ShoppingCart sc,
Inventory inventory, Item item) {
inventory.removeItem(item);
sc.addItem(item);
}
public static void removeShoppingCartItem(ShoppingCart sc,
Inventory inventory, Item item) {
sc.removeItem(item);
inventory.addItem(item);
}
}
.............................
package pack;
public class Test {
public static void main(String[] args) {
Inventory inventory = new Inventory();
Item item1 = new Item("1", 30);
Item item2 = new Item("2", 31);
Item item3 = new Item("3", 32);
inventory.addItem(item1);
inventory.addItem(item2);
inventory.addItem(item3);
ShoppingCart sc = new ShoppingCart();
ShoppingCartOperator.addShoppingCartItem(sc, inventory, item1);
ShoppingCartOperator.addShoppingCartItem(sc, inventory, item2);
}
}
.............................
package pack;
import org.aspectj.lang.*;
import java.util.logging.*;
public aspect TraceAspect {
private Logger _logger = Logger.getLogger("trace");
pointcut traceMethods()
: (execution(* *.*(..)) || execution(*.new(..)))
&& !within(TraceAspect);
before() : traceMethods() && !execution(String *.toString()) {
Signature sig = thisJoinPointStaticPart.getSignature();
_logger.logp(Level.INFO, sig.getDeclaringType().getName(), sig
.getName(), createParameterMessage(thisJoinPoint));
}
private String createParameterMessage(JoinPoint joinPoint) {
StringBuffer paramBuffer = new StringBuffer("\n\t[This: ");
paramBuffer.append(joinPoint.getThis());
Object[] arguments = joinPoint.getArgs();
paramBuffer.append("]\n\t[Args: (");
for (int length = arguments.length, i = 0; i < length; ++i) {
Object argument = arguments[i];
paramBuffer.append(argument);
if (i != length - 1) {
paramBuffer.append(',');
}
}
paramBuffer.append(")]");
return paramBuffer.toString();
}
}
Niciun comentariu:
Trimiteți un comentariu