package gw.lang; import gw.config.IService; import gw.fs.IDirectory; import gw.lang.init.GosuPathEntry; import gw.lang.ir.IRClassCompiler; import gw.lang.ir.IRTypeResolver; import gw.lang.javadoc.IJavaDocFactory; import gw.lang.parser.IConstructorInfoFactory; import gw.lang.parser.IDynamicFunctionSymbol; import gw.lang.parser.IExpression; import gw.lang.parser.IFullParserState; import gw.lang.parser.IParsedElement; import gw.lang.parser.IParserPart; import gw.lang.parser.IScope; import gw.lang.parser.IScriptPartId; import gw.lang.parser.ISourceCodeTokenizer; import gw.lang.parser.IStack; import gw.lang.parser.IStackProvider; import gw.lang.parser.ISymbol; import gw.lang.parser.ISymbolTable; import gw.lang.parser.ITypeUsesMap; import gw.lang.parser.exceptions.ParseException; import gw.lang.parser.expressions.IIdentifierExpression; import gw.lang.parser.expressions.INullExpression; import gw.lang.parser.template.ITemplateGenerator; import gw.lang.parser.template.ITemplateHost; import gw.lang.parser.template.TemplateParseException; import gw.lang.reflect.IAnnotationInfo; import gw.lang.reflect.IAnnotationInfoFactory; import gw.lang.reflect.IAttributedFeatureInfo; import gw.lang.reflect.IEntityAccess; import gw.lang.reflect.IFeatureInfo; import gw.lang.reflect.IFunctionType; import gw.lang.reflect.IMethodInfo; import gw.lang.reflect.IPropertyAccessor; import gw.lang.reflect.IPropertyInfo; import gw.lang.reflect.IScriptabilityModifier; import gw.lang.reflect.IType; import gw.lang.reflect.ITypeInfo; import gw.lang.reflect.ITypeInfoFactory; import gw.lang.reflect.gs.GosuClassTypeLoader; import gw.lang.reflect.gs.GosuTemplateTypeLoader; import gw.lang.reflect.gs.ICompilableType; import gw.lang.reflect.gs.IEnhancementIndex; import gw.lang.reflect.gs.IFileSystemGosuClassRepository; import gw.lang.reflect.gs.IGosuClass; import gw.lang.reflect.gs.IGosuClassLoader; import gw.lang.reflect.gs.IGosuEnhancement; import gw.lang.reflect.gs.IGosuProgram; import gw.lang.reflect.gs.ISourceFileHandle; import gw.lang.reflect.gs.ITemplateType; import gw.lang.reflect.java.IJavaType; import gw.lang.reflect.module.IClassPath; import gw.fs.IFile; import gw.lang.reflect.module.IModule; import gw.lang.reflect.module.ModuleClassLoader; import gw.lang.tidb.IFeatureInfoRecordFactory; import gw.util.GosuExceptionUtil; import gw.util.IFeatureFilter; import gw.util.IGosuEditor; import java.io.Reader; import java.io.Writer; import java.lang.reflect.Method; import java.util.List; /** * Serves as an intermediary between the Gosu API module and the Gosu internal module. * @see GosuShop * * Copyright 2010 Guidewire Software, Inc. */ public interface IGosuShop extends IService { ISymbolTable createSymbolTable(); ISymbolTable createSymbolTable( boolean bDefineCommonSymbols ); ITemplateHost createTemplateHost(); IConstructorInfoFactory getConstructorInfoFactory(); IAnnotationInfoFactory getAnnotationInfoFactory(); IFeatureInfoRecordFactory getFeatureInfoRecordFactory(); IJavaDocFactory getJavaDocFactory(); IPropertyInfo createLengthProperty(ITypeInfo typeInfo); IFunctionType createFunctionType( IMethodInfo mi ); IDynamicFunctionSymbol createFunctionFromInterface( IType typeToCoerceTo, Object value ); ISymbol createSymbol( CharSequence name, IType type, Object value ); ISymbol createSymbol( CharSequence name, IType type, IStackProvider stackProvider ); IClassPath getClassPath(); ITypeInfoFactory getTypeInfoFactory(); IEntityAccess getDefaultEntityAccess(); ITemplateHost createSimpleTemplateHost(); ISourceCodeTokenizer createSourceCodeTokenizer( CharSequence code ); ISourceCodeTokenizer createSourceCodeTokenizer( CharSequence code, boolean bTemplate ); ISourceCodeTokenizer createSourceCodeTokenizer( Reader reader ); IScope createCommnoSymbolScope(); IStack createGosuStack(); IIdentifierExpression createIdentifierExpression(); void generateTemplate( Reader readerTemplate, Writer writerOut, ISymbolTable symbolTable ) throws TemplateParseException; ISymbolTable getGosuClassSymbolTable(); ISymbol createDynamicFunctionSymbol( ISymbolTable symbolTable, String strMemberName, IFunctionType functionType, List<ISymbol> params, IExpression value ); IEnhancementIndex createEnhancementIndex( GosuClassTypeLoader loader ); IGosuClass createClass( String strNamespace, String strRelativeName, GosuClassTypeLoader loader, ISourceFileHandle sourceFile, ITypeUsesMap typeUsesMap ); IGosuProgram createProgram( String strNamespace, String strRelativeName, GosuClassTypeLoader loader, ISourceFileHandle sourceFile, ITypeUsesMap typeUsesMap, ISymbolTable symTable ); IGosuProgram createProgramForEval( String strNamespace, String strRelativeName, GosuClassTypeLoader loader, ISourceFileHandle sourceFile, ITypeUsesMap typeUsesMap, ISymbolTable symTable ); IGosuEnhancement createEnhancement( String strNamespace, String strRelativeName, GosuClassTypeLoader loader, ISourceFileHandle sourceFile, ITypeUsesMap typeUsesMap ); ITemplateType createTemplate( String strFqn, ITemplateGenerator template, GosuTemplateTypeLoader loader ); ICompilableType findFragment( String fullyQualifiedName ); void clearFragments(); IFileSystemGosuClassRepository createFileSystemGosuClassRepository(IDirectory[] files, boolean includeCoreResources); IFileSystemGosuClassRepository createFileSystemGosuClassRepository(IDirectory[] files, String[] extensions, boolean includeCoreResources); ITypeUsesMap createTypeUsesMap( List<String> specialTypeUses ); IPropertyInfo getPropertyInfo( IType classBean, String strProperty, IFeatureFilter filter, IParserPart parserBase, IScriptabilityModifier scriptabilityConstraint) throws ParseException; List<? extends IPropertyInfo> getProperties( ITypeInfo beanInfo, IType classSource ); boolean isDescriptorHidden( IAttributedFeatureInfo pi ); List<? extends IMethodInfo> getMethods( ITypeInfo beanInfo, IType ownersIntrinsicType ); IFullParserState createStandardParserState( IParsedElement rootParsedElement, String scriptSrc, boolean b ); RuntimeException createEvaluationException(String msg); IPropertyInfo createPropertyDelegate(IFeatureInfo container, IPropertyInfo prop); IModule createModule( String strMemberName ); INullExpression getNullExpressionInstance(); IGosuClassLoader createGosuClassLoader( ModuleClassLoader moduleClassLoader ); GosuExceptionUtil.IForceThrower getForceThrower(); Class getBlockToInterfaceConversionClass( IJavaType typeToCoerceTo ); IRTypeResolver getIRTypeResolver(); IRClassCompiler getIRClassCompiler(); Object evaluateAnnotation( IAnnotationInfo ai ); IPropertyAccessor getLengthAccessor(); GosuPathEntry createPathEntryFromModuleFile(IFile f); IGosuEditor createGosuEditor(); Method[] getDeclaredMethods( Class cls ); boolean isAnnotationAllowedMultipleTimes( IFeatureInfo fi, IAnnotationInfo annotationInfo ); }