Java tutorial
/******************************************************************************* * 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.ide.project.core.tests; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertNotNull; import com.liferay.ide.core.util.ZipUtil; import com.liferay.ide.project.core.PluginClasspathContainerInitializer; import com.liferay.ide.project.core.ProjectCore; import com.liferay.ide.project.core.SDKClasspathContainer; import com.liferay.ide.project.core.util.ProjectImportUtil; import com.liferay.ide.sdk.core.SDK; import com.liferay.ide.sdk.core.SDKUtil; import java.io.File; import java.net.URL; import java.util.Arrays; import java.util.Iterator; import java.util.List; import java.util.Map; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.FileLocator; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Platform; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; import org.junit.AfterClass; import org.junit.Test; /** * @author Simon Jiang */ public class ImportPluginsSDKProjectTests extends ProjectCoreBase { @AfterClass public static void removePluginsSDK() throws Exception { deleteAllWorkspaceProjects(); } private boolean isLiferayRuntimePluginClassPath(List<IClasspathEntry> entries, final String entryPath) { boolean retval = false; for (Iterator<IClasspathEntry> iterator = entries.iterator(); iterator.hasNext();) { IClasspathEntry entry = iterator.next(); if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER) { for (String path : entry.getPath().segments()) { if (path.equals(entryPath)) { retval = true; break; } } } } return retval; } @Override protected IPath getLiferayPluginsSdkDir() { return ProjectCore.getDefault().getStateLocation().append("com.liferay.portal.plugins.sdk-7.0"); } @Override protected IPath getLiferayPluginsSDKZip() { return getLiferayBundlesPath().append("com.liferay.portal.plugins.sdk-7.0-ga3-20160804222206210.zip"); } @Override protected String getLiferayPluginsSdkZipFolder() { return "com.liferay.portal.plugins.sdk-7.0/"; } private IPath importProject(String pluginType, String name) throws Exception { SDK sdk = SDKUtil.getWorkspaceSDK(); final IPath pluginTypeFolder = sdk.getLocation().append(pluginType); final URL projectZipUrl = Platform.getBundle("com.liferay.ide.project.core.tests") .getEntry("projects/" + name + ".zip"); final File projectZipFile = new File(FileLocator.toFileURL(projectZipUrl).getFile()); ZipUtil.unzip(projectZipFile, pluginTypeFolder.toFile()); final IPath projectFolder = pluginTypeFolder.append(name); assertEquals(true, projectFolder.toFile().exists()); return projectFolder; } @Test public void testSDKSetting() throws Exception { if (shouldSkipBundleTests()) return; SDK sdk = SDKUtil.getWorkspaceSDK(); Map<String, Object> sdkProperties = sdk.getBuildProperties(true); assertNotNull(sdkProperties.get("app.server.type")); assertNotNull(sdkProperties.get("app.server.dir")); assertNotNull(sdkProperties.get("app.server.deploy.dir")); assertNotNull(sdkProperties.get("app.server.lib.global.dir")); assertNotNull(sdkProperties.get("app.server.parent.dir")); assertNotNull(sdkProperties.get("app.server.portal.dir")); assertEquals(sdkProperties.get("app.server.type"), "tomcat"); assertEquals(sdkProperties.get("app.server.dir"), getLiferayRuntimeDir().toPortableString()); assertEquals(sdkProperties.get("app.server.deploy.dir"), getLiferayRuntimeDir().append("webapps").toPortableString()); assertEquals(sdkProperties.get("app.server.lib.global.dir"), getLiferayRuntimeDir().append("lib/ext").toPortableString()); assertEquals(sdkProperties.get("app.server.parent.dir"), getLiferayRuntimeDir().removeLastSegments(1).toPortableString()); assertEquals(sdkProperties.get("app.server.portal.dir"), getLiferayRuntimeDir().append("webapps/ROOT").toPortableString()); } @Test public void testImportBasicHookProject() throws Exception { if (shouldSkipBundleTests()) return; final IPath projectPath = importProject("hooks", "Import-IDE3.0-hook"); IProject hookProjectForIDE3 = ProjectImportUtil.importProject(projectPath, new NullProgressMonitor(), null); assertNotNull(hookProjectForIDE3); IJavaProject javaProject = JavaCore.create(hookProjectForIDE3); IClasspathEntry[] rawClasspath = javaProject.getRawClasspath(); List<IClasspathEntry> rawClasspaths = Arrays.asList(rawClasspath); final boolean hasPluginClasspathDependencyContainer = isLiferayRuntimePluginClassPath(rawClasspaths, SDKClasspathContainer.ID); assertEquals(hasPluginClasspathDependencyContainer, true); } @Test public void testImportConfiguredPortletProject() throws Exception { if (shouldSkipBundleTests()) return; final IPath projectPath = importProject("portlets", "Import-Old-Configured-portlet"); IProject portletProjectForIDE3 = ProjectImportUtil.importProject(projectPath, new NullProgressMonitor(), null); assertNotNull(portletProjectForIDE3); IJavaProject javaProject = JavaCore.create(portletProjectForIDE3); IClasspathEntry[] rawClasspath = javaProject.getRawClasspath(); List<IClasspathEntry> rawClasspaths = Arrays.asList(rawClasspath); final boolean hasOldPluginClasspathContainer = isLiferayRuntimePluginClassPath(rawClasspaths, PluginClasspathContainerInitializer.ID); final boolean hasPluginClasspathDependencyContainer = isLiferayRuntimePluginClassPath(rawClasspaths, SDKClasspathContainer.ID); final boolean hasOldRuntimeClasspathContainer = isLiferayRuntimePluginClassPath(rawClasspaths, "com.liferay.studio.server.tomcat.runtimeClasspathProvider"); assertEquals(hasOldPluginClasspathContainer, false); assertEquals(hasOldRuntimeClasspathContainer, false); assertEquals(hasPluginClasspathDependencyContainer, true); } }