Search in sources :

Example 1 with Action

use of org.eclipse.wst.common.project.facet.core.IFacetedProject.Action in project liferay-ide by liferay.

the class JSFPortletFramework method configureNewProject.

@Override
public IStatus configureNewProject(IDataModel dataModel, IFacetedProjectWorkingCopy facetedProject) {
    IProjectFacetVersion jsfFacetVersion = getJSFProjectFacet(facetedProject);
    IProjectFacet jsfFacet = PortletCore.JSF_FACET;
    if (jsfFacetVersion == null) {
        jsfFacetVersion = jsfFacet.getVersion(JSF_FACET_SUPPORTED_VERSION);
        facetedProject.addProjectFacet(jsfFacetVersion);
    }
    Action action = facetedProject.getProjectFacetAction(jsfFacet);
    IDataModel jsfFacetDataModel = (IDataModel) action.getConfig();
    // TODO IDE-648 IDE-110
    jsfFacetDataModel.setProperty(SERVLET_URL_PATTERNS, null);
    jsfFacetDataModel.setProperty(WEBCONTENT_DIR, ISDKConstants.DEFAULT_DOCROOT_FOLDER);
    LibraryInstallDelegate libraryInstallDelegate = (LibraryInstallDelegate) jsfFacetDataModel.getProperty(LIBRARY_PROVIDER_DELEGATE);
    List<ILibraryProvider> providers = libraryInstallDelegate.getLibraryProviders();
    ILibraryProvider noOpProvider = null;
    for (ILibraryProvider provider : providers) {
        if (provider.getId().equals("jsf-no-op-library-provider")) {
            noOpProvider = provider;
            break;
        }
    }
    if (noOpProvider != null) {
        libraryInstallDelegate.setLibraryProvider(noOpProvider);
    }
    return Status.OK_STATUS;
}
Also used : Action(org.eclipse.wst.common.project.facet.core.IFacetedProject.Action) IProjectFacetVersion(org.eclipse.wst.common.project.facet.core.IProjectFacetVersion) IProjectFacet(org.eclipse.wst.common.project.facet.core.IProjectFacet) LibraryInstallDelegate(org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate) ILibraryProvider(org.eclipse.jst.common.project.facet.core.libprov.ILibraryProvider) IDataModel(org.eclipse.wst.common.frameworks.datamodel.IDataModel)

Example 2 with Action

use of org.eclipse.wst.common.project.facet.core.IFacetedProject.Action in project liferay-ide by liferay.

the class SDKPluginFacetUtil method configureJavaFacet.

