package org.apache.maven.diagrams.connector_api; import java.io.InputStream; import java.io.InputStreamReader; import org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor; import org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptorBuilder; import org.codehaus.plexus.configuration.PlexusConfigurationException; import org.codehaus.plexus.logging.AbstractLogEnabled; /** * It is base (abstract) implementation of the connector. It automatically creates ConnectorDescriptor from * "/META-INF/connector.xml" file and also keeps connectorContext (getter and setter). * * @author Piotr Tabor * */ public abstract class AbstractDiagramConnector extends AbstractLogEnabled implements DiagramConnector { private ConnectorDescriptor descriptor = null; private final String CONNECTOR_DESCRIPTOR_FILE = "/META-INF/connector.xml"; /** * Default implementation - reads and parses CONNECTOR_DESCRIPTOR_FILE file * * @throws ConnectorException */ public ConnectorDescriptor getConnectorDescriptor() throws ConnectorException { if ( descriptor == null ) { ConnectorDescriptorBuilder connector = new ConnectorDescriptorBuilder(); try { InputStream is = ConnectorDescriptor.class.getResourceAsStream( CONNECTOR_DESCRIPTOR_FILE ); if ( is == null ) throw new ConnectorException( "Cannot find file: " + CONNECTOR_DESCRIPTOR_FILE ); descriptor = connector.build( new InputStreamReader( is ) ); } catch ( PlexusConfigurationException e ) { throw new ConnectorException( "Cannot read connector descriptor from file :" + CONNECTOR_DESCRIPTOR_FILE, e ); } } return descriptor; } // public void setConnectorContext( ConnectorContext context ) // { // connectorContext = context; // } // // public ConnectorContext getConnectorContext() // { // return connectorContext; // } // // public Logger getLogger() // { // // return ( connectorContext != null ) ? connectorContext.getLogger() : null; // } }