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; import com.liferay.ide.project.core.util.ProjectUtil; import com.liferay.ide.sdk.core.SDKUtil; import com.liferay.ide.server.util.ServerUtil; import org.eclipse.core.resources.IMarker; import org.eclipse.core.resources.IProject; import org.eclipse.core.resources.IResource; import org.eclipse.core.runtime.CoreException; import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.core.JavaCore; import org.eclipse.osgi.util.NLS; import org.eclipse.wst.common.project.facet.core.IFacetedProject; import org.eclipse.wst.common.project.facet.core.IFacetedProjectValidator; import org.eclipse.wst.common.project.facet.core.runtime.internal.BridgedRuntime; /** * @author Kuo Zhang * @author Simon Jiang */ @SuppressWarnings("restriction") public class PluginsSDKProjectRuntimeValidator implements IFacetedProjectValidator { public static final String LOCATION_TARGETED_RUNTIMES = "Targeted Runtimes"; public static final String ID_PRIMARY_RUNTIME_NOT_SET = "primary-runtime-not-set"; public static final String ID_PRIMARY_RUNTIME_NOT_LIFERAY_RUNTIME = "primary-runtime-not-liferay-runtime"; public static final String ID_PLUGINS_SDK_NOT_SET = "plugins-sdk-not-set"; public static final String MSG_PRIMARY_RUNTIME_NOT_SET = Msgs.primaryRuntimeNotSet; public static final String MSG_PRIMARY_RUNTIME_NOT_LIFERAY_RUNTIME = Msgs.primaryRuntimeNotLiferayRuntime; public static final String LOCATION_TARGETED_SDK = "Targeted SDK"; public void validate(IFacetedProject fproj) throws CoreException { final IProject proj = fproj.getProject(); if (ProjectUtil.isLiferayFacetedProject(proj)) { clearMarkers(proj); if (SDKUtil.isSDKProject(fproj.getProject())) { IJavaProject javaProject = JavaCore.create(proj); for (IClasspathEntry entry : javaProject.getRawClasspath()) { if (entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER && entry.getPath().segment(0).equals(SDKClasspathContainer.ID)) { return; } } if (fproj.getPrimaryRuntime() == null) { setMarker(proj, ProjectCore.LIFERAY_PROJECT_MARKER_TYPE, IMarker.SEVERITY_ERROR, MSG_PRIMARY_RUNTIME_NOT_SET, LOCATION_TARGETED_RUNTIMES, ID_PRIMARY_RUNTIME_NOT_SET); } else { if (!ServerUtil.isLiferayRuntime((BridgedRuntime) fproj.getPrimaryRuntime())) { setMarker(proj, ProjectCore.LIFERAY_PROJECT_MARKER_TYPE, IMarker.SEVERITY_ERROR, MSG_PRIMARY_RUNTIME_NOT_LIFERAY_RUNTIME, LOCATION_TARGETED_RUNTIMES, ID_PRIMARY_RUNTIME_NOT_LIFERAY_RUNTIME); } } } else if (!ProjectUtil.isMavenProject(proj)) { setMarker(proj, ProjectCore.LIFERAY_PROJECT_MARKER_TYPE, IMarker.SEVERITY_ERROR, Msgs.pluginSDKNotSet, LOCATION_TARGETED_SDK, ID_PLUGINS_SDK_NOT_SET); } } } private void clearMarkers(IProject proj) { try { if (proj.isOpen()) { IMarker[] markers = proj.findMarkers(ProjectCore.LIFERAY_PROJECT_MARKER_TYPE, true, IResource.DEPTH_INFINITE); for (IMarker marker : markers) { for (String id : getMarkerSourceIds()) { if (marker.getAttribute(IMarker.SOURCE_ID).equals(id)) { marker.delete(); break; } } } } } catch (CoreException e) { ProjectCore.logError(e); } } private String[] getMarkerSourceIds() { return new String[] { ID_PRIMARY_RUNTIME_NOT_LIFERAY_RUNTIME, ID_PRIMARY_RUNTIME_NOT_SET, ID_PLUGINS_SDK_NOT_SET }; } private void setMarker(IProject proj, String markerType, int markerSeverity, String markerMsg, String markerLocation, String markerSourceId) throws CoreException { IMarker marker = proj.createMarker(markerType); marker.setAttribute(IMarker.SEVERITY, markerSeverity); marker.setAttribute(IMarker.MESSAGE, markerMsg); marker.setAttribute(IMarker.LOCATION, markerLocation); marker.setAttribute(IMarker.SOURCE_ID, markerSourceId); } private static class Msgs extends NLS { public static String primaryRuntimeNotSet; public static String primaryRuntimeNotLiferayRuntime; public static String pluginSDKNotSet; static { initializeMessages(PluginsSDKProjectRuntimeValidator.class.getName(), Msgs.class); } } }