[jbosstools-issues] [JBoss JIRA] Updated: (JBIDE-3136) New decorator from existing Web Bean

Dan Allen (JIRA) jira-events at lists.jboss.org
Thu Nov 6 23:57:36 EST 2008


     [ https://jira.jboss.org/jira/browse/JBIDE-3136?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Dan Allen updated JBIDE-3136:
-----------------------------

    Description: 
Suppose we have an interface that represents accounts:

public interface Account {
    public BigDecimal getBalance();
    public User getOwner();
    public void withdraw(BigDecimal amount);
    public void deposit(BigDecimal amount);
}

A decorator is a simple Web Bean that implements the type it decorates and is annotated @Decorator.

@Decorator
public abstract class LargeTransactionDecorator 
        implements Account {
    
    @Decorates Account account;
    
    @PersistenceContext EntityManager em;
    
    public void withdraw(BigDecimal amount) {
        account.withdraw(amount);
        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {
            em.persist( new LoggedWithdrawl(amount) );
        }
    }
    
    public void deposit(BigDecimal amount);
        account.deposit(amount);
        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {
            em.persist( new LoggedDeposit(amount) );
        }
    }
    
}

The tooling would not only help you create the class that acts as the decorator, but make sure that it implements the same interfaces as the Web Beans and injects the Web Bean into a @Decorates field.

  was:
Suppose we have an interface that represents accounts:

public interface Account {
    public BigDecimal getBalance();
    public User getOwner();
    public void withdraw(BigDecimal amount);
    public void deposit(BigDecimal amount);
}

A decorator is a simple Web Bean that implements the type it decorates and is annotated @Decorator.

@Decorator
public abstract class LargeTransactionDecorator 
        implements Account {
    
    @Decorates Account account;
    
    @PersistenceContext EntityManager em;
    
    public void withdraw(BigDecimal amount) {
        account.withdraw(amount);
        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {
            em.persist( new LoggedWithdrawl(amount) );
        }
    }
    
    public void deposit(BigDecimal amount);
        account.deposit(amount);
        if ( amount.compareTo(LARGE_AMOUNT)>0 ) {
            em.persist( new LoggedDeposit(amount) );
        }
    }
    
}

The tooling would not only help you create the class that acts as the decorator, but make sure that it implements the same interfaces as the Web Beans and injects the Web Bean into a @Decorate field.



> New decorator from existing Web Bean
> ------------------------------------
>
>                 Key: JBIDE-3136
>                 URL: https://jira.jboss.org/jira/browse/JBIDE-3136
>             Project: Tools (JBoss Tools)
>          Issue Type: Feature Request
>          Components: webbeans
>            Reporter: Dan Allen
>             Fix For: LATER
>
>
> Suppose we have an interface that represents accounts:
> public interface Account {
>     public BigDecimal getBalance();
>     public User getOwner();
>     public void withdraw(BigDecimal amount);
>     public void deposit(BigDecimal amount);
> }
> A decorator is a simple Web Bean that implements the type it decorates and is annotated @Decorator.
> @Decorator
> public abstract class LargeTransactionDecorator 
>         implements Account {
>     
>     @Decorates Account account;
>     
>     @PersistenceContext EntityManager em;
>     
>     public void withdraw(BigDecimal amount) {
>         account.withdraw(amount);
>         if ( amount.compareTo(LARGE_AMOUNT)>0 ) {
>             em.persist( new LoggedWithdrawl(amount) );
>         }
>     }
>     
>     public void deposit(BigDecimal amount);
>         account.deposit(amount);
>         if ( amount.compareTo(LARGE_AMOUNT)>0 ) {
>             em.persist( new LoggedDeposit(amount) );
>         }
>     }
>     
> }
> The tooling would not only help you create the class that acts as the decorator, but make sure that it implements the same interfaces as the Web Beans and injects the Web Bean into a @Decorates field.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators: https://jira.jboss.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira

        



More information about the jbosstools-issues mailing list