[ 
https://issues.apache.org/jira/browse/SOLR-712?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12625099#action_12625099
 ] 

henrib edited comment on SOLR-712 at 8/23/08 12:33 PM:
--------------------------------------------------------------

Amit, 
I reused your good idea in SOLR-646 and added an entity resolver so we can put 
properties (variables) to get to the resource.
The crux of it is in Config.java ctor:
{code}
    final SolrResourceLoader eloader = loader;
    EntityResolver esolver = new EntityResolver() {
      public InputSource resolveEntity(String publicId, String systemId) throws 
SAXException, IOException {
        if (systemId != null && systemId.startsWith("solr:")) {
          String res = systemId.substring(5);
          res = DOMUtil.substituteProperty(res, eloader.getProperties());
          return new InputSource(eloader.openResource(res));
        }
        return null;
      }
    };
....

    javax.xml.parsers.DocumentBuilder builder = 
DocumentBuilderFactory.newInstance().newDocumentBuilder();
    builder.setEntityResolver(esolver);
...
{code}
Oh, and I remove systematically xml:base form DOMUtil.toMapExcept
Thanks again.


      was (Author: henrib):
    Amit, 
I reused your good idea and added an entity resolver so we can put properties 
(variables) to get to the resource.
The crux of it is in Config.java ctor:
{code}
    final SolrResourceLoader eloader = loader;
    EntityResolver esolver = new EntityResolver() {
      public InputSource resolveEntity(String publicId, String systemId) throws 
SAXException, IOException {
        if (systemId != null && systemId.startsWith("solr:")) {
          String res = systemId.substring(5);
          res = DOMUtil.substituteProperty(res, eloader.getProperties());
          return new InputSource(eloader.openResource(res));
        }
        return null;
      }
    };
....

    javax.xml.parsers.DocumentBuilder builder = 
DocumentBuilderFactory.newInstance().newDocumentBuilder();
    builder.setEntityResolver(esolver);
...
{code}
Oh, and I remove systematically xml:base form DOMUtil.toMapExcept
Thanks again.

  
> Support for relative path XML Entity Includes
> ---------------------------------------------
>
>                 Key: SOLR-712
>                 URL: https://issues.apache.org/jira/browse/SOLR-712
>             Project: Solr
>          Issue Type: Improvement
>    Affects Versions: 1.2, 1.3
>            Reporter: Amit Nithian
>            Priority: Minor
>             Fix For: 1.2
>
>         Attachments: XMLEntityInclude.tgz
>
>   Original Estimate: 1h
>  Remaining Estimate: 1h
>
> This patch modifies the Config.java and IndexSchema.java to support XML 
> entity includes of relative paths. When parsing an InputStream not providing 
> a SystemID (i.e. base path for example) to the DOM parser will basically 
> force all entity includes to be relative to the base project directory rather 
> than the directory hosting the document. This patch simply passes in the 
> configuration directory as the systemID thus making the entity includes 
> relative to the home of solrconfig.xml and schema.xml. 
> The IndexSchema.java was modified to ensure objects do NOT process the 
> xml:base attribute. Newer Xerces-J parsers allow for the removal of this 
> attribute in the DOM (by setting the appropriate feature); however, the DOM 
> parser used by Java 5 doesn't support this feature.
> For example:
> Without the entity include, if my Solr app was running on C:\solr, then any 
> entity includes would have to be relative to C:\solr regardless of 
> solrconfig.xml and schema.xml. This patch allows for includes relative to the 
> conf directory of solr.home (i.e. ../../my_base_schema.xml) would be located 
> two directories above "conf".
> Please submit improvements or comments on this patch. 

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to