You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2003/08/30 14:32:32 UTC
cvs commit: incubator-geronimo/modules/core/src/test/org/apache/geronimo/test/protocol/mockproto Handler.java MockInputStream.java MockURLConnection.java
jdillon 2003/08/30 05:32:32
Modified: modules/core/src/test/org/apache/geronimo/deployment/repository
DownloadTest.java
Added: modules/core/src/test/org/apache/geronimo/test/protocol/mockproto
Handler.java MockInputStream.java
MockURLConnection.java
Log:
o Applied modified patch GERONIMO-38 (patch2)
Revision Changes Path
1.2 +65 -44 incubator-geronimo/modules/core/src/test/org/apache/geronimo/deployment/repository/DownloadTest.java
Index: DownloadTest.java
===================================================================
RCS file: /home/cvs/incubator-geronimo/modules/core/src/test/org/apache/geronimo/deployment/repository/DownloadTest.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- DownloadTest.java 12 Aug 2003 04:16:47 -0000 1.1
+++ DownloadTest.java 30 Aug 2003 12:32:32 -0000 1.2
@@ -62,20 +62,77 @@
import junit.framework.TestCase;
+import org.apache.geronimo.common.net.protocol.Protocols;
+
+import org.apache.geronimo.test.protocol.mockproto.Handler;
+import org.apache.geronimo.test.protocol.mockproto.MockURLConnection;
+
/**
*
*
* @version $Revision$ $Date$
*/
-public class DownloadTest extends TestCase {
+public class DownloadTest
+ extends TestCase
+{
private File localRoot;
private File fakeRemoteRoot;
private ComponentRepository repo;
private ComponentDescription desc;
private ComponentDescription desc2;
private ComponentDescription desc3;
+ private MockURLConnection urlConnection;
private File testArchive;
+
+ protected void setUp() throws Exception {
+ Protocols.appendHandlerPackage("org.apache.geronimo.test.protocol");
+
+ File temp = new File(System.getProperty("java.io.tmpdir"));
+ localRoot = new File(temp, "localRepo");
+
+ desc = new ComponentDescription("product", "1.1.1", "myproduct/product-1.1.1.txt");
+ fakeRemoteRoot = new File(temp, "remoteRepo");
+ testArchive = new File(fakeRemoteRoot, desc.getLocation());
+ testArchive.getParentFile().mkdirs();
+ testArchive.createNewFile();
+ FileOutputStream fos = new FileOutputStream(testArchive);
+ PrintWriter writer = new PrintWriter(fos);
+ writer.println("Hello World");
+ writer.flush();
+ writer.close();
+
+ String location = "commons-logging/jars/commons-logging-1.0.1.jar";
+ desc2 = new ComponentDescription("commons-logging", "1.0.1", location);
+ desc3 = new ComponentDescription("nosuchfile", "noversion", "nolocation");
+
+ repo = new ComponentRepository(localRoot);
+ repo.addRemoteRoot(fakeRemoteRoot.toURL());
+
+ String urlspec = "mockproto://www.ibiblio.org/maven/";
+ urlConnection = Handler.registerURL(urlspec + location, "This is test file content");
+ repo.addRemoteRoot(new URL(urlspec));
+ }
+
+ protected void tearDown() throws Exception {
+ Protocols.setHandlerPackages(Protocols.getSystemHandlerPackages());
+
+ recursiveDelete(localRoot);
+ recursiveDelete(fakeRemoteRoot);
+ }
+ private void recursiveDelete(File root) throws Exception {
+ File[] files = root.listFiles();
+ for (int i = 0; i < files.length; i++) {
+ File file = files[i];
+ if (file.isDirectory()) {
+ recursiveDelete(file);
+ } else {
+ file.delete();
+ }
+ }
+ root.delete();
+ }
+
public void testLocalCopy() throws Exception {
assertTrue(repo.ensureLocal(desc));
@@ -106,12 +163,18 @@
repo.removeLocal(desc2);
assertFalse(localFile.exists());
+
+ assertTrue("Was expecting clean up of resources",
+ urlConnection.getState() == MockURLConnection.STATE_CLOSED);
}
public void testNotFound() throws Exception {
assertFalse(repo.ensureLocal(desc3));
File localFile = new File(localRoot, desc3.getLocation());
assertFalse(localFile.exists());
+ assertTrue("Was expecting clean up",
+ ( urlConnection.getState() == MockURLConnection.STATE_CLOSED
+ || urlConnection.getState() == MockURLConnection.STATE_INIT));
}
private void sleep(long naptime) {
@@ -120,47 +183,5 @@
} catch (InterruptedException e) {
// ignore
}
- }
- protected void setUp() throws Exception {
- super.setUp();
- File temp = new File(System.getProperty("java.io.tmpdir"));
- localRoot = new File(temp, "localRepo");
-
- desc = new ComponentDescription("product", "1.1.1", "myproduct/product-1.1.1.txt");
- fakeRemoteRoot = new File(temp, "remoteRepo");
- testArchive = new File(fakeRemoteRoot, desc.getLocation());
- testArchive.getParentFile().mkdirs();
- testArchive.createNewFile();
- FileOutputStream fos = new FileOutputStream(testArchive);
- PrintWriter writer = new PrintWriter(fos);
- writer.println("Hello World");
- writer.flush();
- writer.close();
-
- desc2 = new ComponentDescription("commons-logging", "1.0.1", "commons-logging/jars/commons-logging-1.0.1.jar");
- desc3 = new ComponentDescription("nosuchfile", "noversion", "nolocation");
-
- repo = new ComponentRepository(localRoot);
- repo.addRemoteRoot(fakeRemoteRoot.toURL());
- repo.addRemoteRoot(new URL("http://www.ibiblio.org/maven/"));
- }
-
- protected void tearDown() throws Exception {
- super.tearDown();
- recursiveDelete(localRoot);
- recursiveDelete(fakeRemoteRoot);
- }
-
- private void recursiveDelete(File root) throws Exception {
- File[] files = root.listFiles();
- for (int i = 0; i < files.length; i++) {
- File file = files[i];
- if (file.isDirectory()) {
- recursiveDelete(file);
- } else {
- file.delete();
- }
- }
- root.delete();
}
}
1.1 incubator-geronimo/modules/core/src/test/org/apache/geronimo/test/protocol/mockproto/Handler.java
Index: Handler.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Geronimo" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Geronimo", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
package org.apache.geronimo.test.protocol.mockproto;
import java.net.URLConnection;
import java.net.URL;
import java.net.MalformedURLException;
import java.net.URLStreamHandler;
import java.io.IOException;
import java.io.InputStream;
import java.io.StringBufferInputStream;
import java.util.HashMap;
import java.util.Map;
/**
* URL handler foe the 'mockproto' protocol.
*
* @version $Revision: 1.1 $ $Date: 2003/08/30 12:32:32 $
*/
public class Handler
extends URLStreamHandler
{
static Map urlMap = new HashMap();
protected URLConnection openConnection(URL u) throws IOException {
if (urlMap.containsKey(u)) {
return (URLConnection) urlMap.get(u);
} else {
throw new IOException("Don't have the url in my map");
}
}
public static MockURLConnection registerURL(String urlspec, String contents)
throws MalformedURLException
{
URL url = new URL(urlspec);
MockURLConnection c = new MockURLConnection(url, contents);
urlMap.put(url, c);
return c;
}
}
1.1 incubator-geronimo/modules/core/src/test/org/apache/geronimo/test/protocol/mockproto/MockInputStream.java
Index: MockInputStream.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Geronimo" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Geronimo", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
package org.apache.geronimo.test.protocol.mockproto;
import java.io.StringBufferInputStream;
import java.io.IOException;
/**
* A mock input stream for mockproto urls.
*
* @version $Revision: 1.1 $ $Date: 2003/08/30 12:32:32 $
*/
public final class MockInputStream
extends StringBufferInputStream
{
private MockURLConnection conn;
public MockInputStream(MockURLConnection conn, String s) {
super(s);
this.conn = conn;
}
public void close() throws IOException {
conn.close();
}
}
1.1 incubator-geronimo/modules/core/src/test/org/apache/geronimo/test/protocol/mockproto/MockURLConnection.java
Index: MockURLConnection.java
===================================================================
/* ====================================================================
* The Apache Software License, Version 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The names "Apache" and "Apache Software Foundation" and
* "Apache Geronimo" must not be used to endorse or promote products
* derived from this software without prior written permission. For
* written permission, please contact apache@apache.org.
*
* 5. Products derived from this software may not be called "Apache",
* "Apache Geronimo", nor may "Apache" appear in their name, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
* ====================================================================
*
* This software consists of voluntary contributions made by many
* individuals on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*
* ====================================================================
*/
package org.apache.geronimo.test.protocol.mockproto;
import java.net.URLConnection;
import java.net.URL;
import java.io.IOException;
import java.io.InputStream;
/**
* URL connection for the 'mockproto' protocol.
*
* @version $Revision: 1.1 $ $Date: 2003/08/30 12:32:32 $
*/
public final class MockURLConnection
extends URLConnection
{
private String urlContents;
private int state;
public static int STATE_INIT = 0;
public static int STATE_OPENED = 1;
public static int STATE_CLOSED = 2;
public MockURLConnection(URL url, String urlContents) {
super(url);
this.urlContents = urlContents;
this.state = STATE_INIT;
}
public void connect() throws IOException {
this.state = STATE_OPENED;
}
public InputStream getInputStream() {
return new MockInputStream(this, urlContents);
}
public void close() throws IOException {
if (this.state != STATE_CLOSED) {
this.state = STATE_CLOSED;
}
else {
throw new IOException("Closing an already closed connection");
}
}
public int getState() {
return this.state;
}
}