jdk/test/javax/management/mxbean/TigerMXBean.java
changeset 2 90ce3da70b43
child 1004 5ba8217eb504
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/jdk/test/javax/management/mxbean/TigerMXBean.java	Sat Dec 01 00:00:00 2007 +0000
@@ -0,0 +1,174 @@
+/*
+ * Copyright 2005-2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU General Public License version 2 only, as
+ * published by the Free Software Foundation.
+ *
+ * This code is distributed in the hope that it will be useful, but WITHOUT
+ * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+ * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+ * version 2 for more details (a copy is included in the LICENSE file that
+ * accompanied this code).
+ *
+ * You should have received a copy of the GNU General Public License version
+ * 2 along with this work; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
+ *
+ * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa Clara,
+ * CA 95054 USA or visit www.sun.com if you need additional information or
+ * have any questions.
+ */
+
+import java.beans.ConstructorProperties;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.SortedMap;
+import java.util.SortedSet;
+import java.util.TreeMap;
+import java.util.TreeSet;
+import javax.management.openmbean.ArrayType;
+import javax.management.openmbean.CompositeType;
+import javax.management.openmbean.OpenDataException;
+import javax.management.openmbean.OpenType;
+import javax.management.openmbean.SimpleType;
+import javax.management.openmbean.TabularType;
+
+public interface TigerMXBean {
+
+    class Point {
+        @ConstructorProperties({"x", "y"})
+        public Point(double x, double y) {
+            this.x = x;
+            this.y = y;
+        }
+
+        public boolean equals(Object o) {
+            if (!(o instanceof Point))
+                return false;
+            Point p = (Point) o;
+            return p.x == x && p.y == y;
+        }
+
+        public int hashCode() {
+            return new Double(x).hashCode() ^ new Double(y).hashCode();
+        }
+
+        public double getX() {return x;}
+        public double getY() {return y;}
+        private final double x, y;
+    }
+
+    Point Point = new Point(1.5, 2.5);
+    CompositeType PointType = MerlinMXBean.CompositeTypeMaker.make(
+        Point.class.getName(),
+        Point.class.getName(),
+        new String[] {"x", "y"},
+        new String[] {"x", "y"},
+        new OpenType[] {SimpleType.DOUBLE, SimpleType.DOUBLE});
+    Point getPoint();
+    void setPoint(Point x);
+    Point opPoint(Point x, Point y);
+
+    enum Tuiseal {AINMNEACH, GAIRMEACH, GINIDEACH, TABHARTHACH}
+    Tuiseal Enum = Tuiseal.GINIDEACH;
+    SimpleType EnumType = SimpleType.STRING;
+    Tuiseal getEnum();
+    void setEnum(Tuiseal x);
+    Tuiseal opEnum(Tuiseal x, Tuiseal y);
+
+    List<String> StringList = Arrays.asList(new String[] {"a", "b", "x"});
+    ArrayType StringListType =
+        MerlinMXBean.ArrayTypeMaker.make(1, SimpleType.STRING);
+    List<String> getStringList();
+    void setStringList(List<String> x);
+    List<String> opStringList(List<String> x, List<String> y);
+
+    Set<String> StringSet = new HashSet(StringList);
+    ArrayType StringSetType = StringListType;
+    Set<String> getStringSet();
+    void setStringSet(Set<String> x);
+    Set<String> opStringSet(Set<String> x, Set<String> y);
+
+    SortedSet<String> SortedStringSet = new TreeSet(StringList);
+    ArrayType SortedStringSetType = StringListType;
+    SortedSet<String> getSortedStringSet();
+    void setSortedStringSet(SortedSet<String> x);
+    SortedSet<String> opSortedStringSet(SortedSet<String> x,
+                                        SortedSet<String> y);
+
+    Map<String,List<String>> XMap = Collections.singletonMap("yo", StringList);
+    String XMapTypeName =
+        "java.util.Map<java.lang.String, java.util.List<java.lang.String>>";
+    CompositeType XMapRowType = MerlinMXBean.CompositeTypeMaker.make(
+        XMapTypeName, XMapTypeName,
+        new String[] {"key", "value"},
+        new String[] {"key", "value"},
+        new OpenType[] {SimpleType.STRING, StringListType});
+    TabularType XMapType =
+        TabularTypeMaker.make(XMapTypeName, XMapTypeName, XMapRowType,
+                              new String[] {"key"});
+    Map<String,List<String>> getXMap();
+    void setXMap(Map<String,List<String>> x);
+    Map<String,List<String>> opXMap(Map<String,List<String>> x,
+                                    Map<String,List<String>> y);
+
+    SortedMap<String,String> XSortedMap =
+        new TreeMap(Collections.singletonMap("foo", "bar"));
+    String XSortedMapTypeName =
+        "java.util.SortedMap<java.lang.String, java.lang.String>";
+    CompositeType XSortedMapRowType = MerlinMXBean.CompositeTypeMaker.make(
+        XSortedMapTypeName, XSortedMapTypeName,
+        new String[] {"key", "value"},
+        new String[] {"key", "value"},
+        new OpenType[] {SimpleType.STRING, SimpleType.STRING});
+    TabularType XSortedMapType =
+        TabularTypeMaker.make(XSortedMapTypeName, XSortedMapTypeName,
+                              XSortedMapRowType, new String[] {"key"});
+    SortedMap<String,String> getXSortedMap();
+    void setXSortedMap(SortedMap<String,String> x);
+    SortedMap<String,String> opXSortedMap(SortedMap<String,String> x,
+                                          SortedMap<String,String> y);
+
+    // For bug 6319960, try constructing Set and Map with non-Comparable
+
+    Set<Point> PointSet = new HashSet(Collections.singleton(Point));
+    ArrayType PointSetType =
+        MerlinMXBean.ArrayTypeMaker.make(1, PointType);
+    Set<Point> getPointSet();
+    void setPointSet(Set<Point> x);
+    Set<Point> opPointSet(Set<Point> x, Set<Point> y);
+
+    Map<Point,Point> PointMap = Collections.singletonMap(Point, Point);
+    String PointMapTypeName =
+        "java.util.Map<" + Point.class.getName() + ", " +
+        Point.class.getName() + ">";
+    CompositeType PointMapRowType = MerlinMXBean.CompositeTypeMaker.make(
+        PointMapTypeName, PointMapTypeName,
+        new String[] {"key", "value"},
+        new String[] {"key", "value"},
+        new OpenType[] {PointType, PointType});
+    TabularType PointMapType =
+        TabularTypeMaker.make(PointMapTypeName, PointMapTypeName,
+                              PointMapRowType, new String[] {"key"});
+    Map<Point,Point> getPointMap();
+    void setPointMap(Map<Point,Point> x);
+    Map<Point,Point> opPointMap(Map<Point,Point> x, Map<Point,Point> y);
+
+    static class TabularTypeMaker {
+        static TabularType make(String typeName, String description,
+                                CompositeType rowType, String[] indexNames) {
+            try {
+                return new TabularType(typeName, description, rowType,
+                                       indexNames);
+            } catch (OpenDataException e) {
+                throw new Error(e);
+            }
+        }
+    }
+}