blob: 667d6d0c538a51cdf1b037083747745998939fac [file] [log] [blame]
/*
* Copyright (c) 2010 Mia-Software.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the Eclipse Public License v1.0
* which accompanies this distribution, and is available at
* http://www.eclipse.org/legal/epl-v10.html
*
* Contributors:
* Fabien Giquel (Mia-Software) - initial API and implementation
* Nicolas Bros (Mia-Software) - Bug 335003 - [Discoverer] : Existing Discoverers Refactoring based on new framework
*/
package org.eclipse.modisco.java.discoverer.tests;
import java.net.URL;
import java.util.Iterator;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.gmt.modisco.java.Model;
import org.eclipse.gmt.modisco.java.NamedElement;
import org.eclipse.gmt.modisco.java.internal.util.JavaUtil;
import org.eclipse.jdt.core.IJavaProject;
import org.eclipse.modisco.java.discoverer.DiscoverJavaModelFromJavaProject;
import org.eclipse.modisco.java.discoverer.tests.utils.JavaProjectFactory;
import org.junit.After;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
public class ParameterizedDiscovery {
private final String rootSourcesPath = "/workspace/"; //$NON-NLS-1$
private final String projectName = "test001"; //$NON-NLS-1$
private JavaProjectFactory javaProjectFactory;
/**
* @throws java.lang.Exception
*/
@Before
public void setUp() throws Exception {
this.javaProjectFactory = new JavaProjectFactory(this.projectName);
}
@After
public void tearDown() throws Exception {
if (this.javaProjectFactory != null) {
this.javaProjectFactory.dispose();
}
}
private static Model getJavaModel(final Resource javaResource) {
Model aModel = null;
EList<EObject> i = javaResource.getContents();
for (Iterator<EObject> iterator = i.iterator(); iterator.hasNext()
&& aModel == null;) {
EObject eobject = iterator.next();
if (eobject instanceof Model) {
aModel = (Model) eobject;
}
}
return aModel;
}
/**
* Test exclusion/inclusion regex parameter
*/
@Test
public void testBug319606() throws Exception {
Assert.assertNotNull(this.javaProjectFactory);
IJavaProject javaProject = this.javaProjectFactory.getJavaProject();
Assert.assertNotNull(javaProject);
String sourceFolderPath = this.rootSourcesPath + this.projectName
+ "/src"; //$NON-NLS-1$
URL src = Activator.getDefault().getBundle().getEntry(sourceFolderPath);
Assert.assertNotNull(src);
this.javaProjectFactory.populateSourceFolder(sourceFolderPath,
Activator.getDefault());
DiscoverJavaModelFromJavaProject javaDiscoverer = new DiscoverJavaModelFromJavaProject();
Assert.assertNotNull(javaDiscoverer);
javaDiscoverer.setExcludedElementsRegEx("annotat[a-z]*"); //$NON-NLS-1$
javaDiscoverer.discoverElement(javaProject, new NullProgressMonitor());
Resource output = javaDiscoverer.getTargetModel();
Assert.assertNotNull(output);
Model javaModel = getJavaModel(output);
NamedElement classAnnotation = JavaUtil.getNamedElementByQualifiedName(
javaModel, "annotations.MyAnnotatedClass"); //$NON-NLS-1$
Assert.assertNull(classAnnotation);
Assert.assertTrue(!javaModel.getOwnedElements().isEmpty());
}
}