Search in sources :

Example 31 with SDK

use of com.liferay.ide.sdk.core.SDK in project liferay-ide by liferay.

the class ProjectUtil method createExistingProject.

public static IProject createExistingProject(ProjectRecord record, IPath sdkLocation, IProgressMonitor monitor) throws CoreException {
    String projectName = record.getProjectName();
    IWorkspace workspace = ResourcesPlugin.getWorkspace();
    IProject project = workspace.getRoot().getProject(projectName);
    if (record.description == null) {
        // error case
        record.description = workspace.newProjectDescription(projectName);
        IPath locationPath = new Path(record.projectSystemFile.getAbsolutePath());
        if (Platform.getLocation().isPrefixOf(locationPath)) {
            record.description.setLocation(null);
        } else {
            record.description.setLocation(locationPath);
        }
    } else {
        record.description.setName(projectName);
    }
    project.create(record.description, CoreUtil.newSubMonitor(monitor, 30));
    project.open(IResource.FORCE, CoreUtil.newSubMonitor(monitor, 70));
    if (project.getName().endsWith(ISDKConstants.EXT_PLUGIN_PROJECT_SUFFIX)) {
        _fixExtProjectClasspathEntries(project);
    }
    IFacetedProject fProject = ProjectFacetsManager.create(project, true, monitor);
    FacetedProjectWorkingCopy fpwc = new FacetedProjectWorkingCopy(fProject);
    String pluginType = guessPluginType(fpwc);
    SDKPluginFacetUtil.configureProjectAsSDKProject(fpwc, pluginType, sdkLocation.toPortableString(), record);
    fpwc.commitChanges(monitor);
    IJavaProject javaProject = JavaCore.create(fProject.getProject());
    CoreUtil.getWorkspace().run(new IWorkspaceRunnable() {

        @Override
        public void run(IProgressMonitor monitor) throws CoreException {
            List<IClasspathEntry> rawClasspaths = new ArrayList<>();
            IPath containerPath = null;
            for (IClasspathEntry entry : javaProject.getRawClasspath()) {
                String segment = entry.getPath().segment(0);
                if ((entry.getEntryKind() == IClasspathEntry.CPE_CONTAINER) && segment.equals(SDKClasspathContainer.ID)) {
                    containerPath = entry.getPath();
                    break;
                }
                if (!_isLiferayRuntimePluginClassPath(entry)) {
                    rawClasspaths.add(entry);
                }
            }
            if (containerPath != null) {
                ClasspathContainerInitializer initializer = JavaCore.getClasspathContainerInitializer(SDKClasspathContainer.ID);
                initializer.initialize(containerPath, javaProject);
            } else {
                javaProject.setRawClasspath(rawClasspaths.toArray(new IClasspathEntry[rawClasspaths.size()]), new NullProgressMonitor());
                javaProject.setRawClasspath(rawClasspaths.toArray(new IClasspathEntry[rawClasspaths.size()]), new NullProgressMonitor());
                IAccessRule[] accessRules = {};
                IClasspathAttribute[] attributes = { JavaCore.newClasspathAttribute(IClasspathDependencyConstants.CLASSPATH_COMPONENT_NON_DEPENDENCY, StringPool.EMPTY) };
                IPath cpePath = new Path(SDKClasspathContainer.ID);
                IClasspathEntry newEntry = JavaCore.newContainerEntry(cpePath, accessRules, attributes, false);
                IClasspathEntry[] entries = javaProject.getRawClasspath();
                for (IClasspathEntry entry : entries) {
                    if (entry.getPath().equals(cpePath)) {
                        return;
                    }
                }
                IClasspathEntry[] newEntries = new IClasspathEntry[entries.length + 1];
                System.arraycopy(entries, 0, newEntries, 0, entries.length);
                newEntries[entries.length] = newEntry;
                javaProject.setRawClasspath(newEntries, monitor);
            }
            monitor.done();
            SDK sdk = SDKUtil.createSDKFromLocation(sdkLocation);
            SDKUtil.openAsProject(sdk);
        }
    }, monitor);
    return project;
}
Also used : IPath(org.eclipse.core.runtime.IPath) Path(org.eclipse.core.runtime.Path) IWorkspaceRunnable(org.eclipse.core.resources.IWorkspaceRunnable) NullProgressMonitor(org.eclipse.core.runtime.NullProgressMonitor) IFacetedProject(org.eclipse.wst.common.project.facet.core.IFacetedProject) IPath(org.eclipse.core.runtime.IPath) IClasspathEntry(org.eclipse.jdt.core.IClasspathEntry) FacetedProjectWorkingCopy(org.eclipse.wst.common.project.facet.core.internal.FacetedProjectWorkingCopy) IFacetedProjectWorkingCopy(org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy) IProject(org.eclipse.core.resources.IProject) PluginClasspathContainerInitializer(com.liferay.ide.project.core.PluginClasspathContainerInitializer) ClasspathContainerInitializer(org.eclipse.jdt.core.ClasspathContainerInitializer) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) IJavaProject(org.eclipse.jdt.core.IJavaProject) CoreException(org.eclipse.core.runtime.CoreException) IWorkspace(org.eclipse.core.resources.IWorkspace) List(java.util.List) ArrayList(java.util.ArrayList) SDK(com.liferay.ide.sdk.core.SDK)

