È®ÀåÁ¡ Á¤ÀÇ

´Ù¸¥ Ç÷¯±×Àο¡¼­ »ç¿ëÀÚ Ç÷¯±×ÀÎÀÇ ±â´ÉÀ» È®ÀåÇϰųª »ç¿ëÀÚ Á¤ÀÇÇÒ ¼ö ÀÖ°Ô ÇÏ·Á¸é È®ÀåÁ¡À» Á¤ÀÇÇØ¾ß ÇÕ´Ï´Ù. È®Àåó·³ È®ÀåÁ¡À» Á¤ÀÇÇϱâ À§ÇÑ Ã¹ ¹øÂ° ´Ü°è´Â »ç¿ëÀÚ Ç÷¯±×ÀÎÀÇ plugin.xml ÆÄÀÏ¿¡ ÀϺΠ¸¶Å©¾÷À» Ãß°¡ÇÏ´Â °ÍÀÔ´Ï´Ù. ´ÙÀ½Àº Ư¼º º¸±âÀÇ ¿¹Á¦ÀÔ´Ï´Ù.

   <?xml version="1.0" ?>
<plugin
      name="Simple Extension Point Plugin" 
      id="org.eclipse.sample"
      version="1.0">
      <runtime>
         <library name="extpt.jar" />
      </runtime>
      <extension-point
         name="Sample Extension Point"
         id="sampleExtensionPoint"/>
   </plugin>

À̰ÍÀÌ »ç¿ëÀÚ ÀÚ½ÅÀÇ È®ÀåÁ¡À» Á¤ÀÇÇϱâ À§ÇÑ ¸ðµç ÀÛ¾÷ÀÔ´Ï´Ù. ÀÌ È®ÀåÁ¡¿¡ ¿¬°áµÇ´Â È®ÀåÀÇ ±¸Á¶´Â Ç÷§Æû¿¡¼­ ÇØ¼®ÇÏÁö ¾Ê°í ´ë½Å È®ÀåÁ¡ Á¦°øÀÚ°¡ Á¤ÀÇÇÑ ½ºÅ°¸¶¸¦ µû¶ó¾ß ÇÕ´Ï´Ù. È®Àå ¸¶Å©¾÷ÀÌ ¿Ã¹Ù¸¥ XMLÀ̾î¾ß ÇÑ´Ù´Â °ÍÀÌ À¯ÀÏÇÑ Á¦ÇÑ »çÇ×ÀÔ´Ï´Ù. È®ÀåÁ¡À» Á¤ÀÇÇÏ¸é ·±Å¸ÀÓ¿¡ Ç÷§ÆûÀÇ Ç÷¯±×ÀÎ ·¹Áö½ºÆ®¸®¸¦ Á¶È¸ÇÏ¿© Á¸ÀçÇÏ´Â ¸ðµç È®ÀåÀ» Á¶È¸ ¹× ó¸®ÇÒ ¼ö ÀÖ½À´Ï´Ù. ·±Å¸ÀÓ¿¡ È®ÀåÀº IExtension ¿ÀºêÁ§Æ®·Î ManifestµË´Ï´Ù. Â÷·Ê·Î È®ÀåÀº IConfigurationElement ¿ÀºêÁ§Æ®ÀÇ Æ®¸®·Î ±¸¼ºµÇ´Âµ¥, È®Àå ¸¶Å©¾÷ÀÇ °¢ ¿ä¼Ò¿¡ ´ëÇØ Çϳª¾¿ ±¸¼ºµË´Ï´Ù. ´ÙÀ½ ÄÚµå ½º´ÏÆê¿¡¼­´Â À§¿¡¼­ Á¤ÀÇÇÑ È®ÀåÁ¡°ú ¿¬°üµÈ ¸ðµç È®Àå¿¡ ´ëÇÑ Ç÷¯±×ÀÎ ·¹Áö½ºÆ®¸®¸¦ Á¶È¸ÇÕ´Ï´Ù.

   IPluginRegistry registry = Platform.getPluginRegistry();
   IExtensionPoint point = registry.getExtensionPoint("org.eclipse.sample.sampleExtensionPoint");
   if (point != null) {
   IExtension[] extensions = point.getExtensions();
      System.out.println("Found " + extensions.length + " extensions");
   }

´Ü¼øÇÑ °æ¿ì¿¡¼­´Â È®ÀåÁ¡°ú ±× È®Àå °£ÀÇ À¯ÀÏÇÑ »óÈ£ ÀÛ¿ëÀÌ È®Àå ¸¶Å©¾÷¿¡ Æ÷ÇԵǾî ÀÖ½À´Ï´Ù. È®ÀåÀº È®Àå ¸¶Å©¾÷ÀÇ XML ³»¿¡¼­ Á÷Á¢ ÀϺΠµ¥ÀÌÅͳª ȯ°æ ¼³Á¤À» Á¦°øÇÒ ¼ö ÀÖ½À´Ï´Ù. ±×·¯¸é È®ÀåÁ¡ Ç÷¯±×Àο¡¼­ ÇØ´ç Á¤º¸¸¦ Àаí ó¸®ÇÏ¿© ÀϺΠ»ç¿ëÀÚ Á¤ÀÇµÈ ÀÛµ¿À» Á¦°øÇÕ´Ï´Ù.

È®ÀåÀÇ ÄÚµå¿Í »óÈ£ ÀÛ¿ë

