Package org.springmodules.aop.framework

Source Code of org.springmodules.aop.framework.TouchingAfterReturningAdviceTests$Bean

package org.springmodules.aop.framework;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import junit.framework.TestCase;

import org.springframework.aop.framework.ProxyFactory;

public class TouchingAfterReturningAdviceTests extends TestCase {

  public TouchingAfterReturningAdviceTests() {
    super();
  }
 
  private static final String BEAN_NAME = "Bean name";
 
  private Bean getBean() {
    Bean bean = new DefaultBean();
    bean.setBeans(new Bean[] {
      new DefaultBean() {
        {
          setBean(new DefaultBean());
          setBeans(new Bean[] { new DefaultBean() });
        }
      },
      new DefaultBean() {
        {
          setBeans(new Bean[] { new DefaultBean() });
        }
      }
    });
    bean.setBean(bean);
    bean.setOtherBeans(Arrays.asList(bean.getBeans()));
    return bean;
  }

 
  public void testTouchingAdvice() {
    Bean bean = (Bean)getProxy(getBean(), new String[] { "autoName" }, new String[] { "autoName"}, new String[] { "getBean" });
    bean.getBean();
    assertEquals(BEAN_NAME, bean.getName());
   
    bean = (Bean)getProxy(getBean(), new String[] { "autoName" }, new String[] { "#returned.{autoName}" }, new String[] { "getBeans" });
    Bean[] beans = bean.getBeans();
    assertEquals(BEAN_NAME, beans[0].getName());
    assertEquals(BEAN_NAME, beans[1].getName());
   
    bean = (Bean)getProxy(getBean(), new Object[] { "autoName" }, new String[] { "#returned.{autoName}" }, new String[] { "getOtherBeans" });
    List otherBeans = bean.getOtherBeans();
    assertEquals(BEAN_NAME, ((Bean)otherBeans.get(0)).getName());
    assertEquals(BEAN_NAME, ((Bean)otherBeans.get(1)).getName());

    Map map = new HashMap();
    List list = new ArrayList();
    list.add("autoName");
    map.put("beans", list);
    bean = (Bean)getProxy(getBean(), new Object[] { "autoName", map  }, new String[] { "#returned.{beans.{autoName}}" }, new String[] { "getBeans" });
    beans = bean.getBeans();
    assertEquals(BEAN_NAME, beans[0].getName());
    assertEquals(BEAN_NAME, beans[1].getName());
    assertEquals(BEAN_NAME, beans[0].getBeans()[0].getName());
    assertEquals(BEAN_NAME, beans[1].getBeans()[0].getName());
  }

 
 
  private Object getProxy(Object target, Object[] properties, String[] ognl, String[] mappedNames) {
    TouchingNameMatchMethodAdvisor advisor = new TouchingNameMatchMethodAdvisor();
    advisor.setMappedNames(mappedNames);
    advisor.getTouchingAdvice().setProperties(properties);
    advisor.getTouchingAdvice().setOgnl(ognl);
    ProxyFactory pf = new ProxyFactory(target);
    pf.addAdvisor(advisor);
    return pf.getProxy();
  }
 
 
 
  public interface Bean {
    public Bean[] getBeans();
    public void setBeans(Bean[] beans);
    public List getOtherBeans();
    public void setOtherBeans(List otherBeans);
    public Bean getBean();
    public void setBean(Bean bean);
    public String getName();
    public String getAutoName();
  }
 
  public static class DefaultBean implements Bean {
    private Bean[] beans = null;
    private Bean bean = null;
    private List otherBeans = null;
    public String name = null;
   
    public Bean getBean() {
      return this.bean;
    }
   
    public Bean[] getBeans() {
      return this.beans;
    }
   
    public String getName() {
      return this.name;
    }
   
    public String getAutoName() {
      this.name = BEAN_NAME;
      return this.name;
    }
   
    public List getOtherBeans() {
      return this.otherBeans;
    }
   
    public void setBean(Bean bean) {
      this.bean = bean;
    }
   
    public void setBeans(Bean[] beans) {
      this.beans = beans;
    }
   
    public void setOtherBeans(List otherBeans) {
      this.otherBeans = otherBeans;
    }
  }
}
TOP

Related Classes of org.springmodules.aop.framework.TouchingAfterReturningAdviceTests$Bean

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.