package org.robotframework.javalib.factory; import org.robotframework.javalib.beans.annotation.KeywordBeanLoader; import org.robotframework.javalib.beans.classpath.InterfaceBasedKeywordFilter; import org.robotframework.javalib.beans.common.BasicKeywordFilter; import org.robotframework.javalib.keyword.Keyword; import org.robotframework.javalib.keyword.KeywordMap; import org.robotframework.javalib.util.IKeywordNameNormalizer; import org.robotframework.javalib.util.KeywordNameNormalizer; import java.util.HashMap; import java.util.Map; public class ClassPathKeywordFactory implements KeywordFactory<Keyword> { private KeywordMap map = new KeywordMap(); public ClassPathKeywordFactory(KeywordBeanLoader loader) { Map<String, Object> kws = loader.loadBeanDefinitions(new InterfaceBasedKeywordFilter()); remapNames(kws); } private void remapNames(Map<String, Object> kws) { for (String key: kws.keySet()) { String lastPart = getKwName(key); map.add(lastPart, kws.get(key)); // FIXME: test for duplicates } } private String getKwName(String name) { if (!name.contains("/")) return name; return name.substring(name.lastIndexOf('/')+1); } public Keyword createKeyword(String keywordName) { return (Keyword)map.get(keywordName); } public String[] getKeywordNames() { return map.getKeywordNames(); } }