Merge "Issue #2180 - handle delete of credentials" into dd_pre_release_2.1

Former-commit-id: 790542df2a [formerly b40157ac97] [formerly 92233a3f3a] [formerly b371d6ed2a [formerly 92233a3f3a [formerly 07a5e7a9826935e7e3e724e648ce931faf0da62e]]]
Former-commit-id: b371d6ed2a
Former-commit-id: 23db3332f4764b1371a3d53109a30147412fc922 [formerly 94c5782fbd]
Former-commit-id: b2f2a54c29
This commit is contained in:
Nate Jensen 2013-09-11 13:00:03 -05:00 committed by Gerrit Code Review
commit b22ca1ebe6
4 changed files with 111 additions and 13 deletions

View file

@ -99,6 +99,9 @@ public class DataProviderPasswordComposite extends Composite implements
/** Provider object */
private Provider provider;
/** Remove credentials check box */
private Button removeChk;
/**
* Constructor
*
@ -228,6 +231,22 @@ public class DataProviderPasswordComposite extends Composite implements
}
});
gd = new GridData(SWT.FILL, SWT.FILL, true, true);
gd.horizontalSpan = 3;
Label sep = new Label(comp, SWT.SEPARATOR | SWT.SHADOW_IN
| SWT.HORIZONTAL);
sep.setLayoutData(gd);
removeChk = new Button(comp, SWT.CHECK);
removeChk.setText("Remove Credentials");
removeChk.setSelection(false);
removeChk.addSelectionListener(new SelectionAdapter() {
@Override
public void widgetSelected(SelectionEvent e) {
enableWidgets(!removeChk.getSelection());
}
});
// Buttons
buttonComp = new ApplyCancelComposite(this, SWT.NONE, this);
@ -248,6 +267,12 @@ public class DataProviderPasswordComposite extends Composite implements
for (Provider p : providerList) {
providerCombo.add(p.getName());
}
if (providerCombo.getItemCount() > 0) {
providerCombo.select(0);
handleProviderSelection();
checkUserInput();
}
}
/**
@ -286,17 +311,19 @@ public class DataProviderPasswordComposite extends Composite implements
resp = (ProviderKeyRequest) RequestRouter.route(req,
RegistryConstants.EBXML_REGISTRY_SERVICE);
Connection conn = resp.getProvider().getConnection();
String userName = conn.getUnencryptedUsername();
String passwd = conn.getUnencryptedPassword();
String key = conn.getProviderKey();
if (userName != null) {
userTxt.setText(userName);
}
if (passwd != null) {
passTxt.setText(passwd);
}
if (key != null) {
keyTxt.setText(key);
if (conn != null) {
String userName = conn.getUnencryptedUsername();
String passwd = conn.getUnencryptedPassword();
String key = conn.getProviderKey();
if (userName != null) {
userTxt.setText(userName);
}
if (passwd != null) {
passTxt.setText(passwd);
}
if (key != null) {
keyTxt.setText(key);
}
}
} catch (Exception e) {
statusHandler.handle(Priority.PROBLEM,
@ -312,6 +339,7 @@ public class DataProviderPasswordComposite extends Composite implements
@Override
public boolean apply() {
if (validation()) {
ProviderKeyRequest req = new ProviderKeyRequest();
Connection conn = provider.getConnection();
conn.setPassword(passTxt.getText());
@ -320,7 +348,11 @@ public class DataProviderPasswordComposite extends Composite implements
conn.setEncryption(getEncryption());
provider.setConnection(conn);
req.setProvider(provider);
req.setRequestType(RequestType.SAVE);
if (removeChk.getSelection()) {
req.setRequestType(RequestType.DELETE);
} else {
req.setRequestType(RequestType.SAVE);
}
req.setProviderKey(keyTxt.getText());
ProviderKeyRequest resp;
@ -342,6 +374,11 @@ public class DataProviderPasswordComposite extends Composite implements
DataDeliveryUtils.showMessage(getShell(), SWT.OK,
"Change Successful",
"The username/password has been updated.");
if (removeChk.getSelection()) {
userTxt.setText("");
passTxt.setText("");
keyTxt.setText("");
}
}
return status == Status.SUCCESS;
@ -351,6 +388,18 @@ public class DataProviderPasswordComposite extends Composite implements
}
private void enableWidgets(boolean enable) {
userTxt.setEnabled(enable);
passTxt.setEnabled(enable);
keyTxt.setEnabled(enable);
if (!enable) {
buttonComp.enableButtons(true);
} else {
checkUserInput();
}
}
/**
* Get the encryption object
*

View file

@ -116,12 +116,15 @@ public class ProviderKeyRequest implements IServerRequest {
public enum RequestType {
@XmlEnumValue(RequestType.save)
SAVE("SAVE"), @XmlEnumValue(RequestType.retrieve)
RETRIEVE("RETRIEVE");
RETRIEVE("RETRIEVE"), @XmlEnumValue(RequestType.delete)
DELETE("DELETE");
private static final String save = "SAVE";
private static final String retrieve = "RETRIEVE";
private static final String delete = "DELETE";
private final String requestType;
private RequestType(String name) {

View file

@ -129,6 +129,43 @@ public class ProviderCredentialsUtil {
return creds;
}
/**
* Deletes the connection for the provider.
*
* @param creds
* ProviderCredentials object
*
* @return ProviderCredentials object with status and message set
*/
public static ProviderCredentials deleteCredentials(
ProviderCredentials creds) {
String providerName = creds.getProvider().getName();
IPathManager pm = PathManagerFactory.getPathManager();
LocalizationContext lc = pm.getContext(LocalizationType.COMMON_STATIC,
LocalizationLevel.SITE);
String connectionFileName = CONNECTION_FILE_PREFIX + providerName
+ CONNECTION_FILE_SUFFIX;
try {
LocalizationFile lf = pm
.getLocalizationFile(lc, connectionFileName);
lf.delete();
ProviderKeyDao pkd = new ProviderKeyDao();
ProviderKeyRecord pkr = pkd.queryByProvider(providerName);
if (pkr != null) {
pkd.delete(pkr);
}
creds.setStatus(Status.SUCCESS);
} catch (Exception e) {
statusHandler.handle(Priority.ERROR,
"Couldn't delete encrypted Connection!", e);
creds.setStatus(Status.FAILURE);
creds.setMessage("Error deleting encrypted connection. See server log for error details.");
}
return creds;
}
/**
* Gets the ProviderCredentials object containing the encrytped credentials.
*

View file

@ -88,6 +88,15 @@ public class ProviderKeyRequestHandler implements
request.setProvider(provider);
request.setStatus(Status.SUCCESS);
}
} else if (request.getRequestType() == RequestType.DELETE) {
ProviderCredentials creds = new ProviderCredentials(
request.getProvider(), request.getProviderKey());
creds = ProviderCredentialsUtil.deleteCredentials(creds);
request.setStatus(creds.getStatus());
if (creds.getStatus() == Status.FAILURE) {
request.setMessage(creds.getMessage());
}
}
return request;