Polishing
This commit is contained in:
@@ -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,9 +45,8 @@ import org.springframework.jdbc.BadSqlGrammarException;
|
||||
* {@link SQLExceptionTranslator} implementation which analyzes the specific
|
||||
* {@link java.sql.SQLException} subclass thrown by the JDBC driver.
|
||||
*
|
||||
* <p>This is only available with JDBC 4.0 and later drivers when using Java 6 or later.
|
||||
* Falls back to a standard {@link SQLStateSQLExceptionTranslator} if the JDBC driver
|
||||
* does not actually expose JDBC 4 compliant {@code SQLException} subclasses.
|
||||
* <p>Falls back to a standard {@link SQLStateSQLExceptionTranslator} if the JDBC
|
||||
* driver does not actually expose JDBC 4 compliant {@code SQLException} subclasses.
|
||||
*
|
||||
* @author Thomas Risberg
|
||||
* @author Juergen Hoeller
|
||||
@@ -65,22 +64,22 @@ public class SQLExceptionSubclassTranslator extends AbstractFallbackSQLException
|
||||
@Override
|
||||
protected DataAccessException doTranslate(String task, String sql, SQLException ex) {
|
||||
if (ex instanceof SQLTransientException) {
|
||||
if (ex instanceof SQLTransactionRollbackException) {
|
||||
return new ConcurrencyFailureException(buildMessage(task, sql, ex), ex);
|
||||
}
|
||||
if (ex instanceof SQLTransientConnectionException) {
|
||||
return new TransientDataAccessResourceException(buildMessage(task, sql, ex), ex);
|
||||
}
|
||||
if (ex instanceof SQLTimeoutException) {
|
||||
else if (ex instanceof SQLTransactionRollbackException) {
|
||||
return new ConcurrencyFailureException(buildMessage(task, sql, ex), ex);
|
||||
}
|
||||
else if (ex instanceof SQLTimeoutException) {
|
||||
return new QueryTimeoutException(buildMessage(task, sql, ex), ex);
|
||||
}
|
||||
}
|
||||
else if (ex instanceof SQLNonTransientException) {
|
||||
if (ex instanceof SQLDataException) {
|
||||
return new DataIntegrityViolationException(buildMessage(task, sql, ex), ex);
|
||||
if (ex instanceof SQLNonTransientConnectionException) {
|
||||
return new DataAccessResourceFailureException(buildMessage(task, sql, ex), ex);
|
||||
}
|
||||
else if (ex instanceof SQLFeatureNotSupportedException) {
|
||||
return new InvalidDataAccessApiUsageException(buildMessage(task, sql, ex), ex);
|
||||
else if (ex instanceof SQLDataException) {
|
||||
return new DataIntegrityViolationException(buildMessage(task, sql, ex), ex);
|
||||
}
|
||||
else if (ex instanceof SQLIntegrityConstraintViolationException) {
|
||||
return new DataIntegrityViolationException(buildMessage(task, sql, ex), ex);
|
||||
@@ -88,12 +87,12 @@ public class SQLExceptionSubclassTranslator extends AbstractFallbackSQLException
|
||||
else if (ex instanceof SQLInvalidAuthorizationSpecException) {
|
||||
return new PermissionDeniedDataAccessException(buildMessage(task, sql, ex), ex);
|
||||
}
|
||||
else if (ex instanceof SQLNonTransientConnectionException) {
|
||||
return new DataAccessResourceFailureException(buildMessage(task, sql, ex), ex);
|
||||
}
|
||||
else if (ex instanceof SQLSyntaxErrorException) {
|
||||
return new BadSqlGrammarException(task, sql, ex);
|
||||
}
|
||||
else if (ex instanceof SQLFeatureNotSupportedException) {
|
||||
return new InvalidDataAccessApiUsageException(buildMessage(task, sql, ex), ex);
|
||||
}
|
||||
}
|
||||
else if (ex instanceof SQLRecoverableException) {
|
||||
return new RecoverableDataAccessException(buildMessage(task, sql, ex), ex);
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2013 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.
|
||||
@@ -27,9 +27,8 @@ import org.springframework.util.Assert;
|
||||
*/
|
||||
public abstract class AbstractSockJsMessageCodec implements SockJsMessageCodec {
|
||||
|
||||
|
||||
@Override
|
||||
public String encode(String[] messages) {
|
||||
public String encode(String... messages) {
|
||||
Assert.notNull(messages, "messages must not be null");
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("a[");
|
||||
@@ -76,9 +75,9 @@ public abstract class AbstractSockJsMessageCodec implements SockJsMessageCodec {
|
||||
* See `escapable_by_server` variable in the SockJS protocol test suite.
|
||||
*/
|
||||
private boolean isSockJsSpecialChar(char ch) {
|
||||
return (ch >= '\u0000' && ch <= '\u001F') || (ch >= '\u200C' && ch <= '\u200F')
|
||||
|| (ch >= '\u2028' && ch <= '\u202F') || (ch >= '\u2060' && ch <= '\u206F')
|
||||
|| (ch >= '\uFFF0' && ch <= '\uFFFF') || (ch >= '\uD800' && ch <= '\uDFFF');
|
||||
return (ch >= '\u0000' && ch <= '\u001F') || (ch >= '\u200C' && ch <= '\u200F') ||
|
||||
(ch >= '\u2028' && ch <= '\u202F') || (ch >= '\u2060' && ch <= '\u206F') ||
|
||||
(ch >= '\uFFF0' && ch <= '\uFFFF') || (ch >= '\uD800' && ch <= '\uDFFF');
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2013 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.
|
||||
@@ -20,10 +20,10 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
|
||||
/**
|
||||
* Encode and decode messages to and from a SockJS message frame, essentially an array of
|
||||
* JSON-encoded messages. For example:
|
||||
* Encode and decode messages to and from a SockJS message frame,
|
||||
* essentially an array of JSON-encoded messages. For example:
|
||||
*
|
||||
* <pre>
|
||||
* <pre class="code">
|
||||
* a["message1","message2"]
|
||||
* </pre>
|
||||
*
|
||||
@@ -38,14 +38,14 @@ public interface SockJsMessageCodec {
|
||||
* rules. See the "JSON Unicode Encoding" section of SockJS protocol (i.e. the
|
||||
* protocol test suite).
|
||||
* @param messages the messages to encode
|
||||
* @return the content for a SockJS message frame, never {@code null}
|
||||
* @return the content for a SockJS message frame (never {@code null})
|
||||
*/
|
||||
String encode(String[] messages);
|
||||
String encode(String... messages);
|
||||
|
||||
/**
|
||||
* Decode the given SockJS message frame.
|
||||
* @param content the SockJS message frame
|
||||
* @return an array of messages or {@code null}
|
||||
* @return an array of messages, or {@code null} if none
|
||||
* @throws IOException if the content could not be parsed
|
||||
*/
|
||||
String[] decode(String content) throws IOException;
|
||||
@@ -53,7 +53,7 @@ public interface SockJsMessageCodec {
|
||||
/**
|
||||
* Decode the given SockJS message frame.
|
||||
* @param content the SockJS message frame
|
||||
* @return an array of messages or {@code null}
|
||||
* @return an array of messages, or {@code null} if none
|
||||
* @throws IOException if the content could not be parsed
|
||||
*/
|
||||
String[] decodeInputStream(InputStream content) throws IOException;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2013 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.
|
||||
@@ -55,7 +55,7 @@ public class JsonpReceivingTransportHandler extends AbstractHttpReceivingTranspo
|
||||
try {
|
||||
response.getBody().write("ok".getBytes("UTF-8"));
|
||||
}
|
||||
catch(IOException ex) {
|
||||
catch (IOException ex) {
|
||||
throw new SockJsException("Failed to write to the response body", sockJsSession.getId(), ex);
|
||||
}
|
||||
}
|
||||
@@ -64,10 +64,10 @@ public class JsonpReceivingTransportHandler extends AbstractHttpReceivingTranspo
|
||||
protected String[] readMessages(ServerHttpRequest request) throws IOException {
|
||||
SockJsMessageCodec messageCodec = getServiceConfig().getMessageCodec();
|
||||
MediaType contentType = request.getHeaders().getContentType();
|
||||
if ((contentType != null) && MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(contentType)) {
|
||||
if (contentType != null && MediaType.APPLICATION_FORM_URLENCODED.isCompatibleWith(contentType)) {
|
||||
MultiValueMap<String, String> map = this.formConverter.read(null, request);
|
||||
String d = map.getFirst("d");
|
||||
return (StringUtils.hasText(d)) ? messageCodec.decode(d) : null;
|
||||
return (StringUtils.hasText(d) ? messageCodec.decode(d) : null);
|
||||
}
|
||||
else {
|
||||
return messageCodec.decodeInputStream(request.getBody());
|
||||
|
||||
Reference in New Issue
Block a user