diff -r 6505c38a43b3 -r 3eb54c43c5c3 context/src/main/java/org/netbeans/html/context/spi/Contexts.java --- a/context/src/main/java/org/netbeans/html/context/spi/Contexts.java Fri Dec 12 12:37:58 2014 +0100 +++ b/context/src/main/java/org/netbeans/html/context/spi/Contexts.java Mon Jan 26 19:28:18 2015 +0100 @@ -46,7 +46,9 @@ import java.lang.annotation.Retention; import java.lang.annotation.RetentionPolicy; import java.lang.annotation.Target; +import java.util.HashSet; import java.util.ServiceLoader; +import java.util.Set; import net.java.html.BrwsrCtx; import org.netbeans.html.context.impl.CtxImpl; @@ -112,12 +114,19 @@ } catch (SecurityException ex) { l = null; } + Set> classes = new HashSet>(); for (Provider cp : ServiceLoader.load(Provider.class, l)) { + if (!classes.add(cp.getClass())) { + continue; + } cp.fillContext(cb, requestor); found = true; } try { for (Provider cp : ServiceLoader.load(Provider.class, Provider.class.getClassLoader())) { + if (!classes.add(cp.getClass())) { + continue; + } cp.fillContext(cb, requestor); found = true; } @@ -128,6 +137,9 @@ } if (!found) { for (Provider cp : ServiceLoader.load(Provider.class)) { + if (!classes.add(cp.getClass())) { + continue; + } cp.fillContext(cb, requestor); found = true; }