blob: db31dfce8fccf6e82f89a3ee0f2f8c8571d8cc40 [file] [log] [blame]
/*
* 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));
}
}