User: starksm
Date: 01/12/04 10:38:53
Modified: src/main/org/jboss/configuration Tag: Branch_2_4
ConfigurationService.java
Log:
Change the support of arbitrary mbean configuration to be based on
attribute child nodes as is done in main for consistency.
Revision Changes Path
No revision
No revision
1.30.2.5 +41 -33 jboss/src/main/org/jboss/configuration/ConfigurationService.java
Index: ConfigurationService.java
===================================================================
RCS file:
/cvsroot/jboss/jboss/src/main/org/jboss/configuration/ConfigurationService.java,v
retrieving revision 1.30.2.4
retrieving revision 1.30.2.5
diff -u -r1.30.2.4 -r1.30.2.5
--- ConfigurationService.java 2001/11/20 09:42:47 1.30.2.4
+++ ConfigurationService.java 2001/12/04 18:38:52 1.30.2.5
@@ -39,6 +39,7 @@
import org.w3c.dom.Document;
import org.w3c.dom.Element;
+import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.w3c.dom.Text;
import org.xml.sax.InputSource;
@@ -67,7 +68,7 @@
* @author Rickard �berg ([EMAIL PROTECTED])
* @author [EMAIL PROTECTED]
* @author Jason Dillon <a
href="mailto:[EMAIL PROTECTED]"><[EMAIL PROTECTED]></a>
- * @version $Revision: 1.30.2.4 $
+ * @version $Revision: 1.30.2.5 $
*/
public class ConfigurationService
extends ServiceMBeanSupport
@@ -220,13 +221,16 @@
String attributeName = attributeElement.getAttribute("name");
if (attributeElement.hasChildNodes())
{
- String attributeValue =
((Text)attributeElement.getFirstChild()).getData();
-
- if (autoTrim)
+ Node n = attributeElement.getFirstChild();
+ // Check for a text value
+ String attributeText = null;
+ if( n instanceof Text )
{
- attributeValue = attributeValue.trim();
+ attributeText = ((Text)n).getData();
+ if( autoTrim )
+ attributeText = attributeText.trim();
}
-
+
MBeanAttributeInfo[] attributes = info.getAttributes();
for (int k = 0; k < attributes.length; k++)
{
@@ -241,13 +245,32 @@
else
{
typeClass = Class.forName(typeName);
+ }
+ Object value = attributeText;
+ // Check for Element type attribute
+ if( Element.class.isAssignableFrom(typeClass) )
+ {
+ // The attribute is an Element
+ NodeList nodes = attributeElement.getChildNodes();
+ for(int l=0; l < nodes.getLength(); l++)
+ {
+ n = nodes.item(l);
+ if (n.getNodeType() == Node.ELEMENT_NODE)
+ {
+ value = (Element) n;
+ break;
+ }
+ }
}
- PropertyEditor editor =
PropertyEditorManager.findEditor(typeClass);
- Object value = attributeValue;
- if( editor != null )
+ else
{
- editor.setAsText(attributeValue);
- value = editor.getValue();
+ // Get the property value from the string presentation
+ PropertyEditor editor =
PropertyEditorManager.findEditor(typeClass);
+ if( editor != null )
+ {
+ editor.setAsText(attributeText);
+ value = editor.getValue();
+ }
}
log.debug(attributeName + " set to " + value + " in " +
objectName);
server.setAttribute(objectName, new
Attribute(attributeName, value));
@@ -257,35 +280,20 @@
}
}
}
- /* Look for a config element and if it exists invoke the
importXml(Element)
- operation to allow the MBean to support its own arbitrary
configuration.
- */
- NodeList configs = mbeanElement.getElementsByTagName("config");
- if( configs.getLength() > 0 )
- {
- Element configElement = (Element) configs.item(0);
- Object[] args = { configElement };
- String[] signature = { "org.w3c.dom.Element" };
- try
- {
- server.invoke(objectName, "importXml", args, signature);
- }
- catch(Exception e)
- {
- logException(e);
- }
- }
// Register the mbean with the JBoss ServiceControl mbean
registerService(objectName, info, mbeanElement);
}
+ }
+ catch(Error e)
+ {
+ logException(e);
+ throw new RuntimeException("Unexpected Error: "+ e.getMessage());
}
- catch (Throwable e)
+ catch(Exception e)
{
logException(e);
-
- // yikes this is not too safe
- throw (Exception)e;
+ throw e;
}
}
_______________________________________________
Jboss-development mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/jboss-development