001    package org.mesopotamia.lang.java;
002    
003    import org.mesopotamia.MesopotamiaException;
004    import org.mesopotamia.NodeData;
005    import org.mesopotamia.RepositoryLanguage;
006    import org.mesopotamia.Scan;
007    import org.mesopotamia.lang.java.ref.Reference;
008    import org.mesopotamia.lang.java.ref.Scope;
009    import org.mesopotamia.lang.java.ref.TypeInfo;
010    import org.mesopotamia.lang.java.ref.TypeSpecInfo;
011    
012    public class StringConstant extends Constant implements Reference<TypeInfo> {
013    
014            public StringConstant(
015                            NodeData xData, 
016                            Class<?> context, 
017                            Scan scan,
018                            RepositoryLanguage language, 
019                            Object environment) throws MesopotamiaException {
020                    super(xData, context, scan, language, environment);
021    
022                    // Select attributes
023    
024            }
025    
026            public TypeInfo getInfo() {
027                    Scope enclosingScope = findParent(Scope.class);
028                    return enclosingScope == null ? null : enclosingScope.findType("java.lang.String");
029            }
030    
031            @Override
032            public TypeSpecInfo getTypeSpecInfo() {
033                    Scope ec = findParent(Scope.class);             
034                    if (ec==null) {
035                            return null;
036                    }
037                    final TypeInfo stringInfo = ec.findType("java.lang.String");
038                    return stringInfo == null ? null : new TypeSpecInfo() {
039    
040                            public int getDimensions() {
041                                    return 0;
042                            }
043    
044                            public TypeInfo getTypeInfo() {
045                                    return stringInfo;
046                            }
047                            
048                    };
049            }
050    }