mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-15 21:05:11 +00:00
6501362: DescriptorSupport(String) could recognize "name=value" as well as XML format
Reviewed-by: emcmanus
This commit is contained in:
parent
5588717cc4
commit
049436370f
@ -229,9 +229,10 @@ public class DescriptorSupport
|
||||
init(inDescr.descriptorMap);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* <p>Descriptor constructor taking an XML String.</p>
|
||||
* <p>Descriptor constructor taking an XML String or a
|
||||
* <i>fieldName=fieldValue</i> format String. The String parameter is
|
||||
* parsed as XML if it begins with a '<' character.</p>
|
||||
*
|
||||
* <p>The format of the XML string is not defined, but an
|
||||
* implementation must ensure that the string returned by
|
||||
@ -244,17 +245,20 @@ public class DescriptorSupport
|
||||
* programmer will have to reset or convert these fields
|
||||
* correctly.</p>
|
||||
*
|
||||
* @param inStr An XML-formatted string used to populate this
|
||||
* Descriptor. The format is not defined, but any
|
||||
* @param inStr An XML-format or a fieldName=fieldValue formatted string
|
||||
* used to populate this Descriptor. The XML format is not defined, but any
|
||||
* implementation must ensure that the string returned by
|
||||
* method {@link #toXMLString toXMLString} on an existing
|
||||
* descriptor can be used to instantiate an equivalent
|
||||
* descriptor when instantiated using this constructor.
|
||||
*
|
||||
* @exception RuntimeOperationsException If the String inStr
|
||||
* passed in parameter is null
|
||||
* @exception RuntimeOperationsException If the String inStr passed in
|
||||
* parameter is null or, when it is not an XML string, if the field name or
|
||||
* field value is illegal. If inStr is not an XML string then it must
|
||||
* contain an "=". "fieldValue", "fieldName", and "fieldValue" are illegal.
|
||||
* FieldName cannot be empty. "fieldName=" will cause the value to be empty.
|
||||
* @exception XMLParseException XML parsing problem while parsing
|
||||
* the input String
|
||||
* the XML-format input String
|
||||
* @exception MBeanException Wraps a distributed communication Exception.
|
||||
*/
|
||||
/* At some stage we should rewrite this code to be cleverer. Using
|
||||
@ -283,14 +287,27 @@ public class DescriptorSupport
|
||||
throw new RuntimeOperationsException(iae, msg);
|
||||
}
|
||||
|
||||
// parse parameter string into structures
|
||||
|
||||
init(null);
|
||||
|
||||
if(!inStr.startsWith("<")) {
|
||||
parseNamesValues(inStr);
|
||||
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
|
||||
MODELMBEAN_LOGGER.logp(Level.FINEST,
|
||||
DescriptorSupport.class.getName(),
|
||||
"Descriptor(name=value)", "Exit");
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
||||
final String lowerInStr = inStr.toLowerCase();
|
||||
if (!lowerInStr.startsWith("<descriptor>")
|
||||
|| !lowerInStr.endsWith("</descriptor>")) {
|
||||
throw new XMLParseException("No <descriptor>, </descriptor> pair");
|
||||
}
|
||||
|
||||
// parse xmlstring into structures
|
||||
init(null);
|
||||
|
||||
// create dummy descriptor: should have same size
|
||||
// as number of fields in xmlstring
|
||||
// loop through structures and put them in descriptor
|
||||
@ -454,6 +471,16 @@ public class DescriptorSupport
|
||||
|
||||
init(null);
|
||||
|
||||
parseNamesValues(fields);
|
||||
|
||||
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
|
||||
MODELMBEAN_LOGGER.logp(Level.FINEST,
|
||||
DescriptorSupport.class.getName(),
|
||||
"Descriptor(String... fields)", "Exit");
|
||||
}
|
||||
}
|
||||
|
||||
private void parseNamesValues(String... fields) {
|
||||
for (int i=0; i < fields.length; i++) {
|
||||
if ((fields[i] == null) || (fields[i].equals(""))) {
|
||||
continue;
|
||||
@ -495,11 +522,6 @@ public class DescriptorSupport
|
||||
|
||||
setField(fieldName,fieldValue);
|
||||
}
|
||||
if (MODELMBEAN_LOGGER.isLoggable(Level.FINEST)) {
|
||||
MODELMBEAN_LOGGER.logp(Level.FINEST,
|
||||
DescriptorSupport.class.getName(),
|
||||
"Descriptor(String... fields)", "Exit");
|
||||
}
|
||||
}
|
||||
|
||||
private void init(Map<String, ?> initMap) {
|
||||
|
||||
@ -0,0 +1,46 @@
|
||||
/*
|
||||
* Copyright 2004-2005 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.
|
||||
*/
|
||||
|
||||
/*
|
||||
* @test
|
||||
* @bug 6501362
|
||||
* @summary DescriptorSupport(String) could recognize "name=value" as well as XML format
|
||||
* @author Jean-Francois Denise
|
||||
* @run clean DescriptorConstructorTest
|
||||
* @run build DescriptorConstructorTest
|
||||
* @run main DescriptorConstructorTest
|
||||
*/
|
||||
|
||||
import javax.management.modelmbean.DescriptorSupport;
|
||||
|
||||
public class DescriptorConstructorTest {
|
||||
public static void main(String[] args) throws Exception {
|
||||
DescriptorSupport d1 = new DescriptorSupport("MyName1=MyValue1");
|
||||
if(!d1.getFieldValue("MyName1").equals("MyValue1"))
|
||||
throw new Exception("Invalid parsing");
|
||||
DescriptorSupport d2 = new DescriptorSupport("<Descriptor>" +
|
||||
"<field name=\"MyName2\" value=\"MyValue2\"></field></Descriptor>");
|
||||
if(!d2.getFieldValue("MyName2").equals("MyValue2"))
|
||||
throw new Exception("Invalid parsing");
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user