Hi Guys

here is proposed for MonitorInputStream to implement SharedInputStream
taking remainder of the day to locate "paying work"..No work in the US but 
Afghanistan looks promising
I'll checkin tommorrow to follow-up..thanks

/*
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements.  See the NOTICE file distributed with
 * this work for additional information regarding copyright ownership.
 * The ASF licenses this file to You under the Apache License, Version 2.0
 * (the "License"); you may not use this file except in compliance with
 * the License.  You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */
package org.apache.commons.vfs.util;

import java.io.BufferedInputStream;
import java.io.IOException;
import java.io.InputStream;

import javax.mail.internet.SharedInputStream;
/**
 * An InputStream that provides buffering and end-of-stream monitoring.
 *
 * @author <a href="mailto:adammurd...@apache.org";>Adam Murdoch</a>
 * @version $Revision: 480428 $ $Date: 2006-11-29 07:15:24 +0100 (Wed, 29 Nov 
2006) $
 */
public class MonitorInputStream extends BufferedInputStream implements 
SharedInputStream   /* MCG added SharedInputStream for mark capability */
{
    private boolean finished;
    private long count;
    public java.io.InputStream in;
    public java.io.InputStream newStream(long l1, long l2)
    {
     this.in= new java.io.BufferedInputStream(in,(int)l1);
     return in;
    }
    public MonitorInputStream(InputStream in)
    {
        super(in);
        this.in=in;
        count = 0;
    }
    public long position=0;
    public long getPosition()
    {
        return this.position;
    }
    /**
     * Reads a character.
     */
    public int read() throws IOException
    {
        if (finished)
        {
            return -1;
        }

        final int ch = super.read();
        if (ch != -1)
        {
            count++;
            return ch;
        }

        /* MCG check for mark MCG */
        if(readLimit!=0) return 0;

        close();
        return -1;
    }
    public int resetCount = 0; /* MCG for mark capability */
    public int readLimit=0;    /* indicates a mark on the file */
    public synchronized void mark(int readlimit)
    {
        super.mark(readlimit);
        this.readLimit = readLimit;
        resetCount = 0;
    }

    /**
     * Reads bytes from this input stream.error occurs.
     */
    public int read(final byte[] buffer, final int offset, final int length)
        throws IOException
    {
        if (finished)
        {
            return -1;
        }

        final int nread = super.read(buffer, offset, length);
        if (nread != -1)
        {
            count += nread;
            return nread;
        }

        /* MCG check for mark MCG */
        if(readLimit!=0) return 0;

        close();
        return -1;
    }

    /**
     * Closes this input stream and releases any system resources
     * associated with the stream.
     */
    public void close() throws IOException
    {
        if (finished)
        {
            return;
        }

        // Close the stream
        IOException exc = null;
        try
        {
            super.close();
        }
        catch (final IOException ioe)
        {
            exc = ioe;
        }

        // Notify that the stream has been closed
        try
        {
            onClose();
        }
        catch (final IOException ioe)
        {
            exc = ioe;
        }

        finished = true;
        if (exc != null)
        {
            throw exc;
        }
    }

    /**
     * Called after the stream has been closed.  This implementation does
     * nothing.
     */
    protected void onClose() throws IOException
    {
    }

    /**
     * Get the nuber of bytes read by this input stream
     */
    public long getCount()
    {
        return count;
    }
}

pom.xml used for compile,package and deploy
<?xml version="1.0" encoding="UTF-8"?>

<!--
   Licensed to the Apache Software Foundation (ASF) under one or more
   contributor license agreements.  See the NOTICE file distributed with
   this work for additional information regarding copyright ownership.
   The ASF licenses this file to You under the Apache License, Version 2.0
   (the "License"); you may not use this file except in compliance with
   the License.  You may obtain a copy of the License at
  
        http://www.apache.org/licenses/LICENSE-2.0
  
   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.
  -->

