Skip to content

Commit 068817c

Browse files
authored
Merge pull request #104 from eharris369/95-importOnProjectCreate
Issue #95: Import project into Eclipse on project create
2 parents 8ca4008 + b50b8ac commit 068817c

File tree

7 files changed

+74
-2
lines changed

7 files changed

+74
-2
lines changed
Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
/*******************************************************************************
2+
* Copyright (c) 2019 IBM Corporation and others.
3+
* All rights reserved. This program and the accompanying materials
4+
* are made available under the terms of the Eclipse Public License v2.0
5+
* which accompanies this distribution, and is available at
6+
* http://www.eclipse.org/legal/epl-v20.html
7+
*
8+
* Contributors:
9+
* IBM Corporation - initial API and implementation
10+
*******************************************************************************/
11+
12+
package com.ibm.microclimate.core.internal.connection;
13+
14+
public interface IOperationHandler {
15+
16+
public void operationComplete(boolean passed, String msg);
17+
18+
}

dev/com.ibm.microclimate.core/src/com/ibm/microclimate/core/internal/connection/MicroclimateConnection.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -779,13 +779,14 @@ public void requestNodeProjectCreate(String name)
779779

780780
String createEndpoint = MCConstants.APIPATH_PROJECT_LIST;
781781

782-
URI url = baseUrl.resolve(createEndpoint);
782+
URI uri = baseUrl.resolve(createEndpoint);
783783

784784
JSONObject createProjectPayload = new JSONObject();
785785
createProjectPayload.put(MCConstants.KEY_NAME, name);
786786
createProjectPayload.put(MCConstants.KEY_LANGUAGE, "nodejs");
787787

788-
HttpUtil.post(url, createProjectPayload);
788+
HttpResult result = HttpUtil.post(uri, createProjectPayload);
789+
checkResult(result, uri, false);
789790
}
790791

791792
public void requestProjectDelete(String projectId)

dev/com.ibm.microclimate.core/src/com/ibm/microclimate/core/internal/connection/MicroclimateSocket.java

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,9 @@
1414
import java.io.IOException;
1515
import java.net.URI;
1616
import java.net.URISyntaxException;
17+
import java.util.HashMap;
1718
import java.util.HashSet;
19+
import java.util.Map;
1820
import java.util.Set;
1921

2022
import org.eclipse.osgi.util.NLS;
@@ -57,6 +59,8 @@ public class MicroclimateSocket {
5759
private Set<OldSocketConsole> oldSocketConsoles = new HashSet<>();
5860

5961
private Set<SocketConsole> socketConsoles = new HashSet<>();
62+
63+
private Map<String, IOperationHandler> projectCreateHandlers = new HashMap<String, IOperationHandler>();
6064

6165
// Track the previous Exception so we don't spam the logs with the same connection failure message
6266
private Exception previousException;
@@ -286,6 +290,13 @@ private void onProjectCreation(JSONObject event) throws JSONException {
286290
MCLogger.logError("No application found matching the project id for the project creation event: " + projectID); //$NON-NLS-1$
287291
}
288292
MCUtil.updateConnection(mcConnection);
293+
String projectName = event.has(MCConstants.KEY_NAME) ? event.getString(MCConstants.KEY_NAME) : null;
294+
if (projectName != null) {
295+
IOperationHandler handler = projectCreateHandlers.get(projectName);
296+
if (handler != null) {
297+
handler.operationComplete(true, null);
298+
}
299+
}
289300
}
290301

