You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@avalon.apache.org by do...@apache.org on 2001/04/15 07:39:32 UTC
cvs commit: jakarta-avalon/src/java/org/apache/avalon/camelot SimpleFactory.java
donaldp 01/04/14 22:39:32
Added: src/java/org/apache/avalon/camelot SimpleFactory.java
Log:
Add a simple factory that just loads components from a classloader.
Revision Changes Path
1.1 jakarta-avalon/src/java/org/apache/avalon/camelot/SimpleFactory.java
Index: SimpleFactory.java
===================================================================
/*
* Copyright (C) The Apache Software Foundation. All rights reserved.
*
* This software is published under the terms of the Apache Software License
* version 1.1, a copy of which has been included with this distribution in
* the LICENSE file.
*/
package org.apache.avalon.camelot;
import java.net.URL;
/**
* This is the component that creates the components.
*
* @author <a href="mailto:donaldp@apache.org">Peter Donald</a>
*/
public class SimpleFactory
implements Factory
{
private final ClassLoader m_classLoader;
public SimpleFactory( final ClassLoader classLoader )
{
m_classLoader = classLoader;
}
/**
* Create a component whos position is indicated by locator.
*
* @param locator the locator indicating the component location
* @return the component
* @exception FactoryException if an error occurs
*/
public Object create( final Locator locator )
throws FactoryException
{
try
{
final Class clazz = m_classLoader.loadClass( locator.getName() );
return clazz.newInstance();
}
catch( final Exception e )
{
throw new FactoryException( "Unable to create " + locator.getName() +
" from " + locator.getLocation(), e );
}
}
public Object create( final Locator locator, final Class clazz )
throws FactoryException
{
final Object object = create( locator );
if( !clazz.isInstance( object ) )
{
throw new FactoryException( "Created object of type " + object.getClass().getName() +
" not compatable with type " + clazz.getName() );
}
return object;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: avalon-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: avalon-dev-help@jakarta.apache.org