<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>

    <modelVersion>4.0.0</modelVersion>
    <packaging>jar</packaging>

    <name>core</name>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-vfs</artifactId>
    <version>1.0-RC8-SNAPSHOT</version>
    <description>VFS is a Virtual File System library.</description>

    <organization>
        <name>Apache Software Foundation</name>
        <url>http://www.apache.org/</url>
    </organization>
    <licenses>
        <license>
            <name>The Apache Software License, Version 2.0</name>
            <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
            <distribution>repo</distribution>
        </license>
    </licenses>

    <dependencies>
            <dependency>
                  <groupId>org.jvnet.hudson.plugins</groupId>
              <artifactId>email-ext</artifactId>
              <version>2.10-SNAPSHOT</version>
            </dependency>
        <dependency>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
            <version>1.0.4</version>
        </dependency>
        <dependency>
            <groupId>ant</groupId>
            <artifactId>ant</artifactId>
            <version>1.6.2</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>commons-net</groupId>
            <artifactId>commons-net</artifactId>
            <version>1.4.1</version>
            <optional>true</optional>
        </dependency>
        <!--TODO:Revert to [compress] if/when released
            <dependency>
              <groupId>commons-compress</groupId>
              <artifactId>commons-compress</artifactId>
              <version>SNAPSHOT</version>
              <optional>true</optional>
            </dependency-->
        <dependency>
            <groupId>commons-collections</groupId>
            <artifactId>commons-collections</artifactId>
            <version>3.1</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>jdom</groupId>
            <artifactId>jdom</artifactId>
            <version>1.0</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>commons-httpclient</groupId>
            <artifactId>commons-httpclient</artifactId>
            <version>2.0.2</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>com.jcraft</groupId>
            <artifactId>jsch</artifactId>
            <version>0.1.23</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>xml-apis</groupId>
            <artifactId>xml-apis</artifactId>
            <version>1.0.b2</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>oro</groupId>
            <artifactId>oro</artifactId>
            <version>2.0.8</version>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
            <scope>test</scope>
        </dependency>
    </dependencies>

    <build>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <excludes>
                    <exclude>**/*.java</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>..</directory>
                <targetPath>META-INF</targetPath>
                <includes>
                    <include>NOTICE.txt</include>
                </includes>
            </resource>
            <resource>
                <directory>..</directory>
                <includes>
                    <include>LICENSE.txt</include>
                </includes>
            </resource>
        </resources>

        <plugins>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <configuration>
                    <target>1.3</target>
                    <source>1.3</source>
                </configuration>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-jar-plugin</artifactId>
                <executions>
                    <execution>
                        <goals>
                            <goal>test-jar</goal>
                        </goals>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-antrun-plugin</artifactId>
                <executions>
                    <execution>
                        <phase>generate-test-resources</phase>
                        <configuration>
                            <tasks>
                                <echo message="Setup test-data environment" />
                                <delete 
dir="${project.build.outputDirectory}/../test-data"/>
                                <copy 
todir="${project.build.outputDirectory}/../test-data">
                                    <fileset dir="src/test/test-data">
                                        <include name="**/*" />
                                    </fileset>
                                </copy>
                            </tasks>
                        </configuration>
                    </execution>
                </executions>
            </plugin>

            <plugin>
                <!-- surfire do not honor suite(), see MSUREFIRE-131 why our 
tests wont work with maven 2 -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-surefire-plugin</artifactId>
                <configuration>
                    <systemProperties>
                        <property>
                            <name>test.basedir</name>
                            <value>target/test-data</value>
                        </property>
                    </systemProperties>
                </configuration>
            </plugin>

        </plugins>

    </build>
</project>

HTH
Martin Gainty 
______________________________________________ 
Please do not alter or disrupt this transmission. Thank You




> From: ronak.pa...@baesystems.com
> To: user@commons.apache.org
> Date: Mon, 18 Oct 2010 17:51:30 -0700
> Subject: RE: Commons Configuration 1.7
> 
> Hi Ralph,
> 
> The issue is:
> 
> https://issues.apache.org/jira/browse/VFS-301.
> 
> It's still open...and I don't see any patches. 
> 
> This bug is a blocker for me and so I have to drop down to using java.io.File 
> to do my actual file reading which is not desirable.
> 
> Thanks,
> 
> Ronak Patel
> 
> -----Original Message-----
> From: Ralph Goers [mailto:ralph.go...@dslextreme.com] 
> Sent: Monday, October 18, 2010 5:47 PM
> To: Commons Users List
> Subject: Re: Commons Configuration 1.7
> 
> What is the issue number?  Did it have a patch with it?
> 
> Ralph
> 
> On Oct 18, 2010, at 5:39 PM, Patel, Ronak Avinash (US SSA) wrote:
> 
> > Hi Ralph,
> > 
> > That's great news!!
> > 
> > I was wondering if you also happened to fix the bug related to setting 
> > marks and resetting the InputStream being returned by the 
> > FileObject#FileContent object.
> > 
> > Last I remember, it still wasn't addressed.
> > 
> > Thanks,
> > 
> > Ronak Patel
> > 
> > -----Original Message-----
> > From: Ralph Goers [mailto:ralph.go...@dslextreme.com] 
> > Sent: Monday, October 18, 2010 5:36 PM
> > To: Commons Users List
> > Subject: Re: Commons Configuration 1.7
> > 
> > 
> > On Oct 18, 2010, at 12:47 PM, Oliver Heger wrote:
> > 
> >> Am 14.10.2010 02:02, schrieb Patel, Ronak Avinash (US SSA):
> >>> Hi,
> >>> 
> >>> I have a situation where I need to use the 
> >>> VFSFileMonitorReloadingStrategy  class mentioned in this post: 
> >>> https://issues.apache.org/jira/browse/CONFIGURATION-202.
> >>> However, there is no mention of when this class will be added to a 
> >>> downloadable build of Commons Configuration.
> >>> 
> >>> When is Commons Configuration 1.7 due to be out?
> >> 
> >> The problem is that due to the VFS additions Commons Configuration now 
> >> depends on a snapshot version of Commons VFS. So before Configuration 1.7 
> >> can be released VFS 2.0 has to be published.
> >> 
> >> Unfortunately I don't know the status of this code base nor a timeline for 
> >> a release. Can one of the VFS developers answer this?
> >> 
> > 
> > I consider VFS 2.0 ready for a release. It has been on my todo list 
> > forever. I'll be at ApacheCon so maybe some of the other Commons folks can 
> > work with me during the hackathon to get it done.
> > 
> > Ralph
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
> > For additional commands, e-mail: user-h...@commons.apache.org
> > 
> > 
> > ---------------------------------------------------------------------
> > To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
> > For additional commands, e-mail: user-h...@commons.apache.org
> > 
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
> For additional commands, e-mail: user-h...@commons.apache.org
> 
> 
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: user-unsubscr...@commons.apache.org
> For additional commands, e-mail: user-h...@commons.apache.org
> 
                                          

Reply via email to