public static void configureJavaFacet(IFacetedProjectWorkingCopy fpjwc, IProjectFacet requiredFacet, IPreset preset, ProjectRecord projectRecord) {
    Action action = fpjwc.getProjectFacetAction(requiredFacet);
    if (action == null) {
        return;
    }
    Object config = action.getConfig();
    if (!(config instanceof JavaFacetInstallConfig)) {
        return;
    }
    JavaFacetInstallConfig javaConfig = (JavaFacetInstallConfig) config;
    IDataModel dm = (IDataModel) Platform.getAdapterManager().getAdapter(config, IDataModel.class);
    String presetId = preset.getId();
    if (presetId.contains("portlet")) {
        javaConfig.setSourceFolder(new Path(IPluginFacetConstants.PORTLET_PLUGIN_SDK_SOURCE_FOLDER));
        javaConfig.setDefaultOutputFolder(new Path(IPluginFacetConstants.PORTLET_PLUGIN_SDK_DEFAULT_OUTPUT_FOLDER));
        dm.setStringProperty(IJavaFacetInstallDataModelProperties.SOURCE_FOLDER_NAME, IPluginFacetConstants.PORTLET_PLUGIN_SDK_SOURCE_FOLDER);
        dm.setStringProperty(IJavaFacetInstallDataModelProperties.DEFAULT_OUTPUT_FOLDER_NAME, IPluginFacetConstants.PORTLET_PLUGIN_SDK_DEFAULT_OUTPUT_FOLDER);
    } else if (presetId.contains("hook")) {
        javaConfig.setSourceFolder(new Path(IPluginFacetConstants.HOOK_PLUGIN_SDK_SOURCE_FOLDER));
        javaConfig.setDefaultOutputFolder(new Path(IPluginFacetConstants.HOOK_PLUGIN_SDK_DEFAULT_OUTPUT_FOLDER));
        dm.setStringProperty(IJavaFacetInstallDataModelProperties.SOURCE_FOLDER_NAME, IPluginFacetConstants.HOOK_PLUGIN_SDK_SOURCE_FOLDER);
        dm.setStringProperty(IJavaFacetInstallDataModelProperties.DEFAULT_OUTPUT_FOLDER_NAME, IPluginFacetConstants.HOOK_PLUGIN_SDK_DEFAULT_OUTPUT_FOLDER);
    } else if (presetId.contains("layouttpl")) {
        _removeSrcFolders(dm, javaConfig);
    } else if (presetId.contains("theme")) {
        IPath projectPath = projectRecord.getProjectLocation();
        IPath existingSrcFolder = projectPath.append(IPluginFacetConstants.PORTLET_PLUGIN_SDK_SOURCE_FOLDER);
        if (existingSrcFolder.toFile().exists()) {
            javaConfig.setSourceFolder(new Path(IPluginFacetConstants.PORTLET_PLUGIN_SDK_SOURCE_FOLDER));
            javaConfig.setDefaultOutputFolder(new Path(IPluginFacetConstants.PORTLET_PLUGIN_SDK_DEFAULT_OUTPUT_FOLDER));
            dm.setStringProperty(IJavaFacetInstallDataModelProperties.SOURCE_FOLDER_NAME, IPluginFacetConstants.PORTLET_PLUGIN_SDK_SOURCE_FOLDER);
            dm.setStringProperty(IJavaFacetInstallDataModelProperties.DEFAULT_OUTPUT_FOLDER_NAME, IPluginFacetConstants.PORTLET_PLUGIN_SDK_DEFAULT_OUTPUT_FOLDER);
        } else {
            _removeSrcFolders(dm, javaConfig);
        }
    } else if (presetId.contains("web")) {
        javaConfig.setSourceFolder(new Path(IPluginFacetConstants.WEB_PLUGIN_SDK_SOURCE_FOLDER));
        javaConfig.setDefaultOutputFolder(new Path(IPluginFacetConstants.WEB_PLUGIN_SDK_DEFAULT_OUTPUT_FOLDER));
        dm.setStringProperty(IJavaFacetInstallDataModelProperties.SOURCE_FOLDER_NAME, IPluginFacetConstants.WEB_PLUGIN_SDK_SOURCE_FOLDER);
        dm.setStringProperty(IJavaFacetInstallDataModelProperties.DEFAULT_OUTPUT_FOLDER_NAME, IPluginFacetConstants.WEB_PLUGIN_SDK_DEFAULT_OUTPUT_FOLDER);
    }
}
Also used : IPath(org.eclipse.core.runtime.IPath) Path(org.eclipse.core.runtime.Path) Action(org.eclipse.wst.common.project.facet.core.IFacetedProject.Action) IPath(org.eclipse.core.runtime.IPath) IDataModel(org.eclipse.wst.common.frameworks.datamodel.IDataModel) JavaFacetInstallConfig(org.eclipse.jst.common.project.facet.core.JavaFacetInstallConfig)

Example 3 with Action

use of org.eclipse.wst.common.project.facet.core.IFacetedProject.Action in project liferay-ide by liferay.

the class LiferayMavenProjectConfigurator method _installNewLiferayFacet.

// Copied from
// org.eclipse.m2e.wtp.AbstractProjectConfiguratorDelegate#configureDeployedName()
private MavenProblemInfo _installNewLiferayFacet(IFacetedProject facetedProject, ProjectConfigurationRequest request, IProgressMonitor monitor) throws CoreException {
    MavenProblemInfo retval = null;
    String pluginType = MavenUtil.getLiferayMavenPluginType(request.getMavenProject());
    if (pluginType == null) {
        pluginType = ILiferayMavenConstants.DEFAULT_PLUGIN_TYPE;
    }
    Plugin liferayMavenPlugin = MavenUtil.getPlugin(request.getMavenProjectFacade(), ILiferayMavenConstants.LIFERAY_MAVEN_PLUGIN_KEY, monitor);
    Action action = _getNewLiferayFacetInstallAction(pluginType);
    if (action != null) {
        try {
            facetedProject.modify(Collections.singleton(action), monitor);
        } catch (Exception e) {
            try {
                SourceLocation location = SourceLocationHelper.findLocation(liferayMavenPlugin, SourceLocationHelper.CONFIGURATION);
                String problemMsg = NLS.bind(Msgs.facetInstallError, pluginType, e.getCause() != null ? e.getCause().getMessage() : e.getMessage());
                retval = new MavenProblemInfo(location, e);
                retval.setMessage(problemMsg);
            } catch (Exception e1) {
            }
            LiferayMavenCore.logError("Unable to install liferay facet " + action.getProjectFacetVersion(), e.getCause());
        }
    }
    return retval;
}
Also used : SourceLocation(org.eclipse.m2e.core.internal.markers.SourceLocation) Action(org.eclipse.wst.common.project.facet.core.IFacetedProject.Action) CoreException(org.eclipse.core.runtime.CoreException) MavenProblemInfo(org.eclipse.m2e.core.internal.markers.MavenProblemInfo) Plugin(org.apache.maven.model.Plugin)

