11cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta/* 21cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta * Copyright (C) 2013 The Android Open Source Project 31cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta * 41cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta * Licensed under the Apache License, Version 2.0 (the "License"); 51cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta * you may not use this file except in compliance with the License. 61cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta * You may obtain a copy of the License at 71cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta * 81cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta * http://www.apache.org/licenses/LICENSE-2.0 91cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta * 101cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta * Unless required by applicable law or agreed to in writing, software 111cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta * distributed under the License is distributed on an "AS IS" BASIS, 121cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 131cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta * See the License for the specific language governing permissions and 141cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta * limitations under the License. 151cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta */ 161cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta 171cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Guptapackage com.android.tools.layoutlib.create; 181cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta 191cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Guptaimport java.util.HashMap; 201cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta 211cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Guptaimport org.objectweb.asm.ClassVisitor; 221cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta 231cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Guptapublic class RefactorClassAdapter extends AbstractClassAdapter { 241cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta 251cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta private final HashMap<String, String> mRefactorClasses; 261cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta 271cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta RefactorClassAdapter(ClassVisitor cv, HashMap<String, String> refactorClasses) { 281cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta super(cv); 291cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta mRefactorClasses = refactorClasses; 301cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta } 311cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta 321cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta @Override 331cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta protected String renameInternalType(String oldClassName) { 341cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta if (oldClassName != null) { 351cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta String newName = mRefactorClasses.get(oldClassName); 361cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta if (newName != null) { 371cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta return newName; 381cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta } 391cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta int pos = oldClassName.indexOf('$'); 401cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta if (pos > 0) { 411cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta newName = mRefactorClasses.get(oldClassName.substring(0, pos)); 421cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta if (newName != null) { 431cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta return newName + oldClassName.substring(pos); 441cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta } 451cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta } 461cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta } 471cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta return oldClassName; 481cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta } 491cf5df38f4bdafa1beb2674ca548ad6d9650766bDeepanshu Gupta} 50