Example 32 with SDK

use of com.liferay.ide.sdk.core.SDK in project liferay-ide by liferay.

the class ProjectUtil method is7xServerDeployableProject.

public static boolean is7xServerDeployableProject(IProject project) {
    ILiferayProject liferayProject = LiferayCore.create(project);
    if (liferayProject instanceof IBundleProject) {
        if (liferayProject instanceof PluginsSDKBundleProject) {
            PluginsSDKBundleProject sdkProject = (PluginsSDKBundleProject) liferayProject;
            SDK sdk = sdkProject.getSDK();
            if (sdk != null) {
                IPath location = sdkProject.getProject().getLocation();
                String projectType = getLiferayPluginType(location.toPortableString());
                Version version = new Version(sdk.getVersion());
                Version sdk70 = ILiferayConstants.V700;
                if ((CoreUtil.compareVersions(version, sdk70) >= 0) && !ISDKConstants.EXT_PLUGIN_PROJECT_FOLDER.equals(projectType)) {
                    return true;
                } else {
                    return false;
                }
            } else {
                return false;
            }
        } else {
            return true;
        }
    } else {
        return false;
    }
}
Also used : IBundleProject(com.liferay.ide.core.IBundleProject) IPath(org.eclipse.core.runtime.IPath) PluginsSDKBundleProject(com.liferay.ide.project.core.PluginsSDKBundleProject) Version(org.osgi.framework.Version) IProjectFacetVersion(org.eclipse.wst.common.project.facet.core.IProjectFacetVersion) ILiferayProject(com.liferay.ide.core.ILiferayProject) SDK(com.liferay.ide.sdk.core.SDK)

Example 33 with SDK

use of com.liferay.ide.sdk.core.SDK in project liferay-ide by liferay.

the class ProjectUtil method createNewSDKProject.

