
org.brutusin.rpc.RpcUtils Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of rpc-impl Show documentation
Show all versions of rpc-impl Show documentation
Brutusin-RPC implementation
/*
* Copyright 2015 brutusin.org
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package org.brutusin.rpc;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import java.util.TreeSet;
import java.util.logging.Logger;
import javax.servlet.ServletContext;
import org.brutusin.commons.utils.Miscellaneous;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContext;
/**
*
* @author Ignacio del Valle Alles [email protected]
*/
public class RpcUtils {
private static final Logger LOGGER = Logger.getLogger(RpcWebInitializer.class.getName());
private static final String VERSION = loadVersion();
private static final String DESCRIPTION = loadDescription();
private RpcUtils() {
}
private static String loadVersion() {
try {
String ret = Miscellaneous.toString(RpcUtils.class.getClassLoader().getResourceAsStream("brutusin-rpc.version"), "UTF-8");
if (ret == null) {
LOGGER.warning("Resource not found: 'brutusin-rpc.version'. Add this resource to improve API documentation");
}
return ret;
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
private static String loadDescription() {
try {
String ret = Miscellaneous.toString(RpcUtils.class.getClassLoader().getResourceAsStream("brutusin-rpc.md"), "UTF-8");
if (ret == null) {
LOGGER.warning("Resource not found: 'brutusin-rpc.md'. Add this resource to improve API documentation");
}
return ret;
} catch (IOException ex) {
throw new RuntimeException(ex);
}
}
public static String getVersion() {
return VERSION;
}
public static String getDescription() {
return DESCRIPTION;
}
/**
*
* @param sc
* @return
*/
public static RpcSpringContext getSpringContext(ServletContext sc) {
return (RpcSpringContext) sc.getAttribute(RpcSpringContext.class.getName());
}
public static Set getUserRoles(Object securityContext) {
Set roleSet = new TreeSet();
if (securityContext != null) {
SecurityContext sc = (SecurityContext) securityContext;
Collection extends GrantedAuthority> authorities = sc.getAuthentication().getAuthorities();
for (GrantedAuthority authority : authorities) {
String auth = authority.getAuthority();
if (auth.startsWith("ROLE_")) {
auth = auth.substring(5);
}
roleSet.add(auth);
}
}
return Collections.unmodifiableSet(roleSet);
}
public static boolean doOriginsMatch(String origin1, String origin2) {
try {
if (origin1 == null || origin2 == null) {
return false;
}
if (origin1.equals("*") || origin2.equals("*")) {
return true;
}
URI uri1 = getURI(origin1);
URI uri2 = getURI(origin2);
if (!uri1.getHost().equals(uri2.getHost())) {
return false;
}
return getPort(uri1) == getPort(uri2);
} catch (URISyntaxException ex) {
return false;
}
}
private static int getPort(URI uri) {
if (uri.getPort() >= 0) {
return uri.getPort();
}
if ("http".equals(uri.getScheme())) {
return 80;
}
if ("https".equals(uri.getScheme())) {
return 443;
}
return uri.getPort();
}
private static URI getURI(String origin) throws URISyntaxException {
if (origin.startsWith("http://") || origin.startsWith("https://")) {
return new URI(origin);
}
return new URI("http://" + origin);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy