/** * Copyright (c) 2000-present Liferay, Inc. All rights reserved. * * This library is free software; you can redistribute it and/or modify it under * the terms of the GNU Lesser General Public License as published by the Free * Software Foundation; either version 2.1 of the License, or (at your option) * any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more * details. */ package com.liferay.testpacl.portlet; import com.liferay.blogs.kernel.service.BlogsEntryLocalService; import com.liferay.blogs.kernel.service.BlogsEntryLocalServiceUtil; import com.liferay.chat.service.EntryLocalService; import com.liferay.chat.service.EntryLocalServiceClp; import com.liferay.chat.service.EntryLocalServiceUtil; import com.liferay.portal.kernel.portlet.bridges.mvc.MVCPortlet; import com.liferay.portal.kernel.util.Portal; import com.liferay.portal.kernel.util.PortalUtil; import com.liferay.testpacl.service.FooLocalService; import com.liferay.testpacl.service.FooLocalServiceUtil; import com.liferay.testpacl.util.TestPACLUtil; import java.io.IOException; import java.lang.reflect.Field; import java.util.Objects; import javax.portlet.PortletException; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; /** * @author Brian Wing Shun Chan */ public class TestPACLPortlet extends MVCPortlet { public TestPACLPortlet() { TestPACLUtil.testWriteFile(); } @Override public void destroy() { TestPACLUtil.testWriteFile(); } @Override public void doView( RenderRequest renderRequest, RenderResponse renderResponse) throws IOException, PortletException { try { TestPACLUtil.testWriteFile(); testGetClassLoaderBlogsEntryLocalService(); testGetClassLoaderEntryLocalService(); testGetClassLoaderFooLocalService(); testGetClassLoaderPortal(); testGetClassLoaderTestPACLUtil(); testReflectionTestPACLUtil_log(); testReflectionTestPACLUtil_TEST_FIELD(); testReflectionTestPACLUtil_TEST_FIELD_setAccessible(); } catch (Exception e) { throw new PortletException(e); } include(viewTemplate, renderRequest, renderResponse); } @Override public void init() throws PortletException { super.init(); TestPACLUtil.testWriteFile(); } protected void assertEquals(Object expected, Object actual) { assertTrue(Objects.equals(expected, actual)); } protected void assertFalse(boolean value) { assertTrue(!value); } protected void assertTrue(boolean value) { if (!value) { throw new RuntimeException("Assertion failed"); } } protected void testGetClassLoaderBlogsEntryLocalService() { try { BlogsEntryLocalService blogsEntryLocalService = BlogsEntryLocalServiceUtil.getService(); Class<?> clazz = blogsEntryLocalService.getClass(); clazz.getClassLoader(); throw new RuntimeException("Portal class loader is not protected"); } catch (SecurityException se) { } } protected void testGetClassLoaderEntryLocalService() { EntryLocalService entryLocalService = EntryLocalServiceUtil.getService(); Class<?> clazz = entryLocalService.getClass(); clazz.getClassLoader(); assertEquals(EntryLocalServiceClp.class.getName(), clazz.getName()); } protected void testGetClassLoaderFooLocalService() { FooLocalService fooLocalService = FooLocalServiceUtil.getService(); Class<?> clazz = fooLocalService.getClass(); clazz.getClassLoader(); } protected void testGetClassLoaderPortal() { try { Portal portal = PortalUtil.getPortal(); Class<?> clazz = portal.getClass(); clazz.getClassLoader(); throw new RuntimeException("Portal class loader is not protected"); } catch (SecurityException se) { } } protected void testGetClassLoaderTestPACLUtil() { TestPACLUtil.class.getClassLoader(); } protected void testReflectionTestPACLUtil_log() throws Exception { Class<?> clazz = TestPACLUtil.class; clazz.getDeclaredField("_log"); } protected void testReflectionTestPACLUtil_TEST_FIELD() throws Exception { Class<?> clazz = TestPACLUtil.class; clazz.getField("TEST_FIELD"); } protected void testReflectionTestPACLUtil_TEST_FIELD_setAccessible() throws Exception { Class<?> clazz = TestPACLUtil.class; Field field = clazz.getField("TEST_FIELD"); field.setAccessible(false); } }