public static IProject createNewSDKProject(ProjectRecord projectRecord, IPath sdkLocation, IProgressMonitor monitor, NewLiferayPluginProjectOp op) throws CoreException {
    IDataModel newProjectDataModel = DataModelFactory.createDataModel(new PluginFacetProjectCreationDataModelProvider());
    // we are importing so set flag to not create anything
    newProjectDataModel.setBooleanProperty(IPluginProjectDataModelProperties.CREATE_PROJECT_OPERATION, false);
    IDataModel nestedModel = newProjectDataModel.getNestedModel(IPluginProjectDataModelProperties.NESTED_PROJECT_DM);
    // using sdk location
    nestedModel.setBooleanProperty(IPluginProjectDataModelProperties.USE_DEFAULT_LOCATION, true);
    newProjectDataModel.setBooleanProperty(IPluginProjectDataModelProperties.LIFERAY_USE_SDK_LOCATION, false);
    newProjectDataModel.setBooleanProperty(IPluginProjectDataModelProperties.LIFERAY_USE_WORKSPACE_LOCATION, true);
    setGenerateDD(newProjectDataModel, false);
    IPath webXmlPath = projectRecord.getProjectLocation().append(ISDKConstants.DEFAULT_DOCROOT_FOLDER + "/WEB-INF/web.xml");
    File webXmlFile = webXmlPath.toFile();
    if (projectRecord.getProjectName().endsWith(ISDKConstants.PORTLET_PLUGIN_PROJECT_SUFFIX)) {
        newProjectDataModel.setProperty(IPluginProjectDataModelProperties.PLUGIN_TYPE_PORTLET, true);
        if (FileUtil.notExists(webXmlFile)) {
            createDefaultWebXml(webXmlFile, projectRecord.getProjectName());
        }
    } else if (projectRecord.getProjectName().endsWith(ISDKConstants.HOOK_PLUGIN_PROJECT_SUFFIX)) {
        newProjectDataModel.setProperty(IPluginProjectDataModelProperties.PLUGIN_TYPE_HOOK, true);
        if (FileUtil.notExists(webXmlFile)) {
            createDefaultWebXml(webXmlFile, projectRecord.getProjectName());
        }
    } else if (projectRecord.getProjectName().endsWith(ISDKConstants.EXT_PLUGIN_PROJECT_SUFFIX)) {
        Path path = new Path(ISDKConstants.DEFAULT_DOCROOT_FOLDER + "/WEB-INF/ext-web/docroot/WEB-INF/web.xml");
        webXmlPath = webXmlPath.removeLastSegments(3).append(path);
        webXmlFile = webXmlPath.toFile();
        newProjectDataModel.setProperty(IPluginProjectDataModelProperties.PLUGIN_TYPE_EXT, true);
        if (FileUtil.notExists(webXmlFile)) {
            createDefaultWebXml(webXmlPath.toFile(), projectRecord.getProjectName());
        }
    } else if (projectRecord.getProjectName().endsWith(ISDKConstants.LAYOUTTPL_PLUGIN_PROJECT_SUFFIX)) {
        newProjectDataModel.setProperty(IPluginProjectDataModelProperties.PLUGIN_TYPE_LAYOUTTPL, true);
    } else if (projectRecord.getProjectName().endsWith(ISDKConstants.THEME_PLUGIN_PROJECT_SUFFIX)) {
        newProjectDataModel.setProperty(IPluginProjectDataModelProperties.PLUGIN_TYPE_THEME, true);
    } else if (projectRecord.getProjectName().endsWith(ISDKConstants.WEB_PLUGIN_PROJECT_SUFFIX)) {
        newProjectDataModel.setProperty(IPluginProjectDataModelProperties.PLUGIN_TYPE_WEB, true);
    }
    IFacetedProjectWorkingCopy fpwc = (IFacetedProjectWorkingCopy) newProjectDataModel.getProperty(IFacetProjectCreationDataModelProperties.FACETED_PROJECT_WORKING_COPY);
    fpwc.setProjectName(projectRecord.getProjectName());
    IPath projectLocation = projectRecord.getProjectLocation();
    String projectDirName = projectLocation.lastSegment();
    // for now always set a project location (so it can be used by facet install methods) may be unset later
    fpwc.setProjectLocation(projectRecord.getProjectLocation());
    String pluginType = null;
    if (op != null) {
        PluginType type = op.getPluginType().content();
        pluginType = type.name();
        if (PluginType.theme.name().equals(pluginType)) {
            newProjectDataModel.setProperty(IPluginProjectDataModelProperties.THEME_PARENT, op.getThemeParent().content(true));
            newProjectDataModel.setProperty(IPluginProjectDataModelProperties.THEME_TEMPLATE_FRAMEWORK, op.getThemeFramework().content(true));
        }
    } else {
        pluginType = guessPluginType(fpwc);
    }
    SDKPluginFacetUtil.configureProjectAsSDKProject(fpwc, pluginType, sdkLocation.toPortableString(), projectRecord);
    if ((op != null) && PluginType.portlet.name().equals(pluginType)) {
        IPortletFramework portletFramework = op.getPortletFramework().content(true);
        portletFramework.configureNewProject(newProjectDataModel, fpwc);
    }
    // if project is located in natural workspace location then don't need to set a project location
    IPath rootLocation = CoreUtil.getWorkspaceRoot().getLocation();
    if (rootLocation.append(projectDirName).equals(projectLocation)) {
        fpwc.setProjectLocation(null);
    }
    fpwc.commitChanges(monitor);
    CoreUtil.getWorkspace().run(new IWorkspaceRunnable() {

        @Override
        public void run(IProgressMonitor monitor) throws CoreException {
            SDK sdk = SDKUtil.createSDKFromLocation(sdkLocation);
            SDKUtil.openAsProject(sdk);
        }
    }, monitor);
    return fpwc.getProject();
}
Also used : IPath(org.eclipse.core.runtime.IPath) Path(org.eclipse.core.runtime.Path) IWorkspaceRunnable(org.eclipse.core.resources.IWorkspaceRunnable) IPath(org.eclipse.core.runtime.IPath) IDataModel(org.eclipse.wst.common.frameworks.datamodel.IDataModel) PluginType(com.liferay.ide.project.core.model.PluginType) IPortletFramework(com.liferay.ide.project.core.IPortletFramework) IProgressMonitor(org.eclipse.core.runtime.IProgressMonitor) CoreException(org.eclipse.core.runtime.CoreException) IFacetedProjectWorkingCopy(org.eclipse.wst.common.project.facet.core.IFacetedProjectWorkingCopy) SDK(com.liferay.ide.sdk.core.SDK) PluginFacetProjectCreationDataModelProvider(com.liferay.ide.project.core.facet.PluginFacetProjectCreationDataModelProvider) IFile(org.eclipse.core.resources.IFile) File(java.io.File)

