com.liferay.ide.maven.core.LiferayMavenProject.java Source code

Java tutorial

Introduction

Here is the source code for com.liferay.ide.maven.core.LiferayMavenProject.java

Source

/*******************************************************************************
 * 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.maven.core;

import com.liferay.ide.core.BaseLiferayProject;
import com.liferay.ide.core.util.CoreUtil;
import com.liferay.ide.project.core.IProjectBuilder;
import com.liferay.ide.project.core.util.ProjectUtil;
import com.liferay.ide.server.remote.IRemoteServerPublisher;

import java.util.ArrayList;
import java.util.List;

import org.apache.maven.model.Plugin;
import org.apache.maven.project.MavenProject;
import org.eclipse.core.resources.IFolder;
import org.eclipse.core.resources.IProject;
import org.eclipse.core.runtime.CoreException;
import org.eclipse.core.runtime.IPath;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jdt.core.IClasspathEntry;
import org.eclipse.jdt.core.JavaCore;
import org.eclipse.m2e.core.MavenPlugin;
import org.eclipse.m2e.core.project.IMavenProjectFacade;
import org.eclipse.m2e.jdt.IClasspathManager;
import org.eclipse.m2e.jdt.MavenJdtPlugin;

/**
 * @author Gregory Amerson
 * @author Simon Jiang
 */
public abstract class LiferayMavenProject extends BaseLiferayProject implements IMavenProject {

    public LiferayMavenProject(IProject project) {
        super(project);
    }

    public <T> T adapt(Class<T> adapterType) {
        T adapter = super.adapt(adapterType);

        if (adapter != null) {
            return adapter;
        }

        final IMavenProjectFacade facade = MavenUtil.getProjectFacade(getProject(), new NullProgressMonitor());

        if (facade != null) {
            if (IProjectBuilder.class.equals(adapterType)) {
                final IProjectBuilder projectBuilder = new MavenProjectBuilder(getProject());

                return adapterType.cast(projectBuilder);
            } else if (IRemoteServerPublisher.class.equals(adapterType)) {
                final IRemoteServerPublisher remoteServerPublisher = new MavenProjectRemoteServerPublisher(
                        getProject());

                return adapterType.cast(remoteServerPublisher);
            }
        }

        return null;
    }

    public IPath getLibraryPath(String filename) {
        final IPath[] libs = getUserLibs();

        if (!CoreUtil.isNullOrEmpty(libs)) {
            for (IPath lib : libs) {
                if (lib.removeFileExtension().lastSegment().startsWith(filename)) {
                    return lib;
                }
            }
        }

        return null;
    }

    public String getLiferayMavenPluginVersion() {
        String retval = null;

        final IMavenProjectFacade projectFacade = MavenPlugin.getMavenProjectRegistry().getProject(getProject());

        if (projectFacade != null) {
            try {
                final NullProgressMonitor npm = new NullProgressMonitor();

                final MavenProject mavenProject = projectFacade.getMavenProject(npm);

                if (mavenProject != null) {
                    final Plugin liferayMavenPlugin = MavenUtil.getPlugin(projectFacade,
                            ILiferayMavenConstants.LIFERAY_MAVEN_PLUGIN_KEY, npm);

                    retval = liferayMavenPlugin.getVersion();
                }
            } catch (CoreException e) {
            }
        }

        return retval;
    }

    public String getProperty(String key, String defaultValue) {
        String retval = defaultValue;

        if (("theme.type".equals(key) || "theme.parent".equals(key)) && ProjectUtil.isThemeProject(getProject())) {
            final IMavenProjectFacade projectFacade = MavenUtil.getProjectFacade(getProject());

            if (projectFacade != null) {
                final MavenProject mavenProject = projectFacade.getMavenProject();

                if ("theme.type".equals(key)) {
                    retval = MavenUtil.getLiferayMavenPluginConfig(mavenProject,
                            ILiferayMavenConstants.PLUGIN_CONFIG_THEME_TYPE);
                } else {
                    retval = MavenUtil.getLiferayMavenPluginConfig(mavenProject,
                            ILiferayMavenConstants.PLUGIN_CONFIG_PARENT_THEME);
                }
            }
        }

        return retval;
    }

    public IFolder getSourceFolder(String classification) {
        IFolder retval = super.getSourceFolder(classification);

        final List<IFolder> sourceFolders = CoreUtil.getSourceFolders(JavaCore.create(getProject()));

        for (IFolder folder : sourceFolders) {
            if (folder.getName().equals(classification)) {
                retval = folder;

                break;
            }
        }

        return retval;
    }

    public IPath[] getUserLibs() {
        final List<IPath> libs = new ArrayList<IPath>();

        final IClasspathManager buildPathManager = MavenJdtPlugin.getDefault().getBuildpathManager();

        try {
            final IClasspathEntry[] classpath = buildPathManager.getClasspath(getProject(),
                    IClasspathManager.CLASSPATH_RUNTIME, true, new NullProgressMonitor());

            for (IClasspathEntry entry : classpath) {
                libs.add(entry.getPath());
            }
        } catch (CoreException e) {
            LiferayMavenCore.logError("Unable to get maven classpath.", e); //$NON-NLS-1$
        }

        return libs.toArray(new IPath[0]);
    }

}