public Manifest( Reader r ) throws ManifestException, TaskException, IOException
public Manifest() throws TaskException
    public Manifest( Reader r )        throws ManifestException, TaskException, IOException    {        BufferedReader reader = new BufferedReader( r );        // This should be the manifest version        String nextSectionName = mainSection.read( reader );        String readManifestVersion = mainSection.getAttributeValue( ATTRIBUTE_MANIFEST_VERSION );        if( readManifestVersion != null )        {            manifestVersion = readManifestVersion;            mainSection.removeAttribute( ATTRIBUTE_MANIFEST_VERSION );        }        String line = null;        while( ( line = reader.readLine() ) != null )        {            if( line.length() == 0 )            {                continue;            }            Section section = new Section();            if( nextSectionName == null )            {                Attribute sectionName = new Attribute( line );                if( !sectionName.getName().equalsIgnoreCase( ATTRIBUTE_NAME ) )                {                    throw new ManifestException( "Manifest sections should start with a \"" + ATTRIBUTE_NAME +                                                 "\" attribute and not \"" + sectionName.getName() + "\"" );                }                nextSectionName = sectionName.getValue();            }            else            {                // we have already started reading this section                // this line is the first attribute. set it and then let the normal                // read handle the rest                Attribute firstAttribute = new Attribute( line );                section.addAttributeAndCheck( firstAttribute );            }            section.setName( nextSectionName );            nextSectionName = section.read( reader );            addConfiguredSection( section );        }    }