@Override public JBossWebMetaData parse( final XMLExtendedStreamReader reader, final DeploymentUnit deploymentUnit) throws XMLStreamException { return JBossWebMetaDataParser.parse( reader, JBossDescriptorPropertyReplacement.propertyReplacer(deploymentUnit)); }
/** * 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); } }