@@ -75,32 +75,24 @@ public ScriptLanguageIndex(final LogService logService) {
7575 }
7676
7777 public boolean add (final ScriptEngineFactory factory , final boolean gently ) {
78- final String duplicateName = checkDuplicate (factory );
79- if (duplicateName != null ) {
80- if (gently ) return false ;
81- if (log != null ) {
82- log .warn ("Duplicate scripting language '" +
83- duplicateName + "': existing=" +
84- byName .get (duplicateName ).getClass ().getName () +
85- ", new=" + factory .getClass ().getName ());
86- }
87- }
78+ boolean result = false ;
8879
8980 final ScriptLanguage language = wrap (factory );
9081
9182 // add language names
92- byName . put (language .getLanguageName (), language );
83+ result |= put ("name" , byName , language .getLanguageName (), language , gently );
9384 for (final String name : language .getNames ()) {
94- byName . put (name , language );
85+ result |= put (" name" , byName , name , language , gently );
9586 }
9687
9788 // add file extensions
9889 for (final String extension : language .getExtensions ()) {
9990 if ("" .equals (extension )) continue ;
100- byExtension . put (extension , language );
91+ result |= put (" extension" , byExtension , extension , language , gently );
10192 }
10293
103- return super .add (language );
94+ result |= super .add (language );
95+ return result ;
10496 }
10597
10698 public ScriptLanguage getByExtension (final String extension ) {
@@ -137,13 +129,19 @@ public boolean add(final ScriptLanguage language) {
137129
138130 // -- Helper methods --
139131
140- private String checkDuplicate (final ScriptEngineFactory factory ) {
141- for (final String name : factory .getNames ()) {
142- if (byName .containsKey (name )) {
143- return name ;
132+ private boolean put (final String type , final Map <String , ScriptLanguage > map ,
133+ final String key , final ScriptLanguage value , final boolean gently )
134+ {
135+ if (gently && map .containsKey (key )) {
136+ if (log != null ) {
137+ log .warn ("Not registering " + type + " '" + key +
138+ "' for scripting language " + value .getClass ().getName () +
139+ ": existing=" + map .get (key ).getClass ().getName ());
144140 }
141+ return false ;
145142 }
146- return null ;
143+ map .put (key , value );
144+ return true ;
147145 }
148146
149147 private ScriptLanguage wrap (final ScriptEngineFactory factory ) {
0 commit comments