package org.codehaus.modello.plugin.java.javasource; /* * Copyright (c) 2013, Codehaus.org * * Permission is hereby granted, free of charge, to any person obtaining a copy of * this software and associated documentation files (the "Software"), to deal in * the Software without restriction, including without limitation the rights to * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies * of the Software, and to permit persons to whom the Software is furnished to do * so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included in all * copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE * SOFTWARE. */ import org.codehaus.modello.model.ModelDefault; /** * JType sub-class for maps. * * @author <a href="mailto:simonetripodi@apache.org">Simone Tripodi</a> * @since 1.8 */ public final class JMapType extends JComponentizedType { // -------------------------------------------------------------------------- /** Name of the actual map instance to be used, e.g. java.util.ArrayList. */ private String _instanceName; // -------------------------------------------------------------------------- /** * Creates an instance of a map type, of type 'mapName'. * * @param typeName Name of the map type interface. * @param componentType Component type. * @param useJava50 True if Java 5.0 should be used. */ public JMapType( final String typeName, final JType componentType, final boolean useJava50 ) { super( typeName, componentType, useJava50 ); } /** * Creates an instance of a map type, of type 'mapName'. * * @param typeName Name of the map type interface. * @param instanceName Name of the actual map type instance. * @param componentType Component type. * @param useJava50 True if Java 5.0 should be used. */ public JMapType( final String typeName, final String instanceName, final JType componentType, final boolean useJava50 ) { super( typeName, componentType, useJava50 ); _instanceName = instanceName; } // -------------------------------------------------------------------------- /** * Returns the instance name of this map type. * * @return The instance name of this map type. */ public String getInstanceName() { if ( ModelDefault.PROPERTIES.equals( getName() ) ) { return _instanceName; } if ( _instanceName != null ) { String instance; int separator = _instanceName.indexOf( "()" ); if ( separator != -1 ) { instance = _instanceName.substring( 0, separator ); } else { instance = _instanceName; } if ( isUseJava50() ) { return instance + "<Object, " + getComponentType().toString() + ">()"; } return instance + "/*<Object, " + getComponentType().toString() + ">*/()"; } return toString(); } /** * {@inheritDoc} <br/> * Returns the String representation of this JType. */ public String toString() { if ( ModelDefault.PROPERTIES.equals( getName() ) ) { return getName(); } if ( isUseJava50() ) { return getName() + "<Object, " + getComponentType().toString() + ">"; } return getName() + "/*<Object, " + getComponentType().toString() + ">*/"; } // -------------------------------------------------------------------------- }