@Before
 public void setupParser() throws Exception {
   parser = new JBossServiceXmlDescriptorParser(propertyReplacer);
   xmlMapper = XMLMapper.Factory.create();
   xmlMapper.registerRootElement(
       new QName(JBossServiceXmlDescriptorParser.NAMESPACE, "server"), parser);
   inputFactory = XMLInputFactory.newInstance();
 }
  @Before
  public void initializeParser() throws Exception {
    // Initialize the parser
    XMLMapper mapper = XMLMapper.Factory.create();
    testParser = new TestParser();
    mapper.registerRootElement(new QName(TEST_NAMESPACE, "test"), testParser);
    parsingContext = new ExtensionParsingContextImpl(mapper);
    mainExtension.initializeParsers(parsingContext);
    addedExtraParsers = false;

    stack.set(new Stack<String>());
  }
  /**
   * Process a deployment for jboss-service.xml files. Will parse the xml file and attach a
   * configuration discovered during processing.
   *
   * @param phaseContext the deployment unit context
   * @throws DeploymentUnitProcessingException
   */
  public void deploy(DeploymentPhaseContext phaseContext) throws DeploymentUnitProcessingException {

    final VirtualFile deploymentRoot =
        phaseContext.getDeploymentUnit().getAttachment(Attachments.DEPLOYMENT_ROOT).getRoot();

    if (deploymentRoot == null || !deploymentRoot.exists()) return;

    VirtualFile serviceXmlFile = null;
    if (deploymentRoot.isDirectory()) {
      serviceXmlFile = deploymentRoot.getChild(SERVICE_DESCRIPTOR_PATH);
    } else if (deploymentRoot
        .getName()
        .toLowerCase(Locale.ENGLISH)
        .endsWith(SERVICE_DESCRIPTOR_SUFFIX)) {
      serviceXmlFile = deploymentRoot;
    }
    if (serviceXmlFile == null || !serviceXmlFile.exists()) return;

    final XMLMapper xmlMapper = XMLMapper.Factory.create();
    final JBossServiceXmlDescriptorParser jBossServiceXmlDescriptorParser =
        new JBossServiceXmlDescriptorParser(
            JBossDescriptorPropertyReplacement.propertyReplacer(phaseContext.getDeploymentUnit()));
    xmlMapper.registerRootElement(
        new QName("urn:jboss:service:7.0", "server"), jBossServiceXmlDescriptorParser);
    xmlMapper.registerRootElement(new QName(null, "server"), jBossServiceXmlDescriptorParser);

    InputStream xmlStream = null;
    try {
      xmlStream = serviceXmlFile.openStream();
      final XMLStreamReader reader = inputFactory.createXMLStreamReader(xmlStream);
      final ParseResult<JBossServiceXmlDescriptor> result =
          new ParseResult<JBossServiceXmlDescriptor>();
      xmlMapper.parseDocument(result, reader);
      final JBossServiceXmlDescriptor xmlDescriptor = result.getResult();
      if (xmlDescriptor != null)
        phaseContext
            .getDeploymentUnit()
            .putAttachment(JBossServiceXmlDescriptor.ATTACHMENT_KEY, xmlDescriptor);
      else throw SarMessages.MESSAGES.failedXmlParsing(serviceXmlFile);
    } catch (Exception e) {
      throw SarMessages.MESSAGES.failedXmlParsing(e, serviceXmlFile);
    } finally {
      VFSUtils.safeClose(xmlStream);
    }
  }
 /** {@inheritDoc} */
 @Override
 public List<ModelNode> load() throws ConfigurationPersistenceException {
   final XMLMapper mapper = XMLMapper.Factory.create();
   mapper.registerRootElement(rootElement, rootParser);
   final List<ModelNode> updates = new ArrayList<ModelNode>();
   try {
     final FileInputStream fis = new FileInputStream(fileName);
     try {
       BufferedInputStream input = new BufferedInputStream(fis);
       XMLStreamReader streamReader = XMLInputFactory.newInstance().createXMLStreamReader(input);
       mapper.parseDocument(updates, streamReader);
       streamReader.close();
       input.close();
       fis.close();
     } finally {
       safeClose(fis);
     }
   } catch (Exception e) {
     throw new ConfigurationPersistenceException("Failed to parse configuration", e);
   }
   return updates;
 }