Hiya
You should be okay... Spring will just 'do the right thing'.
I just wrote this test and added it to the Spring source; the classes are of course different to your own, but they exhibit the same mix of interfaces and classes, so I'm hoping this will see you right.
Code:
public void testCustomEditorWithInterfaceType() {
DefaultListableBeanFactory lbf = new DefaultListableBeanFactory();
lbf.registerCustomEditor(ITestBean.class, new AbstractBeanFactoryTests.TestBeanEditor());
MutablePropertyValues pvs = new MutablePropertyValues();
pvs.addPropertyValue("spouse", "jenny_23");
lbf.registerBeanDefinition("testBean", new RootBeanDefinition(TestBean.class, pvs));
ITestBean testBean = (TestBean) lbf.getBean("testBean");
System.out.println(testBean.getSpouse());
}
The TestBean class (heavily compressed) looks like this...
Code:
public class TestBean implements BeanNameAware, BeanFactoryAware, ITestBean, IOther, Comparable {
private String name;
private int age;
private ITestBean spouse;
// with appropriate getters and setters for the above fields...
}
As you can see from the TestBean class definition, it exposes a property of type ITestBean... in the unit test though, we actually set this property to the value of the TestBean class (which implements the ITestBean interface). The property editor that converts the string value 'jenny_23' to a TestBean instance is actually registered using the ITestBean interface class.
So in your case, you will be able to do the following...
Code:
<bean id="customEditorConfigurer" class="org.springframework.beans.factory.config.CustomEditorConfigurer">
<property name="customEditors">
<map>
<entry key="com.AO.DAO.OptionsDAO">
<bean id="DAOpropertyEditor" class="com.AO.DAO.DAOpropertyEditor">
</bean>
</entry>
</map>
</property>
</bean>
So in your case, you have a classes that look (roughly) like the stubs below, in which case your current configuration will work just fine... if it ain't clear, you can just hit 'Post Reply' 
Code:
public interface OptionsDao {
// setters and getters for the url, name and password...
}
public class OptionsDaoImpl implements OptionsDao {
// setters and getters for the url, name and password...
}
public class DAOImpl {
private OptionsDaoImpl _options;
public void setOptions(OptionsDaoImpl options) {
_options = options;
}
public OptionsDaoImpl getOptions() {
return _options;
}
}
public class DAOpropertyEditor extends PropertyEditorSupport {
public void setAsText(string text) {
OptionsDaoImpl option = new OptionsDaoImpl();
// do conversion...
setValue(option);
}
}
Ciao
.NET Guy