[ http://issues.apache.org/jira/browse/TORQUE-3?page=all ]

Joerg Friedrich updated TORQUE-3:
---------------------------------

    Description: 
In class org.apache.torque.engine.database.transform.DTDResolver the DTD for 
the XMP schema files is retrieved via either a (1) 
getResourceAsStream("database.dtd") call, a (2) 
getInputSource("http://db.apache.org/torque/dtd/database_3_2.dtd";) or a (3) 
getInputSource("systemId"), where systemId is typically made up of the system 
designator in the DOCTYPE statement inside the XML schema file prepended with 
the absolute path of the location of the current working directory or directory 
from which the generator.

Usually the database.dtd is found in the class path (method 1), since it is 
delivered with the generator jar. However, as soon as we do something like this 
in the XML file: <!DOCTYPE database SYSTEM "database.dtd"> the generator does 
not work any more, unless we place a copy of database.dtd at the current 
working directory (thus, system reverts to (3)). This behaviour comes from this 
line in method resolveEntity:
        if (databaseDTD != null  && (WEB_SITE_DTD.equals(systemId))
since the systemId in this case looks something like this: 
file:///d:torque/torque-gen-3.2/database.dtd and of course does not match the 
WEB_SITE_DTD string.
My suggestion : change this line to 
        if (databaseDTD != null)
and everything works fine.

The attachments contain another modification: with the current implementation 
it is not possible to include another XML file into an XML schema file. This is 
quite useful if schema files are very large or one wants to separate database 
dependencies of SQL data types into database specific mapping files using the 
<domain> directive. This should  be possible with the patch provided.


  was:
In class org.apache.torque.engine.database.transform.DTDResolver the DTD for 
the XMP schema files is retrieved via either a (1) 
getResourceAsStream("database.dtd") call, a (2) 
getInputSource("http://db.apache.org/torque/dtd/database_3_2.dtd";) or a (3) 
getInputSource("systemId"), where systemId is typically made up of the system 
designator in the DOCTYPE statement inside the XML schema file prepended with 
the absolute path of the location of the current working directory or directory 
from which the generator.

Usually the database.dtd is found in the class path (method 1), since it is 
delivered with the generator jar. However, as soon as we do something like this 
in the XML file: <!DOCTYPE database SYSTEM "database.dtd"> the generator does 
not work any more, unless we place a copy of database.dtd at the current 
working directory (thus, system reverts to (3)). This behaviour comes from this 
line in method resolveEntity:
        if (databaseDTD != null  && (WEB_SITE_DTD.equals(systemId))
since the systemId in this case looks something like this: 
file:///d:torque/torque-gen-3.2/database.dtd and of course does not match the 
WEB_SITE_DTD string.
My suggestion : change this line to 
        if (databaseDTD != null)
and everything works fine.



> Generator: resolving database.dtd in 
> org.apache.torque.engine.database.transform.DTDResolver.java
> -------------------------------------------------------------------------------------------------
>
>          Key: TORQUE-3
>          URL: http://issues.apache.org/jira/browse/TORQUE-3
>      Project: Torque
>         Type: Improvement

>   Components: Generator
>     Versions: 3.2
>  Environment: Windows XP, JDK 1.4 (I don't think this matters)
>     Reporter: Joerg Friedrich
>     Priority: Minor
>  Attachments: DTDResolver.java, XmlToAppData.java
>
> In class org.apache.torque.engine.database.transform.DTDResolver the DTD for 
> the XMP schema files is retrieved via either a (1) 
> getResourceAsStream("database.dtd") call, a (2) 
> getInputSource("http://db.apache.org/torque/dtd/database_3_2.dtd";) or a (3) 
> getInputSource("systemId"), where systemId is typically made up of the system 
> designator in the DOCTYPE statement inside the XML schema file prepended with 
> the absolute path of the location of the current working directory or 
> directory from which the generator.
> Usually the database.dtd is found in the class path (method 1), since it is 
> delivered with the generator jar. However, as soon as we do something like 
> this in the XML file: <!DOCTYPE database SYSTEM "database.dtd"> the generator 
> does not work any more, unless we place a copy of database.dtd at the current 
> working directory (thus, system reverts to (3)). This behaviour comes from 
> this line in method resolveEntity:
>         if (databaseDTD != null  && (WEB_SITE_DTD.equals(systemId))
> since the systemId in this case looks something like this: 
> file:///d:torque/torque-gen-3.2/database.dtd and of course does not match the 
> WEB_SITE_DTD string.
> My suggestion : change this line to 
>         if (databaseDTD != null)
> and everything works fine.
> The attachments contain another modification: with the current implementation 
> it is not possible to include another XML file into an XML schema file. This 
> is quite useful if schema files are very large or one wants to separate 
> database dependencies of SQL data types into database specific mapping files 
> using the <domain> directive. This should  be possible with the patch 
> provided.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see:
   http://www.atlassian.com/software/jira


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to