Added missing @Override-s (Java 6 language cleanup)
diff --git a/src/main/java/freemarker/cache/ByteArrayTemplateLoader.java b/src/main/java/freemarker/cache/ByteArrayTemplateLoader.java
index e82760b..1440284 100644
--- a/src/main/java/freemarker/cache/ByteArrayTemplateLoader.java
+++ b/src/main/java/freemarker/cache/ByteArrayTemplateLoader.java
@@ -63,17 +63,21 @@
return templates.remove(name) != null;
}
+ @Override
public void closeTemplateSource(Object templateSource) {
}
+ @Override
public Object findTemplateSource(String name) {
return templates.get(name);
}
+ @Override
public long getLastModified(Object templateSource) {
return ((ByteArrayTemplateSource) templateSource).lastModified;
}
+ @Override
public Reader getReader(Object templateSource, String encoding) throws UnsupportedEncodingException {
return new InputStreamReader(
new ByteArrayInputStream(((ByteArrayTemplateSource) templateSource).templateContent),
diff --git a/src/main/java/freemarker/cache/FileTemplateLoader.java b/src/main/java/freemarker/cache/FileTemplateLoader.java
index 1484b2e..7dfa071 100644
--- a/src/main/java/freemarker/cache/FileTemplateLoader.java
+++ b/src/main/java/freemarker/cache/FileTemplateLoader.java
@@ -117,6 +117,7 @@
public FileTemplateLoader(final File baseDir, final boolean disableCanonicalPathCheck) throws IOException {
try {
Object[] retval = AccessController.doPrivileged(new PrivilegedExceptionAction<Object[]>() {
+ @Override
public Object[] run() throws IOException {
if (!baseDir.exists()) {
throw new FileNotFoundException(baseDir + " does not exist.");
@@ -150,9 +151,11 @@
}
}
+ @Override
public Object findTemplateSource(final String name) throws IOException {
try {
return AccessController.doPrivileged(new PrivilegedExceptionAction<File>() {
+ @Override
public File run() throws IOException {
File source = new File(baseDir, SEP_IS_SLASH ? name :
name.replace('/', File.separatorChar));
@@ -183,17 +186,21 @@
}
}
+ @Override
public long getLastModified(final Object templateSource) {
return (AccessController.doPrivileged(new PrivilegedAction<Long>() {
+ @Override
public Long run() {
return Long.valueOf(((File) templateSource).lastModified());
}
})).longValue();
}
+ @Override
public Reader getReader(final Object templateSource, final String encoding) throws IOException {
try {
return AccessController.doPrivileged(new PrivilegedExceptionAction<Reader>() {
+ @Override
public Reader run() throws IOException {
if (!(templateSource instanceof File)) {
throw new IllegalArgumentException(
@@ -258,6 +265,7 @@
return true;
}
+ @Override
public void closeTemplateSource(Object templateSource) {
// Do nothing.
}
diff --git a/src/main/java/freemarker/cache/MruCacheStorage.java b/src/main/java/freemarker/cache/MruCacheStorage.java
index e0ecc09..84d2072 100644
--- a/src/main/java/freemarker/cache/MruCacheStorage.java
+++ b/src/main/java/freemarker/cache/MruCacheStorage.java
@@ -82,6 +82,7 @@
this.softSizeLimit = softSizeLimit;
}
+ @Override
public Object get(Object key) {
removeClearedReferences();
MruEntry entry = (MruEntry) map.get(key);
@@ -97,6 +98,7 @@
return value;
}
+ @Override
public void put(Object key, Object value) {
removeClearedReferences();
MruEntry entry = (MruEntry) map.get(key);
@@ -110,6 +112,7 @@
}
+ @Override
public void remove(Object key) {
removeClearedReferences();
removeInternal(key);
@@ -122,6 +125,7 @@
}
}
+ @Override
public void clear() {
strongHead.makeHead();
softHead.linkAfter(strongHead);
@@ -247,6 +251,7 @@
* @see #getSoftSize()
* @since 2.3.21
*/
+ @Override
public int getSize() {
return getSoftSize() + getStrongSize();
}
diff --git a/src/main/java/freemarker/cache/MultiTemplateLoader.java b/src/main/java/freemarker/cache/MultiTemplateLoader.java
index e379625..63bb91b 100644
--- a/src/main/java/freemarker/cache/MultiTemplateLoader.java
+++ b/src/main/java/freemarker/cache/MultiTemplateLoader.java
@@ -55,6 +55,7 @@
this.templateLoaders = templateLoaders.clone();
}
+ @Override
public Object findTemplateSource(String name)
throws IOException {
TemplateLoader lastTemplateLoader = null;
@@ -93,15 +94,18 @@
return null;
}
+ @Override
public long getLastModified(Object templateSource) {
return ((MultiSource) templateSource).getLastModified();
}
+ @Override
public Reader getReader(Object templateSource, String encoding)
throws IOException {
return ((MultiSource) templateSource).getReader(encoding);
}
+ @Override
public void closeTemplateSource(Object templateSource)
throws IOException {
((MultiSource) templateSource).close();
@@ -110,6 +114,7 @@
/**
* Clears the sickiness memory, also resets the state of all enclosed {@link StatefulTemplateLoader}-s.
*/
+ @Override
public void resetState() {
lastTemplateLoaderForName.clear();
for (TemplateLoader loader : templateLoaders) {
diff --git a/src/main/java/freemarker/cache/NullCacheStorage.java b/src/main/java/freemarker/cache/NullCacheStorage.java
index c9a9cb5..04e39b3 100644
--- a/src/main/java/freemarker/cache/NullCacheStorage.java
+++ b/src/main/java/freemarker/cache/NullCacheStorage.java
@@ -34,22 +34,27 @@
*/
public static final NullCacheStorage INSTANCE = new NullCacheStorage();
+ @Override
public boolean isConcurrent() {
return true;
}
+ @Override
public Object get(Object key) {
return null;
}
+ @Override
public void put(Object key, Object value) {
// do nothing
}
+ @Override
public void remove(Object key) {
// do nothing
}
+ @Override
public void clear() {
// do nothing
}
@@ -59,6 +64,7 @@
*
* @since 2.3.21
*/
+ @Override
public int getSize() {
return 0;
}
diff --git a/src/main/java/freemarker/cache/SoftCacheStorage.java b/src/main/java/freemarker/cache/SoftCacheStorage.java
index fddceaa..72d49ab 100644
--- a/src/main/java/freemarker/cache/SoftCacheStorage.java
+++ b/src/main/java/freemarker/cache/SoftCacheStorage.java
@@ -55,6 +55,7 @@
/**
* Returns true if the underlying Map is a {@code ConcurrentMap}.
*/
+ @Override
public boolean isConcurrent() {
return concurrent;
}
@@ -64,22 +65,26 @@
this.concurrent = map instanceof ConcurrentMap;
}
+ @Override
public Object get(Object key) {
processQueue();
Reference ref = (Reference) map.get(key);
return ref == null ? null : ref.get();
}
+ @Override
public void put(Object key, Object value) {
processQueue();
map.put(key, new SoftValueReference(key, value, queue));
}
+ @Override
public void remove(Object key) {
processQueue();
map.remove(key);
}
+ @Override
public void clear() {
map.clear();
processQueue();
@@ -90,6 +95,7 @@
*
* @since 2.3.21
*/
+ @Override
public int getSize() {
processQueue();
return map.size();
diff --git a/src/main/java/freemarker/cache/StringTemplateLoader.java b/src/main/java/freemarker/cache/StringTemplateLoader.java
index 554555b..dd1610a 100644
--- a/src/main/java/freemarker/cache/StringTemplateLoader.java
+++ b/src/main/java/freemarker/cache/StringTemplateLoader.java
@@ -117,17 +117,21 @@
return templates.remove(name) != null;
}
+ @Override
public void closeTemplateSource(Object templateSource) {
}
+ @Override
public Object findTemplateSource(String name) {
return templates.get(name);
}
+ @Override
public long getLastModified(Object templateSource) {
return ((StringTemplateSource) templateSource).lastModified;
}
+ @Override
public Reader getReader(Object templateSource, String encoding) {
return new StringReader(((StringTemplateSource) templateSource).templateContent);
}
diff --git a/src/main/java/freemarker/cache/StrongCacheStorage.java b/src/main/java/freemarker/cache/StrongCacheStorage.java
index c423142..4ed8332 100644
--- a/src/main/java/freemarker/cache/StrongCacheStorage.java
+++ b/src/main/java/freemarker/cache/StrongCacheStorage.java
@@ -36,18 +36,22 @@
/**
* Always returns {@code true}.
*/
+ @Override
public boolean isConcurrent() {
return true;
}
+ @Override
public Object get(Object key) {
return map.get(key);
}
+ @Override
public void put(Object key, Object value) {
map.put(key, value);
}
+ @Override
public void remove(Object key) {
map.remove(key);
}
@@ -57,10 +61,12 @@
*
* @since 2.3.21
*/
+ @Override
public int getSize() {
return map.size();
}
+ @Override
public void clear() {
map.clear();
}
diff --git a/src/main/java/freemarker/cache/URLTemplateLoader.java b/src/main/java/freemarker/cache/URLTemplateLoader.java
index ae8cda5..aae0275 100644
--- a/src/main/java/freemarker/cache/URLTemplateLoader.java
+++ b/src/main/java/freemarker/cache/URLTemplateLoader.java
@@ -38,16 +38,19 @@
private Boolean urlConnectionUsesCaches;
+ @Override
public Object findTemplateSource(String name)
throws IOException {
URL url = getURL(name);
return url == null ? null : new URLTemplateSource(url, getURLConnectionUsesCaches());
}
+ @Override
public long getLastModified(Object templateSource) {
return ((URLTemplateSource) templateSource).lastModified();
}
+ @Override
public Reader getReader(Object templateSource, String encoding)
throws IOException {
return new InputStreamReader(
@@ -55,6 +58,7 @@
encoding);
}
+ @Override
public void closeTemplateSource(Object templateSource)
throws IOException {
((URLTemplateSource) templateSource).close();
diff --git a/src/main/java/freemarker/cache/WebappTemplateLoader.java b/src/main/java/freemarker/cache/WebappTemplateLoader.java
index f3376d3..8ff7b6c 100644
--- a/src/main/java/freemarker/cache/WebappTemplateLoader.java
+++ b/src/main/java/freemarker/cache/WebappTemplateLoader.java
@@ -91,6 +91,7 @@
this.servletContext = servletContext;
}
+ @Override
public Object findTemplateSource(String name) throws IOException {
String fullPath = subdirPath + name;
@@ -121,6 +122,7 @@
return url == null ? null : new URLTemplateSource(url, getURLConnectionUsesCaches());
}
+ @Override
public long getLastModified(Object templateSource) {
if (templateSource instanceof File) {
return ((File) templateSource).lastModified();
@@ -129,6 +131,7 @@
}
}
+ @Override
public Reader getReader(Object templateSource, String encoding)
throws IOException {
if (templateSource instanceof File) {
@@ -142,6 +145,7 @@
}
}
+ @Override
public void closeTemplateSource(Object templateSource) throws IOException {
if (templateSource instanceof File) {
// Do nothing.
diff --git a/src/main/java/freemarker/core/AddConcatExpression.java b/src/main/java/freemarker/core/AddConcatExpression.java
index 86eb02d..a4bfb9f 100644
--- a/src/main/java/freemarker/core/AddConcatExpression.java
+++ b/src/main/java/freemarker/core/AddConcatExpression.java
@@ -202,11 +202,13 @@
this.right = right;
}
+ @Override
public int size()
throws TemplateModelException {
return left.size() + right.size();
}
+ @Override
public TemplateModel get(int i)
throws TemplateModelException {
int ls = left.size();
@@ -224,12 +226,14 @@
this.right = right;
}
+ @Override
public TemplateModel get(String key)
throws TemplateModelException {
TemplateModel model = right.get(key);
return (model != null) ? model : left.get(key);
}
+ @Override
public boolean isEmpty()
throws TemplateModelException {
return left.isEmpty() && right.isEmpty();
@@ -246,17 +250,20 @@
super(left, right);
}
+ @Override
public int size() throws TemplateModelException {
initKeys();
return keys.size();
}
+ @Override
public TemplateCollectionModel keys()
throws TemplateModelException {
initKeys();
return keys;
}
+ @Override
public TemplateCollectionModel values()
throws TemplateModelException {
initValues();
diff --git a/src/main/java/freemarker/core/BodyInstruction.java b/src/main/java/freemarker/core/BodyInstruction.java
index 102ce67..8a88c06 100644
--- a/src/main/java/freemarker/core/BodyInstruction.java
+++ b/src/main/java/freemarker/core/BodyInstruction.java
@@ -146,10 +146,12 @@
}
}
+ @Override
public TemplateModel getLocalVariable(String name) throws TemplateModelException {
return bodyVars == null ? null : bodyVars.get(name);
}
+ @Override
public Collection getLocalVariableNames() {
List bodyParameterNames = invokingMacroContext.nestedContentParameterNames;
return bodyParameterNames == null ? Collections.EMPTY_LIST : bodyParameterNames;
diff --git a/src/main/java/freemarker/core/BoundedRangeModel.java b/src/main/java/freemarker/core/BoundedRangeModel.java
index 84e2f28..5d23319 100644
--- a/src/main/java/freemarker/core/BoundedRangeModel.java
+++ b/src/main/java/freemarker/core/BoundedRangeModel.java
@@ -42,6 +42,7 @@
this.affectedByStringSlicingBug = inclusiveEnd;
}
+ @Override
public int size() {
return size;
}
diff --git a/src/main/java/freemarker/core/BuiltInsForCallables.java b/src/main/java/freemarker/core/BuiltInsForCallables.java
index 7cea824..e27d2cc 100644
--- a/src/main/java/freemarker/core/BuiltInsForCallables.java
+++ b/src/main/java/freemarker/core/BuiltInsForCallables.java
@@ -44,6 +44,7 @@
protected abstract boolean isOrderLast();
+ @Override
TemplateModel _eval(Environment env) throws TemplateException {
TemplateModel model = target.eval(env);
if (model instanceof Macro) {
@@ -69,6 +70,7 @@
this.macroOrFunction = macroOrFunction;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args.size(), 1);
TemplateModel argTM = (TemplateModel) args.get(0);
@@ -99,6 +101,7 @@
this.method = method;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args.size(), 1);
TemplateModel argTM = (TemplateModel) args.get(0);
@@ -107,6 +110,7 @@
final TemplateSequenceModel withArgs = (TemplateSequenceModel) argTM;
if (method instanceof TemplateMethodModelEx) {
return new TemplateMethodModelEx() {
+ @Override
public Object exec(List origArgs) throws TemplateModelException {
int withArgsSize = withArgs.size();
List<TemplateModel> newArgs = new ArrayList<>(
@@ -127,6 +131,7 @@
};
} else {
return new TemplateMethodModel() {
+ @Override
public Object exec(List origArgs) throws TemplateModelException {
int withArgsSize = withArgs.size();
List<String> newArgs = new ArrayList<>(
@@ -187,6 +192,7 @@
this.directive = directive;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args.size(), 1);
TemplateModel argTM = (TemplateModel) args.get(0);
@@ -194,6 +200,7 @@
if (argTM instanceof TemplateHashModelEx) {
final TemplateHashModelEx withArgs = (TemplateHashModelEx) argTM;
return new TemplateDirectiveModel() {
+ @Override
public void execute(Environment env, Map origArgs, TemplateModel[] loopVars,
TemplateDirectiveBody body) throws TemplateException, IOException {
int withArgsSize = withArgs.size();
diff --git a/src/main/java/freemarker/core/BuiltInsForDates.java b/src/main/java/freemarker/core/BuiltInsForDates.java
index 5fc0a22..c4f660b 100644
--- a/src/main/java/freemarker/core/BuiltInsForDates.java
+++ b/src/main/java/freemarker/core/BuiltInsForDates.java
@@ -88,6 +88,7 @@
this.env = env;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 1);
diff --git a/src/main/java/freemarker/core/BuiltInsForExistenceHandling.java b/src/main/java/freemarker/core/BuiltInsForExistenceHandling.java
index 9e83d37..ea8b466 100644
--- a/src/main/java/freemarker/core/BuiltInsForExistenceHandling.java
+++ b/src/main/java/freemarker/core/BuiltInsForExistenceHandling.java
@@ -71,6 +71,7 @@
this.constant = constant;
}
+ @Override
public Object exec(List args) {
return constant;
}
@@ -82,6 +83,7 @@
*/
private static final TemplateMethodModelEx FIRST_NON_NULL_METHOD =
new TemplateMethodModelEx() {
+ @Override
public Object exec(List args) throws TemplateModelException {
int argCnt = args.size();
if (argCnt == 0) throw _MessageUtil.newArgCntError("?default", argCnt, 1, Integer.MAX_VALUE);
diff --git a/src/main/java/freemarker/core/BuiltInsForLoopVariables.java b/src/main/java/freemarker/core/BuiltInsForLoopVariables.java
index 416774a..311a71a 100644
--- a/src/main/java/freemarker/core/BuiltInsForLoopVariables.java
+++ b/src/main/java/freemarker/core/BuiltInsForLoopVariables.java
@@ -140,6 +140,7 @@
this.iterCtx = iterCtx;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 1, Integer.MAX_VALUE);
return args.get(iterCtx.getIndex() % args.size());
diff --git a/src/main/java/freemarker/core/BuiltInsForMultipleTypes.java b/src/main/java/freemarker/core/BuiltInsForMultipleTypes.java
index cf70c31..a8b1130 100644
--- a/src/main/java/freemarker/core/BuiltInsForMultipleTypes.java
+++ b/src/main/java/freemarker/core/BuiltInsForMultipleTypes.java
@@ -125,10 +125,12 @@
return new SimpleScalar(env.getCNumberFormat().format(num));
}
+ @Override
public int getMinimumICIVersion() {
return _TemplateAPI.VERSION_INT_2_3_21;
}
+ @Override
public Object getPreviousICIChainMember() {
return prevICIObj;
}
@@ -153,11 +155,13 @@
this.defaultFormat = env.getTemplateDateFormat(dateType, Date.class, target, false);
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 0, 1);
return args.size() == 0 ? getAsDateModel() : get((String) args.get(0));
}
+ @Override
public TemplateModel get(String pattern) throws TemplateModelException {
TemplateDateFormat format;
try {
@@ -188,14 +192,17 @@
return cachedValue;
}
+ @Override
public Date getAsDate() throws TemplateModelException {
return getAsDateModel().getAsDate();
}
+ @Override
public int getDateType() {
return dateType;
}
+ @Override
public boolean isEmpty() {
return false;
}
@@ -577,11 +584,13 @@
this.env = env;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 2);
return new SimpleScalar((String) args.get(bool.getAsBoolean() ? 0 : 1));
}
+ @Override
public String getAsString() throws TemplateModelException {
// Boolean should have come first... but that change would be non-BC.
if (bool instanceof TemplateScalarModel) {
@@ -618,11 +627,13 @@
dateType, EvalUtil.modelToDate(dateModel, target).getClass(), target, true);
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 1);
return formatWith((String) args.get(0));
}
+ @Override
public TemplateModel get(String key)
throws TemplateModelException {
return formatWith(key);
@@ -638,6 +649,7 @@
}
}
+ @Override
public String getAsString()
throws TemplateModelException {
if (cachedValue == null) {
@@ -662,6 +674,7 @@
return cachedValue;
}
+ @Override
public boolean isEmpty() {
return false;
}
@@ -692,11 +705,13 @@
}
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 1);
return get((String) args.get(0));
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
TemplateNumberFormat format;
try {
@@ -721,6 +736,7 @@
return new SimpleScalar(result);
}
+ @Override
public String getAsString() throws TemplateModelException {
if (cachedValue == null) {
try {
@@ -738,6 +754,7 @@
return cachedValue;
}
+ @Override
public boolean isEmpty() {
return false;
}
diff --git a/src/main/java/freemarker/core/BuiltInsForNodes.java b/src/main/java/freemarker/core/BuiltInsForNodes.java
index acd9fdf..71e76bd 100644
--- a/src/main/java/freemarker/core/BuiltInsForNodes.java
+++ b/src/main/java/freemarker/core/BuiltInsForNodes.java
@@ -127,6 +127,7 @@
this.env = env;
}
+ @Override
public Object exec(List names) throws TemplateModelException {
if (names == null || names.isEmpty()) {
return this;
diff --git a/src/main/java/freemarker/core/BuiltInsForSequences.java b/src/main/java/freemarker/core/BuiltInsForSequences.java
index 35cd229..b80f42e 100644
--- a/src/main/java/freemarker/core/BuiltInsForSequences.java
+++ b/src/main/java/freemarker/core/BuiltInsForSequences.java
@@ -64,6 +64,7 @@
this.tsm = tsm;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 1, 2);
int chunkSize = getNumberMethodArg(args, 0).intValue();
@@ -97,6 +98,7 @@
numberOfChunks = (wrappedTsm.size() + chunkSize - 1) / chunkSize;
}
+ @Override
public TemplateModel get(final int chunkIndex)
throws TemplateModelException {
if (chunkIndex >= numberOfChunks) {
@@ -107,6 +109,7 @@
private final int baseIndex = chunkIndex * chunkSize;
+ @Override
public TemplateModel get(int relIndex)
throws TemplateModelException {
int absIndex = baseIndex + relIndex;
@@ -119,6 +122,7 @@
}
}
+ @Override
public int size() throws TemplateModelException {
return fillerItem != null || chunkIndex + 1 < numberOfChunks
? chunkSize
@@ -128,6 +132,7 @@
};
}
+ @Override
public int size() throws TemplateModelException {
return numberOfChunks;
}
@@ -200,6 +205,7 @@
this.coll = coll;
}
+ @Override
public Object exec(List args)
throws TemplateModelException {
checkMethodArgCount(args, 1, 3);
@@ -278,10 +284,12 @@
this.seq = seq;
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return seq.get(seq.size() - 1 - index);
}
+ @Override
public int size() throws TemplateModelException {
return seq.size();
}
@@ -313,6 +321,7 @@
m_env = env;
}
+ @Override
public Object exec(List args)
throws TemplateModelException {
checkMethodArgCount(args, 1);
@@ -338,6 +347,7 @@
m_env = env;
}
+ @Override
public Object exec(List args)
throws TemplateModelException {
checkMethodArgCount(args, 1);
@@ -406,6 +416,7 @@
m_env = env;
}
+ @Override
public final Object exec(List args)
throws TemplateModelException {
int argCnt = args.size();
@@ -542,6 +553,7 @@
this.seq = seq;
}
+ @Override
public Object exec(List args)
throws TemplateModelException {
// Should be:
@@ -590,6 +602,7 @@
private static class BooleanKVPComparator implements Comparator, Serializable {
+ @Override
public int compare(Object arg0, Object arg1) {
// JDK 1.2 doesn't have Boolean.compareTo
boolean b0 = ((Boolean) ((KVP) arg0).key).booleanValue();
@@ -603,6 +616,7 @@
}
private static class DateKVPComparator implements Comparator, Serializable {
+ @Override
public int compare(Object arg0, Object arg1) {
return ((Date) ((KVP) arg0).key).compareTo(
(Date) ((KVP) arg1).key);
@@ -627,6 +641,7 @@
this.collator = collator;
}
+ @Override
public int compare(Object arg0, Object arg1) {
return collator.compare(
((KVP) arg0).key, ((KVP) arg1).key);
@@ -639,6 +654,7 @@
this.ae = ae;
}
+ @Override
public int compare(Object arg0, Object arg1) {
try {
return ae.compareNumbers(
@@ -1034,6 +1050,7 @@
static class filterBI extends FilterLikeBI {
+ @Override
protected TemplateModel calculateResult(
final TemplateModelIterator lhoIterator, final TemplateModel lho,
boolean lhoIsSequence, final ElementTransformer elementTransformer,
@@ -1058,6 +1075,7 @@
TemplateModel prefetchedElement;
boolean prefetchedEndOfIterator;
+ @Override
public TemplateModel next() throws TemplateModelException {
ensurePrefetchDone();
if (prefetchedEndOfIterator) {
@@ -1067,6 +1085,7 @@
return prefetchedElement;
}
+ @Override
public boolean hasNext() throws TemplateModelException {
ensurePrefetchDone();
return !prefetchedEndOfIterator;
@@ -1109,6 +1128,7 @@
static class take_whileBI extends FilterLikeBI {
+ @Override
protected TemplateModel calculateResult(
final TemplateModelIterator lhoIterator, final TemplateModel lho,
boolean lhoIsSequence, final ElementTransformer elementTransformer,
@@ -1135,6 +1155,7 @@
TemplateModel prefetchedElement;
boolean prefetchedEndOfIterator;
+ @Override
public TemplateModel next() throws TemplateModelException {
ensurePrefetchDone();
if (prefetchedEndOfIterator) {
@@ -1144,6 +1165,7 @@
return prefetchedElement;
}
+ @Override
public boolean hasNext() throws TemplateModelException {
ensurePrefetchDone();
return !prefetchedEndOfIterator;
@@ -1184,6 +1206,7 @@
static class mapBI extends IntermediateStreamOperationLikeBuiltIn {
+ @Override
protected TemplateModel calculateResult(
final TemplateModelIterator lhoIterator, TemplateModel lho, boolean lhoIsSequence, final ElementTransformer elementTransformer,
final Environment env) throws TemplateException {
@@ -1199,6 +1222,7 @@
return new TemplateModelListSequence(resultList);
} else {
TemplateModelIterator mappedLhoIterator = new TemplateModelIterator() {
+ @Override
public TemplateModel next() throws TemplateModelException {
try {
return fetchAndMapNextElement(lhoIterator, elementTransformer, env);
@@ -1207,6 +1231,7 @@
}
}
+ @Override
public boolean hasNext() throws TemplateModelException {
return lhoIterator.hasNext();
}
@@ -1239,6 +1264,7 @@
static class drop_whileBI extends FilterLikeBI {
+ @Override
protected TemplateModel calculateResult(
final TemplateModelIterator lhoIterator, final TemplateModel lho,
boolean lhoIsSequence, final ElementTransformer elementTransformer,
@@ -1268,6 +1294,7 @@
TemplateModel prefetchedElement;
boolean prefetchedEndOfIterator;
+ @Override
public TemplateModel next() throws TemplateModelException {
ensurePrefetchDone();
if (prefetchedEndOfIterator) {
@@ -1277,6 +1304,7 @@
return prefetchedElement;
}
+ @Override
public boolean hasNext() throws TemplateModelException {
ensurePrefetchDone();
return !prefetchedEndOfIterator;
diff --git a/src/main/java/freemarker/core/BuiltInsForStringsBasic.java b/src/main/java/freemarker/core/BuiltInsForStringsBasic.java
index 4afffb8..4ab8c40 100644
--- a/src/main/java/freemarker/core/BuiltInsForStringsBasic.java
+++ b/src/main/java/freemarker/core/BuiltInsForStringsBasic.java
@@ -81,6 +81,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 1);
return s.indexOf(getStringMethodArg(args, 0)) != -1
@@ -104,6 +105,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 1);
return s.endsWith(getStringMethodArg(args, 0)) ?
@@ -126,6 +128,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 1);
String suffix = getStringMethodArg(args, 0);
@@ -148,6 +151,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 1, 3);
@@ -197,6 +201,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
int argCnt = args.size();
checkMethodArgCount(argCnt, 1, 2);
@@ -231,6 +236,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
int argCnt = args.size();
checkMethodArgCount(argCnt, 1, 2);
@@ -276,6 +282,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
int argCnt = args.size();
checkMethodArgCount(argCnt, 1, 2);
@@ -328,6 +335,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
int argCnt = args.size();
checkMethodArgCount(argCnt, 1, 2);
@@ -371,6 +379,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
int argCnt = args.size();
checkMethodArgCount(argCnt, 1, 2);
@@ -438,6 +447,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
int argCnt = args.size();
checkMethodArgCount(argCnt, 1, 2);
@@ -487,6 +497,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 1);
String prefix = getStringMethodArg(args, 0);
@@ -509,6 +520,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 1);
String suffix = getStringMethodArg(args, 0);
@@ -530,6 +542,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
int argCnt = args.size();
checkMethodArgCount(argCnt, 1, 2);
@@ -564,6 +577,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 1);
return s.startsWith(getStringMethodArg(args, 0)) ?
@@ -583,6 +597,7 @@
TemplateModel calculateResult(final String s, final Environment env) throws TemplateException {
return new TemplateMethodModelEx() {
+ @Override
public Object exec(java.util.List args) throws TemplateModelException {
int argCount = args.size();
checkMethodArgCount(argCount, 1, 2);
@@ -647,6 +662,7 @@
@Override
TemplateModel calculateResult(final String s, final Environment env) {
return new TemplateMethodModelEx() {
+ @Override
public Object exec(java.util.List args) throws TemplateModelException {
int argCount = args.size();
checkMethodArgCount(argCount, 1, 3);
@@ -701,6 +717,7 @@
}
static class truncateBI extends AbstractTruncateBI {
+ @Override
protected TemplateModel truncate(
TruncateBuiltinAlgorithm algorithm, String s, int maxLength,
TemplateModel terminator, Integer terminatorLength, Environment env)
@@ -708,12 +725,14 @@
return algorithm.truncate(s, maxLength, (TemplateScalarModel) terminator, terminatorLength, env);
}
+ @Override
protected boolean allowMarkupTerminator() {
return false;
}
}
static class truncate_wBI extends AbstractTruncateBI {
+ @Override
protected TemplateModel truncate(
TruncateBuiltinAlgorithm algorithm, String s, int maxLength,
TemplateModel terminator, Integer terminatorLength, Environment env)
@@ -721,12 +740,14 @@
return algorithm.truncateW(s, maxLength, (TemplateScalarModel) terminator, terminatorLength, env);
}
+ @Override
protected boolean allowMarkupTerminator() {
return false;
}
}
static class truncate_cBI extends AbstractTruncateBI {
+ @Override
protected TemplateModel truncate(
TruncateBuiltinAlgorithm algorithm, String s, int maxLength,
TemplateModel terminator, Integer terminatorLength, Environment env)
@@ -734,12 +755,14 @@
return algorithm.truncateC(s, maxLength, (TemplateScalarModel) terminator, terminatorLength, env);
}
+ @Override
protected boolean allowMarkupTerminator() {
return false;
}
}
static class truncate_mBI extends AbstractTruncateBI {
+ @Override
protected TemplateModel truncate(
TruncateBuiltinAlgorithm algorithm, String s, int maxLength,
TemplateModel terminator, Integer terminatorLength, Environment env)
@@ -747,12 +770,14 @@
return algorithm.truncateM(s, maxLength, terminator, terminatorLength, env);
}
+ @Override
protected boolean allowMarkupTerminator() {
return true;
}
}
static class truncate_w_mBI extends AbstractTruncateBI {
+ @Override
protected TemplateModel truncate(
TruncateBuiltinAlgorithm algorithm, String s, int maxLength,
TemplateModel terminator, Integer terminatorLength, Environment env)
@@ -760,12 +785,14 @@
return algorithm.truncateWM(s, maxLength, terminator, terminatorLength, env);
}
+ @Override
protected boolean allowMarkupTerminator() {
return true;
}
}
static class truncate_c_mBI extends AbstractTruncateBI {
+ @Override
protected TemplateModel truncate(
TruncateBuiltinAlgorithm algorithm, String s, int maxLength,
TemplateModel terminator, Integer terminatorLength, Environment env)
@@ -773,6 +800,7 @@
return algorithm.truncateCM(s, maxLength, terminator, terminatorLength, env);
}
+ @Override
protected boolean allowMarkupTerminator() {
return true;
}
diff --git a/src/main/java/freemarker/core/BuiltInsForStringsEncoding.java b/src/main/java/freemarker/core/BuiltInsForStringsEncoding.java
index 3cfb241..f600135 100644
--- a/src/main/java/freemarker/core/BuiltInsForStringsEncoding.java
+++ b/src/main/java/freemarker/core/BuiltInsForStringsEncoding.java
@@ -49,10 +49,12 @@
return new SimpleScalar(StringUtil.XHTMLEnc(s));
}
+ @Override
public int getMinimumICIVersion() {
return _TemplateAPI.VERSION_INT_2_3_20;
}
+ @Override
public Object getPreviousICIChainMember() {
return prevICIObj;
}
@@ -164,6 +166,7 @@
protected abstract String encodeWithCharset(String cs) throws UnsupportedEncodingException;
+ @Override
public Object exec(List args) throws TemplateModelException {
parent.checkMethodArgCount(args.size(), 1);
try {
@@ -173,6 +176,7 @@
}
}
+ @Override
public String getAsString() throws TemplateModelException {
if (cachedResult == null) {
String cs = env.getEffectiveURLEscapingCharset();
diff --git a/src/main/java/freemarker/core/BuiltInsForStringsMisc.java b/src/main/java/freemarker/core/BuiltInsForStringsMisc.java
index e1bf88b..012a007 100644
--- a/src/main/java/freemarker/core/BuiltInsForStringsMisc.java
+++ b/src/main/java/freemarker/core/BuiltInsForStringsMisc.java
@@ -139,11 +139,13 @@
this.env = env;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
checkMethodArgCount(args, 1);
return resolvePath(getStringMethodArg(args, 0));
}
+ @Override
public String getAsString() throws TemplateModelException {
return resolvePath(getTemplate().getName());
}
diff --git a/src/main/java/freemarker/core/BuiltInsForStringsRegexp.java b/src/main/java/freemarker/core/BuiltInsForStringsRegexp.java
index d6d3082..eddc97c 100644
--- a/src/main/java/freemarker/core/BuiltInsForStringsRegexp.java
+++ b/src/main/java/freemarker/core/BuiltInsForStringsRegexp.java
@@ -71,6 +71,7 @@
this.matchString = matchString;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
int argCnt = args.size();
checkMethodArgCount(argCnt, 1, 2);
@@ -101,6 +102,7 @@
this.s = s;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
int argCnt = args.size();
checkMethodArgCount(argCnt, 2, 3);
@@ -149,6 +151,7 @@
}
}
+ @Override
public String getAsString() {
return matchedInputPart;
}
@@ -168,6 +171,7 @@
this.input = input;
}
+ @Override
public TemplateModel get(int i) throws TemplateModelException {
ArrayList matchingInputParts = this.matchingInputParts;
if (matchingInputParts == null) {
@@ -176,6 +180,7 @@
return (TemplateModel) matchingInputParts.get(i);
}
+ @Override
public boolean getAsBoolean() {
Boolean result = entireInputMatched;
return result != null ? result.booleanValue() : isEntrieInputMatchesAndStoreResults();
@@ -193,6 +198,7 @@
entireInputMatchGroups = new TemplateSequenceModel() {
+ @Override
public TemplateModel get(int i) throws TemplateModelException {
try {
return new SimpleScalar(firedEntireInputMatcher.group(i));
@@ -201,6 +207,7 @@
}
}
+ @Override
public int size() throws TemplateModelException {
try {
return firedEntireInputMatcher.groupCount() + 1;
@@ -235,6 +242,7 @@
return matches;
}
+ @Override
public TemplateModelIterator iterator() {
final ArrayList matchingInputParts = this.matchingInputParts;
if (matchingInputParts == null) {
@@ -244,6 +252,7 @@
private int nextIdx = 0;
boolean hasFindInfo = matcher.find();
+ @Override
public boolean hasNext() {
final ArrayList matchingInputParts = RegexMatchModel.this.matchingInputParts;
if (matchingInputParts == null) {
@@ -253,6 +262,7 @@
}
}
+ @Override
public TemplateModel next() throws TemplateModelException {
final ArrayList matchingInputParts = RegexMatchModel.this.matchingInputParts;
if (matchingInputParts == null) {
@@ -278,10 +288,12 @@
private int nextIdx = 0;
+ @Override
public boolean hasNext() {
return nextIdx < matchingInputParts.size();
}
+ @Override
public TemplateModel next() throws TemplateModelException {
try {
return (TemplateModel) matchingInputParts.get(nextIdx++);
@@ -293,6 +305,7 @@
}
}
+ @Override
public int size() throws TemplateModelException {
ArrayList matchingInputParts = this.matchingInputParts;
if (matchingInputParts == null) {
diff --git a/src/main/java/freemarker/core/BuiltinVariable.java b/src/main/java/freemarker/core/BuiltinVariable.java
index 7436dcb..5002a03 100644
--- a/src/main/java/freemarker/core/BuiltinVariable.java
+++ b/src/main/java/freemarker/core/BuiltinVariable.java
@@ -319,10 +319,12 @@
this.env = env;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
return env.getVariable(key);
}
+ @Override
public boolean isEmpty() {
return false;
}
diff --git a/src/main/java/freemarker/core/CollectionAndSequence.java b/src/main/java/freemarker/core/CollectionAndSequence.java
index 0e3f5ed..adca684 100644
--- a/src/main/java/freemarker/core/CollectionAndSequence.java
+++ b/src/main/java/freemarker/core/CollectionAndSequence.java
@@ -47,6 +47,7 @@
this.sequence = sequence;
}
+ @Override
public TemplateModelIterator iterator() throws TemplateModelException {
if (collection != null) {
return collection.iterator();
@@ -55,6 +56,7 @@
}
}
+ @Override
public TemplateModel get(int i) throws TemplateModelException {
if (sequence != null) {
return sequence.get(i);
@@ -64,6 +66,7 @@
}
}
+ @Override
public int size() throws TemplateModelException {
if (sequence != null) {
return sequence.size();
diff --git a/src/main/java/freemarker/core/CommonTemplateMarkupOutputModel.java b/src/main/java/freemarker/core/CommonTemplateMarkupOutputModel.java
index 754ddf5..0a04fce 100644
--- a/src/main/java/freemarker/core/CommonTemplateMarkupOutputModel.java
+++ b/src/main/java/freemarker/core/CommonTemplateMarkupOutputModel.java
@@ -43,6 +43,7 @@
this.markupContent = markupContent;
}
+ @Override
public abstract CommonMarkupOutputFormat<MO> getOutputFormat();
/** Maybe {@code null}, but then {@link #getMarkupContent()} isn't {@code null}. */
diff --git a/src/main/java/freemarker/core/DefaultToExpression.java b/src/main/java/freemarker/core/DefaultToExpression.java
index 245525d..b109b79 100755
--- a/src/main/java/freemarker/core/DefaultToExpression.java
+++ b/src/main/java/freemarker/core/DefaultToExpression.java
@@ -37,27 +37,35 @@
static private class EmptyStringAndSequenceAndHash implements TemplateScalarModel, TemplateSequenceModel,
TemplateHashModelEx2 {
- public String getAsString() {
+ @Override
+ public String getAsString() {
return "";
}
- public TemplateModel get(int i) {
+ @Override
+ public TemplateModel get(int i) {
return null;
}
- public TemplateModel get(String s) {
+ @Override
+ public TemplateModel get(String s) {
return null;
}
- public int size() {
+ @Override
+ public int size() {
return 0;
}
- public boolean isEmpty() {
+ @Override
+ public boolean isEmpty() {
return true;
}
- public TemplateCollectionModel keys() {
+ @Override
+ public TemplateCollectionModel keys() {
return EMPTY_COLLECTION;
}
- public TemplateCollectionModel values() {
+ @Override
+ public TemplateCollectionModel values() {
return EMPTY_COLLECTION;
}
+ @Override
public KeyValuePairIterator keyValuePairIterator() throws TemplateModelException {
return Constants.EMPTY_KEY_VALUE_PAIR_ITERATOR;
}
diff --git a/src/main/java/freemarker/core/DynamicKeyName.java b/src/main/java/freemarker/core/DynamicKeyName.java
index ccb0e7b..b651f38 100644
--- a/src/main/java/freemarker/core/DynamicKeyName.java
+++ b/src/main/java/freemarker/core/DynamicKeyName.java
@@ -335,6 +335,7 @@
private boolean elementsBeforeFirsIndexWereSkipped;
private int nextIdx;
+ @Override
public TemplateModel next() throws TemplateModelException {
ensureElementsBeforeFirstIndexWereSkipped();
if (!rightUnbounded && nextIdx > lastIdx) {
@@ -351,6 +352,7 @@
return result;
}
+ @Override
public boolean hasNext() throws TemplateModelException {
ensureElementsBeforeFirstIndexWereSkipped();
return (rightUnbounded || nextIdx <= lastIdx) && (!rightAdaptive || targetIter.hasNext());
diff --git a/src/main/java/freemarker/core/Environment.java b/src/main/java/freemarker/core/Environment.java
index 1d92161..cd4f783 100644
--- a/src/main/java/freemarker/core/Environment.java
+++ b/src/main/java/freemarker/core/Environment.java
@@ -435,11 +435,13 @@
if (outArgs.length > 0) {
pushLocalContext(new LocalContext() {
+ @Override
public TemplateModel getLocalVariable(String name) {
int index = bodyParameterNames.indexOf(name);
return index != -1 ? outArgs[index] : null;
}
+ @Override
public Collection getLocalVariableNames() {
return bodyParameterNames;
}
@@ -706,10 +708,12 @@
this.lambdaArgValue = lambdaArgValue;
}
+ @Override
public TemplateModel getLocalVariable(String name) throws TemplateModelException {
return name.equals(lambdaArgName) ? lambdaArgValue : null;
}
+ @Override
public Collection getLocalVariableNames() throws TemplateModelException {
return Collections.singleton(lambdaArgName);
}
@@ -2602,10 +2606,12 @@
public TemplateHashModel getDataModel() {
return rootDataModel instanceof TemplateHashModelEx
? new TemplateHashModelEx() {
+ @Override
public boolean isEmpty() throws TemplateModelException {
return false;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
return getDataModelOrSharedVariable(key);
}
@@ -2613,23 +2619,28 @@
// NB: The methods below do not take into account
// configuration shared variables even though
// the hash will return them, if only for BWC reasons
+ @Override
public TemplateCollectionModel values() throws TemplateModelException {
return ((TemplateHashModelEx) rootDataModel).values();
}
+ @Override
public TemplateCollectionModel keys() throws TemplateModelException {
return ((TemplateHashModelEx) rootDataModel).keys();
}
+ @Override
public int size() throws TemplateModelException {
return ((TemplateHashModelEx) rootDataModel).size();
}
}
: new TemplateHashModel() {
+ @Override
public boolean isEmpty() {
return false;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
TemplateModel value = rootDataModel.get(key);
return value != null ? value : configuration.getSharedVariable(key);
@@ -2645,10 +2656,12 @@
public TemplateHashModel getGlobalVariables() {
return new TemplateHashModel() {
+ @Override
public boolean isEmpty() {
return false;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
TemplateModel result = globalNamespace.get(key);
if (result == null) {
@@ -3206,6 +3219,7 @@
this.childBuffer = childBuffer;
}
+ @Override
public void render(Writer newOut) throws TemplateException, IOException {
Writer prevOut = out;
out = newOut;
diff --git a/src/main/java/freemarker/core/ExpressionWithFixedResult.java b/src/main/java/freemarker/core/ExpressionWithFixedResult.java
index 37aee8f..a3bd58e 100644
--- a/src/main/java/freemarker/core/ExpressionWithFixedResult.java
+++ b/src/main/java/freemarker/core/ExpressionWithFixedResult.java
@@ -34,14 +34,17 @@
this.sourceExpression = sourceExpression;
}
+ @Override
TemplateModel _eval(Environment env) throws TemplateException {
return fixedResult;
}
+ @Override
boolean isLiteral() {
return sourceExpression.isLiteral();
}
+ @Override
protected Expression deepCloneWithIdentifierReplaced_inner(String replacedIdentifier, Expression replacement,
ReplacemenetState replacementState) {
return new ExpressionWithFixedResult(
@@ -49,22 +52,27 @@
sourceExpression.deepCloneWithIdentifierReplaced(replacedIdentifier, replacement, replacementState));
}
+ @Override
public String getCanonicalForm() {
return sourceExpression.getCanonicalForm();
}
+ @Override
String getNodeTypeSymbol() {
return sourceExpression.getNodeTypeSymbol();
}
+ @Override
int getParameterCount() {
return sourceExpression.getParameterCount();
}
+ @Override
Object getParameterValue(int idx) {
return sourceExpression.getParameterValue(idx);
}
+ @Override
ParameterRole getParameterRole(int idx) {
return sourceExpression.getParameterRole(idx);
}
diff --git a/src/main/java/freemarker/core/ExtendedDecimalFormatParser.java b/src/main/java/freemarker/core/ExtendedDecimalFormatParser.java
index 8f2da0d..02e0fba 100644
--- a/src/main/java/freemarker/core/ExtendedDecimalFormatParser.java
+++ b/src/main/java/freemarker/core/ExtendedDecimalFormatParser.java
@@ -61,6 +61,7 @@
static {
HashMap<String, ParameterHandler> m = new HashMap<>();
m.put(PARAM_ROUNDING_MODE, new ParameterHandler() {
+ @Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
RoundingMode parsedValue;
@@ -91,6 +92,7 @@
}
});
ParameterHandler multiplierParamHandler = new ParameterHandler() {
+ @Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
try {
@@ -103,6 +105,7 @@
m.put(PARAM_MULTIPLIER, multiplierParamHandler);
m.put(PARAM_MULTIPIER, multiplierParamHandler);
m.put(PARAM_DECIMAL_SEPARATOR, new ParameterHandler() {
+ @Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
if (value.length() != 1) {
@@ -112,6 +115,7 @@
}
});
m.put(PARAM_MONETARY_DECIMAL_SEPARATOR, new ParameterHandler() {
+ @Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
if (value.length() != 1) {
@@ -121,6 +125,7 @@
}
});
m.put(PARAM_GROUP_SEPARATOR, new ParameterHandler() {
+ @Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
if (value.length() != 1) {
@@ -130,12 +135,14 @@
}
});
m.put(PARAM_EXPONENT_SEPARATOR, new ParameterHandler() {
+ @Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
parser.symbols.setExponentSeparator(value);
}
});
m.put(PARAM_MINUS_SIGN, new ParameterHandler() {
+ @Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
if (value.length() != 1) {
@@ -145,18 +152,21 @@
}
});
m.put(PARAM_INFINITY, new ParameterHandler() {
+ @Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
parser.symbols.setInfinity(value);
}
});
m.put(PARAM_NAN, new ParameterHandler() {
+ @Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
parser.symbols.setNaN(value);
}
});
m.put(PARAM_PERCENT, new ParameterHandler() {
+ @Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
if (value.length() != 1) {
@@ -166,6 +176,7 @@
}
});
m.put(PARAM_PER_MILL, new ParameterHandler() {
+ @Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
if (value.length() != 1) {
@@ -175,6 +186,7 @@
}
});
m.put(PARAM_ZERO_DIGIT, new ParameterHandler() {
+ @Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
if (value.length() != 1) {
@@ -184,6 +196,7 @@
}
});
m.put(PARAM_CURRENCY_CODE, new ParameterHandler() {
+ @Override
public void handle(ExtendedDecimalFormatParser parser, String value)
throws InvalidParameterValueException {
Currency currency;
diff --git a/src/main/java/freemarker/core/FreeMarkerTree.java b/src/main/java/freemarker/core/FreeMarkerTree.java
index ed2005f..6d49ea1 100644
--- a/src/main/java/freemarker/core/FreeMarkerTree.java
+++ b/src/main/java/freemarker/core/FreeMarkerTree.java
@@ -76,38 +76,47 @@
this.element = element;
}
+ @Override
public Enumeration children() {
final Enumeration e = element.children();
return new Enumeration() {
+ @Override
public boolean hasMoreElements() {
return e.hasMoreElements();
}
+ @Override
public Object nextElement() {
return getNode((TemplateElement) e.nextElement());
}
};
}
+ @Override
public boolean getAllowsChildren() {
return element.getAllowsChildren();
}
+ @Override
public TreeNode getChildAt(int childIndex) {
return getNode(element.getChildAt(childIndex));
}
+ @Override
public int getChildCount() {
return element.getChildCount();
}
+ @Override
public int getIndex(TreeNode node) {
return element.getIndex(((TemplateElementTreeNode) node).element);
}
+ @Override
public TreeNode getParent() {
return getNode(element.getParentElement());
}
+ @Override
public boolean isLeaf() {
return element.isLeaf();
}
diff --git a/src/main/java/freemarker/core/GetOptionalTemplateMethod.java b/src/main/java/freemarker/core/GetOptionalTemplateMethod.java
index c0e857d..bb4d2f1 100644
--- a/src/main/java/freemarker/core/GetOptionalTemplateMethod.java
+++ b/src/main/java/freemarker/core/GetOptionalTemplateMethod.java
@@ -64,6 +64,7 @@
this.methodName = "." + builtInVarName;
}
+ @Override
public Object exec(List args) throws TemplateModelException {
final int argCnt = args.size();
if (argCnt < 1 || argCnt > 2) {
@@ -149,6 +150,7 @@
// conveniently provided like in <@optTemp.include!myDefaultMacro />.
if (template != null) {
result.put(RESULT_INCLUDE, new TemplateDirectiveModel() {
+ @Override
public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
throws TemplateException, IOException {
if (!params.isEmpty()) {
@@ -165,6 +167,7 @@
}
});
result.put(RESULT_IMPORT, new TemplateMethodModelEx() {
+ @Override
public Object exec(List args) throws TemplateModelException {
if (!args.isEmpty()) {
throw new TemplateModelException("This method supports no parameters.");
diff --git a/src/main/java/freemarker/core/HashLiteral.java b/src/main/java/freemarker/core/HashLiteral.java
index 7a81b66..f358ba3 100644
--- a/src/main/java/freemarker/core/HashLiteral.java
+++ b/src/main/java/freemarker/core/HashLiteral.java
@@ -146,10 +146,12 @@
}
}
+ @Override
public int size() {
return size;
}
+ @Override
public TemplateCollectionModel keys() {
if (keyCollection == null) {
// This can only happen when IcI >= 2.3.21, an the map is a LinkedHashMap.
@@ -159,6 +161,7 @@
return keyCollection;
}
+ @Override
public TemplateCollectionModel values() {
if (valueCollection == null) {
// This can only happen when IcI >= 2.3.21, an the map is a LinkedHashMap.
@@ -168,10 +171,12 @@
return valueCollection;
}
+ @Override
public TemplateModel get(String key) {
return map.get(key);
}
+ @Override
public boolean isEmpty() {
return size == 0;
}
@@ -181,24 +186,29 @@
return getCanonicalForm();
}
+ @Override
public KeyValuePairIterator keyValuePairIterator() throws TemplateModelException {
return new KeyValuePairIterator() {
private final TemplateModelIterator keyIterator = keys().iterator();
private final TemplateModelIterator valueIterator = values().iterator();
+ @Override
public boolean hasNext() throws TemplateModelException {
return keyIterator.hasNext();
}
+ @Override
public KeyValuePair next() throws TemplateModelException {
return new KeyValuePair() {
private final TemplateModel key = keyIterator.next();
private final TemplateModel value = valueIterator.next();
+ @Override
public TemplateModel getKey() {
return key;
}
+ @Override
public TemplateModel getValue() {
return value;
}
diff --git a/src/main/java/freemarker/core/IntermediateStreamOperationLikeBuiltIn.java b/src/main/java/freemarker/core/IntermediateStreamOperationLikeBuiltIn.java
index d743d8d..a42d999 100644
--- a/src/main/java/freemarker/core/IntermediateStreamOperationLikeBuiltIn.java
+++ b/src/main/java/freemarker/core/IntermediateStreamOperationLikeBuiltIn.java
@@ -84,14 +84,17 @@
target.enableLazilyGeneratedResult();
}
+ @Override
protected List<Expression> getArgumentsAsList() {
return Collections.singletonList(elementTransformerExp);
}
+ @Override
protected int getArgumentsCount() {
return 1;
}
+ @Override
protected Expression getArgumentParameterValue(int argIdx) {
if (argIdx != 0) {
throw new IndexOutOfBoundsException();
@@ -103,6 +106,7 @@
return elementTransformerExp;
}
+ @Override
protected void cloneArguments(
Expression clone, String replacedIdentifier, Expression replacement, ReplacemenetState replacementState) {
try {
@@ -114,6 +118,7 @@
}
}
+ @Override
TemplateModel _eval(Environment env) throws TemplateException {
TemplateModel targetValue = target.eval(env);
@@ -186,6 +191,7 @@
this.elementTransformerExp = elementTransformerExp;
}
+ @Override
public TemplateModel transformElement(TemplateModel element, Environment env) throws TemplateException {
return elementTransformerExp.invokeLambdaDefinedFunction(element, env);
}
@@ -199,6 +205,7 @@
this.elementTransformer = elementTransformer;
}
+ @Override
public TemplateModel transformElement(TemplateModel element, Environment env)
throws TemplateModelException {
Object result = elementTransformer.exec(Collections.singletonList(element));
@@ -216,6 +223,7 @@
this.elementTransformerExp = elementTransformerExp;
}
+ @Override
public TemplateModel transformElement(TemplateModel element, Environment env) throws
TemplateException {
// #function-s were originally designed to be called from templates directly, so they expect an
diff --git a/src/main/java/freemarker/core/Interpret.java b/src/main/java/freemarker/core/Interpret.java
index 7252a2f..9b4cb41 100644
--- a/src/main/java/freemarker/core/Interpret.java
+++ b/src/main/java/freemarker/core/Interpret.java
@@ -119,6 +119,7 @@
this.template = template;
}
+ @Override
public Writer getWriter(final Writer out, Map args) throws TemplateModelException, IOException {
try {
Environment env = Environment.getCurrentEnvironment();
diff --git a/src/main/java/freemarker/core/IteratorBlock.java b/src/main/java/freemarker/core/IteratorBlock.java
index 14aac31..f9e19c9 100644
--- a/src/main/java/freemarker/core/IteratorBlock.java
+++ b/src/main/java/freemarker/core/IteratorBlock.java
@@ -452,6 +452,7 @@
return visibleLoopVarName.equals(visibleLoopVar1Name) || visibleLoopVarName.equals(loopVar2Name);
}
+ @Override
public TemplateModel getLocalVariable(String name) {
String visibleLoopVar1Name = this.visibleLoopVar1Name; // Not this.loopVar1Name!
if (visibleLoopVar1Name == null) {
@@ -487,6 +488,7 @@
return null;
}
+ @Override
public Collection<String> getLocalVariableNames() {
String visibleLoopVar1Name = this.visibleLoopVar1Name; // Not this.loopVar1Name!
if (visibleLoopVar1Name != null) {
diff --git a/src/main/java/freemarker/core/LazilyGeneratedCollectionModelWithAlreadyKnownSize.java b/src/main/java/freemarker/core/LazilyGeneratedCollectionModelWithAlreadyKnownSize.java
index 99df53f..ef8030a 100644
--- a/src/main/java/freemarker/core/LazilyGeneratedCollectionModelWithAlreadyKnownSize.java
+++ b/src/main/java/freemarker/core/LazilyGeneratedCollectionModelWithAlreadyKnownSize.java
@@ -30,10 +30,12 @@
this.size = size;
}
+ @Override
public int size() throws TemplateModelException {
return size;
}
+ @Override
public boolean isEmpty() {
return size == 0;
}
diff --git a/src/main/java/freemarker/core/LazilyGeneratedCollectionModelWithSameSizeCollEx.java b/src/main/java/freemarker/core/LazilyGeneratedCollectionModelWithSameSizeCollEx.java
index 6917273..997a002 100644
--- a/src/main/java/freemarker/core/LazilyGeneratedCollectionModelWithSameSizeCollEx.java
+++ b/src/main/java/freemarker/core/LazilyGeneratedCollectionModelWithSameSizeCollEx.java
@@ -38,10 +38,12 @@
this.sizeSourceCollEx = sizeSourceCollEx;
}
+ @Override
public int size() throws TemplateModelException {
return sizeSourceCollEx.size();
}
+ @Override
public boolean isEmpty() throws TemplateModelException {
return sizeSourceCollEx.isEmpty();
}
diff --git a/src/main/java/freemarker/core/LazilyGeneratedCollectionModelWithSameSizeSeq.java b/src/main/java/freemarker/core/LazilyGeneratedCollectionModelWithSameSizeSeq.java
index 15e7c4a..e3ee7e7 100644
--- a/src/main/java/freemarker/core/LazilyGeneratedCollectionModelWithSameSizeSeq.java
+++ b/src/main/java/freemarker/core/LazilyGeneratedCollectionModelWithSameSizeSeq.java
@@ -38,10 +38,12 @@
this.sizeSourceSeq = sizeSourceSeq;
}
+ @Override
public int size() throws TemplateModelException {
return sizeSourceSeq.size();
}
+ @Override
public boolean isEmpty() throws TemplateModelException {
return sizeSourceSeq.size() == 0;
}
diff --git a/src/main/java/freemarker/core/LazyCollectionTemplateModelIterator.java b/src/main/java/freemarker/core/LazyCollectionTemplateModelIterator.java
index aa55c26..ffad49b 100644
--- a/src/main/java/freemarker/core/LazyCollectionTemplateModelIterator.java
+++ b/src/main/java/freemarker/core/LazyCollectionTemplateModelIterator.java
@@ -36,11 +36,13 @@
this.templateCollectionModel = templateCollectionModel;
}
+ @Override
public TemplateModel next() throws TemplateModelException {
ensureIteratorInitialized();
return iterator.next();
}
+ @Override
public boolean hasNext() throws TemplateModelException {
ensureIteratorInitialized();
return iterator.hasNext();
diff --git a/src/main/java/freemarker/core/LazySequenceIterator.java b/src/main/java/freemarker/core/LazySequenceIterator.java
index 8bcf78d..277b52d 100644
--- a/src/main/java/freemarker/core/LazySequenceIterator.java
+++ b/src/main/java/freemarker/core/LazySequenceIterator.java
@@ -38,10 +38,12 @@
this.sequence = sequence;
}
+ @Override
public TemplateModel next() throws TemplateModelException {
return sequence.get(index++);
}
+ @Override
public boolean hasNext() {
if (size == null) {
try {
diff --git a/src/main/java/freemarker/core/LegacyConstructorParserConfiguration.java b/src/main/java/freemarker/core/LegacyConstructorParserConfiguration.java
index a9a1e8e..e2f51b5 100644
--- a/src/main/java/freemarker/core/LegacyConstructorParserConfiguration.java
+++ b/src/main/java/freemarker/core/LegacyConstructorParserConfiguration.java
@@ -57,30 +57,37 @@
this.arithmeticEngine = arithmeticEngine;
}
+ @Override
public int getTagSyntax() {
return tagSyntax;
}
+ @Override
public int getInterpolationSyntax() {
return interpolationSyntax;
}
+ @Override
public int getNamingConvention() {
return namingConvention;
}
+ @Override
public boolean getWhitespaceStripping() {
return whitespaceStripping;
}
+ @Override
public boolean getStrictSyntaxMode() {
return strictSyntaxMode;
}
+ @Override
public Version getIncompatibleImprovements() {
return incompatibleImprovements;
}
+ @Override
public ArithmeticEngine getArithmeticEngine() {
if (arithmeticEngine == null) {
throw new IllegalStateException();
@@ -94,6 +101,7 @@
}
}
+ @Override
public int getAutoEscapingPolicy() {
if (autoEscapingPolicy == null) {
throw new IllegalStateException();
@@ -107,6 +115,7 @@
}
}
+ @Override
public OutputFormat getOutputFormat() {
if (outputFormat == null) {
throw new IllegalStateException();
@@ -120,6 +129,7 @@
}
}
+ @Override
public boolean getRecognizeStandardFileExtensions() {
if (recognizeStandardFileExtensions == null) {
throw new IllegalStateException();
@@ -133,6 +143,7 @@
}
}
+ @Override
public int getTabSize() {
if (tabSize == null) {
throw new IllegalStateException();
diff --git a/src/main/java/freemarker/core/ListableRightUnboundedRangeModel.java b/src/main/java/freemarker/core/ListableRightUnboundedRangeModel.java
index b61cf76..c30a868 100644
--- a/src/main/java/freemarker/core/ListableRightUnboundedRangeModel.java
+++ b/src/main/java/freemarker/core/ListableRightUnboundedRangeModel.java
@@ -38,10 +38,12 @@
super(begin);
}
+ @Override
public int size() throws TemplateModelException {
return Integer.MAX_VALUE;
}
+ @Override
public TemplateModelIterator iterator() throws TemplateModelException {
return new TemplateModelIterator() {
boolean needInc;
@@ -50,6 +52,7 @@
long nextLong;
BigInteger nextBigInteger;
+ @Override
public TemplateModel next() throws TemplateModelException {
if (needInc) {
switch (nextType) {
@@ -82,6 +85,7 @@
: new SimpleNumber(nextBigInteger));
}
+ @Override
public boolean hasNext() throws TemplateModelException {
return true;
}
diff --git a/src/main/java/freemarker/core/LocalLambdaExpression.java b/src/main/java/freemarker/core/LocalLambdaExpression.java
index 852a934..95a8438 100644
--- a/src/main/java/freemarker/core/LocalLambdaExpression.java
+++ b/src/main/java/freemarker/core/LocalLambdaExpression.java
@@ -52,6 +52,7 @@
return "->";
}
+ @Override
TemplateModel _eval(Environment env) throws TemplateException {
throw new TemplateException("Can't get lambda expression as a value: Lambdas currently can only be used on a " +
"few special places.",
diff --git a/src/main/java/freemarker/core/Macro.java b/src/main/java/freemarker/core/Macro.java
index 0279a65..31d621e 100644
--- a/src/main/java/freemarker/core/Macro.java
+++ b/src/main/java/freemarker/core/Macro.java
@@ -399,6 +399,7 @@
} // if (argsSpecVarDraft != null)
}
+ @Override
public TemplateModel getLocalVariable(String name) throws TemplateModelException {
return localVars.get(name);
}
@@ -414,6 +415,7 @@
localVars.put(name, var);
}
+ @Override
public Collection getLocalVariableNames() throws TemplateModelException {
HashSet result = new HashSet();
for (TemplateModelIterator it = localVars.keys().iterator(); it.hasNext(); ) {
diff --git a/src/main/java/freemarker/core/MiscUtil.java b/src/main/java/freemarker/core/MiscUtil.java
index 505edb4..b6a2677 100644
--- a/src/main/java/freemarker/core/MiscUtil.java
+++ b/src/main/java/freemarker/core/MiscUtil.java
@@ -43,6 +43,7 @@
ArrayList res = new ArrayList(map.entrySet());
Collections.sort(res,
new Comparator() { // for sorting to source code order
+ @Override
public int compare(Object o1, Object o2) {
Map.Entry ent1 = (Map.Entry) o1;
Expression exp1 = (Expression) ent1.getValue();
diff --git a/src/main/java/freemarker/core/NewBI.java b/src/main/java/freemarker/core/NewBI.java
index 5d86a85..fa76168 100644
--- a/src/main/java/freemarker/core/NewBI.java
+++ b/src/main/java/freemarker/core/NewBI.java
@@ -73,6 +73,7 @@
}
}
+ @Override
public Object exec(List arguments) throws TemplateModelException {
ObjectWrapper ow = env.getObjectWrapper();
BeansWrapper bw =
diff --git a/src/main/java/freemarker/core/NonListableRightUnboundedRangeModel.java b/src/main/java/freemarker/core/NonListableRightUnboundedRangeModel.java
index b03d8f4..3808cff 100644
--- a/src/main/java/freemarker/core/NonListableRightUnboundedRangeModel.java
+++ b/src/main/java/freemarker/core/NonListableRightUnboundedRangeModel.java
@@ -32,6 +32,7 @@
super(begin);
}
+ @Override
public int size() throws TemplateModelException {
return 0;
}
diff --git a/src/main/java/freemarker/core/NumberLiteral.java b/src/main/java/freemarker/core/NumberLiteral.java
index b2a58d0..2be737f 100644
--- a/src/main/java/freemarker/core/NumberLiteral.java
+++ b/src/main/java/freemarker/core/NumberLiteral.java
@@ -46,6 +46,7 @@
return env.formatNumberToPlainText(this, this, false);
}
+ @Override
public Number getAsNumber() {
return value;
}
diff --git a/src/main/java/freemarker/core/OptInTemplateClassResolver.java b/src/main/java/freemarker/core/OptInTemplateClassResolver.java
index 94dd4e9..b0e606a 100644
--- a/src/main/java/freemarker/core/OptInTemplateClassResolver.java
+++ b/src/main/java/freemarker/core/OptInTemplateClassResolver.java
@@ -88,6 +88,7 @@
}
}
+ @Override
public Class resolve(String className, Environment env, Template template)
throws TemplateException {
String templateName = safeGetTemplateName(template);
diff --git a/src/main/java/freemarker/core/RangeModel.java b/src/main/java/freemarker/core/RangeModel.java
index e4f55a2..d7cdeec 100644
--- a/src/main/java/freemarker/core/RangeModel.java
+++ b/src/main/java/freemarker/core/RangeModel.java
@@ -36,6 +36,7 @@
return begin;
}
+ @Override
final public TemplateModel get(int index) throws TemplateModelException {
if (index < 0 || index >= size()) {
throw new _TemplateModelException("Range item index ", Integer.valueOf(index), " is out of bounds.");
diff --git a/src/main/java/freemarker/core/SequenceIterator.java b/src/main/java/freemarker/core/SequenceIterator.java
index 3c8e84a..02bd0bd 100644
--- a/src/main/java/freemarker/core/SequenceIterator.java
+++ b/src/main/java/freemarker/core/SequenceIterator.java
@@ -34,10 +34,12 @@
this.size = sequence.size();
}
+ @Override
public TemplateModel next() throws TemplateModelException {
return sequence.get(index++);
}
+ @Override
public boolean hasNext() {
return index < size;
}
diff --git a/src/main/java/freemarker/core/SingleIterationCollectionModel.java b/src/main/java/freemarker/core/SingleIterationCollectionModel.java
index f8e8471..fcde865 100644
--- a/src/main/java/freemarker/core/SingleIterationCollectionModel.java
+++ b/src/main/java/freemarker/core/SingleIterationCollectionModel.java
@@ -39,6 +39,7 @@
this.iterator = iterator;
}
+ @Override
public TemplateModelIterator iterator() throws TemplateModelException {
if (iterator == null) {
throw new IllegalStateException(
diff --git a/src/main/java/freemarker/core/StringArraySequence.java b/src/main/java/freemarker/core/StringArraySequence.java
index 740172d..7bc1d5b 100644
--- a/src/main/java/freemarker/core/StringArraySequence.java
+++ b/src/main/java/freemarker/core/StringArraySequence.java
@@ -40,6 +40,7 @@
this.stringArray = stringArray;
}
+ @Override
public TemplateModel get(int index) {
if (array == null) {
array = new TemplateScalarModel[stringArray.length];
@@ -52,6 +53,7 @@
return result;
}
+ @Override
public int size() {
return stringArray.length;
}
diff --git a/src/main/java/freemarker/core/StringLiteral.java b/src/main/java/freemarker/core/StringLiteral.java
index c116498..87507ec 100644
--- a/src/main/java/freemarker/core/StringLiteral.java
+++ b/src/main/java/freemarker/core/StringLiteral.java
@@ -133,6 +133,7 @@
}
}
+ @Override
public String getAsString() {
return value;
}
diff --git a/src/main/java/freemarker/core/TemplateClassResolver.java b/src/main/java/freemarker/core/TemplateClassResolver.java
index 67c5720..c8a6b48 100644
--- a/src/main/java/freemarker/core/TemplateClassResolver.java
+++ b/src/main/java/freemarker/core/TemplateClassResolver.java
@@ -44,6 +44,7 @@
*/
TemplateClassResolver UNRESTRICTED_RESOLVER = new TemplateClassResolver() {
+ @Override
public Class resolve(String className, Environment env, Template template)
throws TemplateException {
try {
@@ -61,6 +62,7 @@
*/
TemplateClassResolver SAFER_RESOLVER = new TemplateClassResolver() {
+ @Override
public Class resolve(String className, Environment env, Template template)
throws TemplateException {
if (className.equals(ObjectConstructor.class.getName())
@@ -82,6 +84,7 @@
*/
TemplateClassResolver ALLOWS_NOTHING_RESOLVER = new TemplateClassResolver() {
+ @Override
public Class resolve(String className, Environment env, Template template)
throws TemplateException {
throw _MessageUtil.newInstantiatingClassNotAllowedException(className, env);
diff --git a/src/main/java/freemarker/core/TemplateConfiguration.java b/src/main/java/freemarker/core/TemplateConfiguration.java
index 84f46ea..92cc671 100644
--- a/src/main/java/freemarker/core/TemplateConfiguration.java
+++ b/src/main/java/freemarker/core/TemplateConfiguration.java
@@ -411,6 +411,7 @@
/**
* The getter pair of {@link #setTagSyntax(int)}.
*/
+ @Override
public int getTagSyntax() {
return tagSyntax != null ? tagSyntax.intValue() : getNonNullParentConfiguration().getTagSyntax();
}
@@ -433,6 +434,7 @@
/**
* The getter pair of {@link #setInterpolationSyntax(int)}.
*/
+ @Override
public int getInterpolationSyntax() {
return interpolationSyntax != null ? interpolationSyntax.intValue()
: getNonNullParentConfiguration().getInterpolationSyntax();
@@ -456,6 +458,7 @@
/**
* The getter pair of {@link #setNamingConvention(int)}.
*/
+ @Override
public int getNamingConvention() {
return namingConvention != null ? namingConvention.intValue()
: getNonNullParentConfiguration().getNamingConvention();
@@ -478,6 +481,7 @@
/**
* The getter pair of {@link #getWhitespaceStripping()}.
*/
+ @Override
public boolean getWhitespaceStripping() {
return whitespaceStripping != null ? whitespaceStripping.booleanValue()
: getNonNullParentConfiguration().getWhitespaceStripping();
@@ -501,6 +505,7 @@
/**
* The getter pair of {@link #setAutoEscapingPolicy(int)}.
*/
+ @Override
public int getAutoEscapingPolicy() {
return autoEscapingPolicy != null ? autoEscapingPolicy.intValue()
: getNonNullParentConfiguration().getAutoEscapingPolicy();
@@ -524,6 +529,7 @@
/**
* The getter pair of {@link #setOutputFormat(OutputFormat)}.
*/
+ @Override
public OutputFormat getOutputFormat() {
return outputFormat != null ? outputFormat : getNonNullParentConfiguration().getOutputFormat();
}
@@ -545,6 +551,7 @@
/**
* Getter pair of {@link #setRecognizeStandardFileExtensions(boolean)}.
*/
+ @Override
public boolean getRecognizeStandardFileExtensions() {
return recognizeStandardFileExtensions != null ? recognizeStandardFileExtensions.booleanValue()
: getNonNullParentConfiguration().getRecognizeStandardFileExtensions();
@@ -567,6 +574,7 @@
/**
* The getter pair of {@link #setStrictSyntaxMode(boolean)}.
*/
+ @Override
public boolean getStrictSyntaxMode() {
return strictSyntaxMode != null ? strictSyntaxMode.booleanValue()
: getNonNullParentConfiguration().getStrictSyntaxMode();
@@ -625,6 +633,7 @@
*
* @since 2.3.25
*/
+ @Override
public int getTabSize() {
return tabSize != null ? tabSize.intValue()
: getNonNullParentConfiguration().getTabSize();
@@ -646,6 +655,7 @@
* @throws IllegalStateException
* If the parent configuration wasn't yet set.
*/
+ @Override
public Version getIncompatibleImprovements() {
return getNonNullParentConfiguration().getIncompatibleImprovements();
}
diff --git a/src/main/java/freemarker/core/UnifiedCall.java b/src/main/java/freemarker/core/UnifiedCall.java
index 739021e..5f2d0ba 100644
--- a/src/main/java/freemarker/core/UnifiedCall.java
+++ b/src/main/java/freemarker/core/UnifiedCall.java
@@ -250,6 +250,7 @@
return res;
}
+ @Override
@SuppressFBWarnings(value={ "IS2_INCONSISTENT_SYNC", "DC_DOUBLECHECK" }, justification="Performance tricks")
public Object getOrCreateCustomData(Object providerIdentity, ObjectFactory objectFactory)
throws CallPlaceCustomDataInitializationException {
@@ -299,6 +300,7 @@
return customDataHolder;
}
+ @Override
public boolean isNestedOutputCacheable() {
return isChildrenOutputCacheable();
}
diff --git a/src/main/java/freemarker/core/_ArrayEnumeration.java b/src/main/java/freemarker/core/_ArrayEnumeration.java
index 6bb57ba..70d7983 100644
--- a/src/main/java/freemarker/core/_ArrayEnumeration.java
+++ b/src/main/java/freemarker/core/_ArrayEnumeration.java
@@ -35,10 +35,12 @@
this.nextIndex = 0;
}
+ @Override
public boolean hasMoreElements() {
return nextIndex < size;
}
+ @Override
public Object nextElement() {
if (nextIndex >= size) {
throw new NoSuchElementException();
diff --git a/src/main/java/freemarker/core/_ArrayIterator.java b/src/main/java/freemarker/core/_ArrayIterator.java
index 4e5a4f6..f7cca25 100644
--- a/src/main/java/freemarker/core/_ArrayIterator.java
+++ b/src/main/java/freemarker/core/_ArrayIterator.java
@@ -33,10 +33,12 @@
this.nextIndex = 0;
}
+ @Override
public boolean hasNext() {
return nextIndex < array.length;
}
+ @Override
public Object next() {
if (nextIndex >= array.length) {
throw new NoSuchElementException();
@@ -44,6 +46,7 @@
return array[nextIndex++];
}
+ @Override
public void remove() {
throw new UnsupportedOperationException();
}
diff --git a/src/main/java/freemarker/core/_Java8Impl.java b/src/main/java/freemarker/core/_Java8Impl.java
index fa8b528..a25e0f3 100644
--- a/src/main/java/freemarker/core/_Java8Impl.java
+++ b/src/main/java/freemarker/core/_Java8Impl.java
@@ -34,6 +34,7 @@
// Not meant to be instantiated
}
+ @Override
public boolean isDefaultMethod(Method method) {
return method.isDefault();
}
diff --git a/src/main/java/freemarker/core/_ParserConfigurationWithInheritedFormat.java b/src/main/java/freemarker/core/_ParserConfigurationWithInheritedFormat.java
index 72152ce..82d20a0 100644
--- a/src/main/java/freemarker/core/_ParserConfigurationWithInheritedFormat.java
+++ b/src/main/java/freemarker/core/_ParserConfigurationWithInheritedFormat.java
@@ -36,46 +36,57 @@
this.wrappedPCfg = wrappedPCfg;
}
+ @Override
public boolean getWhitespaceStripping() {
return wrappedPCfg.getWhitespaceStripping();
}
+ @Override
public int getTagSyntax() {
return wrappedPCfg.getTagSyntax();
}
+ @Override
public int getInterpolationSyntax() {
return wrappedPCfg.getInterpolationSyntax();
}
+ @Override
public boolean getStrictSyntaxMode() {
return wrappedPCfg.getStrictSyntaxMode();
}
+ @Override
public OutputFormat getOutputFormat() {
return outputFormat != null ? outputFormat : wrappedPCfg.getOutputFormat();
}
+ @Override
public boolean getRecognizeStandardFileExtensions() {
return false;
}
+ @Override
public int getNamingConvention() {
return wrappedPCfg.getNamingConvention();
}
+ @Override
public Version getIncompatibleImprovements() {
return wrappedPCfg.getIncompatibleImprovements();
}
+ @Override
public int getAutoEscapingPolicy() {
return autoEscapingPolicy != null ? autoEscapingPolicy.intValue() : wrappedPCfg.getAutoEscapingPolicy();
}
+ @Override
public ArithmeticEngine getArithmeticEngine() {
return wrappedPCfg.getArithmeticEngine();
}
+ @Override
public int getTabSize() {
return wrappedPCfg.getTabSize();
}
diff --git a/src/main/java/freemarker/core/_UnmodifiableCompositeSet.java b/src/main/java/freemarker/core/_UnmodifiableCompositeSet.java
index da98830..e3b82ab 100644
--- a/src/main/java/freemarker/core/_UnmodifiableCompositeSet.java
+++ b/src/main/java/freemarker/core/_UnmodifiableCompositeSet.java
@@ -52,6 +52,7 @@
private Iterator<E> it1, it2;
private boolean it1Deplected;
+ @Override
public boolean hasNext() {
if (!it1Deplected) {
if (it1 == null) {
@@ -69,6 +70,7 @@
return it2.hasNext();
}
+ @Override
public E next() {
if (!it1Deplected) {
if (it1 == null) {
@@ -86,6 +88,7 @@
return it2.next();
}
+ @Override
public void remove() {
throw new UnsupportedOperationException();
}
diff --git a/src/main/java/freemarker/debug/Breakpoint.java b/src/main/java/freemarker/debug/Breakpoint.java
index 8766500..f572d89 100644
--- a/src/main/java/freemarker/debug/Breakpoint.java
+++ b/src/main/java/freemarker/debug/Breakpoint.java
@@ -67,6 +67,7 @@
return false;
}
+ @Override
public int compareTo(Object o) {
Breakpoint b = (Breakpoint) o;
int r = templateName.compareTo(b.templateName);
diff --git a/src/main/java/freemarker/debug/DebuggerClient.java b/src/main/java/freemarker/debug/DebuggerClient.java
index 49e1340..86c5954 100644
--- a/src/main/java/freemarker/debug/DebuggerClient.java
+++ b/src/main/java/freemarker/debug/DebuggerClient.java
@@ -91,11 +91,13 @@
this.remoteDebugger = remoteDebugger;
}
+ @Override
public void addBreakpoint(Breakpoint breakpoint) throws RemoteException {
remoteDebugger.addBreakpoint(breakpoint);
}
- public Object addDebuggerListener(DebuggerListener listener)
+ @Override
+ public Object addDebuggerListener(DebuggerListener listener)
throws RemoteException {
if (listener instanceof RemoteObject) {
return remoteDebugger.addDebuggerListener(listener);
@@ -106,30 +108,37 @@
}
}
+ @Override
public List getBreakpoints() throws RemoteException {
return remoteDebugger.getBreakpoints();
}
+ @Override
public List getBreakpoints(String templateName) throws RemoteException {
return remoteDebugger.getBreakpoints(templateName);
}
+ @Override
public Collection getSuspendedEnvironments() throws RemoteException {
return remoteDebugger.getSuspendedEnvironments();
}
+ @Override
public void removeBreakpoint(Breakpoint breakpoint) throws RemoteException {
remoteDebugger.removeBreakpoint(breakpoint);
}
+ @Override
public void removeBreakpoints(String templateName) throws RemoteException {
remoteDebugger.removeBreakpoints(templateName);
}
+ @Override
public void removeBreakpoints() throws RemoteException {
remoteDebugger.removeBreakpoints();
}
+ @Override
public void removeDebuggerListener(Object id) throws RemoteException {
remoteDebugger.removeDebuggerListener(id);
}
diff --git a/src/main/java/freemarker/debug/impl/DebuggerServer.java b/src/main/java/freemarker/debug/impl/DebuggerServer.java
index c98715a..24fef1d 100644
--- a/src/main/java/freemarker/debug/impl/DebuggerServer.java
+++ b/src/main/java/freemarker/debug/impl/DebuggerServer.java
@@ -62,6 +62,7 @@
public void start() {
new Thread(new Runnable()
{
+ @Override
public void run() {
startInternal();
}
@@ -87,6 +88,7 @@
this.s = s;
}
+ @Override
public void run() {
try {
ObjectOutputStream out = new ObjectOutputStream(s.getOutputStream());
diff --git a/src/main/java/freemarker/debug/impl/RmiDebugModelImpl.java b/src/main/java/freemarker/debug/impl/RmiDebugModelImpl.java
index dd009b2..54dd7c8 100644
--- a/src/main/java/freemarker/debug/impl/RmiDebugModelImpl.java
+++ b/src/main/java/freemarker/debug/impl/RmiDebugModelImpl.java
@@ -58,26 +58,32 @@
private static DebugModel getDebugModel(TemplateModel tm) throws RemoteException {
return (DebugModel) RmiDebuggedEnvironmentImpl.getCachedWrapperFor(tm);
}
+ @Override
public String getAsString() throws TemplateModelException {
return ((TemplateScalarModel) model).getAsString();
}
+ @Override
public Number getAsNumber() throws TemplateModelException {
return ((TemplateNumberModel) model).getAsNumber();
}
+ @Override
public Date getAsDate() throws TemplateModelException {
return ((TemplateDateModel) model).getAsDate();
}
+ @Override
public int getDateType() {
return ((TemplateDateModel) model).getDateType();
}
+ @Override
public boolean getAsBoolean() throws TemplateModelException {
return ((TemplateBooleanModel) model).getAsBoolean();
}
+ @Override
public int size() throws TemplateModelException {
if (model instanceof TemplateSequenceModel) {
return ((TemplateSequenceModel) model).size();
@@ -85,10 +91,12 @@
return ((TemplateHashModelEx) model).size();
}
+ @Override
public DebugModel get(int index) throws TemplateModelException, RemoteException {
return getDebugModel(((TemplateSequenceModel) model).get(index));
}
+ @Override
public DebugModel[] get(int fromIndex, int toIndex) throws TemplateModelException, RemoteException {
DebugModel[] dm = new DebugModel[toIndex - fromIndex];
TemplateSequenceModel s = (TemplateSequenceModel) model;
@@ -98,6 +106,7 @@
return dm;
}
+ @Override
public DebugModel[] getCollection() throws TemplateModelException, RemoteException {
List list = new ArrayList();
TemplateModelIterator i = ((TemplateCollectionModel) model).iterator();
@@ -107,10 +116,12 @@
return (DebugModel[]) list.toArray(new DebugModel[list.size()]);
}
+ @Override
public DebugModel get(String key) throws TemplateModelException, RemoteException {
return getDebugModel(((TemplateHashModel) model).get(key));
}
+ @Override
public DebugModel[] get(String[] keys) throws TemplateModelException, RemoteException {
DebugModel[] dm = new DebugModel[keys.length];
TemplateHashModel h = (TemplateHashModel) model;
@@ -120,6 +131,7 @@
return dm;
}
+ @Override
public String[] keys() throws TemplateModelException {
TemplateHashModelEx h = (TemplateHashModelEx) model;
List list = new ArrayList();
@@ -130,6 +142,7 @@
return (String[]) list.toArray(new String[list.size()]);
}
+ @Override
public int getModelTypes() {
return type;
}
diff --git a/src/main/java/freemarker/debug/impl/RmiDebuggedEnvironmentImpl.java b/src/main/java/freemarker/debug/impl/RmiDebuggedEnvironmentImpl.java
index d80bedf..8719fcb 100644
--- a/src/main/java/freemarker/debug/impl/RmiDebuggedEnvironmentImpl.java
+++ b/src/main/java/freemarker/debug/impl/RmiDebuggedEnvironmentImpl.java
@@ -106,6 +106,7 @@
}
// TODO See in SuppressFBWarnings
+ @Override
@SuppressFBWarnings(value="NN_NAKED_NOTIFY", justification="Will have to be re-desigend; postponed.")
public void resume() {
synchronized (this) {
@@ -113,11 +114,13 @@
}
}
+ @Override
public void stop() {
stopped = true;
resume();
}
+ @Override
public long getId() {
return id;
}
@@ -127,14 +130,17 @@
}
private abstract static class DebugMapModel implements TemplateHashModelEx {
+ @Override
public int size() {
return keySet().size();
}
+ @Override
public TemplateCollectionModel keys() {
return new SimpleCollection(keySet());
}
+ @Override
public TemplateCollectionModel values() throws TemplateModelException {
Collection keys = keySet();
List list = new ArrayList(keys.size());
@@ -145,6 +151,7 @@
return new SimpleCollection(list);
}
+ @Override
public boolean isEmpty() {
return size() == 0;
}
@@ -182,6 +189,7 @@
return KEYS;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
String s = configurable.getSetting(key);
return s == null ? null : new SimpleScalar(s);
@@ -199,6 +207,7 @@
return ((Configuration) configurable).getSharedVariableNames();
}
+ @Override
public TemplateModel get(String key) {
return ((Configuration) configurable).getSharedVariable(key);
}
@@ -280,6 +289,7 @@
}
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
return ((Environment) configurable).getVariable(key);
}
diff --git a/src/main/java/freemarker/debug/impl/RmiDebuggerImpl.java b/src/main/java/freemarker/debug/impl/RmiDebuggerImpl.java
index 48d9848..db14ada 100644
--- a/src/main/java/freemarker/debug/impl/RmiDebuggerImpl.java
+++ b/src/main/java/freemarker/debug/impl/RmiDebuggerImpl.java
@@ -43,38 +43,47 @@
this.service = service;
}
+ @Override
public void addBreakpoint(Breakpoint breakpoint) {
service.addBreakpoint(breakpoint);
}
+ @Override
public Object addDebuggerListener(DebuggerListener listener) {
return service.addDebuggerListener(listener);
}
+ @Override
public List getBreakpoints() {
return service.getBreakpointsSpi();
}
+ @Override
public List getBreakpoints(String templateName) {
return service.getBreakpointsSpi(templateName);
}
+ @Override
public Collection getSuspendedEnvironments() {
return service.getSuspendedEnvironments();
}
+ @Override
public void removeBreakpoint(Breakpoint breakpoint) {
service.removeBreakpoint(breakpoint);
}
+ @Override
public void removeDebuggerListener(Object id) {
service.removeDebuggerListener(id);
}
+ @Override
public void removeBreakpoints() {
service.removeBreakpoints();
}
+ @Override
public void removeBreakpoints(String templateName) {
service.removeBreakpoints(templateName);
}
diff --git a/src/main/java/freemarker/debug/impl/RmiDebuggerListenerImpl.java b/src/main/java/freemarker/debug/impl/RmiDebuggerListenerImpl.java
index eb3041e..a99a2a3 100644
--- a/src/main/java/freemarker/debug/impl/RmiDebuggerListenerImpl.java
+++ b/src/main/java/freemarker/debug/impl/RmiDebuggerListenerImpl.java
@@ -44,6 +44,7 @@
private final DebuggerListener listener;
+ @Override
public void unreferenced() {
try {
UnicastRemoteObject.unexportObject(this, false);
@@ -57,7 +58,8 @@
this.listener = listener;
}
- public void environmentSuspended(EnvironmentSuspendedEvent e)
+ @Override
+ public void environmentSuspended(EnvironmentSuspendedEvent e)
throws RemoteException {
listener.environmentSuspended(e);
}
diff --git a/src/main/java/freemarker/ext/ant/UnlinkedJythonOperationsImpl.java b/src/main/java/freemarker/ext/ant/UnlinkedJythonOperationsImpl.java
index 71a9a48..21584a0 100644
--- a/src/main/java/freemarker/ext/ant/UnlinkedJythonOperationsImpl.java
+++ b/src/main/java/freemarker/ext/ant/UnlinkedJythonOperationsImpl.java
@@ -32,11 +32,13 @@
*/
public class UnlinkedJythonOperationsImpl implements UnlinkedJythonOperations {
+ @Override
public void execute(String script, Map vars) throws BuildException {
PythonInterpreter pi = createInterpreter(vars);
pi.exec(script);
}
+ @Override
public void execute(File file, Map vars) throws BuildException {
PythonInterpreter pi = createInterpreter(vars);
try {
diff --git a/src/main/java/freemarker/ext/beans/ArrayModel.java b/src/main/java/freemarker/ext/beans/ArrayModel.java
index fc92e22..22ea149 100644
--- a/src/main/java/freemarker/ext/beans/ArrayModel.java
+++ b/src/main/java/freemarker/ext/beans/ArrayModel.java
@@ -43,6 +43,7 @@
static final ModelFactory FACTORY =
new ModelFactory()
{
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new ArrayModel(object, (BeansWrapper) wrapper);
}
@@ -69,10 +70,12 @@
}
+ @Override
public TemplateModelIterator iterator() {
return new Iterator();
}
+ @Override
public TemplateModel get(int index)
throws TemplateModelException {
try {
@@ -89,20 +92,24 @@
TemplateModelIterator {
private int position = 0;
+ @Override
public boolean hasNext() {
return position < length;
}
+ @Override
public TemplateModel get(int index)
throws TemplateModelException {
return ArrayModel.this.get(index);
}
+ @Override
public TemplateModel next()
throws TemplateModelException {
return position < length ? get(position++) : null;
}
+ @Override
public int size() {
return ArrayModel.this.size();
}
diff --git a/src/main/java/freemarker/ext/beans/BeanModel.java b/src/main/java/freemarker/ext/beans/BeanModel.java
index 6a8bd01..e7d0baa 100644
--- a/src/main/java/freemarker/ext/beans/BeanModel.java
+++ b/src/main/java/freemarker/ext/beans/BeanModel.java
@@ -72,6 +72,7 @@
static final ModelFactory FACTORY =
new ModelFactory()
{
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new BeanModel(object, (BeansWrapper) wrapper);
}
@@ -137,6 +138,7 @@
* @throws TemplateModelException if there was no property nor method nor
* a generic <tt>get</tt> method to invoke.
*/
+ @Override
public TemplateModel get(String key)
throws TemplateModelException {
Class<?> clazz = object.getClass();
@@ -286,6 +288,7 @@
* Tells whether the model is empty. It is empty if either the wrapped
* object is null, or it's a Boolean with false value.
*/
+ @Override
public boolean isEmpty() {
if (object instanceof String) {
return ((String) object).length() == 0;
@@ -306,22 +309,27 @@
* Returns the same as {@link #getWrappedObject()}; to ensure that, this method will be final starting from 2.4.
* This behavior of {@link BeanModel} is assumed by some FreeMarker code.
*/
+ @Override
public Object getAdaptedObject(Class<?> hint) {
return object; // return getWrappedObject(); starting from 2.4
}
+ @Override
public Object getWrappedObject() {
return object;
}
+ @Override
public int size() {
return wrapper.getClassIntrospector().keyCount(object.getClass());
}
+ @Override
public TemplateCollectionModel keys() {
return new CollectionAndSequence(new SimpleSequence(keySet(), wrapper));
}
+ @Override
public TemplateCollectionModel values() throws TemplateModelException {
List<Object> values = new ArrayList<>(size());
TemplateModelIterator it = keys().iterator();
@@ -363,6 +371,7 @@
return wrapper.getClassIntrospector().keySet(object.getClass());
}
+ @Override
public TemplateModel getAPI() throws TemplateModelException {
return wrapper.wrapAsAPI(object);
}
diff --git a/src/main/java/freemarker/ext/beans/BeansWrapper.java b/src/main/java/freemarker/ext/beans/BeansWrapper.java
index d72dadc..c321558 100644
--- a/src/main/java/freemarker/ext/beans/BeansWrapper.java
+++ b/src/main/java/freemarker/ext/beans/BeansWrapper.java
@@ -330,6 +330,7 @@
bwConf = (BeansWrapperConfiguration) bwConf.clone(false);
bwConf.setMethodAppearanceFineTuner(new MethodAppearanceFineTuner() {
+ @Override
public void process(
MethodAppearanceDecisionInput in, MethodAppearanceDecision out) {
BeansWrapper.this.finetuneMethodAppearance(in.getContainingClass(), in.getMethod(), out);
@@ -403,6 +404,7 @@
*
* @since 2.3.21
*/
+ @Override
public void writeProtect() {
writeProtected = true;
}
@@ -410,6 +412,7 @@
/**
* @since 2.3.21
*/
+ @Override
public boolean isWriteProtected() {
return writeProtected;
}
@@ -929,6 +932,7 @@
* <li>otherwise, returns a generic {@link StringModel} for it.
* </ul>
*/
+ @Override
public TemplateModel wrap(Object object) throws TemplateModelException {
if (object == null) return nullModel;
return modelCache.getInstance(object);
@@ -955,6 +959,7 @@
/**
* @since 2.3.22
*/
+ @Override
public TemplateHashModel wrapAsAPI(Object obj) throws TemplateModelException {
return new APIModel(obj, this);
}
@@ -972,18 +977,21 @@
}
private final ModelFactory BOOLEAN_FACTORY = new ModelFactory() {
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return ((Boolean) object).booleanValue() ? trueModel : falseModel;
}
};
private static final ModelFactory ITERATOR_FACTORY = new ModelFactory() {
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new IteratorModel((Iterator<?>) object, (BeansWrapper) wrapper);
}
};
private static final ModelFactory ENUMERATION_FACTORY = new ModelFactory() {
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new EnumerationModel((Enumeration<?>) object, (BeansWrapper) wrapper);
}
@@ -1033,6 +1041,7 @@
* returned unchanged.
* @throws TemplateModelException if an attempted unwrapping fails.
*/
+ @Override
public Object unwrap(TemplateModel model) throws TemplateModelException {
return unwrap(model, Object.class);
}
@@ -1063,6 +1072,7 @@
/**
* @since 2.3.22
*/
+ @Override
public Object tryUnwrapTo(TemplateModel model, Class<?> targetClass) throws TemplateModelException {
return tryUnwrapTo(model, targetClass, 0);
}
diff --git a/src/main/java/freemarker/ext/beans/BeansWrapperBuilder.java b/src/main/java/freemarker/ext/beans/BeansWrapperBuilder.java
index b369e3f..b9a812e 100644
--- a/src/main/java/freemarker/ext/beans/BeansWrapperBuilder.java
+++ b/src/main/java/freemarker/ext/beans/BeansWrapperBuilder.java
@@ -122,6 +122,7 @@
private static final BeansWrapperFactory INSTANCE = new BeansWrapperFactory();
+ @Override
public BeansWrapper create(BeansWrapperConfiguration bwConf) {
return new BeansWrapper(bwConf, true);
}
diff --git a/src/main/java/freemarker/ext/beans/BooleanModel.java b/src/main/java/freemarker/ext/beans/BooleanModel.java
index 016a221..2f43c97 100644
--- a/src/main/java/freemarker/ext/beans/BooleanModel.java
+++ b/src/main/java/freemarker/ext/beans/BooleanModel.java
@@ -33,6 +33,7 @@
value = bool.booleanValue();
}
+ @Override
public boolean getAsBoolean() {
return value;
}
diff --git a/src/main/java/freemarker/ext/beans/ClassBasedModelFactory.java b/src/main/java/freemarker/ext/beans/ClassBasedModelFactory.java
index 4d5f009..be79db1 100644
--- a/src/main/java/freemarker/ext/beans/ClassBasedModelFactory.java
+++ b/src/main/java/freemarker/ext/beans/ClassBasedModelFactory.java
@@ -44,6 +44,7 @@
this.wrapper = wrapper;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
try {
return getInternal(key);
@@ -133,6 +134,7 @@
}
}
+ @Override
public boolean isEmpty() {
return false;
}
diff --git a/src/main/java/freemarker/ext/beans/CollectionAdapter.java b/src/main/java/freemarker/ext/beans/CollectionAdapter.java
index efe1c42..8c1e5b9 100644
--- a/src/main/java/freemarker/ext/beans/CollectionAdapter.java
+++ b/src/main/java/freemarker/ext/beans/CollectionAdapter.java
@@ -42,6 +42,7 @@
this.wrapper = wrapper;
}
+ @Override
public TemplateModel getTemplateModel() {
return model;
}
@@ -57,6 +58,7 @@
return new Iterator() {
final TemplateModelIterator i = model.iterator();
+ @Override
public boolean hasNext() {
try {
return i.hasNext();
@@ -65,6 +67,7 @@
}
}
+ @Override
public Object next() {
try {
return wrapper.unwrap(i.next());
@@ -73,6 +76,7 @@
}
}
+ @Override
public void remove() {
throw new UnsupportedOperationException();
}
diff --git a/src/main/java/freemarker/ext/beans/CollectionModel.java b/src/main/java/freemarker/ext/beans/CollectionModel.java
index ba79cb2..c86d84d 100644
--- a/src/main/java/freemarker/ext/beans/CollectionModel.java
+++ b/src/main/java/freemarker/ext/beans/CollectionModel.java
@@ -44,6 +44,7 @@
static final ModelFactory FACTORY =
new ModelFactory()
{
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new CollectionModel((Collection) object, (BeansWrapper) wrapper);
}
@@ -67,6 +68,7 @@
* @throws TemplateModelException if the index is out of bounds, or the
* underlying collection is not a List.
*/
+ @Override
public TemplateModel get(int index)
throws TemplateModelException {
// Don't forget to keep getSupportsIndexedAccess in sync with this!
@@ -95,6 +97,7 @@
return object instanceof List;
}
+ @Override
public TemplateModelIterator iterator() {
return new IteratorModel(((Collection) object).iterator(), wrapper);
}
diff --git a/src/main/java/freemarker/ext/beans/DateModel.java b/src/main/java/freemarker/ext/beans/DateModel.java
index aeca3f5..276701e 100644
--- a/src/main/java/freemarker/ext/beans/DateModel.java
+++ b/src/main/java/freemarker/ext/beans/DateModel.java
@@ -39,6 +39,7 @@
static final ModelFactory FACTORY =
new ModelFactory()
{
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new DateModel((Date) object, (BeansWrapper) wrapper);
}
@@ -67,10 +68,12 @@
}
}
+ @Override
public Date getAsDate() {
return (Date) object;
}
+ @Override
public int getDateType() {
return type;
}
diff --git a/src/main/java/freemarker/ext/beans/DefaultMemberAccessPolicy.java b/src/main/java/freemarker/ext/beans/DefaultMemberAccessPolicy.java
index 076dac8..5f0b26c 100644
--- a/src/main/java/freemarker/ext/beans/DefaultMemberAccessPolicy.java
+++ b/src/main/java/freemarker/ext/beans/DefaultMemberAccessPolicy.java
@@ -172,6 +172,7 @@
return whitelist;
}
+ @Override
public ClassMemberAccessPolicy forClass(Class<?> contextClass) {
if (isTypeWithWhitelistRule(contextClass)) {
return whitelistMemberAccessPolicy.forClass(contextClass);
diff --git a/src/main/java/freemarker/ext/beans/EnumerationModel.java b/src/main/java/freemarker/ext/beans/EnumerationModel.java
index fc34c50..75888bb 100644
--- a/src/main/java/freemarker/ext/beans/EnumerationModel.java
+++ b/src/main/java/freemarker/ext/beans/EnumerationModel.java
@@ -61,6 +61,7 @@
* This allows the enumeration to be used in a <tt><#list></tt> block.
* @return "this"
*/
+ @Override
public TemplateModelIterator iterator() throws TemplateModelException {
synchronized (this) {
if (accessed) {
@@ -76,6 +77,7 @@
/**
* Calls underlying {@link Enumeration#nextElement()}.
*/
+ @Override
public boolean hasNext() {
return ((Enumeration) object).hasMoreElements();
}
@@ -84,6 +86,7 @@
/**
* Calls underlying {@link Enumeration#nextElement()} and wraps the result.
*/
+ @Override
public TemplateModel next()
throws TemplateModelException {
try {
diff --git a/src/main/java/freemarker/ext/beans/HashAdapter.java b/src/main/java/freemarker/ext/beans/HashAdapter.java
index 7d20e44..f4f58a0 100644
--- a/src/main/java/freemarker/ext/beans/HashAdapter.java
+++ b/src/main/java/freemarker/ext/beans/HashAdapter.java
@@ -45,6 +45,7 @@
this.wrapper = wrapper;
}
+ @Override
public TemplateModel getTemplateModel() {
return model;
}
@@ -100,6 +101,7 @@
throw new UndeclaredThrowableException(e);
}
return new Iterator() {
+ @Override
public boolean hasNext() {
try {
return i.hasNext();
@@ -108,6 +110,7 @@
}
}
+ @Override
public Object next() {
final Object key;
try {
@@ -116,14 +119,17 @@
throw new UndeclaredThrowableException(e);
}
return new Map.Entry() {
+ @Override
public Object getKey() {
return key;
}
+ @Override
public Object getValue() {
return get(key);
}
+ @Override
public Object setValue(Object value) {
throw new UnsupportedOperationException();
}
@@ -153,6 +159,7 @@
};
}
+ @Override
public void remove() {
throw new UnsupportedOperationException();
}
diff --git a/src/main/java/freemarker/ext/beans/IteratorModel.java b/src/main/java/freemarker/ext/beans/IteratorModel.java
index f21f641..e7aec98 100644
--- a/src/main/java/freemarker/ext/beans/IteratorModel.java
+++ b/src/main/java/freemarker/ext/beans/IteratorModel.java
@@ -65,6 +65,7 @@
* This allows the iterator to be used in a <tt><#list></tt> block.
* @return "this"
*/
+ @Override
public TemplateModelIterator iterator() throws TemplateModelException {
synchronized (this) {
if (accessed) {
@@ -80,6 +81,7 @@
/**
* Calls underlying {@link Iterator#hasNext()}.
*/
+ @Override
public boolean hasNext() {
return ((Iterator) object).hasNext();
}
@@ -88,6 +90,7 @@
/**
* Calls underlying {@link Iterator#next()} and wraps the result.
*/
+ @Override
public TemplateModel next()
throws TemplateModelException {
try {
diff --git a/src/main/java/freemarker/ext/beans/JRebelClassChangeNotifier.java b/src/main/java/freemarker/ext/beans/JRebelClassChangeNotifier.java
index 21a39df..2cf81fe 100644
--- a/src/main/java/freemarker/ext/beans/JRebelClassChangeNotifier.java
+++ b/src/main/java/freemarker/ext/beans/JRebelClassChangeNotifier.java
@@ -30,6 +30,7 @@
ReloaderFactory.getInstance();
}
+ @Override
public void subscribe(ClassIntrospector classIntrospector) {
ReloaderFactory.getInstance().addClassReloadListener(
new ClassIntrospectorCacheInvalidator(classIntrospector));
@@ -43,6 +44,7 @@
ref = new WeakReference(w);
}
+ @Override
public void onClassEvent(int eventType, Class pClass) {
ClassIntrospector ci = (ClassIntrospector) ref.get();
if (ci == null) {
diff --git a/src/main/java/freemarker/ext/beans/LegacyDefaultMemberAccessPolicy.java b/src/main/java/freemarker/ext/beans/LegacyDefaultMemberAccessPolicy.java
index ee78292..adff8c2 100644
--- a/src/main/java/freemarker/ext/beans/LegacyDefaultMemberAccessPolicy.java
+++ b/src/main/java/freemarker/ext/beans/LegacyDefaultMemberAccessPolicy.java
@@ -85,6 +85,7 @@
private LegacyDefaultMemberAccessPolicy() {
}
+ @Override
public ClassMemberAccessPolicy forClass(Class<?> containingClass) {
return CLASS_MEMBER_ACCESS_POLICY_INSTANCE;
}
@@ -98,14 +99,17 @@
= new BlacklistClassMemberAccessPolicy();
private static class BlacklistClassMemberAccessPolicy implements ClassMemberAccessPolicy {
+ @Override
public boolean isMethodExposed(Method method) {
return !UNSAFE_METHODS.contains(method);
}
+ @Override
public boolean isConstructorExposed(Constructor<?> constructor) {
return true;
}
+ @Override
public boolean isFieldExposed(Field field) {
return true;
}
diff --git a/src/main/java/freemarker/ext/beans/MapModel.java b/src/main/java/freemarker/ext/beans/MapModel.java
index c672f49..7bb8105 100644
--- a/src/main/java/freemarker/ext/beans/MapModel.java
+++ b/src/main/java/freemarker/ext/beans/MapModel.java
@@ -50,6 +50,7 @@
static final ModelFactory FACTORY =
new ModelFactory()
{
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new MapModel((Map) object, (BeansWrapper) wrapper);
}
@@ -70,6 +71,7 @@
/**
* The first argument is used as a key to call the map's <tt>get</tt> method.
*/
+ @Override
public Object exec(List arguments)
throws TemplateModelException {
Object key = unwrap((TemplateModel) arguments.get(0));
diff --git a/src/main/java/freemarker/ext/beans/MemberSelectorListMemberAccessPolicy.java b/src/main/java/freemarker/ext/beans/MemberSelectorListMemberAccessPolicy.java
index f7e2216..2ed2fd4 100644
--- a/src/main/java/freemarker/ext/beans/MemberSelectorListMemberAccessPolicy.java
+++ b/src/main/java/freemarker/ext/beans/MemberSelectorListMemberAccessPolicy.java
@@ -328,8 +328,10 @@
}
}
+ @Override
public final ClassMemberAccessPolicy forClass(final Class<?> contextClass) {
return new ClassMemberAccessPolicy() {
+ @Override
public boolean isMethodExposed(Method method) {
return matchResultToIsExposedResult(
methodMatcher.matches(contextClass, method)
@@ -338,6 +340,7 @@
!= null);
}
+ @Override
public boolean isConstructorExposed(Constructor<?> constructor) {
return matchResultToIsExposedResult(
constructorMatcher.matches(contextClass, constructor)
@@ -346,6 +349,7 @@
!= null);
}
+ @Override
public boolean isFieldExposed(Field field) {
return matchResultToIsExposedResult(
fieldMatcher.matches(contextClass, field)
diff --git a/src/main/java/freemarker/ext/beans/NumberModel.java b/src/main/java/freemarker/ext/beans/NumberModel.java
index 4e6e679..c3b6449 100644
--- a/src/main/java/freemarker/ext/beans/NumberModel.java
+++ b/src/main/java/freemarker/ext/beans/NumberModel.java
@@ -37,6 +37,7 @@
static final ModelFactory FACTORY =
new ModelFactory()
{
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new NumberModel((Number) object, (BeansWrapper) wrapper);
}
@@ -53,6 +54,7 @@
super(number, wrapper);
}
+ @Override
public Number getAsNumber() {
return (Number) object;
}
diff --git a/src/main/java/freemarker/ext/beans/OverloadedMethodsModel.java b/src/main/java/freemarker/ext/beans/OverloadedMethodsModel.java
index 9fe4362..fc53dde 100644
--- a/src/main/java/freemarker/ext/beans/OverloadedMethodsModel.java
+++ b/src/main/java/freemarker/ext/beans/OverloadedMethodsModel.java
@@ -54,6 +54,7 @@
* @throws TemplateModelException if the method cannot be chosen
* unambiguously.
*/
+ @Override
public Object exec(List arguments)
throws TemplateModelException {
MemberAndArguments maa = overloadedMethods.getMemberAndArguments(arguments, wrapper);
@@ -69,11 +70,13 @@
}
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return (TemplateModel) exec(Collections.singletonList(
new SimpleNumber(Integer.valueOf(index))));
}
+ @Override
public int size() throws TemplateModelException {
throw new TemplateModelException("?size is unsupported for " + getClass().getName());
}
diff --git a/src/main/java/freemarker/ext/beans/OverloadedNumberUtil.java b/src/main/java/freemarker/ext/beans/OverloadedNumberUtil.java
index fbb2fc0..243a935 100644
--- a/src/main/java/freemarker/ext/beans/OverloadedNumberUtil.java
+++ b/src/main/java/freemarker/ext/beans/OverloadedNumberUtil.java
@@ -383,6 +383,7 @@
// We have to implement this, so that if a potential matching method expects a Comparable, which is implemented
// by all the supported numerical types, the "Or" type will be a match.
+ @Override
public int compareTo(Object o) {
Number n = getSourceNumber();
if (n instanceof Comparable) {
diff --git a/src/main/java/freemarker/ext/beans/ResourceBundleModel.java b/src/main/java/freemarker/ext/beans/ResourceBundleModel.java
index f6ff899..4b2b0fb 100644
--- a/src/main/java/freemarker/ext/beans/ResourceBundleModel.java
+++ b/src/main/java/freemarker/ext/beans/ResourceBundleModel.java
@@ -60,6 +60,7 @@
static final ModelFactory FACTORY =
new ModelFactory()
{
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new ResourceBundleModel((ResourceBundle) object, (BeansWrapper) wrapper);
}
@@ -116,6 +117,7 @@
* with this key, then applies a MessageFormat.format on the string with the
* rest of the arguments. The created MessageFormats are cached for later reuse.
*/
+ @Override
public Object exec(List arguments)
throws TemplateModelException {
// Must have at least one argument - the key
diff --git a/src/main/java/freemarker/ext/beans/SequenceAdapter.java b/src/main/java/freemarker/ext/beans/SequenceAdapter.java
index 340a754..48655da 100644
--- a/src/main/java/freemarker/ext/beans/SequenceAdapter.java
+++ b/src/main/java/freemarker/ext/beans/SequenceAdapter.java
@@ -38,6 +38,7 @@
this.wrapper = wrapper;
}
+ @Override
public TemplateModel getTemplateModel() {
return model;
}
diff --git a/src/main/java/freemarker/ext/beans/SimpleMapModel.java b/src/main/java/freemarker/ext/beans/SimpleMapModel.java
index 587888c..03690f1 100644
--- a/src/main/java/freemarker/ext/beans/SimpleMapModel.java
+++ b/src/main/java/freemarker/ext/beans/SimpleMapModel.java
@@ -50,6 +50,7 @@
static final ModelFactory FACTORY =
new ModelFactory()
{
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new SimpleMapModel((Map) object, (BeansWrapper) wrapper);
}
@@ -62,6 +63,7 @@
this.map = map;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
Object val = map.get(key);
if (val == null) {
@@ -79,6 +81,7 @@
return wrap(val);
}
+ @Override
public Object exec(List args) throws TemplateModelException {
Object key = ((BeansWrapper) getObjectWrapper()).unwrap((TemplateModel) args.get(0));
Object value = map.get(key);
@@ -88,34 +91,42 @@
return wrap(value);
}
+ @Override
public boolean isEmpty() {
return map.isEmpty();
}
+ @Override
public int size() {
return map.size();
}
+ @Override
public TemplateCollectionModel keys() {
return new CollectionAndSequence(new SimpleSequence(map.keySet(), getObjectWrapper()));
}
+ @Override
public TemplateCollectionModel values() {
return new CollectionAndSequence(new SimpleSequence(map.values(), getObjectWrapper()));
}
+ @Override
public KeyValuePairIterator keyValuePairIterator() {
return new MapKeyValuePairIterator(map, getObjectWrapper());
}
+ @Override
public Object getAdaptedObject(Class hint) {
return map;
}
+ @Override
public Object getWrappedObject() {
return map;
}
+ @Override
public TemplateModel getAPI() throws TemplateModelException {
return ((RichObjectWrapper) getObjectWrapper()).wrapAsAPI(map);
}
diff --git a/src/main/java/freemarker/ext/beans/SimpleMethodModel.java b/src/main/java/freemarker/ext/beans/SimpleMethodModel.java
index 9b8150b..d38ab06 100644
--- a/src/main/java/freemarker/ext/beans/SimpleMethodModel.java
+++ b/src/main/java/freemarker/ext/beans/SimpleMethodModel.java
@@ -66,6 +66,7 @@
/**
* Invokes the method, passing it the arguments from the list.
*/
+ @Override
public Object exec(List arguments)
throws TemplateModelException {
try {
@@ -78,11 +79,13 @@
}
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return (TemplateModel) exec(Collections.singletonList(
new SimpleNumber(Integer.valueOf(index))));
}
+ @Override
public int size() throws TemplateModelException {
throw new _TemplateModelException(
new _ErrorDescriptionBuilder(
@@ -103,6 +106,7 @@
/**
* Implementation of experimental interface; don't use it, no backward compatibility guarantee!
*/
+ @Override
public Object[] explainTypeError(Class[] expectedClasses) {
final Member member = getMember();
if (!(member instanceof Method)) {
diff --git a/src/main/java/freemarker/ext/beans/StaticModel.java b/src/main/java/freemarker/ext/beans/StaticModel.java
index f2f182f..bfbccb9 100644
--- a/src/main/java/freemarker/ext/beans/StaticModel.java
+++ b/src/main/java/freemarker/ext/beans/StaticModel.java
@@ -56,6 +56,7 @@
* Returns the field or method named by the <tt>key</tt>
* parameter.
*/
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
Object model = map.get(key);
// Simple method, overloaded method or final field -- these have cached
@@ -80,18 +81,22 @@
* Returns true if there is at least one public static
* field or method in the underlying class.
*/
+ @Override
public boolean isEmpty() {
return map.isEmpty();
}
+ @Override
public int size() {
return map.size();
}
+ @Override
public TemplateCollectionModel keys() throws TemplateModelException {
return (TemplateCollectionModel) wrapper.getOuterIdentity().wrap(map.keySet());
}
+ @Override
public TemplateCollectionModel values() throws TemplateModelException {
return (TemplateCollectionModel) wrapper.getOuterIdentity().wrap(map.values());
}
diff --git a/src/main/java/freemarker/ext/beans/StringModel.java b/src/main/java/freemarker/ext/beans/StringModel.java
index 37a4923..b53872d 100644
--- a/src/main/java/freemarker/ext/beans/StringModel.java
+++ b/src/main/java/freemarker/ext/beans/StringModel.java
@@ -34,6 +34,7 @@
static final ModelFactory FACTORY =
new ModelFactory()
{
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new StringModel(object, (BeansWrapper) wrapper);
}
diff --git a/src/main/java/freemarker/ext/dom/AttributeNodeModel.java b/src/main/java/freemarker/ext/dom/AttributeNodeModel.java
index 0575cc3..2ae1740 100644
--- a/src/main/java/freemarker/ext/dom/AttributeNodeModel.java
+++ b/src/main/java/freemarker/ext/dom/AttributeNodeModel.java
@@ -30,10 +30,12 @@
super(att);
}
+ @Override
public String getAsString() {
return ((Attr) node).getValue();
}
+ @Override
public String getNodeName() {
String result = node.getLocalName();
if (result == null || result.equals("")) {
@@ -42,6 +44,7 @@
return result;
}
+ @Override
public boolean isEmpty() {
return true;
}
diff --git a/src/main/java/freemarker/ext/dom/CharacterDataNodeModel.java b/src/main/java/freemarker/ext/dom/CharacterDataNodeModel.java
index 6f6c53a..42d3f32 100644
--- a/src/main/java/freemarker/ext/dom/CharacterDataNodeModel.java
+++ b/src/main/java/freemarker/ext/dom/CharacterDataNodeModel.java
@@ -30,14 +30,17 @@
super(text);
}
+ @Override
public String getAsString() {
return ((org.w3c.dom.CharacterData) node).getData();
}
+ @Override
public String getNodeName() {
return (node instanceof Comment) ? "@comment" : "@text";
}
+ @Override
public boolean isEmpty() {
return true;
}
diff --git a/src/main/java/freemarker/ext/dom/DocumentModel.java b/src/main/java/freemarker/ext/dom/DocumentModel.java
index 63783dd..2bf75b8 100644
--- a/src/main/java/freemarker/ext/dom/DocumentModel.java
+++ b/src/main/java/freemarker/ext/dom/DocumentModel.java
@@ -40,6 +40,7 @@
super(doc);
}
+ @Override
public String getNodeName() {
return "@document";
}
@@ -69,6 +70,7 @@
return rootElement;
}
+ @Override
public boolean isEmpty() {
return false;
}
diff --git a/src/main/java/freemarker/ext/dom/DocumentTypeModel.java b/src/main/java/freemarker/ext/dom/DocumentTypeModel.java
index 5a52231..7ce0053 100644
--- a/src/main/java/freemarker/ext/dom/DocumentTypeModel.java
+++ b/src/main/java/freemarker/ext/dom/DocumentTypeModel.java
@@ -45,10 +45,12 @@
throw new TemplateModelException("accessing properties of a DTD is not currently supported");
}
+ @Override
public String getNodeName() {
return "@document_type$" + node.getNodeName();
}
+ @Override
public boolean isEmpty() {
return true;
}
diff --git a/src/main/java/freemarker/ext/dom/ElementModel.java b/src/main/java/freemarker/ext/dom/ElementModel.java
index 3f140c1..0975352 100644
--- a/src/main/java/freemarker/ext/dom/ElementModel.java
+++ b/src/main/java/freemarker/ext/dom/ElementModel.java
@@ -40,6 +40,7 @@
super(element);
}
+ @Override
public boolean isEmpty() {
return false;
}
@@ -127,6 +128,7 @@
}
}
+ @Override
public String getAsString() throws TemplateModelException {
NodeList nl = node.getChildNodes();
String result = "";
@@ -146,6 +148,7 @@
return result;
}
+ @Override
public String getNodeName() {
String result = node.getLocalName();
if (result == null || result.equals("")) {
diff --git a/src/main/java/freemarker/ext/dom/JaxenXPathSupport.java b/src/main/java/freemarker/ext/dom/JaxenXPathSupport.java
index eda4b87..77b35ab 100644
--- a/src/main/java/freemarker/ext/dom/JaxenXPathSupport.java
+++ b/src/main/java/freemarker/ext/dom/JaxenXPathSupport.java
@@ -76,6 +76,7 @@
// [2.4] Can't we just use Collections.emptyList()?
private final static ArrayList EMPTY_ARRAYLIST = new ArrayList();
+ @Override
public TemplateModel executeQuery(Object context, String xpathQuery) throws TemplateModelException {
try {
BaseXPath xpath;
@@ -111,6 +112,7 @@
static private final NamespaceContext customNamespaceContext = new NamespaceContext() {
+ @Override
public String translateNamespacePrefixToUri(String prefix) {
if (prefix.equals(Template.DEFAULT_NAMESPACE_PREFIX)) {
return Environment.getCurrentEnvironment().getDefaultNS();
@@ -120,6 +122,7 @@
};
private static final VariableContext FM_VARIABLE_CONTEXT = new VariableContext() {
+ @Override
public Object getVariableValue(String namespaceURI, String prefix, String localName)
throws UnresolvableException {
try {
@@ -222,6 +225,7 @@
private static class FmEntityResolver implements EntityResolver {
private int callCount = 0;
+ @Override
public InputSource resolveEntity(String publicId, String systemId)
throws SAXException, IOException {
++callCount;
diff --git a/src/main/java/freemarker/ext/dom/NodeListModel.java b/src/main/java/freemarker/ext/dom/NodeListModel.java
index fdd5d0e..700f43b 100644
--- a/src/main/java/freemarker/ext/dom/NodeListModel.java
+++ b/src/main/java/freemarker/ext/dom/NodeListModel.java
@@ -58,6 +58,7 @@
XPathSupport xpathSupport;
private static final ObjectWrapper NODE_WRAPPER = new ObjectWrapper() {
+ @Override
public TemplateModel wrap(Object obj) {
if (obj instanceof NodeModel) {
return (NodeModel) obj;
@@ -114,10 +115,12 @@
return result;
}
+ @Override
public boolean isEmpty() {
return size() == 0;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
int size = size();
if (size == 1) {
@@ -200,6 +203,7 @@
return xpathSupport;
}
+ @Override
public Object[] explainTypeError(Class[] expectedClasses) {
for (int i = 0; i < expectedClasses.length; i++) {
Class expectedClass = expectedClasses[i];
diff --git a/src/main/java/freemarker/ext/dom/NodeModel.java b/src/main/java/freemarker/ext/dom/NodeModel.java
index 720cb35..d2bb2b4 100644
--- a/src/main/java/freemarker/ext/dom/NodeModel.java
+++ b/src/main/java/freemarker/ext/dom/NodeModel.java
@@ -297,6 +297,7 @@
return node;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
if (key.startsWith("@@")) {
if (key.equals(AtAtKey.TEXT.getKey())) {
@@ -343,6 +344,7 @@
}
}
+ @Override
public TemplateNodeModel getParentNode() {
if (parent == null) {
Node parentNode = node.getParentNode();
@@ -356,14 +358,17 @@
return parent;
}
+ @Override
public TemplateNodeModelEx getPreviousSibling() throws TemplateModelException {
return wrap(node.getPreviousSibling());
}
+ @Override
public TemplateNodeModelEx getNextSibling() throws TemplateModelException {
return wrap(node.getNextSibling());
}
+ @Override
public TemplateSequenceModel getChildNodes() {
if (children == null) {
children = new NodeListModel(node.getChildNodes(), this);
@@ -371,6 +376,7 @@
return children;
}
+ @Override
public final String getNodeType() throws TemplateModelException {
short nodeType = node.getNodeType();
switch (nodeType) {
@@ -406,14 +412,17 @@
/**
* Always returns 1.
*/
+ @Override
public final int size() {
return 1;
}
+ @Override
public final TemplateModel get(int i) {
return i == 0 ? this : null;
}
+ @Override
public String getNodeNamespace() {
int nodeType = node.getNodeType();
if (nodeType != Node.ATTRIBUTE_NODE && nodeType != Node.ELEMENT_NODE) {
@@ -756,14 +765,17 @@
return getNodeName();
}
+ @Override
public Object getAdaptedObject(Class hint) {
return node;
}
+ @Override
public Object getWrappedObject() {
return node;
}
+ @Override
public Object[] explainTypeError(Class[] expectedClasses) {
for (int i = 0; i < expectedClasses.length; i++) {
Class expectedClass = expectedClasses[i];
diff --git a/src/main/java/freemarker/ext/dom/PINodeModel.java b/src/main/java/freemarker/ext/dom/PINodeModel.java
index 1e7e8a3..b5cfd3a 100644
--- a/src/main/java/freemarker/ext/dom/PINodeModel.java
+++ b/src/main/java/freemarker/ext/dom/PINodeModel.java
@@ -29,14 +29,17 @@
super(pi);
}
+ @Override
public String getAsString() {
return ((ProcessingInstruction) node).getData();
}
+ @Override
public String getNodeName() {
return "@pi$" + ((ProcessingInstruction) node).getTarget();
}
+ @Override
public boolean isEmpty() {
return true;
}
diff --git a/src/main/java/freemarker/ext/dom/SunInternalXalanXPathSupport.java b/src/main/java/freemarker/ext/dom/SunInternalXalanXPathSupport.java
index e184ac9..1198fbb 100644
--- a/src/main/java/freemarker/ext/dom/SunInternalXalanXPathSupport.java
+++ b/src/main/java/freemarker/ext/dom/SunInternalXalanXPathSupport.java
@@ -54,6 +54,7 @@
private XPathContext xpathContext = new XPathContext();
+ @Override
synchronized public TemplateModel executeQuery(Object context, String xpathQuery) throws TemplateModelException {
if (!(context instanceof Node)) {
if (context == null || isNodeList(context)) {
@@ -110,10 +111,12 @@
private static final PrefixResolver CUSTOM_PREFIX_RESOLVER = new PrefixResolver() {
+ @Override
public String getNamespaceForPrefix(String prefix, Node node) {
return getNamespaceForPrefix(prefix);
}
+ @Override
public String getNamespaceForPrefix(String prefix) {
if (prefix.equals(Template.DEFAULT_NAMESPACE_PREFIX)) {
return Environment.getCurrentEnvironment().getDefaultNS();
@@ -121,10 +124,12 @@
return Environment.getCurrentEnvironment().getNamespaceForPrefix(prefix);
}
+ @Override
public String getBaseIdentifier() {
return null;
}
+ @Override
public boolean handlesNullPrefixes() {
return false;
}
diff --git a/src/main/java/freemarker/ext/dom/XalanXPathSupport.java b/src/main/java/freemarker/ext/dom/XalanXPathSupport.java
index 59ec81c..aa3ec7d 100644
--- a/src/main/java/freemarker/ext/dom/XalanXPathSupport.java
+++ b/src/main/java/freemarker/ext/dom/XalanXPathSupport.java
@@ -50,6 +50,7 @@
private XPathContext xpathContext = new XPathContext();
+ @Override
synchronized public TemplateModel executeQuery(Object context, String xpathQuery) throws TemplateModelException {
if (!(context instanceof Node)) {
if (context == null || isNodeList(context)) {
@@ -105,10 +106,12 @@
private static final PrefixResolver CUSTOM_PREFIX_RESOLVER = new PrefixResolver() {
+ @Override
public String getNamespaceForPrefix(String prefix, Node node) {
return getNamespaceForPrefix(prefix);
}
+ @Override
public String getNamespaceForPrefix(String prefix) {
if (prefix.equals(Template.DEFAULT_NAMESPACE_PREFIX)) {
return Environment.getCurrentEnvironment().getDefaultNS();
@@ -116,10 +119,12 @@
return Environment.getCurrentEnvironment().getNamespaceForPrefix(prefix);
}
+ @Override
public String getBaseIdentifier() {
return null;
}
+ @Override
public boolean handlesNullPrefixes() {
return false;
}
diff --git a/src/main/java/freemarker/ext/jdom/NodeListModel.java b/src/main/java/freemarker/ext/jdom/NodeListModel.java
index ef44832..7e963f7 100644
--- a/src/main/java/freemarker/ext/jdom/NodeListModel.java
+++ b/src/main/java/freemarker/ext/jdom/NodeListModel.java
@@ -182,6 +182,7 @@
/**
* Returns true if this model contains no nodes.
*/
+ @Override
public boolean isEmpty() {
return nodes.isEmpty();
}
@@ -193,6 +194,7 @@
* simplifies creating XML-transformation templates, as to output a node contained
* in variable x as XML fragment, you simply write ${x} in the template.
*/
+ @Override
public String getAsString()
throws TemplateModelException {
if (isEmpty())
@@ -347,6 +349,7 @@
* @param key a key that identifies a required set of nodes
* @return a new NodeListModel that represents the requested set of nodes.
*/
+ @Override
public TemplateModel get(String key)
throws TemplateModelException {
if (isEmpty())
@@ -483,15 +486,18 @@
return new SimpleScalar(buf.toString());
}
+ @Override
public TemplateModelIterator iterator() {
return new TemplateModelIterator()
{
private final Iterator it = nodes.iterator();
+ @Override
public TemplateModel next() {
return it.hasNext() ? new NodeListModel(it.next(), namespaces) : null;
}
+ @Override
public boolean hasNext() {
return it.hasNext();
}
@@ -501,6 +507,7 @@
/**
* Retrieves the i-th element of the node list.
*/
+ @Override
public TemplateModel get(int i)
throws TemplateModelException {
try {
@@ -510,6 +517,7 @@
}
}
+ @Override
public int size() {
return nodes.size();
}
@@ -531,6 +539,7 @@
* @return a NodeListModel representing the nodes that are the result of application
* of the XPath to the current node list.
*/
+ @Override
public Object exec(List arguments)
throws TemplateModelException {
if (arguments == null || arguments.size() != 1)
@@ -594,6 +603,7 @@
}
private static final class AllChildrenOp implements NodeOperator {
+ @Override
public List operate(Object node) {
if (node instanceof Element)
return((Element) node).getChildren();
@@ -612,6 +622,7 @@
}
private static final class NamedChildrenOp implements NamedNodeOperator {
+ @Override
public List operate(Object node, String localName, Namespace namespace) {
if (node instanceof Element) {
return((Element) node).getChildren(localName, namespace);
@@ -635,6 +646,7 @@
}
private static final class AllAttributesOp implements NodeOperator {
+ @Override
public List operate(Object node) {
// With 2.1 semantics it makes more sense to just return a null and let the core
// throw an InvalidReferenceException and the template writer can use ?exists etcetera. (JR)
@@ -650,6 +662,7 @@
}
private static final class NamedAttributeOp implements NamedNodeOperator {
+ @Override
public List operate(Object node, String localName, Namespace namespace) {
Attribute attr = null;
if (node instanceof Element) {
@@ -686,6 +699,7 @@
}
private static final class NameOp implements NodeOperator {
+ @Override
public List operate(Object node) {
if (node instanceof Element)
return Collections.singletonList(((Element) node).getName());
@@ -706,6 +720,7 @@
}
private static final class QNameOp implements NodeOperator {
+ @Override
public List operate(Object node) {
if (node instanceof Element)
return Collections.singletonList(((Element) node).getQualifiedName());
@@ -719,6 +734,7 @@
}
private static final class NamespaceUriOp implements NodeOperator {
+ @Override
public List operate(Object node) {
if (node instanceof Element)
return Collections.singletonList(((Element) node).getNamespace().getURI());
@@ -732,6 +748,7 @@
}
private static final class NamespacePrefixOp implements NodeOperator {
+ @Override
public List operate(Object node) {
if (node instanceof Element)
return Collections.singletonList(((Element) node).getNamespace().getPrefix());
@@ -745,6 +762,7 @@
}
private static final class CanonicalNameOp implements NodeOperator {
+ @Override
public List operate(Object node) {
if (node instanceof Element) {
Element element = (Element) node;
@@ -782,6 +800,7 @@
}
private static final class ParentOp implements NodeOperator {
+ @Override
public List operate(Object node) {
Element parent = getParent(node);
return parent == null ? Collections.EMPTY_LIST : Collections.singletonList(parent);
@@ -789,6 +808,7 @@
}
private static final class AncestorOp implements NodeOperator {
+ @Override
public List operate(Object node) {
Element parent = getParent(node);
if (parent == null) return Collections.EMPTY_LIST;
@@ -802,6 +822,7 @@
}
private static final class AncestorOrSelfOp implements NodeOperator {
+ @Override
public List operate(Object node) {
Element parent = getParent(node);
if (parent == null) return Collections.singletonList(node);
@@ -816,6 +837,7 @@
}
private static class DescendantOp implements NodeOperator {
+ @Override
public List operate(Object node) {
LinkedList list = new LinkedList();
if (node instanceof Element) {
@@ -854,6 +876,7 @@
}
private static final class DocumentOp implements NodeOperator {
+ @Override
public List operate(Object node) {
Document doc = null;
if (node instanceof Element)
@@ -883,6 +906,7 @@
}
private static final class DocTypeOp implements NodeOperator {
+ @Override
public List operate(Object node) {
if (node instanceof Document) {
DocType doctype = ((Document) node).getDocType();
@@ -896,6 +920,7 @@
}
private static final class ContentOp implements NodeOperator {
+ @Override
public List operate(Object node) {
if (node instanceof Element)
return((Element) node).getContent();
@@ -909,6 +934,7 @@
}
private static final class TextOp implements NodeOperator {
+ @Override
public List operate(Object node) {
if (node instanceof Element)
return Collections.singletonList(((Element) node).getTextTrim());
@@ -1043,6 +1069,7 @@
return false;
}
+ @Override
public Object exec(List arguments)
throws TemplateModelException {
if (arguments.size() != 2)
@@ -1059,6 +1086,7 @@
return false;
}
+ @Override
public Object exec(List arguments) {
Set names = new HashSet(arguments);
List list = new LinkedList(nodes);
@@ -1089,6 +1117,7 @@
return false;
}
+ @Override
public Object exec(List arguments)
throws TemplateModelException {
if (arguments == null || arguments.size() == 0)
@@ -1186,6 +1215,7 @@
this.namespaces = namespaces;
}
+ @Override
public String translateNamespacePrefixToUri(String prefix) {
// Empty prefix always maps to empty URL in XPath
if (prefix.length() == 0) {
diff --git a/src/main/java/freemarker/ext/jsp/CustomTagAndELFunctionCombiner.java b/src/main/java/freemarker/ext/jsp/CustomTagAndELFunctionCombiner.java
index 8cf493e..0863ba4 100644
--- a/src/main/java/freemarker/ext/jsp/CustomTagAndELFunctionCombiner.java
+++ b/src/main/java/freemarker/ext/jsp/CustomTagAndELFunctionCombiner.java
@@ -104,23 +104,28 @@
this.simpleMethodModel = simpleMethodModel;
}
+ @Override
public Object exec(List arguments) throws TemplateModelException {
return simpleMethodModel.exec(arguments);
}
+ @Override
public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
throws TemplateException, IOException {
templateDirectiveModel.execute(env, params, loopVars, body);
}
+ @Override
public Object[] explainTypeError(Class[] expectedClasses) {
return simpleMethodModel.explainTypeError(expectedClasses);
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return simpleMethodModel.get(index);
}
+ @Override
public int size() throws TemplateModelException {
return simpleMethodModel.size();
}
@@ -139,10 +144,12 @@
this.templateMethodModelEx = templateMethodModelEx;
}
+ @Override
public Object exec(List arguments) throws TemplateModelException {
return templateMethodModelEx.exec(arguments);
}
+ @Override
public void execute(Environment env, Map params, TemplateModel[] loopVars, TemplateDirectiveBody body)
throws TemplateException, IOException {
templateDirectiveModel.execute(env, params, loopVars, body);
@@ -162,10 +169,12 @@
this.templateMethodModelEx = templateMethodModelEx;
}
+ @Override
public Object exec(List arguments) throws TemplateModelException {
return templateMethodModelEx.exec(arguments);
}
+ @Override
public Writer getWriter(Writer out, Map args) throws TemplateModelException, IOException {
return templateTransformModel.getWriter(out, args);
}
@@ -185,22 +194,27 @@
this.simpleMethodModel = simpleMethodModel;
}
+ @Override
public Object exec(List arguments) throws TemplateModelException {
return simpleMethodModel.exec(arguments);
}
+ @Override
public Object[] explainTypeError(Class[] expectedClasses) {
return simpleMethodModel.explainTypeError(expectedClasses);
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return simpleMethodModel.get(index);
}
+ @Override
public int size() throws TemplateModelException {
return simpleMethodModel.size();
}
+ @Override
public Writer getWriter(Writer out, Map args) throws TemplateModelException, IOException {
return templateTransformModel.getWriter(out, args);
}
diff --git a/src/main/java/freemarker/ext/jsp/EventForwarding.java b/src/main/java/freemarker/ext/jsp/EventForwarding.java
index 770ef5e..ce2dad6 100644
--- a/src/main/java/freemarker/ext/jsp/EventForwarding.java
+++ b/src/main/java/freemarker/ext/jsp/EventForwarding.java
@@ -97,6 +97,7 @@
}
}
+ @Override
public void attributeAdded(ServletContextAttributeEvent arg0) {
synchronized (servletContextAttributeListeners) {
int s = servletContextAttributeListeners.size();
@@ -106,6 +107,7 @@
}
}
+ @Override
public void attributeRemoved(ServletContextAttributeEvent arg0) {
synchronized (servletContextAttributeListeners) {
int s = servletContextAttributeListeners.size();
@@ -115,6 +117,7 @@
}
}
+ @Override
public void attributeReplaced(ServletContextAttributeEvent arg0) {
synchronized (servletContextAttributeListeners) {
int s = servletContextAttributeListeners.size();
@@ -124,6 +127,7 @@
}
}
+ @Override
public void contextInitialized(ServletContextEvent arg0) {
arg0.getServletContext().setAttribute(ATTR_NAME, this);
@@ -135,6 +139,7 @@
}
}
+ @Override
public void contextDestroyed(ServletContextEvent arg0) {
synchronized (servletContextListeners) {
int s = servletContextListeners.size();
@@ -144,6 +149,7 @@
}
}
+ @Override
public void sessionCreated(HttpSessionEvent arg0) {
synchronized (httpSessionListeners) {
int s = httpSessionListeners.size();
@@ -153,6 +159,7 @@
}
}
+ @Override
public void sessionDestroyed(HttpSessionEvent arg0) {
synchronized (httpSessionListeners) {
int s = httpSessionListeners.size();
@@ -162,6 +169,7 @@
}
}
+ @Override
public void attributeAdded(HttpSessionBindingEvent arg0) {
synchronized (httpSessionAttributeListeners) {
int s = httpSessionAttributeListeners.size();
@@ -171,6 +179,7 @@
}
}
+ @Override
public void attributeRemoved(HttpSessionBindingEvent arg0) {
synchronized (httpSessionAttributeListeners) {
int s = httpSessionAttributeListeners.size();
@@ -180,6 +189,7 @@
}
}
+ @Override
public void attributeReplaced(HttpSessionBindingEvent arg0) {
synchronized (httpSessionAttributeListeners) {
int s = httpSessionAttributeListeners.size();
diff --git a/src/main/java/freemarker/ext/jsp/FreeMarkerJspApplicationContext.java b/src/main/java/freemarker/ext/jsp/FreeMarkerJspApplicationContext.java
index 4160f0d..f83dae1 100644
--- a/src/main/java/freemarker/ext/jsp/FreeMarkerJspApplicationContext.java
+++ b/src/main/java/freemarker/ext/jsp/FreeMarkerJspApplicationContext.java
@@ -63,6 +63,7 @@
elResolver.add(new ScopedAttributeELResolver());
}
+ @Override
public void addELContextListener(ELContextListener listener) {
synchronized (listeners) {
listeners.addLast(listener);
@@ -99,10 +100,12 @@
return null;
}
+ @Override
public void addELResolver(ELResolver resolver) {
additionalResolvers.add(resolver);
}
+ @Override
public ExpressionFactory getExpressionFactory() {
return expressionFactoryImpl;
}
diff --git a/src/main/java/freemarker/ext/jsp/FreeMarkerJspFactory2.java b/src/main/java/freemarker/ext/jsp/FreeMarkerJspFactory2.java
index f4205e4..2eed561 100644
--- a/src/main/java/freemarker/ext/jsp/FreeMarkerJspFactory2.java
+++ b/src/main/java/freemarker/ext/jsp/FreeMarkerJspFactory2.java
@@ -23,6 +23,7 @@
/**
*/
class FreeMarkerJspFactory2 extends FreeMarkerJspFactory {
+ @Override
protected String getSpecificationVersion() {
return "2.0";
}
diff --git a/src/main/java/freemarker/ext/jsp/FreeMarkerPageContext.java b/src/main/java/freemarker/ext/jsp/FreeMarkerPageContext.java
index 0ff0a1d..724ba83 100644
--- a/src/main/java/freemarker/ext/jsp/FreeMarkerPageContext.java
+++ b/src/main/java/freemarker/ext/jsp/FreeMarkerPageContext.java
@@ -473,6 +473,7 @@
it = hashEx.keys().iterator();
}
+ @Override
public boolean hasMoreElements() {
try {
return it.hasNext();
@@ -481,6 +482,7 @@
}
}
+ @Override
public Object nextElement() {
try {
return ((TemplateScalarModel) it.next()).getAsString();
diff --git a/src/main/java/freemarker/ext/jsp/FreemarkerTag.java b/src/main/java/freemarker/ext/jsp/FreemarkerTag.java
index 48ea69f..6868cfd 100644
--- a/src/main/java/freemarker/ext/jsp/FreemarkerTag.java
+++ b/src/main/java/freemarker/ext/jsp/FreemarkerTag.java
@@ -61,40 +61,49 @@
this.name = name == null ? "" : name;
}
+ @Override
public Tag getParent() {
return parent;
}
+ @Override
public void setParent(Tag parent) {
this.parent = parent;
}
+ @Override
public int doStartTag() {
return EVAL_BODY_BUFFERED;
}
+ @Override
public void setBodyContent(BodyContent bodyContent) {
this.bodyContent = bodyContent;
}
+ @Override
public void setPageContext(PageContext pageContext) {
this.pageContext = pageContext;
root = null;
}
+ @Override
public void doInitBody() {
}
+ @Override
public int doAfterBody() {
return SKIP_BODY;
}
+ @Override
public void release() {
root = null;
template = null;
name = "";
}
+ @Override
public int doEndTag()
throws JspException {
if (bodyContent == null)
diff --git a/src/main/java/freemarker/ext/jsp/JspContextModel.java b/src/main/java/freemarker/ext/jsp/JspContextModel.java
index bd824f0..0eb10da 100644
--- a/src/main/java/freemarker/ext/jsp/JspContextModel.java
+++ b/src/main/java/freemarker/ext/jsp/JspContextModel.java
@@ -47,11 +47,13 @@
this.scope = scope;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
Object bean = scope == ANY_SCOPE ? pageContext.findAttribute(key) : pageContext.getAttribute(key, scope);
return BeansWrapper.getDefaultInstance().wrap(bean);
}
+ @Override
public boolean isEmpty() {
return false;
}
diff --git a/src/main/java/freemarker/ext/jsp/SimpleTagDirectiveModel.java b/src/main/java/freemarker/ext/jsp/SimpleTagDirectiveModel.java
index e02e4c9..6101b06 100644
--- a/src/main/java/freemarker/ext/jsp/SimpleTagDirectiveModel.java
+++ b/src/main/java/freemarker/ext/jsp/SimpleTagDirectiveModel.java
@@ -52,7 +52,8 @@
}
}
- public void execute(Environment env, Map args, TemplateModel[] outArgs,
+ @Override
+ public void execute(Environment env, Map args, TemplateModel[] outArgs,
final TemplateDirectiveBody body)
throws TemplateException, IOException {
try {
@@ -107,6 +108,7 @@
super("Nested content has thrown template exception", cause);
}
+ @Override
public TemplateException getCause() {
return (TemplateException) super.getCause();
}
diff --git a/src/main/java/freemarker/ext/jsp/TagTransformModel.java b/src/main/java/freemarker/ext/jsp/TagTransformModel.java
index 55b0272..a4c17c7 100644
--- a/src/main/java/freemarker/ext/jsp/TagTransformModel.java
+++ b/src/main/java/freemarker/ext/jsp/TagTransformModel.java
@@ -59,6 +59,7 @@
isTryCatchFinally = TryCatchFinally.class.isAssignableFrom(tagClass);
}
+ @Override
public Writer getWriter(Writer out, Map args) throws TemplateModelException {
try {
Tag tag = (Tag) getTagInstance();
@@ -314,6 +315,7 @@
return pageContext;
}
+ @Override
public int onStart()
throws TemplateModelException {
try {
@@ -352,6 +354,7 @@
}
}
+ @Override
public int afterBody()
throws TemplateModelException {
try {
@@ -384,6 +387,7 @@
}
}
+ @Override
public void onError(Throwable t) throws Throwable {
if (isTryCatchFinally) {
((TryCatchFinally) tag).doCatch(t);
diff --git a/src/main/java/freemarker/ext/jsp/TaglibFactory.java b/src/main/java/freemarker/ext/jsp/TaglibFactory.java
index c9b8d92..0dfa9b6 100644
--- a/src/main/java/freemarker/ext/jsp/TaglibFactory.java
+++ b/src/main/java/freemarker/ext/jsp/TaglibFactory.java
@@ -175,6 +175,7 @@
* custom tag or EL function from the library, implemented as a {@link TemplateTransformModel} or
* {@link TemplateMethodModelEx}, respectively.
*/
+ @Override
public TemplateModel get(final String taglibUri) throws TemplateModelException {
synchronized (lock) {
{
@@ -287,6 +288,7 @@
/**
* Returns false.
*/
+ @Override
public boolean isEmpty() {
return false;
}
@@ -742,6 +744,7 @@
}
File[] tldFiles = dir.listFiles(new FilenameFilter() {
+ @Override
public boolean accept(File urlAsFile, String name) {
return isTldFileNameIgnoreCase(name);
}
@@ -1201,6 +1204,7 @@
this.fileResourcePath = fileResourcePath;
}
+ @Override
public InputStream getInputStream() throws IOException {
final InputStream in = servletContext.getResourceAsStream(fileResourcePath);
if (in == null) {
@@ -1209,6 +1213,7 @@
return in;
}
+ @Override
public String getXmlSystemId() throws IOException {
final URL url = servletContext.getResource(fileResourcePath);
return url != null ? url.toExternalForm() : null;
@@ -1245,6 +1250,7 @@
return "classpath:" + resourcePath;
}
+ @Override
public InputStream getInputStream() throws IOException {
ClassLoader tccl = tryGetThreadContextClassLoader();
if (tccl != null) {
@@ -1257,6 +1263,7 @@
return ClassUtil.getReasourceAsStream(getClass(), resourcePath, false);
}
+ @Override
public String getXmlSystemId() throws IOException {
ClassLoader tccl = tryGetThreadContextClassLoader();
if (tccl != null) {
@@ -1294,6 +1301,7 @@
this.entryPath = entryPath != null ? normalizeJarEntryPath(entryPath, false) : null;
}
+ @Override
public InputStream getInputStream() throws IOException {
if (entryUrl != null) {
try {
@@ -1368,6 +1376,7 @@
}
}
+ @Override
public String getXmlSystemId() {
return entryUrl != null ? entryUrl.toExternalForm() : null;
}
@@ -1403,6 +1412,7 @@
super(
tryCreateServletContextJarEntryUrl(servletContext, servletContextJarFilePath, entryPath),
new InputStreamFactory() {
+ @Override
public InputStream getInputStream() {
return servletContext.getResourceAsStream(servletContextJarFilePath);
}
@@ -1425,10 +1435,12 @@
this.file = file;
}
+ @Override
public InputStream getInputStream() throws IOException {
return new FileInputStream(file);
}
+ @Override
public String getXmlSystemId() throws IOException {
return file.toURI().toURL().toExternalForm();
}
@@ -1447,10 +1459,12 @@
tagsAndFunctions = parseToTagsAndFunctions(ctx, tldPath, wrapper);
}
+ @Override
public TemplateModel get(String key) {
return (TemplateModel) tagsAndFunctions.get(key);
}
+ @Override
public boolean isEmpty() {
return tagsAndFunctions.isEmpty();
}
@@ -1844,6 +1858,7 @@
*/
private static final class EmptyContentEntityResolver implements EntityResolver {
+ @Override
public InputSource resolveEntity(String publicId, String systemId) {
InputSource is = new InputSource(new ByteArrayInputStream(new byte[0]));
is.setPublicId(publicId);
@@ -1961,6 +1976,7 @@
return "URLWithExternalForm(" + externalForm + ")";
}
+ @Override
public int compareTo(Object that) {
return this.getExternalForm().compareTo(((URLWithExternalForm) that).getExternalForm());
}
diff --git a/src/main/java/freemarker/ext/jsp/_FreeMarkerPageContext2.java b/src/main/java/freemarker/ext/jsp/_FreeMarkerPageContext2.java
index b7df303..d2fa19d 100644
--- a/src/main/java/freemarker/ext/jsp/_FreeMarkerPageContext2.java
+++ b/src/main/java/freemarker/ext/jsp/_FreeMarkerPageContext2.java
@@ -57,6 +57,7 @@
* to work you <b>must</b> have the Apache Commons-EL package in the classpath. If
* Commons-EL is not available, this method will throw an UnsupportedOperationException.
*/
+ @Override
public ExpressionEvaluator getExpressionEvaluator() {
try {
Class type = Thread.currentThread().getContextClassLoader().loadClass
@@ -74,10 +75,12 @@
* the page scope, request scope, session scope and application scope for an
* attribute with a matching name.
*/
+ @Override
public VariableResolver getVariableResolver() {
final PageContext ctx = this;
return new VariableResolver() {
+ @Override
public Object resolveVariable(String name) throws ELException {
return ctx.findAttribute(name);
}
@@ -87,6 +90,7 @@
/**
* Includes the specified path. The flush argument is ignored!
*/
+ @Override
public void include(String path, boolean flush) throws IOException, ServletException {
super.include(path);
}
diff --git a/src/main/java/freemarker/ext/jsp/_FreeMarkerPageContext21.java b/src/main/java/freemarker/ext/jsp/_FreeMarkerPageContext21.java
index 998a5b0..d99e22c 100644
--- a/src/main/java/freemarker/ext/jsp/_FreeMarkerPageContext21.java
+++ b/src/main/java/freemarker/ext/jsp/_FreeMarkerPageContext21.java
@@ -67,6 +67,7 @@
try {
Class type = ((ClassLoader) AccessController.doPrivileged(
new PrivilegedAction() {
+ @Override
public Object run() {
return Thread.currentThread().getContextClassLoader();
}
@@ -90,6 +91,7 @@
final PageContext ctx = this;
return new VariableResolver() {
+ @Override
public Object resolveVariable(String name) throws ELException {
return ctx.findAttribute(name);
}
diff --git a/src/main/java/freemarker/ext/jython/JythonHashModel.java b/src/main/java/freemarker/ext/jython/JythonHashModel.java
index 1a3e8df..cf06a9a 100644
--- a/src/main/java/freemarker/ext/jython/JythonHashModel.java
+++ b/src/main/java/freemarker/ext/jython/JythonHashModel.java
@@ -53,6 +53,7 @@
static final ModelFactory FACTORY =
new ModelFactory()
{
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new JythonHashModel((PyObject) object, (JythonWrapper) wrapper);
}
@@ -65,6 +66,7 @@
/**
* Returns {@link PyObject#__len__()}.
*/
+ @Override
public int size() throws TemplateModelException {
try {
return object.__len__();
@@ -77,6 +79,7 @@
* Returns either <code>object.__findattr__("keys").__call__()</code>
* or <code>object.__findattr__("keySet").__call__()</code>.
*/
+ @Override
public TemplateCollectionModel keys() throws TemplateModelException {
try {
PyObject method = object.__findattr__(KEYS);
@@ -97,6 +100,7 @@
/**
* Returns <code>object.__findattr__("values").__call__()</code>.
*/
+ @Override
public TemplateCollectionModel values() throws TemplateModelException {
try {
PyObject method = object.__findattr__(VALUES);
diff --git a/src/main/java/freemarker/ext/jython/JythonModel.java b/src/main/java/freemarker/ext/jython/JythonModel.java
index 0438e2a..1ba588c 100644
--- a/src/main/java/freemarker/ext/jython/JythonModel.java
+++ b/src/main/java/freemarker/ext/jython/JythonModel.java
@@ -49,6 +49,7 @@
static final ModelFactory FACTORY =
new ModelFactory()
{
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new JythonModel((PyObject) object, (JythonWrapper) wrapper);
}
@@ -62,6 +63,7 @@
/**
* Returns the value of {@link PyObject#__nonzero__()}.
*/
+ @Override
public boolean getAsBoolean() throws TemplateModelException {
try {
return object.__nonzero__();
@@ -73,6 +75,7 @@
/**
* Returns the value of {@link Object#toString()}.
*/
+ @Override
public String getAsString() throws TemplateModelException {
try {
return object.toString();
@@ -88,6 +91,7 @@
* with <code>false</code>, the order of calls is reversed (that is, item
* lookup takes precedence over attribute lookup).
*/
+ @Override
public TemplateModel get(String key)
throws TemplateModelException {
if (key != null) {
@@ -118,6 +122,7 @@
/**
* Returns {@link PyObject#__len__()}<code> == 0</code>.
*/
+ @Override
public boolean isEmpty() throws TemplateModelException {
try {
return object.__len__() == 0;
@@ -129,6 +134,7 @@
/**
* @see freemarker.template.TemplateMethodModel#exec(List)
*/
+ @Override
public Object exec(List arguments) throws TemplateModelException {
int size = arguments.size();
try {
@@ -159,6 +165,7 @@
}
}
+ @Override
public Object getAdaptedObject(Class hint) {
if (object == null) {
return null;
@@ -170,6 +177,7 @@
return view;
}
+ @Override
public Object getWrappedObject() {
return object == null ? null : object.__tojava__(Object.class);
}
diff --git a/src/main/java/freemarker/ext/jython/JythonNumberModel.java b/src/main/java/freemarker/ext/jython/JythonNumberModel.java
index a784b62..8d5a56e 100644
--- a/src/main/java/freemarker/ext/jython/JythonNumberModel.java
+++ b/src/main/java/freemarker/ext/jython/JythonNumberModel.java
@@ -41,6 +41,7 @@
static final ModelFactory FACTORY =
new ModelFactory()
{
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new JythonNumberModel((PyObject) object, (JythonWrapper) wrapper);
}
@@ -55,6 +56,7 @@
* {@link java.lang.Number}.class as argument. If that fails, returns
* {@link PyObject#__float__()}.
*/
+ @Override
public Number getAsNumber() throws TemplateModelException {
try {
Object value = object.__tojava__(java.lang.Number.class);
diff --git a/src/main/java/freemarker/ext/jython/JythonSequenceModel.java b/src/main/java/freemarker/ext/jython/JythonSequenceModel.java
index e92ed62..f5e37e2 100644
--- a/src/main/java/freemarker/ext/jython/JythonSequenceModel.java
+++ b/src/main/java/freemarker/ext/jython/JythonSequenceModel.java
@@ -42,6 +42,7 @@
static final ModelFactory FACTORY =
new ModelFactory()
{
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new JythonSequenceModel((PyObject) object, (JythonWrapper) wrapper);
}
@@ -54,6 +55,7 @@
/**
* Returns {@link PyObject#__finditem__(int)}.
*/
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
try {
return wrapper.wrap(object.__finditem__(index));
@@ -65,6 +67,7 @@
/**
* Returns {@link PyObject#__len__()}.
*/
+ @Override
public int size() throws TemplateModelException {
try {
return object.__len__();
@@ -73,15 +76,18 @@
}
}
+ @Override
public TemplateModelIterator iterator() {
return new TemplateModelIterator()
{
int i = 0;
+ @Override
public boolean hasNext() throws TemplateModelException {
return i < size();
}
+ @Override
public TemplateModel next() throws TemplateModelException {
return get(i++);
}
diff --git a/src/main/java/freemarker/ext/jython/JythonWrapper.java b/src/main/java/freemarker/ext/jython/JythonWrapper.java
index fa3b575..6ca7229 100644
--- a/src/main/java/freemarker/ext/jython/JythonWrapper.java
+++ b/src/main/java/freemarker/ext/jython/JythonWrapper.java
@@ -106,6 +106,7 @@
* #unwrap(TemplateModel)}, the template model that was passed to
* <code>unwrap</code> is returned.
*/
+ @Override
public TemplateModel wrap(Object obj) {
if (obj == null) {
return null;
@@ -176,6 +177,7 @@
this.model = model;
}
+ @Override
public TemplateModel getTemplateModel() {
return model;
}
diff --git a/src/main/java/freemarker/ext/jython/_Jython20And21VersionAdapter.java b/src/main/java/freemarker/ext/jython/_Jython20And21VersionAdapter.java
index ddda4f0..fe16dc0 100644
--- a/src/main/java/freemarker/ext/jython/_Jython20And21VersionAdapter.java
+++ b/src/main/java/freemarker/ext/jython/_Jython20And21VersionAdapter.java
@@ -30,14 +30,17 @@
*/
public class _Jython20And21VersionAdapter extends JythonVersionAdapter {
+ @Override
public boolean isPyInstance(Object obj) {
return obj instanceof PyJavaInstance;
}
+ @Override
public Object pyInstanceToJava(Object pyInstance) {
return ((PyJavaInstance) pyInstance).__tojava__(java.lang.Object.class);
}
+ @Override
public String getPythonClassName(PyObject pyObject) {
return pyObject.__class__.__name__;
}
diff --git a/src/main/java/freemarker/ext/jython/_Jython22VersionAdapter.java b/src/main/java/freemarker/ext/jython/_Jython22VersionAdapter.java
index 26277da..62f2e78 100644
--- a/src/main/java/freemarker/ext/jython/_Jython22VersionAdapter.java
+++ b/src/main/java/freemarker/ext/jython/_Jython22VersionAdapter.java
@@ -30,14 +30,17 @@
*/
public class _Jython22VersionAdapter extends JythonVersionAdapter {
+ @Override
public boolean isPyInstance(Object obj) {
return obj instanceof PyJavaInstance;
}
+ @Override
public Object pyInstanceToJava(Object pyInstance) {
return ((PyJavaInstance) pyInstance).__tojava__(java.lang.Object.class);
}
+ @Override
public String getPythonClassName(PyObject pyObject) {
return pyObject.getType().getFullName();
}
diff --git a/src/main/java/freemarker/ext/rhino/RhinoFunctionModel.java b/src/main/java/freemarker/ext/rhino/RhinoFunctionModel.java
index 9827d1b..405059d 100644
--- a/src/main/java/freemarker/ext/rhino/RhinoFunctionModel.java
+++ b/src/main/java/freemarker/ext/rhino/RhinoFunctionModel.java
@@ -44,6 +44,7 @@
this.fnThis = fnThis;
}
+ @Override
public Object exec(List arguments) throws TemplateModelException {
Context cx = Context.getCurrentContext();
Object[] args = arguments.toArray();
diff --git a/src/main/java/freemarker/ext/rhino/RhinoScriptableModel.java b/src/main/java/freemarker/ext/rhino/RhinoScriptableModel.java
index 76761d6..1efacbc 100644
--- a/src/main/java/freemarker/ext/rhino/RhinoScriptableModel.java
+++ b/src/main/java/freemarker/ext/rhino/RhinoScriptableModel.java
@@ -45,6 +45,7 @@
TemplateSequenceModel, AdapterTemplateModel, TemplateScalarModel,
TemplateBooleanModel, TemplateNumberModel {
static final ModelFactory FACTORY = new ModelFactory() {
+ @Override
public TemplateModel create(Object object, ObjectWrapper wrapper) {
return new RhinoScriptableModel((Scriptable) object,
(BeansWrapper) wrapper);
@@ -59,6 +60,7 @@
this.wrapper = wrapper;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
Object retval = ScriptableObject.getProperty(scriptable, key);
if (retval instanceof Function) {
@@ -68,6 +70,7 @@
}
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
Object retval = ScriptableObject.getProperty(scriptable, index);
if (retval instanceof Function) {
@@ -77,18 +80,22 @@
}
}
+ @Override
public boolean isEmpty() {
return scriptable.getIds().length == 0;
}
+ @Override
public TemplateCollectionModel keys() throws TemplateModelException {
return (TemplateCollectionModel) wrapper.wrap(scriptable.getIds());
}
+ @Override
public int size() {
return scriptable.getIds().length;
}
+ @Override
public TemplateCollectionModel values() throws TemplateModelException {
Object[] ids = scriptable.getIds();
Object[] values = new Object[ids.length];
@@ -105,14 +112,17 @@
return (TemplateCollectionModel) wrapper.wrap(values);
}
+ @Override
public boolean getAsBoolean() {
return Context.toBoolean(scriptable);
}
+ @Override
public Number getAsNumber() {
return Double.valueOf(Context.toNumber(scriptable));
}
+ @Override
public String getAsString() {
return Context.toString(scriptable);
}
@@ -125,6 +135,7 @@
return wrapper;
}
+ @Override
public Object getAdaptedObject(Class hint) {
// FIXME: This does LS3 conversion, which is not very useful for us. Like it won't convert to List, Map, etc.
try {
diff --git a/src/main/java/freemarker/ext/rhino/RhinoWrapper.java b/src/main/java/freemarker/ext/rhino/RhinoWrapper.java
index b5dd3c5..359750b 100644
--- a/src/main/java/freemarker/ext/rhino/RhinoWrapper.java
+++ b/src/main/java/freemarker/ext/rhino/RhinoWrapper.java
@@ -43,6 +43,7 @@
static {
try {
UNDEFINED_INSTANCE = AccessController.doPrivileged(new PrivilegedExceptionAction() {
+ @Override
public Object run() throws Exception {
return Undefined.class.getField("instance").get(null);
}
diff --git a/src/main/java/freemarker/ext/servlet/FreemarkerServlet.java b/src/main/java/freemarker/ext/servlet/FreemarkerServlet.java
index c0284aa..6ceeeb9 100644
--- a/src/main/java/freemarker/ext/servlet/FreemarkerServlet.java
+++ b/src/main/java/freemarker/ext/servlet/FreemarkerServlet.java
@@ -1633,6 +1633,7 @@
this.initParamValue = initParamValue;
}
+ @Override
public String getInitParamValue() {
return initParamValue;
}
@@ -1650,6 +1651,7 @@
this.initParamValue = initParamValue;
}
+ @Override
public String getInitParamValue() {
return initParamValue;
}
@@ -1665,6 +1667,7 @@
this.initParamValue = initParamValue;
}
+ @Override
public String getInitParamValue() {
return initParamValue;
}
diff --git a/src/main/java/freemarker/ext/servlet/HttpRequestHashModel.java b/src/main/java/freemarker/ext/servlet/HttpRequestHashModel.java
index 2c0d574..0b60283 100644
--- a/src/main/java/freemarker/ext/servlet/HttpRequestHashModel.java
+++ b/src/main/java/freemarker/ext/servlet/HttpRequestHashModel.java
@@ -59,14 +59,17 @@
this.wrapper = wrapper;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
return wrapper.wrap(request.getAttribute(key));
}
+ @Override
public boolean isEmpty() {
return !request.getAttributeNames().hasMoreElements();
}
+ @Override
public int size() {
int result = 0;
for (Enumeration enumeration = request.getAttributeNames(); enumeration.hasMoreElements(); ) {
@@ -76,6 +79,7 @@
return result;
}
+ @Override
public TemplateCollectionModel keys() {
ArrayList keys = new ArrayList();
for (Enumeration enumeration = request.getAttributeNames(); enumeration.hasMoreElements(); ) {
@@ -84,6 +88,7 @@
return new SimpleCollection(keys.iterator());
}
+ @Override
public TemplateCollectionModel values() {
ArrayList values = new ArrayList();
for (Enumeration enumeration = request.getAttributeNames(); enumeration.hasMoreElements(); ) {
diff --git a/src/main/java/freemarker/ext/servlet/HttpRequestParametersHashModel.java b/src/main/java/freemarker/ext/servlet/HttpRequestParametersHashModel.java
index 4129aa6..f1d8f41 100644
--- a/src/main/java/freemarker/ext/servlet/HttpRequestParametersHashModel.java
+++ b/src/main/java/freemarker/ext/servlet/HttpRequestParametersHashModel.java
@@ -46,33 +46,41 @@
this.request = request;
}
+ @Override
public TemplateModel get(String key) {
String value = request.getParameter(key);
return value == null ? null : new SimpleScalar(value);
}
+ @Override
public boolean isEmpty() {
return !request.getParameterNames().hasMoreElements();
}
+ @Override
public int size() {
return getKeys().size();
}
+ @Override
public TemplateCollectionModel keys() {
return new SimpleCollection(getKeys().iterator());
}
+ @Override
public TemplateCollectionModel values() {
final Iterator iter = getKeys().iterator();
return new SimpleCollection(
new Iterator() {
+ @Override
public boolean hasNext() {
return iter.hasNext();
}
+ @Override
public Object next() {
return request.getParameter((String) iter.next());
}
+ @Override
public void remove() {
throw new UnsupportedOperationException();
}
diff --git a/src/main/java/freemarker/ext/servlet/HttpSessionHashModel.java b/src/main/java/freemarker/ext/servlet/HttpSessionHashModel.java
index 0434537..c3bf0fc 100644
--- a/src/main/java/freemarker/ext/servlet/HttpSessionHashModel.java
+++ b/src/main/java/freemarker/ext/servlet/HttpSessionHashModel.java
@@ -77,6 +77,7 @@
this.response = response;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
checkSessionExistence();
return wrapper.wrap(session != null ? session.getAttribute(key) : null);
@@ -103,6 +104,7 @@
(session == null && request == null);
}
+ @Override
public boolean isEmpty()
throws TemplateModelException {
checkSessionExistence();
diff --git a/src/main/java/freemarker/ext/servlet/IncludePage.java b/src/main/java/freemarker/ext/servlet/IncludePage.java
index 9725e00..2f2b5be 100644
--- a/src/main/java/freemarker/ext/servlet/IncludePage.java
+++ b/src/main/java/freemarker/ext/servlet/IncludePage.java
@@ -68,7 +68,8 @@
this.response = response;
}
- public void execute(final Environment env, Map params,
+ @Override
+ public void execute(final Environment env, Map params,
TemplateModel[] loopVars, TemplateDirectiveBody body)
throws TemplateException, IOException {
// Determine the path
diff --git a/src/main/java/freemarker/ext/servlet/ServletContextHashModel.java b/src/main/java/freemarker/ext/servlet/ServletContextHashModel.java
index e917ccf..88c7253 100644
--- a/src/main/java/freemarker/ext/servlet/ServletContextHashModel.java
+++ b/src/main/java/freemarker/ext/servlet/ServletContextHashModel.java
@@ -54,10 +54,12 @@
this.wrapper = wrapper;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
return wrapper.wrap(servletctx.getAttribute(key));
}
+ @Override
public boolean isEmpty() {
return !servletctx.getAttributeNames().hasMoreElements();
}
diff --git a/src/main/java/freemarker/ext/util/IdentityHashMap.java b/src/main/java/freemarker/ext/util/IdentityHashMap.java
index 68b14ba..038d5ad 100644
--- a/src/main/java/freemarker/ext/util/IdentityHashMap.java
+++ b/src/main/java/freemarker/ext/util/IdentityHashMap.java
@@ -626,14 +626,17 @@
// Map.Entry Ops
+ @Override
public Object getKey() {
return key;
}
+ @Override
public Object getValue() {
return value;
}
+ @Override
public Object setValue(Object value) {
Object oldValue = this.value;
this.value = value;
@@ -677,14 +680,17 @@
}
+ @Override
public boolean hasNext() {
return false;
}
+ @Override
public Object next() {
throw new NoSuchElementException();
}
+ @Override
public void remove() {
throw new IllegalStateException();
}
@@ -709,6 +715,7 @@
this.type = type;
}
+ @Override
public boolean hasNext() {
Entry e = entry;
int i = index;
@@ -721,6 +728,7 @@
return e != null;
}
+ @Override
public Object next() {
if (modCount != expectedModCount)
throw new ConcurrentModificationException();
@@ -743,6 +751,7 @@
throw new NoSuchElementException();
}
+ @Override
public void remove() {
if (lastReturned == null)
throw new IllegalStateException();
diff --git a/src/main/java/freemarker/ext/xml/Namespaces.java b/src/main/java/freemarker/ext/xml/Namespaces.java
index 730b79a..5a09b9a 100644
--- a/src/main/java/freemarker/ext/xml/Namespaces.java
+++ b/src/main/java/freemarker/ext/xml/Namespaces.java
@@ -59,6 +59,7 @@
}
}
+ @Override
public Object exec(List arguments) throws TemplateModelException {
if (arguments.size() != 2) {
throw new TemplateModelException("_registerNamespace(prefix, uri) requires two arguments");
diff --git a/src/main/java/freemarker/ext/xml/Navigator.java b/src/main/java/freemarker/ext/xml/Navigator.java
index 1065868..fc1ca2b 100644
--- a/src/main/java/freemarker/ext/xml/Navigator.java
+++ b/src/main/java/freemarker/ext/xml/Navigator.java
@@ -153,18 +153,21 @@
}
private class ChildrenOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
getChildren(node, localName, namespaceUri, result);
}
}
private class AttributesOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
getAttributes(node, localName, namespaceUri, result);
}
}
private class DescendantOrSelfOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
result.add(node);
getDescendants(node, result);
@@ -172,12 +175,14 @@
}
private class DescendantOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
getDescendants(node, result);
}
}
private class AncestorOrSelfOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
result.add(node);
getAncestors(node, result);
@@ -185,12 +190,14 @@
}
private class AncestorOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
getAncestors(node, result);
}
}
private class ParentOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
Object parent = getParent(node);
if (parent != null) {
@@ -200,6 +207,7 @@
}
private class DocumentOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
Object document = getDocument(node);
if (document != null) {
@@ -209,6 +217,7 @@
}
private class DocumentTypeOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
Object documentType = getDocumentType(node);
if (documentType != null) {
@@ -218,12 +227,14 @@
}
private class ContentOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
getContent(node, result);
}
}
private class TextOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
String text = getText(node);
if (text != null) {
@@ -233,6 +244,7 @@
}
private class LocalNameOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
String text = getLocalName(node);
if (text != null) {
@@ -242,6 +254,7 @@
}
private class QualifiedNameOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
String qname = getQualifiedName(node);
if (qname != null) {
@@ -251,6 +264,7 @@
}
private class NamespacePrefixOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
String text = getNamespacePrefix(node);
if (text != null) {
@@ -260,6 +274,7 @@
}
private class NamespaceUriOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
String text = getNamespaceUri(node);
if (text != null) {
@@ -269,6 +284,7 @@
}
private class TypeOp implements NodeOperator {
+ @Override
public void process(Object node, String localName, String namespaceUri, List result) {
result.add(getType(node));
}
diff --git a/src/main/java/freemarker/ext/xml/NodeListModel.java b/src/main/java/freemarker/ext/xml/NodeListModel.java
index af4e055..2f96767 100644
--- a/src/main/java/freemarker/ext/xml/NodeListModel.java
+++ b/src/main/java/freemarker/ext/xml/NodeListModel.java
@@ -148,6 +148,7 @@
* Returns the number of nodes in this model's nodelist.
* @see freemarker.template.TemplateSequenceModel#size()
*/
+ @Override
public int size() {
return nodes.size();
}
@@ -160,6 +161,7 @@
* expression to this model's nodelist.
* @see freemarker.template.TemplateMethodModel#exec(List)
*/
+ @Override
public Object exec(List arguments) throws TemplateModelException {
if (arguments.size() != 1) {
throw new TemplateModelException(
@@ -179,6 +181,7 @@
* XML").
* @see freemarker.template.TemplateScalarModel#getAsString()
*/
+ @Override
public String getAsString() throws TemplateModelException {
StringWriter sw = new StringWriter(size() * 128);
for (Iterator iter = nodes.iterator(); iter.hasNext(); ) {
@@ -198,6 +201,7 @@
* @param index the ordinal number of the selected node
* @see freemarker.template.TemplateSequenceModel#get(int)
*/
+ @Override
public TemplateModel get(int index) {
return deriveModel(Collections.singletonList(nodes.get(index)));
}
@@ -380,6 +384,7 @@
* the operator to this model's nodes.
* @see freemarker.template.TemplateHashModel#get(String)
*/
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
// Try a built-in navigator operator
NodeOperator op = navigator.getOperator(key);
@@ -434,6 +439,7 @@
* Returns true if this NodeListModel contains no nodes.
* @see freemarker.template.TemplateHashModel#isEmpty()
*/
+ @Override
public boolean isEmpty() {
return nodes.isEmpty();
}
@@ -454,6 +460,7 @@
private class FilterByType
implements
TemplateMethodModel {
+ @Override
public Object exec(List arguments) {
List filteredNodes = new ArrayList();
for (Iterator iter = arguments.iterator(); iter.hasNext(); ) {
@@ -503,21 +510,26 @@
}
}
+ @Override
public TemplateSequenceModel getChildNodes() throws TemplateModelException {
return (TemplateSequenceModel) get("_content");
}
+ @Override
public String getNodeName() throws TemplateModelException {
return getUniqueText((NodeListModel) get("_name"), "name");
}
+ @Override
public String getNodeNamespace() throws TemplateModelException {
return getUniqueText((NodeListModel) get("_nsuri"), "namespace");
}
+ @Override
public String getNodeType() throws TemplateModelException {
return getUniqueText((NodeListModel) get("_type"), "type");
}
+ @Override
public TemplateNodeModel getParentNode() throws TemplateModelException {
return (TemplateNodeModel) get("_parent");
}
diff --git a/src/main/java/freemarker/ext/xml/_Dom4jNavigator.java b/src/main/java/freemarker/ext/xml/_Dom4jNavigator.java
index 23b631d..28bc2fc 100644
--- a/src/main/java/freemarker/ext/xml/_Dom4jNavigator.java
+++ b/src/main/java/freemarker/ext/xml/_Dom4jNavigator.java
@@ -232,6 +232,7 @@
super(path);
}
+ @Override
public List selectNodes(Object object, NamespaceContext namespaces)
throws TemplateModelException {
Context context = getContext(object);
diff --git a/src/main/java/freemarker/ext/xml/_DomNavigator.java b/src/main/java/freemarker/ext/xml/_DomNavigator.java
index a8fa538..e41053a 100644
--- a/src/main/java/freemarker/ext/xml/_DomNavigator.java
+++ b/src/main/java/freemarker/ext/xml/_DomNavigator.java
@@ -317,6 +317,7 @@
super(path);
}
+ @Override
public List selectNodes(Object object, NamespaceContext namespaces)
throws TemplateModelException {
Context context = getContext(object);
diff --git a/src/main/java/freemarker/ext/xml/_JdomNavigator.java b/src/main/java/freemarker/ext/xml/_JdomNavigator.java
index 6ff4440..edbc0a1 100644
--- a/src/main/java/freemarker/ext/xml/_JdomNavigator.java
+++ b/src/main/java/freemarker/ext/xml/_JdomNavigator.java
@@ -332,6 +332,7 @@
super(path);
}
+ @Override
public List selectNodes(Object object, NamespaceContext namespaces)
throws TemplateModelException {
Context context = getContext(object);
diff --git a/src/main/java/freemarker/log/CommonsLoggingLoggerFactory.java b/src/main/java/freemarker/log/CommonsLoggingLoggerFactory.java
index de64490..28c88d9 100644
--- a/src/main/java/freemarker/log/CommonsLoggingLoggerFactory.java
+++ b/src/main/java/freemarker/log/CommonsLoggingLoggerFactory.java
@@ -26,6 +26,7 @@
@Deprecated
public class CommonsLoggingLoggerFactory implements LoggerFactory {
+ @Override
public Logger getLogger(String category) {
return new CommonsLoggingLogger(
org.apache.commons.logging.LogFactory.getLog(category));
diff --git a/src/main/java/freemarker/log/Logger.java b/src/main/java/freemarker/log/Logger.java
index c60310e..be7f965 100644
--- a/src/main/java/freemarker/log/Logger.java
+++ b/src/main/java/freemarker/log/Logger.java
@@ -551,6 +551,7 @@
try {
return (String) AccessController.doPrivileged(
new PrivilegedAction() {
+ @Override
public Object run() {
return System.getProperty(key, null);
}
diff --git a/src/main/java/freemarker/log/SLF4JLoggerFactory.java b/src/main/java/freemarker/log/SLF4JLoggerFactory.java
index f98a1b5..f18b054 100644
--- a/src/main/java/freemarker/log/SLF4JLoggerFactory.java
+++ b/src/main/java/freemarker/log/SLF4JLoggerFactory.java
@@ -28,6 +28,7 @@
@Deprecated
public class SLF4JLoggerFactory implements LoggerFactory {
+ @Override
public Logger getLogger(String category) {
org.slf4j.Logger slf4jLogger = org.slf4j.LoggerFactory.getLogger(category);
if (slf4jLogger instanceof LocationAwareLogger) {
diff --git a/src/main/java/freemarker/log/_AvalonLoggerFactory.java b/src/main/java/freemarker/log/_AvalonLoggerFactory.java
index 9b5e50c..8058a73 100644
--- a/src/main/java/freemarker/log/_AvalonLoggerFactory.java
+++ b/src/main/java/freemarker/log/_AvalonLoggerFactory.java
@@ -26,6 +26,7 @@
* compliance issues. FreeMarker developers only: treat this class as package-visible.
*/
public class _AvalonLoggerFactory implements LoggerFactory {
+ @Override
public Logger getLogger(String category) {
return new AvalonLogger(Hierarchy.getDefaultHierarchy().getLoggerFor(category));
}
diff --git a/src/main/java/freemarker/log/_JULLoggerFactory.java b/src/main/java/freemarker/log/_JULLoggerFactory.java
index 475db7f..e596879 100644
--- a/src/main/java/freemarker/log/_JULLoggerFactory.java
+++ b/src/main/java/freemarker/log/_JULLoggerFactory.java
@@ -26,6 +26,7 @@
* compliance issues. FreeMarker developers only: treat this class as package-visible.
*/
public class _JULLoggerFactory implements LoggerFactory {
+ @Override
public Logger getLogger(String category) {
return new JULLogger(java.util.logging.Logger.getLogger(category));
}
diff --git a/src/main/java/freemarker/log/_Log4jLoggerFactory.java b/src/main/java/freemarker/log/_Log4jLoggerFactory.java
index 9547bbd..2391a2e 100644
--- a/src/main/java/freemarker/log/_Log4jLoggerFactory.java
+++ b/src/main/java/freemarker/log/_Log4jLoggerFactory.java
@@ -26,6 +26,7 @@
* compliance issues. FreeMarker developers only: treat this class as package-visible.
*/
public class _Log4jLoggerFactory implements LoggerFactory {
+ @Override
public Logger getLogger(String category) {
return new Log4jLogger(org.apache.log4j.Logger.getLogger(category));
}
diff --git a/src/main/java/freemarker/log/_NullLoggerFactory.java b/src/main/java/freemarker/log/_NullLoggerFactory.java
index 85cff74..d34d7c3 100644
--- a/src/main/java/freemarker/log/_NullLoggerFactory.java
+++ b/src/main/java/freemarker/log/_NullLoggerFactory.java
@@ -27,6 +27,7 @@
_NullLoggerFactory() {
}
+ @Override
public Logger getLogger(String category) {
return INSTANCE;
}
diff --git a/src/main/java/freemarker/template/Configuration.java b/src/main/java/freemarker/template/Configuration.java
index f6b6368..db736df 100644
--- a/src/main/java/freemarker/template/Configuration.java
+++ b/src/main/java/freemarker/template/Configuration.java
@@ -1919,6 +1919,7 @@
/**
* The getter pair of {@link #setStrictSyntaxMode}.
*/
+ @Override
public boolean getStrictSyntaxMode() {
return strictSyntax;
}
@@ -2002,6 +2003,7 @@
* @return Never {@code null}.
* @since 2.3.20
*/
+ @Override
public Version getIncompatibleImprovements() {
return incompatibleImprovements;
}
@@ -2045,6 +2047,7 @@
*
* @see #setWhitespaceStripping
*/
+ @Override
public boolean getWhitespaceStripping() {
return whitespaceStripping;
}
@@ -2113,6 +2116,7 @@
*
* @since 2.3.24
*/
+ @Override
public int getAutoEscapingPolicy() {
return autoEscapingPolicy;
}
@@ -2161,6 +2165,7 @@
*
* @since 2.3.24
*/
+ @Override
public OutputFormat getOutputFormat() {
return outputFormat;
}
@@ -2413,6 +2418,7 @@
*
* @since 2.3.24
*/
+ @Override
public boolean getRecognizeStandardFileExtensions() {
return recognizeStandardFileExtensions == null
? incompatibleImprovements.intValue() >= _TemplateAPI.VERSION_INT_2_3_24
@@ -2456,6 +2462,7 @@
/**
* The getter pair of {@link #setTagSyntax(int)}.
*/
+ @Override
public int getTagSyntax() {
return tagSyntax;
}
@@ -2484,6 +2491,7 @@
*
* @since 2.3.28
*/
+ @Override
public int getInterpolationSyntax() {
return interpolationSyntax;
}
@@ -2549,6 +2557,7 @@
*
* @since 2.3.23
*/
+ @Override
public int getNamingConvention() {
return namingConvention;
}
@@ -2583,6 +2592,7 @@
*
* @since 2.3.25
*/
+ @Override
public int getTabSize() {
return tabSize;
}
diff --git a/src/main/java/freemarker/template/DefaultArrayAdapter.java b/src/main/java/freemarker/template/DefaultArrayAdapter.java
index 645e7ea..6fa7ac0 100644
--- a/src/main/java/freemarker/template/DefaultArrayAdapter.java
+++ b/src/main/java/freemarker/template/DefaultArrayAdapter.java
@@ -97,6 +97,7 @@
super(wrapper);
}
+ @Override
public final Object getAdaptedObject(Class hint) {
return getWrappedObject();
}
@@ -110,14 +111,17 @@
this.array = array;
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return index >= 0 && index < array.length ? wrap(array[index]) : null;
}
+ @Override
public int size() throws TemplateModelException {
return array.length;
}
+ @Override
public Object getWrappedObject() {
return array;
}
@@ -133,14 +137,17 @@
this.array = array;
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return index >= 0 && index < array.length ? wrap(Byte.valueOf(array[index])) : null;
}
+ @Override
public int size() throws TemplateModelException {
return array.length;
}
+ @Override
public Object getWrappedObject() {
return array;
}
@@ -156,14 +163,17 @@
this.array = array;
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return index >= 0 && index < array.length ? wrap(Short.valueOf(array[index])) : null;
}
+ @Override
public int size() throws TemplateModelException {
return array.length;
}
+ @Override
public Object getWrappedObject() {
return array;
}
@@ -179,14 +189,17 @@
this.array = array;
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return index >= 0 && index < array.length ? wrap(Integer.valueOf(array[index])) : null;
}
+ @Override
public int size() throws TemplateModelException {
return array.length;
}
+ @Override
public Object getWrappedObject() {
return array;
}
@@ -202,14 +215,17 @@
this.array = array;
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return index >= 0 && index < array.length ? wrap(Long.valueOf(array[index])) : null;
}
+ @Override
public int size() throws TemplateModelException {
return array.length;
}
+ @Override
public Object getWrappedObject() {
return array;
}
@@ -225,14 +241,17 @@
this.array = array;
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return index >= 0 && index < array.length ? wrap(Float.valueOf(array[index])) : null;
}
+ @Override
public int size() throws TemplateModelException {
return array.length;
}
+ @Override
public Object getWrappedObject() {
return array;
}
@@ -248,14 +267,17 @@
this.array = array;
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return index >= 0 && index < array.length ? wrap(Double.valueOf(array[index])) : null;
}
+ @Override
public int size() throws TemplateModelException {
return array.length;
}
+ @Override
public Object getWrappedObject() {
return array;
}
@@ -271,14 +293,17 @@
this.array = array;
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return index >= 0 && index < array.length ? wrap(Character.valueOf(array[index])) : null;
}
+ @Override
public int size() throws TemplateModelException {
return array.length;
}
+ @Override
public Object getWrappedObject() {
return array;
}
@@ -294,14 +319,17 @@
this.array = array;
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return index >= 0 && index < array.length ? wrap(Boolean.valueOf(array[index])) : null;
}
+ @Override
public int size() throws TemplateModelException {
return array.length;
}
+ @Override
public Object getWrappedObject() {
return array;
}
@@ -322,14 +350,17 @@
length = Array.getLength(array);
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return index >= 0 && index < length ? wrap(Array.get(array, index)) : null;
}
+ @Override
public int size() throws TemplateModelException {
return length;
}
+ @Override
public Object getWrappedObject() {
return array;
}
diff --git a/src/main/java/freemarker/template/DefaultEnumerationAdapter.java b/src/main/java/freemarker/template/DefaultEnumerationAdapter.java
index 6a26fc1..fdd0bea 100644
--- a/src/main/java/freemarker/template/DefaultEnumerationAdapter.java
+++ b/src/main/java/freemarker/template/DefaultEnumerationAdapter.java
@@ -56,18 +56,22 @@
this.enumeration = enumeration;
}
+ @Override
public Object getWrappedObject() {
return enumeration;
}
+ @Override
public Object getAdaptedObject(Class<?> hint) {
return getWrappedObject();
}
+ @Override
public TemplateModelIterator iterator() throws TemplateModelException {
return new SimpleTemplateModelIterator();
}
+ @Override
public TemplateModel getAPI() throws TemplateModelException {
return ((ObjectWrapperWithAPISupport) getObjectWrapper()).wrapAsAPI(enumeration);
}
@@ -79,6 +83,7 @@
private boolean enumerationOwnedByMe;
+ @Override
public TemplateModel next() throws TemplateModelException {
if (!enumerationOwnedByMe) {
checkNotOwner();
@@ -94,6 +99,7 @@
return value instanceof TemplateModel ? (TemplateModel) value : wrap(value);
}
+ @Override
public boolean hasNext() throws TemplateModelException {
// Calling hasNext may looks safe, but I have met sync. problems.
if (!enumerationOwnedByMe) {
diff --git a/src/main/java/freemarker/template/DefaultIterableAdapter.java b/src/main/java/freemarker/template/DefaultIterableAdapter.java
index 7438ff9..24a07ea 100644
--- a/src/main/java/freemarker/template/DefaultIterableAdapter.java
+++ b/src/main/java/freemarker/template/DefaultIterableAdapter.java
@@ -67,18 +67,22 @@
this.iterable = iterable;
}
+ @Override
public TemplateModelIterator iterator() throws TemplateModelException {
return new IteratorToTemplateModelIteratorAdapter(iterable.iterator(), getObjectWrapper());
}
+ @Override
public Object getWrappedObject() {
return iterable;
}
+ @Override
public Object getAdaptedObject(Class hint) {
return getWrappedObject();
}
+ @Override
public TemplateModel getAPI() throws TemplateModelException {
return ((ObjectWrapperWithAPISupport) getObjectWrapper()).wrapAsAPI(iterable);
}
diff --git a/src/main/java/freemarker/template/DefaultIteratorAdapter.java b/src/main/java/freemarker/template/DefaultIteratorAdapter.java
index 150e51f..8f8d0c3 100644
--- a/src/main/java/freemarker/template/DefaultIteratorAdapter.java
+++ b/src/main/java/freemarker/template/DefaultIteratorAdapter.java
@@ -65,18 +65,22 @@
this.iterator = iterator;
}
+ @Override
public Object getWrappedObject() {
return iterator;
}
+ @Override
public Object getAdaptedObject(Class hint) {
return getWrappedObject();
}
+ @Override
public TemplateModelIterator iterator() throws TemplateModelException {
return new SimpleTemplateModelIterator();
}
+ @Override
public TemplateModel getAPI() throws TemplateModelException {
return ((ObjectWrapperWithAPISupport) getObjectWrapper()).wrapAsAPI(iterator);
}
@@ -88,6 +92,7 @@
private boolean iteratorOwnedByMe;
+ @Override
public TemplateModel next() throws TemplateModelException {
if (!iteratorOwnedByMe) {
checkNotOwner();
@@ -103,6 +108,7 @@
return value instanceof TemplateModel ? (TemplateModel) value : wrap(value);
}
+ @Override
public boolean hasNext() throws TemplateModelException {
// Calling hasNext may looks safe, but I have met sync. problems.
if (!iteratorOwnedByMe) {
diff --git a/src/main/java/freemarker/template/DefaultListAdapter.java b/src/main/java/freemarker/template/DefaultListAdapter.java
index 3585ed8..1f84c30 100644
--- a/src/main/java/freemarker/template/DefaultListAdapter.java
+++ b/src/main/java/freemarker/template/DefaultListAdapter.java
@@ -72,18 +72,22 @@
this.list = list;
}
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return index >= 0 && index < list.size() ? wrap(list.get(index)) : null;
}
+ @Override
public int size() throws TemplateModelException {
return list.size();
}
+ @Override
public Object getAdaptedObject(Class hint) {
return getWrappedObject();
}
+ @Override
public Object getWrappedObject() {
return list;
}
@@ -95,12 +99,14 @@
super(list, wrapper);
}
+ @Override
public TemplateModelIterator iterator() throws TemplateModelException {
return new IteratorToTemplateModelIteratorAdapter(list.iterator(), getObjectWrapper());
}
}
+ @Override
public TemplateModel getAPI() throws TemplateModelException {
return ((ObjectWrapperWithAPISupport) getObjectWrapper()).wrapAsAPI(list);
}
diff --git a/src/main/java/freemarker/template/DefaultMapAdapter.java b/src/main/java/freemarker/template/DefaultMapAdapter.java
index 3039e4c..a892aae 100644
--- a/src/main/java/freemarker/template/DefaultMapAdapter.java
+++ b/src/main/java/freemarker/template/DefaultMapAdapter.java
@@ -67,6 +67,7 @@
this.map = map;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
Object val;
try {
@@ -118,34 +119,42 @@
return wrap(val);
}
+ @Override
public boolean isEmpty() {
return map.isEmpty();
}
+ @Override
public int size() {
return map.size();
}
+ @Override
public TemplateCollectionModel keys() {
return new SimpleCollection(map.keySet(), getObjectWrapper());
}
+ @Override
public TemplateCollectionModel values() {
return new SimpleCollection(map.values(), getObjectWrapper());
}
+ @Override
public KeyValuePairIterator keyValuePairIterator() {
return new MapKeyValuePairIterator(map, getObjectWrapper());
}
+ @Override
public Object getAdaptedObject(Class hint) {
return map;
}
+ @Override
public Object getWrappedObject() {
return map;
}
+ @Override
public TemplateModel getAPI() throws TemplateModelException {
return ((ObjectWrapperWithAPISupport) getObjectWrapper()).wrapAsAPI(map);
}
diff --git a/src/main/java/freemarker/template/DefaultNonListCollectionAdapter.java b/src/main/java/freemarker/template/DefaultNonListCollectionAdapter.java
index 11241e1..2da89a4 100644
--- a/src/main/java/freemarker/template/DefaultNonListCollectionAdapter.java
+++ b/src/main/java/freemarker/template/DefaultNonListCollectionAdapter.java
@@ -69,22 +69,27 @@
this.collection = collection;
}
+ @Override
public TemplateModelIterator iterator() throws TemplateModelException {
return new IteratorToTemplateModelIteratorAdapter(collection.iterator(), getObjectWrapper());
}
+ @Override
public int size() {
return collection.size();
}
+ @Override
public boolean isEmpty() {
return collection.isEmpty();
}
+ @Override
public Object getWrappedObject() {
return collection;
}
+ @Override
public Object getAdaptedObject(Class hint) {
return getWrappedObject();
}
@@ -101,6 +106,7 @@
}
}
+ @Override
public TemplateModel getAPI() throws TemplateModelException {
return ((ObjectWrapperWithAPISupport) getObjectWrapper()).wrapAsAPI(collection);
}
diff --git a/src/main/java/freemarker/template/DefaultObjectWrapperBuilder.java b/src/main/java/freemarker/template/DefaultObjectWrapperBuilder.java
index 1890ba9..dc925db 100644
--- a/src/main/java/freemarker/template/DefaultObjectWrapperBuilder.java
+++ b/src/main/java/freemarker/template/DefaultObjectWrapperBuilder.java
@@ -73,6 +73,7 @@
private static final DefaultObjectWrapperFactory INSTANCE = new DefaultObjectWrapperFactory();
+ @Override
public DefaultObjectWrapper create(DefaultObjectWrapperConfiguration bwConf) {
return new DefaultObjectWrapper(bwConf, true);
}
diff --git a/src/main/java/freemarker/template/EmptyMap.java b/src/main/java/freemarker/template/EmptyMap.java
index 763ac93..354a541 100644
--- a/src/main/java/freemarker/template/EmptyMap.java
+++ b/src/main/java/freemarker/template/EmptyMap.java
@@ -35,38 +35,47 @@
public class EmptyMap implements Map, Cloneable {
public static final EmptyMap instance = new EmptyMap();
+ @Override
public void clear() {
// no op
}
+ @Override
public boolean containsKey(Object arg0) {
return false;
}
+ @Override
public boolean containsValue(Object arg0) {
return false;
}
+ @Override
public Set entrySet() {
return Collections.EMPTY_SET;
}
+ @Override
public Object get(Object arg0) {
return null;
}
+ @Override
public boolean isEmpty() {
return true;
}
+ @Override
public Set keySet() {
return Collections.EMPTY_SET;
}
+ @Override
public Object put(Object arg0, Object arg1) {
throw new UnsupportedOperationException("This Map is read-only.");
}
+ @Override
public void putAll(Map arg0) {
// Checking for arg0.isEmpty() wouldn't reflect precisely how putAll in
// AbstractMap works.
@@ -75,14 +84,17 @@
}
}
+ @Override
public Object remove(Object arg0) {
return null;
}
+ @Override
public int size() {
return 0;
}
+ @Override
public Collection values() {
return Collections.EMPTY_LIST;
}
diff --git a/src/main/java/freemarker/template/FalseTemplateBooleanModel.java b/src/main/java/freemarker/template/FalseTemplateBooleanModel.java
index 02628c8..7bbcc49 100644
--- a/src/main/java/freemarker/template/FalseTemplateBooleanModel.java
+++ b/src/main/java/freemarker/template/FalseTemplateBooleanModel.java
@@ -24,6 +24,7 @@
*/
final class FalseTemplateBooleanModel implements SerializableTemplateBooleanModel {
+ @Override
public boolean getAsBoolean() {
return false;
}
diff --git a/src/main/java/freemarker/template/GeneralPurposeNothing.java b/src/main/java/freemarker/template/GeneralPurposeNothing.java
index cb2d3af..67dbfe9 100644
--- a/src/main/java/freemarker/template/GeneralPurposeNothing.java
+++ b/src/main/java/freemarker/template/GeneralPurposeNothing.java
@@ -41,42 +41,52 @@
return instance;
}
+ @Override
public String getAsString() {
return "";
}
+ @Override
public boolean getAsBoolean() {
return false;
}
+ @Override
public boolean isEmpty() {
return true;
}
+ @Override
public int size() {
return 0;
}
+ @Override
public TemplateModel get(int i) throws TemplateModelException {
throw new TemplateModelException("Can't get item from an empty sequence.");
}
+ @Override
public TemplateModel get(String key) {
return null;
}
+ @Override
public Object exec(List args) {
return null;
}
+ @Override
public TemplateCollectionModel keys() {
return Constants.EMPTY_COLLECTION;
}
+ @Override
public TemplateCollectionModel values() {
return Constants.EMPTY_COLLECTION;
}
+ @Override
public KeyValuePairIterator keyValuePairIterator() throws TemplateModelException {
return Constants.EMPTY_KEY_VALUE_PAIR_ITERATOR;
}
diff --git a/src/main/java/freemarker/template/IteratorToTemplateModelIteratorAdapter.java b/src/main/java/freemarker/template/IteratorToTemplateModelIteratorAdapter.java
index 6b49237..594cd65 100644
--- a/src/main/java/freemarker/template/IteratorToTemplateModelIteratorAdapter.java
+++ b/src/main/java/freemarker/template/IteratorToTemplateModelIteratorAdapter.java
@@ -35,6 +35,7 @@
this.wrapper = wrapper;
}
+ @Override
public TemplateModel next() throws TemplateModelException {
try {
return wrapper.wrap(it.next());
@@ -43,6 +44,7 @@
}
}
+ @Override
public boolean hasNext() throws TemplateModelException {
return it.hasNext();
}
diff --git a/src/main/java/freemarker/template/LocalizedString.java b/src/main/java/freemarker/template/LocalizedString.java
index f65267c..943c7de 100755
--- a/src/main/java/freemarker/template/LocalizedString.java
+++ b/src/main/java/freemarker/template/LocalizedString.java
@@ -44,7 +44,8 @@
abstract public class LocalizedString implements TemplateScalarModel {
- public String getAsString() throws TemplateModelException {
+ @Override
+ public String getAsString() throws TemplateModelException {
Environment env = Environment.getCurrentEnvironment();
Locale locale = env.getLocale();
return getLocalizedString(locale);
diff --git a/src/main/java/freemarker/template/LoggingAttemptExceptionReporter.java b/src/main/java/freemarker/template/LoggingAttemptExceptionReporter.java
index 19c3893..09e54f6 100644
--- a/src/main/java/freemarker/template/LoggingAttemptExceptionReporter.java
+++ b/src/main/java/freemarker/template/LoggingAttemptExceptionReporter.java
@@ -35,6 +35,7 @@
this.logAsWarn = logAsWarn;
}
+ @Override
public void report(TemplateException te, Environment env) {
String message = "Error executing FreeMarker template part in the #attempt block";
if (!logAsWarn) {
diff --git a/src/main/java/freemarker/template/MapKeyValuePairIterator.java b/src/main/java/freemarker/template/MapKeyValuePairIterator.java
index 05e1356..3cc0171 100644
--- a/src/main/java/freemarker/template/MapKeyValuePairIterator.java
+++ b/src/main/java/freemarker/template/MapKeyValuePairIterator.java
@@ -43,18 +43,22 @@
this.objectWrapper = objectWrapper;
}
+ @Override
public boolean hasNext() {
return entrySetIterator.hasNext();
}
+ @Override
public KeyValuePair next() {
final Entry<?, ?> entry = entrySetIterator.next();
return new KeyValuePair() {
+ @Override
public TemplateModel getKey() throws TemplateModelException {
return wrap(entry.getKey());
}
+ @Override
public TemplateModel getValue() throws TemplateModelException {
return wrap(entry.getValue());
}
diff --git a/src/main/java/freemarker/template/SimpleCollection.java b/src/main/java/freemarker/template/SimpleCollection.java
index 46e8671..ec19581 100644
--- a/src/main/java/freemarker/template/SimpleCollection.java
+++ b/src/main/java/freemarker/template/SimpleCollection.java
@@ -104,6 +104,7 @@
* <tt>TemplateModelException</tt> when you try to call their methods, since the wrapped <tt>Iterator</tt>
* can't return the first element anymore.
*/
+ @Override
public TemplateModelIterator iterator() {
return iterator != null
? new SimpleTemplateModelIterator(iterator, false)
@@ -126,6 +127,7 @@
this.iteratorOwnedByMe = iteratorOwnedByMe;
}
+ @Override
public TemplateModel next() throws TemplateModelException {
if (!iteratorOwnedByMe) {
synchronized (SimpleCollection.this) {
@@ -143,6 +145,7 @@
return value instanceof TemplateModel ? (TemplateModel) value : wrap(value);
}
+ @Override
public boolean hasNext() throws TemplateModelException {
// Calling hasNext may looks safe, but I have met sync. problems.
if (!iteratorOwnedByMe) {
diff --git a/src/main/java/freemarker/template/SimpleDate.java b/src/main/java/freemarker/template/SimpleDate.java
index c8b9963..b92b335 100644
--- a/src/main/java/freemarker/template/SimpleDate.java
+++ b/src/main/java/freemarker/template/SimpleDate.java
@@ -64,10 +64,12 @@
this.type = type;
}
+ @Override
public java.util.Date getAsDate() {
return date;
}
+ @Override
public int getDateType() {
return type;
}
diff --git a/src/main/java/freemarker/template/SimpleHash.java b/src/main/java/freemarker/template/SimpleHash.java
index f32ebb2..ff5510e 100644
--- a/src/main/java/freemarker/template/SimpleHash.java
+++ b/src/main/java/freemarker/template/SimpleHash.java
@@ -209,6 +209,7 @@
put(key, b ? TemplateBooleanModel.TRUE : TemplateBooleanModel.FALSE);
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
Object result;
try {
@@ -345,22 +346,27 @@
return map.toString();
}
+ @Override
public int size() {
return map.size();
}
+ @Override
public boolean isEmpty() {
return map == null || map.isEmpty();
}
+ @Override
public TemplateCollectionModel keys() {
return new SimpleCollection(map.keySet(), getObjectWrapper());
}
+ @Override
public TemplateCollectionModel values() {
return new SimpleCollection(map.values(), getObjectWrapper());
}
+ @Override
public KeyValuePairIterator keyValuePairIterator() {
return new MapKeyValuePairIterator(map, getObjectWrapper());
}
diff --git a/src/main/java/freemarker/template/SimpleNumber.java b/src/main/java/freemarker/template/SimpleNumber.java
index 860b68c..5de9cc7 100644
--- a/src/main/java/freemarker/template/SimpleNumber.java
+++ b/src/main/java/freemarker/template/SimpleNumber.java
@@ -63,6 +63,7 @@
this.value = Double.valueOf(val);
}
+ @Override
public Number getAsNumber() {
return value;
}
diff --git a/src/main/java/freemarker/template/SimpleScalar.java b/src/main/java/freemarker/template/SimpleScalar.java
index ea44017..a5f31ad 100644
--- a/src/main/java/freemarker/template/SimpleScalar.java
+++ b/src/main/java/freemarker/template/SimpleScalar.java
@@ -48,6 +48,7 @@
this.value = value;
}
+ @Override
public String getAsString() {
return (value == null) ? "" : value;
}
diff --git a/src/main/java/freemarker/template/SimpleSequence.java b/src/main/java/freemarker/template/SimpleSequence.java
index cf5560f..a6b5aea 100644
--- a/src/main/java/freemarker/template/SimpleSequence.java
+++ b/src/main/java/freemarker/template/SimpleSequence.java
@@ -233,6 +233,7 @@
* Returns the item at the specified index of the list. If the item isn't yet an {@link TemplateModel}, it will wrap
* it to one now, and writes it back into the backing list.
*/
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
try {
Object value = list.get(index);
@@ -247,6 +248,7 @@
}
}
+ @Override
public int size() {
return list.size();
}
diff --git a/src/main/java/freemarker/template/TemplateException.java b/src/main/java/freemarker/template/TemplateException.java
index 7290a16..f0781b1 100644
--- a/src/main/java/freemarker/template/TemplateException.java
+++ b/src/main/java/freemarker/template/TemplateException.java
@@ -606,18 +606,22 @@
this.out = out;
}
+ @Override
public void print(Object obj) {
out.print(obj);
}
+ @Override
public void println(Object obj) {
out.println(obj);
}
+ @Override
public void println() {
out.println();
}
+ @Override
public void printStandardStackTrace(Throwable exception) {
if (exception instanceof TemplateException) {
((TemplateException) exception).printStandardStackTrace(out);
@@ -636,18 +640,22 @@
this.out = out;
}
+ @Override
public void print(Object obj) {
out.print(obj);
}
+ @Override
public void println(Object obj) {
out.println(obj);
}
+ @Override
public void println() {
out.println();
}
+ @Override
public void printStandardStackTrace(Throwable exception) {
if (exception instanceof TemplateException) {
((TemplateException) exception).printStandardStackTrace(out);
diff --git a/src/main/java/freemarker/template/TemplateExceptionHandler.java b/src/main/java/freemarker/template/TemplateExceptionHandler.java
index d1c25e9..628f011 100644
--- a/src/main/java/freemarker/template/TemplateExceptionHandler.java
+++ b/src/main/java/freemarker/template/TemplateExceptionHandler.java
@@ -59,6 +59,7 @@
* other {@link TemplateExceptionHandler}-s.
*/
TemplateExceptionHandler IGNORE_HANDLER = new TemplateExceptionHandler() {
+ @Override
public void handleTemplateException(TemplateException te, Environment env, Writer out) {
// Do nothing
}
@@ -69,6 +70,7 @@
* in most production systems.
*/
TemplateExceptionHandler RETHROW_HANDLER = new TemplateExceptionHandler() {
+ @Override
public void handleTemplateException(TemplateException te, Environment env, Writer out)
throws TemplateException {
throw te;
@@ -80,6 +82,7 @@
* handler outputs the stack trace information to the client and then re-throws the exception.
*/
TemplateExceptionHandler DEBUG_HANDLER = new TemplateExceptionHandler() {
+ @Override
public void handleTemplateException(TemplateException te, Environment env, Writer out)
throws TemplateException {
if (!env.isInAttemptBlock()) {
@@ -99,6 +102,7 @@
* well readable in the browser, and then re-throws the exception.
*/
TemplateExceptionHandler HTML_DEBUG_HANDLER = new TemplateExceptionHandler() {
+ @Override
public void handleTemplateException(TemplateException te, Environment env, Writer out)
throws TemplateException {
if (!env.isInAttemptBlock()) {
diff --git a/src/main/java/freemarker/template/TemplateMethodModelEx.java b/src/main/java/freemarker/template/TemplateMethodModelEx.java
index 689aa70..60ccb37 100644
--- a/src/main/java/freemarker/template/TemplateMethodModelEx.java
+++ b/src/main/java/freemarker/template/TemplateMethodModelEx.java
@@ -48,6 +48,7 @@
* wrapped using the {@link Environment#getObjectWrapper() environment's
* object wrapper}.
*/
+ @Override
public Object exec(List arguments) throws TemplateModelException;
}
\ No newline at end of file
diff --git a/src/main/java/freemarker/template/TemplateModelListSequence.java b/src/main/java/freemarker/template/TemplateModelListSequence.java
index 2077e42..5f48c58 100644
--- a/src/main/java/freemarker/template/TemplateModelListSequence.java
+++ b/src/main/java/freemarker/template/TemplateModelListSequence.java
@@ -34,10 +34,12 @@
this.list = list;
}
+ @Override
public TemplateModel get(int index) {
return (TemplateModel) list.get(index);
}
+ @Override
public int size() {
return list.size();
}
diff --git a/src/main/java/freemarker/template/TrueTemplateBooleanModel.java b/src/main/java/freemarker/template/TrueTemplateBooleanModel.java
index da26499..5b24f9b 100644
--- a/src/main/java/freemarker/template/TrueTemplateBooleanModel.java
+++ b/src/main/java/freemarker/template/TrueTemplateBooleanModel.java
@@ -24,6 +24,7 @@
*/
final class TrueTemplateBooleanModel implements SerializableTemplateBooleanModel {
+ @Override
public boolean getAsBoolean() {
return true;
}
diff --git a/src/main/java/freemarker/template/utility/CaptureOutput.java b/src/main/java/freemarker/template/utility/CaptureOutput.java
index 9bab1f1..686090a 100644
--- a/src/main/java/freemarker/template/utility/CaptureOutput.java
+++ b/src/main/java/freemarker/template/utility/CaptureOutput.java
@@ -61,6 +61,7 @@
@Deprecated
public class CaptureOutput implements TemplateTransformModel {
+ @Override
public Writer getWriter(final Writer out, final Map args) throws TemplateModelException {
String errmsg = "Must specify the name of the variable in "
+ "which to capture the output with the 'var' or 'local' or 'global' parameter.";
diff --git a/src/main/java/freemarker/template/utility/Constants.java b/src/main/java/freemarker/template/utility/Constants.java
index 8392c01..07ccdc0 100644
--- a/src/main/java/freemarker/template/utility/Constants.java
+++ b/src/main/java/freemarker/template/utility/Constants.java
@@ -62,10 +62,12 @@
private static class EmptyIteratorModel implements TemplateModelIterator, Serializable {
+ @Override
public TemplateModel next() throws TemplateModelException {
throw new TemplateModelException("The collection has no more elements.");
}
+ @Override
public boolean hasNext() throws TemplateModelException {
return false;
}
@@ -76,6 +78,7 @@
private static class EmptyCollectionModel implements TemplateCollectionModel, Serializable {
+ @Override
public TemplateModelIterator iterator() throws TemplateModelException {
return EMPTY_ITERATOR;
}
@@ -86,10 +89,12 @@
private static class EmptySequenceModel implements TemplateSequenceModel, Serializable {
+ @Override
public TemplateModel get(int index) throws TemplateModelException {
return null;
}
+ @Override
public int size() throws TemplateModelException {
return 0;
}
@@ -109,26 +114,32 @@
*/
private static class EmptyHashModel implements TemplateHashModelEx2, Serializable {
+ @Override
public int size() throws TemplateModelException {
return 0;
}
+ @Override
public TemplateCollectionModel keys() throws TemplateModelException {
return EMPTY_COLLECTION;
}
+ @Override
public TemplateCollectionModel values() throws TemplateModelException {
return EMPTY_COLLECTION;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
return null;
}
+ @Override
public boolean isEmpty() throws TemplateModelException {
return true;
}
+ @Override
public KeyValuePairIterator keyValuePairIterator() throws TemplateModelException {
return EMPTY_KEY_VALUE_PAIR_ITERATOR;
}
@@ -145,10 +156,12 @@
//
}
+ @Override
public boolean hasNext() throws TemplateModelException {
return false;
}
+ @Override
public TemplateHashModelEx2.KeyValuePair next() throws TemplateModelException {
throw new NoSuchElementException("Can't retrieve element from empty key-value pair iterator.");
}
diff --git a/src/main/java/freemarker/template/utility/DOMNodeModel.java b/src/main/java/freemarker/template/utility/DOMNodeModel.java
index 404fe45..b1c6f1b 100644
--- a/src/main/java/freemarker/template/utility/DOMNodeModel.java
+++ b/src/main/java/freemarker/template/utility/DOMNodeModel.java
@@ -61,6 +61,7 @@
this.node = node;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
TemplateModel result = null;
if (equivalenceTable.containsKey(key)) {
@@ -128,6 +129,7 @@
return result;
}
+ @Override
public boolean isEmpty() {
return false;
}
@@ -216,6 +218,7 @@
class AncestorByName implements TemplateMethodModel {
+ @Override
public Object exec(List arguments) throws TemplateModelException {
if (arguments.size() != 1) {
throw new TemplateModelException("Expecting exactly one string argument here");
@@ -243,6 +246,7 @@
nodes = new TemplateModel[nodeList.getLength()];
}
+ @Override
public TemplateModel get(int index) {
DOMNodeModel result = (DOMNodeModel) nodes[index];
if (result == null) {
@@ -253,10 +257,12 @@
return result;
}
+ @Override
public int size() {
return nodes.length;
}
+ @Override
public Object exec(List arguments) throws TemplateModelException {
if (arguments.size() != 1) {
throw new TemplateModelException("Expecting exactly one string argument here");
diff --git a/src/main/java/freemarker/template/utility/DateUtil.java b/src/main/java/freemarker/template/utility/DateUtil.java
index eb37ba4..a4db6e5 100644
--- a/src/main/java/freemarker/template/utility/DateUtil.java
+++ b/src/main/java/freemarker/template/utility/DateUtil.java
@@ -843,6 +843,7 @@
private GregorianCalendar calendar;
private TimeZone lastlySetTimeZone;
+ @Override
public GregorianCalendar get(TimeZone tz, Date date) {
if (calendar == null) {
calendar = new GregorianCalendar(tz, Locale.US);
@@ -869,6 +870,7 @@
private GregorianCalendar calendar;
private TimeZone lastlySetTimeZone;
+ @Override
public Date calculate(int era, int year, int month, int day, int hours, int minutes, int secs, int millisecs,
boolean addOneDay, TimeZone tz) {
if (calendar == null) {
diff --git a/src/main/java/freemarker/template/utility/Execute.java b/src/main/java/freemarker/template/utility/Execute.java
index 4542a08..d649b45 100644
--- a/src/main/java/freemarker/template/utility/Execute.java
+++ b/src/main/java/freemarker/template/utility/Execute.java
@@ -69,6 +69,7 @@
* of the arguments passed to the method.
* @return the <tt>TemplateModel</tt> produced by the method, or null.
*/
+ @Override
public Object exec (List arguments) throws TemplateModelException {
String aExecute;
StringBuilder aOutputBuffer = new StringBuilder();
diff --git a/src/main/java/freemarker/template/utility/HtmlEscape.java b/src/main/java/freemarker/template/utility/HtmlEscape.java
index 6b6f100..c8bd79d 100644
--- a/src/main/java/freemarker/template/utility/HtmlEscape.java
+++ b/src/main/java/freemarker/template/utility/HtmlEscape.java
@@ -59,6 +59,7 @@
private static final char[] AMP = "&".toCharArray();
private static final char[] QUOT = """.toCharArray();
+ @Override
public Writer getWriter(final Writer out, Map args) {
return new Writer()
{
diff --git a/src/main/java/freemarker/template/utility/JythonRuntime.java b/src/main/java/freemarker/template/utility/JythonRuntime.java
index 91e8625..026c638 100644
--- a/src/main/java/freemarker/template/utility/JythonRuntime.java
+++ b/src/main/java/freemarker/template/utility/JythonRuntime.java
@@ -35,6 +35,7 @@
public class JythonRuntime extends PythonInterpreter
implements TemplateTransformModel {
+ @Override
public Writer getWriter(final Writer out,
final Map args) {
final StringBuilder buf = new StringBuilder();
diff --git a/src/main/java/freemarker/template/utility/NormalizeNewlines.java b/src/main/java/freemarker/template/utility/NormalizeNewlines.java
index 59d5e00..e75a24c 100644
--- a/src/main/java/freemarker/template/utility/NormalizeNewlines.java
+++ b/src/main/java/freemarker/template/utility/NormalizeNewlines.java
@@ -63,6 +63,7 @@
*/
public class NormalizeNewlines implements TemplateTransformModel {
+ @Override
public Writer getWriter(final Writer out,
final Map args) {
final StringBuilder buf = new StringBuilder();
diff --git a/src/main/java/freemarker/template/utility/ObjectConstructor.java b/src/main/java/freemarker/template/utility/ObjectConstructor.java
index 1473160..1f8565b 100644
--- a/src/main/java/freemarker/template/utility/ObjectConstructor.java
+++ b/src/main/java/freemarker/template/utility/ObjectConstructor.java
@@ -39,6 +39,7 @@
* <br><#assign aList = objectConstructor("java.util.ArrayList", 100)>
*/
public class ObjectConstructor implements TemplateMethodModelEx {
+ @Override
public Object exec(List args) throws TemplateModelException {
if (args.isEmpty()) {
throw new TemplateModelException("This method must have at least one argument, the name of the class to instantiate.");
diff --git a/src/main/java/freemarker/template/utility/SecurityUtilities.java b/src/main/java/freemarker/template/utility/SecurityUtilities.java
index a38d502..de6b3a9 100644
--- a/src/main/java/freemarker/template/utility/SecurityUtilities.java
+++ b/src/main/java/freemarker/template/utility/SecurityUtilities.java
@@ -36,6 +36,7 @@
return (String) AccessController.doPrivileged(
new PrivilegedAction()
{
+ @Override
public Object run() {
return System.getProperty(key);
}
@@ -47,6 +48,7 @@
return (String) AccessController.doPrivileged(
new PrivilegedAction()
{
+ @Override
public Object run() {
return System.getProperty(key, defValue);
}
@@ -64,6 +66,7 @@
return (Integer) AccessController.doPrivileged(
new PrivilegedAction()
{
+ @Override
public Object run() {
return Integer.getInteger(key, defValue);
}
diff --git a/src/main/java/freemarker/template/utility/StandardCompress.java b/src/main/java/freemarker/template/utility/StandardCompress.java
index 571afa7..b1d8078 100644
--- a/src/main/java/freemarker/template/utility/StandardCompress.java
+++ b/src/main/java/freemarker/template/utility/StandardCompress.java
@@ -87,6 +87,7 @@
this.defaultBufferSize = defaultBufferSize;
}
+ @Override
public Writer getWriter(final Writer out, Map args)
throws TemplateModelException {
int bufferSize = defaultBufferSize;
diff --git a/src/main/java/freemarker/template/utility/TemplateModelUtils.java b/src/main/java/freemarker/template/utility/TemplateModelUtils.java
index e04d99f..4efff56 100644
--- a/src/main/java/freemarker/template/utility/TemplateModelUtils.java
+++ b/src/main/java/freemarker/template/utility/TemplateModelUtils.java
@@ -78,10 +78,12 @@
keyIter = hash.keys().iterator();
}
+ @Override
public boolean hasNext() throws TemplateModelException {
return keyIter.hasNext();
}
+ @Override
public KeyValuePair next() throws TemplateModelException {
final TemplateModel key = keyIter.next();
if (!(key instanceof TemplateScalarModel)) {
@@ -90,10 +92,12 @@
return new KeyValuePair() {
+ @Override
public TemplateModel getKey() throws TemplateModelException {
return key;
}
+ @Override
public TemplateModel getValue() throws TemplateModelException {
return hash.get(((TemplateScalarModel) key).getAsString());
}
@@ -195,6 +199,7 @@
this.hashes = hashes;
}
+ @Override
public TemplateModel get(String key) throws TemplateModelException {
for (int i = hashes.size() - 1; i >= 0; i--) {
TemplateModel value = hashes.get(i).get(key);
@@ -205,6 +210,7 @@
return null;
}
+ @Override
public boolean isEmpty() throws TemplateModelException {
for (TemplateHashModel hash : hashes) {
if (!hash.isEmpty()) {
@@ -231,16 +237,19 @@
super(hashes);
}
+ @Override
public int size() throws TemplateModelException {
initKeys();
return keys.size();
}
+ @Override
public TemplateCollectionModel keys() throws TemplateModelException {
initKeys();
return keys;
}
+ @Override
public TemplateCollectionModel values() throws TemplateModelException {
initValues();
return values;
diff --git a/src/main/java/freemarker/template/utility/XmlEscape.java b/src/main/java/freemarker/template/utility/XmlEscape.java
index cbf823f..ac6fb71 100644
--- a/src/main/java/freemarker/template/utility/XmlEscape.java
+++ b/src/main/java/freemarker/template/utility/XmlEscape.java
@@ -40,6 +40,7 @@
private static final char[] QUOT = """.toCharArray();
private static final char[] APOS = "'".toCharArray();
+ @Override
public Writer getWriter(final Writer out, Map args) {
return new Writer()
{