103a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta/* 203a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta * Copyright (C) 2013 The Android Open Source Project 303a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta * 403a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta * Licensed under the Apache License, Version 2.0 (the "License"); 503a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta * you may not use this file except in compliance with the License. 603a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta * You may obtain a copy of the License at 703a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta * 803a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta * http://www.apache.org/licenses/LICENSE-2.0 903a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta * 1003a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta * Unless required by applicable law or agreed to in writing, software 1103a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta * distributed under the License is distributed on an "AS IS" BASIS, 1203a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1303a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta * See the License for the specific language governing permissions and 1403a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta * limitations under the License. 1503a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta */ 1603a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta 1703a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Guptapackage com.android.tools.layoutlib.create; 1803a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta 1903a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Guptaimport java.util.HashMap; 2003a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta 2103a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Guptaimport org.objectweb.asm.ClassVisitor; 2203a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta 2303a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Guptapublic class RefactorClassAdapter extends AbstractClassAdapter { 2403a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta 2503a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta private final HashMap<String, String> mRefactorClasses; 2603a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta 2703a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta RefactorClassAdapter(ClassVisitor cv, HashMap<String, String> refactorClasses) { 2803a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta super(cv); 2903a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta mRefactorClasses = refactorClasses; 3003a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta } 3103a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta 3203a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta @Override 3303a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta protected String renameInternalType(String oldClassName) { 3403a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta if (oldClassName != null) { 3503a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta String newName = mRefactorClasses.get(oldClassName); 3603a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta if (newName != null) { 3703a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta return newName; 3803a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta } 3903a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta int pos = oldClassName.indexOf('$'); 4003a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta if (pos > 0) { 4103a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta newName = mRefactorClasses.get(oldClassName.substring(0, pos)); 4203a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta if (newName != null) { 4303a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta return newName + oldClassName.substring(pos); 4403a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta } 4503a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta } 4603a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta } 4703a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta return oldClassName; 4803a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta } 4903a057c1af9ca3f125c7924bf0b78da52223d8d3Deepanshu Gupta} 50