ÄÁÅÙÃ÷ À¯Çü »ç¿ë

Âü°í: ÀÌ ¼³¸íÀÇ °æ¿ì, ÄÁÅÙÃ÷¿¡ ´ëÇØ ³íÀÇÇÒ ¶§ ƯÈ÷ ÆÄÀÏÀ̶ó´Â ´Ü¾î¸¦ »ç¿ëÇÏÁö ¾Ê½À´Ï´Ù. ·±Å¸ÀÓ ÄÁÅÙÃ÷ ¿£ÁøÀº ÄÁÅÙÃ÷°¡ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÀÖ´Â ÆÄÀÏ¿¡ Æ÷ÇԵǾî ÀÖ´Ù°í °¡Á¤ÇÏÁö ¾Ê½À´Ï´Ù. ±×·¯³ª ÄÁÅÙÃ÷´Â ÄÁÅÙÃ÷ À¯ÇüÀ» ÆÄÀÏ À̸§ ÁöÁ¤ ÆÐÅϰú ¿¬°ü½Ãų ¼ö ÀÖ´Â ÇÁ·ÎÅäÄÝÀ» Æ÷ÇÔÇÕ´Ï´Ù. ½ÇÁ¦·Î ÀÌ·¯ÇÑ ÆÄÀÏ À̸§Àº ÆÄÀÏ ½Ã½ºÅÛÀÇ ÆÄÀÏÀ» ³ªÅ¸³»Áö¸¸ ÄÁÅÙÃ÷ ½Ã½ºÅÛ ±¸ÇöÀÇ ¾î¶°ÇÑ Ç׸ñµµ ÄÁÅÙÃ÷°¡ ÆÄÀÏ ½Ã½ºÅÛ¿¡ ÀÖÀ½À» °¡Á¤ÇÏÁö ¾Ê½À´Ï´Ù. ÆÄÀÏ ÀÎÄÚµù ¹× ÄÁÅÙÃ÷ À¯Çü¿¡¼­´Â Ç÷§Æû ÀÚ¿ø Ç÷¯±×Àο¡¼­ Á¦°øÇÏ´Â ÆÄÀÏ ÁöÇâ ÄÁÅÙÃ÷ À¯Çü ±â´ÉÀ» ¼³¸íÇϸç, ÇØ´ç ÄÁÅØ½ºÆ®¿¡¼­ ÄÁÅÙÃ÷ À¯Çü »ç¿ë¿¡ °ü½ÉÀÌ ÀÖ´Â °³¹ßÀÚ´Â ¹Ýµå½Ã Àоî¾ß ÇÕ´Ï´Ù.

ÄÁÅÙÃ÷ À¯Çü ã±â

ÄÁÅÙÃ÷ À¯ÇüÀº IContentTypeÀ¸·Î Ç¥½ÃµË´Ï´Ù. ÀÌ ÀÎÅÍÆäÀ̽º´Â µ¥ÀÌÅÍ ½ºÆ®¸²À» Àаí ÄÁÅÙÃ÷ À¯Çü ƯÁ¤ Á¤º¸¸¦ ÇØ¼®ÇÏ´Â ¹æ¹ýÀ» ¾Ë°í ÀÖ´Â °íÀ¯ ÄÁÅÙÃ÷ À¯ÇüÀ» Ç¥½ÃÇÕ´Ï´Ù. ÄÁÅÙÃ÷ À¯ÇüÀº º»ÁúÀûÀ¸·Î °èÃþ ±¸Á¶ÀÔ´Ï´Ù. ¿¹¸¦ µé¾î XML µ¥ÀÌÅÍÀÇ ÄÁÅÙÃ÷ À¯ÇüÀº ÅØ½ºÆ® ÄÁÅÙÃ÷ À¯ÇüÀÇ ÇÏÀ§·Î °£Áֵ˴ϴÙ. À̸¦ ÅëÇØ »õ ÄÁÅÙÃ÷ À¯ÇüÀº ´õ¿í ÀϹÝÀûÀÎ ÄÁÅÙÃ÷ À¯ÇüÀÇ ¼Ó¼º ¶Ç´Â ÀÛµ¿¿¡ ¿µÇâÀ» ÁÝ´Ï´Ù.

