/* * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. * * Copyright (c) 1997-2010 Oracle and/or its affiliates. All rights reserved. * * The contents of this file are subject to the terms of either the GNU * General Public License Version 2 only ("GPL") or the Common Development * and Distribution License("CDDL") (collectively, the "License"). You * may not use this file except in compliance with the License. You can * obtain a copy of the License at * https://glassfish.dev.java.net/public/CDDL+GPL_1_1.html * or packager/legal/LICENSE.txt. See the License for the specific * language governing permissions and limitations under the License. * * When distributing the software, include this License Header Notice in each * file and include the License file at packager/legal/LICENSE.txt. * * GPL Classpath Exception: * Oracle designates this particular file as subject to the "Classpath" * exception as provided by Oracle in the GPL Version 2 section of the License * file that accompanied this code. * * Modifications: * If applicable, add the following below the License Header, with the fields * enclosed by brackets [] replaced by your own identifying information: * "Portions Copyright [year] [name of copyright owner]" * * Contributor(s): * If you wish your version of this file to be governed by only the CDDL or * only the GPL Version 2, indicate your decision by adding "[Contributor] * elects to include this software in this distribution under the [CDDL or GPL * Version 2] license." If you don't indicate a single choice of license, a * recipient has the option to distribute your version of this file under * either the CDDL, the GPL Version 2 or to extend the choice of license to * its licensees as provided above. However, if you add GPL Version 2 code * and therefore, elected the GPL Version 2 license, then the option applies * only if the new code is made subject to such option by the copyright * holder. */ package org.glassfish.admin.amxtest.config; import com.sun.appserv.management.base.DottedNames; import org.glassfish.admin.amxtest.AMXTestBase; import javax.management.Attribute; /** */ public final class DottedNamesTest extends AMXTestBase { public DottedNamesTest() { } private void checkAttribute(final Attribute attr) { assert (attr != null); final Object value = attr.getValue(); if (value instanceof Attribute) { warning("Is value of " + attr.getName() + " really another Attribute? => " + toString(value)); } } private void checkResultsFromWildGet( final Object[] results) { for (int i = 0; i < results.length; ++i) { final Object result = results[i]; if (result == null) { warning("null result from dottedNameGet( \"*\" )"); } else if (!(result instanceof Attribute)) { warning("non-Attribute result from dottedNameGet( \"*\" ): " + result); } else { // it's an Attribute final Attribute attr = (Attribute) result; checkAttribute((Attribute) result); } } } private void checkResultsFromGet( final String[] names, final Object[] results) { for (int i = 0; i < results.length; ++i) { final Object result = results[i]; if (result == null) { warning("Dotted name has null result: " + names[i]); } else if (!(result instanceof Attribute)) { warning("Dotted name " + names[i] + " could not be obtained: " + result); } } } private String[] getAllNames(final DottedNames dottedNames) { final Attribute[] attrs = (Attribute[]) dottedNames.dottedNameGet("*"); final String[] names = new String[attrs.length]; for (int i = 0; i < names.length; ++i) { names[i] = attrs[i].getName(); } return (names); } public void testGetAllConfigDottedNames() { final long start = now(); final DottedNames dottedNames = getDomainRoot().getDottedNames(); final String[] names = getAllNames(dottedNames); final Object[] results = dottedNames.dottedNameGet(names); checkResultsFromGet(names, results); printElapsed("testGetAllConfigDottedNames", start); } /* public void testGetAllMonitoringDottedNames() { if (checkNotOffline("testMonitoringRefresh")) { final MonitoringDottedNames dottedNames = getDomainRoot().getMonitoringDottedNames(); final long start = now(); final String[] names = getAllNames(dottedNames); final Object[] results = dottedNames.dottedNameGet(names); checkResultsFromGet(names, results); printElapsed("testGetAllMonitoringDottedNames", start); } }*/ public void testWildGetAllDottedNames() { final long start = now(); final DottedNames dottedNames = getDomainRoot().getDottedNames(); final Attribute[] results = (Attribute[]) dottedNames.dottedNameGet("*"); checkResultsFromWildGet(results); printElapsed("testWildGetAllConfigDottedNames", start); } /* public void testWildGetAllMonitoringDottedNames() { if (checkNotOffline("testMonitoringRefresh")) { final long start = now(); final MonitoringDottedNames dottedNames = getDomainRoot().getMonitoringDottedNames(); final Attribute[] results = (Attribute[]) dottedNames.dottedNameGet("*"); checkResultsFromWildGet(results); printElapsed("testWildGetAllMonitoringDottedNames", start); } } */ /** Test that we can set (change) a dotted name. */ public void testDottedNameSet() { final long start = now(); final DottedNames dottedNames = getDomainRoot().getDottedNames(); final String target = "domain.locale"; final Object result = dottedNames.dottedNameGet(target); final Attribute localeAttr = (Attribute) dottedNames.dottedNameGet(target); checkAttribute(localeAttr); final String locale = (String) localeAttr.getValue(); // set to a new value Object[] results = dottedNames.dottedNameSet(new String[]{target + "=dummy_locale"}); assert (results.length == 1); checkAttribute((Attribute) results[0]); // change back to previous value final String restoreString = target + "=" + (locale == null ? "" : locale); results = dottedNames.dottedNameSet(new String[]{restoreString}); final Attribute finalAttr = (Attribute) dottedNames.dottedNameGet(target); assert ( (finalAttr.getValue() == null && localeAttr.getValue() == null) || finalAttr.getValue().equals(localeAttr.getValue())); printElapsed("testConfigDottedNameSet", start); } private int testList( final DottedNames dottedNames, final String dottedName) { final Object[] results = dottedNames.dottedNameList(new String[]{dottedName}); //trace( dottedName + ": " + toString( results ) ); for (int i = 0; i < results.length; ++i) { testList(dottedNames, (String) results[i]); } return (results.length); } public void testRecursiveDottedNameList() { final long start = now(); final DottedNames dottedNames = getDomainRoot().getDottedNames(); final int numFound = testList(dottedNames, "domain"); assert (numFound >= 4); // should be at least 4. printElapsed("testRecursiveConfigDottedNameList", start); } /* public void testRecursiveMonitoringDottedNameList() { if (checkNotOffline("testRecursiveMonitoringDottedNameList")) { final MonitoringDottedNames dottedNames = getDomainRoot().getMonitoringDottedNames(); final long start = now(); final int numFound = testList(dottedNames, "server"); assert (numFound >= 4); // should be at least 4.\ testList(dottedNames, "*"); printElapsed("testRecursiveMonitoringDottedNameList", start); } }*/ }