1 20 package org.apache.mina.integration.spring; 21 22 import java.util.List ; 23 24 import org.apache.mina.common.DefaultIoFilterChainBuilder; 25 import org.apache.mina.common.IoFilter; 26 import org.springframework.beans.factory.config.AbstractFactoryBean; 27 import org.springframework.util.Assert; 28 29 48 public class DefaultIoFilterChainBuilderFactoryBean extends AbstractFactoryBean { 49 private IoFilterMapping[] filterMappings = new IoFilterMapping[0]; 50 51 private String prefix = "filter"; 52 53 protected Object createInstance() throws Exception { 54 DefaultIoFilterChainBuilder builder = new DefaultIoFilterChainBuilder(); 55 for (int i = 0; i < filterMappings.length; i++) { 56 String name = filterMappings[i].getName(); 57 if (name == null) { 58 name = prefix + i; 59 } 60 builder.addLast(name, filterMappings[i].getFilter()); 61 } 62 63 return builder; 64 } 65 66 public Class getObjectType() { 67 return DefaultIoFilterChainBuilder.class; 68 } 69 70 79 public void setFilterNamePrefix(String prefix) { 80 Assert.notNull(prefix, "Property 'filterNamePrefix' may not be null"); 81 this.prefix = prefix; 82 } 83 84 98 public void setFilters(List filters) { 99 Assert.notNull(filters, "Property 'filters' may not be null"); 100 IoFilterMapping[] filterMappings = new IoFilterMapping[filters.size()]; 101 102 for (int i = 0; i < filterMappings.length; i++) { 103 Object o = filters.get(i); 104 if (o instanceof IoFilterMapping) { 105 filterMappings[i] = (IoFilterMapping) o; 106 } else if (o instanceof IoFilter) { 107 filterMappings[i] = new IoFilterMapping(); 108 filterMappings[i].setFilter((IoFilter) o); 109 } else { 110 throw new IllegalArgumentException ( 111 "List may only contain " 112 + "IoFilter or IoFilterMapping objects. Found object of " 113 + "type " + o.getClass().getName() 114 + " at position " + i + "."); 115 } 116 } 117 118 this.filterMappings = filterMappings; 119 } 120 121 } 122 | Popular Tags |