mcconnell 2003/09/09 05:56:29
Modified:
merlin/composition/impl/src/java/org/apache/avalon/composition/model/impl
DefaultContainmentModel.java
Log:
Improved reporting.
Revision Changes Path
1.4 +50 -6
avalon-sandbox/merlin/composition/impl/src/java/org/apache/avalon/composition/model/impl/DefaultContainmentModel.java
Index: DefaultContainmentModel.java
===================================================================
RCS file:
/home/cvs/avalon-sandbox/merlin/composition/impl/src/java/org/apache/avalon/composition/model/impl/DefaultContainmentModel.java,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -r1.3 -r1.4
--- DefaultContainmentModel.java 9 Sep 2003 12:32:03 -0000 1.3
+++ DefaultContainmentModel.java 9 Sep 2003 12:56:29 -0000 1.4
@@ -56,6 +56,7 @@
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLClassLoader;
+import java.net.URLConnection;
import java.util.Hashtable;
import java.util.List;
import java.util.ArrayList;
@@ -511,7 +512,8 @@
{
if( child instanceof DeploymentModel )
{
- ((DeploymentModel)child).setConfiguration(
target.getConfiguration() );
+ ((DeploymentModel)child).setConfiguration(
+ target.getConfiguration() );
}
else if( child instanceof ContainmentModel )
{
@@ -525,11 +527,13 @@
{
if( child instanceof DeploymentModel )
{
- ((DeploymentModel)child).setCategories(
target.getCategoriesDirective() );
+ ((DeploymentModel)child).setCategories(
+ target.getCategoriesDirective() );
}
else if( child instanceof ContainmentModel )
{
- ((ContainmentModel)child).setCategories(
target.getCategoriesDirective() );
+ ((ContainmentModel)child).setCategories(
+ target.getCategoriesDirective() );
}
}
}
@@ -605,7 +609,8 @@
catch( Throwable e )
{
final String error =
- "Unable to create block from embedded descriptor [" +
blockURL.toString()
+ "Unable to create block from embedded descriptor ["
+ + blockURL.toString()
+ "] in the containmment model ["
+ getQualifiedName()
+ "] due to a build related error.";
@@ -630,6 +635,14 @@
}
else if( path.endsWith( "/" ) )
{
+
+ verifyPath( path );
+
+ //
+ // TODO: add validation that the path exists
+ // before appending
+ //
+
final URL blockURL =
new URL( url.toString() + "BLOCK-INF/block.xml" );
@@ -645,7 +658,8 @@
"including composite block: " + blockURL.toString();
getLogger().debug( message );
- return createContainmentModel( getName( name, profile ), profile,
new URL[]{ url } );
+ return createContainmentModel(
+ getName( name, profile ), profile, new URL[]{ url } );
}
else
{
@@ -681,6 +695,36 @@
+ "] into the containmment model ["
+ getQualifiedName()
+ "] because of an unexpected error.";
+ throw new ModelException( error, e );
+ }
+ }
+
+ /**
+ * Verify the a path is valid. The implementation will
+ * throw an exception if a connection to a url established
+ * using the path agument cann be resolved.
+ *
+ * @exception ModelException if the path is not resolvable
+ * to a url connection
+ */
+ private void verifyPath( String path ) throws ModelException
+ {
+ try
+ {
+ URL url = new URL( path );
+ URLConnection connection = url.openConnection();
+ connection.connect();
+ }
+ catch( java.io.FileNotFoundException e )
+ {
+ final String error =
+ "Invalid path: " + path;
+ throw new ModelException( error );
+ }
+ catch( Throwable e )
+ {
+ final String error =
+ "Invalid path: " + path;
throw new ModelException( error, e );
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]