// Establish the proxy with an incorrect security identity
Properties env = new Properties();
env.setProperty(Context.INITIAL_CONTEXT_FACTORY, "org.jboss.security.jndi.JndiLoginInitialContextFactory");
env.setProperty(Context.SECURITY_PRINCIPAL, "bill");
env.setProperty(Context.SECURITY_CREDENTIALS, "invalidpassword");
InitialContext ctx = new InitialContext(env);
ShoppingCart cart = (ShoppingCart) ctx.lookup("ShoppingCart");
System.out.println("Attempting to buy 1 memory stick with incorrect password");
try
{
cart.buy("Memory stick", 1);
}
catch (javax.ejb.EJBAccessException e)
{
System.out.println("Caught javax.ejb.EJBAccessException as expected");
}
System.out.println("Setting user/password");
env.setProperty(Context.SECURITY_CREDENTIALS, "password");
ctx = new InitialContext(env);
System.out.println("bill is a shopper, so is allowed to buy");
System.out.println("Buying 1 memory stick");
cart.buy("Memory stick", 1);
System.out.println("Buying another memory stick");
cart.buy("Memory stick", 1);
System.out.println("Buying a laptop");
cart.buy("Laptop", 1);
System.out.println("Print cart:");
HashMap<String, Integer> fullCart = cart.getCartContents();
for (String product : fullCart.keySet())
{
System.out.println(fullCart.get(product) + " " + product);
}
System.out.println("bill is not a clerk, so is not allowed to price check");
try
{
cart.priceCheck("Laptop");
}
catch (javax.ejb.EJBAccessException ex)
{
System.out.println("Caught SecurityException as expected");
}
System.out.println("Checkout");
cart.checkout();
System.out.println("Should throw an object not found exception by invoking on cart after @Remove method");
try
{
cart.getCartContents();
}
catch (NoSuchEJBException e)
{
System.out.println("Successfully caught no such object exception.");
}