package org.apache.maven.diagrams.connector_api.descriptor;
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you 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 java.util.EnumSet;
import java.util.List;
import org.apache.maven.diagrams.connector_api.ConnectorConfiguration;
import org.apache.maven.diagrams.connector_api.ConnectorException;
import org.apache.maven.diagrams.connector_api.DiagramConnector;
/**
* ConnectorDescriptor is the same for Connector as PluginDescriptor for MavenPlugin.
*
* It contains basic information about connector and the xstream mappings for the connector's configuration file.
*
* In most cases the class is serialized and deserialized form XML by {@link ConnectorDescriptorBuilder}
*
* @author <a href="mailto:ptab@newitech.com">Piotr Tabor</a>
* @version $Id$
*/
public class DefaultConnectorDescriptor implements ConnectorDescriptor
{
private String groupId;
private String artifactId;
private String version;
private String name;
private String description;
private String mainClassName;
// private String source;
private Class<? extends ConnectorConfiguration> configurationClass;
private ConnectorInterfaceEnum preferredInterface;
private EnumSet<ConnectorInterfaceEnum> providedInterfaces;
// private List<Parameter> parameters;
private List<Mapping> mappings;
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#createConnectorInstance()
*/
public DiagramConnector createConnectorInstance() throws ConnectorException
{
try
{
return (DiagramConnector) this.getClass().getClassLoader().loadClass( mainClassName ).newInstance();
}
catch ( InstantiationException e )
{
throw new ConnectorException( "Cannot create instance of the connector: " + artifactId + ":", e );
}
catch ( IllegalAccessException e )
{
throw new ConnectorException( "Cannot create instance of the connector: " + artifactId + ":", e );
}
catch ( ClassNotFoundException e )
{
throw new ConnectorException( "Cannot create instance of the connector: " + artifactId + ":", e );
}
}
/*---------------- Getters and Setters ---------------------*/
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#getGroupId()
*/
public String getGroupId()
{
return groupId;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#setGroupId(java.lang.String)
*/
public void setGroupId( String groupId )
{
this.groupId = groupId;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#getArtifactId()
*/
public String getArtifactId()
{
return artifactId;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#setArtifactId(java.lang.String)
*/
public void setArtifactId( String artifactId )
{
this.artifactId = artifactId;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#getVersion()
*/
public String getVersion()
{
return version;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#setVersion(java.lang.String)
*/
public void setVersion( String version )
{
this.version = version;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#getDescription()
*/
public String getDescription()
{
return description;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#setDescription(java.lang.String)
*/
public void setDescription( String description )
{
this.description = description;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#getProvidedInterfaces()
*/
public EnumSet<ConnectorInterfaceEnum> getProvidedInterfaces()
{
return providedInterfaces;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#setProvidedInterfaces(java.util.EnumSet)
*/
public void setProvidedInterfaces( EnumSet<ConnectorInterfaceEnum> providedInterfaces )
{
this.providedInterfaces = providedInterfaces;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#getPreferredInterface()
*/
public ConnectorInterfaceEnum getPreferredInterface()
{
return preferredInterface;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#setPreferredInterface(org.apache.maven.diagrams.connector_api.descriptor.ConnectorInterfaceEnum)
*/
public void setPreferredInterface( ConnectorInterfaceEnum preferredInterface )
{
this.preferredInterface = preferredInterface;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#getName()
*/
public String getName()
{
return name;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#setName(java.lang.String)
*/
public void setName( String name )
{
this.name = name;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#getConfigurationClass()
*/
public Class<? extends ConnectorConfiguration> getConfigurationClass()
{
return configurationClass;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#setConfigurationClass(java.lang.Class)
*/
public void setConfigurationClass( Class<? extends ConnectorConfiguration> configurationClass )
{
this.configurationClass = configurationClass;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#getMappings()
*/
public List<Mapping> getMappings()
{
return mappings;
}
/*
* (non-Javadoc)
*
* @see org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor#setMappings(java.util.List)
*/
public void setMappings( List<Mapping> mappings )
{
this.mappings = mappings;
}
public void setConfigurationClassName( String s ) throws ClassNotFoundException
{
configurationClass = (Class<? extends ConnectorConfiguration>) this.getClass().getClassLoader().loadClass( s );
}
}