blob: 6c99b83e3d99f54fcd90adc23c1c5588fc8a4624 [file] [log] [blame]
// Copyright 2004 The Apache Software Foundation
//
// 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.apache.tapestry.enhance.javassist;
import java.util.HashMap;
import java.util.Map;
import javassist.ClassPool;
import javassist.CtClass;
import javassist.NotFoundException;
import org.apache.tapestry.enhance.CodeGenerationException;
/**
* @author Mindbridge
* @version $Id$
* @since 3.0
*/
public class ClassMapping
{
/**
* Map of type (as Type), keyed on type name.
*
* This should be kept in synch with ParameterManager, which maintains
* a similar list.
*
**/
private Map _objectTypeMap = new HashMap();
private ClassPool _classPool;
public ClassMapping(ClassPool classPool)
{
_classPool = classPool;
initialize();
}
protected void initialize()
{
recordType("boolean", CtClass.booleanType);
recordType("short", CtClass.shortType);
recordType("int", CtClass.intType);
recordType("long", CtClass.longType);
recordType("float", CtClass.floatType);
recordType("double", CtClass.doubleType);
recordType("char", CtClass.charType);
recordType("byte", CtClass.byteType);
try
{
loadType("boolean[]");
loadType("short[]");
loadType("int[]");
loadType("long[]");
loadType("float[]");
loadType("double[]");
loadType("char[]");
loadType("byte[]");
loadType("java.lang.Object");
loadType("java.lang.Object[]");
loadType("java.lang.String");
loadType("java.lang.String[]");
}
catch (NotFoundException e)
{
// This exception should not occur since the types above must exist.
// Nevertheless...
throw new CodeGenerationException(e);
}
}
public void loadType(String type) throws NotFoundException
{
CtClass objectType = _classPool.get(type);
_objectTypeMap.put(type, objectType);
}
public void recordType(String type, CtClass objectType)
{
_objectTypeMap.put(type, objectType);
}
public CtClass getType(String type)
{
return (CtClass) _objectTypeMap.get(type);
}
}