/******************************************************************************* * 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.server.util; import com.liferay.ide.core.ILiferayConstants; import com.liferay.ide.core.ILiferayPortal; import com.liferay.ide.core.ILiferayProject; import com.liferay.ide.core.LiferayCore; import com.liferay.ide.core.util.CoreUtil; import com.liferay.ide.core.util.FileUtil; import com.liferay.ide.sdk.core.ISDKConstants; import com.liferay.ide.sdk.core.SDK; import com.liferay.ide.sdk.core.SDKUtil; import com.liferay.ide.server.core.ILiferayRuntime; import com.liferay.ide.server.core.ILiferayServer; import com.liferay.ide.server.core.LiferayServerCore; import com.liferay.ide.server.core.portal.PortalBundle; import com.liferay.ide.server.core.portal.PortalBundleFactory; import com.liferay.ide.server.remote.IRemoteServer; import com.liferay.ide.server.remote.IServerManagerConnection; import java.io.File; import java.io.FileInputStream; import java.io.FilenameFilter; import java.io.IOException; import java.io.InputStream; import java.text.MessageFormat; import java.util.ArrayList; import java.util.Enumeration; import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Properties; import java.util.Set; import java.util.jar.JarEntry; import java.util.jar.JarFile; import java.util.jar.JarInputStream; import javax.xml.parsers.DocumentBuilderFactory; import org.apache.commons.configuration.PropertiesConfiguration; import org.eclipse.core.resources.IProject; import org.eclipse.core.runtime.CoreException; import org.eclipse.core.runtime.IPath; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Path; import org.eclipse.core.runtime.Status; import org.eclipse.debug.core.DebugException; import org.eclipse.debug.core.DebugPlugin; import org.eclipse.debug.core.ILaunch; import org.eclipse.debug.core.ILaunchConfigurationWorkingCopy; import org.eclipse.jdt.core.IJavaProject; import org.eclipse.jdt.internal.launching.StandardVMType; import org.eclipse.jdt.launching.IVMInstall; import org.eclipse.jdt.launching.JavaRuntime; import org.eclipse.wst.common.componentcore.ComponentCore; import org.eclipse.wst.common.componentcore.resources.IVirtualComponent; import org.eclipse.wst.common.project.facet.core.IFacetedProject; import org.eclipse.wst.common.project.facet.core.IProjectFacet; import org.eclipse.wst.common.project.facet.core.IProjectFacetVersion; import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager; import org.eclipse.wst.common.project.facet.core.runtime.RuntimeManager; import org.eclipse.wst.common.project.facet.core.runtime.internal.BridgedRuntime; import org.eclipse.wst.server.core.IRuntime; import org.eclipse.wst.server.core.IRuntimeType; import org.eclipse.wst.server.core.IRuntimeWorkingCopy; import org.eclipse.wst.server.core.IServer; import org.eclipse.wst.server.core.ServerCore; import org.osgi.framework.Version; import org.osgi.framework.dto.BundleDTO; import org.w3c.dom.Document; import org.w3c.dom.Node; import org.w3c.dom.NodeList; /** * @author Gregory Amerson * @author Cindy Li * @author Tao Tao * @author Kuo Zhang * @author Simon Jiang */ @SuppressWarnings( "restriction" ) public class ServerUtil { public static boolean bsnExists( String bsn, BundleDTO[] bundles ) { if( bsn != null ) { for( BundleDTO bundle : bundles ) { if( bsn.equals( bundle.symbolicName ) ) { return true; } } } return false; } public static Map<String, String> configureAppServerProperties( ILiferayRuntime liferayRuntime ) { return getSDKRequiredProperties( liferayRuntime ); } public static Map<String, String> configureAppServerProperties( IProject project ) throws CoreException { try { return getSDKRequiredProperties( ServerUtil.getLiferayRuntime( project ) ); } catch( CoreException e1 ) { throw new CoreException( LiferayServerCore.createErrorStatus( e1 ) ); } } public static IStatus createErrorStatus( String msg ) { return new Status( IStatus.ERROR, LiferayServerCore.PLUGIN_ID, msg ); } public static void deleteRuntimeAndServer( String runtimeType , File portalBundle ) throws Exception { IRuntime[] runtimes = ServerCore.getRuntimes(); IRuntime targetRuntime = null; for( IRuntime runtime : runtimes ) { if( runtime.getRuntimeType().getId().equals( runtimeType ) ) { File runtimeFile = runtime.getLocation().toFile(); if( runtimeFile.getCanonicalFile().equals( portalBundle ) ) { targetRuntime = runtime; } } } if( targetRuntime != null ) { IServer[] servers = ServerCore.getServers(); for( IServer server : servers ) { IRuntime runtime = server.getRuntime(); if( runtime != null && runtime.equals( targetRuntime ) ) { server.delete(); } } targetRuntime.delete(); } } public static IProject findProjectByContextName( String contextName ) { IProject retval = null; if( ! CoreUtil.isNullOrEmpty( contextName ) ) { for( IProject project : CoreUtil.getAllProjects() ) { final IVirtualComponent c = ComponentCore.createComponent( project, true ); if( c != null ) { final Properties metaProperties = c.getMetaProperties(); if( metaProperties != null ) { String contextRoot = metaProperties.getProperty( "context-root" ); //$NON-NLS-1$ if( contextName.equals( contextRoot ) ) { retval = project; break; } } } } } return retval; } public static Properties getAllCategories( IPath portalDir ) { Properties retval = null; File implJar = portalDir.append( "WEB-INF/lib/portal-impl.jar" ).toFile(); //$NON-NLS-1$ if( implJar.exists() ) { try { JarFile jar = new JarFile( implJar ); Properties categories = new Properties(); Properties props = new Properties(); props.load( jar.getInputStream( jar.getEntry( "content/Language.properties" ) ) ); //$NON-NLS-1$ Enumeration<?> names = props.propertyNames(); while( names.hasMoreElements() ) { String name = names.nextElement().toString(); if( name.startsWith( "category." ) ) //$NON-NLS-1$ { categories.put( name, props.getProperty( name ) ); } } retval = categories; jar.close(); } catch( IOException e ) { LiferayServerCore.logError( e ); } } return retval; } public static IPath getAppServerDir( org.eclipse.wst.common.project.facet.core.runtime.IRuntime serverRuntime ) { ILiferayRuntime runtime = (ILiferayRuntime) getRuntimeAdapter( serverRuntime, ILiferayRuntime.class ); return runtime != null ? runtime.getAppServerDir() : null; } public static String getAppServerPropertyKey( String propertyAppServerDeployDir, ILiferayRuntime runtime ) { String retval = null; try { final Version version = new Version( runtime.getPortalVersion() ); final String type = runtime.getAppServerType(); if( ( CoreUtil.compareVersions( version, ILiferayConstants.V6130 ) >= 0 ) || ( CoreUtil.compareVersions( version, ILiferayConstants.V612 ) >= 0 && CoreUtil.compareVersions( version, ILiferayConstants.V6110 ) < 0 ) ) { retval = MessageFormat.format( propertyAppServerDeployDir, "." + type + "." ); //$NON-NLS-1$ //$NON-NLS-2$ } } catch( Exception e ) { } finally { if( retval == null ) { retval = MessageFormat.format( propertyAppServerDeployDir, "." ); //$NON-NLS-1$ } } return retval; } public static Set<IRuntime> getAvailableLiferayRuntimes() { Set<IRuntime> retval = new HashSet<IRuntime>(); IRuntime[] runtimes = ServerCore.getRuntimes(); for( IRuntime rt : runtimes ) { if( isLiferayRuntime( rt ) ) { retval.add( rt ); } } return retval; } public static Properties getEntryCategories( IPath portalDir, String portalVersion ) { Properties categories = getAllCategories( portalDir ); Properties retval = new Properties(); final String myKey = "category.my"; //$NON-NLS-1$ final String categoryMy = categories.getProperty( myKey ); if( ( portalVersion == null ) || ( CoreUtil.compareVersions( new Version( portalVersion ), ILiferayConstants.V620 ) < 0 ) ) { final String portalKey = "category.portal"; //$NON-NLS-1$ final String serverKey = "category.server"; //$NON-NLS-1$ final String keyContent = "category.content"; //$NON-NLS-1$ retval.put( myKey, categoryMy + " Account Section" ); //$NON-NLS-1$ retval.put( portalKey, categories.getProperty( portalKey ) + " Section" ); //$NON-NLS-1$ retval.put( serverKey, categories.getProperty( serverKey ) + " Section" ); //$NON-NLS-1$ retval.put( keyContent, categories.getProperty( keyContent ) + " Section" ); //$NON-NLS-1$ } else { final String keyUsers = "category.users"; //$NON-NLS-1$ final String keyApps = "category.apps"; //$NON-NLS-1$ final String keyConfig = "category.configuration"; //$NON-NLS-1$ final String keySites = "category.sites"; //$NON-NLS-1$ final String keySiteConfig = "category.site_administration.configuration"; //$NON-NLS-1$ final String keySiteContent = "category.site_administration.content"; //$NON-NLS-1$ final String keySitePages = "category.site_administration.pages"; //$NON-NLS-1$ final String keySiteUsers = "category.site_administration.users"; //$NON-NLS-1$ retval.put( myKey, categoryMy + " Account Administration" ); //$NON-NLS-1$ retval.put( keyUsers, "Control Panel - " + categories.getProperty( keyUsers ) ); //$NON-NLS-1$ retval.put( keyApps, "Control Panel - " + categories.getProperty( keyApps ) ); //$NON-NLS-1$ retval.put( keyConfig, "Control Panel - " + categories.getProperty( keyConfig ) ); //$NON-NLS-1$ retval.put( keySites, "Control Panel - " + categories.getProperty( keySites ) ); //$NON-NLS-1$ retval.put( keySiteConfig, "Site Administration - " + categories.getProperty( keySiteConfig ) ); //$NON-NLS-1$ retval.put( keySiteContent, "Site Administration - " + categories.getProperty( keySiteContent ) ); //$NON-NLS-1$ retval.put( keySitePages, "Site Administration - " + categories.getProperty( keySitePages ) ); //$NON-NLS-1$ retval.put( keySiteUsers, "Site Administration - " + categories.getProperty( keySiteUsers ) ); //$NON-NLS-1$ } return retval; } public static IFacetedProject getFacetedProject( IProject project ) { try { return ProjectFacetsManager.create( project ); } catch( CoreException e ) { return null; } } public static org.eclipse.wst.common.project.facet.core.runtime.IRuntime getFacetRuntime( IRuntime runtime ) { return RuntimeManager.getRuntime( runtime.getName() ); } public static String getFragemtHostName( final File bundleFile ) { String fragmentHostName = null; try(JarInputStream jarStream = new JarInputStream( new FileInputStream( bundleFile ) )) { fragmentHostName = jarStream.getManifest().getMainAttributes().getValue( "Fragment-Host" ); if( fragmentHostName != null ) { fragmentHostName = fragmentHostName.trim().substring( 0, fragmentHostName.indexOf( ";bundle-version" ) ); } } catch( Exception e ) { } return fragmentHostName; } public static IProjectFacet getLiferayFacet( IFacetedProject facetedProject ) { for( IProjectFacetVersion projectFacet : facetedProject.getProjectFacets() ) { if( isLiferayFacet( projectFacet.getProjectFacet() ) ) { return projectFacet.getProjectFacet(); } } return null; } public static ILiferayRuntime getLiferayRuntime( BridgedRuntime bridgedRuntime ) { if( bridgedRuntime != null ) { String id = bridgedRuntime.getProperty( "id" ); //$NON-NLS-1$ if( id != null ) { IRuntime runtime = ServerCore.findRuntime( id ); if( isLiferayRuntime( runtime ) ) { return getLiferayRuntime( runtime ); } } } return null; } public static ILiferayRuntime getLiferayRuntime( IProject project ) throws CoreException { if( project == null ) { return null; } IFacetedProject facetedProject = ProjectFacetsManager.create( project ); if( facetedProject != null ) { return (ILiferayRuntime) getRuntimeAdapter( facetedProject.getPrimaryRuntime(), ILiferayRuntime.class ); } else { return null; } } public static ILiferayRuntime getLiferayRuntime( IRuntime runtime ) { if( runtime != null ) { return (ILiferayRuntime) runtime.createWorkingCopy().loadAdapter( ILiferayRuntime.class, null ); } return null; } public static ILiferayRuntime getLiferayRuntime( IRuntime runtime, IProgressMonitor monitor ) { return (ILiferayRuntime) runtime.loadAdapter( ILiferayRuntime.class, monitor ); } public static ILiferayRuntime getLiferayRuntime( IServer server ) { if( server != null ) { return getLiferayRuntime( server.getRuntime() ); } return null; } public static ILiferayRuntime getLiferayRuntime( String name ) { return getLiferayRuntime( getRuntime( name ) ); } public static ILiferayServer getLiferayServer( IServer server, IProgressMonitor monitor ) { ILiferayServer retval = null; if( server != null ) { try { retval = (ILiferayServer) server.loadAdapter( ILiferayServer.class, monitor ); } catch( Exception e ) { } } return retval; } public static File[] getMarketplaceLpkgFiles( PortalBundle portalBundle ) { File marketplace = portalBundle.getOSGiBundlesDir().append( "marketplace" ).toFile(); File[] files = marketplace.listFiles( new FilenameFilter() { @Override public boolean accept( File dir, String name ) { return name.matches( ".*\\.lpkg" ); } }); return files; } public static File getModuleFileFrom70Server(IRuntime runtime , String hostOsgiBundle , IPath temp) { PortalBundle portalBundle = LiferayServerCore.newPortalBundle( runtime.getLocation() ); String[] dirs = new String[] { "core", "modules", "portal", "static" }; File moduleOsgiBundle = null; for( String dir : dirs ) { moduleOsgiBundle = portalBundle.getOSGiBundlesDir().append( dir ).append( hostOsgiBundle ).toFile(); if( moduleOsgiBundle.exists() ) { return moduleOsgiBundle; } } final File f = new File( temp.toFile(), hostOsgiBundle ); if( f.exists() ) { return f; } File[] files = getMarketplaceLpkgFiles( portalBundle ); InputStream in = null; try { boolean found = false; for( File file : files ) { try(JarFile jar = new JarFile( file )) { Enumeration<JarEntry> enu = jar.entries(); while( enu.hasMoreElements() ) { JarEntry entry = enu.nextElement(); String name = entry.getName(); if( name.contains( hostOsgiBundle ) ) { in = jar.getInputStream( entry ); found = true; FileUtil.writeFile( f, in ); break; } } if( found ) { break; } } } } catch( Exception e ) { } finally { if( in != null ) { try { in.close(); } catch( IOException e ) { } } } return f; } public static List<String> getModuleFileListFrom70Server(IRuntime runtime ) { List<String> bundles = new ArrayList<String>(); PortalBundle portalBundle = LiferayServerCore.newPortalBundle( runtime.getLocation() ); String[] dirs = new String[] { "core", "modules", "portal", "static" }; if( portalBundle != null ) { try { for( String dir : dirs ) { File dirFile = portalBundle.getOSGiBundlesDir().append( dir ).toFile(); if(dirFile.exists()) { File[] files = dirFile.listFiles( new FilenameFilter() { @Override public boolean accept( File dir, String name ) { return name.matches( ".*\\.web\\.jar" ); } } ); if( files != null && files.length > 0 ) { for( File file : files ) { bundles.add( file.getName() ); } } } } } catch( Exception e ) { LiferayServerCore.logError( "Could not determine possible files.", e ); } File[] files = ServerUtil.getMarketplaceLpkgFiles( portalBundle ); for( File file : files ) { try(JarFile jar = new JarFile( file )) { Enumeration<JarEntry> enu = jar.entries(); while( enu.hasMoreElements() ) { JarEntry entry = enu.nextElement(); String name = entry.getName(); if( name.contains( ".web" ) ) { bundles.add( name ); } } } catch( IOException e ) { } } } return bundles; } public static IPath getPortalDir( IJavaProject project ) { return getPortalDir( project.getProject() ); } public static IPath getPortalDir( IProject project ) { IPath retval = null; final ILiferayProject liferayProject = LiferayCore.create( project ); if( liferayProject != null ) { final ILiferayPortal portal = liferayProject.adapt( ILiferayPortal.class ); if( portal != null ) { retval = portal.getAppServerPortalDir(); } } return retval; } public static Properties getPortletCategories( IPath portalDir ) { Properties props = getAllCategories( portalDir ); Properties categories = new Properties(); Enumeration<?> names = props.propertyNames(); String[] controlPanelCategories = { "category.my", //$NON-NLS-1$ "category.users", //$NON-NLS-1$ "category.apps", //$NON-NLS-1$ "category.configuration", //$NON-NLS-1$ "category.sites", //$NON-NLS-1$ "category.site_administration.configuration", //$NON-NLS-1$ "category.site_administration.content", //$NON-NLS-1$ "category.site_administration.pages", //$NON-NLS-1$ "category.site_administration.users" //$NON-NLS-1$ }; while( names.hasMoreElements() ) { boolean isControlPanelCategory = false; String name = names.nextElement().toString(); for( String category : controlPanelCategories ) { if( name.equals( category ) ) { isControlPanelCategory = true; break; } } if( !isControlPanelCategory ) { categories.put( name, props.getProperty( name ) ); } } return categories; } public static IRuntime getRuntime( IProject project ) throws CoreException { return (IRuntime) getRuntimeAdapter( ProjectFacetsManager.create( project ).getPrimaryRuntime(), IRuntime.class ); } public static PortalBundle getPortalBundle(IProject project) throws CoreException { SDK sdk = SDKUtil.getSDKFromProjectDir( project.getLocation().toFile() ); if( sdk == null || !sdk.validate().isOK() ) { return null; } final Map<String, Object> appServerProperties = sdk.getBuildProperties(); final String appServerType = (String) ( appServerProperties.get( "app.server.type" ) ); PortalBundleFactory factory = LiferayServerCore.getPortalBundleFactories( appServerType ); if ( factory != null ) { final IPath path = factory.canCreateFromPath( appServerProperties ); if( path != null ) { PortalBundle bundle = factory.create( path ); return bundle; } } return null; } public static IRuntime getRuntime( org.eclipse.wst.common.project.facet.core.runtime.IRuntime runtime ) { return ServerCore.findRuntime( runtime.getProperty( "id" ) ); //$NON-NLS-1$ } public static IRuntime getRuntime( String runtimeName ) { IRuntime retval = null; if( ! CoreUtil.isNullOrEmpty( runtimeName ) ) { final IRuntime[] runtimes = ServerCore.getRuntimes(); if( runtimes != null ) { for( final IRuntime runtime : runtimes ) { if( runtimeName.equals( runtime.getName() ) ) { retval = runtime; break; } } } } return retval; } public static IRuntimeWorkingCopy getRuntime( String runtimeTypeId, IPath location ) { IRuntimeType runtimeType = ServerCore.findRuntimeType( runtimeTypeId ); try { IRuntime runtime = runtimeType.createRuntime( "runtime", null ); //$NON-NLS-1$ IRuntimeWorkingCopy runtimeWC = runtime.createWorkingCopy(); runtimeWC.setName( "Runtime" ); //$NON-NLS-1$ runtimeWC.setLocation( location ); return runtimeWC; } catch( CoreException e ) { e.printStackTrace(); } return null; } public static Object getRuntimeAdapter( org.eclipse.wst.common.project.facet.core.runtime.IRuntime facetRuntime, Class<?> adapterClass ) { if( facetRuntime != null ) { String runtimeId = facetRuntime.getProperty( "id" ); //$NON-NLS-1$ for( org.eclipse.wst.server.core.IRuntime runtime : ServerCore.getRuntimes() ) { if( runtime.getId().equals( runtimeId ) ) { if( IRuntime.class.equals( adapterClass ) ) { return runtime; } IRuntimeWorkingCopy runtimeWC = null; if( !runtime.isWorkingCopy() ) { runtimeWC = runtime.createWorkingCopy(); } else { runtimeWC = (IRuntimeWorkingCopy) runtime; } return runtimeWC.loadAdapter( adapterClass, null ); } } } return null; } public static Version getRuntimeVersion( IProject project ) { Version retval = null; if( project != null ) { final ILiferayProject liferayProject = LiferayCore.create( project ); if( liferayProject != null ) { final ILiferayPortal portal = liferayProject.adapt( ILiferayPortal.class ); if( portal != null ) { final String version = portal.getVersion(); if( version != null ) { retval = new Version( version ); } } } } return retval; } public static Map<String, String> getSDKRequiredProperties( ILiferayRuntime appServer ) { Map<String, String> properties = new HashMap<String, String>(); String type = appServer.getAppServerType(); String dir = appServer.getAppServerDir().toOSString(); String deployDir = appServer.getAppServerDeployDir().toOSString(); String libGlobalDir = appServer.getAppServerLibGlobalDir().toOSString(); String parentDir = new File( dir ).getParent(); String portalDir = appServer.getAppServerPortalDir().toOSString(); properties.put( ISDKConstants.PROPERTY_APP_SERVER_TYPE, type ); final String appServerDirKey = getAppServerPropertyKey( ISDKConstants.PROPERTY_APP_SERVER_DIR, appServer ); final String appServerDeployDirKey = getAppServerPropertyKey( ISDKConstants.PROPERTY_APP_SERVER_DEPLOY_DIR, appServer ); final String appServerLibGlobalDirKey = getAppServerPropertyKey( ISDKConstants.PROPERTY_APP_SERVER_LIB_GLOBAL_DIR, appServer ); final String appServerPortalDirKey = getAppServerPropertyKey( ISDKConstants.PROPERTY_APP_SERVER_PORTAL_DIR, appServer ); properties.put( appServerDirKey, dir ); properties.put( appServerDeployDirKey, deployDir ); properties.put( appServerLibGlobalDirKey, libGlobalDir ); //IDE-1268 need to always specify app.server.parent.dir, even though it is only useful in 6.1.2/6.2.0 or greater properties.put( ISDKConstants.PROPERTY_APP_SERVER_PARENT_DIR, parentDir ); properties.put( appServerPortalDirKey, portalDir ); return properties; } public static IServerManagerConnection getServerManagerConnection( IServer server, IProgressMonitor monitor ) { return LiferayServerCore.getRemoteConnection( (IRemoteServer) server.loadAdapter( IRemoteServer.class, monitor ) ); } public static IServer[] getServersForRuntime( IRuntime runtime ) { List<IServer> serverList = new ArrayList<IServer>(); if( runtime != null ) { IServer[] servers = ServerCore.getServers(); if( !CoreUtil.isNullOrEmpty( servers ) ) { for( IServer server : servers ) { if( runtime.equals( server.getRuntime() ) ) { serverList.add( server ); } } } } return serverList.toArray( new IServer[0] ); } public static String[] getServletFilterNames( IPath portalDir ) throws Exception { List<String> retval = new ArrayList<String>(); File filtersWebXmlFile = portalDir.append( "WEB-INF/liferay-web.xml" ).toFile(); //$NON-NLS-1$ if( !filtersWebXmlFile.exists() ) { filtersWebXmlFile = portalDir.append( "WEB-INF/web.xml" ).toFile(); //$NON-NLS-1$ } if( filtersWebXmlFile.exists() ) { Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().parse( filtersWebXmlFile ); NodeList filterNameElements = document.getElementsByTagName( "filter-name" ); //$NON-NLS-1$ for( int i = 0; i < filterNameElements.getLength(); i++ ) { Node filterNameElement = filterNameElements.item( i ); String content = filterNameElement.getTextContent(); if( !CoreUtil.isNullOrEmpty( content ) ) { retval.add( content.trim() ); } } } return retval.toArray( new String[0] ); } public static IServer getServer( String name ) { IServer[] servers = ServerCore.getServers(); for( IServer server : servers ) { if( server.getName().equals( name ) ) { return server; } } return null; } public static boolean hasFacet( IProject project, IProjectFacet checkProjectFacet ) { boolean retval = false; if( project == null || checkProjectFacet == null ) { return retval; } try { IFacetedProject facetedProject = ProjectFacetsManager.create( project ); if( facetedProject != null && checkProjectFacet != null ) { for( IProjectFacetVersion facet : facetedProject.getProjectFacets() ) { IProjectFacet projectFacet = facet.getProjectFacet(); if( checkProjectFacet.equals( projectFacet ) ) { retval = true; break; } } } } catch( CoreException e ) { } return retval; } public static boolean isExistingVMName( String name ) { for( IVMInstall vm : JavaRuntime.getVMInstallType( StandardVMType.ID_STANDARD_VM_TYPE ).getVMInstalls() ) { if( vm.getName().equals( name ) ) { return true; } } return false; } public static boolean isExtProject( IProject project ) { return hasFacet( project, ProjectFacetsManager.getProjectFacet( "liferay.ext" ) ); //$NON-NLS-1$ } public static boolean isLiferayFacet( IProjectFacet projectFacet ) { return projectFacet != null && projectFacet.getId().startsWith( "liferay" ); //$NON-NLS-1$ } public static boolean isLiferayRuntime( BridgedRuntime bridgedRuntime ) { if( bridgedRuntime != null ) { String id = bridgedRuntime.getProperty( "id" ); //$NON-NLS-1$ if( id != null ) { IRuntime runtime = ServerCore.findRuntime( id ); return isLiferayRuntime( runtime ); } } return false; } public static boolean isLiferayRuntime( IRuntime runtime ) { return getLiferayRuntime( runtime ) != null; } public static boolean isLiferayRuntime( IServer server ) { return getLiferayRuntime( server ) != null; } public static boolean isValidPropertiesFile( File file ) { if( file == null || !file.exists() ) { return false; } try { new PropertiesConfiguration( file ); } catch( Exception e ) { return false; } return true; } public static void terminateLaunchesForConfig( ILaunchConfigurationWorkingCopy config ) throws DebugException { ILaunch[] launches = DebugPlugin.getDefault().getLaunchManager().getLaunches(); for( ILaunch launch : launches ) { if( launch.getLaunchConfiguration().equals( config ) ) { launch.terminate(); } } } public static boolean verifyPath(final String verifyPath) { if ( verifyPath == null) { return false; } final IPath verifyLocation = new Path(verifyPath); if ( verifyLocation.toFile().exists() && verifyLocation.toFile().isDirectory()) { return true; } return false; } }