package org.apache.maven.diagrams.gui.bindings.connectors; /* * 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 org.apache.maven.diagrams.connector_api.ConnectorConfiguration; import org.apache.maven.diagrams.connector_api.DiagramConnector; import org.apache.maven.diagrams.gui.connector.AbstractConnectorConfigurationPanel; import org.apache.maven.diagrams.gui.renderers.ConfigurableRenderer; import org.apache.maven.diagrams.gui.renderers.RendererConfiguration; import org.apache.maven.diagrams.gui.renderers.RendererConfigurationPanel; /** * @author <a href="mailto:ptab@newitech.com">Piotr Tabor</a> * @version $Id$ */ public class Binding { private String name; private String connectorClassName; private String graphType; private String connectorConfigurationPanelClassName; private String rendererClassName; private String rendererConfigurationPanelClassName; private String rendererConfigurationClassName; public String getName() { return name; } public void setName( String name ) { this.name = name; } public String getConnectorClassName() { return connectorClassName; } public void setConnectorClassName( String connectorClassName ) { this.connectorClassName = connectorClassName; } public String getGraphType() { return graphType; } public void setGraphType( String graphType ) { this.graphType = graphType; } public String getConnectorConfigurationPanelClassName() { return connectorConfigurationPanelClassName; } public void setConnectorConfigurationPanelClassName( String connectorConfigurationPanelClassName ) { this.connectorConfigurationPanelClassName = connectorConfigurationPanelClassName; } // -------------------------------------------------------------------------- public String getRendererConfigurationPanelClassName() { return rendererConfigurationPanelClassName; } public void setRendererConfigurationPanelClassName( String rendererConfigurationPanelClassName ) { this.rendererConfigurationPanelClassName = rendererConfigurationPanelClassName; } public String getRendererConfigurationClassName() { return rendererConfigurationClassName; } public void setRendererConfigurationClassName( String rendererConfigurationClassName ) { this.rendererConfigurationClassName = rendererConfigurationClassName; } public String getRendererClassName() { return rendererClassName; } public void setRendererClassName( String rendererClassName ) { this.rendererClassName = rendererClassName; } /* ========================== Class resolving ================================ */ public ResolvedBinding<DiagramConnector> resolveBinding() throws ResolveBindingException { return resolveBinding( this.getClass().getClassLoader() ); } @SuppressWarnings( "unchecked" ) public ResolvedBinding<DiagramConnector> resolveBinding( ClassLoader classLoader ) throws ResolveBindingException { try { ResolvedBinding<DiagramConnector> resolvedBinding = new ResolvedBinding<DiagramConnector>(); resolvedBinding.setName( name ); resolvedBinding.setGraphType( graphType ); Class<DiagramConnector> resolvedDiagramConnectorClass = (Class<DiagramConnector>) classLoader.loadClass( connectorClassName ); resolvedBinding.setConnectorClass( resolvedDiagramConnectorClass ); Class<AbstractConnectorConfigurationPanel<ConnectorConfiguration>> resolvedConnectorConfigurationPanelClass; resolvedConnectorConfigurationPanelClass = (Class<AbstractConnectorConfigurationPanel<ConnectorConfiguration>>) classLoader.loadClass( connectorConfigurationPanelClassName ); resolvedBinding.setConnectorConfigurationPanelClass( resolvedConnectorConfigurationPanelClass ); if ( rendererClassName != null ) resolvedBinding.setRenderer( (Class<ConfigurableRenderer>) classLoader.loadClass( rendererClassName ) ); if ( rendererConfigurationPanelClassName != null ) resolvedBinding.setRendererConfigurationPanel( (Class<RendererConfigurationPanel>) classLoader.loadClass( rendererConfigurationPanelClassName ) ); if ( rendererConfigurationClassName != null ) resolvedBinding.setRendererConfiguration( (Class<RendererConfiguration>) classLoader.loadClass( rendererConfigurationClassName ) ); return resolvedBinding; } catch ( ClassNotFoundException e ) { throw new ResolveBindingException( "Cannot create binding named:" + name, e ); } catch ( ClassCastException e ) { throw new ResolveBindingException( "Cannot create binding named:" + name, e ); } } }