Polishing
This commit is contained in:
parent
aadb93f30c
commit
2675ce7c9f
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -45,6 +45,7 @@ public abstract class FreeMarkerTemplateUtils {
|
|||
*/
|
||||
public static String processTemplateIntoString(Template template, Object model)
|
||||
throws IOException, TemplateException {
|
||||
|
||||
StringWriter result = new StringWriter();
|
||||
template.process(model, result);
|
||||
return result.toString();
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -63,6 +63,7 @@ public class SpringTemplateLoader implements TemplateLoader {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public Object findTemplateSource(String name) throws IOException {
|
||||
if (logger.isDebugEnabled()) {
|
||||
|
@ -86,7 +87,6 @@ public class SpringTemplateLoader implements TemplateLoader {
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
public long getLastModified(Object templateSource) {
|
||||
Resource resource = (Resource) templateSource;
|
||||
|
|
|
@ -36,19 +36,20 @@ import org.springframework.util.StringUtils;
|
|||
* on the {@link org.springframework.messaging.simp.user.UserSessionRegistry}
|
||||
* provided to the constructor to find the sessionIds associated with a user
|
||||
* and then uses the sessionId to make the target destination unique.
|
||||
* <p>
|
||||
* When a user attempts to subscribe to "/user/queue/position-updates", the
|
||||
*
|
||||
* <p>When a user attempts to subscribe to "/user/queue/position-updates", the
|
||||
* "/user" prefix is removed and a unique suffix added, resulting in something
|
||||
* like "/queue/position-updates-useri9oqdfzo" where the suffix is based on the
|
||||
* user's session and ensures it does not collide with any other users attempting
|
||||
* to subscribe to "/user/queue/position-updates".
|
||||
* <p>
|
||||
* When a message is sent to a user with a destination such as
|
||||
*
|
||||
* <p>When a message is sent to a user with a destination such as
|
||||
* "/user/{username}/queue/position-updates", the "/user/{username}" prefix is
|
||||
* removed and the suffix added, resulting in something like
|
||||
* "/queue/position-updates-useri9oqdfzo".
|
||||
*
|
||||
* @author Rossen Stoyanchev
|
||||
* @author Brian Clozel
|
||||
* @since 4.0
|
||||
*/
|
||||
public class DefaultUserDestinationResolver implements UserDestinationResolver {
|
||||
|
@ -71,6 +72,7 @@ public class DefaultUserDestinationResolver implements UserDestinationResolver {
|
|||
this.userSessionRegistry = userSessionRegistry;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* The prefix used to identify user destinations. Any destinations that do not
|
||||
* start with the given prefix are not be resolved.
|
||||
|
@ -108,9 +110,10 @@ public class DefaultUserDestinationResolver implements UserDestinationResolver {
|
|||
}
|
||||
Set<String> resolved = new HashSet<String>();
|
||||
for (String sessionId : info.getSessionIds()) {
|
||||
String d = getTargetDestination(destination, info.getDestinationWithoutPrefix(), sessionId, info.getUser());
|
||||
if (d != null) {
|
||||
resolved.add(d);
|
||||
String targetDestination = getTargetDestination(
|
||||
destination, info.getDestinationWithoutPrefix(), sessionId, info.getUser());
|
||||
if (targetDestination != null) {
|
||||
resolved.add(targetDestination);
|
||||
}
|
||||
}
|
||||
return new UserDestinationResult(destination, resolved, info.getSubscribeDestination(), info.getUser());
|
||||
|
@ -150,8 +153,7 @@ public class DefaultUserDestinationResolver implements UserDestinationResolver {
|
|||
subscribeDestination = this.destinationPrefix.substring(0, startIndex-1) + destinationWithoutPrefix;
|
||||
user = destination.substring(startIndex, endIndex);
|
||||
user = StringUtils.replace(user, "%2F", "/");
|
||||
|
||||
if(user.equals(sessionId)) {
|
||||
if (user.equals(sessionId)) {
|
||||
user = null;
|
||||
sessionIds = Collections.singleton(sessionId);
|
||||
}
|
||||
|
@ -176,13 +178,11 @@ public class DefaultUserDestinationResolver implements UserDestinationResolver {
|
|||
* This methods determines the translated destination to use based on the source
|
||||
* destination, the source destination with the user prefix removed, a session
|
||||
* id, and the user for the session (if known).
|
||||
*
|
||||
* @param sourceDestination the source destination of the input message
|
||||
* @param sourceDestinationWithoutPrefix the source destination without the user prefix
|
||||
* @param sessionId the id of the session for the target message
|
||||
* @param user the user associated with the session, or {@code null}
|
||||
*
|
||||
* @return a target destination, or {@code null}
|
||||
* @return a target destination, or {@code null} if none
|
||||
*/
|
||||
protected String getTargetDestination(String sourceDestination,
|
||||
String sourceDestinationWithoutPrefix, String sessionId, String user) {
|
||||
|
@ -195,6 +195,7 @@ public class DefaultUserDestinationResolver implements UserDestinationResolver {
|
|||
return "DefaultUserDestinationResolver[prefix=" + this.destinationPrefix + "]";
|
||||
}
|
||||
|
||||
|
||||
private static class DestinationInfo {
|
||||
|
||||
private final String destinationWithoutPrefix;
|
||||
|
@ -205,8 +206,7 @@ public class DefaultUserDestinationResolver implements UserDestinationResolver {
|
|||
|
||||
private final Set<String> sessionIds;
|
||||
|
||||
|
||||
private DestinationInfo(String destinationWithoutPrefix, String subscribeDestination, String user,
|
||||
public DestinationInfo(String destinationWithoutPrefix, String subscribeDestination, String user,
|
||||
Set<String> sessionIds) {
|
||||
|
||||
this.user = user;
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright 2002-2012 the original author or authors.
|
||||
* Copyright 2002-2014 the original author or authors.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
|
@ -36,11 +36,13 @@ public abstract class AbstractHandlerMethodAdapter extends WebContentGenerator i
|
|||
|
||||
private int order = Ordered.LOWEST_PRECEDENCE;
|
||||
|
||||
|
||||
public AbstractHandlerMethodAdapter() {
|
||||
// no restriction of HTTP methods by default
|
||||
super(false);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Specify the order value for this HandlerAdapter bean.
|
||||
* <p>Default value is {@code Integer.MAX_VALUE}, meaning that it's non-ordered.
|
||||
|
@ -55,51 +57,49 @@ public abstract class AbstractHandlerMethodAdapter extends WebContentGenerator i
|
|||
return this.order;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* {@inheritDoc} <p>This implementation expects the handler to be an {@link HandlerMethod}.
|
||||
*
|
||||
* This implementation expects the handler to be an {@link HandlerMethod}.
|
||||
* @param handler the handler instance to check
|
||||
* @return whether or not this adapter can adapt the given handler
|
||||
*/
|
||||
@Override
|
||||
public final boolean supports(Object handler) {
|
||||
return handler instanceof HandlerMethod && supportsInternal((HandlerMethod) handler);
|
||||
return (handler instanceof HandlerMethod && supportsInternal((HandlerMethod) handler));
|
||||
}
|
||||
|
||||
/**
|
||||
* Given a handler method, return whether or not this adapter can support it.
|
||||
*
|
||||
* @param handlerMethod the handler method to check
|
||||
* @return whether or not this adapter can adapt the given method
|
||||
*/
|
||||
protected abstract boolean supportsInternal(HandlerMethod handlerMethod);
|
||||
|
||||
/**
|
||||
* {@inheritDoc} <p>This implementation expects the handler to be an {@link HandlerMethod}.
|
||||
* This implementation expects the handler to be an {@link HandlerMethod}.
|
||||
*/
|
||||
@Override
|
||||
public final ModelAndView handle(HttpServletRequest request, HttpServletResponse response, Object handler)
|
||||
throws Exception {
|
||||
|
||||
return handleInternal(request, response, (HandlerMethod) handler);
|
||||
}
|
||||
|
||||
/**
|
||||
* Use the given handler method to handle the request.
|
||||
*
|
||||
* @param request current HTTP request
|
||||
* @param response current HTTP response
|
||||
* @param handlerMethod handler method to use. This object must have previously been passed to the
|
||||
* {@link #supportsInternal(HandlerMethod)} this interface, which must have returned {@code true}.
|
||||
* @return ModelAndView object with the name of the view and the required model data, or {@code null} if
|
||||
* the request has been handled directly
|
||||
* @return ModelAndView object with the name of the view and the required model data,
|
||||
* or {@code null} if the request has been handled directly
|
||||
* @throws Exception in case of errors
|
||||
*/
|
||||
protected abstract ModelAndView handleInternal(HttpServletRequest request,
|
||||
HttpServletResponse response,
|
||||
HandlerMethod handlerMethod) throws Exception;
|
||||
HttpServletResponse response, HandlerMethod handlerMethod) throws Exception;
|
||||
|
||||
/**
|
||||
* {@inheritDoc} <p>This implementation expects the handler to be an {@link HandlerMethod}.
|
||||
* This implementation expects the handler to be an {@link HandlerMethod}.
|
||||
*/
|
||||
@Override
|
||||
public final long getLastModified(HttpServletRequest request, Object handler) {
|
||||
|
@ -108,10 +108,10 @@ public abstract class AbstractHandlerMethodAdapter extends WebContentGenerator i
|
|||
|
||||
/**
|
||||
* Same contract as for {@link javax.servlet.http.HttpServlet#getLastModified(HttpServletRequest)}.
|
||||
*
|
||||
* @param request current HTTP request
|
||||
* @param handlerMethod handler method to use
|
||||
* @return the lastModified value for the given handler
|
||||
*/
|
||||
protected abstract long getLastModifiedInternal(HttpServletRequest request, HandlerMethod handlerMethod);
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue