Remove unused AcmeConflictException

pull/55/head
Richard Körber 2017-05-01 12:02:05 +02:00
parent e748df364d
commit 94ee501811
7 changed files with 6 additions and 131 deletions

View File

@ -21,7 +21,6 @@ import java.util.List;
import org.shredzone.acme4j.connector.Connection; import org.shredzone.acme4j.connector.Connection;
import org.shredzone.acme4j.connector.Resource; import org.shredzone.acme4j.connector.Resource;
import org.shredzone.acme4j.exception.AcmeConflictException;
import org.shredzone.acme4j.exception.AcmeException; import org.shredzone.acme4j.exception.AcmeException;
import org.shredzone.acme4j.util.JSONBuilder; import org.shredzone.acme4j.util.JSONBuilder;
import org.slf4j.Logger; import org.slf4j.Logger;
@ -80,10 +79,6 @@ public class RegistrationBuilder {
* @param session * @param session
* {@link Session} to be used for registration * {@link Session} to be used for registration
* @return {@link Registration} referring to the new account * @return {@link Registration} referring to the new account
* @throws AcmeConflictException
* if there is already an account for the connection's key pair.
* {@link AcmeConflictException#getLocation()} contains the registration's
* location URI.
*/ */
public Registration create(Session session) throws AcmeException { public Registration create(Session session) throws AcmeException {
LOG.debug("create"); LOG.debug("create");

View File

@ -44,8 +44,6 @@ import org.jose4j.jwk.PublicJsonWebKey;
import org.jose4j.jws.JsonWebSignature; import org.jose4j.jws.JsonWebSignature;
import org.jose4j.lang.JoseException; import org.jose4j.lang.JoseException;
import org.shredzone.acme4j.Session; import org.shredzone.acme4j.Session;
import org.shredzone.acme4j.exception.AcmeUserActionRequiredException;
import org.shredzone.acme4j.exception.AcmeConflictException;
import org.shredzone.acme4j.exception.AcmeException; import org.shredzone.acme4j.exception.AcmeException;
import org.shredzone.acme4j.exception.AcmeNetworkException; import org.shredzone.acme4j.exception.AcmeNetworkException;
import org.shredzone.acme4j.exception.AcmeProtocolException; import org.shredzone.acme4j.exception.AcmeProtocolException;
@ -53,6 +51,7 @@ import org.shredzone.acme4j.exception.AcmeRateLimitExceededException;
import org.shredzone.acme4j.exception.AcmeRetryAfterException; import org.shredzone.acme4j.exception.AcmeRetryAfterException;
import org.shredzone.acme4j.exception.AcmeServerException; import org.shredzone.acme4j.exception.AcmeServerException;
import org.shredzone.acme4j.exception.AcmeUnauthorizedException; import org.shredzone.acme4j.exception.AcmeUnauthorizedException;
import org.shredzone.acme4j.exception.AcmeUserActionRequiredException;
import org.shredzone.acme4j.provider.pebble.Pebble; import org.shredzone.acme4j.provider.pebble.Pebble;
import org.shredzone.acme4j.util.AcmeUtils; import org.shredzone.acme4j.util.AcmeUtils;
import org.shredzone.acme4j.util.JSON; import org.shredzone.acme4j.util.JSON;
@ -238,13 +237,7 @@ public class DefaultConnection implements Connection {
throw new AcmeException("HTTP " + rc + ": " + conn.getResponseMessage()); throw new AcmeException("HTTP " + rc + ": " + conn.getResponseMessage());
} }
JSON json = readJsonResponse(); throw createAcmeException(readJsonResponse());
if (rc == HttpURLConnection.HTTP_CONFLICT) {
throw new AcmeConflictException(json.get("detail").asString(), getLocation());
}
throw createAcmeException(json);
} catch (IOException ex) { } catch (IOException ex) {
throw new AcmeNetworkException(ex); throw new AcmeNetworkException(ex);
} }

View File

@ -1,48 +0,0 @@
/*
* acme4j - Java ACME client
*
* Copyright (C) 2015 Richard "Shred" Körber
* http://acme4j.shredzone.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
package org.shredzone.acme4j.exception;
import java.net.URL;
import java.util.Objects;
/**
* An exception that is thrown when there is a conflict with the request. For example,
* this exception is thrown when a registration already exists.
*/
public class AcmeConflictException extends AcmeException {
private static final long serialVersionUID = 7454201988845449591L;
private final URL location;
/**
* Creates a new {@link AcmeConflictException}.
*
* @param msg
* Details about the conflicting resource
* @param location
* {@link URL} of the conflicting resource
*/
public AcmeConflictException(String msg, URL location) {
super(msg);
this.location = Objects.requireNonNull(location, "location");
}
/**
* Location of the conflicting resource.
*/
public URL getLocation() {
return location;
}
}

View File

@ -221,7 +221,8 @@ public final class AcmeUtils {
/** /**
* Strips the acme error prefix from the error string. * Strips the acme error prefix from the error string.
* <p> * <p>
* For example, for "urn:ietf:params:acme:error:conflict", "conflict" is returned. * For example, for "urn:ietf:params:acme:error:unauthorized", "unauthorized" is
* returned.
* *
* @param type * @param type
* Error type to strip the prefix from. {@code null} is safe. * Error type to strip the prefix from. {@code null} is safe.

View File

@ -1,41 +0,0 @@
/*
* acme4j - Java ACME client
*
* Copyright (C) 2016 Richard "Shred" Körber
* http://acme4j.shredzone.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
*/
package org.shredzone.acme4j.exception;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import java.net.MalformedURLException;
import java.net.URL;
import org.junit.Test;
/**
* Unit tests for {@link AcmeConflictException}.
*/
public class AcmeConflictExceptionTest {
@Test
public void testAcmeConflictException() throws MalformedURLException {
String msg = "Account already exists";
URL locationUrl = new URL("http://example.com/location/123");
AcmeConflictException ex
= new AcmeConflictException(msg, locationUrl);
assertThat(ex.getMessage(), is(msg));
assertThat(ex.getLocation(), is(locationUrl));
}
}

View File

@ -33,7 +33,6 @@ import org.shredzone.acme4j.challenge.Challenge;
import org.shredzone.acme4j.challenge.Dns01Challenge; import org.shredzone.acme4j.challenge.Dns01Challenge;
import org.shredzone.acme4j.challenge.Http01Challenge; import org.shredzone.acme4j.challenge.Http01Challenge;
import org.shredzone.acme4j.challenge.TlsSni02Challenge; import org.shredzone.acme4j.challenge.TlsSni02Challenge;
import org.shredzone.acme4j.exception.AcmeConflictException;
import org.shredzone.acme4j.exception.AcmeException; import org.shredzone.acme4j.exception.AcmeException;
import org.shredzone.acme4j.util.AcmeUtils; import org.shredzone.acme4j.util.AcmeUtils;
import org.shredzone.acme4j.util.CSRBuilder; import org.shredzone.acme4j.util.CSRBuilder;
@ -190,19 +189,8 @@ public class ClientTest {
acceptAgreement(tos); acceptAgreement(tos);
} }
Registration reg; Registration reg = new RegistrationBuilder().agreeToTermsOfService().create(session);
LOG.info("Registered a new user, URI: " + reg.getLocation());
try {
// Try to create a new Registration.
reg = new RegistrationBuilder().agreeToTermsOfService().create(session);
LOG.info("Registered a new user, URI: " + reg.getLocation());
} catch (AcmeConflictException ex) {
// The Key Pair is already registered. getLocation() contains the
// URL of the existing registration's location. Bind it to the session.
reg = Registration.bind(session, ex.getLocation());
LOG.info("Account does already exist, URI: " + reg.getLocation(), ex);
}
return reg; return reg;
} }

View File

@ -14,19 +14,6 @@ Registration registration = builder.create(session);
URL accountLocationUrl = registration.getLocation(); URL accountLocationUrl = registration.getLocation();
``` ```
`create()` will fail and throw an `AcmeConflictException` if your key was already registered with the CA. The `AcmeConflictException` contains the location of the registration. This may be helpful if you forgot your account URL and need to recover it.
The following example will create a new `Registration` and restore an existing `Registration`.
```java
Registration registration;
try {
registration = new RegistrationBuilder().agreeToTermsOfService().create(session);
} catch (AcmeConflictException ex) {
registration = Registration.bind(session, ex.getLocation());
}
```
## Update your Registration ## Update your Registration
At some point, you may want to update your registration. For example your contact address might have changed. To do so, invoke `Registration.modify()`, perform the changes, and invoke `commit()` to make them permanent. At some point, you may want to update your registration. For example your contact address might have changed. To do so, invoke `Registration.modify()`, perform the changes, and invoke `commit()` to make them permanent.