package org.jboss.tools.cdi.bot.test.beans.bean.template; import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertTrue; import java.io.FileNotFoundException; import java.util.List; import org.jboss.reddeer.common.wait.AbstractWait; import org.jboss.reddeer.common.wait.TimePeriod; import org.jboss.reddeer.eclipse.jdt.ui.NewJavaClassWizardDialog; import org.jboss.reddeer.eclipse.jdt.ui.NewJavaClassWizardPage; import org.jboss.reddeer.eclipse.ui.ide.NewFileCreationWizardDialog; import org.jboss.reddeer.eclipse.ui.ide.NewFileCreationWizardPage; import org.jboss.reddeer.workbench.impl.editor.Marker; import org.jboss.reddeer.workbench.impl.editor.TextEditor; import org.jboss.tools.cdi.bot.test.CDITestBase; import org.jboss.tools.cdi.reddeer.uiutils.EditorResourceHelper; import org.junit.Test; //based on JBIDE-15381 //cdi1.1+ public class VetoedAnnotationTemplate extends CDITestBase{ public static final String WELD_SE_JAR=System.getProperty("jbosstools.test.weld-se.home"); @Test public void testVetoedAnnotation() throws FileNotFoundException{ createBeans(); NewJavaClassWizardDialog jd = new NewJavaClassWizardDialog(); jd.open(); NewJavaClassWizardPage jp = new NewJavaClassWizardPage(); jp.setName("Injector"); jp.setPackage("test"); jd.finish(); EditorResourceHelper rhelper = new EditorResourceHelper(); rhelper.replaceClassContentByResource("Injector.java",readFile("resources/cdi11/Injector.jav_"), false); TextEditor te = new TextEditor("Injector.java"); AbstractWait.sleep(TimePeriod.NORMAL); String warning = "org.eclipse.ui.workbench.texteditor.warning"; String noInjection = "No bean is eligible for injection to the injection point [JSR-346 ยง5.2.2]"; List<Marker> markers = te.getMarkers(); assertEquals(5, markers.size()); for(Marker m: te.getMarkers()){ assertTrue((m.getLineNumber() == 17 && m.getType().equals(warning) && m.getText().equals(noInjection)) || (m.getLineNumber() == 20 && m.getType().equals(warning) && m.getText().equals(noInjection)) || (m.getLineNumber() == 26 && m.getType().equals(warning) && m.getText().equals(noInjection)) || (m.getLineNumber() == 29 && m.getType().equals(warning) && m.getText().equals(noInjection)) || (m.getLineNumber() == 35 && m.getType().equals(warning) && m.getText().equals(noInjection))); } } private void createBeans(){ createBean("Bean1", "vetoed"); createBean("Bean2", "vetoed"); createBean("Bean3", "vetoed"); createBean("Bean4", "vetoedpackage"); createBean("Bean5", "vetoedpackage"); createBean("Bean6", "vetoedpackage.pck"); addVetoedAnnotation("Bean1"); addVetoedAnnotation("Bean2"); createVetoedPackage(); TextEditor ed = new TextEditor("Bean6.java"); ed.insertLine(2, "import javax.enterprise.inject.Vetoed;"); ed.insertLine(12, "@Vetoed"); ed.insertLine(13, "public class Bean7{}"); ed.save(); } private void createBean(String name, String pckg){ beansHelper.createBean(name, pckg, false, false, false,false, false,false,false,null, "@ApplicationScoped"); } private void addVetoedAnnotation(String bean){ TextEditor ed = new TextEditor(bean+".java"); ed.insertLine(2, "import javax.enterprise.inject.Vetoed;"); ed.insertLine(5, "@Vetoed"); ed.save(); } private void createVetoedPackage(){ NewFileCreationWizardDialog fd = new NewFileCreationWizardDialog(); fd.open(); NewFileCreationWizardPage fp = new NewFileCreationWizardPage(); fp.setFileName("package-info.java"); fp.setFolderPath(PROJECT_NAME+"/src/vetoedpackage"); fd.finish(); TextEditor ed = new TextEditor("package-info.java"); ed.insertLine(0, "@javax.enterprise.inject.Vetoed\n"); ed.insertLine(1, "package vetoedpackage;"); ed.save(); } }