001/*
002 *  Copyright 2012 Anyware Services
003 *
004 *  Licensed under the Apache License, Version 2.0 (the "License");
005 *  you may not use this file except in compliance with the License.
006 *  You may obtain a copy of the License at
007 *
008 *      http://www.apache.org/licenses/LICENSE-2.0
009 *
010 *  Unless required by applicable law or agreed to in writing, software
011 *  distributed under the License is distributed on an "AS IS" BASIS,
012 *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 *  See the License for the specific language governing permissions and
014 *  limitations under the License.
015 */
016package org.ametys.runtime.plugins.admin.jvmstatus;
017
018import java.io.IOException;
019import java.lang.management.ManagementFactory;
020import java.lang.management.RuntimeMXBean;
021import java.util.Map;
022
023import org.apache.cocoon.ProcessingException;
024import org.apache.cocoon.generation.AbstractGenerator;
025import org.apache.cocoon.xml.AttributesImpl;
026import org.apache.cocoon.xml.XMLUtils;
027import org.xml.sax.SAXException;
028
029/**
030 * SAXes the system properties 
031 */
032public class SystemPropertiesGenerator extends AbstractGenerator
033{
034    @Override
035    public void generate() throws IOException, SAXException, ProcessingException
036    {
037        contentHandler.startDocument();
038        RuntimeMXBean rBean = ManagementFactory.getRuntimeMXBean();
039
040        XMLUtils.startElement(contentHandler, "properties");
041
042        Map<String, String> properties = rBean.getSystemProperties();
043        for (String key : properties.keySet())
044        {
045            if (key.indexOf(":") == -1)
046            {   
047                AttributesImpl attrs = new AttributesImpl();
048                attrs.addCDATAAttribute("name", key);
049                attrs.addCDATAAttribute("value", properties.get(key));
050                
051                XMLUtils.createElement(contentHandler, "property", attrs);
052            }
053        }
054        
055        XMLUtils.endElement(contentHandler, "properties");
056        contentHandler.endDocument();
057    }
058}