summaryrefslogtreecommitdiffstats
path: root/gerrit-server/src/main/java/com/google/gerrit/server/contact/EncryptedContactStore.java
diff options
context:
space:
mode:
Diffstat (limited to 'gerrit-server/src/main/java/com/google/gerrit/server/contact/EncryptedContactStore.java')
-rw-r--r--gerrit-server/src/main/java/com/google/gerrit/server/contact/EncryptedContactStore.java47
1 files changed, 11 insertions, 36 deletions
diff --git a/gerrit-server/src/main/java/com/google/gerrit/server/contact/EncryptedContactStore.java b/gerrit-server/src/main/java/com/google/gerrit/server/contact/EncryptedContactStore.java
index 05d4e7a783..bc88cd274d 100644
--- a/gerrit-server/src/main/java/com/google/gerrit/server/contact/EncryptedContactStore.java
+++ b/gerrit-server/src/main/java/com/google/gerrit/server/contact/EncryptedContactStore.java
@@ -15,13 +15,13 @@
package com.google.gerrit.server.contact;
import com.google.gerrit.common.errors.ContactInformationStoreException;
-import com.google.gerrit.reviewdb.Account;
-import com.google.gerrit.reviewdb.AccountExternalId;
-import com.google.gerrit.reviewdb.ContactInformation;
-import com.google.gerrit.reviewdb.ReviewDb;
+import com.google.gerrit.reviewdb.client.Account;
+import com.google.gerrit.reviewdb.client.AccountExternalId;
+import com.google.gerrit.reviewdb.client.ContactInformation;
+import com.google.gerrit.reviewdb.server.ReviewDb;
import com.google.gerrit.server.UrlEncoded;
-import com.google.gwtorm.client.OrmException;
-import com.google.gwtorm.client.SchemaFactory;
+import com.google.gwtorm.server.OrmException;
+import com.google.gwtorm.server.SchemaFactory;
import com.google.inject.ProvisionException;
import com.google.inject.Singleton;
@@ -37,7 +37,6 @@ import org.bouncycastle.openpgp.PGPPublicKey;
import org.bouncycastle.openpgp.PGPPublicKeyRing;
import org.bouncycastle.openpgp.PGPPublicKeyRingCollection;
import org.bouncycastle.openpgp.PGPUtil;
-import org.eclipse.jgit.util.IO;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -47,7 +46,6 @@ import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
-import java.net.HttpURLConnection;
import java.net.URL;
import java.security.NoSuchAlgorithmException;
import java.security.NoSuchProviderException;
@@ -70,13 +68,16 @@ class EncryptedContactStore implements ContactStore {
private final SecureRandom prng;
private final URL storeUrl;
private final String storeAPPSEC;
+ private final ContactStoreConnection.Factory connFactory;
EncryptedContactStore(final URL storeUrl, final String storeAPPSEC,
- final File pubKey, final SchemaFactory<ReviewDb> schema) {
+ final File pubKey, final SchemaFactory<ReviewDb> schema,
+ final ContactStoreConnection.Factory connFactory) {
this.storeUrl = storeUrl;
this.storeAPPSEC = storeAPPSEC;
this.schema = schema;
this.dest = selectKey(readPubRing(pubKey));
+ this.connFactory = connFactory;
final String prngName = "SHA1PRNG";
try {
@@ -157,33 +158,7 @@ class EncryptedContactStore implements ContactStore {
}
u.put("account_id", String.valueOf(account.getId().get()));
u.put("data", encStr);
- final byte[] body = u.toString().getBytes("UTF-8");
-
- final HttpURLConnection c = (HttpURLConnection) storeUrl.openConnection();
- c.setRequestMethod("POST");
- c.setRequestProperty("Content-Type",
- "application/x-www-form-urlencoded; charset=UTF-8");
- c.setDoOutput(true);
- c.setFixedLengthStreamingMode(body.length);
- final OutputStream out = c.getOutputStream();
- out.write(body);
- out.close();
-
- if (c.getResponseCode() == 200) {
- final byte[] dst = new byte[2];
- final InputStream in = c.getInputStream();
- try {
- IO.readFully(in, dst, 0, 2);
- } finally {
- in.close();
- }
- if (dst[0] != 'O' || dst[1] != 'K') {
- throw new IOException("Store failed: " + c.getResponseCode());
- }
- } else {
- throw new IOException("Store failed: " + c.getResponseCode());
- }
-
+ connFactory.open(storeUrl).store(u.toString().getBytes("UTF-8"));
} catch (IOException e) {
log.error("Cannot store encrypted contact information", e);
throw new ContactInformationStoreException(e);