Example 4 with Action

use of org.eclipse.wst.common.project.facet.core.IFacetedProject.Action in project jbosstools-hibernate by jbosstools.

the class JPAProjectConfigurator method configure.

@Override
public void configure(IProject project, Set<IPath> ignoredDirectories, IProgressMonitor monitor) {
    try {
        IFacetedProject facetedProject = ProjectFacetsManager.create(project, true, monitor);
        // $NON-NLS-1$
        IProjectFacet JPA_FACET = ProjectFacetsManager.getProjectFacet("jpt.jpa");
        if (!facetedProject.hasProjectFacet(JPA_FACET)) {
            Set<Action> actions = new LinkedHashSet<>(2, 1);
            IProjectFacetVersion javaFv = JavaFacet.FACET.getVersion(JavaFacetUtil.getCompilerLevel(project));
            if (!facetedProject.hasProjectFacet(JavaFacet.FACET)) {
                actions.add(new IFacetedProject.Action(IFacetedProject.Action.Type.INSTALL, javaFv, null));
            } else if (!facetedProject.hasProjectFacet(javaFv)) {
                actions.add(new IFacetedProject.Action(IFacetedProject.Action.Type.VERSION_CHANGE, javaFv, null));
            }
            // $NON-NLS-1$
            RecursiveFileFinder finder = new RecursiveFileFinder("persistence.xml", ignoredDirectories);
            project.accept(finder);
            PersistenceXmlResourceProvider provider = PersistenceXmlResourceProvider.getXmlResourceProvider(finder.getFile());
            JptXmlResource jpaXmlResource = provider.getXmlResource();
            IProjectFacetVersion version = null;
            if (jpaXmlResource.getVersion() != null) {
                version = JpaProject.FACET.getVersion(jpaXmlResource.getVersion());
            }
            if (version == null) {
                version = JpaProject.FACET.getLatestVersion();
            }
            // use default
            JpaPlatform platform = null;
            // TODO improve platform detection
            LibraryInstallDelegate libraryDelegate = new LibraryInstallDelegate(facetedProject, version);
            // $NON-NLS-1$
            ILibraryProvider libraryProvider = LibraryProviderFramework.getProvider("jpa-no-op-library-provider");
            libraryDelegate.setLibraryProvider(libraryProvider);
            IDataModel dm = DataModelFactory.createDataModel(new JpaFacetInstallDataModelProvider());
            dm.setProperty(IFacetDataModelProperties.FACET_VERSION_STR, version.getVersionString());
            dm.setProperty(JpaFacetDataModelProperties.PLATFORM, platform);
            dm.setProperty(JpaFacetInstallDataModelProperties.DISCOVER_ANNOTATED_CLASSES, true);
            dm.setProperty(JpaFacetInstallDataModelProperties.LIBRARY_PROVIDER_DELEGATE, libraryDelegate);
            actions.add(new IFacetedProject.Action(IFacetedProject.Action.Type.INSTALL, version, dm));
            facetedProject.modify(actions, monitor);
        }
    } catch (Exception ex) {
        HibernateJptUIPlugin.getDefault().getLog().log(new Status(IStatus.ERROR, HibernateJptUIPlugin.PLUGIN_ID, ex.getMessage(), ex));
    }
}
Also used : LinkedHashSet(java.util.LinkedHashSet) IStatus(org.eclipse.core.runtime.IStatus) Status(org.eclipse.core.runtime.Status) IFacetedProject(org.eclipse.wst.common.project.facet.core.IFacetedProject) Action(org.eclipse.wst.common.project.facet.core.IFacetedProject.Action) JptXmlResource(org.eclipse.jpt.common.core.resource.xml.JptXmlResource) RecursiveFileFinder(org.eclipse.ui.wizards.datatransfer.RecursiveFileFinder) IProjectFacetVersion(org.eclipse.wst.common.project.facet.core.IProjectFacetVersion) JpaFacetInstallDataModelProvider(org.eclipse.jpt.jpa.core.internal.facet.JpaFacetInstallDataModelProvider) LibraryInstallDelegate(org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate) ILibraryProvider(org.eclipse.jst.common.project.facet.core.libprov.ILibraryProvider) IDataModel(org.eclipse.wst.common.frameworks.datamodel.IDataModel) JpaPlatform(org.eclipse.jpt.jpa.core.JpaPlatform) CoreException(org.eclipse.core.runtime.CoreException) IProjectFacet(org.eclipse.wst.common.project.facet.core.IProjectFacet) Action(org.eclipse.wst.common.project.facet.core.IFacetedProject.Action) PersistenceXmlResourceProvider(org.eclipse.jpt.jpa.core.internal.resource.persistence.PersistenceXmlResourceProvider)

Example 5 with Action

