ant-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Rhino" <rhi...@sympatico.ca>
Subject Re: Displaying the value in a Java class?
Date Fri, 10 Feb 2006 15:35:24 GMT

[I've lost the original email containing this thread but I found it in the 
MARC archives and pasted it  below the line of equal signs....]

Matt,

You are absolutely right, it was NOT _remotely_ obvious that BCEL has to be 
present in order for LoadProperties to work. If you hadn't posted that fact, 
I would never have found that in the manual, for several reasons:
1. LoadProperties is a core task so I would have assumed that it wouldn't 
need extra jars. It's my understanding that core tasks, by definition, are 
ones that don't need extra jars to work. Apparently, this is not true; even 
a core task may need extra jars in somes cases.
2. The article on LoadProperties doesn't mention the need for BCEL to be 
present.
3. The article on FilterChains doesn't mention the need for BCEL to be 
present.

Even if I had looked at the optional jars page, I might have missed it 
because I would have been looking for filterchains or loadproperties in the 
second column of the table, not specifically "ClassConstants filter reader".

So thank you VERY much for pointing that out. As soon as I installed BCEL, I 
found that my task executed without the IOExceptions.

Unfortunately, I still have one problem that may keep this from being the 
solution to my problem after all: the ClassConstants filter reader 
apparently only gets information about _String_ constants (it only returned 
values for the Strings in my .class file but no other types) but the 
constant I am trying to read is defined as follows:

    public static final EmploymentHistoryFormats 
DESIRED_EMPLOYMENT_HISTORY_FORMAT = EmploymentHistoryFormats.LIST_FORMAT;

EmploymentHistoryFormats is an enum, not a String.

Is there any way to coax this filter to tell me that the current value of 
DESIRED_EMPLOYMENT_HISTORY_FORMAT is LIST_FORMAT? That's all I really want 
to know to get my build.xml working 100%.

If not, is there any other way to get this information?

--
Rhino

=================================================================
I thought the manual was wrong at first too, but using
a class file is correct.  What is not as obvious is
that you need BCEL to make it work.  This is
documented in install.html#librarydependencies from
the manual.

HTH,
Matt

--- Rhino <rhino1@sympatico.ca> wrote:

