Polishing
This commit is contained in:
@@ -45,7 +45,7 @@ import org.springframework.transaction.annotation.AnnotationTransactionAttribute
|
||||
* @see javax.transaction.Transactional
|
||||
* @see AnnotationTransactionAspect
|
||||
*/
|
||||
@RequiredTypes({"javax.transaction.Transactional"})
|
||||
@RequiredTypes("javax.transaction.Transactional")
|
||||
public aspect JtaAnnotationTransactionAspect extends AbstractTransactionAspect {
|
||||
|
||||
public JtaAnnotationTransactionAspect() {
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2016 the original author or authors.
|
||||
* Copyright 2002-2018 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.
|
||||
@@ -59,14 +59,12 @@ abstract class ConversionUtils {
|
||||
// yes
|
||||
return true;
|
||||
}
|
||||
else if (sourceElementType.getType().isAssignableFrom(targetElementType.getType())) {
|
||||
if (sourceElementType.getType().isAssignableFrom(targetElementType.getType())) {
|
||||
// maybe
|
||||
return true;
|
||||
}
|
||||
else {
|
||||
// no
|
||||
return false;
|
||||
}
|
||||
// no
|
||||
return false;
|
||||
}
|
||||
|
||||
public static Class<?> getEnumType(Class<?> targetType) {
|
||||
|
||||
@@ -71,146 +71,146 @@ public abstract class MimeTypeUtils {
|
||||
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
|
||||
*/
|
||||
@Deprecated
|
||||
public final static MimeType APPLICATION_ATOM_XML;
|
||||
public static final MimeType APPLICATION_ATOM_XML;
|
||||
|
||||
/**
|
||||
* A String equivalent of {@link MimeTypeUtils#APPLICATION_ATOM_XML}.
|
||||
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
|
||||
*/
|
||||
@Deprecated
|
||||
public final static String APPLICATION_ATOM_XML_VALUE = "application/atom+xml";
|
||||
public static final String APPLICATION_ATOM_XML_VALUE = "application/atom+xml";
|
||||
|
||||
/**
|
||||
* Public constant mime type for {@code application/x-www-form-urlencoded}.
|
||||
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
|
||||
* */
|
||||
@Deprecated
|
||||
public final static MimeType APPLICATION_FORM_URLENCODED;
|
||||
public static final MimeType APPLICATION_FORM_URLENCODED;
|
||||
|
||||
/**
|
||||
* A String equivalent of {@link MimeTypeUtils#APPLICATION_FORM_URLENCODED}.
|
||||
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
|
||||
*/
|
||||
@Deprecated
|
||||
public final static String APPLICATION_FORM_URLENCODED_VALUE = "application/x-www-form-urlencoded";
|
||||
public static final String APPLICATION_FORM_URLENCODED_VALUE = "application/x-www-form-urlencoded";
|
||||
|
||||
/**
|
||||
* Public constant mime type for {@code application/json}.
|
||||
* */
|
||||
public final static MimeType APPLICATION_JSON;
|
||||
public static final MimeType APPLICATION_JSON;
|
||||
|
||||
/**
|
||||
* A String equivalent of {@link MimeTypeUtils#APPLICATION_JSON}.
|
||||
*/
|
||||
public final static String APPLICATION_JSON_VALUE = "application/json";
|
||||
public static final String APPLICATION_JSON_VALUE = "application/json";
|
||||
|
||||
/**
|
||||
* Public constant mime type for {@code application/octet-stream}.
|
||||
* */
|
||||
public final static MimeType APPLICATION_OCTET_STREAM;
|
||||
public static final MimeType APPLICATION_OCTET_STREAM;
|
||||
|
||||
/**
|
||||
* A String equivalent of {@link MimeTypeUtils#APPLICATION_OCTET_STREAM}.
|
||||
*/
|
||||
public final static String APPLICATION_OCTET_STREAM_VALUE = "application/octet-stream";
|
||||
public static final String APPLICATION_OCTET_STREAM_VALUE = "application/octet-stream";
|
||||
|
||||
/**
|
||||
* Public constant mime type for {@code application/xhtml+xml}.
|
||||
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
|
||||
*/
|
||||
@Deprecated
|
||||
public final static MimeType APPLICATION_XHTML_XML;
|
||||
public static final MimeType APPLICATION_XHTML_XML;
|
||||
|
||||
/**
|
||||
* A String equivalent of {@link MimeTypeUtils#APPLICATION_XHTML_XML}.
|
||||
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
|
||||
*/
|
||||
@Deprecated
|
||||
public final static String APPLICATION_XHTML_XML_VALUE = "application/xhtml+xml";
|
||||
public static final String APPLICATION_XHTML_XML_VALUE = "application/xhtml+xml";
|
||||
|
||||
/**
|
||||
* Public constant mime type for {@code application/xml}.
|
||||
*/
|
||||
public final static MimeType APPLICATION_XML;
|
||||
public static final MimeType APPLICATION_XML;
|
||||
|
||||
/**
|
||||
* A String equivalent of {@link MimeTypeUtils#APPLICATION_XML}.
|
||||
*/
|
||||
public final static String APPLICATION_XML_VALUE = "application/xml";
|
||||
public static final String APPLICATION_XML_VALUE = "application/xml";
|
||||
|
||||
/**
|
||||
* Public constant mime type for {@code image/gif}.
|
||||
*/
|
||||
public final static MimeType IMAGE_GIF;
|
||||
public static final MimeType IMAGE_GIF;
|
||||
|
||||
/**
|
||||
* A String equivalent of {@link MimeTypeUtils#IMAGE_GIF}.
|
||||
*/
|
||||
public final static String IMAGE_GIF_VALUE = "image/gif";
|
||||
public static final String IMAGE_GIF_VALUE = "image/gif";
|
||||
|
||||
/**
|
||||
* Public constant mime type for {@code image/jpeg}.
|
||||
*/
|
||||
public final static MimeType IMAGE_JPEG;
|
||||
public static final MimeType IMAGE_JPEG;
|
||||
|
||||
/**
|
||||
* A String equivalent of {@link MimeTypeUtils#IMAGE_JPEG}.
|
||||
*/
|
||||
public final static String IMAGE_JPEG_VALUE = "image/jpeg";
|
||||
public static final String IMAGE_JPEG_VALUE = "image/jpeg";
|
||||
|
||||
/**
|
||||
* Public constant mime type for {@code image/png}.
|
||||
*/
|
||||
public final static MimeType IMAGE_PNG;
|
||||
public static final MimeType IMAGE_PNG;
|
||||
|
||||
/**
|
||||
* A String equivalent of {@link MimeTypeUtils#IMAGE_PNG}.
|
||||
*/
|
||||
public final static String IMAGE_PNG_VALUE = "image/png";
|
||||
public static final String IMAGE_PNG_VALUE = "image/png";
|
||||
|
||||
/**
|
||||
* Public constant mime type for {@code multipart/form-data}.
|
||||
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
|
||||
*/
|
||||
@Deprecated
|
||||
public final static MimeType MULTIPART_FORM_DATA;
|
||||
public static final MimeType MULTIPART_FORM_DATA;
|
||||
|
||||
/**
|
||||
* A String equivalent of {@link MimeTypeUtils#MULTIPART_FORM_DATA}.
|
||||
* @deprecated as of 4.3.6, in favor of {@code MediaType} constants
|
||||
*/
|
||||
@Deprecated
|
||||
public final static String MULTIPART_FORM_DATA_VALUE = "multipart/form-data";
|
||||
public static final String MULTIPART_FORM_DATA_VALUE = "multipart/form-data";
|
||||
|
||||
/**
|
||||
* Public constant mime type for {@code text/html}.
|
||||
* */
|
||||
public final static MimeType TEXT_HTML;
|
||||
public static final MimeType TEXT_HTML;
|
||||
|
||||
/**
|
||||
* A String equivalent of {@link MimeTypeUtils#TEXT_HTML}.
|
||||
*/
|
||||
public final static String TEXT_HTML_VALUE = "text/html";
|
||||
public static final String TEXT_HTML_VALUE = "text/html";
|
||||
|
||||
/**
|
||||
* Public constant mime type for {@code text/plain}.
|
||||
* */
|
||||
public final static MimeType TEXT_PLAIN;
|
||||
public static final MimeType TEXT_PLAIN;
|
||||
|
||||
/**
|
||||
* A String equivalent of {@link MimeTypeUtils#TEXT_PLAIN}.
|
||||
*/
|
||||
public final static String TEXT_PLAIN_VALUE = "text/plain";
|
||||
public static final String TEXT_PLAIN_VALUE = "text/plain";
|
||||
|
||||
/**
|
||||
* Public constant mime type for {@code text/xml}.
|
||||
* */
|
||||
public final static MimeType TEXT_XML;
|
||||
public static final MimeType TEXT_XML;
|
||||
|
||||
/**
|
||||
* A String equivalent of {@link MimeTypeUtils#TEXT_XML}.
|
||||
*/
|
||||
public final static String TEXT_XML_VALUE = "text/xml";
|
||||
public static final String TEXT_XML_VALUE = "text/xml";
|
||||
|
||||
|
||||
static {
|
||||
|
||||
@@ -638,7 +638,7 @@ public abstract class StringUtils {
|
||||
String prefix = "";
|
||||
if (prefixIndex != -1) {
|
||||
prefix = pathToUse.substring(0, prefixIndex + 1);
|
||||
if (prefix.contains("/")) {
|
||||
if (prefix.contains(FOLDER_SEPARATOR)) {
|
||||
prefix = "";
|
||||
}
|
||||
else {
|
||||
|
||||
@@ -339,68 +339,68 @@ public class CodeFlow implements Opcodes {
|
||||
public static void insertAnyNecessaryTypeConversionBytecodes(MethodVisitor mv, char targetDescriptor, String stackDescriptor) {
|
||||
if (CodeFlow.isPrimitive(stackDescriptor)) {
|
||||
char stackTop = stackDescriptor.charAt(0);
|
||||
if (stackTop=='I' || stackTop=='B' || stackTop=='S' || stackTop=='C') {
|
||||
if (targetDescriptor=='D') {
|
||||
if (stackTop == 'I' || stackTop == 'B' || stackTop == 'S' || stackTop == 'C') {
|
||||
if (targetDescriptor == 'D') {
|
||||
mv.visitInsn(I2D);
|
||||
}
|
||||
else if (targetDescriptor=='F') {
|
||||
else if (targetDescriptor == 'F') {
|
||||
mv.visitInsn(I2F);
|
||||
}
|
||||
else if (targetDescriptor=='J') {
|
||||
else if (targetDescriptor == 'J') {
|
||||
mv.visitInsn(I2L);
|
||||
}
|
||||
else if (targetDescriptor=='I') {
|
||||
else if (targetDescriptor == 'I') {
|
||||
// nop
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException("cannot get from "+stackTop+" to "+targetDescriptor);
|
||||
}
|
||||
}
|
||||
else if (stackTop=='J') {
|
||||
if (targetDescriptor=='D') {
|
||||
else if (stackTop == 'J') {
|
||||
if (targetDescriptor == 'D') {
|
||||
mv.visitInsn(L2D);
|
||||
}
|
||||
else if (targetDescriptor=='F') {
|
||||
else if (targetDescriptor == 'F') {
|
||||
mv.visitInsn(L2F);
|
||||
}
|
||||
else if (targetDescriptor=='J') {
|
||||
else if (targetDescriptor == 'J') {
|
||||
// nop
|
||||
}
|
||||
else if (targetDescriptor=='I') {
|
||||
else if (targetDescriptor == 'I') {
|
||||
mv.visitInsn(L2I);
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException("cannot get from "+stackTop+" to "+targetDescriptor);
|
||||
}
|
||||
}
|
||||
else if (stackTop=='F') {
|
||||
if (targetDescriptor=='D') {
|
||||
else if (stackTop == 'F') {
|
||||
if (targetDescriptor == 'D') {
|
||||
mv.visitInsn(F2D);
|
||||
}
|
||||
else if (targetDescriptor=='F') {
|
||||
else if (targetDescriptor == 'F') {
|
||||
// nop
|
||||
}
|
||||
else if (targetDescriptor=='J') {
|
||||
else if (targetDescriptor == 'J') {
|
||||
mv.visitInsn(F2L);
|
||||
}
|
||||
else if (targetDescriptor=='I') {
|
||||
else if (targetDescriptor == 'I') {
|
||||
mv.visitInsn(F2I);
|
||||
}
|
||||
else {
|
||||
throw new IllegalStateException("cannot get from "+stackTop+" to "+targetDescriptor);
|
||||
}
|
||||
}
|
||||
else if (stackTop=='D') {
|
||||
if (targetDescriptor=='D') {
|
||||
else if (stackTop == 'D') {
|
||||
if (targetDescriptor == 'D') {
|
||||
// nop
|
||||
}
|
||||
else if (targetDescriptor=='F') {
|
||||
else if (targetDescriptor == 'F') {
|
||||
mv.visitInsn(D2F);
|
||||
}
|
||||
else if (targetDescriptor=='J') {
|
||||
else if (targetDescriptor == 'J') {
|
||||
mv.visitInsn(D2L);
|
||||
}
|
||||
else if (targetDescriptor=='I') {
|
||||
else if (targetDescriptor == 'I') {
|
||||
mv.visitInsn(D2I);
|
||||
}
|
||||
else {
|
||||
@@ -521,24 +521,27 @@ public class CodeFlow implements Opcodes {
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the descriptor is for a boolean primitive or boolean reference type.
|
||||
* @param descriptor type descriptor
|
||||
* @return {@code true} if the descriptor is for a boolean primitive or boolean reference type
|
||||
* @return {@code true} if the descriptor is boolean compatible
|
||||
*/
|
||||
public static boolean isBooleanCompatible(String descriptor) {
|
||||
return (descriptor != null && (descriptor.equals("Z") || descriptor.equals("Ljava/lang/Boolean")));
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the descriptor is for a primitive type.
|
||||
* @param descriptor type descriptor
|
||||
* @return {@code true} if the descriptor is for a primitive type
|
||||
* @return {@code true} if a primitive type
|
||||
*/
|
||||
public static boolean isPrimitive(String descriptor) {
|
||||
return (descriptor != null && descriptor.length() == 1);
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine whether the descriptor is for a primitive array (e.g. "[[I").
|
||||
* @param descriptor the descriptor for a possible primitive array
|
||||
* @return {@code true} if the descriptor is for a primitive array (e.g. "[[I")
|
||||
* @return {@code true} if the descriptor a primitive array
|
||||
*/
|
||||
public static boolean isPrimitiveArray(String descriptor) {
|
||||
boolean primitive = true;
|
||||
@@ -554,8 +557,8 @@ public class CodeFlow implements Opcodes {
|
||||
}
|
||||
|
||||
/**
|
||||
* Determine if boxing/unboxing can get from one type to the other. Assumes at least
|
||||
* one of the types is in boxed form (i.e. single char descriptor).
|
||||
* Determine whether boxing/unboxing can get from one type to the other.
|
||||
* Assumes at least one of the types is in boxed form (i.e. single char descriptor).
|
||||
* @return {@code true} if it is possible to get (via boxing) from one descriptor to the other
|
||||
*/
|
||||
public static boolean areBoxingCompatible(String desc1, String desc2) {
|
||||
@@ -891,16 +894,33 @@ public class CodeFlow implements Opcodes {
|
||||
public static void insertArrayStore(MethodVisitor mv, String arrayElementType) {
|
||||
if (arrayElementType.length()==1) {
|
||||
switch (arrayElementType.charAt(0)) {
|
||||
case 'I': mv.visitInsn(IASTORE); break;
|
||||
case 'J': mv.visitInsn(LASTORE); break;
|
||||
case 'F': mv.visitInsn(FASTORE); break;
|
||||
case 'D': mv.visitInsn(DASTORE); break;
|
||||
case 'B': mv.visitInsn(BASTORE); break;
|
||||
case 'C': mv.visitInsn(CASTORE); break;
|
||||
case 'S': mv.visitInsn(SASTORE); break;
|
||||
case 'Z': mv.visitInsn(BASTORE); break;
|
||||
case 'I':
|
||||
mv.visitInsn(IASTORE);
|
||||
break;
|
||||
case 'J':
|
||||
mv.visitInsn(LASTORE);
|
||||
break;
|
||||
case 'F':
|
||||
mv.visitInsn(FASTORE);
|
||||
break;
|
||||
case 'D':
|
||||
mv.visitInsn(DASTORE);
|
||||
break;
|
||||
case 'B':
|
||||
mv.visitInsn(BASTORE);
|
||||
break;
|
||||
case 'C':
|
||||
mv.visitInsn(CASTORE);
|
||||
break;
|
||||
case 'S':
|
||||
mv.visitInsn(SASTORE);
|
||||
break;
|
||||
case 'Z':
|
||||
mv.visitInsn(BASTORE);
|
||||
break;
|
||||
default:
|
||||
throw new IllegalArgumentException("Unexpected arraytype "+arrayElementType.charAt(0));
|
||||
throw new IllegalArgumentException(
|
||||
"Unexpected arraytype " + arrayElementType.charAt(0));
|
||||
}
|
||||
}
|
||||
else {
|
||||
@@ -929,14 +949,16 @@ public class CodeFlow implements Opcodes {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return true if the supplied array type has a core component reference type
|
||||
* Return if the supplied array type has a core component reference type.
|
||||
*/
|
||||
public static boolean isReferenceTypeArray(String arraytype) {
|
||||
int length = arraytype.length();
|
||||
for (int i = 0; i < length; i++) {
|
||||
char ch = arraytype.charAt(i);
|
||||
if (ch == '[') continue;
|
||||
return ch=='L';
|
||||
if (ch == '[') {
|
||||
continue;
|
||||
}
|
||||
return (ch == 'L');
|
||||
}
|
||||
return false;
|
||||
}
|
||||
@@ -991,18 +1013,6 @@ public class CodeFlow implements Opcodes {
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
public interface FieldAdder {
|
||||
|
||||
void generateField(ClassWriter cw, CodeFlow codeflow);
|
||||
}
|
||||
|
||||
|
||||
public interface ClinitAdder {
|
||||
|
||||
void generateCode(MethodVisitor mv, CodeFlow codeflow);
|
||||
}
|
||||
|
||||
public static String toBoxedDescriptor(String primitiveDescriptor) {
|
||||
switch (primitiveDescriptor.charAt(0)) {
|
||||
case 'I': return "Ljava/lang/Integer";
|
||||
@@ -1015,7 +1025,27 @@ public class CodeFlow implements Opcodes {
|
||||
case 'Z': return "Ljava/lang/Boolean";
|
||||
default:
|
||||
throw new IllegalArgumentException("Unexpected non primitive descriptor "+primitiveDescriptor);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Interface used to generate fields.
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface FieldAdder {
|
||||
|
||||
void generateField(ClassWriter cw, CodeFlow codeflow);
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Interface used to generate {@code clinit} static initializer blocks.
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface ClinitAdder {
|
||||
|
||||
void generateCode(MethodVisitor mv, CodeFlow codeflow);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2018 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.
|
||||
@@ -208,7 +208,7 @@ public class OpPlus extends Operator {
|
||||
|
||||
@Override
|
||||
public void generateCode(MethodVisitor mv, CodeFlow cf) {
|
||||
if (this.exitTypeDescriptor == "Ljava/lang/String") {
|
||||
if ("Ljava/lang/String".equals(this.exitTypeDescriptor)) {
|
||||
mv.visitTypeInsn(NEW, "java/lang/StringBuilder");
|
||||
mv.visitInsn(DUP);
|
||||
mv.visitMethodInsn(INVOKESPECIAL, "java/lang/StringBuilder", "<init>", "()V", false);
|
||||
@@ -233,12 +233,12 @@ public class OpPlus extends Operator {
|
||||
case 'J':
|
||||
mv.visitInsn(LADD);
|
||||
break;
|
||||
case 'F':
|
||||
case 'F':
|
||||
mv.visitInsn(FADD);
|
||||
break;
|
||||
case 'D':
|
||||
mv.visitInsn(DADD);
|
||||
break;
|
||||
break;
|
||||
default:
|
||||
throw new IllegalStateException(
|
||||
"Unrecognized exit type descriptor: '" + this.exitTypeDescriptor + "'");
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2018 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.
|
||||
@@ -199,6 +199,9 @@ public abstract class AbstractRequestExpectationManager implements RequestExpect
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Reset all expectations for this group.
|
||||
*/
|
||||
public void reset() {
|
||||
getExpectations().clear();
|
||||
}
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2002-2017 the original author or authors.
|
||||
* Copyright 2002-2018 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.
|
||||
@@ -57,7 +57,7 @@ public class GzipResourceResolver extends AbstractResourceResolver {
|
||||
}
|
||||
}
|
||||
catch (IOException ex) {
|
||||
logger.trace("No gzipped resource for [" + resource.getFilename() + "]", ex);
|
||||
logger.trace("No gzip resource for [" + resource.getFilename() + "]", ex);
|
||||
}
|
||||
|
||||
return resource;
|
||||
@@ -69,8 +69,8 @@ public class GzipResourceResolver extends AbstractResourceResolver {
|
||||
}
|
||||
|
||||
@Override
|
||||
protected String resolveUrlPathInternal(String resourceUrlPath, List<? extends Resource> locations,
|
||||
ResourceResolverChain chain) {
|
||||
protected String resolveUrlPathInternal(String resourceUrlPath,
|
||||
List<? extends Resource> locations, ResourceResolverChain chain) {
|
||||
|
||||
return chain.resolveUrlPath(resourceUrlPath, locations);
|
||||
}
|
||||
@@ -87,54 +87,67 @@ public class GzipResourceResolver extends AbstractResourceResolver {
|
||||
this.gzipped = original.createRelative(original.getFilename() + ".gz");
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getInputStream() throws IOException {
|
||||
return this.gzipped.getInputStream();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean exists() {
|
||||
return this.gzipped.exists();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isReadable() {
|
||||
return this.gzipped.isReadable();
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean isOpen() {
|
||||
return this.gzipped.isOpen();
|
||||
}
|
||||
|
||||
@Override
|
||||
public URL getURL() throws IOException {
|
||||
return this.gzipped.getURL();
|
||||
}
|
||||
|
||||
@Override
|
||||
public URI getURI() throws IOException {
|
||||
return this.gzipped.getURI();
|
||||
}
|
||||
|
||||
@Override
|
||||
public File getFile() throws IOException {
|
||||
return this.gzipped.getFile();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long contentLength() throws IOException {
|
||||
return this.gzipped.contentLength();
|
||||
}
|
||||
|
||||
@Override
|
||||
public long lastModified() throws IOException {
|
||||
return this.gzipped.lastModified();
|
||||
}
|
||||
|
||||
@Override
|
||||
public Resource createRelative(String relativePath) throws IOException {
|
||||
return this.gzipped.createRelative(relativePath);
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getFilename() {
|
||||
return this.original.getFilename();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return this.gzipped.getDescription();
|
||||
}
|
||||
|
||||
@Override
|
||||
public String getContentEncoding() {
|
||||
return "gzip";
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
* 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
|
||||
* 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,
|
||||
@@ -304,12 +304,12 @@ public class VersionResourceResolver extends AbstractResourceResolver {
|
||||
|
||||
@Override
|
||||
public String getDescription() {
|
||||
return original.getDescription();
|
||||
return this.original.getDescription();
|
||||
}
|
||||
|
||||
@Override
|
||||
public InputStream getInputStream() throws IOException {
|
||||
return original.getInputStream();
|
||||
return this.original.getInputStream();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -109,9 +109,9 @@
|
||||
* spring.status : a BindStatus instance holding the command object name,
|
||||
* expression, value, and error messages and codes for the path supplied
|
||||
*
|
||||
* @param path : the path (string value) of the value required to bind to.
|
||||
* Spring defaults to a command name of "command" but this can be overridden
|
||||
* by user config.
|
||||
* @param path the path (string value) of the value required to bind to.
|
||||
* Spring defaults to a command name of "command" but this can be
|
||||
* overridden by user configuration.
|
||||
-->
|
||||
<#macro bind path>
|
||||
<#if htmlEscape?exists>
|
||||
@@ -152,8 +152,8 @@
|
||||
* of a command or bean.
|
||||
*
|
||||
* @param path the name of the field to bind to
|
||||
* @param attributes any additional attributes for the element (such as class
|
||||
* or CSS styles or size
|
||||
* @param attributes any additional attributes for the element
|
||||
* (such as class or CSS styles or size)
|
||||
-->
|
||||
<#macro formInput path attributes="" fieldType="text">
|
||||
<@bind path/>
|
||||
@@ -169,8 +169,8 @@
|
||||
* of 'password'.
|
||||
*
|
||||
* @param path the name of the field to bind to
|
||||
* @param attributes any additional attributes for the element (such as class
|
||||
* or CSS styles or size
|
||||
* @param attributes any additional attributes for the element
|
||||
* (such as class or CSS styles or size)
|
||||
-->
|
||||
<#macro formPasswordInput path attributes="">
|
||||
<@formInput path, attributes, "password"/>
|
||||
@@ -184,8 +184,8 @@
|
||||
* the formInput macro with a 'type' parameter of 'hidden'.
|
||||
*
|
||||
* @param path the name of the field to bind to
|
||||
* @param attributes any additional attributes for the element (such as class
|
||||
* or CSS styles or size
|
||||
* @param attributes any additional attributes for the element
|
||||
* (such as class or CSS styles or size)
|
||||
-->
|
||||
<#macro formHiddenInput path attributes="">
|
||||
<@formInput path, attributes, "hidden"/>
|
||||
@@ -197,8 +197,8 @@
|
||||
* Display a text area and bind it to an attribute of a command or bean.
|
||||
*
|
||||
* @param path the name of the field to bind to
|
||||
* @param attributes any additional attributes for the element (such as class
|
||||
* or CSS styles or size
|
||||
* @param attributes any additional attributes for the element
|
||||
* (such as class or CSS styles or size)
|
||||
-->
|
||||
<#macro formTextarea path attributes="">
|
||||
<@bind path/>
|
||||
@@ -214,8 +214,8 @@ ${stringStatusValue}</textarea>
|
||||
*
|
||||
* @param path the name of the field to bind to
|
||||
* @param options a map (value=label) of all the available options
|
||||
* @param attributes any additional attributes for the element (such as class
|
||||
* or CSS styles or size
|
||||
* @param attributes any additional attributes for the element
|
||||
* (such as class or CSS styles or size)
|
||||
-->
|
||||
<#macro formSingleSelect path options attributes="">
|
||||
<@bind path/>
|
||||
@@ -240,8 +240,8 @@ ${stringStatusValue}</textarea>
|
||||
*
|
||||
* @param path the name of the field to bind to
|
||||
* @param options a map (value=label) of all the available options
|
||||
* @param attributes any additional attributes for the element (such as class
|
||||
* or CSS styles or size
|
||||
* @param attributes any additional attributes for the element
|
||||
* (such as class or CSS styles or size)
|
||||
-->
|
||||
<#macro formMultiSelect path options attributes="">
|
||||
<@bind path/>
|
||||
@@ -260,10 +260,10 @@ ${stringStatusValue}</textarea>
|
||||
*
|
||||
* @param path the name of the field to bind to
|
||||
* @param options a map (value=label) of all the available options
|
||||
* @param separator the html tag or other character list that should be used to
|
||||
* separate each option. Typically ' ' or '<br>'
|
||||
* @param attributes any additional attributes for the element (such as class
|
||||
* or CSS styles or size
|
||||
* @param separator the HTML tag or other character list that should be used to
|
||||
* separate each option (typically ' ' or '<br>')
|
||||
* @param attributes any additional attributes for the element
|
||||
* (such as class or CSS styles or size)
|
||||
-->
|
||||
<#macro formRadioButtons path options separator attributes="">
|
||||
<@bind path/>
|
||||
@@ -281,10 +281,10 @@ ${stringStatusValue}</textarea>
|
||||
*
|
||||
* @param path the name of the field to bind to
|
||||
* @param options a map (value=label) of all the available options
|
||||
* @param separator the html tag or other character list that should be used to
|
||||
* separate each option. Typically ' ' or '<br>'
|
||||
* @param attributes any additional attributes for the element (such as class
|
||||
* or CSS styles or size
|
||||
* @param separator the HTML tag or other character list that should be used to
|
||||
* separate each option (typically ' ' or '<br>')
|
||||
* @param attributes any additional attributes for the element
|
||||
* (such as class or CSS styles or size)
|
||||
-->
|
||||
<#macro formCheckboxes path options separator attributes="">
|
||||
<@bind path/>
|
||||
@@ -303,8 +303,8 @@ ${stringStatusValue}</textarea>
|
||||
* Show a single checkbox.
|
||||
*
|
||||
* @param path the name of the field to bind to
|
||||
* @param attributes any additional attributes for the element (such as class
|
||||
* or CSS styles or size
|
||||
* @param attributes any additional attributes for the element
|
||||
* (such as class or CSS styles or size)
|
||||
-->
|
||||
<#macro formCheckbox path attributes="">
|
||||
<@bind path />
|
||||
@@ -320,12 +320,12 @@ ${stringStatusValue}</textarea>
|
||||
* Show validation errors for the currently bound field, with
|
||||
* optional style attributes.
|
||||
*
|
||||
* @param separator the html tag or other character list that should be used to
|
||||
* separate each option. Typically '<br>'.
|
||||
* @param separator the HTML tag or other character list that should be used to
|
||||
* separate each option (typically ' ' or '<br>')
|
||||
* @param classOrStyle either the name of a CSS class element (which is defined in
|
||||
* the template or an external CSS file) or an inline style. If the value passed in here
|
||||
* contains a colon (:) then a 'style=' attribute will be used, else a 'class=' attribute
|
||||
* will be used.
|
||||
* the template or an external CSS file) or an inline style. If the value passed
|
||||
* in here contains a colon (:) then a 'style=' attribute will be used,
|
||||
* otherwise a 'class=' attribute will be used.
|
||||
-->
|
||||
<#macro showErrors separator classOrStyle="">
|
||||
<#list status.errorMessages as error>
|
||||
|
||||
Reference in New Issue
Block a user