startCache throws an IllegalParameterExcpetion if the method gets called with illegal parameters

This commit is contained in:
Michael 2019-03-24 06:31:35 +01:00
parent 920a34920e
commit 8803f4419a
2 changed files with 73 additions and 7 deletions

View File

@ -2,6 +2,7 @@ package hhn.labsw.bugageocaching.controller;
import com.google.gson.Gson;
import hhn.labsw.bugageocaching.entities.*;
import hhn.labsw.bugageocaching.exceptions.IllegalParameterException;
import hhn.labsw.bugageocaching.repositories.*;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@ -41,9 +42,9 @@ public class Controller {
@RequestMapping("/startCache")
public @ResponseBody
String startCache(@RequestParam(value = "userID", defaultValue = "-1") String userID,
@RequestParam String cacheID) {
@RequestParam String cacheID) throws IllegalParameterException {
if (!userID.equals("-1")) { // ein angemeldeter User startet den Cache
if (!userID.equals("-1")) { // ein angemeldeter user startet den cache(es werden zwei parameter übergeben)
Bearbeitet bearbeitet = new Bearbeitet();
@ -52,7 +53,7 @@ public class Controller {
User user = userOptional.get();
bearbeitet.setUser(user);
} else {
return "There is no user with the ID " + userID;
throw new IllegalParameterException("There is no user with the ID " + userID);
}
Optional<Cache> cacheOptional = cacheRepository.findById(Integer.valueOf(cacheID));
@ -60,7 +61,7 @@ public class Controller {
Cache cache = cacheOptional.get();
bearbeitet.setCache(cache);
} else {
return "There is no cache with the ID " + cacheID;
throw new IllegalParameterException( "There is no cache with the ID " + cacheID);
}
Optional<CacheAccesDefinition> cacheAccesDefinitionOptional =
@ -69,20 +70,20 @@ public class Controller {
CacheAccesDefinition cacheAccesDefinition = cacheAccesDefinitionOptional.get();
bearbeitet.setCacheAccesDefinition(cacheAccesDefinition);
} else {
return "There is no cacheAccesDefinition with the ID " + 1;
throw new IllegalParameterException("There is no cacheAccesDefinition with the ID " + 1);
}
bearbeitetRepository.save(bearbeitet);
return new Gson().toJson(bearbeitet);
} else { // kein angemeldeter User startet den Cache
} else { // kein angemeldeter User startet den cache(es wird nur der cache als parameter übergeben)
Optional<Cache> cacheOptional = cacheRepository.findById(Integer.valueOf(cacheID));
if (cacheOptional.isPresent()) {
Cache cache = cacheOptional.get();
return new Gson().toJson(cache);
} else {
return "There is no cache with the ID " + cacheID;
throw new IllegalParameterException( "There is no cache with the ID " + cacheID);
}
}
}

View File

@ -0,0 +1,65 @@
package hhn.labsw.bugageocaching.exceptions;
/**
* Thrown to indicate that a method has been passed an illegal or inappropriate argument.
* This matches the IllegalArgumentException, but is no RuntimeException. This forces the
* developer to catch it.
* <p>
*/
public class IllegalParameterException extends Exception {
/**
* Constructs a new exception with {@code null} as its detail message.
* The cause is not initialized, and may subsequently be initialized by a
* call to {@link #initCause}.
*/
public IllegalParameterException() {
}
/**
* Constructs a new exception with the specified detail message. The
* cause is not initialized, and may subsequently be initialized by
* a call to {@link #initCause}.
*
* @param message the detail message. The detail message is saved for
* later retrieval by the {@link #getMessage()} method.
*/
public IllegalParameterException(final String message) {
super(message);
}
/**
* Constructs a new exception with the specified detail message and
* cause. <p>Note that the detail message associated with
* {@code cause} is <i>not</i> automatically incorporated in
* this exception's detail message.
*
* @param message the detail message (which is saved for later retrieval
* by the {@link #getMessage()} method).
* @param cause the cause (which is saved for later retrieval by the
* {@link #getCause()} method). (A <tt>null</tt> value is
* permitted, and indicates that the cause is nonexistent or
* unknown.)
* @since 1.4
*/
public IllegalParameterException(final String message, final Throwable cause) {
super(message, cause);
}
/**
* Constructs a new exception with the specified cause and a detail
* message of <tt>(cause==null ? null : cause.toString())</tt> (which
* typically contains the class and detail message of <tt>cause</tt>).
* This constructor is useful for exceptions that are little more than
* wrappers for other throwables.
*
* @param cause the cause (which is saved for later retrieval by the
* {@link #getCause()} method). (A <tt>null</tt> value is
* permitted, and indicates that the cause is nonexistent or
* unknown.)
* @since 1.4
*/
public IllegalParameterException(final Throwable cause) {
super(cause);
}
}