diff options
author | Noopur Gupta | 2017-04-25 11:58:06 +0000 |
---|---|---|
committer | Noopur Gupta | 2017-04-25 11:58:06 +0000 |
commit | 8070f3a502020e5759289a789fe05cc78f9a04f6 (patch) | |
tree | 6f0de2be1dee8859e0a74a3eae9b9ab08aa6c23f | |
parent | 05009d91b27000df6b7ba48847d86e8f164ddd33 (diff) | |
download | eclipse.jdt.ui-8070f3a502020e5759289a789fe05cc78f9a04f6.tar.gz eclipse.jdt.ui-8070f3a502020e5759289a789fe05cc78f9a04f6.tar.xz eclipse.jdt.ui-8070f3a502020e5759289a789fe05cc78f9a04f6.zip |
Bug 488748: [1.9] Provide a command/tool to convert a project to moduleY20170608-1000Y20170601-1000Y20170525-1000Y20170523-0000Y20170518-1000Y20170512-0230Y20170511-1500Y20170511-1000Y20170504-1000Y20170427-1000P20170609-0640P20170602-1020P20170602-0810P20170526-0330P20170523-0000P20170519-0945
Change-Id: I9c4ad714a1fe6049656848fc9bf697b12516e4a5
-rw-r--r-- | org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewSourceFolderWizardPage.java | 68 |
1 files changed, 63 insertions, 5 deletions
diff --git a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewSourceFolderWizardPage.java b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewSourceFolderWizardPage.java index 26af690ffc..80e022151f 100644 --- a/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewSourceFolderWizardPage.java +++ b/org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/wizards/NewSourceFolderWizardPage.java @@ -1,5 +1,5 @@ /******************************************************************************* - * Copyright (c) 2000, 2016 IBM Corporation and others. + * Copyright (c) 2000, 2017 IBM Corporation and others. * All rights reserved. This program and the accompanying materials * are made available under the terms of the Eclipse Public License v1.0 * which accompanies this distribution, and is available at @@ -16,6 +16,7 @@ package org.eclipse.jdt.internal.ui.wizards; import java.net.URI; import java.util.ArrayList; +import java.util.Arrays; import java.util.HashSet; import java.util.List; import java.util.Set; @@ -65,12 +66,15 @@ import org.eclipse.jdt.core.IClasspathEntry; import org.eclipse.jdt.core.IJavaElement; import org.eclipse.jdt.core.IJavaModelStatus; import org.eclipse.jdt.core.IJavaProject; +import org.eclipse.jdt.core.IModuleDescription; import org.eclipse.jdt.core.IPackageFragment; import org.eclipse.jdt.core.IPackageFragmentRoot; import org.eclipse.jdt.core.JavaConventions; import org.eclipse.jdt.core.JavaCore; import org.eclipse.jdt.core.JavaModelException; +import org.eclipse.jdt.internal.core.manipulation.util.BasicElementLabels; +import org.eclipse.jdt.internal.corext.codemanipulation.StubUtility; import org.eclipse.jdt.internal.corext.util.InfoFilesUtil; import org.eclipse.jdt.internal.corext.util.JavaModelUtil; import org.eclipse.jdt.internal.corext.util.Messages; @@ -84,7 +88,6 @@ import org.eclipse.jdt.internal.ui.JavaPlugin; import org.eclipse.jdt.internal.ui.dialogs.StatusInfo; import org.eclipse.jdt.internal.ui.javaeditor.EditorUtility; import org.eclipse.jdt.internal.ui.util.CoreUtility; -import org.eclipse.jdt.internal.core.manipulation.util.BasicElementLabels; import org.eclipse.jdt.internal.ui.wizards.buildpaths.BuildPathsBlock; import org.eclipse.jdt.internal.ui.wizards.dialogfields.DialogField; import org.eclipse.jdt.internal.ui.wizards.dialogfields.IDialogFieldListener; @@ -590,9 +593,9 @@ public class NewSourceFolderWizardPage extends NewElementWizardPage { if (isCreateModuleInfoJava()) { // default package always exists - IPackageFragment pack= fCreatedRoot.getPackageFragment(""); //$NON-NLS-1$ - String fileContent= JavaCore.createModuleFromPackageRoot(null, fCreatedRoot); - InfoFilesUtil.createInfoJavaFile(MODULE_INFO_JAVA_FILENAME, fileContent, pack, monitor); + IPackageFragment defaultPkg= fCreatedRoot.getPackageFragment(""); //$NON-NLS-1$ + String fileContent= getModuleInfoFileContent(); + InfoFilesUtil.createInfoJavaFile(MODULE_INFO_JAVA_FILENAME, fileContent, defaultPkg, monitor); } // save dialog settings for create_module_info_java @@ -606,6 +609,61 @@ public class NewSourceFolderWizardPage extends NewElementWizardPage { } } + private String getModuleInfoFileContent() throws CoreException { + List<String> exportedPackages= new ArrayList<>(); + IPackageFragmentRoot[] pkgFragmentRoots= fCurrJProject.getPackageFragmentRoots(); + List<IPackageFragmentRoot> packageFragmentRoots= new ArrayList<>(Arrays.asList(pkgFragmentRoots)); + for (IPackageFragmentRoot packageFragmentRoot : pkgFragmentRoots) { + IResource res= packageFragmentRoot.getCorrespondingResource(); + if (res == null || res.getType() != IResource.FOLDER || packageFragmentRoot.getKind() != IPackageFragmentRoot.K_SOURCE) { + packageFragmentRoots.remove(packageFragmentRoot); + } + } + pkgFragmentRoots= packageFragmentRoots.toArray(new IPackageFragmentRoot[packageFragmentRoots.size()]); + for (IPackageFragmentRoot packageFragmentRoot : pkgFragmentRoots) { + for (IJavaElement child : packageFragmentRoot.getChildren()) { + if (child instanceof IPackageFragment) { + IPackageFragment pkgFragment= (IPackageFragment) child; + if (!pkgFragment.isDefaultPackage() && pkgFragment.getCompilationUnits().length != 0) { + exportedPackages.add(pkgFragment.getElementName()); + } + } + } + } + + String[] requiredModules= JavaCore.getReferencedModules(fCurrJProject); + + StringBuilder fileContent= new StringBuilder(); + if (requiredModules.length > 0 || exportedPackages.size() > 0) { + String lineDelimiter= StubUtility.getLineDelimiterUsed(fCurrJProject); + fileContent.append("module "); //$NON-NLS-1$ + IModuleDescription moduleDescription= fCurrJProject.getModuleDescription(); + String moduleName= moduleDescription != null ? moduleDescription.getElementName() : fCurrJProject.getElementName(); + fileContent.append(moduleName); + fileContent.append(" {"); //$NON-NLS-1$ + fileContent.append(lineDelimiter); + + for (String exportedPkg : exportedPackages) { + fileContent.append('\t'); + fileContent.append("exports "); //$NON-NLS-1$ + fileContent.append(exportedPkg); + fileContent.append(";"); //$NON-NLS-1$ + fileContent.append(lineDelimiter); + } + + for (String requiredModule : requiredModules) { + fileContent.append('\t'); + fileContent.append("requires "); //$NON-NLS-1$ + fileContent.append(requiredModule); + fileContent.append(';'); + fileContent.append(lineDelimiter); + } + + fileContent.append('}'); + } + return fileContent.toString(); + } + // ------------- choose dialogs private IFolder chooseFolder(String title, String message, IPath initialPath) { |