private SrcClass makeStubFromSource() { List<CompilationUnitTree> trees = new ArrayList<>(); _model.getHost().getJavaParser().parseText( _existingSource, trees, null, null, null ); JCTree.JCClassDecl classDecl = (JCTree.JCClassDecl)trees.get( 0 ).getTypeDecls().get( 0 ); SrcClass srcExtended = new SrcClass( _fqn, classDecl.getKind() == Tree.Kind.CLASS ? SrcClass.Kind.Class : SrcClass.Kind.Interface ) .modifiers( classDecl.getModifiers().getFlags() ); if( classDecl.extending != null ) { srcExtended.superClass( classDecl.extending.toString() ); } for( JCTree.JCExpression iface : classDecl.implementing ) { srcExtended.addInterface( iface.toString() ); } return srcExtended; }
private SrcClass makeStubFromSource() { List<CompilationUnitTree> trees = new ArrayList<>(); _model.getHost().getJavaParser().parseText( _existingSource, trees, null, null, null ); JCTree.JCClassDecl classDecl = (JCTree.JCClassDecl)trees.get( 0 ).getTypeDecls().get( 0 ); SrcClass srcExtended = new SrcClass( _fqn, classDecl.getKind() == Tree.Kind.CLASS ? SrcClass.Kind.Class : SrcClass.Kind.Interface ) .modifiers( classDecl.getModifiers().getFlags() ); if( classDecl.extending != null ) { srcExtended.superClass( classDecl.extending.toString() ); } for( JCTree.JCExpression iface : classDecl.implementing ) { srcExtended.addInterface( iface.toString() ); } return srcExtended; }
if( !(superclass instanceof NoType) ) srcClass.superClass( makeNestedType( superclass ) );
static SrcClass genClass( String fqn, ProgramNode programNode ) { ClassNode classNode = programNode.getFirstChild( ClassNode.class ); SrcClass clazz = new SrcClass( fqn, SrcClass.Kind.Class ); clazz.addAnnotation( new SrcAnnotationExpression( SourcePosition.class ) .addArgument( "url", String.class, programNode.getUrl().toString() ) .addArgument( "feature", String.class, ManClassUtil.getShortClassName( fqn ) ) .addArgument( "offset", int.class, classNode.getStart().getOffset() ) .addArgument( "length", int.class, classNode.getEnd().getOffset() - classNode.getStart().getOffset() ) ); String superClass = classNode.getSuperClass(); if( superClass != null ) { clazz.superClass( superClass ); } clazz.imports( JavascriptClass.class ) .imports( SourcePosition.class ); clazz.addField( new SrcField( "ENGINE", ScriptEngine.class ) .modifiers( Modifier.PRIVATE | Modifier.STATIC | Modifier.VOLATILE ) .initializer( new SrcRawExpression( ("null") ) ) ); clazz.addField( new SrcField( "TIMESTAMP", long.class ) .modifiers( Modifier.PRIVATE | Modifier.STATIC | Modifier.VOLATILE ) .initializer( new SrcRawExpression( ("0") ) ) ); clazz.addField( new SrcField( "_context", ScriptObjectMirror.class ) ); addConstructor( clazz, classNode ); addUtilityMethods( clazz, classNode, fqn ); addMethods( fqn, clazz, classNode ); addProperties( fqn, clazz, classNode ); return clazz; }
static SrcClass genClass( String fqn, ProgramNode programNode ) { ClassNode classNode = programNode.getFirstChild( ClassNode.class ); SrcClass clazz = new SrcClass( fqn, SrcClass.Kind.Class ); clazz.addAnnotation( new SrcAnnotationExpression( SourcePosition.class ) .addArgument( "url", String.class, programNode.getUrl().toString() ) .addArgument( "feature", String.class, ManClassUtil.getShortClassName( fqn ) ) .addArgument( "offset", int.class, classNode.getStart().getOffset() ) .addArgument( "length", int.class, classNode.getEnd().getOffset() - classNode.getStart().getOffset() ) ); String superClass = classNode.getSuperClass(); if( superClass != null ) { clazz.superClass( superClass ); } clazz.imports( JavascriptClass.class ) .imports( SourcePosition.class ); clazz.addField( new SrcField( "ENGINE", ScriptEngine.class ) .modifiers( Modifier.PRIVATE | Modifier.STATIC | Modifier.VOLATILE ) .initializer( new SrcRawExpression( ("null") ) ) ); clazz.addField( new SrcField( "TIMESTAMP", long.class ) .modifiers( Modifier.PRIVATE | Modifier.STATIC | Modifier.VOLATILE ) .initializer( new SrcRawExpression( ("0") ) ) ); clazz.addField( new SrcField( "_context", ScriptObjectMirror.class ) ); addConstructor( clazz, classNode ); addUtilityMethods( clazz, classNode, fqn ); addMethods( fqn, clazz, classNode ); addProperties( fqn, clazz, classNode ); return clazz; }
.superClass( new SrcType( ImageIcon.class ) ) .addField( new SrcField( "INSTANCE", simpleName ).modifiers( Modifier.STATIC ) ) .addConstructor( new SrcConstructor()
.superClass( new SrcType( ImageIcon.class ) ) .addField( new SrcField( "INSTANCE", simpleName ).modifiers( Modifier.STATIC ) ) .addConstructor( new SrcConstructor()
static SrcClass genProgram( String fqn, ProgramNode programNode ) { SrcClass clazz = new SrcClass( fqn, SrcClass.Kind.Class ).superClass( JavascriptProgram.class ) .imports( SourcePosition.class ); clazz.addField( new SrcField( "ENGINE", ScriptEngine.class ) .modifiers( Modifier.STATIC ) .initializer( new SrcRawExpression( ("init(\"" + fqn + "\")") ) ) ); clazz.addConstructor( new SrcConstructor().modifiers( Modifier.PRIVATE ).body( new SrcStatementBlock() ) ); for( FunctionNode node : programNode.getChildren( FunctionNode.class ) ) { AbstractSrcMethod<SrcMethod> srcMethod = new SrcMethod() .name( node.getName() ) .modifiers( Modifier.STATIC | Modifier.PUBLIC ) .returns( node.getReturnType() ); List<SrcParameter> srcParameters = makeSrcParameters( node, srcMethod ); srcMethod.body( new SrcStatementBlock() .addStatement( new SrcRawStatement() .rawText( "return invoke(ENGINE, \"" + node.getName() + "\"" + generateArgList( srcParameters ) + ");" ) ) ); clazz.addMethod( srcMethod ); } return clazz; }
static SrcClass genProgram( String fqn, ProgramNode programNode ) { SrcClass clazz = new SrcClass( fqn, SrcClass.Kind.Class ).superClass( JavascriptProgram.class ) .imports( SourcePosition.class ); clazz.addField( new SrcField( "ENGINE", ScriptEngine.class ) .modifiers( Modifier.STATIC ) .initializer( new SrcRawExpression( ("init(\"" + fqn + "\")") ) ) ); clazz.addConstructor( new SrcConstructor().modifiers( Modifier.PRIVATE ).body( new SrcStatementBlock() ) ); for( FunctionNode node : programNode.getChildren( FunctionNode.class ) ) { AbstractSrcMethod<SrcMethod> srcMethod = new SrcMethod() .name( node.getName() ) .modifiers( Modifier.STATIC | Modifier.PUBLIC ) .returns( node.getReturnType() ); List<SrcParameter> srcParameters = makeSrcParameters( node, srcMethod ); srcMethod.body( new SrcStatementBlock() .addStatement( new SrcRawStatement() .rawText( "return invoke(ENGINE, \"" + node.getName() + "\"" + generateArgList( srcParameters ) + ");" ) ) ); clazz.addMethod( srcMethod ); } return clazz; }