This is an automated email from the ASF dual-hosted git repository. cbrisson pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/velocity-engine.git
commit a61a40d14d7cdc9e170165445b09eef1cd5f323a Merge: 9889509 836d28f Author: Claude Brisson <cla...@renegat.net> AuthorDate: Thu Feb 25 22:37:13 2021 +0100 Merge feature/fix-some-generics .../velocity/spring/VelocityEngineFactory.java | 2 +- .../test/VelocityEngineFactoryBeanTests.java | 1 - .../runtime/parser/CustomParserTestCase.java | 5 +- .../main/java/org/apache/velocity/Template.java | 18 ++-- .../java/org/apache/velocity/VelocityContext.java | 17 +++- .../org/apache/velocity/app/FieldMethodizer.java | 7 +- .../org/apache/velocity/app/VelocityEngine.java | 1 - .../apache/velocity/app/event/EventCartridge.java | 12 +-- .../velocity/app/event/EventHandlerUtil.java | 2 +- .../app/event/MethodExceptionEventHandler.java | 2 +- .../app/event/implement/EscapeHtmlReference.java | 2 + .../event/implement/EscapeJavaScriptReference.java | 2 + .../app/event/implement/EscapeReference.java | 2 + .../app/event/implement/EscapeSqlReference.java | 2 + .../app/event/implement/EscapeXmlReference.java | 2 + .../app/event/implement/IncludeNotFound.java | 7 +- .../app/event/implement/IncludeRelativePath.java | 1 + .../app/event/implement/PrintExceptions.java | 4 +- .../event/implement/ReportInvalidReferences.java | 15 ++-- .../apache/velocity/context/AbstractContext.java | 5 ++ .../context/ChainedInternalContextAdapter.java | 29 ++++++- .../context/InternalContextAdapterImpl.java | 41 +++++++-- .../velocity/context/InternalContextBase.java | 39 ++++++--- .../context/InternalHousekeepingContext.java | 5 +- .../exception/MethodInvocationException.java | 4 + .../velocity/exception/ParseErrorException.java | 1 + .../velocity/exception/TemplateInitException.java | 3 + .../org/apache/velocity/io/UnicodeInputStream.java | 9 ++ .../org/apache/velocity/io/VelocityWriter.java | 8 ++ .../apache/velocity/runtime/ParserPoolImpl.java | 3 + .../apache/velocity/runtime/RuntimeInstance.java | 99 +++++++++++++++------- .../apache/velocity/runtime/RuntimeServices.java | 1 - .../apache/velocity/runtime/RuntimeSingleton.java | 10 --- .../velocity/runtime/VelocimacroFactory.java | 6 +- .../velocity/runtime/VelocimacroManager.java | 27 +++--- .../apache/velocity/runtime/directive/Block.java | 5 +- .../velocity/runtime/directive/BlockMacro.java | 3 + .../apache/velocity/runtime/directive/Break.java | 7 +- .../apache/velocity/runtime/directive/Define.java | 6 +- .../velocity/runtime/directive/Directive.java | 1 - .../velocity/runtime/directive/Evaluate.java | 8 +- .../apache/velocity/runtime/directive/Foreach.java | 10 ++- .../apache/velocity/runtime/directive/Include.java | 9 +- .../apache/velocity/runtime/directive/Macro.java | 14 +-- .../runtime/directive/MacroParseException.java | 8 +- .../apache/velocity/runtime/directive/Parse.java | 28 +++--- .../velocity/runtime/directive/RuntimeMacro.java | 19 +++-- .../apache/velocity/runtime/directive/Scope.java | 12 +-- .../apache/velocity/runtime/directive/Stop.java | 7 +- .../velocity/runtime/directive/StopCommand.java | 1 + .../runtime/directive/VelocimacroProxy.java | 5 +- .../velocity/runtime/directive/contrib/For.java | 11 ++- .../apache/velocity/runtime/parser/CharStream.java | 5 +- .../apache/velocity/runtime/parser/LogContext.java | 3 +- .../velocity/runtime/parser/ParseException.java | 10 ++- .../runtime/parser/TemplateParseException.java | 8 +- .../runtime/parser/VelocityCharStream.java | 28 +++--- .../velocity/runtime/parser/node/ASTAddNode.java | 1 + .../velocity/runtime/parser/node/ASTAndNode.java | 5 +- .../runtime/parser/node/ASTAssignment.java | 4 +- .../runtime/parser/node/ASTBinaryOperator.java | 3 +- .../velocity/runtime/parser/node/ASTBlock.java | 7 +- .../velocity/runtime/parser/node/ASTComment.java | 5 +- .../runtime/parser/node/ASTComparisonNode.java | 4 + .../velocity/runtime/parser/node/ASTDirective.java | 7 +- .../runtime/parser/node/ASTDirectiveAssign.java | 8 +- .../velocity/runtime/parser/node/ASTDivNode.java | 1 + .../velocity/runtime/parser/node/ASTEQNode.java | 3 +- .../runtime/parser/node/ASTElseIfStatement.java | 10 ++- .../runtime/parser/node/ASTElseStatement.java | 7 +- .../velocity/runtime/parser/node/ASTEscape.java | 7 +- .../runtime/parser/node/ASTEscapedDirective.java | 5 +- .../runtime/parser/node/ASTExpression.java | 10 ++- .../velocity/runtime/parser/node/ASTFalse.java | 10 ++- .../parser/node/ASTFloatingPointLiteral.java | 14 +-- .../velocity/runtime/parser/node/ASTGENode.java | 1 + .../velocity/runtime/parser/node/ASTGTNode.java | 1 + .../runtime/parser/node/ASTIdentifier.java | 16 ++-- .../runtime/parser/node/ASTIfStatement.java | 21 +++-- .../runtime/parser/node/ASTIncludeStatement.java | 4 +- .../velocity/runtime/parser/node/ASTIndex.java | 15 ++-- .../runtime/parser/node/ASTIntegerLiteral.java | 12 ++- .../runtime/parser/node/ASTIntegerRange.java | 7 +- .../velocity/runtime/parser/node/ASTLENode.java | 1 + .../velocity/runtime/parser/node/ASTLTNode.java | 1 + .../runtime/parser/node/ASTLogicalOperator.java | 3 +- .../velocity/runtime/parser/node/ASTMap.java | 10 ++- .../velocity/runtime/parser/node/ASTMathNode.java | 3 + .../velocity/runtime/parser/node/ASTMethod.java | 28 +++--- .../velocity/runtime/parser/node/ASTModNode.java | 4 +- .../velocity/runtime/parser/node/ASTMulNode.java | 4 +- .../runtime/parser/node/ASTNegateNode.java | 8 +- .../velocity/runtime/parser/node/ASTNotNode.java | 10 ++- .../runtime/parser/node/ASTObjectArray.java | 12 ++- .../velocity/runtime/parser/node/ASTOrNode.java | 5 +- .../runtime/parser/node/ASTParameters.java | 1 + .../velocity/runtime/parser/node/ASTReference.java | 25 +++--- .../runtime/parser/node/ASTSetDirective.java | 8 +- .../runtime/parser/node/ASTStringLiteral.java | 8 +- .../runtime/parser/node/ASTSubtractNode.java | 1 + .../velocity/runtime/parser/node/ASTText.java | 8 +- .../velocity/runtime/parser/node/ASTTextblock.java | 7 +- .../velocity/runtime/parser/node/ASTTrue.java | 6 +- .../velocity/runtime/parser/node/ASTVariable.java | 4 +- .../velocity/runtime/parser/node/ASTWord.java | 4 +- .../velocity/runtime/parser/node/ASTprocess.java | 4 +- .../parser/node/BooleanPropertyExecutor.java | 9 +- .../velocity/runtime/parser/node/GetExecutor.java | 7 +- .../runtime/parser/node/MapGetExecutor.java | 1 + .../runtime/parser/node/MapSetExecutor.java | 9 +- .../velocity/runtime/parser/node/MathUtils.java | 8 +- .../apache/velocity/runtime/parser/node/Node.java | 1 + .../runtime/parser/node/ParserVisitor.java | 6 -- .../runtime/parser/node/PropertyExecutor.java | 9 +- .../runtime/parser/node/PublicFieldExecutor.java | 8 +- .../velocity/runtime/parser/node/PutExecutor.java | 7 +- .../runtime/parser/node/SetPropertyExecutor.java | 7 +- .../parser/node/SetPublicFieldExecutor.java | 8 +- .../velocity/runtime/parser/node/SimpleNode.java | 37 +++++++- .../velocity/runtime/resource/ContentResource.java | 1 + .../runtime/resource/ResourceCacheImpl.java | 16 ++-- .../runtime/resource/ResourceManagerImpl.java | 9 +- .../resource/loader/ClasspathResourceLoader.java | 10 ++- .../resource/loader/DataSourceResourceLoader.java | 9 +- .../resource/loader/FileResourceLoader.java | 13 ++- .../runtime/resource/loader/JarHolder.java | 11 +-- .../runtime/resource/loader/JarResourceLoader.java | 21 +++-- .../resource/loader/StringResourceLoader.java | 9 +- .../runtime/resource/loader/URLResourceLoader.java | 13 +-- .../util/StringResourceRepositoryImpl.java | 11 ++- .../velocity/runtime/visitor/BaseVisitor.java | 43 ++++++++++ .../velocity/runtime/visitor/NodeViewMode.java | 40 ++++++++- .../org/apache/velocity/util/ArrayIterator.java | 3 + .../org/apache/velocity/util/ArrayListWrapper.java | 4 + .../java/org/apache/velocity/util/ClassUtils.java | 22 ++--- .../util/DeprecationAwareExtProperties.java | 5 +- .../java/org/apache/velocity/util/DuckType.java | 15 ++-- .../apache/velocity/util/EnumerationIterator.java | 3 + .../org/apache/velocity/util/ExtProperties.java | 47 +++++----- .../AbstractChainableUberspector.java | 6 ++ .../velocity/util/introspection/ClassFieldMap.java | 28 +++--- .../velocity/util/introspection/ClassMap.java | 30 +++---- .../util/introspection/ConversionHandler.java | 6 +- .../util/introspection/IntrospectionCacheData.java | 2 +- .../util/introspection/IntrospectionUtils.java | 35 ++++---- .../velocity/util/introspection/Introspector.java | 3 +- .../util/introspection/IntrospectorBase.java | 4 +- .../util/introspection/IntrospectorCache.java | 16 ++-- .../util/introspection/LinkingUberspector.java | 5 ++ .../velocity/util/introspection/MethodMap.java | 39 +++++---- .../introspection/SecureIntrospectorControl.java | 2 +- .../util/introspection/SecureIntrospectorImpl.java | 16 ++-- .../util/introspection/SecureUberspector.java | 2 + .../util/introspection/TypeConversionHandler.java | 6 +- .../introspection/TypeConversionHandlerImpl.java | 24 +++--- .../velocity/util/introspection/UberspectImpl.java | 70 +++++++++------ .../util/introspection/UberspectPublicFields.java | 16 ++-- .../velocity/util/introspection/VelMethod.java | 2 +- .../test/AbsoluteFileResourceLoaderTestCase.java | 1 + .../velocity/test/AlternateValuesTestCase.java | 17 ---- .../apache/velocity/test/ArrayMethodsTestCase.java | 2 +- .../org/apache/velocity/test/BaseTestCase.java | 4 +- .../velocity/test/BreakDirectiveTestCase.java | 1 + .../velocity/test/BuiltInEventHandlerTestCase.java | 3 +- .../velocity/test/ClassloaderChangeTestCase.java | 2 + .../velocity/test/ClasspathResourceTestCase.java | 1 + .../test/ContextAutoreferenceKeyTestCase.java | 2 + .../velocity/test/ContextSafetyTestCase.java | 9 +- .../org/apache/velocity/test/EncodingTestCase.java | 6 +- .../org/apache/velocity/test/EvaluateTestCase.java | 2 +- .../velocity/test/EventHandlingTestCase.java | 12 ++- .../test/ExpressionAsMethodArgumentTestCase.java | 1 + .../test/FilteredEventHandlingTestCase.java | 2 +- .../velocity/test/HyphenInIdentifiersTestCase.java | 2 +- .../velocity/test/IfEmptyNoEmptyCheckTestCase.java | 6 -- .../org/apache/velocity/test/IfNullTestCase.java | 1 + .../apache/velocity/test/IncludeErrorTestCase.java | 1 + .../test/IncludeEventHandlingTestCase.java | 7 +- .../org/apache/velocity/test/IndexTestCase.java | 1 + .../org/apache/velocity/test/InfoTestCase.java | 1 + .../velocity/test/InlineScopeVMTestCase.java | 1 + .../test/IntrospectionCacheDataTestCase.java | 1 + .../apache/velocity/test/IntrospectorTestCase.java | 1 + .../velocity/test/InvalidEventHandlerTestCase.java | 11 ++- .../velocity/test/MacroAutoReloadTestCase.java | 1 + .../velocity/test/MacroCommentsTestCase.java | 1 + .../velocity/test/MacroDefaultArgTestCase.java | 1 + .../velocity/test/MacroForwardDefineTestCase.java | 1 + .../velocity/test/MethodCacheKeyTestCase.java | 3 +- .../test/MethodInvocationExceptionTestCase.java | 1 + .../velocity/test/MethodOverloadingTestCase.java | 5 +- .../apache/velocity/test/MultiLoaderTestCase.java | 1 + .../test/MultipleFileResourcePathTestCase.java | 1 + .../velocity/test/NumberMethodCallsTestCase.java | 1 + .../velocity/test/OldPropertiesTestCase.java | 3 +- .../velocity/test/ParseExceptionTestCase.java | 1 + .../velocity/test/ParseWithMacroLibsTestCase.java | 12 +-- .../test/PropertyMethodPrecedenceTestCase.java | 1 + .../velocity/test/RenderVelocityTemplateTest.java | 1 + .../velocity/test/ResourceCachingTestCase.java | 1 + .../velocity/test/ResourceExistsTestCase.java | 1 + .../test/ResourceLoaderInstanceTestCase.java | 1 + .../org/apache/velocity/test/ScopeTestCase.java | 1 + .../java/org/apache/velocity/test/SetTestCase.java | 5 +- .../velocity/test/SpaceGobblingTestCase.java | 8 +- .../velocity/test/StopDirectiveTestCase.java | 1 + .../test/StrictAlternateValuesTestCase.java | 1 + .../velocity/test/StrictCompareTestCase.java | 1 + .../apache/velocity/test/StrictEscapeTestCase.java | 1 + .../velocity/test/StrictForeachTestCase.java | 1 + .../apache/velocity/test/StrictMathTestCase.java | 1 + .../velocity/test/StrictReferenceTestCase.java | 1 + .../velocity/test/StringConcatenationTestCase.java | 1 + .../StringResourceLoaderRepositoryTestCase.java | 1 + .../test/StringResourceLoaderTestCase.java | 1 + .../org/apache/velocity/test/TemplateTestCase.java | 4 +- .../test/URLResourceLoaderTimeoutTestCase.java | 1 + .../apache/velocity/test/UberspectorTestCase.java | 1 + .../apache/velocity/test/VMLibraryTestCase.java | 43 +++++----- .../velocity/test/VarargMethodsTestCase.java | 4 +- .../velocity/test/VelocimacroBCModeTestCase.java | 1 + .../apache/velocity/test/VelocimacroTestCase.java | 1 + .../velocity/test/WrappedExceptionTestCase.java | 1 + .../velocity/test/eventhandler/Handler1.java | 5 +- .../velocity/test/eventhandler/Handler2.java | 5 +- .../velocity/test/issues/VelTools66TestCase.java | 12 ++- .../velocity/test/issues/Velocity537TestCase.java | 1 + .../velocity/test/issues/Velocity544TestCase.java | 3 +- .../velocity/test/issues/Velocity579TestCase.java | 2 + .../velocity/test/issues/Velocity580TestCase.java | 1 + .../velocity/test/issues/Velocity615TestCase.java | 1 + .../velocity/test/issues/Velocity616TestCase.java | 1 + .../velocity/test/issues/Velocity627TestCase.java | 1 + .../velocity/test/issues/Velocity62TestCase.java | 1 + .../velocity/test/issues/Velocity631TestCase.java | 1 + .../velocity/test/issues/Velocity644TestCase.java | 1 + .../velocity/test/issues/Velocity689TestCase.java | 3 + .../velocity/test/issues/Velocity701TestCase.java | 2 + .../velocity/test/issues/Velocity702TestCase.java | 1 + .../velocity/test/issues/Velocity742TestCase.java | 1 + .../velocity/test/issues/Velocity747TestCase.java | 1 + .../velocity/test/issues/Velocity758TestCase.java | 1 + .../velocity/test/issues/Velocity855TestCase.java | 1 + .../velocity/test/issues/Velocity919TestCase.java | 14 --- .../velocity/test/issues/Velocity924TestCase.java | 1 + .../velocity/test/issues/Velocity926TestCase.java | 1 - .../test/misc/ExceptionGeneratingDirective.java | 3 + .../test/misc/ExceptionGeneratingEventHandler.java | 7 +- .../misc/ExceptionGeneratingResourceLoader.java | 4 + .../org/apache/velocity/test/misc/TestContext.java | 5 ++ .../org/apache/velocity/test/misc/TestLogger.java | 30 +++++++ .../velocity/test/misc/UberspectTestException.java | 1 + .../velocity/test/misc/UberspectTestImpl.java | 2 + .../org/apache/velocity/test/provider/Child.java | 1 + .../apache/velocity/test/provider/TestNumber.java | 1 + .../velocity/test/provider/TestProvider.java | 6 +- .../org/apache/velocity/test/sql/DBHelper.java | 1 - .../test/sql/DataSourceResourceLoaderTestCase.java | 1 + .../apache/velocity/test/sql/TestDataSource.java | 9 ++ .../introspection/ChainedUberspectorsTestCase.java | 4 + .../test/util/introspection/ClassMapTestCase.java | 2 + .../introspection/ConversionHandlerTestCase.java | 15 ++-- .../DeprecatedCheckUberspectorsTestCase.java | 2 + .../EnumConstantConversionTestCase.java | 1 + .../util/introspection/UberspectImplTestCase.java | 3 +- .../org/apache/velocity/example/DBContext.java | 9 +- .../org/apache/velocity/example/EventExample.java | 42 ++++++++- .../apache/velocity/example/TreeMapContext.java | 12 ++- .../velocity/script/VelocityScriptEngine.java | 6 ++ .../script/VelocityScriptEngineFactory.java | 18 +++- 270 files changed, 1452 insertions(+), 698 deletions(-) diff --cc velocity-engine-core/src/main/java/org/apache/velocity/util/introspection/SecureIntrospectorImpl.java index 65aa04c,fea0330..c07534e --- a/velocity-engine-core/src/main/java/org/apache/velocity/util/introspection/SecureIntrospectorImpl.java +++ b/velocity-engine-core/src/main/java/org/apache/velocity/util/introspection/SecureIntrospectorImpl.java @@@ -85,34 -86,35 +86,35 @@@ public class SecureIntrospectorImpl ext * @param methodName Name of method to be called * @see org.apache.velocity.util.introspection.SecureIntrospectorControl#checkObjectExecutePermission(java.lang.Class, java.lang.String) */ - public boolean checkObjectExecutePermission(Class clazz, String methodName) + @Override + public boolean checkObjectExecutePermission(Class<?> clazz, String methodName) { - /** - /* - * check for wait and notify - */ ++ /* + * check for wait and notify + */ if (methodName != null && (methodName.equals("wait") || methodName.equals("notify")) ) - { - return false; - } + { + return false; + } - /** - /* - * Always allow the most common classes - Number, Boolean and String - */ - else if (Number.class.isAssignableFrom(clazz)) - { - return true; - } - else if (Boolean.class.isAssignableFrom(clazz)) - { - return true; - } - else if (String.class.isAssignableFrom(clazz)) - { - return true; - } ++ /* + * Always allow the most common classes - Number, Boolean and String + */ + else if (Number.class.isAssignableFrom(clazz)) + { + return true; + } + else if (Boolean.class.isAssignableFrom(clazz)) + { + return true; + } + else if (String.class.isAssignableFrom(clazz)) + { + return true; + } - /** + /* * Always allow Class.getName() */ else if (Class.class.isAssignableFrom(clazz) && @@@ -121,16 -123,7 +123,16 @@@ return true; } - /** ++ /* + * Always disallow ClassLoader, Thread and subclasses + */ + if (ClassLoader.class.isAssignableFrom(clazz) || + Thread.class.isAssignableFrom(clazz)) + { + return false; + } + - /** + /* * check the classname (minus any array info) * whether it matches disallowed classes or packages */