Skip to content
Snippets Groups Projects
Commit 9544f0cd authored by Nils Christian Ehmke's avatar Nils Christian Ehmke
Browse files

Started with refactoring using Mirror.

parent 762e3469
No related branches found
No related tags found
No related merge requests found
...@@ -58,7 +58,7 @@ formatter_settings_version=12 ...@@ -58,7 +58,7 @@ formatter_settings_version=12
org.eclipse.jdt.ui.exception.name=ex org.eclipse.jdt.ui.exception.name=ex
org.eclipse.jdt.ui.gettersetter.use.is=true org.eclipse.jdt.ui.gettersetter.use.is=true
org.eclipse.jdt.ui.ignorelowercasenames=true org.eclipse.jdt.ui.ignorelowercasenames=true
org.eclipse.jdt.ui.importorder=java;javax;junit;org;com;kieker;org.primefaces;org.eclipse;de.cau.cs.kieler; org.eclipse.jdt.ui.importorder=java;javax;junit;org;com;kieker;org.primefaces;org.eclipse;de.cau.cs.kieler;net.vidageek;org.springframework;
org.eclipse.jdt.ui.keywordthis=false org.eclipse.jdt.ui.keywordthis=false
org.eclipse.jdt.ui.ondemandthreshold=99 org.eclipse.jdt.ui.ondemandthreshold=99
org.eclipse.jdt.ui.overrideannotation=true org.eclipse.jdt.ui.overrideannotation=true
......
...@@ -668,7 +668,7 @@ ...@@ -668,7 +668,7 @@
<!-- See http://checkstyle.sf.net/config_import.html !--> <!-- See http://checkstyle.sf.net/config_import.html !-->
<module name="ImportOrder"> <module name="ImportOrder">
<property name="option" value="under"/> <property name="option" value="under"/>
<property name="groups" value="java,javax,junit,org,com,kieker,kieker,org.primefaces,org.eclipse"/> <property name="groups" value="java,javax,junit,org,com,kieker,kieker,org.primefaces,org.eclipse,de.cau.cs.kieler,net.vidageek,org.springframework"/>
<property name="ordered" value="true"/> <property name="ordered" value="true"/>
<property name="separated" value="true"/> <property name="separated" value="true"/>
<property name="caseSensitive" value="true"/> <property name="caseSensitive" value="true"/>
......
...@@ -53,7 +53,8 @@ import com.google.common.io.Files; ...@@ -53,7 +53,8 @@ import com.google.common.io.Files;
import kieker.analysis.AnalysisController; import kieker.analysis.AnalysisController;
import kieker.analysis.model.analysisMetaModel.MIAnalysisMetaModelFactory; import kieker.analysis.model.analysisMetaModel.MIAnalysisMetaModelFactory;
import kieker.analysis.model.analysisMetaModel.MIProject; import kieker.analysis.model.analysisMetaModel.MIProject;
import kieker.analysis.plugin.AbstractPlugin; import kieker.analysis.plugin.filter.AbstractFilterPlugin;
import kieker.analysis.plugin.reader.AbstractReaderPlugin;
import kieker.analysis.repository.AbstractRepository; import kieker.analysis.repository.AbstractRepository;
import kieker.common.logging.Log; import kieker.common.logging.Log;
import kieker.common.logging.LogFactory; import kieker.common.logging.LogFactory;
...@@ -165,24 +166,27 @@ public class FSProjectDAOImpl implements IProjectDAO, ReleaseListener { ...@@ -165,24 +166,27 @@ public class FSProjectDAOImpl implements IProjectDAO, ReleaseListener {
throws IOException { throws IOException {
// FInd the available classes within the library // FInd the available classes within the library
final List<Class<AbstractRepository>> repositoryClasses = this.pluginFinder.getAllRepositoriesWithinJar(lib, classLoader, classAndMethodContainer); final List<Class<AbstractRepository>> repositoryClasses = this.pluginFinder.getAllRepositoriesWithinJar(lib, classLoader, classAndMethodContainer);
final List<Class<AbstractPlugin>> pluginClasses = this.pluginFinder.getAllPluginsWithinJar(lib, classLoader, classAndMethodContainer); final List<Class<AbstractFilterPlugin>> filterClasses = this.pluginFinder.getAllFiltersWithinJar(lib, classLoader, classAndMethodContainer);
final List<Class<AbstractReaderPlugin>> readerClasses = this.pluginFinder.getAllReadersWithinJar(lib, classLoader, classAndMethodContainer);
// Convert the repositories into model instances // Convert the repositories into model instances
for (final Class<AbstractRepository> repository : repositoryClasses) { for (final Class<AbstractRepository> repository : repositoryClasses) {
if (!(Modifier.isAbstract(repository.getModifiers()) || this.class2ModelInstanceConverter.isProgrammaticOnly(repository, classAndMethodContainer))) { if (!(Modifier.isAbstract(repository.getModifiers()) || this.class2ModelInstanceConverter.isProgrammaticOnly(repository, classAndMethodContainer))) {
repositories.add(this.class2ModelInstanceConverter.convertRepository2ModelInstance(repository, classAndMethodContainer)); repositories.add(this.class2ModelInstanceConverter.convertRepositoryClass2ModelInstance(repository, classAndMethodContainer));
} }
} }
// Convert the plugins into model instances // Convert the plugins into model instances
for (final Class<AbstractPlugin> plugin : pluginClasses) { for (final Class<AbstractReaderPlugin> reader : readerClasses) {
if (!(Modifier.isAbstract(plugin.getModifiers()) || this.class2ModelInstanceConverter.isProgrammaticOnly(plugin, classAndMethodContainer))) { if (!(Modifier.isAbstract(reader.getModifiers()) || this.class2ModelInstanceConverter.isProgrammaticOnly(reader, classAndMethodContainer))) {
final PluginContainer pluginContainer = this.class2ModelInstanceConverter.convertPlugin2ModelInstance(plugin, classAndMethodContainer); final PluginContainer pluginContainer = this.class2ModelInstanceConverter.convertReaderClass2ModelInstance(reader, classAndMethodContainer);
if (pluginContainer.isReader()) { readers.add(pluginContainer);
readers.add(pluginContainer); }
} else { }
filters.add(pluginContainer); for (final Class<AbstractFilterPlugin> filter : filterClasses) {
} if (!(Modifier.isAbstract(filter.getModifiers()) || this.class2ModelInstanceConverter.isProgrammaticOnly(filter, classAndMethodContainer))) {
final PluginContainer pluginContainer = this.class2ModelInstanceConverter.convertFilterClass2ModelInstance(filter, classAndMethodContainer);
readers.add(pluginContainer);
} }
} }
} }
......
...@@ -24,7 +24,8 @@ import java.util.jar.JarInputStream; ...@@ -24,7 +24,8 @@ import java.util.jar.JarInputStream;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import kieker.analysis.plugin.AbstractPlugin; import kieker.analysis.plugin.filter.AbstractFilterPlugin;
import kieker.analysis.plugin.reader.AbstractReaderPlugin;
import kieker.analysis.repository.AbstractRepository; import kieker.analysis.repository.AbstractRepository;
import kieker.webgui.common.ClassAndMethodContainer; import kieker.webgui.common.ClassAndMethodContainer;
...@@ -89,17 +90,34 @@ public class PluginFinder { ...@@ -89,17 +90,34 @@ public class PluginFinder {
* @throws IOException * @throws IOException
* If something went wrong during the opening of the jar file. * If something went wrong during the opening of the jar file.
*/ */
public List<Class<AbstractPlugin>> getAllPluginsWithinJar(final URL url, final ClassLoader classLoader, public List<Class<AbstractReaderPlugin>> getAllReadersWithinJar(final URL url, final ClassLoader classLoader,
final ClassAndMethodContainer classAndMethodContainer) throws IOException { final ClassAndMethodContainer classAndMethodContainer) throws IOException {
final List<Class<?>> clazzes = this.getAllClassesWithinJar(url, classLoader); final List<Class<?>> clazzes = this.getAllClassesWithinJar(url, classLoader);
List<Class<AbstractPlugin>> result = null; List<Class<AbstractReaderPlugin>> result = null;
result = new ArrayList<Class<AbstractPlugin>>(); result = new ArrayList<Class<AbstractReaderPlugin>>();
for (final Class<?> clazz : clazzes) { for (final Class<?> clazz : clazzes) {
// This is the cast resulting in an unchecked cast warning. // This is the cast resulting in an unchecked cast warning.
if (clazz.isAnnotationPresent(classAndMethodContainer.getPluginAnnotationClass()) if (clazz.isAnnotationPresent(classAndMethodContainer.getPluginAnnotationClass())
&& classAndMethodContainer.getAbstractPluginClass().isAssignableFrom(clazz)) { && classAndMethodContainer.getAbstractReaderPluginClass().isAssignableFrom(clazz)) {
result.add((Class<AbstractPlugin>) clazz); result.add((Class<AbstractReaderPlugin>) clazz);
}
}
return result;
}
public List<Class<AbstractFilterPlugin>> getAllFiltersWithinJar(final URL url, final ClassLoader classLoader,
final ClassAndMethodContainer classAndMethodContainer) throws IOException {
final List<Class<?>> clazzes = this.getAllClassesWithinJar(url, classLoader);
List<Class<AbstractFilterPlugin>> result = null;
result = new ArrayList<Class<AbstractFilterPlugin>>();
for (final Class<?> clazz : clazzes) {
// This is the cast resulting in an unchecked cast warning.
if (clazz.isAnnotationPresent(classAndMethodContainer.getPluginAnnotationClass())
&& classAndMethodContainer.getAbstractFilterPluginClass().isAssignableFrom(clazz)) {
result.add((Class<AbstractFilterPlugin>) clazz);
} }
} }
......
...@@ -21,9 +21,6 @@ import java.lang.reflect.Method; ...@@ -21,9 +21,6 @@ import java.lang.reflect.Method;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map; import java.util.Map;
import net.vidageek.mirror.dsl.Mirror;
import net.vidageek.mirror.exception.MirrorException;
import kieker.analysis.AnalysisController; import kieker.analysis.AnalysisController;
import kieker.common.logging.Log; import kieker.common.logging.Log;
import kieker.common.logging.LogFactory; import kieker.common.logging.LogFactory;
...@@ -32,6 +29,9 @@ import kieker.webgui.common.exception.AnalysisInitializationException; ...@@ -32,6 +29,9 @@ import kieker.webgui.common.exception.AnalysisInitializationException;
import kieker.webgui.common.exception.AnalysisStateException; import kieker.webgui.common.exception.AnalysisStateException;
import kieker.webgui.common.exception.ProjectLoadException; import kieker.webgui.common.exception.ProjectLoadException;
import net.vidageek.mirror.dsl.Mirror;
import net.vidageek.mirror.exception.MirrorException;
/** /**
* An analysis within the web gui. * An analysis within the web gui.
* *
......
...@@ -23,7 +23,8 @@ import java.util.List; ...@@ -23,7 +23,8 @@ import java.util.List;
import org.junit.Assert; import org.junit.Assert;
import org.junit.Test; import org.junit.Test;
import kieker.analysis.plugin.AbstractPlugin; import kieker.analysis.plugin.filter.AbstractFilterPlugin;
import kieker.analysis.plugin.reader.AbstractReaderPlugin;
import kieker.analysis.repository.AbstractRepository; import kieker.analysis.repository.AbstractRepository;
import kieker.webgui.common.ClassAndMethodContainer; import kieker.webgui.common.ClassAndMethodContainer;
...@@ -54,11 +55,13 @@ public class PluginFinderTest { ...@@ -54,11 +55,13 @@ public class PluginFinderTest {
final ClassAndMethodContainer classAndMethodContainer = new ClassAndMethodContainer(classLoader); final ClassAndMethodContainer classAndMethodContainer = new ClassAndMethodContainer(classLoader);
try { try {
final List<Class<AbstractPlugin>> plugins = pluginFinder.getAllPluginsWithinJar(kiekerURL, classLoader, classAndMethodContainer); final List<Class<AbstractFilterPlugin>> filters = pluginFinder.getAllFiltersWithinJar(kiekerURL, classLoader, classAndMethodContainer);
final List<Class<AbstractReaderPlugin>> readers = pluginFinder.getAllReadersWithinJar(kiekerURL, classLoader, classAndMethodContainer);
final List<Class<AbstractRepository>> repositories = pluginFinder.getAllRepositoriesWithinJar(kiekerURL, classLoader, classAndMethodContainer); final List<Class<AbstractRepository>> repositories = pluginFinder.getAllRepositoriesWithinJar(kiekerURL, classLoader, classAndMethodContainer);
// There should be at least one element of both types // There should be at least one element of both types
Assert.assertFalse("No plugins found.", plugins.isEmpty()); Assert.assertFalse("No filters found.", filters.isEmpty());
Assert.assertFalse("No readers found.", readers.isEmpty());
Assert.assertFalse("No repositories found.", repositories.isEmpty()); Assert.assertFalse("No repositories found.", repositories.isEmpty());
classLoader.close(); classLoader.close();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment