diff --git a/src/share/classes/java/beans/Encoder.java b/src/share/classes/java/beans/Encoder.java index 62cd8dfb518aac7d5b6250008fcbc472a1f874dc..b8728132a5d5cc3f657319b2dc6ef284c32e9ac9 100644 --- a/src/share/classes/java/beans/Encoder.java +++ b/src/share/classes/java/beans/Encoder.java @@ -195,7 +195,13 @@ public class Encoder { */ public PersistenceDelegate getPersistenceDelegate(Class type) { PersistenceDelegate pd = this.finder.find(type); - return (pd != null) ? pd : MetaData.getPersistenceDelegate(type); + if (pd == null) { + pd = MetaData.getPersistenceDelegate(type); + if (pd != null) { + this.finder.register(type, pd); + } + } + return pd; } /**