001    package org.mesopotamia.lang.java;
002    
003    import org.mesopotamia.LanguageElement;
004    import org.mesopotamia.LanguageElementFactory;
005    import org.mesopotamia.LanguageElementHandle;
006    import org.mesopotamia.MesopotamiaException;
007    import org.mesopotamia.NodeData;
008    import org.mesopotamia.RepositoryLanguage;
009    import org.mesopotamia.Scan;
010    
011    /**
012     * Creates identifiers from DOT and IDENT
013     * @author Pavel Vlasov
014     * @revision $Revision$
015     */
016    public class DotFactory implements LanguageElementFactory {
017            
018            private LanguageElement languageElement;
019    
020            public DotFactory(
021                            NodeData xData, 
022                            Class<?> context, 
023                            Scan scan,
024                            RepositoryLanguage language, 
025                            Object environment) throws MesopotamiaException {
026                    LanguageElement self=new JavaLanguageElement(xData, context, scan, language, environment);
027                    String tn = language.supportsTokenName("TYPE_ARGUMENTS") ? "!TYPE_ARGUMENTS" : "*";
028                    LanguageElementHandle providerHandle=self.selectSingleElementHandle(JavaLanguageElement.class, tn+"[0]");
029                    languageElement=self.selectSingleElement(JavaLanguageElement.class, tn+"[1]");
030                    ((JavaLanguageElement) languageElement).setProviderHandle(providerHandle);
031            }
032    
033            @SuppressWarnings("unchecked")
034            public LanguageElement createLanguageElement(Class targetClass) {
035                    return languageElement;
036            }
037    }