001 package org.picocontainer.testmodel; 002 003 import java.beans.PropertyEditorSupport; 004 005 /** 006 * 007 * @author greg 008 * @author $Author: $ (last edit) 009 * @version $Revision: $ 010 */ 011 public class CoupleBeanEditor extends PropertyEditorSupport { 012 private static final String PREFIX_A = "a's name:"; 013 private static final String PREFIX_B = "b's name:"; 014 private static final String SEPARATOR = ";"; 015 016 public CoupleBeanEditor() { 017 super(); 018 } 019 020 public void setAsText(String s) throws IllegalArgumentException { 021 int startA = s.indexOf(PREFIX_A); 022 int stopA = s.indexOf(SEPARATOR, startA+PREFIX_A.length()); 023 int startB = s.indexOf(PREFIX_B, stopA + SEPARATOR.length()); 024 int stopB = s.indexOf(SEPARATOR, startB+ PREFIX_B.length()); 025 if (startA < 0 || stopA < 0 || startB < 0 || stopB < 0) { 026 throw new IllegalArgumentException("Can't parse " + s + " into a CoupleBean"); 027 } 028 String nameA = s.substring(startA + PREFIX_A.length(), stopA); 029 String nameB = s.substring(startB + PREFIX_B.length(), stopB); 030 031 PersonBean a = new PersonBean(); 032 a.setName(nameA); 033 PersonBean b = new PersonBean(); 034 b.setName(nameB); 035 setValue(new CoupleBean(a, b)); 036 } 037 }