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