IContentTypeManager´Â Ç÷§Æû ·±Å¸ÀÓÀÌ Á¦°øÇÏ´Â ´ëºÎºÐÀÇ ÄÁÅÙÃ÷ À¯Çü °ü·Ã API¿¡ ´ëÇÑ ¾×¼¼½º¸¦ Á¦°øÇÏ´Â ½ÃÀÛÁ¡ÀÔ´Ï´Ù. Ç÷§Æû IContentTypeManager¿¡ ´ëÇÑ ÂüÁ¶¸¦ ¾ò±â À§ÇØ Å¬¶óÀÌ¾ðÆ®´Â Platform API¸¦ »ç¿ëÇÒ ¼ö ÀÖ½À´Ï´Ù.

IContentTypeManager contentTypeManager = Platform.getContentTypeManager();

Ŭ¶óÀÌ¾ðÆ®´Â IContentTypeManager¸¦ »ç¿ëÇÏ¿© ½Ã½ºÅÛ¿¡¼­ ÄÁÅÙÃ÷ À¯ÇüÀ» ãÀ» ¼ö ÀÖ½À´Ï´Ù.

µ¥ÀÌÅÍ ½ºÆ®¸²ÀÇ ÄÁÅÙÃ÷ À¯Çü ¹ß°ß

¹ÙÀÌÆ® ½ºÆ®¸²ÀÌ Á¦°øµÇ¸é ´ÙÀ½°ú °°ÀÌ IContentTypeManager API¸¦ È£ÃâÇÏ¿© ÄÁÅÙÃ÷ À¯ÇüÀ» ÆÇº°ÇÒ ¼ö ÀÖ½À´Ï´Ù.

InputStream stream = ...; 
IContentType contentType = contentTypeManager.findContentTypeFor(stream, "file.xml");
stream.close();

ÀÌ´Â ÀÔ·ÂÀÌ Á¦°øµÈ °æ¿ì °¡Àå ÀûÇÕÇÑ IContentType¸¦ ¸®ÅÏÇϰųª ¾Æ¹« °Íµµ ãÀ» ¼ö ¾ø´Â °æ¿ì¿¡´Â nullÀ» ¸®ÅÏÇÕ´Ï´Ù. ÁÖ¾îÁø µ¥ÀÌÅÍ ½ºÆ®¸²¿¡ ´ÙÁß ÄÁÅÙÃ÷ À¯ÇüÀÌ ÀûÇÕÇÑ °ÍÀ¸·Î °£ÁÖµÉ ¼ö ÀÖ½À´Ï´Ù. ÀÌ °æ¿ì, Ç÷§ÆûÀº ÀϺΠÈÞ¸®½ºÆ½À» »ç¿ëÇÏ¿© ¼±ÅÃÇØ¾ß ÇÏ´Â À¯ÇüÀ» °áÁ¤ÇÕ´Ï´Ù. ÆÄÀÏ À̸§Àº ÄÁÅÙÃ÷ À¯ÇüÀ» ¼±ÅÃÇϴ ù ¹øÂ° ±âÁØÀÔ´Ï´Ù. ÆÄÀÏ À̸§À» »ý·«ÇÒ ¼ö ÀÖÁö¸¸ ÀÌ °æ¿ì µÎ °¡Áö ¹®Á¦°¡ ÀÖ½À´Ï´Ù. °ü·ÃµÇÁö ¾ÊÀº ¸¹Àº ÄÁÅÙÃ÷ À¯ÇüÀÌ µ¿ÀÏÇÑ ÀÔ·ÂÀ» Çã¿ëÇÒ ¼ö Àֱ⠶§¹®¿¡ °á°ú°¡ ¿Ã¹Ù¸£Áö ¾ÊÀ» ¼ö ÀÖÀ¸¸ç, Ç÷§ÆûÀÇ ¸ðµç ÄÁÅÙÃ÷ À¯Çü¿¡ ½ºÆ®¸² ºÐ¼® ±âȸ°¡ Á¦°øµÇ¾î¾ß ÇϹǷΠ¼º´É¿¡ Ä¿´Ù¸¥ ¹®Á¦Á¡ÀÌ ÀÖ½À´Ï´Ù. µû¶ó¼­ ÆÄÀÏ À̸§À» »ç¿ëÇÒ ¼ö ¾ø´Â °æ¿ì¸¦ Á¦¿ÜÇϰí Ŭ¶óÀÌ¾ðÆ®´Â Ç×»ó ½ºÆ®¸²°ú ÇÔ°Ô ÆÄÀÏ À̸§À» Á¦°øÇÕ´Ï´Ù.

