diff options
Diffstat (limited to 'java/jdk16/files/patch-j2se-attach-BSDAttachProvider.java')
-rw-r--r-- | java/jdk16/files/patch-j2se-attach-BSDAttachProvider.java | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/java/jdk16/files/patch-j2se-attach-BSDAttachProvider.java b/java/jdk16/files/patch-j2se-attach-BSDAttachProvider.java new file mode 100644 index 000000000000..fa3c3e31c0af --- /dev/null +++ b/java/jdk16/files/patch-j2se-attach-BSDAttachProvider.java @@ -0,0 +1,44 @@ +$FreeBSD$ + +--- ../../j2se/src/solaris/classes/sun/tools/attach/BSDAttachProvider.java 10 May 2007 05:38:51 -0000 1.1 ++++ ../../j2se/src/solaris/classes/sun/tools/attach/BSDAttachProvider.java 2 Feb 2009 00:27:30 -0000 +@@ -14,7 +14,7 @@ + import java.io.IOException; + + /* +- * An AttachProvider implementation for Linux that uses a UNIX domain ++ * An AttachProvider implementation for BSD that uses a UNIX domain + * socket. + */ + public class BSDAttachProvider extends HotSpotAttachProvider { +@@ -36,12 +36,28 @@ + public VirtualMachine attachVirtualMachine(String vmid) + throws AttachNotSupportedException, IOException + { +- throw new AttachNotSupportedException("Attach not yet supported on BSD"); ++ if (isNotAttachable(vmid)) { ++ throw new AttachNotSupportedException("can only attach to Java SE 6.0 or newer"); ++ } ++ return new BSDVirtualMachine(this, vmid); + } + + public VirtualMachine attachVirtualMachine(VirtualMachineDescriptor vmd) + throws AttachNotSupportedException, IOException + { +- throw new AttachNotSupportedException("Attach not yet supported on BSD"); ++ if (vmd.provider() != this) { ++ throw new AttachNotSupportedException("provider mismatch"); ++ } ++ // To avoid re-checking if the VM if attachable, we check if the descriptor ++ // is for a hotspot VM - these descriptors are created by the listVirtualMachines ++ // implementation which only returns a list of attachable VMs. ++ if (vmd instanceof HotSpotVirtualMachineDescriptor) { ++ assert ((HotSpotVirtualMachineDescriptor)vmd).isAttachable(); ++ checkAttachPermission(); ++ return new BSDVirtualMachine(this, vmd.id()); ++ } else { ++ return attachVirtualMachine(vmd.id()); ++ } + } ++ + } |