1eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov/******************************************************************************* 2b9d1b54e300318b470d9fedccc69d75187016444Evgeny Mandrikov * Copyright (c) 2009, 2018 Mountainminds GmbH & Co. KG and Contributors 3eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * All rights reserved. This program and the accompanying materials 4eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * are made available under the terms of the Eclipse Public License v1.0 5eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * which accompanies this distribution, and is available at 6eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * http://www.eclipse.org/legal/epl-v10.html 7eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * 8eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * Contributors: 9eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * Evgeny Mandrikov - initial API and implementation 10eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * 11eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov *******************************************************************************/ 12eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikovpackage org.jacoco.core.test.filter.targets; 13eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 14eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikovimport static org.jacoco.core.test.validation.targets.Stubs.ex; 15eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikovimport static org.jacoco.core.test.validation.targets.Stubs.nop; 16eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 17eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikovimport org.jacoco.core.test.validation.targets.Stubs.StubException; 18eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 19eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov/** 20eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov * This test target is a synchronized statement. 21eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov */ 22eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikovpublic class Synchronized { 23eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 24eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov private static final Object lock = new Object(); 25eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 26eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov private static void normal() { 27eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov nop(); // $line-before$ 28eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov synchronized (lock) { // $line-monitorEnter$ 29eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov nop(); // $line-body$ 30eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov } // $line-monitorExit$ 31eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov nop(); // $line-after$ 32eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov } 33eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 34eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov private static void explicitException() { 35eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov synchronized (lock) { // $line-explicitException.monitorEnter$ 36eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov throw new StubException(); // $line-explicitException.exception$ 37eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov } // $line-explicitException.monitorExit$ 38eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov } 39eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 40eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov private static void implicitException() { 41eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov synchronized (lock) { // $line-implicitException.monitorEnter$ 42eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov ex(); // $line-implicitException.exception$ 43eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov } // $line-implicitException.monitorExit$ 44eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov } 45eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 46eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov public static void main(String[] args) { 47eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov normal(); 48eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 49eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov try { 50eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov explicitException(); 51eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov } catch (StubException e) { 52eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov } 53eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 54eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov try { 55eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov implicitException(); 56eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov } catch (StubException e) { 57eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov } 58eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov } 59eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov 60eaef191fe12fc5abc81435016dbbd69cb55d1f68Evgeny Mandrikov} 61