Ç÷¯±×ÀÎÀº JDT API¸¦ »ç¿ëÇÏ¿© ¸Þ¼Òµå ÂüÁ¶, ÇÊµå ¼±¾ð, ÀÎÅÍÆäÀ̽ºÀÇ ±¸ÇöÀÚ µî°ú °°Àº Java ¿ä¼ÒÀÇ ÀÛ¾÷°ø°£¿¡¼ Java ÇÁ·ÎÁ§Æ®¸¦ °Ë»öÇÒ ¼ö ÀÖ½À´Ï´Ù.
Java °Ë»öÀÇ ½ÃÀÛÁ¡Àº SearchEngine Ŭ·¡½ºÀÔ´Ï´Ù. Java ¿ä¼Ò¿¡¼ ƯÁ¤ ÆÐÅÏÀ» Ž»öÇÒ ¼ö ÀÖ½À´Ï´Ù. °Ë»ö ÆÐÅÏÀº createPatternÀ» »ç¿ëÇÏ¿© ÀÛ¼ºµÉ ¼ö ÀÖ½À´Ï´Ù. ÆÐÅÏ ¹üÀ§´Â createJavaSearchScopeÀ» »ç¿ëÇÏ¿© ÁöÁ¤µË´Ï´Ù. ÆÐÅÏ ¹× ¹üÀ§°¡ Á¤ÀǵǸé search ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© °á°ú¸¦ ¼öÁýÇÕ´Ï´Ù.
°Ë»ö °á°ú´Â SearchRequestor·Î º¸°íµÇ¸ç, ÀÌ °á°ú¿¡ ¾×¼¼½ºÇÏ·Á¸é À̸¦ È®ÀåÇØ¾ß ÇÕ´Ï´Ù.
°Ë»ö Á¶ÀÛÀº °Ë»öÀÇ ¼Ó¼ºÀ» ¼³¸íÇÏ´Â ÆÐÅϰú Á¶»ç ¹üÀ§¸¦ Á¦ÇÑÇÏ´Â ¹üÀ§¸¦ ¸ðµÎ »ç¿ëÇÕ´Ï´Ù.
°Ë»ö ÆÐÅÏÀº °Ë»ö °á°ú¸¦ ã´Â ¹æ¹ýÀ» Á¤ÀÇÇÕ´Ï´Ù. Java ¿ä¼Ò(createPatternPattern(IJavaElement, int) ÂüÁ¶) ¶Ç´Â ¹®ÀÚ¿(createPattern(String, int, int, int) ÂüÁ¶)¿¡¼ °Ë»ö ÆÐÅÏÀ» ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù. ¸¶Áö¸· ¸Þ¼Òµå´Â ¿ÍÀϵå Ä«µå(¿¹: '*')¸¦ Áö¿øÇÏ°í °Ë»ö °á°ú¸¦ È®´ëÇÏ´Â µ¥ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾î, ÁöÁ¤ÇÑ ¸Þ¼Òµå¿¡ ´ëÇÑ ÂüÁ¶¸¦ °Ë»öÇÏ´Â °Ë»ö ÆÐÅÏÀº ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÕ´Ï´Ù.
// Get the method IMethod method = ...; // Create search pattern SearchPattern pattern = SearchPattern.createPattern(method, IJavaSearchConstants.REFERENCES);
¶Ç´Â "Obj"·Î ½ÃÀÛÇÏ´Â ¸ðµç À¯ÇüÀÇ ¼±¾ðÀ» °Ë»öÇÏ´Â °Ë»ö ÆÐÅÏÀº ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÕ´Ï´Ù.
// Create search pattern SearchPattern pattern = SearchPattern.createPattern("Obj*", IJavaSearchConstants.TYPE, IJavaSearchConstants.DECLARATIONS, SearchPattern.R_PATTERN_MATCH | SearchPattern.R_CASE_SENSITIVE);
´ÙÀ½ °Ë»ö ÆÐÅÏÀ» Áö¿øÇÕ´Ï´Ù.
ÁöÁ¤ÇÑ ÇÁ·ÎÁ§Æ®¿¡¼ ¶Ç´Â ÁöÁ¤ÇÑ ÆÐŰÁö¿¡¼ÀÇ °Ë»ö °á°ú¿¡ °ü½ÉÀÌ ÀÖ´Â °æ¿ì ¶Ç´Â °Ë»ö °á°ú°¡ ÁöÁ¤ÇÑ À¯ÇüÀÇ °èÃþ ±¸Á¶¿¡¼¸¸ ÀÖÀ» ¼ö ÀÖÀ½À» ¾Ë°í ÀÖ´Â °æ¿ì createJavaSearchScope(IJavaElement[]) ¶Ç´Â createHierarchyScope(IType)À» »ç¿ëÇÏ¿© ÀûÀýÇÑ °Ë»ö ¹üÀ§¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
¿¹¸¦ µé¾î, ÁöÁ¤ÇÑ ÆÐŰÁö¿¡ ´ëÇÑ °Ë»ö ¹üÀ§´Â ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÕ´Ï´Ù.
// Get the package IPackageFragment pkg = ...; // Create search scope IJavaSearchScope scope = SearchEngine.createJavaSearchScope(new IJavaElement[] {pkg});
¶Ç´Â ÁöÁ¤ÇÑ À¯ÇüÀÇ °èÃþ ±¸Á¶¿¡ ´ëÇÑ °Ë»ö ¹üÀ§´Â ´ÙÀ½°ú °°ÀÌ ÀÛ¼ºÇÕ´Ï´Ù.
// Get the type IType type = ...; // Create search scope IJavaSearchScope scope = SearchEngine.createHierarchyScope(type);
¸¶Áö¸·À¸·Î createWorkspaceScopeÀ» »ç¿ëÇÏ¿© Àüü ÀÛ¾÷°ø°£À» ºñ±³ÇÏ´Â °Ë»ö ¹üÀ§¸¦ ÀÛ¼ºÇÒ ¼ö ÀÖ½À´Ï´Ù.
// Create search scope IJavaSearchScope scope = SearchEngine.createWorkspaceScope();
°Ë»ö ÆÐÅϰú °Ë»ö ¹üÀ§¸¦ ÀÛ¼ºÇϰí SearchRequestor¸¦ È®ÀåÇßÀ¸¸é, ´ÙÀ½°ú °°ÀÌ °Ë»ö Á¶È¸¸¦ ½ÃÀÛÇÒ ¼ö ÀÖ½À´Ï´Ù.
// Get the search pattern SearchPattern pattern = ...; // Get the search scope IJavaSearchScope scope = ...; // Get the search requestor SearchRequestor requestor = ...; // Search SearchEngine searchEngine = new SearchEngine(); searchEngine.search(pattern, new SearchParticipant[] {SearchEngine.getDefaultSearchParticipant()}, scope, requestor, null);
beginReporting ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© °Ë»ö ¿äûÀÚ¿¡°Ô °Ë»ö ½ÃÀÛ ¾Ë¸²À» Àü¼ÛÇÕ´Ï´Ù. ±×·± ´ÙÀ½, acceptSearchMatch ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© °¢ °Ë»ö °á°ú¸¦ º¸°íÇÕ´Ï´Ù. ¸¶Áö¸·À¸·Î endReportingÀº °Ë»öÀÌ Á¾·áµÇ¾úÀ½À» Ç¥½ÃÇÕ´Ï´Ù.
°Ë»ö °á°ú´Â acceptSearchMatch(SearchMatch) ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¿© º¸°íµË´Ï´Ù. ¾Æ·¡ ´Ü¶ôÀº SearchMatchÀÇ ÀϺΠ±â´ÉÀ» °Á¶Ç¥½ÃÇÕ´Ï´Ù.
°Ë»ö °á°ú´Â Java ¿ä¼Ò(¿¹: À¯Çü ¼±¾ð)¿¡ ÇØ´çÇϰųª Java ¿ä¼Ò(¿¹: ¸Þ¼Òµå ³»ºÎ À¯Çü¿¡ ´ëÇÑ ÂüÁ¶)¿¡ Æ÷Ç﵃ ¼ö ÀÖ½À´Ï´Ù. °Ë»ö ¿£ÁøÀº Ç×»ó °Ë»ö °á°ú¿Í ÀÏÄ¡Çϰųª °Ë»ö °á°ú¸¦ Æ÷ÇÔÇÏ´Â °¡Àå ³»ºÎÀÇ Java ¿ä¼Ò¸¦ ãÀ¸·Á°í ÇÕ´Ï´Ù. ¿¹¸¦ µé¾î, ¸Þ¼Òµå¿¡ ´ëÇÑ ÂüÁ¶¸¦ °Ë»öÇÒ ¶§ ÃʱâÈ ÇÁ·Î±×·¥¿¡¼ ÀÌ·¯ÇÑ ÂüÁ¶¸¦ ãÀ» ¼ö ÀÖ½À´Ï´Ù. ÀÌ ¸Þ¼Òµå ÂüÁ¶¸¦ Æ÷ÇÔÇϰí ÀÖ´Â ÃʱâÈ ÇÁ·Î±×·¥Àº °Ë»ö ÀÏÄ¡ÀÇ ¿ä¼ÒÀÔ´Ï´Ù.
¶ÇÇÑ °Ë»ö ¿£ÁøÀº Java ¿ä¼Ò°¡ µé¾î ÀÖ´Â ÀÚ¿øÀ» ãÀ¸·Á°í ½ÃµµÇÕ´Ï´Ù. Java ¿ä¼Ò°¡ ÄÄÆÄÀÏ ´ÜÀ§ ¶Ç´Â Ŭ·¡½º ÆÄÀÏ¿¡ µé¾î ÀÖ´Â °æ¿ì ÀÚ¿øÀº ÇØ´çÇÏ´Â IFileÀÔ´Ï´Ù. Java ¿ä¼Ò°¡ .jar ÆÄÀÏ¿¡ µé¾î ÀÖ´Â °æ¿ì ÀÛ¾÷°ø°£¿¡ .jar ÆÄÀÏÀÌ ÀÖÀ¸¸é ¸®ÅÏµÈ ÀÚ¿øÀº ³Î(null)ÀÔ´Ï´Ù.
¼Ò½º À§Ä¡ getOffset ¹× getLength´Â °Ë»ö °á°ú¸¦ Æ÷ÇÔÇÏ´Â ÄÄÆÄÀÏ ´ÜÀ§¿Í °ü·ÃÀÌ ÀÖ½À´Ï´Ù. °Ë»ö °á°ú°¡ .jar ÆÄÀÏ¿¡ µé¾î ÀÖ´Â °æ¿ì ¼Ò½º À§Ä¡´Â ÷ºÎµÈ ¼Ò½º¿Í °ü·ÃÀÌ ÀÖ½À´Ï´Ù. .jar ÆÄÀÏ¿¡ ÷ºÎµÈ ¼Ò½º°¡ ¾ø´Â °æ¿ì ¼Ò½º À§Ä¡´Â (-1, -1)ÀÔ´Ï´Ù.
´ëºÎºÐÀÇ °æ¿ì¿¡ °Ë»ö °á°ú´Â Á¤È®Çϸç, À̰ÍÀº ÁöÁ¤µÈ ÀÏÄ¡»çÇ×ÀÌ ¿äûÇÑ °ÍÀÓÀ» °Ë»ö ¿£ÁøÀÌ ÆÇº°ÇÒ ¼ö ÀÖÀ½À» ÀǹÌÇÕ´Ï´Ù. ±×·¯³ª ÀϺΠ°æ¿ì °Ë»ö ¿£ÁøÀÌ ÆÇº°ÇÒ ¼ö ¾ø´Âµ¥, ÀÌ °°Àº °æ¿ì ÀÏÄ¡»çÇ×Àº ºÎÁ¤È®ÇÕ´Ï´Ù. ÀÏÄ¡»çÇ×ÀÌ ºÎÁ¤È®ÇÒ ¼ö ÀÖ´Â ¸î °¡Áö ÀÌÀ¯´Â ´ÙÀ½°ú °°½À´Ï´Ù.