291302
private void onProjectChanged(JSONObject event) throws JSONException {
@@ -470,6 +481,14 @@ public void registerSocketConsole(SocketConsole console) {
470481
public void deregisterSocketConsole(SocketConsole console) {
471482
this.socketConsoles.remove(console);
472483
}
484+
485+
public void registerProjectCreateHandler(String projectName, IOperationHandler handler) {
486+
this.projectCreateHandlers.put(projectName, handler);
487+
}
488+
489+
public void deregisterProjectCreateHandler(String projectName) {
490+
this.projectCreateHandlers.remove(projectName);
491+
}
473492

474493
private void onContainerLogs(JSONObject event) throws JSONException {
475494
String projectID = event.getString(MCConstants.KEY_PROJECT_ID);

dev/com.ibm.microclimate.ui/src/com/ibm/microclimate/ui/internal/messages/Messages.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -141,6 +141,7 @@ public class Messages extends NLS {
141141
public static String NewProjectPage_LanguageColumn;
142142
public static String NewProjectPage_DescriptionLabel;
143143
public static String NewProjectPage_DescriptionNone;
144+
public static String NewProjectPage_ImportLabel;
144145
public static String NewProjectPage_ProjectNameLabel;
145146
public static String NewProjectPage_ProjectExistsError;
146147
public static String NewProjectPage_InvalidProjectName;

dev/com.ibm.microclimate.ui/src/com/ibm/microclimate/ui/internal/messages/messages.properties

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -134,6 +134,7 @@ NewProjectPage_TypeColumn=Template
134134
NewProjectPage_LanguageColumn=Language
135135
NewProjectPage_DescriptionLabel=Description: {0}
136136
NewProjectPage_DescriptionNone=<none>
137+
NewProjectPage_ImportLabel=Import project after it is created
137138
NewProjectPage_ProjectNameLabel=Project name:
138139
NewProjectPage_ProjectExistsError=A Microclimate project named {0} already exists. Choose a unique name.
139140
NewProjectPage_InvalidProjectName=Use only lower case letters and numbers in the project name.

dev/com.ibm.microclimate.ui/src/com/ibm/microclimate/ui/internal/wizards/NewMicroclimateProjectPage.java

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@
2727
import org.eclipse.swt.events.SelectionEvent;
2828
import org.eclipse.swt.layout.GridData;
2929
import org.eclipse.swt.layout.GridLayout;
30+
import org.eclipse.swt.widgets.Button;
3031
import org.eclipse.swt.widgets.Composite;
3132
import org.eclipse.swt.widgets.Event;
3233
import org.eclipse.swt.widgets.Group;
@@ -53,6 +54,7 @@ public class NewMicroclimateProjectPage extends WizardPage {
5354
private Table selectionTable;
5455
private Text descriptionLabel;
5556
private Text projectNameText;
57+
private Button importButton;
5658

5759
protected NewMicroclimateProjectPage(MicroclimateConnection connection, List<ProjectTemplateInfo> templateList) {
5860
super(Messages.NewProjectPage_ShellTitle);
@@ -159,6 +161,13 @@ public void widgetSelected(SelectionEvent event) {
159161
descriptionScroll.getVerticalBar().setPageIncrement(lineHeight);
160162
descriptionScroll.getVerticalBar().setIncrement(lineHeight);
161163

164+
spacer = new Label(composite, SWT.NONE);
165+
spacer.setLayoutData(new GridData(GridData.FILL, GridData.FILL, true, false, 2, 1));
166+
167+
importButton = new Button(composite, SWT.CHECK);
168+
importButton.setText(Messages.NewProjectPage_ImportLabel);
169+
importButton.setLayoutData(new GridData(SWT.FILL, SWT.FILL, false, false, 2, 1));
170+
162171
// Listeners
163172
filterText.addModifyListener(new ModifyListener() {
164173
@Override
@@ -209,6 +218,7 @@ public void modifyText(ModifyEvent arg0) {
209218
selectionTable.setSelection(0);
210219
}
211220
updateDescription();
221+
importButton.setSelection(true);
212222
// resize description since the UI isn't visible yet
213223
descriptionLabel.setSize(descriptionLabel.computeSize(SWT.DEFAULT, SWT.DEFAULT));
214224
projectNameText.setFocus();
@@ -245,6 +255,10 @@ public String getProjectName() {
245255
}
246256
return null;
247257
}
258+
259+
public boolean importProject() {
260+
return importButton.getSelection();
261+
}
248262

249263
private void createItems(Table table, String filter) {
250264
// Create the items for the table.

dev/com.ibm.microclimate.ui/src/com/ibm/microclimate/ui/internal/wizards/NewMicroclimateProjectWizard.java

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,11 @@
1818

1919
import com.ibm.microclimate.core.internal.MCLogger;
2020
import com.ibm.microclimate.core.internal.MCUtil;
21+
import com.ibm.microclimate.core.internal.MicroclimateApplication;
22+
import com.ibm.microclimate.core.internal.connection.IOperationHandler;
2123
import com.ibm.microclimate.core.internal.connection.MicroclimateConnection;
2224
import com.ibm.microclimate.core.internal.console.ProjectTemplateInfo;
25+
import com.ibm.microclimate.ui.internal.actions.ImportProjectAction;
2326
import com.ibm.microclimate.ui.internal.messages.Messages;
2427

2528
public class NewMicroclimateProjectWizard extends Wizard {
@@ -54,6 +57,21 @@ public boolean performFinish() {
5457
}
5558

5659
try {
60+
if (newProjectPage.importProject()) {
61+
connection.getMCSocket().registerProjectCreateHandler(name, new IOperationHandler() {
62+
@Override
63+
public void operationComplete(boolean passed, String msg) {
64+
connection.getMCSocket().deregisterProjectCreateHandler(name);
65+
if (passed) {
66+
MicroclimateApplication app = connection.getAppByName(name);
67+
if (app != null) {
68+
ImportProjectAction.importProject(app);
69+
return;
70+
}
71+
}
72+
}
73+
});
74+
}
5775
connection.requestProjectCreate(info, name);
5876
return true;
5977
} catch (Exception e) {

0 commit comments

Comments
 (0)