package org.codehaus.plexus.components.io.resources.proxy;
/*
* Copyright 2007 The Codehaus Foundation.
*
* Licensed 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.
*/
import org.codehaus.plexus.PlexusTestCase;
import org.codehaus.plexus.components.io.resources.AbstractPlexusIoResource;
import org.codehaus.plexus.components.io.resources.AbstractPlexusIoResourceCollection;
import org.codehaus.plexus.components.io.resources.PlexusIoResource;
import org.codehaus.plexus.components.io.resources.Stream;
import javax.annotation.Nonnull;
import java.io.Closeable;
import java.io.IOException;
import java.io.InputStream;
import java.net.URL;
import java.util.Iterator;
/**
* Test case for {@link PlexusIoProxyResourceCollection}.
*/
public class PlexusIoProxyResourceCollectionTest
extends PlexusTestCase
{
private final String[] SAMPLE_INCLUDES = { "junk.*", "test/**", "dir*/file.xml" };
private final String[] SAMPLE_EXCLUDES = { "*.junk", "somwhere/**" };
public void testGetDefaultFileSelector()
throws Exception
{
PlexusIoProxyResourceCollection resCol = new PlexusIoProxyResourceCollection( null );
// This will throw an exception if there is a bug
resCol.getDefaultFileSelector();
resCol.setIncludes( SAMPLE_INCLUDES );
resCol.setExcludes( SAMPLE_EXCLUDES );
// This will throw an exception if there is a bug
resCol.getDefaultFileSelector();
}
class CloseableIterator
implements Iterator<PlexusIoResource>, Closeable
{
boolean next = true;
boolean closed = false;
public void close()
throws IOException
{
closed = true;
}
public boolean hasNext()
{
if ( next )
{
next = false;
return true;
}
return false;
}
public PlexusIoResource next()
{
return new AbstractPlexusIoResource( "fud", 123, 22, true, false, false )
{
@Nonnull
public InputStream getContents()
throws IOException
{
return null;
}
public URL getURL()
throws IOException
{
return null;
}
};
}
public void remove()
{
throw new UnsupportedOperationException( );
}
}
public void testClosing()
throws IOException
{
final CloseableIterator closeableIterator = new CloseableIterator();
PlexusIoProxyResourceCollection resCol =
new PlexusIoProxyResourceCollection( new AbstractPlexusIoResourceCollection()
{
public Iterator<PlexusIoResource> getResources()
throws IOException
{
return closeableIterator;
}
public Stream stream()
{
throw new UnsupportedOperationException();
}
} );
Iterator<PlexusIoResource> resources1 = resCol.getResources();
resources1.hasNext();
resources1.next();
assertFalse( resources1.hasNext() );
( (Closeable) resources1 ).close();
assertTrue( closeableIterator.closed );
}
}