Changeset 3938

Show
Ignore:
Timestamp:
11/21/08 13:06:50 (2 months ago)
Author:
mtld
Message:

fixed resolving of config-includes

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/pfixcore/ChangeLog

    r3930 r3938  
     12008-11-21  Martin Leidig  <mleidig@schlund.de> 
     2 
     3        * src/org/pustefixframework/config/project/parser/PustefixContextXMLRequestHandlerParsingHandler.java: 
     4        Added resolving of config-includes. 
     5 
    162008-11-14  Martin Leidig  <mleidig@schlund.de> 
    27 
  • trunk/pfixcore/src/org/pustefixframework/config/project/parser/PustefixContextXMLRequestHandlerParsingHandler.java

    r3916 r3938  
    2525import java.util.Properties; 
    2626 
     27import javax.xml.parsers.DocumentBuilder; 
     28import javax.xml.parsers.DocumentBuilderFactory; 
     29import javax.xml.parsers.ParserConfigurationException; 
     30 
    2731import org.pustefixframework.admin.mbeans.WebappAdmin; 
    2832import org.pustefixframework.config.Constants; 
     
    4347import org.springframework.core.io.Resource; 
    4448import org.springframework.core.io.UrlResource; 
     49import org.w3c.dom.Document; 
    4550import org.w3c.dom.Element; 
     51import org.xml.sax.SAXException; 
    4652 
    4753import com.marsching.flexiparse.objectree.ObjectTreeElement; 
     
    5460import de.schlund.pfixcore.workflow.ContextImpl; 
    5561import de.schlund.pfixxml.config.BuildTimeProperties; 
     62import de.schlund.pfixxml.config.includes.IncludesResolver; 
    5663import de.schlund.pfixxml.resources.FileResource; 
    5764import de.schlund.pfixxml.resources.ResourceUtil; 
     
    101108            GlobalConfigurationHolder globalConfig = (new GlobalConfigurationReader()).readGlobalConfiguration(); 
    102109            Parser contextXmlConfigParser = new ClasspathConfiguredParser("META-INF/org/pustefixframework/config/context-xml-service/parser/context-xml-service-config.xml"); 
    103             final ObjectTreeElement contextXmlConfigTree = contextXmlConfigParser.parse(res.getInputStream(), cusInfo, globalConfig, beanReg); 
     110             
     111            //Resolve config-includes 
     112            DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance(); 
     113            dbf.setNamespaceAware(true); 
     114            dbf.setXIncludeAware(true); 
     115            DocumentBuilder db = dbf.newDocumentBuilder(); 
     116            Document doc = db.parse(ResourceUtil.getFileResource(configurationFile).getInputStream());  
     117            IncludesResolver resolver = new IncludesResolver("http://www.pustefix-framework.org/2008/namespace/context-xml-service-config", "config-include"); 
     118            resolver.resolveIncludes(doc); 
     119             
     120            final ObjectTreeElement contextXmlConfigTree = contextXmlConfigParser.parse(doc, cusInfo, globalConfig, beanReg); 
    104121            SubObjectTree subTree = new SubObjectTree() { 
    105122              public ObjectTreeElement getRoot() { 
     
    108125            }; 
    109126            context.getObjectTreeElement().addObject(subTree); 
     127        } catch (ParserConfigurationException e) { 
     128            throw new RuntimeException("Could not initialize XML parser: " + e.getMessage(), e); 
     129        } catch (SAXException e) { 
     130            throw new ParserException("Error while parsing referenced file: " + e.getMessage(), e); 
    110131        } catch (ParserException e) { 
    111132            throw new BeanDefinitionStoreException("Error while parsing " + res + ": " + e.getMessage(), e);