On Sun, 21 Apr 2002, Torsten Curdt wrote:
> > Can someone enlighten me... the ActiveMonitor does not report any file
> > changes hear as he is supposed to... I just don't get the events :(
>
> ok... I have been debugging the active monitor... and I run into this:
>
>
> in FileResource.java:
>
> public long lastModified()
> {
> return m_file.lastModified();
> }
>
>
> in Resource.java:
>
> public void testModifiedAfter( long time )
> {
> long lastModified = this.lastModified();
> if( lastModified > time )
> {
> m_eventSupport.firePropertyChange( Resource.MODIFIED,
> new Long( m_previousModified ),
> new Long( lastModified ) );
> m_previousModified = lastModified;
> }
> }
>
> Now what the active monitor does is to call the "testModifiedAfter" with
> the "System.currentTimeMillis()" as an argument. On a change the
> "testModifierAfter" is supposed to fire the "Resource.MODIFIED" event.
>
> But AFAICS the current code does something else.... If you break it down
> you get:
>
> if ( file.lastModified() > System.currentTimeMillis() ) {
> // fire event
> }
>
> Which is not much likely to happen... ;-)
> Shouldn't it be:
>
> if ( file.lastModified() > m_previousModified ) {
> // fire event
> m_previousModified = file.lastModified()
> }
>
> But then the "time" argument wouldn't make much sense...
One way to solve this is to replace this:
in ActiveMonitor:
for( int i = 0; i < resources.length; i++ )
{
resources[ i ].testModifiedAfter( currentTestTime );
~~~~~~~~~~~~~~~
}
by this:
for( int i = 0; i < resources.length; i++ )
{
resources[ i ].testModifiedAfter( resources[i].m_previousModified );
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
}
question is only if this is really desired...
Berin, how did you wanted this to work?
Do you want me to provide a patch?
--
Torsten
--
To unsubscribe, e-mail: <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>