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 }