| /* |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the License. |
| */ |
| package org.apache.myfaces.extensions.scripting.core.dependencyScan; |
| |
| import org.apache.myfaces.extensions.scripting.api.ScriptingConst; |
| import org.apache.myfaces.extensions.scripting.core.dependencyScan.StandardDependencyScanner; |
| import org.apache.myfaces.extensions.scripting.core.dependencyScan.core.ClassDependencies; |
| import org.apache.myfaces.extensions.scripting.core.dependencyScan.filter.WhitelistFilter; |
| import org.apache.myfaces.extensions.scripting.core.dependencyScan.registry.DependencyRegistryImpl; |
| import org.apache.myfaces.extensions.scripting.core.dependencyScan.registry.ExternalFilterDependencyRegistry; |
| import org.junit.Test; |
| |
| import java.util.logging.Logger; |
| |
| import static org.junit.Assert.assertFalse; |
| import static org.junit.Assert.assertTrue; |
| |
| /** |
| * @author Werner Punz (latest modification by $Author$) |
| * @version $Revision$ $Date$ |
| */ |
| public class DependencyScannerTest { |
| |
| Logger log = Logger.getLogger(DependencyScannerTest.class.getName()); |
| |
| private static final String PROBE1 = "org.apache.myfaces.extensions.scripting.core.dependencyScan.probes.Probe"; |
| private static final String PROBE2 = "org.apache.myfaces.extensions.scripting.core.dependencyScan.probes.Probe2"; |
| private static final String PROBE3 = "org.apache.myfaces.extensions.scripting.core.dependencyScan.probes.Probe3"; |
| private static final String PROBE4 = "org.apache.myfaces.extensions.scripting.core.dependencyScan.probes.Probe4"; |
| private static final String GENERICS_PROBE = "org.apache.myfaces.extensions.scripting.core.dependencyScan.probes.GenericsProbe"; |
| |
| private static final String PROBE_PAR = "org.apache.myfaces.extensions.scripting.core.dependencyScan.probes.ProbeParent"; |
| private static final String DUMMY = "org.apache.xxx"; |
| private static final String PROBE_NAMESPACE = "org.apache.myfaces.extensions.scripting.core.dependencyScan"; |
| |
| /** |
| * Basic dependency scanning test, which tests |
| * for basic intra class relationships |
| */ |
| @Test |
| public void testClassDependencies2() { |
| ClassDependencies dependencyMap = new ClassDependencies(); |
| ExternalFilterDependencyRegistry testRegistry = new DependencyRegistryImpl(ScriptingConst.ENGINE_TYPE_JSF_JAVA, dependencyMap); |
| testRegistry.addFilter(new WhitelistFilter(DUMMY, PROBE_NAMESPACE)); |
| long before = System.currentTimeMillis(); |
| (new StandardDependencyScanner()).fetchDependencies(Thread.currentThread().getContextClassLoader(), ScriptingConst.ENGINE_TYPE_JSF_JAVA, PROBE1, testRegistry); |
| long after = System.currentTimeMillis(); |
| log.info("Execution time registry based scan" + (after - before)); |
| |
| assertTrue("Dependency Test1", dependencyMap.getReferringClasses(PROBE2).contains(PROBE1)); |
| assertTrue("Dependency Test2", dependencyMap.getReferringClasses(PROBE3).contains(PROBE1)); |
| assertTrue("Dependency Test3", dependencyMap.getReferringClasses(PROBE4).contains(PROBE1)); |
| assertTrue("Dependency Test4", dependencyMap.getReferringClasses(PROBE_PAR).contains(PROBE1)); |
| |
| } |
| |
| /** |
| * Test for |
| * https://issues.apache.org/jira/browse/EXTSCRIPT-70 |
| */ |
| @Test |
| public void testGenerics() { |
| ClassDependencies dependencyMap = new ClassDependencies(); |
| ExternalFilterDependencyRegistry testRegistry = new DependencyRegistryImpl(ScriptingConst.ENGINE_TYPE_JSF_JAVA, dependencyMap); |
| testRegistry.addFilter(new WhitelistFilter(DUMMY, PROBE_NAMESPACE)); |
| long before = System.currentTimeMillis(); |
| (new StandardDependencyScanner()).fetchDependencies(Thread.currentThread().getContextClassLoader(), ScriptingConst.ENGINE_TYPE_JSF_JAVA, GENERICS_PROBE, testRegistry); |
| long after = System.currentTimeMillis(); |
| log.info("Execution time registry based scan" + (after - before)); |
| |
| assertTrue("GenericsDependencyTest 1", dependencyMap.getReferringClasses(PROBE1).contains(GENERICS_PROBE)); |
| assertTrue("GenericsDependencyTest 2", dependencyMap.getReferringClasses(PROBE2).contains(GENERICS_PROBE)); |
| } |
| } |