/*
* Copyright 2006 Werner Guttmann
*
* Licensed 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.
*/
package org.codehaus.modello.plugin.java.javasource;
/**
* JType sub-class for collections.
*
* @author <a href="mailto:werner DOT guttmann AT gmx DOT net">Werner Guttman</a>
* @version $Revision$ $Date$
* @since 1.0.4
*/
public final class JCollectionType
extends JComponentizedType
{
// --------------------------------------------------------------------------
/** Name of the actual collection instance to be used, e.g. java.util.ArrayList. */
private String _instanceName;
// --------------------------------------------------------------------------
/**
* Creates an instance of a collection type, of type 'collectionName'.
*
* @param typeName Name of the collection type interface.
* @param componentType Component type.
* @param useJava50 True if Java 5.0 should be used.
*/
public JCollectionType( final String typeName, final JType componentType, final boolean useJava50 )
{
super( typeName, componentType, useJava50 );
}
/**
* Creates an instance of a collection type, of type 'collectionName'.
*
* @param typeName Name of the collection type interface.
* @param instanceName Name of the actual collection type instance.
* @param componentType Component type.
* @param useJava50 True if Java 5.0 should be used.
*/
public JCollectionType( final String typeName, final String instanceName, final JType componentType,
final boolean useJava50 )
{
super( typeName, componentType, useJava50 );
_instanceName = instanceName;
}
// --------------------------------------------------------------------------
/**
* Returns the instance name of this collection type.
*
* @return The instance name of this collection type.
*/
public String getInstanceName()
{
if ( _instanceName != null )
{
if ( isUseJava50() )
{
return _instanceName + "<" + getComponentType().toString() + ">";
}
return _instanceName + "/*<" + getComponentType().toString() + ">*/";
}
return toString();
}
/**
* {@inheritDoc} <br/>
* Returns the String representation of this JType.
*/
public String toString()
{
if ( isUseJava50() )
{
return getName() + "<" + getComponentType().toString() + ">";
}
return getName() + "/*<" + getComponentType().toString() + ">*/";
}
// --------------------------------------------------------------------------
}