import java.beans.PropertyEditor;
import java.beans.PropertyEditorManager;
import java.beans.PropertyEditorSupport;

public class PropertyEditorSupportExample {
	public static void main(String[] args) {
		
		PropertyEditor editor = PropertyEditorManager.findEditor(User.class);
		System.out.println(editor.getClass());

		
		PropertyEditorManager.registerEditor(User.class, UserEditor.class);
		editor = PropertyEditorManager.findEditor(User.class);
		System.out.println(editor.getClass());

		editor.setAsText("AAA");
		System.out.println(editor.getValue());
	}

	public static class UserEditor extends PropertyEditorSupport {

		@Override
		public String getAsText() {
			User user = (User) getValue();
			return user.getName();
		}

		@Override
		public void setAsText(String s) {
			User user = new User();
			user.setName(s);
			setValue(user);
		}
	}

	public static class User {
		private String name;

		public String getName() {
			return name;
		}

		public void setName(String name) {
			this.name = name;
		}

		@Override
		public String toString() {
			return "User{" + "name='" + name + '\'' + '}';
		}
	}
}
