Author: dazarov
Date: 2011-06-09 20:59:29 -0400 (Thu, 09 Jun 2011)
New Revision: 31998
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/InjectedPointHyperlinkTest.java
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/CDIHyperlinkTestUtil.java
Removed:
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/HyperlinkDetectorTest.java
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/InjectedPointHyperlinkDetector.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MarkerResolutionUtils.java
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/search/CDIElementWrapper.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/META-INF/MANIFEST.MF
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/CDISeamResourceLoadingHyperlinkDetectorTest.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/CdiSeamTextExtAllTests.java
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/SeamConfigTagNameHyperlinkTest.java
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/BeansXmlHyperLinkTest.java
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/EventAndObserverMethodHyperlinkDetectorTest.java
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/InjectedPointHyperlinkDetectorTest.java
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/ProducerDisposerHyperlinkDetectorTest.java
trunk/cdi/tests/org.jboss.tools.cdi.ui.test/src/org/jboss/tools/cdi/ui/test/search/CDISearchParticipantTest.java
Log:
https://issues.jboss.org/browse/JBIDE-9068
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java 2011-06-10
00:23:02 UTC (rev 31997)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.core/src/org/jboss/tools/cdi/core/CDIUtil.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -56,6 +56,7 @@
import org.eclipse.wst.common.project.facet.core.ProjectFacetsManager;
import org.jboss.tools.cdi.internal.core.impl.ClassBean;
import org.jboss.tools.common.EclipseUtil;
+import org.jboss.tools.common.java.IJavaMemberReference;
import org.jboss.tools.common.model.util.EclipseJavaUtil;
import org.jboss.tools.common.model.util.EclipseResourceUtil;
import org.jboss.tools.common.text.ITextSourceReference;
@@ -1065,4 +1066,57 @@
}
return result;
}
+
+ /**
+ * returns set of IBean elements filtered in order to have unique IJavaElement
+ * @param cdiProject
+ * @param attemptToResolveAmbiguousDependency
+ * @param injectionPoint
+ * @return
+ */
+ public static Set<IBean> getFilteredBeans(ICDIProject cdiProject, boolean
attemptToResolveAmbiguousDependency, IInjectionPoint injectionPoint){
+ Set<IBean> beans = cdiProject.getBeans(attemptToResolveAmbiguousDependency,
injectionPoint);
+ HashSet<IJavaElement> elements = new HashSet<IJavaElement>();
+ HashSet<IBean> result = new HashSet<IBean>();
+
+ for(IBean bean : beans){
+ IJavaElement element = getJavaElement(bean);
+ if(!elements.contains(element)){
+ elements.add(element);
+ result.add(bean);
+ }
+ }
+
+ return result;
+ }
+
+ public static List<IBean> getSortedBeans(ICDIProject cdiProject, boolean
attemptToResolveAmbiguousDependency, IInjectionPoint injectionPoint){
+ Set<IBean> beans = getFilteredBeans(cdiProject,
attemptToResolveAmbiguousDependency, injectionPoint);
+ return sortBeans(beans);
+ }
+
+ public static IJavaElement getJavaElement(ICDIElement cdiElement){
+ if(cdiElement instanceof IJavaMemberReference)
+ return ((IJavaMemberReference)cdiElement).getSourceMember();
+ if(cdiElement instanceof IBean)
+ return ((IBean)cdiElement).getBeanClass();
+ else if(cdiElement instanceof IInjectionPointParameter){
+ IMethod method = ((IInjectionPointParameter)cdiElement).getBeanMethod().getMethod();
+ return getParameter(method, ((IInjectionPointParameter)cdiElement).getName());
+ }
+ return null;
+ }
+
+ public static ILocalVariable getParameter(IMethod method, String name){
+ try{
+ for(ILocalVariable param : method.getParameters()){
+ if(param.getElementName().equals(name))
+ return param;
+ }
+ }catch(JavaModelException ex){
+ CDICorePlugin.getDefault().logError(ex);
+ }
+ return null;
+ }
+
}
\ No newline at end of file
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/InjectedPointHyperlinkDetector.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/InjectedPointHyperlinkDetector.java 2011-06-10
00:23:02 UTC (rev 31997)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.text.ext/src/org/jboss/tools/cdi/text/ext/hyperlink/InjectedPointHyperlinkDetector.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -20,9 +20,8 @@
import org.eclipse.jdt.core.ICompilationUnit;
import org.eclipse.jdt.core.IJavaElement;
import org.eclipse.jdt.core.IMethod;
+import org.eclipse.jdt.core.IType;
import org.eclipse.jdt.core.JavaModelException;
-import org.eclipse.jdt.internal.core.ResolvedBinaryType;
-import org.eclipse.jdt.internal.core.ResolvedSourceType;
import org.eclipse.jdt.internal.ui.javaeditor.EditorUtility;
import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor;
import org.eclipse.jdt.internal.ui.text.JavaWordFinder;
@@ -93,7 +92,7 @@
ArrayList<IHyperlink> hyperlinks = new ArrayList<IHyperlink>();
for (IJavaElement element : elements) {
int position = 0;
- if(element instanceof ResolvedSourceType || element instanceof ResolvedBinaryType){
+ if(element instanceof IType){
ICompilationUnit cUnit = (ICompilationUnit)input;
element = cUnit.getElementAt(wordRegion.getOffset());
if(element == null)
@@ -130,16 +129,15 @@
return;
}
- Set<IBean> resultBeanSet = cdiProject.getBeans(true, injectionPoint);
- List<IBean> resultBeanList = CDIUtil.sortBeans(resultBeanSet);
+ List<IBean> resultBeans = CDIUtil.getSortedBeans(cdiProject, true,
injectionPoint);
- Set<IBean> alternativeBeanSet = cdiProject.getBeans(false, injectionPoint);
- List<IBean> alternativeBeanList = CDIUtil.sortBeans(alternativeBeanSet);
+ List<IBean> alternativeBeans = CDIUtil.getSortedBeans(cdiProject, false,
injectionPoint);
+
- if(resultBeanList.size() > 0){
- hyperlinks.add(new InjectedPointHyperlink(region, resultBeanList.get(0), document,
true));
- if(alternativeBeanList.size() > 1)
- hyperlinks.add(new AlternativeInjectedPointListHyperlink(region, alternativeBeanList,
viewer, document));
+ if(resultBeans.size() > 0){
+ hyperlinks.add(new InjectedPointHyperlink(region, resultBeans.get(0), document,
true));
+ if(alternativeBeans.size() > 1)
+ hyperlinks.add(new AlternativeInjectedPointListHyperlink(region, alternativeBeans,
viewer, document));
}
}
}
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MarkerResolutionUtils.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MarkerResolutionUtils.java 2011-06-10
00:23:02 UTC (rev 31997)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/marker/MarkerResolutionUtils.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -332,19 +332,6 @@
return null;
}
- public static ILocalVariable getParameter(IMethod method, String name){
- try{
- for(ILocalVariable param : method.getParameters()){
- if(param.getElementName().equals(name))
- return param;
- }
- }catch(JavaModelException ex){
- CDIUIPlugin.getDefault().logError(ex);
- }
- return null;
- }
-
-
public static void addQualifiersToInjectedPoint(IInjectionPoint injectionPoint, IBean
bean){
try{
ICompilationUnit original =
injectionPoint.getClassBean().getBeanClass().getCompilationUnit();
Modified:
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/search/CDIElementWrapper.java
===================================================================
---
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/search/CDIElementWrapper.java 2011-06-10
00:23:02 UTC (rev 31997)
+++
trunk/cdi/plugins/org.jboss.tools.cdi.ui/src/org/jboss/tools/cdi/ui/search/CDIElementWrapper.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -14,6 +14,7 @@
import org.eclipse.jdt.core.ILocalVariable;
import org.eclipse.jdt.core.IMethod;
import org.eclipse.jdt.core.Signature;
+import org.jboss.tools.cdi.core.CDIUtil;
import org.jboss.tools.cdi.core.IBean;
import org.jboss.tools.cdi.core.ICDIElement;
import org.jboss.tools.cdi.core.IInjectionPointField;
@@ -49,7 +50,7 @@
label =
((IInjectionPointMethod)element).getMethod().getDeclaringType().getElementName()+DOT+((IInjectionPointMethod)element).getMethod().getElementName()+BRACKETS;
}else if(element instanceof IInjectionPointParameter){
IMethod method = ((IInjectionPointParameter)element).getBeanMethod().getMethod();
- javaElement = MarkerResolutionUtils.getParameter(method,
((IInjectionPointParameter)element).getName());
+ javaElement = CDIUtil.getParameter(method,
((IInjectionPointParameter)element).getName());
String type =
Signature.getSignatureSimpleName(((ILocalVariable)javaElement).getTypeSignature());
label =
method.getDeclaringType().getElementName()+DOT+method.getElementName()+OPEN+type+SPACE+javaElement.getElementName()+CLOSE;
}
Modified: trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/META-INF/MANIFEST.MF
===================================================================
--- trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/META-INF/MANIFEST.MF 2011-06-10
00:23:02 UTC (rev 31997)
+++ trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/META-INF/MANIFEST.MF 2011-06-10
00:59:29 UTC (rev 31998)
@@ -19,7 +19,9 @@
org.jboss.tools.cdi.seam.config.core.test,
org.jboss.tools.tests,
org.eclipse.core.runtime,
- org.eclipse.jdt.core
+ org.eclipse.jdt.core,
+ org.jboss.tools.cdi.seam.solder.core.test;bundle-version="1.0.0",
+ org.jboss.tools.cdi.text.ext;bundle-version="1.2.0"
Bundle-ActivationPolicy: lazy
Bundle-Vendor: %Bundle-Vendor.0
Export-Package: org.jboss.tools.cdi.seam.text.ext.test
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/CDISeamResourceLoadingHyperlinkDetectorTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/CDISeamResourceLoadingHyperlinkDetectorTest.java 2011-06-10
00:23:02 UTC (rev 31997)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/CDISeamResourceLoadingHyperlinkDetectorTest.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -4,13 +4,16 @@
import org.eclipse.core.resources.IFile;
import org.eclipse.osgi.util.NLS;
+import org.jboss.tools.cdi.core.test.tck.TCKTest;
import org.jboss.tools.cdi.seam.text.ext.CDISeamExtMessages;
import org.jboss.tools.cdi.seam.text.ext.hyperlink.CDISeamResourceLoadingHyperlink;
import
org.jboss.tools.cdi.seam.text.ext.hyperlink.CDISeamResourceLoadingHyperlinkDetector;
-import org.jboss.tools.cdi.text.ext.test.HyperlinkDetectorTest;
+import org.jboss.tools.cdi.text.ext.test.CDIHyperlinkTestUtil;
import org.jboss.tools.common.util.FileUtil;
+import org.jboss.tools.cdi.text.ext.test.CDIHyperlinkTestUtil.TestHyperlink;
+import org.jboss.tools.cdi.text.ext.test.CDIHyperlinkTestUtil.TestRegion;
-public class CDISeamResourceLoadingHyperlinkDetectorTest extends HyperlinkDetectorTest{
+public class CDISeamResourceLoadingHyperlinkDetectorTest extends TCKTest{
private static final String FILENAME =
"JavaSource/org/jboss/jsr299/tck/tests/jbt/openon/ResourceLoader.java";
public void testCDISeamResourceLoadingHyperlinkDetector() throws Exception {
@@ -26,7 +29,7 @@
regionList.add(new TestRegion(injectPosition, 58, new TestHyperlink[]{new
TestHyperlink(CDISeamResourceLoadingHyperlink.class,
NLS.bind(CDISeamExtMessages.CDI_SEAM_RESOURCE_LOADING_HYPERLINK,
"WEB-INF/beans.xml"))}));
}
- checkRegions(FILENAME, regionList, new CDISeamResourceLoadingHyperlinkDetector());
+ CDIHyperlinkTestUtil.checkRegions(tckProject, FILENAME, regionList, new
CDISeamResourceLoadingHyperlinkDetector());
}
}
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/CdiSeamTextExtAllTests.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/CdiSeamTextExtAllTests.java 2011-06-10
00:23:02 UTC (rev 31997)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/CdiSeamTextExtAllTests.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -13,6 +13,7 @@
import org.eclipse.jdt.internal.core.JavaModelManager;
import org.jboss.tools.cdi.core.test.CDICoreTestSetup;
import org.jboss.tools.cdi.seam.config.core.test.SeamConfigTestSetup;
+import org.jboss.tools.cdi.seam.solder.core.test.SeamSolderTestSetup;
import junit.framework.Test;
import junit.framework.TestSuite;
@@ -34,6 +35,11 @@
suiteAll.addTest(new SeamConfigTestSetup(suiteConfig));
+ suiteConfig = new TestSuite("CDI Seam Solder Tests");
+ suiteConfig.addTestSuite(InjectedPointHyperlinkTest.class);
+
+ suiteAll.addTest(new SeamSolderTestSetup(suiteConfig));
+
return suiteAll;
}
}
\ No newline at end of file
Added:
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/InjectedPointHyperlinkTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/InjectedPointHyperlinkTest.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/InjectedPointHyperlinkTest.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -0,0 +1,51 @@
+package org.jboss.tools.cdi.seam.text.ext.test;
+
+import java.util.ArrayList;
+import java.util.Set;
+
+import org.jboss.tools.cdi.core.IBean;
+import org.jboss.tools.cdi.seam.solder.core.test.SeamSolderTest;
+import org.jboss.tools.cdi.text.ext.CDIExtensionsMessages;
+import org.jboss.tools.cdi.text.ext.hyperlink.InjectedPointHyperlink;
+import org.jboss.tools.cdi.text.ext.hyperlink.InjectedPointHyperlinkDetector;
+import org.jboss.tools.cdi.text.ext.test.CDIHyperlinkTestUtil;
+import org.jboss.tools.cdi.text.ext.test.CDIHyperlinkTestUtil.TestHyperlink;
+import org.jboss.tools.cdi.text.ext.test.CDIHyperlinkTestUtil.TestRegion;
+
+public class InjectedPointHyperlinkTest extends SeamSolderTest {
+ public void testInjectedPointHyperlinkDetector() throws Exception {
+ Set<IBean> beans =
cdiProject.getBeans("/CDISolderTest/src/org/jboss/generic2/MessageManager.java", true);
+ IBean bean=null;
+ for(IBean b : beans){
+ bean = b;
+ }
+ ArrayList<TestRegion> regionList = new ArrayList<TestRegion>();
+ regionList.add(new TestRegion(97, 6, new TestHyperlink[]{
+ new TestHyperlink(InjectedPointHyperlink.class,
CDIExtensionsMessages.CDI_INJECTED_POINT_HYPERLINK_OPEN_INJECT_BEAN+ "
MessageManager.messageDispatcherProducer()", bean),
+ })); // Inject
+ regionList.add(new TestRegion(106, 7, new TestHyperlink[]{
+ new TestHyperlink(InjectedPointHyperlink.class,
CDIExtensionsMessages.CDI_INJECTED_POINT_HYPERLINK_OPEN_INJECT_BEAN+ "
MessageManager.messageDispatcherProducer()", bean),
+ })); // Logger
+ regionList.add(new TestRegion(115, 28, new TestHyperlink[]{
+ new TestHyperlink(InjectedPointHyperlink.class,
CDIExtensionsMessages.CDI_INJECTED_POINT_HYPERLINK_OPEN_INJECT_BEAN+ "
MessageManager.messageDispatcherProducer()", bean),
+ })); // logger
+ regionList.add(new TestRegion(148, 6, new TestHyperlink[]{
+ new TestHyperlink(InjectedPointHyperlink.class,
CDIExtensionsMessages.CDI_INJECTED_POINT_HYPERLINK_OPEN_INJECT_BEAN+ "
MessageManager.getPolicy()", bean),
+ })); // logger
+ regionList.add(new TestRegion(157, 7, new TestHyperlink[]{
+ new TestHyperlink(InjectedPointHyperlink.class,
CDIExtensionsMessages.CDI_INJECTED_POINT_HYPERLINK_OPEN_INJECT_BEAN+ "
MessageManager.getPolicy()", bean),
+ })); // logger
+ regionList.add(new TestRegion(166, 23, new TestHyperlink[]{
+ new TestHyperlink(InjectedPointHyperlink.class,
CDIExtensionsMessages.CDI_INJECTED_POINT_HYPERLINK_OPEN_INJECT_BEAN+ "
MessageManager.getPolicy()", bean),
+ })); // logger
+ regionList.add(new TestRegion(281, 31, new TestHyperlink[]{
+ new TestHyperlink(InjectedPointHyperlink.class,
CDIExtensionsMessages.CDI_INJECTED_POINT_HYPERLINK_OPEN_INJECT_BEAN+ "
MessageManager.getPolicy()", bean),
+ })); // logger
+ regionList.add(new TestRegion(318, 6, new TestHyperlink[]{
+ new TestHyperlink(InjectedPointHyperlink.class,
CDIExtensionsMessages.CDI_INJECTED_POINT_HYPERLINK_OPEN_INJECT_BEAN+ "
MessageManager.getPolicy()", bean),
+ })); // logger
+
+ CDIHyperlinkTestUtil.checkRegions(project,
"src/org/jboss/generic2/DurableMessageLogger.java", regionList, new
InjectedPointHyperlinkDetector());
+ }
+
+}
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/InjectedPointHyperlinkTest.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/SeamConfigTagNameHyperlinkTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/SeamConfigTagNameHyperlinkTest.java 2011-06-10
00:23:02 UTC (rev 31997)
+++
trunk/cdi/tests/org.jboss.tools.cdi.seam.text.ext.test/src/org/jboss/tools/cdi/seam/text/ext/test/SeamConfigTagNameHyperlinkTest.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -18,7 +18,7 @@
import org.eclipse.ui.IFileEditorInput;
import org.jboss.tools.cdi.seam.config.core.test.SeamConfigTest;
import org.jboss.tools.cdi.seam.text.ext.CDISeamExtPlugin;
-import org.jboss.tools.cdi.text.ext.test.HyperlinkDetectorTest;
+import org.jboss.tools.cdi.text.ext.test.CDIHyperlinkTestUtil;
import org.jboss.tools.common.util.FileUtil;
/**
@@ -31,7 +31,7 @@
public void testSeamConfigTagNameHyperlink() throws Exception {
int offset = 802; // <|test602:Report>
- IHyperlink hyperlink =
HyperlinkDetectorTest.checkHyperLinkInXml("src/META-INF/beans.xml", project,
offset,
"org.jboss.tools.cdi.seam.text.ext.hyperlink.SeamConfigTagNameHyperlink");
+ IHyperlink hyperlink =
CDIHyperlinkTestUtil.checkHyperLinkInXml("src/META-INF/beans.xml", project,
offset,
"org.jboss.tools.cdi.seam.text.ext.hyperlink.SeamConfigTagNameHyperlink");
hyperlink.open();
IEditorPart editor =
CDISeamExtPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
@@ -42,7 +42,7 @@
public void testSeamConfigTagAttributeHyperlink() throws Exception {
int offset = 1088; // <test603:OtherQualifier va|lue1="AA"
- IHyperlink hyperlink =
HyperlinkDetectorTest.checkHyperLinkInXml("src/META-INF/beans.xml", project,
offset,
"org.jboss.tools.cdi.seam.text.ext.hyperlink.SeamConfigTagNameHyperlink");
+ IHyperlink hyperlink =
CDIHyperlinkTestUtil.checkHyperLinkInXml("src/META-INF/beans.xml", project,
offset,
"org.jboss.tools.cdi.seam.text.ext.hyperlink.SeamConfigTagNameHyperlink");
hyperlink.open();
IEditorPart editor =
CDISeamExtPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage().getActiveEditor();
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/BeansXmlHyperLinkTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/BeansXmlHyperLinkTest.java 2011-06-10
00:23:02 UTC (rev 31997)
+++
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/BeansXmlHyperLinkTest.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -10,26 +10,28 @@
******************************************************************************/
package org.jboss.tools.cdi.text.ext.test;
+import org.jboss.tools.cdi.core.test.tck.TCKTest;
+
/**
* beans.xml OpenOns test
*
* @author Alexey Kazakov
*/
-public class BeansXmlHyperLinkTest extends HyperlinkDetectorTest {
+public class BeansXmlHyperLinkTest extends TCKTest {
public void testAlternativesClassOpenOns() throws Exception {
- checkHyperLinkInXml("WebContent/WEB-INF/beans.xml", 73,
"org.jboss.tools.common.text.ext.hyperlink.ClassHyperlink");
+ CDIHyperlinkTestUtil.checkHyperLinkInXml(tckProject,
"WebContent/WEB-INF/beans.xml", 73,
"org.jboss.tools.common.text.ext.hyperlink.ClassHyperlink");
}
public void testAlternativesStereotypeOpenOns() throws Exception {
- checkHyperLinkInXml("WebContent/WEB-INF/beans.xml", 395,
"org.jboss.tools.common.text.ext.hyperlink.ClassHyperlink");
+ CDIHyperlinkTestUtil.checkHyperLinkInXml(tckProject,
"WebContent/WEB-INF/beans.xml", 395,
"org.jboss.tools.common.text.ext.hyperlink.ClassHyperlink");
}
public void testDecoratorClassOpenOns() throws Exception {
- checkHyperLinkInXml("WebContent/WEB-INF/beans.xml", 1159,
"org.jboss.tools.common.text.ext.hyperlink.ClassHyperlink");
+ CDIHyperlinkTestUtil.checkHyperLinkInXml(tckProject,
"WebContent/WEB-INF/beans.xml", 1159,
"org.jboss.tools.common.text.ext.hyperlink.ClassHyperlink");
}
public void testInterceptorClassOpenOns() throws Exception {
- checkHyperLinkInXml("WebContent/WEB-INF/beans.xml", 1841,
"org.jboss.tools.common.text.ext.hyperlink.ClassHyperlink");
+ CDIHyperlinkTestUtil.checkHyperLinkInXml(tckProject,
"WebContent/WEB-INF/beans.xml", 1841,
"org.jboss.tools.common.text.ext.hyperlink.ClassHyperlink");
}
}
\ No newline at end of file
Copied:
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/CDIHyperlinkTestUtil.java
(from rev 31973,
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/HyperlinkDetectorTest.java)
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/CDIHyperlinkTestUtil.java
(rev 0)
+++
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/CDIHyperlinkTestUtil.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -0,0 +1,380 @@
+package org.jboss.tools.cdi.text.ext.test;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Set;
+
+import junit.framework.TestCase;
+
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.runtime.IAdaptable;
+import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor;
+import org.eclipse.jdt.internal.ui.text.JavaWordFinder;
+import org.eclipse.jface.text.IDocument;
+import org.eclipse.jface.text.IRegion;
+import org.eclipse.jface.text.Region;
+import org.eclipse.jface.text.hyperlink.AbstractHyperlinkDetector;
+import org.eclipse.jface.text.hyperlink.IHyperlink;
+import org.eclipse.jface.text.source.ISourceViewer;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.ide.IDE;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.texteditor.DocumentProviderRegistry;
+import org.eclipse.ui.texteditor.IDocumentProvider;
+import org.eclipse.ui.texteditor.ITextEditor;
+import org.eclipse.wst.sse.core.StructuredModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
+import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
+import org.eclipse.wst.sse.ui.StructuredTextEditor;
+import org.eclipse.wst.xml.ui.internal.tabletree.XMLMultiPageEditorPart;
+import org.jboss.tools.cdi.core.ICDIElement;
+import org.jboss.tools.cdi.text.ext.hyperlink.ITestableCDIHyperlink;
+import org.jboss.tools.common.editor.ObjectMultiPageEditor;
+import org.jboss.tools.common.model.ui.editor.EditorPartWrapper;
+import org.jboss.tools.common.text.ext.hyperlink.HyperlinkDetector;
+import org.jboss.tools.common.text.ext.hyperlink.IHyperlinkRegion;
+import org.jboss.tools.common.text.ext.util.AxisUtil;
+
+public class CDIHyperlinkTestUtil extends TestCase{
+ public static void checkRegions(IProject project, String fileName,
List<TestRegion> regionList, AbstractHyperlinkDetector elPartitioner) throws
Exception {
+ IFile file = project.getFile(fileName);
+
+ assertNotNull("The file \"" + fileName + "\" is not
found", file);
+ assertTrue("The file \"" + fileName + "\" is not found",
file.isAccessible());
+
+ FileEditorInput editorInput = new FileEditorInput(file);
+
+ IDocumentProvider documentProvider = null;
+ try {
+ documentProvider =
DocumentProviderRegistry.getDefault().getDocumentProvider(editorInput);
+ } catch (Exception x) {
+ x.printStackTrace();
+ fail("An exception caught: " + x.getMessage());
+ }
+
+ assertNotNull("The document provider for the file \"" + fileName +
"\" is not loaded", documentProvider);
+
+ try {
+ documentProvider.connect(editorInput);
+ } catch (Exception x) {
+ x.printStackTrace();
+ fail("The document provider is not able to be initialized with the editor
input\nAn exception caught: "+x.getMessage());
+ }
+
+ IDocument document = documentProvider.getDocument(editorInput);
+
+ assertNotNull("The document for the file \"" + fileName + "\"
is not loaded", document);
+
+ int expected = 0;
+ for(TestRegion testRegion : regionList)
+ expected += testRegion.region.getLength()+1;
+
+ IEditorPart part = openFileInEditor(file);
+ ISourceViewer viewer = null;
+ if(part instanceof JavaEditor){
+ viewer = ((JavaEditor)part).getViewer();
+ }
+
+ elPartitioner.setContext(new TestContext((ITextEditor)part));
+
+ int counter = 0;
+ for (int i = 0; i < document.getLength(); i++) {
+ TestData testData = new TestData(document, i);
+ IHyperlink[] links = elPartitioner.detectHyperlinks(viewer,
testData.getHyperlinkRegion(), true);
+
+ boolean recognized = links != null;
+
+ if (recognized) {
+ counter++;
+ TestRegion testRegion = findOffsetInRegions(i, regionList);
+ if(testRegion == null){
+ fail("Wrong detection for offset - "+i);
+ }else{
+ checkTestRegion(links, testRegion);
+ }
+ }
+ else {
+ for(TestRegion testRegion : regionList){
+ if(i >= testRegion.region.getOffset() && i <=
testRegion.region.getOffset()+testRegion.region.getLength()) {
+ int line = document.getLineOfOffset(testRegion.region.getOffset());
+ fail("Wrong detection for region - "+testRegion.region.getOffset()+"
: "+testRegion.region.getLength()+" region - "+i);
+ }
+ }
+ }
+ }
+
+ assertEquals("Wrong recognized region count: ", expected, counter);
+
+ documentProvider.disconnect(editorInput);
+ }
+
+ private static void checkTestRegion(IHyperlink[] links, TestRegion testRegion){
+ for(IHyperlink link : links){
+ TestHyperlink testLink = findTestHyperlink(testRegion.hyperlinks, link);
+ assertNotNull("Unexpected hyperlink - "+link.getHyperlinkText(), testLink);
+ assertEquals("Unexpected hyperlink type", testLink.hyperlink,
link.getClass());
+ assertTrue("Validation fails for hyperlink - "+link.getHyperlinkText(),
testLink.validateHyperlink(link));
+ }
+
+ for(TestHyperlink testLink : testRegion.hyperlinks){
+ IHyperlink link = findHyperlink(links, testLink);
+ assertNotNull("Hyperlink - "+testLink.name+" not found", link);
+ }
+ }
+
+ private static TestHyperlink findTestHyperlink(List<TestHyperlink> testHyperlinks,
IHyperlink link){
+ for(TestHyperlink testLink : testHyperlinks){
+ if(testLink.name.equals(link.getHyperlinkText()))
+ return testLink;
+ }
+ return null;
+ }
+
+ private static IHyperlink findHyperlink(IHyperlink[] links, TestHyperlink testLink){
+ for(IHyperlink link : links){
+ if(testLink.name.equals(link.getHyperlinkText()))
+ return link;
+ }
+ return null;
+ }
+
+ public static void checkHyperLinkInXml(IProject project, String fileName, int offset,
String hyperlinkClassName) throws Exception {
+ checkHyperLinkInXml(fileName, project, offset, hyperlinkClassName);
+ }
+
+ public static IHyperlink checkHyperLinkInXml(String fileName, IProject project, int
offset, String hyperlinkClassName) throws Exception {
+ Region region = new Region(offset, 0);
+ IFile file = project.getFile(fileName);
+
+ assertNotNull("The file \"" + fileName + "\" is not
found", file);
+ assertTrue("The file \"" + fileName + "\" is not found",
file.isAccessible());
+
+ FileEditorInput editorInput = new FileEditorInput(file);
+
+ IEditorPart part = openFileInEditor(file);
+ if(part instanceof EditorPartWrapper) part = ((EditorPartWrapper)part).getEditor();
+ ISourceViewer viewer = null;
+ if (part instanceof XMLMultiPageEditorPart) {
+ IEditorPart[] parts = ((XMLMultiPageEditorPart)part).findEditors(editorInput);
+ if(parts.length>0) {
+ viewer = ((StructuredTextEditor)parts[0]).getTextViewer();
+ }
+ } else if(part instanceof ObjectMultiPageEditor) {
+ viewer = ((ObjectMultiPageEditor)part).getSourceEditor().getTextViewer();
+ } else if(part instanceof StructuredTextEditor) {
+ viewer = ((StructuredTextEditor)part).getTextViewer();
+ }
+
+ IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, region,
true);
+ if(links!=null) {
+ for (IHyperlink hyperlink : links) {
+ if(hyperlink.getClass().getName().equals(hyperlinkClassName)) {
+ return hyperlink;
+ }
+ }
+ }
+ fail("Can't find HyperLink");
+ return null;
+ }
+
+ private static TestRegion findOffsetInRegions(int offset, List<TestRegion>
regionList){
+ for(TestRegion testRegion : regionList){
+ if(offset >= testRegion.region.getOffset() && offset <=
testRegion.region.getOffset()+testRegion.region.getLength())
+ return testRegion;
+ }
+ return null;
+ }
+
+ public static IEditorPart openFileInEditor(IFile input) {
+ return openFileInEditor(input, null);
+ }
+
+ public static IEditorPart openFileInEditor(IFile input, String id) {
+ if (input != null && input.exists()) {
+ try {
+ if(id==null) {
+ IWorkbenchPage page = PlatformUI.getWorkbench()
+ .getActiveWorkbenchWindow().getActivePage();
+ return IDE.openEditor(page, input, true);
+ } else {
+ IWorkbenchPage page = PlatformUI.getWorkbench()
+ .getActiveWorkbenchWindow().getActivePage();
+ return IDE.openEditor(page, input, id, true);
+ }
+ } catch (PartInitException pie) {
+ pie.printStackTrace();
+ fail(pie.getMessage());
+ }
+ }
+ return null;
+ }
+
+ static class TestData {
+ IDocument document;
+ int offset;
+ IRegion region;
+ String contentType;
+ private IHyperlinkRegion hyperlinkRegion = null;
+
+ TestData (IDocument document, int offset) {
+ this.document = document;
+ this.offset = offset;
+ init();
+ }
+
+ private void init() {
+ this.region = getDocumentRegion();
+ this.contentType = getContentType();
+ this.hyperlinkRegion = getHyperlinkRegion();
+ }
+
+ private IRegion getDocumentRegion() {
+ IRegion region = null;
+ try {
+ region = JavaWordFinder.findWord(document, offset);
+ } catch (Exception x) {
+ x.printStackTrace();
+ fail(x.getMessage());
+ }
+
+ return region;
+ }
+
+ public IHyperlinkRegion getHyperlinkRegion() {
+ if (hyperlinkRegion != null)
+ return hyperlinkRegion;
+
+ return new IHyperlinkRegion() {
+ public String getAxis() {
+ return AxisUtil.getAxis(document, region.getOffset());
+ }
+ public String getContentType() {
+ return contentType;
+ }
+ public String getType() {
+ return region.toString();
+ }
+ public int getLength() {
+ return region.getLength();
+ }
+ public int getOffset() {
+ return region.getOffset();
+ }
+ public String toString() {
+ return "[" + getOffset() + "-" + (getOffset() +
getLength() - 1) + ":" + getType() + ":" + getContentType() +
"]";
+ }
+ };
+ }
+
+ /**
+ * Returns the content type of document
+ *
+ * @param document -
+ * assumes document is not null
+ * @return String content type of given document
+ */
+ private String getContentType() {
+ String type = null;
+
+ IModelManager mgr = StructuredModelManager.getModelManager();
+ IStructuredModel model = null;
+ try {
+ model = mgr.getExistingModelForRead(document);
+ if (model != null) {
+ type = model.getContentTypeIdentifier();
+ }
+ } finally {
+ if (model != null) {
+ model.releaseFromRead();
+ }
+ }
+ return type;
+ }
+ }
+
+ static class TestContext implements IAdaptable{
+ ITextEditor editor;
+
+ public TestContext(ITextEditor editor){
+ this.editor = editor;
+ }
+
+ public Object getAdapter(Class adapter) {
+ if(adapter.equals(ITextEditor.class))
+ return editor;
+ return null;
+ }
+ }
+
+ public static class TestRegion{
+ Region region;
+ ArrayList<TestHyperlink> hyperlinks = new ArrayList<TestHyperlink>();
+
+ public TestRegion(int offset, int length, TestHyperlink[] testHyperlinks){
+ region = new Region(offset, length);
+ for(TestHyperlink testHyperlink : testHyperlinks){
+ hyperlinks.add(testHyperlink);
+ }
+ }
+ }
+
+ public static class TestHyperlink{
+ Class<? extends IHyperlink> hyperlink;
+ ICDIElement element = null;
+ String[] elementPaths = null;
+ String name;
+
+ public TestHyperlink(Class<? extends IHyperlink> hyperlink, String name){
+ this.hyperlink = hyperlink;
+ this.name = name;
+ }
+
+ public TestHyperlink(Class<? extends IHyperlink> hyperlink, String name,
ICDIElement element){
+ this(hyperlink, name);
+ this.element = element;
+ }
+
+ public TestHyperlink(Class<? extends IHyperlink> hyperlink, String name, String[]
elementPaths){
+ this(hyperlink, name);
+ this.elementPaths = elementPaths;
+ }
+
+ public boolean validateHyperlink(IHyperlink hyperlink){
+ if(hyperlink instanceof ITestableCDIHyperlink &&
((ITestableCDIHyperlink)hyperlink).getCDIElement() != null && element != null){
+ assertEquals(element, ((ITestableCDIHyperlink)hyperlink).getCDIElement());
+ }else if(hyperlink instanceof ITestableCDIHyperlink &&
((ITestableCDIHyperlink)hyperlink).getCDIElements() != null && elementPaths !=
null){
+ for(ICDIElement element : ((ITestableCDIHyperlink)hyperlink).getCDIElements()){
+ String elementPath = findElementPath(elementPaths, element);
+ assertNotNull("Unexpected CDI element -
"+element.getSourcePath().toString(), elementPath);
+ }
+
+ for(String elementPath : elementPaths){
+ ICDIElement element =
findCDIElement(((ITestableCDIHyperlink)hyperlink).getCDIElements(), elementPath);
+ assertNotNull("CDI element - "+elementPath+" not found",
element);
+ }
+ }
+ return true;
+ }
+
+ protected String findElementPath(String[] elementPaths, ICDIElement element){
+ for(String elementPath : elementPaths){
+ if(elementPath.equals(element.getSourcePath().toString()))
+ return elementPath;
+ }
+ return null;
+ }
+
+ protected ICDIElement findCDIElement(Set<? extends ICDIElement> elements, String
elementPath){
+ for(ICDIElement element : elements){
+ if(elementPath.equals(element.getSourcePath().toString()))
+ return element;
+ }
+ return null;
+ }
+
+ }
+}
\ No newline at end of file
Property changes on:
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/CDIHyperlinkTestUtil.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/EventAndObserverMethodHyperlinkDetectorTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/EventAndObserverMethodHyperlinkDetectorTest.java 2011-06-10
00:23:02 UTC (rev 31997)
+++
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/EventAndObserverMethodHyperlinkDetectorTest.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -2,12 +2,15 @@
import java.util.ArrayList;
+import org.jboss.tools.cdi.core.test.tck.TCKTest;
import org.jboss.tools.cdi.text.ext.CDIExtensionsMessages;
import org.jboss.tools.cdi.text.ext.hyperlink.EventAndObserverMethodHyperlinkDetector;
import org.jboss.tools.cdi.text.ext.hyperlink.EventListHyperlink;
import org.jboss.tools.cdi.text.ext.hyperlink.ObserverMethodListHyperlink;
+import org.jboss.tools.cdi.text.ext.test.CDIHyperlinkTestUtil.TestRegion;
+import org.jboss.tools.cdi.text.ext.test.CDIHyperlinkTestUtil.TestHyperlink;
-public class EventAndObserverMethodHyperlinkDetectorTest extends HyperlinkDetectorTest {
+public class EventAndObserverMethodHyperlinkDetectorTest extends TCKTest {
public void testEventHyperlinkDetector() throws Exception {
String[] elementPaths = new String[]{
@@ -46,7 +49,7 @@
regionList.add(new TestRegion(1235, 11, new TestHyperlink[]{new
TestHyperlink(ObserverMethodListHyperlink.class,
CDIExtensionsMessages.CDI_EVENT_LIST_HYPERLINK_OPEN_OBSERVER_METHODS, elementPaths)}));
regionList.add(new TestRegion(1334, 42, new TestHyperlink[]{new
TestHyperlink(ObserverMethodListHyperlink.class,
CDIExtensionsMessages.CDI_EVENT_LIST_HYPERLINK_OPEN_OBSERVER_METHODS, elementPaths)}));
- checkRegions("JavaSource/org/jboss/jsr299/tck/tests/event/bindingTypes/EventEmitter.java",
regionList, new EventAndObserverMethodHyperlinkDetector());
+ CDIHyperlinkTestUtil.checkRegions(tckProject,
"JavaSource/org/jboss/jsr299/tck/tests/event/bindingTypes/EventEmitter.java",
regionList, new EventAndObserverMethodHyperlinkDetector());
}
public void testObserverMethodHyperlinkDetector() throws Exception {
@@ -65,7 +68,7 @@
regionList.add(new TestRegion(1232, 9, new TestHyperlink[]{new
TestHyperlink(EventListHyperlink.class,
CDIExtensionsMessages.CDI_EVENT_LIST_HYPERLINK_OPEN_EVENTS, elementPaths)}));
regionList.add(new TestRegion(1264, 18, new TestHyperlink[]{new
TestHyperlink(EventListHyperlink.class,
CDIExtensionsMessages.CDI_EVENT_LIST_HYPERLINK_OPEN_EVENTS, elementPaths)}));
- checkRegions("JavaSource/org/jboss/jsr299/tck/tests/event/observer/checkedException/TeaCupPomeranian.java",
regionList, new EventAndObserverMethodHyperlinkDetector());
+ CDIHyperlinkTestUtil.checkRegions(tckProject,
"JavaSource/org/jboss/jsr299/tck/tests/event/observer/checkedException/TeaCupPomeranian.java",
regionList, new EventAndObserverMethodHyperlinkDetector());
}
}
\ No newline at end of file
Deleted:
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/HyperlinkDetectorTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/HyperlinkDetectorTest.java 2011-06-10
00:23:02 UTC (rev 31997)
+++
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/HyperlinkDetectorTest.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -1,378 +0,0 @@
-package org.jboss.tools.cdi.text.ext.test;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.runtime.IAdaptable;
-import org.eclipse.jdt.internal.ui.javaeditor.JavaEditor;
-import org.eclipse.jdt.internal.ui.text.JavaWordFinder;
-import org.eclipse.jface.text.IDocument;
-import org.eclipse.jface.text.IRegion;
-import org.eclipse.jface.text.Region;
-import org.eclipse.jface.text.hyperlink.AbstractHyperlinkDetector;
-import org.eclipse.jface.text.hyperlink.IHyperlink;
-import org.eclipse.jface.text.source.ISourceViewer;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.ide.IDE;
-import org.eclipse.ui.part.FileEditorInput;
-import org.eclipse.ui.texteditor.DocumentProviderRegistry;
-import org.eclipse.ui.texteditor.IDocumentProvider;
-import org.eclipse.ui.texteditor.ITextEditor;
-import org.eclipse.wst.sse.core.StructuredModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IModelManager;
-import org.eclipse.wst.sse.core.internal.provisional.IStructuredModel;
-import org.eclipse.wst.sse.ui.StructuredTextEditor;
-import org.eclipse.wst.xml.ui.internal.tabletree.XMLMultiPageEditorPart;
-import org.jboss.tools.cdi.core.ICDIElement;
-import org.jboss.tools.cdi.core.test.tck.TCKTest;
-import org.jboss.tools.cdi.text.ext.hyperlink.ITestableCDIHyperlink;
-import org.jboss.tools.common.editor.ObjectMultiPageEditor;
-import org.jboss.tools.common.model.ui.editor.EditorPartWrapper;
-import org.jboss.tools.common.text.ext.hyperlink.HyperlinkDetector;
-import org.jboss.tools.common.text.ext.hyperlink.IHyperlinkRegion;
-import org.jboss.tools.common.text.ext.util.AxisUtil;
-
-public class HyperlinkDetectorTest extends TCKTest {
- protected void checkRegions(String fileName, List<TestRegion> regionList,
AbstractHyperlinkDetector elPartitioner) throws Exception {
- IFile file = tckProject.getFile(fileName);
-
- assertNotNull("The file \"" + fileName + "\" is not
found", file);
- assertTrue("The file \"" + fileName + "\" is not found",
file.isAccessible());
-
- FileEditorInput editorInput = new FileEditorInput(file);
-
- IDocumentProvider documentProvider = null;
- try {
- documentProvider =
DocumentProviderRegistry.getDefault().getDocumentProvider(editorInput);
- } catch (Exception x) {
- x.printStackTrace();
- fail("An exception caught: " + x.getMessage());
- }
-
- assertNotNull("The document provider for the file \"" + fileName +
"\" is not loaded", documentProvider);
-
- try {
- documentProvider.connect(editorInput);
- } catch (Exception x) {
- x.printStackTrace();
- fail("The document provider is not able to be initialized with the editor
input\nAn exception caught: "+x.getMessage());
- }
-
- IDocument document = documentProvider.getDocument(editorInput);
-
- assertNotNull("The document for the file \"" + fileName + "\"
is not loaded", document);
-
- int expected = 0;
- for(TestRegion testRegion : regionList)
- expected += testRegion.region.getLength()+1;
-
- IEditorPart part = openFileInEditor(file);
- ISourceViewer viewer = null;
- if(part instanceof JavaEditor){
- viewer = ((JavaEditor)part).getViewer();
- }
-
- elPartitioner.setContext(new TestContext((ITextEditor)part));
-
- int counter = 0;
- for (int i = 0; i < document.getLength(); i++) {
- TestData testData = new TestData(document, i);
- IHyperlink[] links = elPartitioner.detectHyperlinks(viewer,
testData.getHyperlinkRegion(), true);
-
- boolean recognized = links != null;
-
- if (recognized) {
- counter++;
- TestRegion testRegion = findOffsetInRegions(i, regionList);
- if(testRegion == null){
- fail("Wrong detection for offset - "+i);
- }else{
- checkTestRegion(links, testRegion);
- }
- } else {
- for(TestRegion testRegion : regionList){
- if(i >= testRegion.region.getOffset() && i <=
testRegion.region.getOffset()+testRegion.region.getLength()) {
- int line = document.getLineOfOffset(testRegion.region.getOffset());
- fail("Wrong detection for region - "+testRegion.region.getOffset()+"
: "+testRegion.region.getLength()+" region - "+i);
- }
- }
- }
- }
-
- assertEquals("Wrong recognized region count: ", expected, counter);
-
- documentProvider.disconnect(editorInput);
- }
-
- protected void checkTestRegion(IHyperlink[] links, TestRegion testRegion){
- for(IHyperlink link : links){
- TestHyperlink testLink = findTestHyperlink(testRegion.hyperlinks, link);
- assertNotNull("Unexpected hyperlink - "+link.getHyperlinkText(), testLink);
- assertEquals("Unexpected hyperlink type", testLink.hyperlink,
link.getClass());
- assertTrue("Validation fails for hyperlink - "+link.getHyperlinkText(),
testLink.validateHyperlink(link));
- }
-
- for(TestHyperlink testLink : testRegion.hyperlinks){
- IHyperlink link = findHyperlink(links, testLink);
- assertNotNull("Hyperlink - "+testLink.name+" not found", link);
- }
- }
-
- protected TestHyperlink findTestHyperlink(List<TestHyperlink> testHyperlinks,
IHyperlink link){
- for(TestHyperlink testLink : testHyperlinks){
- if(testLink.name.equals(link.getHyperlinkText()))
- return testLink;
- }
- return null;
- }
-
- protected IHyperlink findHyperlink(IHyperlink[] links, TestHyperlink testLink){
- for(IHyperlink link : links){
- if(testLink.name.equals(link.getHyperlinkText()))
- return link;
- }
- return null;
- }
-
- protected void checkHyperLinkInXml(String fileName, int offset, String
hyperlinkClassName) throws Exception {
- checkHyperLinkInXml(fileName, tckProject, offset, hyperlinkClassName);
- }
-
- public static IHyperlink checkHyperLinkInXml(String fileName, IProject project, int
offset, String hyperlinkClassName) throws Exception {
- Region region = new Region(offset, 0);
- IFile file = project.getFile(fileName);
-
- assertNotNull("The file \"" + fileName + "\" is not
found", file);
- assertTrue("The file \"" + fileName + "\" is not found",
file.isAccessible());
-
- FileEditorInput editorInput = new FileEditorInput(file);
-
- IEditorPart part = openFileInEditor(file);
- if(part instanceof EditorPartWrapper) part = ((EditorPartWrapper)part).getEditor();
- ISourceViewer viewer = null;
- if (part instanceof XMLMultiPageEditorPart) {
- IEditorPart[] parts = ((XMLMultiPageEditorPart)part).findEditors(editorInput);
- if(parts.length>0) {
- viewer = ((StructuredTextEditor)parts[0]).getTextViewer();
- }
- } else if(part instanceof ObjectMultiPageEditor) {
- viewer = ((ObjectMultiPageEditor)part).getSourceEditor().getTextViewer();
- } else if(part instanceof StructuredTextEditor) {
- viewer = ((StructuredTextEditor)part).getTextViewer();
- }
-
- IHyperlink[] links = HyperlinkDetector.getInstance().detectHyperlinks(viewer, region,
true);
- if(links!=null) {
- for (IHyperlink hyperlink : links) {
- if(hyperlink.getClass().getName().equals(hyperlinkClassName)) {
- return hyperlink;
- }
- }
- }
- fail("Can't find HyperLink");
- return null;
- }
-
- protected TestRegion findOffsetInRegions(int offset, List<TestRegion>
regionList){
- for(TestRegion testRegion : regionList){
- if(offset >= testRegion.region.getOffset() && offset <=
testRegion.region.getOffset()+testRegion.region.getLength())
- return testRegion;
- }
- return null;
- }
-
- public static IEditorPart openFileInEditor(IFile input) {
- return openFileInEditor(input, null);
- }
-
- public static IEditorPart openFileInEditor(IFile input, String id) {
- if (input != null && input.exists()) {
- try {
- if(id==null) {
- IWorkbenchPage page = PlatformUI.getWorkbench()
- .getActiveWorkbenchWindow().getActivePage();
- return IDE.openEditor(page, input, true);
- } else {
- IWorkbenchPage page = PlatformUI.getWorkbench()
- .getActiveWorkbenchWindow().getActivePage();
- return IDE.openEditor(page, input, id, true);
- }
- } catch (PartInitException pie) {
- pie.printStackTrace();
- fail(pie.getMessage());
- }
- }
- return null;
- }
-
- class TestData {
- IDocument document;
- int offset;
- IRegion region;
- String contentType;
- private IHyperlinkRegion hyperlinkRegion = null;
-
- TestData (IDocument document, int offset) {
- this.document = document;
- this.offset = offset;
- init();
- }
-
- private void init() {
- this.region = getDocumentRegion();
- this.contentType = getContentType();
- this.hyperlinkRegion = getHyperlinkRegion();
- }
-
- private IRegion getDocumentRegion() {
- IRegion region = null;
- try {
- region = JavaWordFinder.findWord(document, offset);
- } catch (Exception x) {
- x.printStackTrace();
- fail(x.getMessage());
- }
-
- return region;
- }
-
- public IHyperlinkRegion getHyperlinkRegion() {
- if (hyperlinkRegion != null)
- return hyperlinkRegion;
-
- return new IHyperlinkRegion() {
- public String getAxis() {
- return AxisUtil.getAxis(document, region.getOffset());
- }
- public String getContentType() {
- return contentType;
- }
- public String getType() {
- return region.toString();
- }
- public int getLength() {
- return region.getLength();
- }
- public int getOffset() {
- return region.getOffset();
- }
- public String toString() {
- return "[" + getOffset() + "-" + (getOffset() +
getLength() - 1) + ":" + getType() + ":" + getContentType() +
"]";
- }
- };
- }
-
- /**
- * Returns the content type of document
- *
- * @param document -
- * assumes document is not null
- * @return String content type of given document
- */
- private String getContentType() {
- String type = null;
-
- IModelManager mgr = StructuredModelManager.getModelManager();
- IStructuredModel model = null;
- try {
- model = mgr.getExistingModelForRead(document);
- if (model != null) {
- type = model.getContentTypeIdentifier();
- }
- } finally {
- if (model != null) {
- model.releaseFromRead();
- }
- }
- return type;
- }
- }
-
- class TestContext implements IAdaptable{
- ITextEditor editor;
-
- public TestContext(ITextEditor editor){
- this.editor = editor;
- }
-
- public Object getAdapter(Class adapter) {
- if(adapter.equals(ITextEditor.class))
- return editor;
- return null;
- }
- }
-
- public class TestRegion{
- Region region;
- ArrayList<TestHyperlink> hyperlinks = new ArrayList<TestHyperlink>();
-
- public TestRegion(int offset, int length, TestHyperlink[] testHyperlinks){
- region = new Region(offset, length);
- for(TestHyperlink testHyperlink : testHyperlinks){
- hyperlinks.add(testHyperlink);
- }
- }
- }
-
- public class TestHyperlink{
- Class<? extends IHyperlink> hyperlink;
- ICDIElement element = null;
- String[] elementPaths = null;
- String name;
-
- public TestHyperlink(Class<? extends IHyperlink> hyperlink, String name){
- this.hyperlink = hyperlink;
- this.name = name;
- }
-
- public TestHyperlink(Class<? extends IHyperlink> hyperlink, String name,
ICDIElement element){
- this(hyperlink, name);
- this.element = element;
- }
-
- public TestHyperlink(Class<? extends IHyperlink> hyperlink, String name, String[]
elementPaths){
- this(hyperlink, name);
- this.elementPaths = elementPaths;
- }
-
- public boolean validateHyperlink(IHyperlink hyperlink){
- if(hyperlink instanceof ITestableCDIHyperlink &&
((ITestableCDIHyperlink)hyperlink).getCDIElement() != null && element != null){
- assertEquals(element, ((ITestableCDIHyperlink)hyperlink).getCDIElement());
- }else if(hyperlink instanceof ITestableCDIHyperlink &&
((ITestableCDIHyperlink)hyperlink).getCDIElements() != null && elementPaths !=
null){
- for(ICDIElement element : ((ITestableCDIHyperlink)hyperlink).getCDIElements()){
- String elementPath = findElementPath(elementPaths, element);
- assertNotNull("Unexpected CDI element -
"+element.getSourcePath().toString(), elementPath);
- }
-
- for(String elementPath : elementPaths){
- ICDIElement element =
findCDIElement(((ITestableCDIHyperlink)hyperlink).getCDIElements(), elementPath);
- assertNotNull("CDI element - "+elementPath+" not found",
element);
- }
- }
- return true;
- }
-
- protected String findElementPath(String[] elementPaths, ICDIElement element){
- for(String elementPath : elementPaths){
- if(elementPath.equals(element.getSourcePath().toString()))
- return elementPath;
- }
- return null;
- }
-
- protected ICDIElement findCDIElement(Set<? extends ICDIElement> elements, String
elementPath){
- for(ICDIElement element : elements){
- if(elementPath.equals(element.getSourcePath().toString()))
- return element;
- }
- return null;
- }
-
- }
-}
\ No newline at end of file
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/InjectedPointHyperlinkDetectorTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/InjectedPointHyperlinkDetectorTest.java 2011-06-10
00:23:02 UTC (rev 31997)
+++
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/InjectedPointHyperlinkDetectorTest.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -5,15 +5,17 @@
import org.eclipse.core.resources.IFile;
import org.jboss.tools.cdi.core.IBean;
+import org.jboss.tools.cdi.core.test.tck.TCKTest;
import org.jboss.tools.cdi.text.ext.CDIExtensionsMessages;
import org.jboss.tools.cdi.text.ext.hyperlink.AlternativeInjectedPointListHyperlink;
import org.jboss.tools.cdi.text.ext.hyperlink.InjectedPointHyperlink;
import org.jboss.tools.cdi.text.ext.hyperlink.InjectedPointHyperlinkDetector;
-import org.jboss.tools.cdi.text.ext.test.HyperlinkDetectorTest.TestRegion;
+import org.jboss.tools.cdi.text.ext.test.CDIHyperlinkTestUtil.TestRegion;
import org.jboss.tools.common.util.FileUtil;
+import org.jboss.tools.cdi.text.ext.test.CDIHyperlinkTestUtil.TestHyperlink;
-public class InjectedPointHyperlinkDetectorTest extends HyperlinkDetectorTest {
+public class InjectedPointHyperlinkDetectorTest extends TCKTest {
public void testInjectedPointHyperlinkDetector() throws Exception {
Set<IBean> beans =
cdiProject.getBeans("/tck/JavaSource/org/jboss/jsr299/tck/tests/lookup/injectionpoint/BasicLogger.java", true);
@@ -43,7 +45,7 @@
new TestHyperlink(AlternativeInjectedPointListHyperlink.class,
CDIExtensionsMessages.CDI_INJECTED_POINT_HYPERLINK_SHOW_ALTERNATIVES)
})); // logger
- checkRegions("JavaSource/org/jboss/jsr299/tck/tests/lookup/injectionpoint/LoggerConsumer.java",
regionList, new InjectedPointHyperlinkDetector());
+ CDIHyperlinkTestUtil.checkRegions(tckProject,
"JavaSource/org/jboss/jsr299/tck/tests/lookup/injectionpoint/LoggerConsumer.java",
regionList, new InjectedPointHyperlinkDetector());
}
public void testInjectedProducerMethodParametersHyperlinkDetector() throws Exception {
@@ -62,7 +64,7 @@
new TestHyperlink(InjectedPointHyperlink.class,
CDIExtensionsMessages.CDI_INJECTED_POINT_HYPERLINK_OPEN_INJECT_BEAN+ "
CustomProducerImpl.produce()", bean)
})); // order
- checkRegions("JavaSource/org/jboss/jsr299/tck/tests/jbt/openon/CustomProducerImpl.java",
regionList, new InjectedPointHyperlinkDetector());
+ CDIHyperlinkTestUtil.checkRegions(tckProject,
"JavaSource/org/jboss/jsr299/tck/tests/jbt/openon/CustomProducerImpl.java",
regionList, new InjectedPointHyperlinkDetector());
}
public void testInjectedConstructorParametersHyperlinkDetector() throws Exception {
@@ -79,7 +81,7 @@
regionList.add(new TestRegion(979, 3, new TestHyperlink[]{new
TestHyperlink(InjectedPointHyperlink.class,
CDIExtensionsMessages.CDI_INJECTED_POINT_HYPERLINK_OPEN_INJECT_BEAN+ " Fox",
bean)}));
regionList.add(new TestRegion(1017, 3, new TestHyperlink[]{new
TestHyperlink(InjectedPointHyperlink.class,
CDIExtensionsMessages.CDI_INJECTED_POINT_HYPERLINK_OPEN_INJECT_BEAN+ " Fox",
bean)}));
- checkRegions("JavaSource/org/jboss/jsr299/tck/tests/context/dependent/FoxFarm.java",
regionList, new InjectedPointHyperlinkDetector());
+ CDIHyperlinkTestUtil.checkRegions(tckProject,
"JavaSource/org/jboss/jsr299/tck/tests/context/dependent/FoxFarm.java",
regionList, new InjectedPointHyperlinkDetector());
}
public void testInjectedInitializerParametersHyperlinkDetector() throws Exception {
@@ -96,7 +98,7 @@
regionList.add(new TestRegion(976, 3, new TestHyperlink[]{new
TestHyperlink(InjectedPointHyperlink.class,
CDIExtensionsMessages.CDI_INJECTED_POINT_HYPERLINK_OPEN_INJECT_BEAN+ " Fox",
bean)}));
regionList.add(new TestRegion(1014, 3, new TestHyperlink[]{new
TestHyperlink(InjectedPointHyperlink.class,
CDIExtensionsMessages.CDI_INJECTED_POINT_HYPERLINK_OPEN_INJECT_BEAN+ " Fox",
bean)}));
- checkRegions("JavaSource/org/jboss/jsr299/tck/tests/context/dependent/FoxHole.java",
regionList, new InjectedPointHyperlinkDetector());
+ CDIHyperlinkTestUtil.checkRegions(tckProject,
"JavaSource/org/jboss/jsr299/tck/tests/context/dependent/FoxHole.java",
regionList, new InjectedPointHyperlinkDetector());
}
}
\ No newline at end of file
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/ProducerDisposerHyperlinkDetectorTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/ProducerDisposerHyperlinkDetectorTest.java 2011-06-10
00:23:02 UTC (rev 31997)
+++
trunk/cdi/tests/org.jboss.tools.cdi.text.ext.test/src/org/jboss/tools/cdi/text/ext/test/ProducerDisposerHyperlinkDetectorTest.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -2,12 +2,15 @@
import java.util.ArrayList;
+import org.jboss.tools.cdi.core.test.tck.TCKTest;
import org.jboss.tools.cdi.text.ext.CDIExtensionsMessages;
import org.jboss.tools.cdi.text.ext.hyperlink.DisposerHyperlink;
import org.jboss.tools.cdi.text.ext.hyperlink.ProducerDisposerHyperlinkDetector;
import org.jboss.tools.cdi.text.ext.hyperlink.ProducerHyperlink;
+import org.jboss.tools.cdi.text.ext.test.CDIHyperlinkTestUtil.TestHyperlink;
+import org.jboss.tools.cdi.text.ext.test.CDIHyperlinkTestUtil.TestRegion;
-public class ProducerDisposerHyperlinkDetectorTest extends HyperlinkDetectorTest {
+public class ProducerDisposerHyperlinkDetectorTest extends TCKTest {
public void testProducerDisposerHyperlinkDetector() throws Exception {
ArrayList<TestRegion> regionList = new ArrayList<TestRegion>();
@@ -15,6 +18,6 @@
regionList.add(new TestRegion(1222, 7, new TestHyperlink[]{new
TestHyperlink(DisposerHyperlink.class,
CDIExtensionsMessages.CDI_PRODUCER_DISPOSER_HYPERLINK_OPEN_BOUND_DISPOSER+ "
dispose")})); // producer
regionList.add(new TestRegion(1291, 7, new TestHyperlink[]{new
TestHyperlink(ProducerHyperlink.class,
CDIExtensionsMessages.CDI_PRODUCER_DISPOSER_HYPERLINK_OPEN_BOUND_PRODUCER+ "
produce")})); // disposer
- checkRegions("JavaSource/org/jboss/jsr299/tck/tests/decorators/invocation/producer/method/ProducerImpl.java",
regionList, new ProducerDisposerHyperlinkDetector());
+ CDIHyperlinkTestUtil.checkRegions(tckProject,
"JavaSource/org/jboss/jsr299/tck/tests/decorators/invocation/producer/method/ProducerImpl.java",
regionList, new ProducerDisposerHyperlinkDetector());
}
}
\ No newline at end of file
Modified:
trunk/cdi/tests/org.jboss.tools.cdi.ui.test/src/org/jboss/tools/cdi/ui/test/search/CDISearchParticipantTest.java
===================================================================
---
trunk/cdi/tests/org.jboss.tools.cdi.ui.test/src/org/jboss/tools/cdi/ui/test/search/CDISearchParticipantTest.java 2011-06-10
00:23:02 UTC (rev 31997)
+++
trunk/cdi/tests/org.jboss.tools.cdi.ui.test/src/org/jboss/tools/cdi/ui/test/search/CDISearchParticipantTest.java 2011-06-10
00:59:29 UTC (rev 31998)
@@ -19,6 +19,7 @@
import org.eclipse.jdt.ui.search.ISearchRequestor;
import org.eclipse.jdt.ui.search.QuerySpecification;
import org.eclipse.search.ui.text.Match;
+import org.jboss.tools.cdi.core.CDIUtil;
import org.jboss.tools.cdi.core.ICDIElement;
import org.jboss.tools.cdi.core.test.tck.TCKTest;
import org.jboss.tools.cdi.internal.core.impl.ClassBean;
@@ -26,7 +27,6 @@
import org.jboss.tools.cdi.internal.core.impl.InjectionPointField;
import org.jboss.tools.cdi.internal.core.impl.InjectionPointParameter;
import org.jboss.tools.cdi.internal.core.impl.ObserverMethod;
-import org.jboss.tools.cdi.ui.marker.MarkerResolutionUtils;
import org.jboss.tools.cdi.ui.search.CDIBeanQueryParticipant;
import org.jboss.tools.cdi.ui.search.CDIMatch;
import org.jboss.tools.cdi.ui.search.InjectionPointQueryParticipant;
@@ -55,7 +55,7 @@
element = type;
}else if(searchType == PARAMETER_SEARCH){
IMethod method = getMethod(type, elementName);
- element = MarkerResolutionUtils.getParameter(method, parameterName);
+ element = CDIUtil.getParameter(method, parameterName);
}
if(element != null){