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