Documentation
¶
Index ¶
- Constants
- func AsRef(v any) any
- func GetValue(maybeRef any) any
- func GetValueNonNull(maybeRef any) any
- func IsRef(v any) bool
- func RegisterFactory(javaClassName string, factory func() any)
- func RegisterValueType(goType reflect.Type, javaClassName string)
- func SendMarkersCodec(m java.Markers, q *SendQueue)
- type GoReceiver
- func (r *GoReceiver) Visit(t java.Tree, p any) java.Tree
- func (r *GoReceiver) VisitChannel(ch *golang.Channel, p any) java.J
- func (r *GoReceiver) VisitCommClause(cc *golang.CommClause, p any) java.J
- func (r *GoReceiver) VisitCompilationUnit(cu *golang.CompilationUnit, p any) java.J
- func (r *GoReceiver) VisitComposite(comp *golang.Composite, p any) java.J
- func (r *GoReceiver) VisitDeclarationBlock(db *golang.DeclarationBlock, p any) java.J
- func (r *GoReceiver) VisitDefer(d *golang.Defer, p any) java.J
- func (r *GoReceiver) VisitFallthrough(f *golang.Fallthrough, p any) java.J
- func (r *GoReceiver) VisitFuncType(ft *golang.FuncType, p any) java.J
- func (r *GoReceiver) VisitGoArrayType(at *golang.ArrayType, p any) java.J
- func (r *GoReceiver) VisitGoAssignmentOperation(a *golang.AssignmentOperation, p any) java.J
- func (r *GoReceiver) VisitGoBinary(b *golang.Binary, p any) java.J
- func (r *GoReceiver) VisitGoMethodDeclaration(md *golang.MethodDeclaration, p any) java.J
- func (r *GoReceiver) VisitGoReturn(ret *golang.Return, p any) java.J
- func (r *GoReceiver) VisitGoStmt(gs *golang.GoStmt, p any) java.J
- func (r *GoReceiver) VisitGoUnary(u *golang.Unary, p any) java.J
- func (r *GoReceiver) VisitGoVariadic(vr *golang.Variadic, p any) java.J
- func (r *GoReceiver) VisitGoto(g *golang.Goto, p any) java.J
- func (r *GoReceiver) VisitIndexList(il *golang.IndexList, p any) java.J
- func (r *GoReceiver) VisitInterfaceType(it *golang.InterfaceType, p any) java.J
- func (r *GoReceiver) VisitKeyValue(kv *golang.KeyValue, p any) java.J
- func (r *GoReceiver) VisitMapType(mt *golang.MapType, p any) java.J
- func (r *GoReceiver) VisitMultiAssignment(ma *golang.MultiAssignment, p any) java.J
- func (r *GoReceiver) VisitPointerType(pt *golang.PointerType, p any) java.J
- func (r *GoReceiver) VisitSend(sn *golang.Send, p any) java.J
- func (r *GoReceiver) VisitSlice(sl *golang.Slice, p any) java.J
- func (r *GoReceiver) VisitStatementExpression(se *golang.StatementExpression, p any) java.J
- func (r *GoReceiver) VisitStatementWithInit(swi *golang.StatementWithInit, p any) java.J
- func (r *GoReceiver) VisitStructType(st *golang.StructType, p any) java.J
- func (r *GoReceiver) VisitTypeDecl(td *golang.TypeDecl, p any) java.J
- func (r *GoReceiver) VisitTypeList(tl *golang.TypeList, p any) java.J
- func (r *GoReceiver) VisitUnderlyingType(ut *golang.UnderlyingType, p any) java.J
- func (r *GoReceiver) VisitUnion(u *golang.Union, p any) java.J
- type GoSender
- func (s *GoSender) Visit(t java.Tree, p any) java.Tree
- func (s *GoSender) VisitChannel(ch *golang.Channel, p any) java.J
- func (s *GoSender) VisitCommClause(cc *golang.CommClause, p any) java.J
- func (s *GoSender) VisitCompilationUnit(cu *golang.CompilationUnit, p any) java.J
- func (s *GoSender) VisitComposite(c *golang.Composite, p any) java.J
- func (s *GoSender) VisitDeclarationBlock(db *golang.DeclarationBlock, p any) java.J
- func (s *GoSender) VisitDefer(d *golang.Defer, p any) java.J
- func (s *GoSender) VisitFallthrough(f *golang.Fallthrough, p any) java.J
- func (s *GoSender) VisitFuncType(ft *golang.FuncType, p any) java.J
- func (s *GoSender) VisitGoArrayType(at *golang.ArrayType, p any) java.J
- func (s *GoSender) VisitGoAssignmentOperation(a *golang.AssignmentOperation, p any) java.J
- func (s *GoSender) VisitGoBinary(b *golang.Binary, p any) java.J
- func (s *GoSender) VisitGoMethodDeclaration(md *golang.MethodDeclaration, p any) java.J
- func (s *GoSender) VisitGoReturn(ret *golang.Return, p any) java.J
- func (s *GoSender) VisitGoStmt(gs *golang.GoStmt, p any) java.J
- func (s *GoSender) VisitGoUnary(u *golang.Unary, p any) java.J
- func (s *GoSender) VisitGoVariadic(vr *golang.Variadic, p any) java.J
- func (s *GoSender) VisitGoto(g *golang.Goto, p any) java.J
- func (s *GoSender) VisitIndexList(il *golang.IndexList, p any) java.J
- func (s *GoSender) VisitInterfaceType(it *golang.InterfaceType, p any) java.J
- func (s *GoSender) VisitKeyValue(kv *golang.KeyValue, p any) java.J
- func (s *GoSender) VisitMapType(mt *golang.MapType, p any) java.J
- func (s *GoSender) VisitMultiAssignment(ma *golang.MultiAssignment, p any) java.J
- func (s *GoSender) VisitPointerType(pt *golang.PointerType, p any) java.J
- func (s *GoSender) VisitSend(sn *golang.Send, p any) java.J
- func (s *GoSender) VisitSlice(sl *golang.Slice, p any) java.J
- func (s *GoSender) VisitStatementExpression(se *golang.StatementExpression, p any) java.J
- func (s *GoSender) VisitStatementWithInit(swi *golang.StatementWithInit, p any) java.J
- func (s *GoSender) VisitStructType(st *golang.StructType, p any) java.J
- func (s *GoSender) VisitTypeDecl(td *golang.TypeDecl, p any) java.J
- func (s *GoSender) VisitTypeList(tl *golang.TypeList, p any) java.J
- func (s *GoSender) VisitUnderlyingType(ut *golang.UnderlyingType, p any) java.J
- func (s *GoSender) VisitUnion(u *golang.Union, p any) java.J
- type JavaReceiver
- func (r *JavaReceiver) PreVisit(t java.Tree, p any) java.Tree
- func (r *JavaReceiver) VisitAnnotation(ann *java.Annotation, p any) java.J
- func (r *JavaReceiver) VisitArrayAccess(aa *java.ArrayAccess, p any) java.J
- func (r *JavaReceiver) VisitArrayDimension(ad *java.ArrayDimension, p any) java.J
- func (r *JavaReceiver) VisitArrayType(at *java.ArrayType, p any) java.J
- func (r *JavaReceiver) VisitAssignment(a *java.Assignment, p any) java.J
- func (r *JavaReceiver) VisitAssignmentOperation(a *java.AssignmentOperation, p any) java.J
- func (r *JavaReceiver) VisitBinary(b *java.Binary, p any) java.J
- func (r *JavaReceiver) VisitBlock(b *java.Block, p any) java.J
- func (r *JavaReceiver) VisitBreak(b *java.Break, p any) java.J
- func (r *JavaReceiver) VisitCase(cs *java.Case, p any) java.J
- func (r *JavaReceiver) VisitContinue(cont *java.Continue, p any) java.J
- func (r *JavaReceiver) VisitControlParentheses(cp *java.ControlParentheses, p any) java.J
- func (r *JavaReceiver) VisitElse(el *java.Else, p any) java.J
- func (r *JavaReceiver) VisitFieldAccess(fa *java.FieldAccess, p any) java.J
- func (r *JavaReceiver) VisitForControl(fc *java.ForControl, p any) java.J
- func (r *JavaReceiver) VisitForEachControl(fc *java.ForEachControl, p any) java.J
- func (r *JavaReceiver) VisitForEachLoop(f *java.ForEachLoop, p any) java.J
- func (r *JavaReceiver) VisitForLoop(f *java.ForLoop, p any) java.J
- func (r *JavaReceiver) VisitIdentifier(id *java.Identifier, p any) java.J
- func (r *JavaReceiver) VisitIf(i *java.If, p any) java.J
- func (r *JavaReceiver) VisitImport(imp *java.Import, p any) java.J
- func (r *JavaReceiver) VisitLabel(l *java.Label, p any) java.J
- func (r *JavaReceiver) VisitLiteral(lit *java.Literal, p any) java.J
- func (r *JavaReceiver) VisitMethodDeclaration(md *java.MethodDeclaration, p any) java.J
- func (r *JavaReceiver) VisitMethodInvocation(mi *java.MethodInvocation, p any) java.J
- func (r *JavaReceiver) VisitParameterizedType(pt *java.ParameterizedType, p any) java.J
- func (r *JavaReceiver) VisitParentheses(parens *java.Parentheses, p any) java.J
- func (r *JavaReceiver) VisitReturn(ret *java.Return, p any) java.J
- func (r *JavaReceiver) VisitSwitch(sw *java.Switch, p any) java.J
- func (r *JavaReceiver) VisitTypeCast(tc *java.TypeCast, p any) java.J
- func (r *JavaReceiver) VisitTypeParameter(tp *java.TypeParameter, p any) java.J
- func (r *JavaReceiver) VisitTypeParameters(tps *java.TypeParameters, p any) java.J
- func (r *JavaReceiver) VisitUnary(u *java.Unary, p any) java.J
- func (r *JavaReceiver) VisitVariableDeclarations(vd *java.VariableDeclarations, p any) java.J
- func (r *JavaReceiver) VisitVariableDeclarator(vd *java.VariableDeclarator, p any) java.J
- type JavaSender
- func (s *JavaSender) PreVisit(t java.Tree, p any) java.Tree
- func (s *JavaSender) VisitAnnotation(ann *java.Annotation, p any) java.J
- func (s *JavaSender) VisitArrayAccess(aa *java.ArrayAccess, p any) java.J
- func (s *JavaSender) VisitArrayDimension(ad *java.ArrayDimension, p any) java.J
- func (s *JavaSender) VisitArrayType(at *java.ArrayType, p any) java.J
- func (s *JavaSender) VisitAssignment(a *java.Assignment, p any) java.J
- func (s *JavaSender) VisitAssignmentOperation(a *java.AssignmentOperation, p any) java.J
- func (s *JavaSender) VisitBinary(b *java.Binary, p any) java.J
- func (s *JavaSender) VisitBlock(b *java.Block, p any) java.J
- func (s *JavaSender) VisitBreak(b *java.Break, p any) java.J
- func (s *JavaSender) VisitCase(c *java.Case, p any) java.J
- func (s *JavaSender) VisitContinue(c *java.Continue, p any) java.J
- func (s *JavaSender) VisitControlParentheses(cp *java.ControlParentheses, p any) java.J
- func (s *JavaSender) VisitElse(el *java.Else, p any) java.J
- func (s *JavaSender) VisitFieldAccess(fa *java.FieldAccess, p any) java.J
- func (s *JavaSender) VisitForControl(fc *java.ForControl, p any) java.J
- func (s *JavaSender) VisitForEachControl(fc *java.ForEachControl, p any) java.J
- func (s *JavaSender) VisitForEachLoop(f *java.ForEachLoop, p any) java.J
- func (s *JavaSender) VisitForLoop(f *java.ForLoop, p any) java.J
- func (s *JavaSender) VisitIdentifier(id *java.Identifier, p any) java.J
- func (s *JavaSender) VisitIf(i *java.If, p any) java.J
- func (s *JavaSender) VisitImport(imp *java.Import, p any) java.J
- func (s *JavaSender) VisitLabel(l *java.Label, p any) java.J
- func (s *JavaSender) VisitLiteral(lit *java.Literal, p any) java.J
- func (s *JavaSender) VisitMethodDeclaration(md *java.MethodDeclaration, p any) java.J
- func (s *JavaSender) VisitMethodInvocation(mi *java.MethodInvocation, p any) java.J
- func (s *JavaSender) VisitParameterizedType(pt *java.ParameterizedType, p any) java.J
- func (s *JavaSender) VisitParentheses(parens *java.Parentheses, p any) java.J
- func (s *JavaSender) VisitReturn(r *java.Return, p any) java.J
- func (s *JavaSender) VisitSwitch(sw *java.Switch, p any) java.J
- func (s *JavaSender) VisitTypeCast(tc *java.TypeCast, p any) java.J
- func (s *JavaSender) VisitTypeParameter(tp *java.TypeParameter, p any) java.J
- func (s *JavaSender) VisitTypeParameters(tps *java.TypeParameters, p any) java.J
- func (s *JavaSender) VisitUnary(u *java.Unary, p any) java.J
- func (s *JavaSender) VisitVariableDeclarations(vd *java.VariableDeclarations, p any) java.J
- func (s *JavaSender) VisitVariableDeclarator(vd *java.VariableDeclarator, p any) java.J
- type JavaTypeReceiver
- func (r *JavaTypeReceiver) VisitAnnotation(a *java.JavaTypeAnnotation, p any) java.JavaType
- func (r *JavaTypeReceiver) VisitArray(a *java.JavaTypeArray, p any) java.JavaType
- func (r *JavaTypeReceiver) VisitClass(c *java.JavaTypeClass, p any) java.JavaType
- func (r *JavaTypeReceiver) VisitGenericTypeVariable(g *java.JavaTypeGenericTypeVariable, p any) java.JavaType
- func (r *JavaTypeReceiver) VisitIntersection(is *java.JavaTypeIntersection, p any) java.JavaType
- func (r *JavaTypeReceiver) VisitMethod(m *java.JavaTypeMethod, p any) java.JavaType
- func (r *JavaTypeReceiver) VisitMultiCatch(mc *java.JavaTypeMultiCatch, p any) java.JavaType
- func (r *JavaTypeReceiver) VisitParameterized(pt *java.JavaTypeParameterized, p any) java.JavaType
- func (r *JavaTypeReceiver) VisitPrimitive(pr *java.JavaTypePrimitive, p any) java.JavaType
- func (r *JavaTypeReceiver) VisitShallowClass(sc *java.JavaTypeShallowClass, p any) java.JavaType
- func (r *JavaTypeReceiver) VisitVariable(v *java.JavaTypeVariable, p any) java.JavaType
- type JavaTypeSender
- func (s *JavaTypeSender) VisitAnnotation(a *java.JavaTypeAnnotation, p any) java.JavaType
- func (s *JavaTypeSender) VisitArray(a *java.JavaTypeArray, p any) java.JavaType
- func (s *JavaTypeSender) VisitClass(c *java.JavaTypeClass, p any) java.JavaType
- func (s *JavaTypeSender) VisitGenericTypeVariable(g *java.JavaTypeGenericTypeVariable, p any) java.JavaType
- func (s *JavaTypeSender) VisitIntersection(is *java.JavaTypeIntersection, p any) java.JavaType
- func (s *JavaTypeSender) VisitMethod(m *java.JavaTypeMethod, p any) java.JavaType
- func (s *JavaTypeSender) VisitMultiCatch(mc *java.JavaTypeMultiCatch, p any) java.JavaType
- func (s *JavaTypeSender) VisitParameterized(pt *java.JavaTypeParameterized, p any) java.JavaType
- func (s *JavaTypeSender) VisitPrimitive(pr *java.JavaTypePrimitive, p any) java.JavaType
- func (s *JavaTypeSender) VisitShallowClass(sc *java.JavaTypeShallowClass, p any) java.JavaType
- func (s *JavaTypeSender) VisitVariable(v *java.JavaTypeVariable, p any) java.JavaType
- type ReceiveQueue
- func (q *ReceiveQueue) PeekBatch() []RpcObjectData
- func (q *ReceiveQueue) Receive(before any, onChange func(any) any) any
- func (q *ReceiveQueue) ReceiveAndGet(before any, mapping func(any) any) any
- func (q *ReceiveQueue) ReceiveList(before []any, onChange func(any) any) []any
- func (q *ReceiveQueue) Take() RpcObjectData
- type Receiver
- type Reference
- type RpcObjectData
- type SendQueue
- func (q *SendQueue) Flush()
- func (q *SendQueue) GetAndSend(parent any, getter func(any) any, onChange func(any))
- func (q *SendQueue) GetAndSendList(parent any, getter func(any) []any, id func(any) any, onChange func(any))
- func (q *SendQueue) GetAndSendListAsRef(parent any, getter func(any) []any, id func(any) any, onChange func(any))
- func (q *SendQueue) Put(data RpcObjectData)
- func (q *SendQueue) Send(after, before any, onChange func(any))
- type Sender
- type State
Constants ¶
const AddedListItem = -1
AddedListItem is the sentinel value used in list positions to indicate a new item.
Variables ¶
This section is empty.
Functions ¶
func AsRef ¶
AsRef wraps a value in a Reference for ref tracking. Returns nil if the value is nil (including typed nil pointers/interfaces).
func GetValue ¶
GetValue unwraps a Reference, returning the inner value. If the argument is not a Reference, it is returned as-is.
func GetValueNonNull ¶
GetValueNonNull unwraps a Reference and panics if the result is nil.
func RegisterFactory ¶
RegisterFactory registers a factory for creating instances of a Java class.
func RegisterValueType ¶
RegisterValueType registers a Go type -> Java class name mapping for RPC serialization.
func SendMarkersCodec ¶
SendMarkersCodec serializes Markers fields like Java's Markers.rpcSend codec. Sends: ID (uuid string), then marker entries list as ref.
Types ¶
type GoReceiver ¶
type GoReceiver struct {
JavaReceiver
}
GoReceiver deserializes Go AST nodes via the visitor pattern. Mirrors org.openrewrite.golang.internal.rpc.GolangReceiver, which extends JavaReceiver, which extends JavaVisitor.
GoReceiver embeds JavaReceiver to inherit J-node Visit overrides and the PreVisit hook (id/prefix/markers), and adds VisitX overrides for G-specific node types. Self is set by visitor.Init so the framework's type-switch dispatch routes to the most-derived override.
func NewGoReceiver ¶
func NewGoReceiver() *GoReceiver
NewGoReceiver creates a GoReceiver ready to deserialize trees.
func (*GoReceiver) Visit ¶
Visit overrides the framework dispatch to special-case ParseError — it isn't a J node, has no Prefix/Markers, and uses its own codec. All other tree types fall through to the framework's switch.
func (*GoReceiver) VisitChannel ¶
func (*GoReceiver) VisitCommClause ¶
func (r *GoReceiver) VisitCommClause(cc *golang.CommClause, p any) java.J
func (*GoReceiver) VisitCompilationUnit ¶
func (r *GoReceiver) VisitCompilationUnit(cu *golang.CompilationUnit, p any) java.J
func (*GoReceiver) VisitComposite ¶
func (*GoReceiver) VisitDeclarationBlock ¶ added in v0.0.12
func (r *GoReceiver) VisitDeclarationBlock(db *golang.DeclarationBlock, p any) java.J
func (*GoReceiver) VisitDefer ¶
func (*GoReceiver) VisitFallthrough ¶ added in v0.0.3
func (r *GoReceiver) VisitFallthrough(f *golang.Fallthrough, p any) java.J
VisitFallthrough mirrors GolangReceiver.visitFallthrough — the node has no payload beyond the framework-handled id/prefix/markers, so this override is intentionally a no-op. Present for sender/receiver symmetry.
func (*GoReceiver) VisitFuncType ¶
func (*GoReceiver) VisitGoArrayType ¶ added in v0.0.13
func (*GoReceiver) VisitGoAssignmentOperation ¶ added in v0.0.6
func (r *GoReceiver) VisitGoAssignmentOperation(a *golang.AssignmentOperation, p any) java.J
func (*GoReceiver) VisitGoBinary ¶ added in v0.0.6
func (*GoReceiver) VisitGoMethodDeclaration ¶ added in v0.0.12
func (r *GoReceiver) VisitGoMethodDeclaration(md *golang.MethodDeclaration, p any) java.J
func (*GoReceiver) VisitGoReturn ¶ added in v0.0.11
func (*GoReceiver) VisitGoStmt ¶
func (*GoReceiver) VisitGoUnary ¶ added in v0.0.6
func (*GoReceiver) VisitGoVariadic ¶ added in v0.0.6
func (*GoReceiver) VisitIndexList ¶
func (*GoReceiver) VisitInterfaceType ¶
func (r *GoReceiver) VisitInterfaceType(it *golang.InterfaceType, p any) java.J
func (*GoReceiver) VisitKeyValue ¶
func (*GoReceiver) VisitMapType ¶
func (*GoReceiver) VisitMultiAssignment ¶
func (r *GoReceiver) VisitMultiAssignment(ma *golang.MultiAssignment, p any) java.J
func (*GoReceiver) VisitPointerType ¶
func (r *GoReceiver) VisitPointerType(pt *golang.PointerType, p any) java.J
func (*GoReceiver) VisitSlice ¶
func (*GoReceiver) VisitStatementExpression ¶
func (r *GoReceiver) VisitStatementExpression(se *golang.StatementExpression, p any) java.J
func (*GoReceiver) VisitStatementWithInit ¶ added in v0.0.13
func (r *GoReceiver) VisitStatementWithInit(swi *golang.StatementWithInit, p any) java.J
func (*GoReceiver) VisitStructType ¶
func (r *GoReceiver) VisitStructType(st *golang.StructType, p any) java.J
func (*GoReceiver) VisitTypeDecl ¶
func (*GoReceiver) VisitTypeList ¶
func (*GoReceiver) VisitUnderlyingType ¶ added in v0.0.5
func (r *GoReceiver) VisitUnderlyingType(ut *golang.UnderlyingType, p any) java.J
func (*GoReceiver) VisitUnion ¶ added in v0.0.5
type GoSender ¶
type GoSender struct {
JavaSender
}
GoSender serializes Go AST nodes via the visitor pattern. Mirrors org.openrewrite.golang.internal.rpc.GolangSender, which extends JavaSender, which extends JavaVisitor.
GoSender embeds JavaSender to inherit J-node Visit overrides + the PreVisit hook, and adds VisitX overrides for the G-specific node types. The framework's type-switch dispatch in visitor.GoVisitor.Visit routes to the most-derived override via the Self field set by visitor.Init.
func NewGoSender ¶
func NewGoSender() *GoSender
NewGoSender creates a GoSender ready to serialize trees. Sets Self so the framework's dispatch routes to G-node and J-node overrides across the embedding chain.
func (*GoSender) Visit ¶
Visit overrides the framework dispatch to special-case ParseError — it isn't a J node, has no Prefix/Markers, and uses its own codec. All other tree types fall through to the framework's switch.
func (*GoSender) VisitCommClause ¶
func (*GoSender) VisitCompilationUnit ¶
func (*GoSender) VisitComposite ¶
func (*GoSender) VisitDeclarationBlock ¶ added in v0.0.12
func (*GoSender) VisitFallthrough ¶ added in v0.0.3
VisitFallthrough mirrors GolangSender.visitFallthrough — the node has no payload beyond the framework-handled id/prefix/markers, so this override is intentionally a no-op. Present for sender/receiver symmetry.
func (*GoSender) VisitFuncType ¶
func (*GoSender) VisitGoArrayType ¶ added in v0.0.13
func (*GoSender) VisitGoAssignmentOperation ¶ added in v0.0.6
func (*GoSender) VisitGoBinary ¶ added in v0.0.6
func (*GoSender) VisitGoMethodDeclaration ¶ added in v0.0.12
func (*GoSender) VisitGoReturn ¶ added in v0.0.11
func (*GoSender) VisitGoUnary ¶ added in v0.0.6
func (*GoSender) VisitGoVariadic ¶ added in v0.0.6
func (*GoSender) VisitIndexList ¶
func (*GoSender) VisitInterfaceType ¶
func (*GoSender) VisitKeyValue ¶
func (*GoSender) VisitMultiAssignment ¶
func (*GoSender) VisitPointerType ¶
func (*GoSender) VisitStatementExpression ¶
func (*GoSender) VisitStatementWithInit ¶ added in v0.0.13
func (*GoSender) VisitStructType ¶
func (*GoSender) VisitTypeDecl ¶
func (*GoSender) VisitTypeList ¶
func (*GoSender) VisitUnderlyingType ¶ added in v0.0.5
type JavaReceiver ¶
JavaReceiver deserializes J (shared Java-like) AST nodes via the visitor pattern. Mirrors org.openrewrite.java.internal.rpc.JavaReceiver.
JavaReceiver embeds visitor.GoVisitor; the framework's type-switch dispatch routes calls to JavaReceiver's VisitX overrides via the Self field. PreVisit handles the cross-cutting fields (id, prefix, markers) once per node, mirroring Java's JavaVisitor.preVisit.
func (*JavaReceiver) PreVisit ¶
PreVisit deserializes the cross-cutting fields of every J node: id, prefix, markers. Returns a (possibly new) instance of t with those fields populated from the queue. ParseError isn't a J node and is special-cased at the GoReceiver layer.
Each field is updated via the immutable typed wither (WithPrefix / WithMarkers, called polymorphically via reflection) so the input tree is never mutated and the visitor framework's pointer-identity change detection sees the right thing — same input pointer means nothing changed; different output pointer means something changed. Mirrors rewrite-java's `j.withPrefix(...).withMarkers(...)` chain.
func (*JavaReceiver) VisitAnnotation ¶
func (r *JavaReceiver) VisitAnnotation(ann *java.Annotation, p any) java.J
receiveAnnotation matches JavaReceiver.visitAnnotation field order: annotationType, then nullable arguments container.
func (*JavaReceiver) VisitArrayAccess ¶
func (r *JavaReceiver) VisitArrayAccess(aa *java.ArrayAccess, p any) java.J
func (*JavaReceiver) VisitArrayDimension ¶
func (r *JavaReceiver) VisitArrayDimension(ad *java.ArrayDimension, p any) java.J
func (*JavaReceiver) VisitArrayType ¶
func (*JavaReceiver) VisitAssignment ¶
func (r *JavaReceiver) VisitAssignment(a *java.Assignment, p any) java.J
func (*JavaReceiver) VisitAssignmentOperation ¶
func (r *JavaReceiver) VisitAssignmentOperation(a *java.AssignmentOperation, p any) java.J
func (*JavaReceiver) VisitBinary ¶
func (*JavaReceiver) VisitBlock ¶
func (*JavaReceiver) VisitBreak ¶
func (*JavaReceiver) VisitContinue ¶
func (*JavaReceiver) VisitControlParentheses ¶
func (r *JavaReceiver) VisitControlParentheses(cp *java.ControlParentheses, p any) java.J
func (*JavaReceiver) VisitFieldAccess ¶
func (r *JavaReceiver) VisitFieldAccess(fa *java.FieldAccess, p any) java.J
func (*JavaReceiver) VisitForControl ¶
func (r *JavaReceiver) VisitForControl(fc *java.ForControl, p any) java.J
func (*JavaReceiver) VisitForEachControl ¶
func (r *JavaReceiver) VisitForEachControl(fc *java.ForEachControl, p any) java.J
func (*JavaReceiver) VisitForEachLoop ¶
func (r *JavaReceiver) VisitForEachLoop(f *java.ForEachLoop, p any) java.J
func (*JavaReceiver) VisitForLoop ¶
func (*JavaReceiver) VisitIdentifier ¶
func (r *JavaReceiver) VisitIdentifier(id *java.Identifier, p any) java.J
func (*JavaReceiver) VisitImport ¶
func (*JavaReceiver) VisitLabel ¶
func (*JavaReceiver) VisitLiteral ¶
func (*JavaReceiver) VisitMethodDeclaration ¶
func (r *JavaReceiver) VisitMethodDeclaration(md *java.MethodDeclaration, p any) java.J
func (*JavaReceiver) VisitMethodInvocation ¶
func (r *JavaReceiver) VisitMethodInvocation(mi *java.MethodInvocation, p any) java.J
func (*JavaReceiver) VisitParameterizedType ¶
func (r *JavaReceiver) VisitParameterizedType(pt *java.ParameterizedType, p any) java.J
func (*JavaReceiver) VisitParentheses ¶
func (r *JavaReceiver) VisitParentheses(parens *java.Parentheses, p any) java.J
func (*JavaReceiver) VisitReturn ¶
func (*JavaReceiver) VisitSwitch ¶
func (*JavaReceiver) VisitTypeCast ¶
func (*JavaReceiver) VisitTypeParameter ¶ added in v0.0.5
func (r *JavaReceiver) VisitTypeParameter(tp *java.TypeParameter, p any) java.J
func (*JavaReceiver) VisitTypeParameters ¶ added in v0.0.5
func (r *JavaReceiver) VisitTypeParameters(tps *java.TypeParameters, p any) java.J
func (*JavaReceiver) VisitUnary ¶
func (*JavaReceiver) VisitVariableDeclarations ¶
func (r *JavaReceiver) VisitVariableDeclarations(vd *java.VariableDeclarations, p any) java.J
func (*JavaReceiver) VisitVariableDeclarator ¶
func (r *JavaReceiver) VisitVariableDeclarator(vd *java.VariableDeclarator, p any) java.J
type JavaSender ¶
JavaSender serializes J (shared Java-like) AST nodes via the visitor pattern. Mirrors org.openrewrite.java.internal.rpc.JavaSender.
Architecture: JavaSender embeds visitor.GoVisitor so the framework's type-switch dispatch routes calls into JavaSender's VisitX overrides. PreVisit handles the cross-cutting fields (id, prefix, markers) once per node, mirroring Java's JavaVisitor.preVisit.
Language-specific senders (GoSender) embed JavaSender and override the additional G-node Visit methods on top.
func (*JavaSender) PreVisit ¶
PreVisit serializes the cross-cutting fields of every J node: id, prefix, markers. Called by the framework before the type-specific VisitX dispatch. ParseError isn't a J node and is special-cased at the GoSender layer.
Field access goes through the polymorphic J-interface methods (GetID / GetPrefix / GetMarkers), mirroring rewrite-java's JavaVisitor.preVisit pattern.
func (*JavaSender) VisitAnnotation ¶
func (s *JavaSender) VisitAnnotation(ann *java.Annotation, p any) java.J
sendAnnotation matches JavaSender.visitAnnotation field order: annotationType, then nullable arguments container.
func (*JavaSender) VisitArrayAccess ¶
func (s *JavaSender) VisitArrayAccess(aa *java.ArrayAccess, p any) java.J
func (*JavaSender) VisitArrayDimension ¶
func (s *JavaSender) VisitArrayDimension(ad *java.ArrayDimension, p any) java.J
func (*JavaSender) VisitArrayType ¶
func (*JavaSender) VisitAssignment ¶
func (s *JavaSender) VisitAssignment(a *java.Assignment, p any) java.J
func (*JavaSender) VisitAssignmentOperation ¶
func (s *JavaSender) VisitAssignmentOperation(a *java.AssignmentOperation, p any) java.J
func (*JavaSender) VisitBinary ¶
func (*JavaSender) VisitBlock ¶
func (*JavaSender) VisitBreak ¶
func (*JavaSender) VisitContinue ¶
func (*JavaSender) VisitControlParentheses ¶
func (s *JavaSender) VisitControlParentheses(cp *java.ControlParentheses, p any) java.J
func (*JavaSender) VisitFieldAccess ¶
func (s *JavaSender) VisitFieldAccess(fa *java.FieldAccess, p any) java.J
func (*JavaSender) VisitForControl ¶
func (s *JavaSender) VisitForControl(fc *java.ForControl, p any) java.J
func (*JavaSender) VisitForEachControl ¶
func (s *JavaSender) VisitForEachControl(fc *java.ForEachControl, p any) java.J
func (*JavaSender) VisitForEachLoop ¶
func (s *JavaSender) VisitForEachLoop(f *java.ForEachLoop, p any) java.J
func (*JavaSender) VisitForLoop ¶
func (*JavaSender) VisitIdentifier ¶
func (s *JavaSender) VisitIdentifier(id *java.Identifier, p any) java.J
func (*JavaSender) VisitImport ¶
func (*JavaSender) VisitLabel ¶
func (*JavaSender) VisitLiteral ¶
func (*JavaSender) VisitMethodDeclaration ¶
func (s *JavaSender) VisitMethodDeclaration(md *java.MethodDeclaration, p any) java.J
func (*JavaSender) VisitMethodInvocation ¶
func (s *JavaSender) VisitMethodInvocation(mi *java.MethodInvocation, p any) java.J
func (*JavaSender) VisitParameterizedType ¶
func (s *JavaSender) VisitParameterizedType(pt *java.ParameterizedType, p any) java.J
func (*JavaSender) VisitParentheses ¶
func (s *JavaSender) VisitParentheses(parens *java.Parentheses, p any) java.J
func (*JavaSender) VisitReturn ¶
func (*JavaSender) VisitSwitch ¶
func (*JavaSender) VisitTypeCast ¶
func (*JavaSender) VisitTypeParameter ¶ added in v0.0.5
func (s *JavaSender) VisitTypeParameter(tp *java.TypeParameter, p any) java.J
func (*JavaSender) VisitTypeParameters ¶ added in v0.0.5
func (s *JavaSender) VisitTypeParameters(tps *java.TypeParameters, p any) java.J
func (*JavaSender) VisitUnary ¶
func (*JavaSender) VisitVariableDeclarations ¶
func (s *JavaSender) VisitVariableDeclarations(vd *java.VariableDeclarations, p any) java.J
func (*JavaSender) VisitVariableDeclarator ¶
func (s *JavaSender) VisitVariableDeclarator(vd *java.VariableDeclarator, p any) java.J
type JavaTypeReceiver ¶
type JavaTypeReceiver struct {
visitor.JavaTypeVisitor
}
JavaTypeReceiver deserializes JavaType objects from the receive queue. Field ordering MUST match JavaTypeReceiver.java exactly. Embeds JavaTypeVisitor for dispatch; override methods deserialize each type.
func NewJavaTypeReceiver ¶
func NewJavaTypeReceiver() *JavaTypeReceiver
NewJavaTypeReceiver creates a JavaTypeReceiver with virtual dispatch wired.
func (*JavaTypeReceiver) VisitAnnotation ¶
func (r *JavaTypeReceiver) VisitAnnotation(a *java.JavaTypeAnnotation, p any) java.JavaType
VisitAnnotation mirrors JavaTypeReceiver.visitAnnotation
func (*JavaTypeReceiver) VisitArray ¶
func (r *JavaTypeReceiver) VisitArray(a *java.JavaTypeArray, p any) java.JavaType
VisitArray mirrors JavaTypeReceiver.visitArray
func (*JavaTypeReceiver) VisitClass ¶
func (r *JavaTypeReceiver) VisitClass(c *java.JavaTypeClass, p any) java.JavaType
VisitClass mirrors JavaTypeReceiver.visitClass field order: flagsBitMap, kind, fullyQualifiedName, typeParameters, supertype, owningClass, annotations, interfaces, members, methods
func (*JavaTypeReceiver) VisitGenericTypeVariable ¶
func (r *JavaTypeReceiver) VisitGenericTypeVariable(g *java.JavaTypeGenericTypeVariable, p any) java.JavaType
VisitGenericTypeVariable mirrors JavaTypeReceiver.visitGenericTypeVariable
func (*JavaTypeReceiver) VisitIntersection ¶
func (r *JavaTypeReceiver) VisitIntersection(is *java.JavaTypeIntersection, p any) java.JavaType
VisitIntersection mirrors JavaTypeReceiver.visitIntersection
func (*JavaTypeReceiver) VisitMethod ¶
func (r *JavaTypeReceiver) VisitMethod(m *java.JavaTypeMethod, p any) java.JavaType
VisitMethod mirrors JavaTypeReceiver.visitMethod field order: declaringType, name, flagsBitMap, returnType, parameterNames, parameterTypes, thrownExceptions, annotations, defaultValue, declaredFormalTypeNames
func (*JavaTypeReceiver) VisitMultiCatch ¶
func (r *JavaTypeReceiver) VisitMultiCatch(mc *java.JavaTypeMultiCatch, p any) java.JavaType
VisitMultiCatch mirrors JavaTypeReceiver.visitMultiCatch
func (*JavaTypeReceiver) VisitParameterized ¶
func (r *JavaTypeReceiver) VisitParameterized(pt *java.JavaTypeParameterized, p any) java.JavaType
VisitParameterized mirrors JavaTypeReceiver.visitParameterized
func (*JavaTypeReceiver) VisitPrimitive ¶
func (r *JavaTypeReceiver) VisitPrimitive(pr *java.JavaTypePrimitive, p any) java.JavaType
VisitPrimitive mirrors JavaTypeReceiver.visitPrimitive
func (*JavaTypeReceiver) VisitShallowClass ¶ added in v0.0.3
func (r *JavaTypeReceiver) VisitShallowClass(sc *java.JavaTypeShallowClass, p any) java.JavaType
VisitShallowClass mirrors VisitClass — Java's ShallowClass extends Class and uses the same field set; the discriminator is the wire valueType.
func (*JavaTypeReceiver) VisitVariable ¶
func (r *JavaTypeReceiver) VisitVariable(v *java.JavaTypeVariable, p any) java.JavaType
VisitVariable mirrors JavaTypeReceiver.visitVariable
type JavaTypeSender ¶
type JavaTypeSender struct {
visitor.JavaTypeVisitor
}
JavaTypeSender serializes JavaType objects into the send queue. Field ordering MUST match JavaTypeSender.java exactly. Embeds JavaTypeVisitor for dispatch; override methods serialize each type.
func NewJavaTypeSender ¶
func NewJavaTypeSender() *JavaTypeSender
NewJavaTypeSender creates a JavaTypeSender with virtual dispatch wired.
func (*JavaTypeSender) VisitAnnotation ¶
func (s *JavaTypeSender) VisitAnnotation(a *java.JavaTypeAnnotation, p any) java.JavaType
VisitAnnotation matches JavaTypeSender.visitAnnotation
func (*JavaTypeSender) VisitArray ¶
func (s *JavaTypeSender) VisitArray(a *java.JavaTypeArray, p any) java.JavaType
VisitArray matches JavaTypeSender.visitArray
func (*JavaTypeSender) VisitClass ¶
func (s *JavaTypeSender) VisitClass(c *java.JavaTypeClass, p any) java.JavaType
VisitClass matches JavaTypeSender.visitClass field order exactly: flagsBitMap, kind, fullyQualifiedName, typeParameters, supertype, owningClass, annotations, interfaces, members, methods
func (*JavaTypeSender) VisitGenericTypeVariable ¶
func (s *JavaTypeSender) VisitGenericTypeVariable(g *java.JavaTypeGenericTypeVariable, p any) java.JavaType
VisitGenericTypeVariable matches JavaTypeSender.visitGenericTypeVariable
func (*JavaTypeSender) VisitIntersection ¶
func (s *JavaTypeSender) VisitIntersection(is *java.JavaTypeIntersection, p any) java.JavaType
VisitIntersection matches JavaTypeSender.visitIntersection
func (*JavaTypeSender) VisitMethod ¶
func (s *JavaTypeSender) VisitMethod(m *java.JavaTypeMethod, p any) java.JavaType
VisitMethod matches JavaTypeSender.visitMethod field order exactly: declaringType, name, flagsBitMap, returnType, parameterNames, parameterTypes, thrownExceptions, annotations, defaultValue, declaredFormalTypeNames
func (*JavaTypeSender) VisitMultiCatch ¶
func (s *JavaTypeSender) VisitMultiCatch(mc *java.JavaTypeMultiCatch, p any) java.JavaType
VisitMultiCatch matches JavaTypeSender.visitMultiCatch
func (*JavaTypeSender) VisitParameterized ¶
func (s *JavaTypeSender) VisitParameterized(pt *java.JavaTypeParameterized, p any) java.JavaType
VisitParameterized matches JavaTypeSender.visitParameterized
func (*JavaTypeSender) VisitPrimitive ¶
func (s *JavaTypeSender) VisitPrimitive(pr *java.JavaTypePrimitive, p any) java.JavaType
VisitPrimitive matches JavaTypeSender.visitPrimitive
func (*JavaTypeSender) VisitShallowClass ¶ added in v0.0.3
func (s *JavaTypeSender) VisitShallowClass(sc *java.JavaTypeShallowClass, p any) java.JavaType
VisitShallowClass walks the same field set as VisitClass — Java's ShallowClass extends Class and uses the same wire shape; only the outgoing valueType discriminator differs (handled by valueTypeMap).
func (*JavaTypeSender) VisitVariable ¶
func (s *JavaTypeSender) VisitVariable(v *java.JavaTypeVariable, p any) java.JavaType
VisitVariable matches JavaTypeSender.visitVariable
type ReceiveQueue ¶
type ReceiveQueue struct {
// contains filtered or unexported fields
}
ReceiveQueue deserializes RpcObjectData messages from the RPC channel.
func NewReceiveQueue ¶
func NewReceiveQueue(refs map[int]any, pull func() []RpcObjectData) *ReceiveQueue
NewReceiveQueue creates a new ReceiveQueue.
func (*ReceiveQueue) PeekBatch ¶
func (q *ReceiveQueue) PeekBatch() []RpcObjectData
PeekBatch returns the current batch without consuming. Useful for checking if END_OF_OBJECT is waiting without triggering a new fetch.
func (*ReceiveQueue) Receive ¶
func (q *ReceiveQueue) Receive(before any, onChange func(any) any) any
Receive reads the next value from the queue. If onChange is non-nil, it's called for ADD/CHANGE states to deserialize nested fields.
func (*ReceiveQueue) ReceiveAndGet ¶
func (q *ReceiveQueue) ReceiveAndGet(before any, mapping func(any) any) any
ReceiveAndGet reads a value and applies a mapping function for ADD/CHANGE.
func (*ReceiveQueue) ReceiveList ¶
func (q *ReceiveQueue) ReceiveList(before []any, onChange func(any) any) []any
ReceiveList reads a list from the queue with position-based tracking.
func (*ReceiveQueue) Take ¶
func (q *ReceiveQueue) Take() RpcObjectData
Take returns the next message from the queue, pulling a new batch if needed.
type Receiver ¶
Receiver deserializes a tree node from a ReceiveQueue. Mirrors the visitor.VisitorI signature so receivers slot into the framework's dispatch — same shape as rewrite-java's JavaReceiver, which extends JavaVisitor<RpcReceiveQueue>.
type Reference ¶
type Reference struct {
Value any
}
Reference wraps a value to indicate it should be ref-tracked during RPC serialization.
type RpcObjectData ¶
type RpcObjectData struct {
State State `json:"state"`
ValueType *string `json:"valueType,omitempty"`
Value any `json:"value,omitempty"`
Ref *int `json:"ref,omitempty"`
}
RpcObjectData is the wire format for RPC messages.
func ParseObjectData ¶
func ParseObjectData(m map[string]any) RpcObjectData
ParseObjectData converts a JSON-decoded map to an RpcObjectData.
func (RpcObjectData) MarshalJSON ¶
func (d RpcObjectData) MarshalJSON() ([]byte, error)
MarshalJSON implements custom JSON marshaling for RpcObjectData.
type SendQueue ¶
type SendQueue struct {
// contains filtered or unexported fields
}
SendQueue serializes objects into RpcObjectData messages for RPC transmission. It tracks refs for deduplication and maintains a "before" state for delta encoding.
func NewSendQueue ¶
func NewSendQueue(batchSize int, drain func([]RpcObjectData), refs map[uintptr]int) *SendQueue
NewSendQueue creates a new SendQueue.
func (*SendQueue) Flush ¶
func (q *SendQueue) Flush()
Flush sends the accumulated batch and clears it.
func (*SendQueue) GetAndSend ¶
GetAndSend extracts a value from parent (and before), compares them, and sends the delta.
func (*SendQueue) GetAndSendList ¶
func (q *SendQueue) GetAndSendList(parent any, getter func(any) []any, id func(any) any, onChange func(any))
GetAndSendList extracts a list from parent and sends it with position tracking.
func (*SendQueue) GetAndSendListAsRef ¶
func (q *SendQueue) GetAndSendListAsRef(parent any, getter func(any) []any, id func(any) any, onChange func(any))
GetAndSendListAsRef is like GetAndSendList but wraps items in ref tracking.
func (*SendQueue) Put ¶
func (q *SendQueue) Put(data RpcObjectData)
Put adds a message to the batch, flushing if the batch is full.