193db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung/* 293db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung * Copyright (C) 2017 The Android Open Source Project 393db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung * 493db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except 593db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung * in compliance with the License. You may obtain a copy of the License at 693db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung * 793db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung * http://www.apache.org/licenses/LICENSE-2.0 893db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung * 993db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung * Unless required by applicable law or agreed to in writing, software distributed under the License 1093db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express 1193db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung * or implied. See the License for the specific language governing permissions and limitations under 1293db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung * the License. 1393db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung */ 1493db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leungpackage lockedregioncodeinjection; 1593db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung 1693db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung/** 1793db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung * Represent a specific class that is used for synchronization. A pre and post method can be 1893db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung * specified to by the user to be called right after monitor_enter and after monitor_exit 1993db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung * respectively. 2093db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung */ 2193db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leungpublic class LockTarget { 2293db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung public static final LockTarget NO_TARGET = new LockTarget("", null, null); 2393db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung 2493db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung private final String targetDesc; 2593db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung private final String pre; 2693db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung private final String post; 2793db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung 2893db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung public LockTarget(String targetDesc, String pre, String post) { 2993db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung this.targetDesc = targetDesc; 3093db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung this.pre = pre; 3193db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung this.post = post; 3293db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung } 3393db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung 3493db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung public String getTargetDesc() { 3593db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung return targetDesc; 3693db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung } 3793db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung 3893db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung public String getPre() { 3993db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung return pre; 4093db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung } 4193db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung 4293db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung public String getPreOwner() { 4393db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung return pre.substring(0, pre.lastIndexOf('.')); 4493db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung } 4593db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung 4693db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung public String getPreMethod() { 4793db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung return pre.substring(pre.lastIndexOf('.') + 1); 4893db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung } 4993db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung 5093db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung public String getPost() { 5193db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung return post; 5293db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung } 5393db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung 5493db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung public String getPostOwner() { 5593db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung return post.substring(0, post.lastIndexOf('.')); 5693db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung } 5793db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung 5893db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung public String getPostMethod() { 5993db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung return post.substring(post.lastIndexOf('.') + 1); 6093db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung } 6193db63059ad5e9e1d59c8ce013559069d566ef4cAlan Leung} 62