/* * Hibernate, Relational Persistence for Idiomatic Java * * License: GNU Lesser General Public License (LGPL), version 2.1 or later. * See the lgpl.txt file in the root directory or <http://www.gnu.org/licenses/lgpl-2.1.html>. */ package org.hibernate.test.bytecode.enhancement.javassist; import java.io.FileNotFoundException; import java.lang.reflect.InvocationTargetException; import java.net.URL; import java.nio.file.Files; import java.nio.file.Paths; import javassist.CtClass; import org.hibernate.bytecode.enhance.internal.javassist.EnhancerImpl; import org.hibernate.bytecode.enhance.spi.EnhancementContext; import org.hibernate.testing.TestForIssue; import org.hibernate.testing.junit4.BaseUnitTestCase; import org.junit.Test; import static org.junit.Assert.assertEquals; import static org.junit.Assert.fail; import static org.mockito.Mockito.mock; /** * @author Vlad Mihalcea */ public class EnhancerFileNotFoundTest extends BaseUnitTestCase { public static class Enhancer extends EnhancerImpl { public Enhancer(EnhancementContext enhancementContext) { super( enhancementContext ); } @Override public CtClass loadCtClassFromClass(Class<?> aClass) { return super.loadCtClassFromClass( aClass ); } } @Test @TestForIssue(jiraKey = "HHH-11307") public void test() throws ClassNotFoundException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, InstantiationException { EnhancementContext enhancementContextMock = mock( EnhancementContext.class ); Enhancer enhancer = new Enhancer( enhancementContextMock ); try { Class<?> clazz = Hidden.class; String resourceName = Hidden.class.getName().replace( '.', '/' ) + ".class"; URL url = getClass().getClassLoader().getResource( resourceName ); Files.delete( Paths.get(url.toURI()) ); enhancer.loadCtClassFromClass( clazz ); fail("Should throw FileNotFoundException!"); } catch ( Exception expected ) { assertEquals( FileNotFoundException.class, expected.getCause().getClass() ); } } private static class Hidden { } }