Изменение исходного кода с помощью доклетов J2C

Функциональные возможности доклетов J2C позволяют добавить исходный код Java™ в приложения J2C.

Прежде чем начать

Теги доклетов - это теги программирования аннотаций, обеспечивающие расширяемый механизм создания артефактов приложений, готовых к развертыванию в среде Java EE. При добавлении тегов доклетов в исходный код Java приложения J2C эти артефакты создаются автоматически (после сохранения с помощью клавиш CTRL-S).

Об этой задаче

Теги доклетов вставляются в исходный код Java как комментарии Javadoc. Атрибуты тегов программирования с использованием комментариев включают Область (в которой находится тег в коде) и Кратность (как часто может использоваться тег).

Поддерживаемые теги доклетов:

В ходе разработки приложений J2C в исходный код Java можно добавлять теги следующих типов:
  • Теги J2C
  • Теги описания типа:

Атрибуты тегов доклетов

Процедура

  1. Область: Задает расположение тегов в исходном файле Java. В качестве области действия можно пакет, класс, метод или поле.
    Табл. 1. Атрибуты Область
    Атрибуты Определение
    Пакет Добавляется в комментарий к пакету. Атрибут Область представляет информацию, относящуюся ко всему пакету Java, к модулю или приложению в целом.
    Класс Добавляется в комментарий к классу. Атрибут Область предоставляет информацию о типе или интерфейсе Java в целом.
    Метод Добавляется в комментарий к отдельному методу класса. Атрибут Область предоставляет информацию о методе, применяемом в классе.
    Поле Добавляется в комментарий к отдельному полю класса. Атрибут Область предоставляет информацию о поле, используемом в классе.
  2. Множественность: Указывает, сколько раз конкретный тег может встречаться в одном исходном файле Java. В системе обозначений доклетов Кратность указывается в скобках после имени тега.
    Табл. 2. Кратность
    Заголовок Заголовок
    0..1 Показывает, что тег может встречаться в исходном файле Java не более одного раза.
    0..n Показывает, что тег может встречаться в исходном файле Java произвольное число раз.

Результаты

Пример

Пример: Следующий пример взят из учебника Многосегментный вывод IMS:
  1. На панели Структура предприятия разверните ваш проект, разверните раздел Ресурсы Java, затем разверните раздел JavaSource.
  2. Правой кнопкой мыши щелкните на файле пакета Java (sample.ims, в данном случае) и выберите Создать > Класс, чтобы вызвать мастера Создание класса.
  3. Введите CCIBuffer в качестве имени класса. Примите все значения по умолчанию.
  4. Нажмите кнопку Готово. Класс CCIBuffer будет открыт в редакторе Java.
  5. В раздел комментария класса CCIBuffer добавьте тег @type-descriptor.message-buffer:

    Добавление тега доклета

  6. Нажмите CTRL+S для сохранения изменений. В файле класса CCIBuffer.java автоматически создается следующий код:
    /*
     * Создано: 13 октября 2004 г.
     *
     * TODO Для изменения шаблона этого сгенерированного файла выберите пункт меню
     * Окно - Параметры - Java - Стиль кода - Шаблоны кода
     */
    package sample.ims;
    
    /**
     * @author ivyho
     *
     * TODO Для изменения шаблона этого сгенерированного типа выберите пункт меню
     * Окно - Параметры - Java - Стиль кода - Шаблоны кода
     * @type-descriptor.message-buffer
     */
    public class CCIBuffer implements javax.resource.cci.Record,
    		javax.resource.cci.Streamable, com.ibm.etools.marshall.RecordBytes {
    
    	private byte[] buffer_ = null;
    
    	/**
    	 * @generated
    	 */
    	public CCIBuffer() {
    		return;
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Record#getRecordShortDescription()
    	 */
    	public String getRecordShortDescription() {
    		return (this.getClass().getName());
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Record#hashCode()
    	 */
    	public int hashCode() {
    		return (super.hashCode());
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Streamable#write(OutputStream)
    	 */
    	public void write(java.io.OutputStream outputStream)
    			throws java.io.IOException {
    		outputStream.write(buffer_);
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Record#setRecordShortDescription(String)
    	 */
    	public void setRecordShortDescription(String shortDescription) {
    		return;
    	}
    
    	/**
    	 * @generated
    	 */
    	public int getSize() {
    		if (buffer_ != null)
    			return (buffer_.length);
    		else
    			return (0);
    	}
    
    	/**
    	 * @generated
    	 * @see java.lang.Object#toString
    	 */
    	public String toString() {
    		StringBuffer sb = new StringBuffer(super.toString());
    		sb.append("\n");
    		com.ibm.etools.marshall.util.ConversionUtils.dumpBytes(sb, buffer_);
    		return (sb.toString());
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Record#getRecordName()
    	 */
    	public String getRecordName() {
    		return (this.getClass().getName());
    	}
    
    	/**
    	 * @generated
    	 */
    	public byte[] getBytes() {
    		return (buffer_);
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Record#clone()
    	 */
    	public Object clone() throws CloneNotSupportedException {
    		return (super.clone());
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Record#setRecordName(String)
    	 */
    	public void setRecordName(String recordName) {
    		return;
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Record#equals()
    	 */
    	public boolean equals(Object object) {
    		return (super.equals(object));
    	}
    
    	/**
    	 * @generated
    	 * @see javax.resource.cci.Streamable#read(InputStream)
    	 */
    	public void read(java.io.InputStream inputStream)
    			throws java.io.IOException {
    		byte[] input = new byte[inputStream.available()];
    		inputStream.read(input);
    		buffer_ = input;
    	}
    
    	/**
    	 * @generated
    	 */
    	public void setBytes(byte[] bytes) {
    		buffer_ = bytes;
    	}
    
    }

Комментарии