Index: hk2/config/src/main/java/org/jvnet/hk2/config/WriteableView.java =================================================================== --- hk2/config/src/main/java/org/jvnet/hk2/config/WriteableView.java (revision 1878) +++ hk2/config/src/main/java/org/jvnet/hk2/config/WriteableView.java (working copy) @@ -533,14 +533,22 @@ // the proxied object can be a read-only or a writeable view, we need // to be careful // ToDo : we need to encasulate this test. - String value; + String value = null; if (Proxy.getInvocationHandler(o) instanceof WriteableView) { - value = ((WriteableView) Proxy.getInvocationHandler(o)).getPropertyValue(key); + + ConfigBean masterView = ((WriteableView) handler).getMasterView(); + String masterViewKey = masterView.model.key; + if(masterViewKey != null && masterViewKey.equals(key)){ + value = ((WriteableView) Proxy.getInvocationHandler(o)).getPropertyValue(key); + } } else { Dom cbo = Dom.unwrap((ConfigBeanProxy) o); - value = cbo.attribute(key); + String cboKey = cbo.getKey(); + if(cboKey != null && key.equals(cboKey)){ + value = cbo.attribute(key); + } } - if (keyValue!=null && keyValue.equals(value)) { + if (keyValue!=null && value != null && keyValue.equals(value)) { Dom parent = Dom.unwrap(readView); throw new IllegalArgumentException("A " + master.getProxyType().getSimpleName() + " with the same key \"" + keyValue + "\" already exists in " +