public SrcAnnotationExpression copy() { SrcAnnotationExpression copy = new SrcAnnotationExpression( _fqn ); for( SrcArgument expr : _arguments ) { copy.addArgument( expr.copy() ); } return copy; }
private void addTypeReferenceAnnotation( StringBuilder sb, int indent, JsonSchemaType type ) { SrcAnnotationExpression annotation = new SrcAnnotationExpression( TypeReference.class.getName() ) .addArgument( "value", String.class, getPropertyType( type ) ); annotation.render( sb, indent ); }
private SrcAnnotationExpression makeSourcePositionAnnotation( Token token ) { int i = getFileIndex( token ); return new SrcAnnotationExpression( SourcePosition.class.getName() ) .addArgument( new SrcArgument( new SrcMemberAccessExpression( ManClassUtil.getShortClassName( _extensionFqn ), FIELD_FILE_URL + i ) ).name( "url" ) ) .addArgument( "feature", String.class, token._value.toString() ) .addArgument( "kind", String.class, "favorite" ) .addArgument( "offset", int.class, token._pos ) .addArgument( "length", int.class, token._value.length() ); }
private SrcAnnotationExpression makeSourcePositionAnnotation( Token token ) { int i = getFileIndex( token ); return new SrcAnnotationExpression( SourcePosition.class.getName() ) .addArgument( new SrcArgument( new SrcMemberAccessExpression( ManClassUtil.getShortClassName( _extensionFqn ), FIELD_FILE_URL + i ) ).name( "url" ) ) .addArgument( "feature", String.class, token._value.toString() ) .addArgument( "kind", String.class, "favorite" ) .addArgument( "offset", int.class, token._pos ) .addArgument( "length", int.class, token._value.length() ); }
protected boolean addSourcePositionAnnotation( StringBuilder sb, int indent, String name, Token token ) { SrcAnnotationExpression annotation = new SrcAnnotationExpression( SourcePosition.class.getName() ) .addArgument( new SrcArgument( new SrcMemberAccessExpression( getIdentifier(), FIELD_FILE_URL ) ).name( "url" ) ) .addArgument( "feature", String.class, name ) .addArgument( "offset", int.class, token.getOffset() ) .addArgument( "length", int.class, name.length() ); annotation.render( sb, indent ); return true; }
private void addAnnotations( SrcAnnotated<?> srcAnnotated, Symbol symbol ) { for( Attribute.Compound annotationMirror: symbol.getAnnotationMirrors() ) { String fqn = annotationMirror.getAnnotationType().toString(); if( fqn.equals( "jdk.internal.HotSpotIntrinsicCandidate" ) ) { // Since java 10 we have to keep these out of stubbed java source continue; } SrcAnnotationExpression annoExpr = new SrcAnnotationExpression( fqn ); for( Pair<Symbol.MethodSymbol, Attribute> value: annotationMirror.values ) { annoExpr.addArgument( value.fst.flatName().toString(), new SrcType( value.snd.type.toString() ), value.snd.getValue() ); } srcAnnotated.addAnnotation( annoExpr ); } }
private void addAnnotation( SrcType srcType, Attribute.TypeCompound attr ) { String fqn = attr.type.toString(); if( fqn.equals( "jdk.internal.HotSpotIntrinsicCandidate" ) ) { // Since java 10 we have to keep these out of stubbed java source return; } SrcAnnotationExpression annoExpr = new SrcAnnotationExpression( fqn ); for( Pair<Symbol.MethodSymbol, Attribute> value: attr.values ) { annoExpr.addArgument( value.fst.flatName().toString(), new SrcType( value.snd.type.toString() ), value.snd.getValue() ); } srcType.addAnnotation( annoExpr ); }
private SrcAnnotationExpression addSourcePositionAnnotation( FqnCacheNode<String> node ) { return new SrcAnnotationExpression( SourcePosition.class.getSimpleName() ) .addArgument( new SrcArgument( new SrcMemberAccessExpression( _fqn, FIELD_FILE_URL ) ).name( "url" ) ) .addArgument( "feature", new SrcType( "String" ), node.getName() ) .addArgument( "offset", int.class, findOffsetOf( node ) ) .addArgument( "length", int.class, node.getName() == null ? 0 : node.getName().length() ); }
private SrcAnnotationExpression addSourcePositionAnnotation( FqnCacheNode<String> node ) { return new SrcAnnotationExpression( SourcePosition.class.getSimpleName() ) .addArgument( new SrcArgument( new SrcMemberAccessExpression( _fqn, FIELD_FILE_URL ) ).name( "url" ) ) .addArgument( "feature", new SrcType( "String" ), node.getName() ) .addArgument( "offset", int.class, findOffsetOf( node ) ) .addArgument( "length", int.class, node.getName() == null ? 0 : node.getName().length() ); }
public String makeSource( String extensionClassFqn, DiagnosticListener<JavaFileObject> errorHandler ) .addAnnotation( new SrcAnnotationExpression( Extension.class ) ) .modifiers( Modifier.PUBLIC ); int i = 0; .addParam( new SrcParameter( "thiz", deriveExtendedClassFrom( extensionClassFqn ) ) .addAnnotation( new SrcAnnotationExpression( This.class ) ) ) .returns( String.class ) .body( new SrcStatementBlock()
public String makeSource( String extensionClassFqn, DiagnosticListener<JavaFileObject> errorHandler ) .addAnnotation( new SrcAnnotationExpression( Extension.class ) ) .modifiers( Modifier.PUBLIC ); int i = 0; .addParam( new SrcParameter( "thiz", deriveExtendedClassFrom( extensionClassFqn ) ) .addAnnotation( new SrcAnnotationExpression( This.class ) ) ) .returns( String.class ) .body( new SrcStatementBlock()
new SrcAnnotationExpression( ExtensionMethod.class ) .addArgument( "extensionClass", String.class, ((SrcClass)method.getOwner()).getName() ) .addArgument( "isStatic", boolean.class, !isInstanceExtensionMethod ) );
private static void addConstructor( SrcClass clazz, ClassNode classNode ) { ConstructorNode constructor = classNode.getFirstChild( ConstructorNode.class ); SrcConstructor ctor = new SrcConstructor() .name( classNode.getName() ) .modifiers( Modifier.PUBLIC ); List<SrcParameter> srcParameters; if( constructor != null ) { srcParameters = makeSrcParameters( constructor, ctor ); ctor.addAnnotation( new SrcAnnotationExpression( SourcePosition.class ) .addArgument( "url", String.class, classNode.getProgramNode().getUrl().toString() ) .addArgument( "feature", String.class, "constructor" ) .addArgument( "offset", int.class, constructor.getStart().getOffset() ) .addArgument( "length", int.class, constructor.getEnd().getOffset() - constructor.getStart().getOffset() ) ); } else { srcParameters = Collections.emptyList(); } //impl ctor.body( new SrcStatementBlock() .addStatement( new SrcRawStatement() .rawText( "_context = JavascriptClass.initInstance(getEngine(), \"" + classNode.getName() + "\"" + generateArgList( srcParameters ) + ");" ) ) ); clazz.addConstructor( ctor ); }
private static void addConstructor( SrcClass clazz, ClassNode classNode ) { ConstructorNode constructor = classNode.getFirstChild( ConstructorNode.class ); SrcConstructor ctor = new SrcConstructor() .name( classNode.getName() ) .modifiers( Modifier.PUBLIC ); List<SrcParameter> srcParameters; if( constructor != null ) { srcParameters = makeSrcParameters( constructor, ctor ); ctor.addAnnotation( new SrcAnnotationExpression( SourcePosition.class ) .addArgument( "url", String.class, classNode.getProgramNode().getUrl().toString() ) .addArgument( "feature", String.class, "constructor" ) .addArgument( "offset", int.class, constructor.getStart().getOffset() ) .addArgument( "length", int.class, constructor.getEnd().getOffset() - constructor.getStart().getOffset() ) ); } else { srcParameters = Collections.emptyList(); } //impl ctor.body( new SrcStatementBlock() .addStatement( new SrcRawStatement() .rawText( "_context = JavascriptClass.initInstance(getEngine(), \"" + classNode.getName() + "\"" + generateArgList( srcParameters ) + ");" ) ) ); clazz.addConstructor( ctor ); }
new SrcAnnotationExpression( SourcePosition.class ) .addArgument( "url", String.class, classNode.getProgramNode().getUrl().toString() ) .addArgument( "feature", String.class, node.getName() ) new SrcAnnotationExpression( SourcePosition.class ) .addArgument( "url", String.class, classNode.getProgramNode().getUrl().toString() ) .addArgument( "feature", String.class, node.getName() )
new SrcAnnotationExpression( SourcePosition.class ) .addArgument( "url", String.class, classNode.getProgramNode().getUrl().toString() ) .addArgument( "feature", String.class, node.getName() ) new SrcAnnotationExpression( SourcePosition.class ) .addArgument( "url", String.class, classNode.getProgramNode().getUrl().toString() ) .addArgument( "feature", String.class, node.getName() )
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; }
.returns( node.getReturnType() ); srcMethod.addAnnotation( new SrcAnnotationExpression( SourcePosition.class ) .addArgument( "url", String.class, classNode.getProgramNode().getUrl().toString() ) .addArgument( "feature", String.class, node.getName() )
.returns( node.getReturnType() ); srcMethod.addAnnotation( new SrcAnnotationExpression( SourcePosition.class ) .addArgument( "url", String.class, classNode.getProgramNode().getUrl().toString() ) .addArgument( "feature", String.class, node.getName() )