0N/A/*
2362N/A * Copyright (c) 2005, Oracle and/or its affiliates. All rights reserved.
0N/A * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
0N/A *
0N/A * This code is free software; you can redistribute it and/or modify it
0N/A * under the terms of the GNU General Public License version 2 only, as
0N/A * published by the Free Software Foundation.
0N/A *
0N/A * This code is distributed in the hope that it will be useful, but WITHOUT
0N/A * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
0N/A * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
0N/A * version 2 for more details (a copy is included in the LICENSE file that
0N/A * accompanied this code).
0N/A *
0N/A * You should have received a copy of the GNU General Public License version
0N/A * 2 along with this work; if not, write to the Free Software Foundation,
0N/A * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
0N/A *
2362N/A * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
2362N/A * or visit www.oracle.com if you need additional information or have any
2362N/A * questions.
0N/A */
0N/A
0N/A/*
0N/A * @test
0N/A * @bug 4716807
0N/A * @summary Test the ObjectName.apply(ObjectName) method
0N/A * with wildcards in the key properties value part.
0N/A * @author Luis-Miguel Alventosa
0N/A * @run clean ApplyWildcardTest
0N/A * @run build ApplyWildcardTest
0N/A * @run main ApplyWildcardTest
0N/A */
0N/A
0N/Aimport javax.management.ObjectName;
0N/A
0N/Apublic class ApplyWildcardTest {
0N/A
0N/A private static final String positiveTests[][] = {
0N/A { "d:k=*", "d:k=\"\"" },
0N/A
0N/A { "d:k=*", "d:k=" },
0N/A { "d:k=*", "d:k=v" },
0N/A { "d:k=a*b", "d:k=axyzb" },
0N/A { "d:k=a*b,*", "d:k=axyzb,k2=v2" },
0N/A { "d:*,k=a*b", "d:k=axyzb,k2=v2" },
0N/A { "d:k=?", "d:k=v" },
0N/A { "d:k=a?b", "d:k=axb" },
0N/A { "d:k=a?b,*", "d:k=axb,k2=v2" },
0N/A { "d:*,k=a?b", "d:k=axb,k2=v2" },
0N/A { "d:k=?*", "d:k=axyzb" },
0N/A { "d:k=a?bc*d", "d:k=axbcyzd" },
0N/A { "d:k=a?bc*d,*", "d:k=axbcyzd,k2=v2" },
0N/A { "d:*,k=a?bc*d", "d:k=axbcyzd,k2=v2" },
0N/A { "d:k1=?,k2=*", "d:k1=a,k2=ab" },
0N/A { "d:k1=a?b,k2=c*d", "d:k1=axb,k2=cyzd" },
0N/A { "d:k1=a?b,k2=c*d,*", "d:k1=axb,k2=cyzd,k3=v3" },
0N/A { "d:*,k1=a?b,k2=c*d", "d:k1=axb,k2=cyzd,k3=v3" },
0N/A
0N/A { "d:k=\"*\"", "d:k=\"\"" },
0N/A { "d:k=\"*\"", "d:k=\"v\"" },
0N/A { "d:k=\"a*b\"", "d:k=\"axyzb\"" },
0N/A { "d:k=\"a*b\",*", "d:k=\"axyzb\",k2=\"v2\"" },
0N/A { "d:*,k=\"a*b\"", "d:k=\"axyzb\",k2=\"v2\"" },
0N/A { "d:k=\"?\"", "d:k=\"v\"" },
0N/A { "d:k=\"a?b\"", "d:k=\"axb\"" },
0N/A { "d:k=\"a?b\",*", "d:k=\"axb\",k2=\"v2\"" },
0N/A { "d:*,k=\"a?b\"", "d:k=\"axb\",k2=\"v2\"" },
0N/A { "d:k=\"?*\"", "d:k=\"axyzb\"" },
0N/A { "d:k=\"a?bc*d\"", "d:k=\"axbcyzd\"" },
0N/A { "d:k=\"a?bc*d\",*", "d:k=\"axbcyzd\",k2=\"v2\"" },
0N/A { "d:*,k=\"a?bc*d\"", "d:k=\"axbcyzd\",k2=\"v2\"" },
0N/A { "d:k1=\"?\",k2=\"*\"", "d:k1=\"a\",k2=\"ab\"" },
0N/A { "d:k1=\"a?b\",k2=\"c*d\"", "d:k1=\"axb\",k2=\"cyzd\"" },
0N/A { "d:k1=\"a?b\",k2=\"c*d\",*", "d:k1=\"axb\",k2=\"cyzd\",k3=\"v3\"" },
0N/A { "d:*,k1=\"a?b\",k2=\"c*d\"", "d:k1=\"axb\",k2=\"cyzd\",k3=\"v3\"" },
0N/A };
0N/A
0N/A private static final String negativeTests[][] = {
0N/A { "d:k=\"*\"", "d:k=" },
0N/A
0N/A { "d:k=*", "d:k=,k2=" },
0N/A { "d:k=*", "d:k=v,k2=v2" },
0N/A { "d:k=a*b", "d:k=axyzbc" },
0N/A { "d:k=a*b,*", "d:k=axyzbc,k2=v2" },
0N/A { "d:*,k=a*b", "d:k=axyzbc,k2=v2" },
0N/A { "d:k=?", "d:k=xyz" },
0N/A { "d:k=a?b", "d:k=ab" },
0N/A { "d:k=a?b,*", "d:k=ab,k2=v2" },
0N/A { "d:*,k=a?b", "d:k=ab,k2=v2" },
0N/A { "d:k=?*", "d:k=axyzb,k2=v2" },
0N/A { "d:k=a?bc*d", "d:k=abcd" },
0N/A { "d:k=a?bc*d,*", "d:k=abcd,k2=v2" },
0N/A { "d:*,k=a?bc*d", "d:k=abcd,k2=v2" },
0N/A { "d:k1=?,k2=*", "d:k1=ab,k2=ab" },
0N/A { "d:k1=a?b,k2=c*d", "d:k1=ab,k2=cd" },
0N/A { "d:k1=a?b,k2=c*d,*", "d:k1=ab,k2=cd,k3=v3" },
0N/A { "d:*,k1=a?b,k2=c*d", "d:k1=ab,k2=cd,k3=v3" },
0N/A
0N/A { "d:k=\"*\"", "d:k=\"\",k2=\"\"" },
0N/A { "d:k=\"*\"", "d:k=\"v\",k2=\"v2\"" },
0N/A { "d:k=\"a*b\"", "d:k=\"axyzbc\"" },
0N/A { "d:k=\"a*b\",*", "d:k=\"axyzbc\",k2=\"v2\"" },
0N/A { "d:*,k=\"a*b\"", "d:k=\"axyzbc\",k2=\"v2\"" },
0N/A { "d:k=\"?\"", "d:k=\"xyz\"" },
0N/A { "d:k=\"a?b\"", "d:k=\"ab\"" },
0N/A { "d:k=\"a?b\",*", "d:k=\"ab\",k2=\"v2\"" },
0N/A { "d:*,k=\"a?b\"", "d:k=\"ab\",k2=\"v2\"" },
0N/A { "d:k=\"?*\"", "d:k=\"axyzb\",k2=\"v2\"" },
0N/A { "d:k=\"a?bc*d\"", "d:k=\"abcd\"" },
0N/A { "d:k=\"a?bc*d\",*", "d:k=\"abcd\",k2=\"v2\"" },
0N/A { "d:*,k=\"a?bc*d\"", "d:k=\"abcd\",k2=\"v2\"" },
0N/A { "d:k1=\"?\",k2=\"*\"", "d:k1=\"ab\",k2=\"ab\"" },
0N/A { "d:k1=\"a?b\",k2=\"c*d\"", "d:k1=\"ab\",k2=\"cd\"" },
0N/A { "d:k1=\"a?b\",k2=\"c*d\",*", "d:k1=\"ab\",k2=\"cd\",k3=\"v3\"" },
0N/A { "d:*,k1=\"a?b\",k2=\"c*d\"", "d:k1=\"ab\",k2=\"cd\",k3=\"v3\"" },
0N/A };
0N/A
0N/A private static int runPositiveTests() {
0N/A int error = 0;
0N/A for (int i = 0; i < positiveTests.length; i++) {
0N/A System.out.println("----------------------------------------------");
0N/A try {
0N/A ObjectName on1 = ObjectName.getInstance(positiveTests[i][0]);
0N/A ObjectName on2 = ObjectName.getInstance(positiveTests[i][1]);
0N/A System.out.println("\"" + on1 + "\".apply(\"" + on2 + "\")");
0N/A boolean result = on1.apply(on2);
0N/A System.out.println("Result = " + result);
0N/A if (result == false) {
0N/A error++;
0N/A System.out.println("Test failed!");
0N/A } else {
0N/A System.out.println("Test passed!");
0N/A }
0N/A } catch (Exception e) {
0N/A error++;
0N/A System.out.println("Got Unexpected Exception = " + e.toString());
0N/A System.out.println("Test failed!");
0N/A }
0N/A System.out.println("----------------------------------------------");
0N/A }
0N/A return error;
0N/A }
0N/A
0N/A private static int runNegativeTests() {
0N/A int error = 0;
0N/A for (int i = 0; i < negativeTests.length; i++) {
0N/A System.out.println("----------------------------------------------");
0N/A try {
0N/A ObjectName on1 = ObjectName.getInstance(negativeTests[i][0]);
0N/A ObjectName on2 = ObjectName.getInstance(negativeTests[i][1]);
0N/A System.out.println("\"" + on1 + "\".apply(\"" + on2 + "\")");
0N/A boolean result = on1.apply(on2);
0N/A System.out.println("Result = " + result);
0N/A if (result == true) {
0N/A error++;
0N/A System.out.println("Test failed!");
0N/A } else {
0N/A System.out.println("Test passed!");
0N/A }
0N/A } catch (Exception e) {
0N/A error++;
0N/A System.out.println("Got Unexpected Exception = " + e.toString());
0N/A System.out.println("Test failed!");
0N/A }
0N/A System.out.println("----------------------------------------------");
0N/A }
0N/A return error;
0N/A }
0N/A
0N/A public static void main(String[] args) throws Exception {
0N/A
0N/A int error = 0;
0N/A
0N/A // Check null values
0N/A //
0N/A System.out.println("----------------------------------------------");
0N/A System.out.println("Test ObjectName.apply(null)");
0N/A try {
0N/A new ObjectName("d:k=v").apply(null);
0N/A error++;
0N/A System.out.println("Didn't get expected NullPointerException!");
0N/A System.out.println("Test failed!");
0N/A } catch (NullPointerException e) {
0N/A System.out.println("Got expected exception '" + e.toString() + "'");
0N/A System.out.println("Test passed!");
0N/A } catch (Exception e) {
0N/A error++;
0N/A System.out.println("Got unexpected exception '" + e.toString() + "'");
0N/A System.out.println("Test failed!");
0N/A }
0N/A System.out.println("----------------------------------------------");
0N/A
0N/A // Check domain pattern values
0N/A //
0N/A System.out.println("----------------------------------------------");
0N/A System.out.println("Test ObjectName.apply(domain_pattern)");
0N/A try {
0N/A if (new ObjectName("d:k=v").apply(new ObjectName("*:k=v"))) {
0N/A error++;
0N/A System.out.println("Got 'true' expecting 'false'");
0N/A System.out.println("Test failed!");
0N/A } else {
0N/A System.out.println("Got expected return value 'false'");
0N/A System.out.println("Test passed!");
0N/A }
0N/A } catch (Exception e) {
0N/A error++;
0N/A System.out.println("Got unexpected exception = " + e.toString());
0N/A System.out.println("Test failed!");
0N/A }
0N/A System.out.println("----------------------------------------------");
0N/A
0N/A // Check key property list pattern values
0N/A //
0N/A System.out.println("----------------------------------------------");
0N/A System.out.println("Test ObjectName.apply(key_property_list_pattern)");
0N/A try {
0N/A if (new ObjectName("d:k=v").apply(new ObjectName("d:k=v,*"))) {
0N/A error++;
0N/A System.out.println("Got 'true' expecting 'false'");
0N/A System.out.println("Test failed!");
0N/A } else {
0N/A System.out.println("Got expected return value 'false'");
0N/A System.out.println("Test passed!");
0N/A }
0N/A } catch (Exception e) {
0N/A error++;
0N/A System.out.println("Got unexpected exception = " + e.toString());
0N/A System.out.println("Test failed!");
0N/A }
0N/A System.out.println("----------------------------------------------");
0N/A
0N/A // Check key property value pattern values
0N/A //
0N/A System.out.println("----------------------------------------------");
0N/A System.out.println("Test ObjectName.apply(key_property_value_pattern)");
0N/A try {
0N/A if (new ObjectName("d:k=v").apply(new ObjectName("d:k=*"))) {
0N/A error++;
0N/A System.out.println("Got 'true' expecting 'false'");
0N/A System.out.println("Test failed!");
0N/A } else {
0N/A System.out.println("Got expected return value 'false'");
0N/A System.out.println("Test passed!");
0N/A }
0N/A } catch (Exception e) {
0N/A error++;
0N/A System.out.println("Got unexpected exception = " + e.toString());
0N/A System.out.println("Test failed!");
0N/A }
0N/A System.out.println("----------------------------------------------");
0N/A
0N/A error += runPositiveTests();
0N/A error += runNegativeTests();
0N/A
0N/A if (error > 0) {
0N/A final String msg = "Test FAILED! Got " + error + " error(s)";
0N/A System.out.println(msg);
0N/A throw new IllegalArgumentException(msg);
0N/A } else {
0N/A System.out.println("Test PASSED!");
0N/A }
0N/A }
0N/A}