Ç÷¯±×ÀÎÀº JDT API¸¦ »ç¿ëÇÏ¿© Ŭ·¡½º³ª ÀÎÅÍÆäÀ̽º¸¦ ÀÛ¼ºÇÏ°í ±âÁ¸ À¯Çü¿¡ ¸Þ¼Òµå¸¦ Ãß°¡Çϰųª À¯Çü¿¡ ´ëÇÑ ¸Þ¼Òµå¸¦ º¯°æÇÒ ¼ö ÀÖ½À´Ï´Ù.
Java ¿ÀºêÁ§Æ®¸¦ º¯°æÇÏ´Â °¡Àå °£´ÜÇÑ ¹æ¹ýÀº Java ¿ä¼Ò API¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. º¸´Ù ÀϹÝÀûÀÎ ±â¼úÀÌ Java ¿ä¼ÒÀÇ ¿ø½Ã ¼Ò½º Äڵ忡 ´ëÇÑ ÀÛ¾÷À» À§ÇØ »ç¿ëµÉ ¼ö ÀÖ½À´Ï´Ù.
ÄÄÆÄÀÏ ´ÜÀ§¸¦ ÇÁ·Î±×·¥¿¡ µû¶ó »ý¼ºÇÏ´Â °¡Àå °£´ÜÇÑ ¹æ¹ýÀº IPackageFragment.createCompilationUnitÀ» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù. ÄÄÆÄÀÏ ´ÜÀ§ÀÇ À̸§°ú ÄÁÅÙÃ÷¸¦ ÁöÁ¤ÇÕ´Ï´Ù. ÄÄÆÄÀÏ ´ÜÀ§°¡ ÆÐŰÁö ³»¿¡ ÀÛ¼ºµÇ°í »õ ICompilationUnitÀÌ ¸®Åϵ˴ϴÙ.
º¸Åë ÄÄÆÄÀÏ ´ÜÀ§´Â ÆÐŰÁö µð·ºÅ丮¿¡ ÇØ´çÇÏ´Â ÀûÀýÇÑ Æú´õ¿¡ È®ÀåÀÚ°¡ ".java"ÀÎ ÆÄÀÏ ÀÚ¿øÀ» ¸¸µé¾î¼ ÀÛ¼ºµË´Ï´Ù. ÀÏ¹Ý ÀÚ¿ø API¸¦ »ç¿ëÇϸé Java µµ±¸ÀÇ "µÚ·Î" À̵¿ÇϹǷΠÀÏ¹Ý ÀÚ¿ø º¯°æ ¸®½º³Ê°¡ ¾Ë·ÁÁö°í JDT ¸®½º³Ê°¡ Java ¸ðµ¨À» »õ ÄÄÆÄÀÏ ´ÜÀ§·Î °»½ÅÇØ¾ß Java ¸ðµ¨ÀÌ °»½ÅµË´Ï´Ù.
Java ¼Ò½º¸¦ ¼öÁ¤ÇÏ´Â °¡Àå °£´ÜÇÑ ¹æ¹ýÀº Java ¿ä¼Ò API¸¦ »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.
¿¹¸¦ µé¾î, ÄÄÆÄÀÏ ´ÜÀ§¿¡¼ À¯ÇüÀ» Á¶È¸ÇÒ ¼ö ÀÖ½À´Ï´Ù. ITypeÀÌ ÀÖ´Â °æ¿ì createField, createInitializer, createMethod ¶Ç´Â createType°ú °°Àº ÇÁ·ÎÅäÄÝÀ» »ç¿ëÇÏ¿© ¼Ò½º ÄÚµå ±¸¼º¿øÀ» À¯Çü¿¡ Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. ±¸¼º¿øÀÇ À§Ä¡¿¡ °üÇÑ Á¤º¸¿Í ¼Ò½º Äڵ尡 ÀÌ·¯ÇÑ ¸Þ¼Òµå¿¡ Á¦°øµË´Ï´Ù.
ISourceManipulation ÀÎÅÍÆäÀ̽º´Â Java ¿ä¼ÒÀÇ °øÅë ¼Ò½º Á¶ÀÛÀ» Á¤ÀÇÇÕ´Ï´Ù. ¿©±â¿¡´Â À¯Çü ±¸¼º¿øÀÇ À̸§ ¹Ù²Ù±â, À̵¿, º¹»ç ¶Ç´Â »èÁ¦ ¸Þ¼Òµå°¡ Æ÷ÇԵ˴ϴÙ.
ÀϺΠ¼Ò½º ÄÚµå ¼öÁ¤Àº Java ¿ä¼Ò API¸¦ ÅëÇØ Á¦°øµÇÁö ¾Ê½À´Ï´Ù. ¼Ò½º Äڵ带 ÆíÁý(¿¹: ±âÁ¸ ¿ä¼ÒÀÇ ¼Ò½º ÄÚµå º¯°æ)ÇÏ´Â ÀϹÝÀûÀÎ ¹æ¹ýÀº ÄÄÆÄÀÏ ´ÜÀ§ÀÇ ¿ø½Ã ¼Ò½º ÄÚµå¿Í Java DOMÀ» »ç¿ëÇÏ´Â °ÍÀÔ´Ï´Ù.
ÀÌ·¯ÇÑ ±â¼úÀº ´ÙÀ½°ú °°½À´Ï´Ù.
// get the source for a compilation unit
String contents = myCompilationUnit.getBuffer().getContents();
// Create an editable JDOM
myJDOM = new DOMFactory();
myDOMCompilationUnit = myJDOM.createCompilationUnit(contents, "MyClass");
// Navigate and edit the compilation unit structure using
// JDOM node protocol.
...
// Once modififications have been made to all of the nodes
// get the source back from the compilation unit DOM node.
String newContents = myDOMCompilationUnit.getContents();
// Set this code back into the compilation unit element
myCompilationUnit.getBuffer().setContents(newContents);
// Save the buffer to the file.
myCompilationUnit.save();
ÀÌ ±â¼úÀº Java ¿ä¼Ò°¡ °ð¹Ù·Î °»½ÅµÇÁö ¾Ê±â ¶§¹®¿¡ ¿Ã¹Ù¸£Áö ¾ÊÀº Çà ¹øÈ£¿Í ¿¬°üµÈ ¹®Á¦Á¡ ¸¶Ä¿°¡ ¹ß»ýÇÒ ¼ö ÀÖ½À´Ï´Ù.
Java ¿ä¼Ò ¸ðµ¨Àº ¸Þ¼Òµå¿Í Çʵ庸´Ù Á¤±³ÇÏÁö ¾Ê½À´Ï´Ù. ÄÄÆÄÀÏ·¯¿¡ »ç¿ëµÇ´Â AST(Abstract Syntax Tree)¸¦ API·Î »ç¿ëÇÒ ¼ö ¾øÀ¸¹Ç·Î JDT¿¡¼ ¼Ò½º¸¦ ÇÁ·Î±×·¥ ±¸Á¶·Î ºÐ¼®ÇÏ´Â µ¥ »ç¿ëÇÏ´Â ±â¼úÀ» ÇöÀç API·Î »ç¿ëÇÒ ¼ö ¾ø½À´Ï´Ù.
Ç÷¯±×ÀÎÀÌ »çÈÄ¿¡ Java ¿ä¼Ò¿¡ ´ëÇÑ º¯°æ»çÇ×À» ¾Ë¾Æ¾ß ÇÒ °æ¿ì Java IElementChangedListener¸¦ JavaCore¿¡ µî·ÏÇÒ ¼ö ÀÖ½À´Ï´Ù.
JavaCore.addElementChangedListener(new MyJavaElementChangeReporter());.
Java ¿ä¼Ò º¯°æ ¸®½º³Ê´Â ÀÚ¿ø º¯°æ ¸®½º³Ê(ÀÚ¿ø º¯°æ ÃßÀû¿¡ ¼³¸í)¿Í °³³äÀûÀ¸·Î À¯»çÇÕ´Ï´Ù. ´ÙÀ½ ½º´ÏÆêÀº ½Ã½ºÅÛ ÄܼÖÀÇ ¿ä¼Ò µ¨Å¸¸¦ ÀμâÇÏ´Â Java ¿ä¼Ò º¯°æ º¸°í¼¸¦ ±¸ÇöÇÕ´Ï´Ù.
public class MyJavaElementChangeReporter implements IElementChangedListener {
public void elementChanged(ElementChangedEvent event) {
IJavaElementDelta delta= event.getDelta();
if (delta != null) {
System.out.println("delta received: ");
System.out.print(delta);
}
}
)
IJavaElementDelta¿¡´Â º¯°æµÈ ¿ä¼Ò¿Í º¯°æ À¯ÇüÀ» ¼³¸íÇÏ´Â Ç÷¡±×°¡ ÀÖ½À´Ï´Ù.