use of org.eclipse.wst.common.project.facet.core.IFacetedProject.Action in project liferay-ide by liferay.

the class LiferayFacetedProjectListener method handleEvent.

public void handleEvent(IFacetedProjectEvent event) {
    if (event.getType() != IFacetedProjectEvent.Type.POST_INSTALL) {
        return;
    }
    IProjectFacetActionEvent actionEvent = (IProjectFacetActionEvent) event;
    if (!JSDT_FACET.equals(actionEvent.getProjectFacet().getId())) {
        return;
    }
    Job uninstall = new WorkspaceJob("uninstall jsdt facet") {

        @Override
        public IStatus runInWorkspace(IProgressMonitor monitor) throws CoreException {
            try {
                IFacetedProject fProject = actionEvent.getProject();
                Set<IProjectFacet> fixedFacets = fProject.getFixedProjectFacets();
                Set<IProjectFacet> updatedFacets = new HashSet<>();
                for (IProjectFacet f : fixedFacets) {
                    if (!JSDT_FACET.equals(f.getId())) {
                        updatedFacets.add(f);
                    }
                }
                fProject.setFixedProjectFacets(updatedFacets);
            } catch (Exception e) {
                ProjectCore.logError("Unable to removed fixed jsdt facet", e);
            }
            try {
                Set<Action> actions = new HashSet<>();
                Type type = Type.valueOf("uninstall");
                Action uninstallJsdt = new Action(type, actionEvent.getProjectFacetVersion(), null);
                actions.add(uninstallJsdt);
                actionEvent.getProject().modify(actions, monitor);
                // try to remove unneeded jsdt files
                IProject project = actionEvent.getProject().getProject();
                IFile jsdtscope = project.getFile(".settings/.jsdtscope");
                if (FileUtil.exists(jsdtscope)) {
                    jsdtscope.delete(true, monitor);
                }
                IFile container = project.getFile(".settings/org.eclipse.wst.jsdt.ui.superType.container");
                if (FileUtil.exists(container)) {
                    container.delete(true, monitor);
                }
                IFile name = project.getFile(".settings/org.eclipse.wst.jsdt.ui.superType.name");
                if (FileUtil.exists(name)) {
                    name.delete(true, monitor);
                }
            } catch (CoreException ce) {
                ProjectCore.logError("Unable to uninstall jsdt facet", ce);
            }
            return Status.OK_STATUS;
        }
    };
    uninstall.schedule();
}
Also used : IFacetedProject(org.eclipse.wst.common.project.facet.core.IFacetedProject) Action(org.eclipse.wst.common.project.facet.core.IFacetedProject.Action) IFile(org.eclipse.core.resources.IFile) WorkspaceJob(org.eclipse.core.resources.WorkspaceJob) CoreException(org.eclipse.core.runtime.CoreException) IProject(org.eclipse.core.resources.IProject) IProjectFacetActionEvent(org.eclipse.wst.common.project.facet.core.events.IProjectFacetActionEvent) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) Type(org.eclipse.wst.common.project.facet.core.IFacetedProject.Action.Type) CoreException(org.eclipse.core.runtime.CoreException) IProjectFacet(org.eclipse.wst.common.project.facet.core.IProjectFacet) Job(org.eclipse.core.runtime.jobs.Job) WorkspaceJob(org.eclipse.core.resources.WorkspaceJob) HashSet(java.util.HashSet)

Aggregations

Action (org.eclipse.wst.common.project.facet.core.IFacetedProject.Action)7 IDataModel (org.eclipse.wst.common.frameworks.datamodel.IDataModel)5 CoreException (org.eclipse.core.runtime.CoreException)3 IProjectFacet (org.eclipse.wst.common.project.facet.core.IProjectFacet)3 IProjectFacetVersion (org.eclipse.wst.common.project.facet.core.IProjectFacetVersion)3 ILibraryProvider (org.eclipse.jst.common.project.facet.core.libprov.ILibraryProvider)2 LibraryInstallDelegate (org.eclipse.jst.common.project.facet.core.libprov.LibraryInstallDelegate)2 IFacetedProject (org.eclipse.wst.common.project.facet.core.IFacetedProject)2 HashSet (java.util.HashSet)1 LinkedHashSet (java.util.LinkedHashSet)1 Plugin (org.apache.maven.model.Plugin)1 IFile (org.eclipse.core.resources.IFile)1 IProject (org.eclipse.core.resources.IProject)1 WorkspaceJob (org.eclipse.core.resources.WorkspaceJob)1 IPath (org.eclipse.core.runtime.IPath)1 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)1 IStatus (org.eclipse.core.runtime.IStatus)1 Path (org.eclipse.core.runtime.Path)1 Status (org.eclipse.core.runtime.Status)1 Job (org.eclipse.core.runtime.jobs.Job)1