Skip to content

Commit 48f1c35

Browse files
committed
Validate NPM module version field. See
angelozerr#147
1 parent 8f56ae5 commit 48f1c35

22 files changed

+279
-135
lines changed

core/ts.core/src/ts/npm/NPMModule.java

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -7,20 +7,28 @@
77

88
public class NPMModule {
99

10-
private final String moduleName;
10+
private final String name;
1111
private final OS os;
1212
private List<String> versions;
1313

14-
NPMModule(String moduleName, OS os) {
15-
this.moduleName = moduleName;
14+
NPMModule(String name, OS os) {
15+
this.name = name;
1616
this.os = os;
1717
}
1818

1919
public List<String> getAvailableVersions() throws IOException {
20-
if (versions == null) {
21-
versions = NPMHelper.getVersions(moduleName, os);
20+
if (!isLoaded()) {
21+
versions = NPMHelper.getVersions(name, os);
2222
}
2323
return versions;
2424
}
2525

26+
public boolean isLoaded() {
27+
return versions != null;
28+
}
29+
30+
public String getName() {
31+
return name;
32+
}
33+
2634
}

core/ts.core/src/ts/npm/NPMModulesManager.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,7 @@
1010
*/
1111
package ts.npm;
1212

13-
import java.io.IOException;
1413
import java.util.HashMap;
15-
import java.util.List;
1614
import java.util.Map;
1715

1816
import ts.OS;
@@ -31,13 +29,13 @@ public NPMModulesManager(OS os) {
3129
this.modules = new HashMap<>();
3230
}
3331

34-
public List<String> getAvailableVersions(String moduleName) throws IOException {
32+
public NPMModule getNPMModule(String moduleName) {
3533
NPMModule module = modules.get(moduleName);
3634
if (module == null) {
3735
module = new NPMModule(moduleName, os);
3836
modules.put(moduleName, module);
3937
}
40-
return module.getAvailableVersions();
38+
return module;
4139
}
4240

4341
public void resetCache(String moduleName) {

eclipse/ts.eclipse.ide.ui/META-INF/MANIFEST.MF

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,4 +47,5 @@ Export-Package: ts.eclipse.ide.ui,
4747
ts.eclipse.ide.ui.preferences,
4848
ts.eclipse.ide.ui.search,
4949
ts.eclipse.ide.ui.utils,
50+
ts.eclipse.ide.ui.widgets,
5051
ts.eclipse.ide.ui.wizards

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/internal/ui/TypeScriptUIMessages.java

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,6 @@
1515
import java.util.MissingResourceException;
1616
import java.util.ResourceBundle;
1717

18-
import org.eclipse.jface.resource.ImageDescriptor;
1918
import org.eclipse.osgi.util.NLS;
2019

2120
/**
@@ -175,7 +174,7 @@ public class TypeScriptUIMessages extends NLS {
175174
public static String NewTypeScriptProjectWizard_windowTitle;
176175
public static String NewTypeScriptProjectWizard_newProjectTitle;
177176
public static String NewTypeScriptProjectWizard_newProjectDescription;
178-
177+
179178
public static String TSConfigWizardPage_title;
180179
public static String TSConfigWizardPage_description;
181180
public static String TSConfigWizardPage_module;
@@ -198,12 +197,17 @@ public class TypeScriptUIMessages extends NLS {
198197
public static String TypeScriptRuntimeAndNodejsWizardPage_typescript_group_label;
199198
public static String TypeScriptRuntimeAndNodejsWizardPage_useEmbeddedTsRuntime_label;
200199
public static String TypeScriptRuntimeAndNodejsWizardPage_useInstallTsRuntime_label;
201-
200+
202201
// NPM Module Versions
203202
public static String NPMModuleVersionsSelectionDialog_title;
204203
public static String NPMModuleVersionsSelectionDialog_message;
205204
public static String NPMModuleVersionsSelectionDialog_searchJob_taskName;
206-
205+
206+
// NPM Install Widgets
207+
public static String NPMInstallWidget_ValidateVersionJob_name;
208+
public static String NPMInstallWidget_SearchingVersions_status;
209+
public static String NPMInstallWidget_InvalidVersion_status;
210+
207211
public static ResourceBundle getResourceBundle() {
208212
try {
209213
if (fResourceBundle == null)

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/internal/ui/TypeScriptUIMessages.properties

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,4 +176,9 @@ TypeScriptRuntimeAndNodejsWizardPage_useInstallTsRuntime_label=Install TypeScrip
176176
# NPM Module widget
177177
NPMModuleVersionsSelectionDialog_title=Open NPM module version for ''{0}''
178178
NPMModuleVersionsSelectionDialog_message=&Enter NPM module version or pattern (?, * or camel case):
179-
NPMModuleVersionsSelectionDialog_searchJob_taskName=Searching
179+
NPMModuleVersionsSelectionDialog_searchJob_taskName=Searching
180+
181+
# NPN Install Widgets
182+
NPMInstallWidget_ValidateVersionJob_name=Validate NPM module version job.
183+
NPMInstallWidget_SearchingVersions_status=Searching versions for ''{0}'' with 'npm show'
184+
NPMInstallWidget_InvalidVersion_status=Invalid version ''{0}'' for ''{1}''.

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/internal/ui/dialogs/NPMModuleVersionsSelectionDialog.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ protected void fillContentProvider(AbstractContentProvider contentProvider, Item
6969
try {
7070
// execute "npm view $moduleName versions" to retrieve version
7171
// list of the given module name.
72-
IDENPMModulesManager.getInstance().getAvailableVersions(moduleName)
72+
IDENPMModulesManager.getInstance().getNPMModule(moduleName).getAvailableVersions()
7373
.forEach(version -> contentProvider.add(version, itemsFilter));
7474
} catch (IOException e) {
7575
e.printStackTrace();

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/internal/ui/preferences/ATAConfigurationBlock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,9 +23,9 @@
2323

2424
import ts.eclipse.ide.core.preferences.TypeScriptCorePreferenceConstants;
2525
import ts.eclipse.ide.internal.ui.TypeScriptUIMessages;
26-
import ts.eclipse.ide.ui.preferences.IStatusChangeListener;
2726
import ts.eclipse.ide.ui.preferences.OptionsConfigurationBlock;
2827
import ts.eclipse.ide.ui.preferences.ScrolledPageContent;
28+
import ts.eclipse.ide.ui.widgets.IStatusChangeListener;
2929

3030
/**
3131
* Automatic Type Acquisition (ATA) configuration block.

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/internal/ui/preferences/AbstractTypeScriptRepositoryConfigurationBlock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,9 +30,9 @@
3030
import ts.eclipse.ide.core.TypeScriptCorePlugin;
3131
import ts.eclipse.ide.internal.ui.TypeScriptUIMessages;
3232
import ts.eclipse.ide.ui.preferences.BrowseButtonsComposite;
33-
import ts.eclipse.ide.ui.preferences.IStatusChangeListener;
3433
import ts.eclipse.ide.ui.preferences.OptionsConfigurationBlock;
3534
import ts.eclipse.ide.ui.preferences.ScrolledPageContent;
35+
import ts.eclipse.ide.ui.widgets.IStatusChangeListener;
3636
import ts.repository.ITypeScriptRepository;
3737

3838
/**

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/internal/ui/preferences/FormatterConfigurationBlock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,9 @@
2222

2323
import ts.eclipse.ide.core.preferences.TypeScriptCorePreferenceConstants;
2424
import ts.eclipse.ide.internal.ui.TypeScriptUIMessages;
25-
import ts.eclipse.ide.ui.preferences.IStatusChangeListener;
2625
import ts.eclipse.ide.ui.preferences.OptionsConfigurationBlock;
2726
import ts.eclipse.ide.ui.preferences.ScrolledPageContent;
27+
import ts.eclipse.ide.ui.widgets.IStatusChangeListener;
2828

2929
/**
3030
* Formatter configuration block.

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/internal/ui/preferences/NodejsConfigurationBlock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -41,10 +41,10 @@
4141
import ts.eclipse.ide.internal.ui.TypeScriptUIMessages;
4242
import ts.eclipse.ide.internal.ui.dialogs.WorkspaceResourceSelectionDialog;
4343
import ts.eclipse.ide.internal.ui.dialogs.WorkspaceResourceSelectionDialog.Mode;
44-
import ts.eclipse.ide.ui.preferences.IStatusChangeListener;
4544
import ts.eclipse.ide.ui.preferences.OptionsConfigurationBlock;
4645
import ts.eclipse.ide.ui.preferences.ScrolledPageContent;
4746
import ts.eclipse.ide.ui.preferences.StatusInfo;
47+
import ts.eclipse.ide.ui.widgets.IStatusChangeListener;
4848
import ts.nodejs.NodejsProcessHelper;
4949
import ts.utils.FileUtils;
5050
import ts.utils.StringUtils;

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/internal/ui/preferences/SaveActionsConfigurationBlock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,10 @@
2020
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
2121

2222
import ts.eclipse.ide.internal.ui.TypeScriptUIMessages;
23-
import ts.eclipse.ide.ui.preferences.IStatusChangeListener;
2423
import ts.eclipse.ide.ui.preferences.OptionsConfigurationBlock;
2524
import ts.eclipse.ide.ui.preferences.ScrolledPageContent;
2625
import ts.eclipse.ide.ui.preferences.TypeScriptUIPreferenceConstants;
26+
import ts.eclipse.ide.ui.widgets.IStatusChangeListener;
2727

2828
/**
2929
* Editor save actions configuration block.

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/internal/ui/preferences/TextMateConfigurationBlock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@
2121
import org.eclipse.ui.preferences.IWorkbenchPreferenceContainer;
2222

2323
import ts.eclipse.ide.internal.ui.TypeScriptUIMessages;
24-
import ts.eclipse.ide.ui.preferences.IStatusChangeListener;
2524
import ts.eclipse.ide.ui.preferences.OptionsConfigurationBlock;
2625
import ts.eclipse.ide.ui.preferences.ScrolledPageContent;
2726
import ts.eclipse.ide.ui.preferences.TypeScriptUIPreferenceConstants;
27+
import ts.eclipse.ide.ui.widgets.IStatusChangeListener;
2828

2929
/**
3030
* TextMate configuration block.

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/internal/ui/preferences/TypeScriptRuntimeConfigurationBlock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,8 +27,8 @@
2727
import ts.eclipse.ide.core.preferences.TypeScriptCorePreferenceConstants;
2828
import ts.eclipse.ide.core.utils.WorkbenchResourceUtil;
2929
import ts.eclipse.ide.internal.ui.TypeScriptUIMessages;
30-
import ts.eclipse.ide.ui.preferences.IStatusChangeListener;
3130
import ts.eclipse.ide.ui.preferences.StatusInfo;
31+
import ts.eclipse.ide.ui.widgets.IStatusChangeListener;
3232
import ts.repository.ITypeScriptRepository;
3333
import ts.repository.TypeScriptRepositoryException;
3434
import ts.repository.TypeScriptRepositoryManager;

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/internal/ui/preferences/ValidationConfigurationBlock.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
import ts.eclipse.ide.core.preferences.TypeScriptCorePreferenceConstants;
2727
import ts.eclipse.ide.internal.ui.TypeScriptUIMessages;
2828
import ts.eclipse.ide.ui.preferences.BrowseButtonsComposite;
29-
import ts.eclipse.ide.ui.preferences.IStatusChangeListener;
29+
import ts.eclipse.ide.ui.widgets.IStatusChangeListener;
3030
import ts.repository.ITypeScriptRepository;
3131

3232
/**

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/internal/ui/wizards/TSConfigWizardPage.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import ts.cmd.tsc.CompilerOptions;
2828
import ts.eclipse.ide.internal.ui.TypeScriptUIMessages;
29+
import ts.eclipse.ide.ui.wizards.AbstractWizardPage;
2930
import ts.resources.jsonconfig.TsconfigJson;
3031
import ts.utils.StringUtils;
3132

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/internal/ui/wizards/TypeScriptRuntimeAndNodejsWizardPage.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,8 @@
2727
import ts.eclipse.ide.core.TypeScriptCorePlugin;
2828
import ts.eclipse.ide.core.nodejs.IEmbeddedNodejs;
2929
import ts.eclipse.ide.internal.ui.TypeScriptUIMessages;
30-
import ts.eclipse.ide.ui.utils.NPMInstallWidget;
30+
import ts.eclipse.ide.ui.widgets.NPMInstallWidget;
31+
import ts.eclipse.ide.ui.wizards.AbstractWizardPage;
3132
import ts.repository.ITypeScriptRepository;
3233

3334
public class TypeScriptRuntimeAndNodejsWizardPage extends AbstractWizardPage {
@@ -172,7 +173,7 @@ public void widgetSelected(SelectionEvent e) {
172173
}
173174
});
174175

175-
installTsRuntime = new NPMInstallWidget("typescript", parent, SWT.NONE);
176+
installTsRuntime = new NPMInstallWidget("typescript", this, parent, SWT.NONE);
176177
installTsRuntime.setLayoutData(new GridData(GridData.FILL_HORIZONTAL));
177178
}
178179

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/ui/preferences/OptionsConfigurationBlock.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454

5555
import ts.eclipse.ide.core.TypeScriptCorePlugin;
5656
import ts.eclipse.ide.ui.TypeScriptUIPlugin;
57+
import ts.eclipse.ide.ui.widgets.IStatusChangeListener;
5758

5859
/**
5960
* Abstract options configuration block providing a general implementation for

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/ui/preferences/PropertyAndPreferencePage.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
import ts.eclipse.ide.internal.ui.dialogs.fields.IDialogFieldListener;
4242
import ts.eclipse.ide.internal.ui.dialogs.fields.LayoutUtil;
4343
import ts.eclipse.ide.internal.ui.dialogs.fields.SelectionButtonDialogField;
44+
import ts.eclipse.ide.ui.widgets.IStatusChangeListener;
4445

4546
/**
4647
* Base for project property and preference pages

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/ui/utils/NPMInstallWidget.java

Lines changed: 0 additions & 107 deletions
This file was deleted.

eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/ui/preferences/IStatusChangeListener.java renamed to eclipse/ts.eclipse.ide.ui/src/ts/eclipse/ide/ui/widgets/IStatusChangeListener.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
* IBM Corporation - initial API and implementation
1010
* Angelo ZERR : copied from org.eclipse.wst.jsdt.internal.ui.wizards.IStatusChangeListener
1111
*******************************************************************************/
12-
package ts.eclipse.ide.ui.preferences;
12+
package ts.eclipse.ide.ui.widgets;
1313

1414
import org.eclipse.core.runtime.IStatus;
1515

0 commit comments

Comments
 (0)