2222import java .lang .annotation .Annotation ;
2323import java .lang .reflect .Field ;
2424import java .lang .reflect .Method ;
25+ import java .util .ArrayList ;
2526import java .util .HashSet ;
27+ import java .util .List ;
2628import java .util .Map ;
2729import java .util .Map .Entry ;
2830import java .util .Set ;
@@ -50,19 +52,19 @@ public abstract class AbstractJavaScriptConfiguration {
5052
5153 private Map <Class <?>, Class <? extends HtmlUnitScriptable >> domJavaScriptMap_ ;
5254
53- private final Map < String , ClassConfiguration > configuration_ ;
55+ private final ArrayList < ClassConfiguration > configuration_ ;
5456
5557 /**
5658 * Constructor.
5759 * @param browser the browser version to use
5860 */
5961 protected AbstractJavaScriptConfiguration (final BrowserVersion browser ) {
60- configuration_ = new ConcurrentHashMap <>(getClasses ().length );
62+ configuration_ = new ArrayList <>(getClasses ().length );
6163
6264 for (final Class <? extends HtmlUnitScriptable > klass : getClasses ()) {
6365 final ClassConfiguration config = getClassConfiguration (klass , browser );
6466 if (config != null ) {
65- configuration_ .put ( config . getClassName (), config );
67+ configuration_ .add ( config );
6668 }
6769 }
6870 }
@@ -77,7 +79,7 @@ protected AbstractJavaScriptConfiguration(final BrowserVersion browser) {
7779 * @return the class configurations
7880 */
7981 public Iterable <ClassConfiguration > getAll () {
80- return configuration_ . values () ;
82+ return configuration_ ;
8183 }
8284
8385 /**
@@ -383,7 +385,12 @@ public static boolean isCompatible(final SupportedBrowser browser1, final Suppor
383385 * @return the class configuration for the supplied JavaScript class name
384386 */
385387 public ClassConfiguration getClassConfiguration (final String hostClassName ) {
386- return configuration_ .get (hostClassName );
388+ for (final ClassConfiguration classConfig : configuration_ ) {
389+ if (hostClassName .equals (classConfig .getClassName ())) {
390+ return classConfig ;
391+ }
392+ }
393+ return null ;
387394 }
388395
389396 /**
@@ -399,12 +406,11 @@ public Class<? extends HtmlUnitScriptable> getDomJavaScriptMappingFor(final Clas
399406 new ConcurrentHashMap <>(configuration_ .size ());
400407
401408 final boolean debug = LOG .isDebugEnabled ();
402- for (final Map .Entry <String , ClassConfiguration > entry : configuration_ .entrySet ()) {
403- final ClassConfiguration classConfig = entry .getValue ();
409+ for (final ClassConfiguration classConfig : configuration_ ) {
404410 for (final Class <?> domClass : classConfig .getDomClasses ()) {
405411 // preload and validate that the class exists
406412 if (debug ) {
407- LOG .debug ("Mapping " + domClass .getName () + " to " + entry . getKey ());
413+ LOG .debug ("Mapping " + domClass .getName () + " to " + classConfig . getClassName ());
408414 }
409415 map .put (domClass , classConfig .getHostClass ());
410416 }
0 commit comments