blob: fa3c3e31c0af880dd0558e60aed6431cf52d5ba2 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
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());
+ }
}
+
}
|