From 2675ce7c9f329be55d4566d4a2e58e3fe3ec7d46 Mon Sep 17 00:00:00 2001 From: Juergen Hoeller Date: Sat, 22 Nov 2014 18:05:35 +0100 Subject: [PATCH] Polishing --- .../freemarker/FreeMarkerTemplateUtils.java | 3 +- .../ui/freemarker/SpringTemplateLoader.java | 4 +-- .../user/DefaultUserDestinationResolver.java | 28 +++++++++---------- .../method/AbstractHandlerMethodAdapter.java | 26 ++++++++--------- 4 files changed, 31 insertions(+), 30 deletions(-) diff --git a/spring-context-support/src/main/java/org/springframework/ui/freemarker/FreeMarkerTemplateUtils.java b/spring-context-support/src/main/java/org/springframework/ui/freemarker/FreeMarkerTemplateUtils.java index b2e7a852144..751ee13dc2d 100644 --- a/spring-context-support/src/main/java/org/springframework/ui/freemarker/FreeMarkerTemplateUtils.java +++ b/spring-context-support/src/main/java/org/springframework/ui/freemarker/FreeMarkerTemplateUtils.java @@ -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(); diff --git a/spring-context-support/src/main/java/org/springframework/ui/freemarker/SpringTemplateLoader.java b/spring-context-support/src/main/java/org/springframework/ui/freemarker/SpringTemplateLoader.java index 6f1c22a62d8..9c72aa17ab2 100644 --- a/spring-context-support/src/main/java/org/springframework/ui/freemarker/SpringTemplateLoader.java +++ b/spring-context-support/src/main/java/org/springframework/ui/freemarker/SpringTemplateLoader.java @@ -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; diff --git a/spring-messaging/src/main/java/org/springframework/messaging/simp/user/DefaultUserDestinationResolver.java b/spring-messaging/src/main/java/org/springframework/messaging/simp/user/DefaultUserDestinationResolver.java index 1cf16436de7..affd3fd475a 100644 --- a/spring-messaging/src/main/java/org/springframework/messaging/simp/user/DefaultUserDestinationResolver.java +++ b/spring-messaging/src/main/java/org/springframework/messaging/simp/user/DefaultUserDestinationResolver.java @@ -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. - *

- * When a user attempts to subscribe to "/user/queue/position-updates", the + * + *

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". - *

- * When a message is sent to a user with a destination such as + * + *

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 resolved = new HashSet(); 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 sessionIds; - - private DestinationInfo(String destinationWithoutPrefix, String subscribeDestination, String user, + public DestinationInfo(String destinationWithoutPrefix, String subscribeDestination, String user, Set sessionIds) { this.user = user; diff --git a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/AbstractHandlerMethodAdapter.java b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/AbstractHandlerMethodAdapter.java index 8eb83966bb2..803b595d4be 100644 --- a/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/AbstractHandlerMethodAdapter.java +++ b/spring-webmvc/src/main/java/org/springframework/web/servlet/mvc/method/AbstractHandlerMethodAdapter.java @@ -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. *

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}

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}

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}

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); + }