Class TypeUsesMap

java.lang.Object
gw.internal.gosu.parser.TypeUsesMap
All Implemented Interfaces:
ITypeUsesMap, Serializable

public class TypeUsesMap extends Object implements ITypeUsesMap
See Also:
  • Field Details

  • Constructor Details

    • TypeUsesMap

      public TypeUsesMap(List<String> specialTypeUses)
    • TypeUsesMap

      public TypeUsesMap()
  • Method Details

    • copy

      public ITypeUsesMap copy()
      Description copied from interface: ITypeUsesMap
      Returns a shallow copy of this map.
      Specified by:
      copy in interface ITypeUsesMap
    • copyLocalScope

      public ITypeUsesMap copyLocalScope()
      Description copied from interface: ITypeUsesMap
      Copies the type uses map but alias the global map from this.
      Specified by:
      copyLocalScope in interface ITypeUsesMap
      Returns:
      a copy of this type uses map.
    • lock

      public ITypeUsesMap lock()
      Description copied from interface: ITypeUsesMap
      Locks this ITypeUsesMap so that it cannot be mutated in the future
      Specified by:
      lock in interface ITypeUsesMap
      Returns:
      this ITypeUsesMap, so that this method can be used in a builder-like manner.
    • containsType

      public boolean containsType(String typeName)
      Specified by:
      containsType in interface ITypeUsesMap
      Returns:
      if a type wit the given name can be resolved via this type uses map.
    • getTypeUses

      public Set<String> getTypeUses()
      Description copied from interface: ITypeUsesMap
      Returns the set of strings representing the types that are currently used by this parser. The set of types includes both those declared in #uses statements and those set via setDefaultTypeUses.
      Specified by:
      getTypeUses in interface ITypeUsesMap
    • getNamespaces

      public Set<String> getNamespaces()
      Description copied from interface: ITypeUsesMap
      Returns the set of strings representing the namespaces that are currently used by this parser.
      Specified by:
      getNamespaces in interface ITypeUsesMap
    • getFeatureSpaces

      public Set<String> getFeatureSpaces()
      Specified by:
      getFeatureSpaces in interface ITypeUsesMap
    • getFeatureLiterals

      public Set<IFeatureInfo> getFeatureLiterals()
      Specified by:
      getFeatureLiterals in interface ITypeUsesMap
    • addToTypeUses

      public void addToTypeUses(String strType)
      Description copied from interface: ITypeUsesMap
      Adds a type to the current set of types. Can be a complete type or a wildcard namespace e.g., java.util.HashMap and java.util.* are both legal.
      Specified by:
      addToTypeUses in interface ITypeUsesMap
    • addToFeatureSpaces

      public void addToFeatureSpaces(String strType)
      Specified by:
      addToFeatureSpaces in interface ITypeUsesMap
    • addToFeatureLiterals

      public void addToFeatureLiterals(IFeatureInfo fi)
      Specified by:
      addToFeatureLiterals in interface ITypeUsesMap
    • addToTypeUses

      public void addToTypeUses(IUsesStatement usesSmt)
      Description copied from interface: ITypeUsesMap
      Adds a type to the current set of types. Can be a complete type or a wildcard namespace e.g., java.util.HashMap and java.util.* are both legal.
      Specified by:
      addToTypeUses in interface ITypeUsesMap
    • getUsesStatements

      public Set<IUsesStatement> getUsesStatements()
      Description copied from interface: ITypeUsesMap
      Return the set of uses-statements that participate in this map. Note these are the uses-statements compiled from source.
      Specified by:
      getUsesStatements in interface ITypeUsesMap
    • addToDefaultTypeUses

      public void addToDefaultTypeUses(String strType)
      Description copied from interface: ITypeUsesMap
      Add the specified type to the set of default types. NOTE: The type is always treated as a package. If it ends in .* then it will be stripped
      Specified by:
      addToDefaultTypeUses in interface ITypeUsesMap
    • checkLocked

      private void checkLocked()
    • addToSpecialTypeUses

      public void addToSpecialTypeUses(String strType)
      Specified by:
      addToSpecialTypeUses in interface ITypeUsesMap
    • resolveType

      public IType resolveType(String strRelativeName)
      Description copied from interface: ITypeUsesMap
      Resolve the type of a relative name via the type uses. if the relative type matches uses-type, resolves the type as such. If the type matches, but does not resove, throws an exception, otherwise returns null if there is no match.
      Specified by:
      resolveType in interface ITypeUsesMap
    • resolveSubType

      private IType resolveSubType(String strRelativeName)
    • clearNonDefaultTypeUses

      public void clearNonDefaultTypeUses()
      Description copied from interface: ITypeUsesMap
      Clears all types not in the default set of types;
      Specified by:
      clearNonDefaultTypeUses in interface ITypeUsesMap
    • resolveTypesInAllNamespaces

      private IType resolveTypesInAllNamespaces(String strRelativeName)
    • resolveType

      private IType resolveType(String strRelativeName, String strNs)
    • verifyTypeNameDoesNotHaveRelativePackage

      private IType verifyTypeNameDoesNotHaveRelativePackage(IType type, String strNs, String strRelativeName)
    • resolveRelativeNamespaceInAllNamespaces

      public INamespaceType resolveRelativeNamespaceInAllNamespaces(String strRelativeName)
      Specified by:
      resolveRelativeNamespaceInAllNamespaces in interface ITypeUsesMap
      Parameters:
      strRelativeName - A relative path name. E.g., "lang" is a relative package name of "java.lang"
      Returns:
      The absolute namespace type for the relative name or null if not found.
    • isSupportRelativePackageResolution

      public boolean isSupportRelativePackageResolution()
      Specified by:
      isSupportRelativePackageResolution in interface ITypeUsesMap
    • setSupportRelativePackageResolution

      public void setSupportRelativePackageResolution(boolean bSupportRelativePackageResolution)
      Specified by:
      setSupportRelativePackageResolution in interface ITypeUsesMap
    • addToTypeUses

      private void addToTypeUses(String strQualifiedType, Map<String,String> mapQualifiedNameByRelativeName, List<String> namespacesSet) throws ClassNotFoundException
      Throws:
      ClassNotFoundException