lib/catissue/metadata.rb
def add_annotation(name, opts={})
      # the module symbol
      mod_sym = name.camelize.to_sym
      # the module spec defaults
      pkg = opts[:package] ||= name.underscore
      svc = opts[:service] ||= name.underscore
      grp = opts[:group] ||= pkg
      pxy_nm = opts[:proxy_name] || "#{self.name.demodulize}RecordEntry"
      self.annotation_proxy_class_name = pxy_nm
      # add the annotation entry
      @ann_spec_hash ||= {}
      @ann_spec_hash[mod_sym] = opts
      logger.info("Added #{qp} annotation #{name} with module #{mod_sym}, package #{pkg}, service #{svc} and group #{grp}.")
    end
def add_annotation(name, opts={})
      # the module symbol
      mod_sym = name.camelize.to_sym
      # the module spec defaults
      pkg = opts[:package] ||= name.underscore
      svc = opts[:service] ||= name.underscore
      grp = opts[:group] ||= pkg
      pxy_nm = opts[:proxy_name] || "#{self.name.demodulize}RecordEntry"
      self.annotation_proxy_class_name = pxy_nm
      # add the annotation entry
      @ann_spec_hash ||= {}
      @ann_spec_hash[mod_sym] = opts
      logger.info("Added #{qp} annotation #{name} with module #{mod_sym}, package #{pkg}, service #{svc} and group #{grp}.")
    end
Declares an annotation scoped by this class.

 @param [String] name the name of the annotation module
 @param [{Symbol => Object}] opts the annotation options
 @option opts [String] :package the package name (default is the lower-case underscore name)
 @option opts [String] :service the service name (default is the lower-case underscore name)
 @option opts [String] :group the DE group short name (default is the package)
 @option opts [String] :proxy_name the DE proxy class name (default is the class name followed by +RecordEntry+)