°í±Þ È®ÀåÁ¡À» »ç¿ëÇÒ °æ¿ì È®Àå¿¡¼­ Á¤ÀÇÇÑ ¿ÀºêÁ§Æ®¿Í ·±Å¸ÀÓ¿¡ »óÈ£ ÀÛ¿ëÇϰíÀÚ ÇÒ ¼ö ÀÖ½À´Ï´Ù. ¿©±â¼­ÀÇ Æ®¸¯Àº È®ÀåÁ¡À» Á¤ÀÇÇÑ Ç÷¯±×Àο¡¼­ ´ë°³ È®ÀåÀÇ Å¬·¡½º¿Í ÆÐŰÁö À̸§À» ¸ð¸£±â ¶§¹®¿¡ ÀÎÅÍÆäÀ̽º¸¦ Á¤ÀÇÇÏ¿© ¿¹»óÇϴ Ŭ·¡½º ±¸Á¶¸¦ ¼³¸íÇØ¾ß ÇÑ´Ù´Â °ÍÀÔ´Ï´Ù. ±×·± ´ÙÀ½ IExecutableExtensionÀ» »ç¿ëÇÏ¿© È®ÀåÀÇ Ç÷¯±×Àο¡ Àִ Ŭ·¡½º¸¦ ÀνºÅϽºÈ­Çϰí ÀÎÅÍÆäÀ̽º¸¦ »ç¿ëÇÏ¿© ·±Å¸ÀÓ¿¡ ¿ÀºêÁ§Æ®¿Í »óÈ£ ÀÛ¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

¿¹Á¦¸¦ »ç¿ëÇÏ¿© ¼³¸íÇϱâ À§ÇØ plugin.xml ÆÄÀÏÀÇ ´ÙÀ½ ½º´ÏÆê¿¡¼­´Â ¾Õ¿¡¼­ Á¤ÀÇÇÑ »ùÇà ȮÀåÁ¡À¸·Î ¿¬°áµÇ´Â È®ÀåÀ» Á¤ÀÇÇÕ´Ï´Ù.

      <extension
      name="Sample Extension"
      id="myExtension"
      point="org.eclipse.sample.sampleExtensionPoint">
         <someObject>
            <run class="org.eclipse.examples.SomeClass"/>
         </someObject>
</extension>

ÀÌ È®Àå¿¡´Â ÀνºÅϽºÈ­ÇÒ Å¬·¡½º À̸§À» Æ÷ÇÔÇÏ´Â ½ÇÇà ÆÄÀÏ È®ÀåÀÇ ¸¶Å©¾÷ÀÌ Æ÷ÇԵ˴ϴÙ. ÀÌ Å¬·¡½º´Â È®ÀåÁ¡À» Á¤ÀÇÇÑ Ç÷¯±×Àο¡¼­ Á¤ÀÇÇÑ ÀÎÅÍÆäÀ̽º¿Í ÀÏÄ¡ÇØ¾ß ÇÕ´Ï´Ù. ÀÌÀü¿¡ ¼³¸íÇÑ °Íó·³ ÀÌ ¿¹Á¦¿¡ ÀÖ´Â ÅÂ±× À̸§("someObject" ¹× "run")Àº ÀÓÀÇÀÇ À̸§ÀÔ´Ï´Ù. ÀÌ Å±״ ȮÀåÁ¡ ½ºÅ°¸¶¿¡¼­ Á¤ÀÇÇÕ´Ï´Ù.

ÀÌ ¿¹Á¦ÀÇ °æ¿ì ½ÇÇà ÆÄÀÏ È®ÀåÀÚÀÇ ÀÎÅÍÆäÀ̽º¸¦ ISomeInterface¶ó°í Çß½À´Ï´Ù. È®ÀåÁ¡ÀÇ Ç÷¯±×Àο¡ ÀÖ´Â ´ÙÀ½ ÄÚµå ½º´ÏÆê¿¡¼­´Â Ç÷¯±×ÀÎ ·¹Áö½ºÆ®¸®¸¦ Á¶È¸Çϰí "sampleExtensionPoint" È®ÀåÁ¡ÀÇ ¸ðµç ½ÇÇà ÆÄÀÏ È®ÀåÀ» ÀνºÅϽºÈ­ÇÕ´Ï´Ù.

   IPluginRegistry registry = Platform.getPluginRegistry();
   IExtensionPoint point = registry.getExtensionPoint("org.eclipse.sample.sampleExtensionPoint");
   IExtension[] extensions = point.getExtensions();
   for (int i = 0; i < extensions.length; i++) {
      IConfigurationElement[] elements = extensions[i].getConfigurationElements();
      for (int j = 0; j < elements.length; j++) {
         if ("someObject".equals(elements[j].getName())) {
            ISomeInterface object = (ISomeInterface)elements[j].createExecutableExtension("run");
            System.out.println("Found an executable extension: " + object);
         }
      }
   }

À̰ÍÀ¸·Î ¸ðµç °ÍÀÌ ¿Ï·áµÇ¾ú½À´Ï´Ù! ÀÚ¼¼ÇÑ Á¤º¸¸¦ º¸·Á¸é org.eclipse.core.runtime ÆÐŰÁöÀÇ javadoc¸¦ ã¾Æº¸°Å³ª readme µµ±¸¿¡ Á¤ÀÇµÈ È®ÀåÁ¡À» Á¶È¸ÇϽʽÿÀ. ¼³Ä¡ ÁöħÀº ¿¹Á¦ ¾È³»¼­¸¦ ÂüÁ¶ÇϽʽÿÀ. °¡Àå ÁÁÀº ¿¹Á¦´Â Eclipse Ç÷§Æû¿¡¼­ Á¤ÀÇÇÑ È®ÀåÁ¡À» Á¶È¸ÇÏ´Â °ÍÀÔ´Ï´Ù.

Copyright IBM Corporation and others 2000, 2003.