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 tree.Markers, q *SendQueue)
- type GoReceiver
- func (r *GoReceiver) Visit(t tree.Tree, p any) tree.Tree
- func (r *GoReceiver) VisitChannel(ch *tree.Channel, p any) tree.J
- func (r *GoReceiver) VisitCommClause(cc *tree.CommClause, p any) tree.J
- func (r *GoReceiver) VisitCompilationUnit(cu *tree.CompilationUnit, p any) tree.J
- func (r *GoReceiver) VisitComposite(comp *tree.Composite, p any) tree.J
- func (r *GoReceiver) VisitDefer(d *tree.Defer, p any) tree.J
- func (r *GoReceiver) VisitFuncType(ft *tree.FuncType, p any) tree.J
- func (r *GoReceiver) VisitGoStmt(gs *tree.GoStmt, p any) tree.J
- func (r *GoReceiver) VisitGoto(g *tree.Goto, p any) tree.J
- func (r *GoReceiver) VisitIndexList(il *tree.IndexList, p any) tree.J
- func (r *GoReceiver) VisitInterfaceType(it *tree.InterfaceType, p any) tree.J
- func (r *GoReceiver) VisitKeyValue(kv *tree.KeyValue, p any) tree.J
- func (r *GoReceiver) VisitMapType(mt *tree.MapType, p any) tree.J
- func (r *GoReceiver) VisitMultiAssignment(ma *tree.MultiAssignment, p any) tree.J
- func (r *GoReceiver) VisitPointerType(pt *tree.PointerType, p any) tree.J
- func (r *GoReceiver) VisitSend(sn *tree.Send, p any) tree.J
- func (r *GoReceiver) VisitSlice(sl *tree.Slice, p any) tree.J
- func (r *GoReceiver) VisitStatementExpression(se *tree.StatementExpression, p any) tree.J
- func (r *GoReceiver) VisitStructType(st *tree.StructType, p any) tree.J
- func (r *GoReceiver) VisitTypeDecl(td *tree.TypeDecl, p any) tree.J
- func (r *GoReceiver) VisitTypeList(tl *tree.TypeList, p any) tree.J
- type GoSender
- func (s *GoSender) Visit(t tree.Tree, p any) tree.Tree
- func (s *GoSender) VisitChannel(ch *tree.Channel, p any) tree.J
- func (s *GoSender) VisitCommClause(cc *tree.CommClause, p any) tree.J
- func (s *GoSender) VisitCompilationUnit(cu *tree.CompilationUnit, p any) tree.J
- func (s *GoSender) VisitComposite(c *tree.Composite, p any) tree.J
- func (s *GoSender) VisitDefer(d *tree.Defer, p any) tree.J
- func (s *GoSender) VisitFuncType(ft *tree.FuncType, p any) tree.J
- func (s *GoSender) VisitGoStmt(gs *tree.GoStmt, p any) tree.J
- func (s *GoSender) VisitGoto(g *tree.Goto, p any) tree.J
- func (s *GoSender) VisitIndexList(il *tree.IndexList, p any) tree.J
- func (s *GoSender) VisitInterfaceType(it *tree.InterfaceType, p any) tree.J
- func (s *GoSender) VisitKeyValue(kv *tree.KeyValue, p any) tree.J
- func (s *GoSender) VisitMapType(mt *tree.MapType, p any) tree.J
- func (s *GoSender) VisitMultiAssignment(ma *tree.MultiAssignment, p any) tree.J
- func (s *GoSender) VisitPointerType(pt *tree.PointerType, p any) tree.J
- func (s *GoSender) VisitSend(sn *tree.Send, p any) tree.J
- func (s *GoSender) VisitSlice(sl *tree.Slice, p any) tree.J
- func (s *GoSender) VisitStatementExpression(se *tree.StatementExpression, p any) tree.J
- func (s *GoSender) VisitStructType(st *tree.StructType, p any) tree.J
- func (s *GoSender) VisitTypeDecl(td *tree.TypeDecl, p any) tree.J
- func (s *GoSender) VisitTypeList(tl *tree.TypeList, p any) tree.J
- type JavaReceiver
- func (r *JavaReceiver) PreVisit(t tree.Tree, p any) tree.Tree
- func (r *JavaReceiver) VisitAnnotation(ann *tree.Annotation, p any) tree.J
- func (r *JavaReceiver) VisitArrayAccess(aa *tree.ArrayAccess, p any) tree.J
- func (r *JavaReceiver) VisitArrayDimension(ad *tree.ArrayDimension, p any) tree.J
- func (r *JavaReceiver) VisitArrayType(at *tree.ArrayType, p any) tree.J
- func (r *JavaReceiver) VisitAssignment(a *tree.Assignment, p any) tree.J
- func (r *JavaReceiver) VisitAssignmentOperation(a *tree.AssignmentOperation, p any) tree.J
- func (r *JavaReceiver) VisitBinary(b *tree.Binary, p any) tree.J
- func (r *JavaReceiver) VisitBlock(b *tree.Block, p any) tree.J
- func (r *JavaReceiver) VisitBreak(b *tree.Break, p any) tree.J
- func (r *JavaReceiver) VisitCase(cs *tree.Case, p any) tree.J
- func (r *JavaReceiver) VisitContinue(cont *tree.Continue, p any) tree.J
- func (r *JavaReceiver) VisitControlParentheses(cp *tree.ControlParentheses, p any) tree.J
- func (r *JavaReceiver) VisitElse(el *tree.Else, p any) tree.J
- func (r *JavaReceiver) VisitFieldAccess(fa *tree.FieldAccess, p any) tree.J
- func (r *JavaReceiver) VisitForControl(fc *tree.ForControl, p any) tree.J
- func (r *JavaReceiver) VisitForEachControl(fc *tree.ForEachControl, p any) tree.J
- func (r *JavaReceiver) VisitForEachLoop(f *tree.ForEachLoop, p any) tree.J
- func (r *JavaReceiver) VisitForLoop(f *tree.ForLoop, p any) tree.J
- func (r *JavaReceiver) VisitIdentifier(id *tree.Identifier, p any) tree.J
- func (r *JavaReceiver) VisitIf(i *tree.If, p any) tree.J
- func (r *JavaReceiver) VisitImport(imp *tree.Import, p any) tree.J
- func (r *JavaReceiver) VisitLabel(l *tree.Label, p any) tree.J
- func (r *JavaReceiver) VisitLiteral(lit *tree.Literal, p any) tree.J
- func (r *JavaReceiver) VisitMethodDeclaration(md *tree.MethodDeclaration, p any) tree.J
- func (r *JavaReceiver) VisitMethodInvocation(mi *tree.MethodInvocation, p any) tree.J
- func (r *JavaReceiver) VisitParameterizedType(pt *tree.ParameterizedType, p any) tree.J
- func (r *JavaReceiver) VisitParentheses(parens *tree.Parentheses, p any) tree.J
- func (r *JavaReceiver) VisitReturn(ret *tree.Return, p any) tree.J
- func (r *JavaReceiver) VisitSwitch(sw *tree.Switch, p any) tree.J
- func (r *JavaReceiver) VisitTypeCast(tc *tree.TypeCast, p any) tree.J
- func (r *JavaReceiver) VisitUnary(u *tree.Unary, p any) tree.J
- func (r *JavaReceiver) VisitVariableDeclarations(vd *tree.VariableDeclarations, p any) tree.J
- func (r *JavaReceiver) VisitVariableDeclarator(vd *tree.VariableDeclarator, p any) tree.J
- type JavaSender
- func (s *JavaSender) PreVisit(t tree.Tree, p any) tree.Tree
- func (s *JavaSender) VisitAnnotation(ann *tree.Annotation, p any) tree.J
- func (s *JavaSender) VisitArrayAccess(aa *tree.ArrayAccess, p any) tree.J
- func (s *JavaSender) VisitArrayDimension(ad *tree.ArrayDimension, p any) tree.J
- func (s *JavaSender) VisitArrayType(at *tree.ArrayType, p any) tree.J
- func (s *JavaSender) VisitAssignment(a *tree.Assignment, p any) tree.J
- func (s *JavaSender) VisitAssignmentOperation(a *tree.AssignmentOperation, p any) tree.J
- func (s *JavaSender) VisitBinary(b *tree.Binary, p any) tree.J
- func (s *JavaSender) VisitBlock(b *tree.Block, p any) tree.J
- func (s *JavaSender) VisitBreak(b *tree.Break, p any) tree.J
- func (s *JavaSender) VisitCase(c *tree.Case, p any) tree.J
- func (s *JavaSender) VisitContinue(c *tree.Continue, p any) tree.J
- func (s *JavaSender) VisitControlParentheses(cp *tree.ControlParentheses, p any) tree.J
- func (s *JavaSender) VisitElse(el *tree.Else, p any) tree.J
- func (s *JavaSender) VisitFieldAccess(fa *tree.FieldAccess, p any) tree.J
- func (s *JavaSender) VisitForControl(fc *tree.ForControl, p any) tree.J
- func (s *JavaSender) VisitForEachControl(fc *tree.ForEachControl, p any) tree.J
- func (s *JavaSender) VisitForEachLoop(f *tree.ForEachLoop, p any) tree.J
- func (s *JavaSender) VisitForLoop(f *tree.ForLoop, p any) tree.J
- func (s *JavaSender) VisitIdentifier(id *tree.Identifier, p any) tree.J
- func (s *JavaSender) VisitIf(i *tree.If, p any) tree.J
- func (s *JavaSender) VisitImport(imp *tree.Import, p any) tree.J
- func (s *JavaSender) VisitLabel(l *tree.Label, p any) tree.J
- func (s *JavaSender) VisitLiteral(lit *tree.Literal, p any) tree.J
- func (s *JavaSender) VisitMethodDeclaration(md *tree.MethodDeclaration, p any) tree.J
- func (s *JavaSender) VisitMethodInvocation(mi *tree.MethodInvocation, p any) tree.J
- func (s *JavaSender) VisitParameterizedType(pt *tree.ParameterizedType, p any) tree.J
- func (s *JavaSender) VisitParentheses(parens *tree.Parentheses, p any) tree.J
- func (s *JavaSender) VisitReturn(r *tree.Return, p any) tree.J
- func (s *JavaSender) VisitSwitch(sw *tree.Switch, p any) tree.J
- func (s *JavaSender) VisitTypeCast(tc *tree.TypeCast, p any) tree.J
- func (s *JavaSender) VisitUnary(u *tree.Unary, p any) tree.J
- func (s *JavaSender) VisitVariableDeclarations(vd *tree.VariableDeclarations, p any) tree.J
- func (s *JavaSender) VisitVariableDeclarator(vd *tree.VariableDeclarator, p any) tree.J
- type JavaTypeReceiver
- func (r *JavaTypeReceiver) VisitAnnotation(a *tree.JavaTypeAnnotation, p any) tree.JavaType
- func (r *JavaTypeReceiver) VisitArray(a *tree.JavaTypeArray, p any) tree.JavaType
- func (r *JavaTypeReceiver) VisitClass(c *tree.JavaTypeClass, p any) tree.JavaType
- func (r *JavaTypeReceiver) VisitGenericTypeVariable(g *tree.JavaTypeGenericTypeVariable, p any) tree.JavaType
- func (r *JavaTypeReceiver) VisitIntersection(is *tree.JavaTypeIntersection, p any) tree.JavaType
- func (r *JavaTypeReceiver) VisitMethod(m *tree.JavaTypeMethod, p any) tree.JavaType
- func (r *JavaTypeReceiver) VisitMultiCatch(mc *tree.JavaTypeMultiCatch, p any) tree.JavaType
- func (r *JavaTypeReceiver) VisitParameterized(pt *tree.JavaTypeParameterized, p any) tree.JavaType
- func (r *JavaTypeReceiver) VisitPrimitive(pr *tree.JavaTypePrimitive, p any) tree.JavaType
- func (r *JavaTypeReceiver) VisitVariable(v *tree.JavaTypeVariable, p any) tree.JavaType
- type JavaTypeSender
- func (s *JavaTypeSender) VisitAnnotation(a *tree.JavaTypeAnnotation, p any) tree.JavaType
- func (s *JavaTypeSender) VisitArray(a *tree.JavaTypeArray, p any) tree.JavaType
- func (s *JavaTypeSender) VisitClass(c *tree.JavaTypeClass, p any) tree.JavaType
- func (s *JavaTypeSender) VisitGenericTypeVariable(g *tree.JavaTypeGenericTypeVariable, p any) tree.JavaType
- func (s *JavaTypeSender) VisitIntersection(is *tree.JavaTypeIntersection, p any) tree.JavaType
- func (s *JavaTypeSender) VisitMethod(m *tree.JavaTypeMethod, p any) tree.JavaType
- func (s *JavaTypeSender) VisitMultiCatch(mc *tree.JavaTypeMultiCatch, p any) tree.JavaType
- func (s *JavaTypeSender) VisitParameterized(pt *tree.JavaTypeParameterized, p any) tree.JavaType
- func (s *JavaTypeSender) VisitPrimitive(pr *tree.JavaTypePrimitive, p any) tree.JavaType
- func (s *JavaTypeSender) VisitVariable(v *tree.JavaTypeVariable, p any) tree.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 ( ContainerStatement = "statement" ContainerExpression = "expression" ContainerImport = "import" )
receiveContainer deserializes a Container. ContainerType hints for empty container creation
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 *tree.CommClause, p any) tree.J
func (*GoReceiver) VisitCompilationUnit ¶
func (r *GoReceiver) VisitCompilationUnit(cu *tree.CompilationUnit, p any) tree.J
func (*GoReceiver) VisitComposite ¶
func (*GoReceiver) VisitDefer ¶
func (*GoReceiver) VisitFuncType ¶
func (*GoReceiver) VisitGoStmt ¶
func (*GoReceiver) VisitIndexList ¶
func (*GoReceiver) VisitInterfaceType ¶
func (r *GoReceiver) VisitInterfaceType(it *tree.InterfaceType, p any) tree.J
func (*GoReceiver) VisitKeyValue ¶
func (*GoReceiver) VisitMapType ¶
func (*GoReceiver) VisitMultiAssignment ¶
func (r *GoReceiver) VisitMultiAssignment(ma *tree.MultiAssignment, p any) tree.J
func (*GoReceiver) VisitPointerType ¶
func (r *GoReceiver) VisitPointerType(pt *tree.PointerType, p any) tree.J
func (*GoReceiver) VisitSlice ¶
func (*GoReceiver) VisitStatementExpression ¶
func (r *GoReceiver) VisitStatementExpression(se *tree.StatementExpression, p any) tree.J
func (*GoReceiver) VisitStructType ¶
func (r *GoReceiver) VisitStructType(st *tree.StructType, p any) tree.J
func (*GoReceiver) VisitTypeDecl ¶
func (*GoReceiver) VisitTypeList ¶
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) VisitIndexList ¶
func (*GoSender) VisitInterfaceType ¶
func (*GoSender) VisitMultiAssignment ¶
func (*GoSender) VisitPointerType ¶
func (*GoSender) VisitStatementExpression ¶
func (*GoSender) VisitStructType ¶
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 *tree.Annotation, p any) tree.J
receiveAnnotation matches JavaReceiver.visitAnnotation field order: annotationType, then nullable arguments container.
func (*JavaReceiver) VisitArrayAccess ¶
func (r *JavaReceiver) VisitArrayAccess(aa *tree.ArrayAccess, p any) tree.J
func (*JavaReceiver) VisitArrayDimension ¶
func (r *JavaReceiver) VisitArrayDimension(ad *tree.ArrayDimension, p any) tree.J
func (*JavaReceiver) VisitArrayType ¶
func (*JavaReceiver) VisitAssignment ¶
func (r *JavaReceiver) VisitAssignment(a *tree.Assignment, p any) tree.J
func (*JavaReceiver) VisitAssignmentOperation ¶
func (r *JavaReceiver) VisitAssignmentOperation(a *tree.AssignmentOperation, p any) tree.J
func (*JavaReceiver) VisitBinary ¶
func (*JavaReceiver) VisitBlock ¶
func (*JavaReceiver) VisitBreak ¶
func (*JavaReceiver) VisitContinue ¶
func (*JavaReceiver) VisitControlParentheses ¶
func (r *JavaReceiver) VisitControlParentheses(cp *tree.ControlParentheses, p any) tree.J
func (*JavaReceiver) VisitFieldAccess ¶
func (r *JavaReceiver) VisitFieldAccess(fa *tree.FieldAccess, p any) tree.J
func (*JavaReceiver) VisitForControl ¶
func (r *JavaReceiver) VisitForControl(fc *tree.ForControl, p any) tree.J
func (*JavaReceiver) VisitForEachControl ¶
func (r *JavaReceiver) VisitForEachControl(fc *tree.ForEachControl, p any) tree.J
func (*JavaReceiver) VisitForEachLoop ¶
func (r *JavaReceiver) VisitForEachLoop(f *tree.ForEachLoop, p any) tree.J
func (*JavaReceiver) VisitForLoop ¶
func (*JavaReceiver) VisitIdentifier ¶
func (r *JavaReceiver) VisitIdentifier(id *tree.Identifier, p any) tree.J
func (*JavaReceiver) VisitImport ¶
func (*JavaReceiver) VisitLabel ¶
func (*JavaReceiver) VisitLiteral ¶
func (*JavaReceiver) VisitMethodDeclaration ¶
func (r *JavaReceiver) VisitMethodDeclaration(md *tree.MethodDeclaration, p any) tree.J
func (*JavaReceiver) VisitMethodInvocation ¶
func (r *JavaReceiver) VisitMethodInvocation(mi *tree.MethodInvocation, p any) tree.J
func (*JavaReceiver) VisitParameterizedType ¶
func (r *JavaReceiver) VisitParameterizedType(pt *tree.ParameterizedType, p any) tree.J
func (*JavaReceiver) VisitParentheses ¶
func (r *JavaReceiver) VisitParentheses(parens *tree.Parentheses, p any) tree.J
func (*JavaReceiver) VisitReturn ¶
func (*JavaReceiver) VisitSwitch ¶
func (*JavaReceiver) VisitTypeCast ¶
func (*JavaReceiver) VisitUnary ¶
func (*JavaReceiver) VisitVariableDeclarations ¶
func (r *JavaReceiver) VisitVariableDeclarations(vd *tree.VariableDeclarations, p any) tree.J
func (*JavaReceiver) VisitVariableDeclarator ¶
func (r *JavaReceiver) VisitVariableDeclarator(vd *tree.VariableDeclarator, p any) tree.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 *tree.Annotation, p any) tree.J
sendAnnotation matches JavaSender.visitAnnotation field order: annotationType, then nullable arguments container.
func (*JavaSender) VisitArrayAccess ¶
func (s *JavaSender) VisitArrayAccess(aa *tree.ArrayAccess, p any) tree.J
func (*JavaSender) VisitArrayDimension ¶
func (s *JavaSender) VisitArrayDimension(ad *tree.ArrayDimension, p any) tree.J
func (*JavaSender) VisitArrayType ¶
func (*JavaSender) VisitAssignment ¶
func (s *JavaSender) VisitAssignment(a *tree.Assignment, p any) tree.J
func (*JavaSender) VisitAssignmentOperation ¶
func (s *JavaSender) VisitAssignmentOperation(a *tree.AssignmentOperation, p any) tree.J
func (*JavaSender) VisitBinary ¶
func (*JavaSender) VisitBlock ¶
func (*JavaSender) VisitBreak ¶
func (*JavaSender) VisitContinue ¶
func (*JavaSender) VisitControlParentheses ¶
func (s *JavaSender) VisitControlParentheses(cp *tree.ControlParentheses, p any) tree.J
func (*JavaSender) VisitFieldAccess ¶
func (s *JavaSender) VisitFieldAccess(fa *tree.FieldAccess, p any) tree.J
func (*JavaSender) VisitForControl ¶
func (s *JavaSender) VisitForControl(fc *tree.ForControl, p any) tree.J
func (*JavaSender) VisitForEachControl ¶
func (s *JavaSender) VisitForEachControl(fc *tree.ForEachControl, p any) tree.J
func (*JavaSender) VisitForEachLoop ¶
func (s *JavaSender) VisitForEachLoop(f *tree.ForEachLoop, p any) tree.J
func (*JavaSender) VisitForLoop ¶
func (*JavaSender) VisitIdentifier ¶
func (s *JavaSender) VisitIdentifier(id *tree.Identifier, p any) tree.J
func (*JavaSender) VisitImport ¶
func (*JavaSender) VisitLabel ¶
func (*JavaSender) VisitLiteral ¶
func (*JavaSender) VisitMethodDeclaration ¶
func (s *JavaSender) VisitMethodDeclaration(md *tree.MethodDeclaration, p any) tree.J
func (*JavaSender) VisitMethodInvocation ¶
func (s *JavaSender) VisitMethodInvocation(mi *tree.MethodInvocation, p any) tree.J
func (*JavaSender) VisitParameterizedType ¶
func (s *JavaSender) VisitParameterizedType(pt *tree.ParameterizedType, p any) tree.J
func (*JavaSender) VisitParentheses ¶
func (s *JavaSender) VisitParentheses(parens *tree.Parentheses, p any) tree.J
func (*JavaSender) VisitReturn ¶
func (*JavaSender) VisitSwitch ¶
func (*JavaSender) VisitTypeCast ¶
func (*JavaSender) VisitUnary ¶
func (*JavaSender) VisitVariableDeclarations ¶
func (s *JavaSender) VisitVariableDeclarations(vd *tree.VariableDeclarations, p any) tree.J
func (*JavaSender) VisitVariableDeclarator ¶
func (s *JavaSender) VisitVariableDeclarator(vd *tree.VariableDeclarator, p any) tree.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 *tree.JavaTypeAnnotation, p any) tree.JavaType
VisitAnnotation mirrors JavaTypeReceiver.visitAnnotation
func (*JavaTypeReceiver) VisitArray ¶
func (r *JavaTypeReceiver) VisitArray(a *tree.JavaTypeArray, p any) tree.JavaType
VisitArray mirrors JavaTypeReceiver.visitArray
func (*JavaTypeReceiver) VisitClass ¶
func (r *JavaTypeReceiver) VisitClass(c *tree.JavaTypeClass, p any) tree.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 *tree.JavaTypeGenericTypeVariable, p any) tree.JavaType
VisitGenericTypeVariable mirrors JavaTypeReceiver.visitGenericTypeVariable
func (*JavaTypeReceiver) VisitIntersection ¶
func (r *JavaTypeReceiver) VisitIntersection(is *tree.JavaTypeIntersection, p any) tree.JavaType
VisitIntersection mirrors JavaTypeReceiver.visitIntersection
func (*JavaTypeReceiver) VisitMethod ¶
func (r *JavaTypeReceiver) VisitMethod(m *tree.JavaTypeMethod, p any) tree.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 *tree.JavaTypeMultiCatch, p any) tree.JavaType
VisitMultiCatch mirrors JavaTypeReceiver.visitMultiCatch
func (*JavaTypeReceiver) VisitParameterized ¶
func (r *JavaTypeReceiver) VisitParameterized(pt *tree.JavaTypeParameterized, p any) tree.JavaType
VisitParameterized mirrors JavaTypeReceiver.visitParameterized
func (*JavaTypeReceiver) VisitPrimitive ¶
func (r *JavaTypeReceiver) VisitPrimitive(pr *tree.JavaTypePrimitive, p any) tree.JavaType
VisitPrimitive mirrors JavaTypeReceiver.visitPrimitive
func (*JavaTypeReceiver) VisitVariable ¶
func (r *JavaTypeReceiver) VisitVariable(v *tree.JavaTypeVariable, p any) tree.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 *tree.JavaTypeAnnotation, p any) tree.JavaType
VisitAnnotation matches JavaTypeSender.visitAnnotation
func (*JavaTypeSender) VisitArray ¶
func (s *JavaTypeSender) VisitArray(a *tree.JavaTypeArray, p any) tree.JavaType
VisitArray matches JavaTypeSender.visitArray
func (*JavaTypeSender) VisitClass ¶
func (s *JavaTypeSender) VisitClass(c *tree.JavaTypeClass, p any) tree.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 *tree.JavaTypeGenericTypeVariable, p any) tree.JavaType
VisitGenericTypeVariable matches JavaTypeSender.visitGenericTypeVariable
func (*JavaTypeSender) VisitIntersection ¶
func (s *JavaTypeSender) VisitIntersection(is *tree.JavaTypeIntersection, p any) tree.JavaType
VisitIntersection matches JavaTypeSender.visitIntersection
func (*JavaTypeSender) VisitMethod ¶
func (s *JavaTypeSender) VisitMethod(m *tree.JavaTypeMethod, p any) tree.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 *tree.JavaTypeMultiCatch, p any) tree.JavaType
VisitMultiCatch matches JavaTypeSender.visitMultiCatch
func (*JavaTypeSender) VisitParameterized ¶
func (s *JavaTypeSender) VisitParameterized(pt *tree.JavaTypeParameterized, p any) tree.JavaType
VisitParameterized matches JavaTypeSender.visitParameterized
func (*JavaTypeSender) VisitPrimitive ¶
func (s *JavaTypeSender) VisitPrimitive(pr *tree.JavaTypePrimitive, p any) tree.JavaType
VisitPrimitive matches JavaTypeSender.visitPrimitive
func (*JavaTypeSender) VisitVariable ¶
func (s *JavaTypeSender) VisitVariable(v *tree.JavaTypeVariable, p any) tree.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.