// Copyright 2016 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package javapkg import ( "Java/java/beans" "Java/java/io" "Java/java/io/IOException" "Java/java/lang" "Java/java/lang/Character" "Java/java/lang/Integer" "Java/java/lang/Object" "Java/java/lang/Runnable" "Java/java/net" "Java/java/nio" "Java/java/util" "Java/java/util/concurrent" gopkg "Java/javapkg" xnet "Java/javax/net" ) const ( ToStringPrefix = "Go toString: " IOExceptionMessage = "GoInputStream IOException" ) type GoRunnable struct { lang.Object lang.Runnable this lang.Runnable Field string } func (r *GoRunnable) ToString(this gopkg.GoRunnable) string { return ToStringPrefix } func (r *GoRunnable) Run(this gopkg.GoRunnable) { } func (r *GoRunnable) GetThis(this gopkg.GoRunnable) lang.Runnable { return this } type GoInputStream struct { io.InputStream } func (_ *GoInputStream) Read() (int32, error) { return 0, IOException.New(IOExceptionMessage) } func NewGoInputStream() *GoInputStream { return new(GoInputStream) } type GoFuture struct { concurrent.Future } func (_ *GoFuture) Cancel(_ bool) bool { return false } func (_ *GoFuture) Get() (lang.Object, error) { return nil, nil } // Use a trailing underscore to override multiple overloaded methods. func (_ *GoFuture) Get_(_ int64, _ concurrent.TimeUnit) (lang.Object, error) { return nil, nil } func (_ *GoFuture) IsCancelled() bool { return false } func (_ *GoFuture) IsDone() bool { return false } type GoObject struct { lang.Object this lang.Object } func (o *GoObject) ToString(this gopkg.GoObject) string { o.this = this return ToStringPrefix + this.Super().ToString() } func (_ *GoObject) HashCode() int32 { return 42 } func RunRunnable(r lang.Runnable) { r.Run() } func RunnableRoundtrip(r lang.Runnable) lang.Runnable { return r } // Test constructing and returning Go instances of GoObject and GoRunnable // outside a constructor func ConstructGoRunnable() *GoRunnable { return new(GoRunnable) } func ConstructGoObject() *GoObject { return new(GoObject) } // java.beans.PropertyChangeEvent is a class a with no default constructors. type GoPCE struct { beans.PropertyChangeEvent } func NewGoPCE(_ lang.Object, _ string, _ lang.Object, _ lang.Object) *GoPCE { return new(GoPCE) } // java.util.ArrayList is a class with multiple constructors type GoArrayList struct { util.ArrayList } func NewGoArrayList() *GoArrayList { return new(GoArrayList) } func NewGoArrayListWithCap(_ int32) *GoArrayList { return new(GoArrayList) } func UnwrapGoArrayList(l gopkg.GoArrayList) { _ = l.Unwrap().(*GoArrayList) } func CallSubset(s Character.Subset) { s.ToString() } type GoSubset struct { Character.Subset } func NewGoSubset(_ string) *GoSubset { return new(GoSubset) } func NewJavaObject() lang.Object { return Object.New() } func NewJavaInteger() lang.Integer { i, _ := Integer.New(int32(42)) return i } type NoargConstructor struct { util.BitSet // An otherwise unused class with a no-arg constructor } type GoRand struct { util.Random } func (_ *GoRand) Next(this gopkg.GoRand, i int32) int32 { return this.Super().Next(i) } type I interface{} func CastInterface(intf I) lang.Runnable { var r lang.Runnable = Runnable.Cast(intf) r.Run() return r } func CastRunnable(o lang.Object) lang.Runnable { defer func() { recover() // swallow the panic }() var r lang.Runnable = Runnable.Cast(o) r.Run() return r } // Test that extending classes from Java packages // with the same last component (in this case "net") // works. func NameClashingPackages(_ net.Socket, _ xnet.SocketFactory) { } func testReferenceToUnsupportedParameters() { var ib nio.IntBuffer ib.Put(nil) }