µ¥ÀÌÅÍ ½ºÆ®¸² ¼³¸í

Ç÷§Æû¿¡¼­ ÄÁÅÙÃ÷ À¯Çü Áö¿øÀÇ Æ¯º°ÇÑ ¶Ç ´Ù¸¥ ±â´ÉÀº 2Áø ¶Ç´Â ¹®ÀÚ ½ºÆ®¸²¿¡ ´ëÇÑ ÄÁÅÙÃ÷ ¼³¸í ±â´ÉÀÔ´Ï´Ù. ´ÙÀ½ ÄÚµå ½º´ÏÆêÀº À̸¦ ¼öÇàÇÏ´Â ¹æ¹ýÀ» Ç¥½ÃÇÕ´Ï´Ù.

InputStream stream = ...; 
IContentDescription description = contentTypeManager.getDescriptionFor(stream, "file.xml");
stream.close();

¸®ÅÏµÈ IContentDescription ÀνºÅϽº´Â ÄÁÅÙÃ÷ À¯Çü ¹× Á¦°øµÈ ÄÁÅÙÃ÷¿¡¼­ ÃßÃâµÈ Ãß°¡ °ü·Ã Á¤º¸¸¦ ¼³¸íÇÕ´Ï´Ù. ÄÁÅÙÃ÷ ¼³¸íÀº Ű/°ª ½Ö ¾ç½ÄÀ¸·Î ÄÁÅÙÃ÷º° Ư¼ºÀ» ÀúÀåÇÕ´Ï´Ù. Ç÷§Æû ÀÚü°¡ ÅØ½ºÆ® ±â¹Ý ½ºÆ®¸²ÀÇ ¹®ÀÚ ¼¼Æ® ¹× ¹ÙÀÌÆ® ¼ø¼­¿Í °°Àº Ư¼ºÀ» ¼³¸íÇÒ ¼ö ÀÖÁö¸¸ ÄÁÅÙÃ÷ À¯Çü Á¦°øÀÚ°¡ ´Ù¸¥ Ư¼ºÀ» Á¤ÀÇÇÒ ¼ö ÀÖ½À´Ï´Ù.

ÄÁÅÙÃ÷º° ±â´É Á¦°ø

»õ ÄÁÅÙÃ÷ À¯ÇüÀÌ ±âÁ¸ ÄÁÅÙÃ÷ À¯ÇüÀÇ Æ¯¼öÈ­·Î Á¤ÀǵǴ °æ¿ì°¡ ¸¹½À´Ï´Ù. ÀÌ °èÃþ ±¸Á¶´Â ÆÄ»ýµÈ ÄÁÅÙÃ÷ À¯Çü°ú ±âº» À¯Çü °£¿¡ "is a" °ü°è¸¦ ¼³Á¤ÇÕ´Ï´Ù. Ç÷¯±×ÀÎ °³¹ßÀÚ´Â ÄÁÅÙÃ÷º° ±â´ÉÀ» ±¸ÇöÇÒ ¶§ À̸¦ ÁؼöÇØ¾ß ÇÕ´Ï´Ù. ÁÖ¾îÁø ±â´ÉÀ» ÁÖ¾îÁø ÄÁÅÙÃ÷ À¯Çü¿¡ Àû¿ëÇÒ ¼ö ÀÖ´Â °æ¿ì, ÆÄ»ýµÈ ÄÁÅÙÃ÷ À¯Çü¿¡µµ ±â´ÉÀ» Àû¿ëÇÒ ¼ö ÀÖ¾î¾ß ÇÕ´Ï´Ù. IContentType.isKindOf(IContentType superType) ¸Þ¼Òµå¸¦ »ç¿ëÇÏ¸é µÎ °³ÀÇ IContentTypeÀÌ °ü·ÃµÇ¾î ÀÖ´ÂÁö ¿©ºÎ¸¦ ÆÇº°ÇÒ ¼ö ÀÖ½À´Ï´Ù. IContentType.getBaseType() ¸Þ¼Òµå¸¦ »ç¿ëÇϸé ÁÖ¾îÁø IContentTypeÀÇ ±âº» À¯ÇüÀ» ÆÇº°ÇÒ ¼ö ÀÖ½À´Ï´Ù.