Example 34 with SDK

use of com.liferay.ide.sdk.core.SDK in project liferay-ide by liferay.

the class CheckSDKLocationDerivedValueService method compute.

@Override
protected String compute() {
    CodeUpgradeOp op = _op();
    final Path path = op.getSdkLocation().content();
    SDK sdk = SDKUtil.createSDKFromLocation(PathBridge.create(path));
    String liferay62ServerLocation = null;
    try {
        if (sdk != null) {
            liferay62ServerLocation = (String) (sdk.getBuildProperties(true).get(ISDKConstants.PROPERTY_APP_SERVER_PARENT_DIR));
            _checkProjects(op, sdk);
        } else {
            _setAllStateFalse(op);
        }
    } catch (CoreException ce) {
    }
    return liferay62ServerLocation;
}
Also used : IPath(org.eclipse.core.runtime.IPath) Path(org.eclipse.sapphire.modeling.Path) CoreException(org.eclipse.core.runtime.CoreException) SDK(com.liferay.ide.sdk.core.SDK) CodeUpgradeOp(com.liferay.ide.project.core.upgrade.CodeUpgradeOp)

Example 35 with SDK

use of com.liferay.ide.sdk.core.SDK in project liferay-ide by liferay.

the class ProjectCoreBase method createNewSDK.

protected SDK createNewSDK() throws Exception {
    final IPath newSDKLocation = new Path(getLiferayPluginsSdkDir().toString() + "-new");
    if (!newSDKLocation.toFile().exists()) {
        FileUtils.copyDirectory(getLiferayPluginsSdkDir().toFile(), newSDKLocation.toFile());
    }
    assertEquals(true, newSDKLocation.toFile().exists());
    SDK newSDK = SDKUtil.createSDKFromLocation(newSDKLocation);
    if (newSDK == null) {
        FileUtils.copyDirectory(getLiferayPluginsSdkDir().toFile(), newSDKLocation.toFile());
        newSDK = SDKUtil.createSDKFromLocation(newSDKLocation);
    }
    SDKManager.getInstance().addSDK(newSDK);
    return newSDK;
}
Also used : IPath(org.eclipse.core.runtime.IPath) Path(org.eclipse.core.runtime.Path) IPath(org.eclipse.core.runtime.IPath) SDK(com.liferay.ide.sdk.core.SDK)

Aggregations

SDK (com.liferay.ide.sdk.core.SDK)75 IPath (org.eclipse.core.runtime.IPath)41 CoreException (org.eclipse.core.runtime.CoreException)29 IStatus (org.eclipse.core.runtime.IStatus)26 IProject (org.eclipse.core.resources.IProject)24 Path (org.eclipse.sapphire.modeling.Path)16 File (java.io.File)15 IFile (org.eclipse.core.resources.IFile)14 Path (org.eclipse.core.runtime.Path)14 NewLiferayPluginProjectOp (com.liferay.ide.project.core.model.NewLiferayPluginProjectOp)12 IProgressMonitor (org.eclipse.core.runtime.IProgressMonitor)11 Version (org.osgi.framework.Version)11 IOException (java.io.IOException)9 Status (org.eclipse.sapphire.modeling.Status)9 IFolder (org.eclipse.core.resources.IFolder)7 Test (org.junit.Test)7 ArrayList (java.util.ArrayList)6 IWebProject (com.liferay.ide.core.IWebProject)4 IPortletFramework (com.liferay.ide.project.core.IPortletFramework)4 PluginType (com.liferay.ide.project.core.model.PluginType)4