Changeset 7472c1048141217aa45025f0c2b2dca84dea5d9b

Show
Ignore:
Timestamp:
12/30/07 15:09:29 (8 months ago)
Author:
Christopher Jung <bktheg@web.de>
git-committer:
Christopher Jung <bktheg@web.de> 1199023769 +0100
git-parent:

[69e8dd4d646261e70b6c69e5073d73ce1fdc5047]

git-author:
Christopher Jung <bktheg@web.de> 1199023769 +0100
Message:

Das automatische Registrieren von Rollen ergaenzt

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • src/net/driftingsouls/ds2/server/scripting/roles/interpreter/Interpreter.java

    r23aa517 r7472c10  
    2121import java.util.HashMap; 
    2222import java.util.Map; 
     23import java.util.ServiceLoader; 
    2324 
    2425import net.driftingsouls.ds2.server.scripting.roles.Role; 
     
    3233public class Interpreter { 
    3334        private static Map<String,Class<? extends Role>> roles = new HashMap<String,Class<? extends Role>>(); 
     35         
     36        static { 
     37                loadRegisteredRoles(); 
     38        } 
     39         
     40        private static void loadRegisteredRoles() { 
     41                ServiceLoader<Role> roleLoader = ServiceLoader.load(Role.class); 
     42                for( Role role : roleLoader ) { 
     43                        roles.put(role.getClass().getSimpleName(), role.getClass()); 
     44                } 
     45        } 
    3446         
    3547        /** 
     
    5668                synchronized(roles) { 
    5769                        roles.clear(); 
     70                        loadRegisteredRoles(); 
    5871                } 
    5972        } 
  • test/java/net/driftingsouls/ds2/server/scripting/roles/interpreter/InterpreterTest.java

    r23aa517 r7472c10  
    2626 
    2727import net.driftingsouls.ds2.server.scripting.ScriptParserContext; 
     28import net.driftingsouls.ds2.server.scripting.roles.NopRole; 
    2829import net.driftingsouls.ds2.server.scripting.roles.Role; 
    2930import net.driftingsouls.ds2.server.scripting.roles.parser.RoleDefinition; 
     
    162163                assertThat(role.executed, is(true)); 
    163164        } 
     165         
     166        /** 
     167         *  Testet ob die NopRole automatisch im Interpreter registriert wurde 
     168         */ 
     169        @Test 
     170        public void testNopRolePresent() { 
     171                RoleDefinition nopRole = new RoleDefinition() { 
     172                        public Object getAttribute(String name) { 
     173                                return null; 
     174                        } 
     175                         
     176                        public String getRoleName() { 
     177                                return "NopRole"; 
     178                        } 
     179                }; 
     180                 
     181                RoleExecuter roleExec = Interpreter.executerFromDefinition(nopRole); 
     182                assertThat(roleExec.getRole(), instanceOf(NopRole.class)); 
     183        } 
    164184}