Package org.jboss.test.jmx.xmbean

Source Code of org.jboss.test.jmx.xmbean.XMLAttributePersistenceManagerTestService

/*
* JBoss, Home of Professional Open Source.
* Copyright 2008, Red Hat Middleware LLC, and individual contributors
* as indicated by the @author tags. See the copyright.txt file in the
* distribution for a full listing of individual contributors.
*
* This is free software; you can redistribute it and/or modify it
* under the terms of the GNU Lesser General Public License as
* published by the Free Software Foundation; either version 2.1 of
* the License, or (at your option) any later version.
*
* This software 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
* Lesser General Public License for more details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with this software; if not, write to the Free
* Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
* 02110-1301 USA, or see the FSF site: http://www.fsf.org.
*/
package org.jboss.test.jmx.xmbean;

import java.io.File;

import javax.management.Attribute;
import javax.management.AttributeList;
import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;

import org.jboss.mx.persistence.AttributePersistenceManager;
import org.jboss.system.ServiceMBeanSupport;
import org.jboss.system.pm.XMLAttributePersistenceManager;
import org.jboss.system.server.ServerConfigLocator;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;

/**
* A test service that wraps an XMLAttributePersistenceManager
* configured to write to a random directory containing a space
* in its name, e.g. "./tmp/XmlApmXXXXXTest .dir"
*
* @see org.jboss.test.jmx.test.MLAttributePersistenceManagerUnitTestCase
*
* @author <a href="mailto:dimitris@jboss.org">Dimitris Andreadis</a>
* @version $Revision: 91254 $
*/
public class XMLAttributePersistenceManagerTestService
   extends ServiceMBeanSupport
{
   private AttributePersistenceManager apm;
   private File storeDir;
  
   protected void startService()
      throws Exception
   {
      File tmpDir = new File(ServerConfigLocator.locate().getServerTempLocation().toURI());
      boolean result;
     
      // Get a temporary file in the server tmp dir, with a space in its name
      storeDir = File.createTempFile("XmlApm", "Test .dir", tmpDir);
     
      // Remove the tmp file
      result = storeDir.delete();

      // Recreate it as directory
      result = storeDir.mkdir();
      log.info("Created 'bad' store dir: " + storeDir + ", " + result);
     
      String dirURL = storeDir.toURL().toString();
      log.info("Dir URL: " + dirURL);     
     
      apm = new XMLAttributePersistenceManager();

      // Initialize an XMLAttributePeristenceManager and
      // configure it to point to the "bad" directory
      apm.create(null, prepareConfig(dirURL));
   }
  
   protected void stopService()
      throws Exception
   {
      if (apm != null)
      {
         apm.removeAll();
         apm.destroy();
         log.info("Destroyed AttributePersistenceManager");
      }
      if (storeDir != null)
      {
         boolean result = storeDir.delete();
         log.info("Removed: " +  storeDir + ", " + result);
      }
   }
  
   public void store(String id, AttributeList atlist) throws Exception
   {
      apm.store(id, atlist);
   }
  
   public AttributeList load(String id) throws Exception
   {
      return apm.load(id);
   }
  
   public void selftest() throws Exception
   {
      // Store some attributes under an id
      AttributeList alist = new AttributeList();
      String storeId = "bananarama";
     
      Integer anInteger = new Integer(666);
      String aString = new String("Evil Test");
      alist.add(new Attribute("Attr1", anInteger));
      alist.add(new Attribute("Attr2", aString));
      apm.store(storeId, alist);
     
      // Read them back
      AttributeList alist2 = apm.load(storeId);     
   }
  
   private Element prepareConfig(String dir) throws Exception
   {
      // build the config XML Element in memory using DOM
      DocumentBuilder builder = DocumentBuilderFactory.newInstance().newDocumentBuilder();
      Document doc = builder.newDocument();

      // Create config element
      Element config = doc.createElement(XMLAttributePersistenceManager.DATA_DIR_ELEMENT);
     
      // Insert a text node with the directory name
      Node text = doc.createTextNode(dir);
     
      config.appendChild(text);
     
      // Return the config
      return config;
   }  
}
TOP

Related Classes of org.jboss.test.jmx.xmbean.XMLAttributePersistenceManagerTestService

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.