package org.apache.maven.diagrams.connectors.classes;
/*
* 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.io.File;
import java.net.URISyntaxException;
import java.util.ArrayList;
import junit.framework.TestCase;
import org.apache.maven.diagrams.connector_api.ConnectorConfiguration;
import org.apache.maven.diagrams.connector_api.ConnectorException;
import org.apache.maven.diagrams.connector_api.context.ConnectorContext;
import org.apache.maven.diagrams.connector_api.context.RunMavenConnectorContext;
import org.apache.maven.diagrams.connector_api.descriptor.ConnectorDescriptor;
import org.apache.maven.diagrams.connector_api.descriptor.ConnectorInterfaceEnum;
import org.apache.maven.diagrams.connector_api.manager.ConnectorManager;
import org.apache.maven.diagrams.connectors.classes.config.AggregateEdgeType;
import org.apache.maven.diagrams.connectors.classes.config.ClassesConnectorConfiguration;
import org.apache.maven.diagrams.connectors.classes.config.EdgeType;
import org.apache.maven.diagrams.connectors.classes.config.ExcludeClasses;
import org.apache.maven.diagrams.connectors.classes.config.ImplementEdgeType;
import org.apache.maven.diagrams.connectors.classes.config.IncludeClasses;
import org.apache.maven.diagrams.connectors.classes.config.InheritanceEdgeType;
import org.apache.maven.diagrams.connectors.classes.config.Nodes;
import org.apache.maven.diagrams.graph_api.Graph;
import org.codehaus.plexus.component.repository.ComponentDependency;
public class ClassesConnectorTest extends TestCase
{
protected static ConnectorContext getContext() throws URISyntaxException
{
RunMavenConnectorContext context=new RunMavenConnectorContext();
// context.setBaseDir(new File("/home/ptab/newitech/x/pr/NITcommons/NITweblib") );
File f=new File(ClassesConnectorTest.class.getResource("/maven_test").toURI());
System.err.println(f);
context.setBaseDir(f) ;
//context.setMavenHomeDir( new File("/home/ptab/mvn21/") );
return context;
}
public void test1() throws Exception
{
ClassesConnector cc=new ClassesConnector();
ConnectorDescriptor desc=cc.getConnectorDescriptor();
assertNotNull("Cannot get connector's descriptor",desc);
assertEquals(desc.getPreferredInterface(),ConnectorInterfaceEnum.STATIC);
assertEquals(desc.getConfigurationClass(),ClassesConnectorConfiguration.class);
}
public void testCalculateGraph() throws Exception
{
ClassesConnector cc=new ClassesConnector();
ConnectorDescriptor desc=cc.getConnectorDescriptor();
assertNotNull("Cannot get connector's descriptor",desc);
assertEquals(desc.getPreferredInterface(),ConnectorInterfaceEnum.STATIC);
assertEquals(desc.getConfigurationClass(),ClassesConnectorConfiguration.class);
ConnectorManager cm=new ConnectorManager();
ClassesConnectorConfiguration conf=(ClassesConnectorConfiguration) cm.fromXML( ClassesConnectorTest.class.getResourceAsStream( "testCalculateGraph1-configuration.xml" ), desc );
cc.setConnectorContext( getContext() );
Graph g=cc.calculateGraph( conf );
System.err.println(g.getNodes());
}
public void testToXML() throws InstantiationException, IllegalAccessException, ConnectorException
{
ClassesConnector cc=new ClassesConnector();
ConnectorDescriptor desc=cc.getConnectorDescriptor();
ConnectorConfiguration con= desc.getConfigurationClass().newInstance();
ClassesConnectorConfiguration ccc=(ClassesConnectorConfiguration)con;
ccc.setFullInheritancePaths( true );
// ccc.setDependencies( new ArrayList<ComponentDependency>() );
ComponentDependency dep= new ComponentDependency();
dep.setArtifactId( "log4j" );
dep.setGroupId( "log4j" );
dep.setVersion( "1.2.8" );
//ccc.getDependencies().add( dep);
ccc.setEdges( new ArrayList<EdgeType>() );
ccc.getEdges().add(new AggregateEdgeType());
ccc.getEdges().add(new ImplementEdgeType());
ccc.getEdges().add(new InheritanceEdgeType());
ccc.setIncludes( new ArrayList<IncludeClasses>() );
ccc.getIncludes().add(new IncludeClasses("org\\.apache\\.*"));
ccc.getIncludes().add(new IncludeClasses("org\\.codehaus\\.*"));
ccc.setExcludes( new ArrayList<ExcludeClasses>() );
ccc.getExcludes().add(new ExcludeClasses("org\\.apache\\.maven\\.*",true));
ccc.getExcludes().add(new ExcludeClasses("org\\.apache\\.commons\\.*",false));
ccc.setNodes( new Nodes() );
ConnectorManager cm=new ConnectorManager();
System.out.println(cm.toXML( con,desc));
}
public void testFromXML() throws InstantiationException, IllegalAccessException, ConnectorException
{
ClassesConnector cc=new ClassesConnector();
ConnectorDescriptor desc=cc.getConnectorDescriptor();
ConnectorManager cm=new ConnectorManager();
ClassesConnectorConfiguration conf=(ClassesConnectorConfiguration) cm.fromXML( ClassesConnectorTest.class.getResourceAsStream( "/conf2.xml" ), desc );
System.out.println("==============================");
System.out.println(cm.toXML( conf, desc ));
}
}