> The classcontents filterreader might very well be
> exactly what I want - if I
> could understand how to use it!
>
> I've just tried several experiments and nothing
> works for me; nothing at
> all.
>
> I must be misunderstanding some of the concepts. For
> instance, it _looks_ as
> if I should be able to read a file, grab all the
> constants from it, and turn
> them into properties. But I can't make out if I'm
> supposed to reading a
> class file or a source file: it _looks_ as if I
> should be reading a class
> file, which seems counterintuitive to me.
> Nevertheless, I've tried pointing
> the task at both a real .class file and at a real
> Java source file in turn
> but I inevitably get "Unable to load file:
> java.io.IOException" regardless
> of which I use. Here is my task:
>
> <loadproperties srcfile="ResumeConstants.java">
>
> <filterchain>
>
> <classconstants/>
>
> </filterchain>
>
> </loadproperties>
>
>
>
> (Replacing the srcfile value with
> "ResumeConstants.class" made no difference
> at all. Both the source and the class file are in
> the same directory as the
> Ant script itself, just to keep things nice and
> simple.)
>
> Here is the stackTrace:
>
> BUILD FAILED
>
>
E:\eclipse\3.1.1\eclipse\workspace\Resume_JDK_1.5.0\xml\filter.xml:34:
>
> Unable to load file: java.io.IOException
>
> at
>
org.apache.tools.ant.taskdefs.LoadProperties.execute(LoadProperties.java:227)
>
> at
>
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
>
> at org.apache.tools.ant.Task.perform(Task.java:364)
>
> at
> org.apache.tools.ant.Target.execute(Target.java:341)
>
> at
>
org.apache.tools.ant.Target.performTasks(Target.java:369)
>
> at
>
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
>
> at
>
org.apache.tools.ant.Project.executeTarget(Project.java:1185)
>
> at
>
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
>
> at
>
org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDe 
\
faultExecutor.java:32)
>
> at
>
org.apache.tools.ant.Project.executeTargets(Project.java:1068)
>
> at
>
org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:42 
\
3)
>
> at
>
org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:1 
\
37)
>
> Caused by: java.io.IOException
>
> at
>
org.apache.tools.ant.filters.ClassConstants.read(ClassConstants.java:136)
>
> at
>
org.apache.tools.ant.filters.BaseFilterReader.read(BaseFilterReader.java:86)
>
> at java.io.Reader.read(Unknown Source)
>
> at
>
org.apache.tools.ant.util.FileUtils.readFully(FileUtils.java:1107)
>
> at
>
org.apache.tools.ant.filters.util.ChainReaderHelper.readFully(ChainReaderHelper.java:2 
\
31)
>
> at
>
org.apache.tools.ant.taskdefs.LoadProperties.execute(LoadProperties.java:204)
>
> ... 11 more
>
> --- Nested Exception ---
>
> java.io.IOException
>
> at
>
org.apache.tools.ant.filters.ClassConstants.read(ClassConstants.java:136)
>
> at
>
org.apache.tools.ant.filters.BaseFilterReader.read(BaseFilterReader.java:86)
>
> at java.io.Reader.read(Unknown Source)
>
> at
>
org.apache.tools.ant.util.FileUtils.readFully(FileUtils.java:1107)
>
> at
>
org.apache.tools.ant.filters.util.ChainReaderHelper.readFully(ChainReaderHelper.java:2 
\
31)
>
> at
>
org.apache.tools.ant.taskdefs.LoadProperties.execute(LoadProperties.java:204)
>
> at
>
org.apache.tools.ant.UnknownElement.execute(UnknownElement.java:275)
>
> at org.apache.tools.ant.Task.perform(Task.java:364)
>
> at
> org.apache.tools.ant.Target.execute(Target.java:341)
>
> at
>
org.apache.tools.ant.Target.performTasks(Target.java:369)
>
> at
>
org.apache.tools.ant.Project.executeSortedTargets(Project.java:1216)
>
> at
>
org.apache.tools.ant.Project.executeTarget(Project.java:1185)
>
> at
>
org.apache.tools.ant.helper.DefaultExecutor.executeTargets(DefaultExecutor.java:40)
>
> at
>
org.eclipse.ant.internal.ui.antsupport.EclipseDefaultExecutor.executeTargets(EclipseDe 
\
faultExecutor.java:32)
>
> at
>
org.apache.tools.ant.Project.executeTargets(Project.java:1068)
>
> at
>
org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.run(InternalAntRunner.java:42 
\
3)
>
> at
>
org.eclipse.ant.internal.ui.antsupport.InternalAntRunner.main(InternalAntRunner.java:1 
\
37)
>
>
>
> What am I doing wrong? By the way, I've tried this
> task both ways, with the
> convenience method and the "long way" but all
> approaches fail on
> java.io.IOException.
>
> Also, to accomplish what I want to do, am I correct
> in assuming that I will
> need to put two or three filters in sequence in the
> task? From what I see in
> the manual, I think I need to have everything within
> a LoadProperties task,
> then use a ConstantChain to pull out all of the
> constants, then use a
> LineContains to find the line containing my
> constant,
> DESIRED_EMPLOYMENT_HISTORY_FORMAT, then store that
> constant and its value as
> a property so that I end up with a property named
> DESIRED_EMPLOYMENT_HISTORY_FORMAT with a value of
> PARAGRAPH_FORMAT or
> LIST_FORMAT. Is that more-or-less correct?
>
> If someone could please help me get started, I would
> really appreciate it. I
> think I'm doing what the manual says but nothing
> seems to work. What's the
> trick?
>
> By the way, assuming this does what I want, thank
> you for pointing this
> technique out to me. I'd seen the term FilterChain
> before but had never
> looked at the article to see what they did.
>
> --
>
> Rhino
>
>



-- 
No virus found in this outgoing message.
Checked by AVG Free Edition.
Version: 7.1.375 / Virus Database: 267.15.5/256 - Release Date: 10/02/2006


---------------------------------------------------------------------
To unsubscribe, e-mail: user-unsubscribe@ant.apache.org
For additional commands, e-mail: user-help@ant.apache.org


Mime
View raw message