Thanks for prompt reply and all pointers. idReferences seem to have no
connection to references that addBeans use.

I am under impression that things were somewhat different with Ant 1.6
(-ish), but the manual did not change since then
so it probably needs an update with a reference to macrodef and friends as
more useful for use cases like this.
Maybe there's a point in making addBeans to instantiate all idReferences?
Or at least to log which idReferences are not instantiated yet?

Gintas

On Tue, 29 Oct 2019 at 10:01, Jan Matèrne (jhm) <apa...@materne.de> wrote:

> The AntXMLContext stores the id-object pair in the project instance via
>     public void configureId(Object element, Attributes attr) {
>         String id = attr.getValue("id");
>         if (id != null) {
>             project.addIdReference(id, element);
>         }
>     }
>
> In the Projct class this is stored in a HashMap
>
>     /** Map of id references - used for indicating broken build files */
>     private final HashMap<String, Object> idReferences = new HashMap<>();
>
>     public void addIdReference(final String id, final Object value) {
>         idReferences.put(id, value);
>     }
>
> But I haven't found a place where this private field is read...
>
>
> Jan
>
>
>
> > -----Ursprüngliche Nachricht-----
> > Von: Jan Matèrne (jhm) [mailto:apa...@materne.de]
> > Gesendet: Dienstag, 29. Oktober 2019 08:48
> > An: 'Ant Developers List'
> > Betreff: AW: Script task specification
> >
> > I placed some system-outs in the parsing code.
> > The parsing is done by ProjectHelper2. Id is stored via AntXMLContext to
> > the "UnknownElement".
> >
> > C:\projekte\apache-ant-svn\sandbox\script>ant
> > Buildfile: C:\projekte\apache-ant-svn\sandbox\script\build.xml
> > PH2.ElemeentHandler.onStartElement  tag=echo  taskname=echo
> > AntXMLContext.configureId
> > element=org.apache.tools.ant.UnknownElement@1f89ab83  id=foo
> > PH2.ElemeentHandler.onStartElement  tag=script  taskname=script
> > AntXMLContext.configureId
> > element=org.apache.tools.ant.UnknownElement@383534aa  id=null
> >
> >
> > main:
> >    [script] PH2.ElemeentHandler.onStartElement  tag=antlib
> > taskname=antlib
> >    [script] AntXMLContext.configureId
> > element=org.apache.tools.ant.UnknownElement@50cbc42f  id=null
> >    [script] PH2.ElemeentHandler.onStartElement  tag=componentdef
> > taskname=componentdef
> >             ... more element definitions ...
> >
> > BUILD FAILED
> > C:\projekte\apache-ant-svn\sandbox\script\build.xml:9:
> > org.mozilla.javascript.EcmaError: ReferenceError: "foo" is not defined.
> >
> >
> >
> > Jan
> >
> >
> > > -----Ursprüngliche Nachricht-----
> > > Von: Jan Matèrne (jhm) [mailto:apa...@materne.de]
> > > Gesendet: Dienstag, 29. Oktober 2019 08:03
> > > An: 'Ant Developers List'
> > > Betreff: AW: Script task specification
> > >
> > > It seems that the task must be executed before.
> > > If you add a >depends="sub"< on the main target, that works.
> > >
> > > So the question is: when are id's stored?
> > > The parsing is done via ProjectHelper's and their SAX-Parser-Handlers.
> > > On the first view I would say, that the id is stored while parsing -
> > > so before exucution.
> > >
> > >
> > > Jan
> > >
> > > > -----Ursprüngliche Nachricht-----
> > > > Von: Gintautas Grigelionis [mailto:g.grigelio...@gmail.com]
> > > > Gesendet: Montag, 28. Oktober 2019 14:25
> > > > An: Ant Developers List
> > > > Betreff: Script task specification
> > > >
> > > > The documentation of the script task states:
> > > >
> > > > "All items (tasks, targets, etc) of the running project are
> > > > accessible from the script, using either their name or id attributes
> > > > (as long as their names are considered valid Java identifiers, that
> > is). "
> > > >
> > > > However, the following fails:
> > > >
> > > > <?xml version="1.0"?>
> > > > <project name="test" default="main" basedir=".">
> > > >   <target name="sub">
> > > >     <echo id="foo">Executing a task</echo>
> > > >   </target>
> > > >
> > > >   <!-- tests the script stuff -->
> > > >   <target name="main">
> > > >     <script language="javascript"><![CDATA[
> > > >         foo.setMessage("I'm a foo!")
> > > >         sub.execute()
> > > >     ]]></script>
> > > >   </target>
> > > > </project>
> > > >
> > > > Surely there are more limitations? Besides, failure modes are
> > > > different in Rhino (unable to create engine) and Nashorn (reference
> > > not defined).
> > > >
> > > > Regards,
> > > > Gintas
> > >
> > >
> > > ---------------------------------------------------------------------
> > > To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org For additional
> > > commands, e-mail: dev-h...@ant.apache.org
> >
> >
> >
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org For additional
> > commands, e-mail: dev-h...@ant.apache.org
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: dev-unsubscr...@ant.apache.org
> For additional commands, e-mail: dev-h...@ant.apache.org
>
>

Reply via email to