[Minor] Code cleanup

This commit is contained in:
Robert von Burg 2014-09-13 15:05:25 +02:00
parent 56ccdf6593
commit 21921fbe65
19 changed files with 127 additions and 58 deletions

View File

@ -32,8 +32,8 @@ import ch.eitchnet.utils.dbc.DBC;
*/
public class DefaultStrolchSessionHandler extends StrolchComponent implements StrolchSessionHandler {
private static final String SESSION_ORIGIN = "session.origin";
private static final String PROP_VALIDATE_ORIGIN = "validateOrigin";
private static final String PARAM_SESSION_ORIGIN = "session.origin"; //$NON-NLS-1$
private static final String PARAM_VALIDATE_ORIGIN = "validateOrigin"; //$NON-NLS-1$
private PrivilegeHandler privilegeHandler;
private Map<String, Certificate> certificateMap;
private boolean validateOrigin;
@ -48,7 +48,7 @@ public class DefaultStrolchSessionHandler extends StrolchComponent implements St
@Override
public void initialize(ComponentConfiguration configuration) {
this.validateOrigin = configuration.getBoolean(PROP_VALIDATE_ORIGIN, false);
this.validateOrigin = configuration.getBoolean(PARAM_VALIDATE_ORIGIN, false);
super.initialize(configuration);
}
@ -79,12 +79,12 @@ public class DefaultStrolchSessionHandler extends StrolchComponent implements St
@Override
public Certificate authenticate(String origin, String username, byte[] password) {
DBC.PRE.assertNotEmpty("Origin must be set!", username);
DBC.PRE.assertNotEmpty("Username must be set!", username);
DBC.PRE.assertNotNull("Passwort must be set", password);
DBC.PRE.assertNotEmpty("Origin must be set!", username); //$NON-NLS-1$
DBC.PRE.assertNotEmpty("Username must be set!", username); //$NON-NLS-1$
DBC.PRE.assertNotNull("Passwort must be set", password); //$NON-NLS-1$
Certificate certificate = this.privilegeHandler.authenticate(username, password);
certificate.getSessionDataMap().put(SESSION_ORIGIN, origin);
certificate.getSessionDataMap().put(PARAM_SESSION_ORIGIN, origin);
this.certificateMap.put(certificate.getAuthToken(), certificate);
return certificate;
@ -92,17 +92,17 @@ public class DefaultStrolchSessionHandler extends StrolchComponent implements St
@Override
public Certificate validate(String origin, String authToken) {
DBC.PRE.assertNotEmpty("Origin must be set!", origin);
DBC.PRE.assertNotEmpty("SessionId must be set!", authToken);
DBC.PRE.assertNotEmpty("Origin must be set!", origin); //$NON-NLS-1$
DBC.PRE.assertNotEmpty("SessionId must be set!", authToken); //$NON-NLS-1$
Certificate certificate = this.certificateMap.get(authToken);
if (certificate == null)
throw new StrolchException(MessageFormat.format("No certificate exists for sessionId {0}", authToken));
throw new StrolchException(MessageFormat.format("No certificate exists for sessionId {0}", authToken)); //$NON-NLS-1$
this.privilegeHandler.isCertificateValid(certificate);
if (this.validateOrigin && !origin.equals(certificate.getSessionDataMap().get(SESSION_ORIGIN))) {
String msg = MessageFormat.format("Illegal request for origin {0} and sessionId {1}", origin, authToken);
if (this.validateOrigin && !origin.equals(certificate.getSessionDataMap().get(PARAM_SESSION_ORIGIN))) {
String msg = MessageFormat.format("Illegal request for origin {0} and sessionId {1}", origin, authToken); //$NON-NLS-1$
throw new StrolchException(msg);
}
@ -111,18 +111,18 @@ public class DefaultStrolchSessionHandler extends StrolchComponent implements St
@Override
public void invalidateSession(String origin, Certificate certificate) {
DBC.PRE.assertNotEmpty("Origin must be set!", origin);
DBC.PRE.assertNotNull("Certificate must bet given!", certificate);
DBC.PRE.assertNotEmpty("Origin must be set!", origin); //$NON-NLS-1$
DBC.PRE.assertNotNull("Certificate must bet given!", certificate); //$NON-NLS-1$
if (this.validateOrigin && !origin.equals(certificate.getSessionDataMap().get(SESSION_ORIGIN))) {
String msg = MessageFormat.format("Illegal request for origin {0} and sessionId {1}", origin,
if (this.validateOrigin && !origin.equals(certificate.getSessionDataMap().get(PARAM_SESSION_ORIGIN))) {
String msg = MessageFormat.format("Illegal request for origin {0} and sessionId {1}", origin, //$NON-NLS-1$
certificate.getAuthToken());
throw new StrolchException(msg);
}
Certificate removedCert = this.certificateMap.remove(certificate.getAuthToken());
if (removedCert == null)
logger.error("No session was registered with token " + certificate.getAuthToken());
logger.error(MessageFormat.format("No session was registered with token {0}", certificate.getAuthToken())); //$NON-NLS-1$
this.privilegeHandler.invalidateSession(certificate);
}

View File

@ -19,6 +19,7 @@ import li.strolch.agent.api.ComponentContainer;
import li.strolch.agent.api.StrolchComponent;
import li.strolch.rest.filters.AccessControlResponseFilter;
import li.strolch.runtime.configuration.ComponentConfiguration;
import li.strolch.runtime.privilege.PrivilegeHandler;
import ch.eitchnet.utils.dbc.DBC;
/**
@ -26,6 +27,7 @@ import ch.eitchnet.utils.dbc.DBC;
*/
public class RestfulStrolchComponent extends StrolchComponent {
private static final String PARAM_CORS_ENABLED = "corsEnabled"; //$NON-NLS-1$
private static RestfulStrolchComponent instance;
/**
@ -39,9 +41,9 @@ public class RestfulStrolchComponent extends StrolchComponent {
@Override
public void initialize(ComponentConfiguration configuration) {
if (configuration.getBoolean("corsEnabled", Boolean.FALSE)) {
String origin = configuration.getString("corsOrigin", null);
logger.info("Enabling CORS for origin: " + origin);
if (configuration.getBoolean(PARAM_CORS_ENABLED, Boolean.FALSE)) {
String origin = configuration.getString(PARAM_CORS_ENABLED, null);
logger.info("Enabling CORS for origin: " + origin); //$NON-NLS-1$
AccessControlResponseFilter.setCorsEnabled(true);
AccessControlResponseFilter.setOrigin(origin);
}
@ -51,7 +53,7 @@ public class RestfulStrolchComponent extends StrolchComponent {
@Override
public void start() {
DBC.PRE.assertNull("Instance is already set! This component is a singleton resource!", instance);
DBC.PRE.assertNull("Instance is already set! This component is a singleton resource!", instance); //$NON-NLS-1$
instance = this;
super.start();
}
@ -66,7 +68,7 @@ public class RestfulStrolchComponent extends StrolchComponent {
* @return the RestfulStrolchComponent
*/
public static RestfulStrolchComponent getInstance() {
DBC.PRE.assertNotNull("Not yet initialized!", instance);
DBC.PRE.assertNotNull("Not yet initialized!", instance); //$NON-NLS-1$
return instance;
}
@ -78,4 +80,8 @@ public class RestfulStrolchComponent extends StrolchComponent {
public <T> T getComponent(Class<T> clazz) {
return getContainer().getComponent(clazz);
}
public PrivilegeHandler getPrivilegeHandler() {
return getContainer().getPrivilegeHandler();
}
}

View File

@ -1,5 +1,8 @@
package li.strolch.rest;
import java.text.MessageFormat;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;
import javax.ws.rs.ext.ExceptionMapper;
import javax.ws.rs.ext.Provider;
@ -16,7 +19,7 @@ public class StrolchRestfulExceptionMapper implements ExceptionMapper<Exception>
@Override
public Response toResponse(Exception ex) {
logger.error("Handling exception " + ex.getClass(), ex);
return Response.status(500).entity(StringHelper.formatException(ex)).type("text/plain").build();
logger.error(MessageFormat.format("Handling exception {0}", ex.getClass()), ex); //$NON-NLS-1$
return Response.status(500).entity(StringHelper.formatException(ex)).type(MediaType.TEXT_PLAIN).build();
}
}

View File

@ -15,6 +15,9 @@
*/
package li.strolch.rest.endpoint;
import java.text.MessageFormat;
import java.util.Arrays;
import java.util.List;
import java.util.Locale;
import javax.servlet.http.HttpServletRequest;
@ -38,12 +41,14 @@ import li.strolch.rest.helper.RestfulHelper;
import li.strolch.rest.model.Login;
import li.strolch.rest.model.LoginResult;
import li.strolch.rest.model.LogoutResult;
import li.strolch.runtime.privilege.PrivilegeHandler;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import ch.eitchnet.privilege.base.PrivilegeException;
import ch.eitchnet.privilege.model.Certificate;
import ch.eitchnet.privilege.model.PrivilegeContext;
import ch.eitchnet.utils.helper.StringHelper;
/**
@ -61,47 +66,56 @@ public class AuthenticationService {
LoginResult loginResult = new LoginResult();
GenericEntity<LoginResult> entity = new GenericEntity<LoginResult>(loginResult, LoginResult.class) {
//
};
try {
StringBuilder sb = new StringBuilder();
if (StringHelper.isEmpty(login.getUsername())) {
sb.append("Username was not given. ");
sb.append("Username was not given. "); //$NON-NLS-1$
}
if (StringHelper.isEmpty(login.getPassword())) {
sb.append("Password was not given.");
sb.append("Password was not given."); //$NON-NLS-1$
}
if (sb.length() != 0) {
loginResult.setMsg("Could not log in due to: " + sb.toString());
loginResult.setMsg(MessageFormat.format("Could not log in due to: {0}", sb.toString())); //$NON-NLS-1$
return Response.status(Status.UNAUTHORIZED).entity(loginResult).build();
}
StrolchSessionHandler sessionHandler = RestfulStrolchComponent.getInstance().getComponent(
StrolchSessionHandler.class);
String origin = request == null ? "test" : request.getRemoteAddr();
String origin = request == null ? "test" : request.getRemoteAddr(); //$NON-NLS-1$
Certificate certificate = sessionHandler.authenticate(origin, login.getUsername(), login.getPassword()
.getBytes());
Locale locale = RestfulHelper.getLocale(headers);
certificate.setLocale(locale);
PrivilegeHandler privilegeHandler = RestfulStrolchComponent.getInstance().getPrivilegeHandler();
PrivilegeContext privilegeContext = privilegeHandler.getPrivilegeContext(certificate);
loginResult.setSessionId(certificate.getAuthToken());
loginResult.setUsername(certificate.getUsername());
loginResult.setLocale(locale.toString());
loginResult.setParameters(certificate.getPropertyMap());
List<String> allowList = privilegeContext.getFlatAllowList();
if (allowList.isEmpty())
loginResult.setPrivileges(Arrays.asList("*")); //$NON-NLS-1$
else
loginResult.setPrivileges(allowList);
return Response.ok().entity(entity).build();
} catch (StrolchException e) {
logger.error(e.getMessage(), e);
loginResult.setMsg("Could not log in due to: " + e.getMessage());
loginResult.setMsg(MessageFormat.format("Could not log in due to: {0}", e.getMessage())); //$NON-NLS-1$
return Response.status(Status.UNAUTHORIZED).entity(entity).build();
} catch (Exception e) {
logger.error(e.getMessage(), e);
String msg = e.getMessage();
loginResult.setMsg(e.getClass().getName() + ": " + msg);
loginResult.setMsg(MessageFormat.format("{0}: {1}", e.getClass().getName(), msg)); //$NON-NLS-1$
return Response.serverError().entity(entity).build();
}
}
@ -115,12 +129,13 @@ public class AuthenticationService {
LogoutResult logoutResult = new LogoutResult();
GenericEntity<LogoutResult> entity = new GenericEntity<LogoutResult>(logoutResult, LogoutResult.class) {
//
};
try {
StrolchSessionHandler sessionHandlerHandler = RestfulStrolchComponent.getInstance().getComponent(
StrolchSessionHandler.class);
String origin = request == null ? "test" : request.getRemoteAddr();
String origin = request == null ? "test" : request.getRemoteAddr(); //$NON-NLS-1$
Certificate certificate = sessionHandlerHandler.validate(origin, authToken);
sessionHandlerHandler.invalidateSession(origin, certificate);
@ -128,12 +143,12 @@ public class AuthenticationService {
} catch (StrolchException | PrivilegeException e) {
logger.error(e.getMessage(), e);
logoutResult.setMsg("Could not logout due to: " + e.getMessage());
logoutResult.setMsg(MessageFormat.format("Could not logout due to: {0}", e.getMessage())); //$NON-NLS-1$
return Response.status(Status.UNAUTHORIZED).entity(entity).build();
} catch (Exception e) {
logger.error(e.getMessage(), e);
String msg = e.getMessage();
logoutResult.setMsg(e.getClass().getName() + ": " + msg);
logoutResult.setMsg(MessageFormat.format("{0}: {1}", e.getClass().getName(), msg)); //$NON-NLS-1$
return Response.serverError().entity(entity).build();
}
}

View File

@ -63,6 +63,7 @@ public class EnumQuery {
StrolchEnum strolchEnum = enumHandler.getEnum(cert, name, locale);
GenericEntity<StrolchEnum> entity = new GenericEntity<StrolchEnum>(strolchEnum, StrolchEnum.class) {
//
};
return Response.ok().entity(entity).build();

View File

@ -48,6 +48,7 @@ public class VersionQuery {
VersionQueryResult versionQueryResult = container.getAgent().getVersion();
GenericEntity<VersionQueryResult> entity = new GenericEntity<VersionQueryResult>(versionQueryResult,
VersionQueryResult.class) {
//
};
return Response.ok().entity(entity).build();
}

View File

@ -34,7 +34,7 @@ public class AuthenicationRequestFilter implements ContainerRequestFilter {
String sessionId = requestContext.getHeaderString(HttpHeaders.AUTHORIZATION);
if (sessionId != null) {
try {
String origin = request == null ? "test" : request.getRemoteAddr();
String origin = this.request == null ? "test" : this.request.getRemoteAddr(); //$NON-NLS-1$
StrolchSessionHandler sessionHandler = RestfulStrolchComponent.getInstance().getComponent(
StrolchSessionHandler.class);
Certificate certificate = sessionHandler.validate(origin, sessionId);

View File

@ -15,6 +15,7 @@
*/
package li.strolch.rest.model;
import java.text.MessageFormat;
import java.util.List;
import javax.xml.bind.annotation.XmlAccessType;
@ -82,6 +83,6 @@ public class AgentOverview {
@Override
public String toString() {
return "AgentOverview [realms=" + this.realms + "]";
return MessageFormat.format("AgentOverview [realms={0}]", this.realms); //$NON-NLS-1$
}
}

View File

@ -15,11 +15,13 @@
*/
package li.strolch.rest.model;
import li.strolch.model.Tags;
/**
* @author Robert von Burg <eitch@eitchnet.ch>
*/
public enum ElementMapType {
RESOURCE("Resource"), ORDER("Order");
RESOURCE(Tags.RESOURCE), ORDER(Tags.ORDER);
private String name;
private ElementMapType(String name) {

View File

@ -163,9 +163,19 @@ public class ElementMapsOverview {
return true;
}
@SuppressWarnings("nls")
@Override
public String toString() {
return "ElementMapsOverview [name=" + this.name + ", elementMapType=" + this.elementMapType + ", nrOfElements="
+ this.nrOfElements + ", types=" + this.types + "]";
StringBuilder sb = new StringBuilder();
sb.append("ElementMapsOverview [name=");
sb.append(this.name);
sb.append(", elementMapType=");
sb.append(this.elementMapType);
sb.append(", nrOfElements=");
sb.append(this.nrOfElements);
sb.append(", types=");
sb.append(this.types);
sb.append("]");
return sb.toString();
}
}

View File

@ -43,21 +43,12 @@ public class GroupedParameterizedElementDetail extends StrolchElementDetail {
// no-arg constructor for JAXB
}
/**
* @param id
* @param name
* @param type
* @param parameterizedElements
*/
public GroupedParameterizedElementDetail(String id, String name, String type,
List<ParameterizedElementDetail> parameterizedElements) {
super(id, name, type);
this.parameterizedElements = parameterizedElements;
}
/**
* @param strolchElement
*/
public GroupedParameterizedElementDetail(GroupedParameterizedElement groupedParameterizedElement) {
super(groupedParameterizedElement);

View File

@ -15,6 +15,8 @@
*/
package li.strolch.rest.model;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import javax.xml.bind.annotation.XmlAccessType;
@ -31,15 +33,22 @@ public class LoginResult {
@XmlAttribute(name = "username")
private String username;
@XmlAttribute(name = "sessionId")
private String sessionId;
@XmlAttribute(name = "locale")
private String locale;
@XmlAttribute(name = "parameters")
private Map<String, String> parameters;
@XmlAttribute(name = "msg")
private String msg;
@XmlAttribute(name = "privileges")
private List<String> privileges;
public LoginResult() {
// no-arg constructor for JAXB
}
@ -89,6 +98,14 @@ public class LoginResult {
this.locale = locale;
}
/**
* @param locale
* the locale to set
*/
public void setLocale(Locale locale) {
this.locale = this.locale.toString();
}
/**
* @return the parameters
*/
@ -118,4 +135,19 @@ public class LoginResult {
public void setMsg(String msg) {
this.msg = msg;
}
/**
* @return the privileges
*/
public List<String> getPrivileges() {
return this.privileges;
}
/**
* @param privileges
* the privileges to set
*/
public void setPrivileges(List<String> privileges) {
this.privileges = privileges;
}
}

View File

@ -40,20 +40,11 @@ public class ParameterizedElementDetail extends StrolchElementDetail {
// no-arg constructor for JAXB
}
/**
* @param id
* @param name
* @param type
* @param parameters
*/
public ParameterizedElementDetail(String id, String name, String type, List<ParameterDetail> parameters) {
super(id, name, type);
this.parameters = parameters;
}
/**
* @param strolchElement
*/
public ParameterizedElementDetail(ParameterizedElement parameterizedElement) {
super(parameterizedElement);

View File

@ -80,8 +80,13 @@ public class RealmDetail {
return true;
}
@SuppressWarnings("nls")
@Override
public String toString() {
return "RealmDetail [elementMapOverviews=" + this.elementMapOverviews + "]";
StringBuilder sb = new StringBuilder();
sb.append("RealmDetail [elementMapOverviews=");
sb.append(this.elementMapOverviews);
sb.append("]");
return sb.toString();
}
}

View File

@ -103,8 +103,15 @@ public class RealmOverview {
return true;
}
@SuppressWarnings("nls")
@Override
public String toString() {
return "RealmOverview [realmName=" + this.realmName + ", size=" + this.size + "]";
StringBuilder sb = new StringBuilder();
sb.append("RealmOverview [realmName=");
sb.append(this.realmName);
sb.append(", size=");
sb.append(this.size);
sb.append("]");
return sb.toString();
}
}

View File

@ -44,6 +44,7 @@ import org.slf4j.LoggerFactory;
/**
* @author Robert von Burg <eitch@eitchnet.ch>
*/
@SuppressWarnings("nls")
public abstract class AbstractRestfulTest extends JerseyTest {
private static final URI BASE_URI = URI.create("http://localhost:8888/base");

View File

@ -40,6 +40,7 @@ import org.junit.Test;
* @author Robert von Burg <eitch@eitchnet.ch>
*/
@Ignore
@SuppressWarnings("nls")
public class AuthenticationTest extends AbstractRestfulTest {
private static final String ROOT_PATH = "strolch/authentication";

View File

@ -33,6 +33,7 @@ import org.junit.Test;
* @author Robert von Burg <eitch@eitchnet.ch>
*/
@Ignore
@SuppressWarnings("nls")
public class EnumTest extends AbstractRestfulTest {
private static final String ROOT_PATH = "strolch/enums";

View File

@ -34,6 +34,7 @@ import org.junit.Test;
* @author Robert von Burg <eitch@eitchnet.ch>
*/
@Ignore
@SuppressWarnings("nls")
public class VersionQueryTest extends AbstractRestfulTest {
private static final String ROOT_PATH = "strolch/version";