rtm-javatmapi 0.2.0 → 0.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/rtm/javatmapi.rb +34 -11
- data/lib/rtm/javatmapi/aliases.rb +17 -17
- data/lib/rtm/javatmapi/core.rb +1 -0
- data/lib/rtm/javatmapi/core/association.rb +2 -2
- data/lib/rtm/javatmapi/core/construct.rb +30 -6
- data/lib/rtm/javatmapi/core/datatype_aware.rb +60 -0
- data/lib/rtm/javatmapi/core/locator.rb +4 -8
- data/lib/rtm/javatmapi/core/name.rb +65 -39
- data/lib/rtm/javatmapi/core/occurrence.rb +4 -28
- data/lib/rtm/javatmapi/core/reifiable.rb +7 -17
- data/lib/rtm/javatmapi/core/role.rb +3 -3
- data/lib/rtm/javatmapi/core/scoped.rb +7 -12
- data/lib/rtm/javatmapi/core/topic.rb +132 -61
- data/lib/rtm/javatmapi/core/topic_map.rb +88 -57
- data/lib/rtm/javatmapi/core/typed.rb +2 -2
- data/lib/rtm/javatmapi/core/variant.rb +5 -5
- data/lib/rtm/javatmapi/javalibs/ctm-writer-1.0.0a.jar +0 -0
- data/lib/rtm/javatmapi/javalibs/tmapi-2.0.jar +0 -0
- data/lib/rtm/javatmapi/superiseable.rb +9 -52
- metadata +6 -8
- data/lib/rtm/javatmapi/base.rb +0 -30
- data/lib/rtm/javatmapi/inclusion.rb +0 -46
- data/lib/rtm/javatmapi/java_implementations.rb +0 -40
- data/lib/rtm/javatmapi/javalibs/tmapi-2.0a2.jar +0 -0
| @@ -2,8 +2,9 @@ | |
| 2 2 | 
             
            # License:   Apache License, Version 2.0
         | 
| 3 3 |  | 
| 4 4 | 
             
            module Java::OrgTmapiCore::Occurrence
         | 
| 5 | 
            -
             | 
| 6 | 
            -
               | 
| 5 | 
            +
             | 
| 6 | 
            +
              include RTM::Occurrence
         | 
| 7 | 
            +
              extend Superiseable
         | 
| 7 8 |  | 
| 8 9 | 
             
              # Returns the Topic this Occurrence belongs to.
         | 
| 9 10 | 
             
              #
         | 
| @@ -27,30 +28,5 @@ module Java::OrgTmapiCore::Occurrence | |
| 27 28 | 
             
            		getValue
         | 
| 28 29 | 
             
            	end
         | 
| 29 30 |  | 
| 30 | 
            -
             | 
| 31 | 
            -
              # If argument is a String, this methods sets the string value and
         | 
| 32 | 
            -
              # the datatype implicitly to xsd:string.
         | 
| 33 | 
            -
              #
         | 
| 34 | 
            -
              # If argument is a Locator, this method sets the IRI value and
         | 
| 35 | 
            -
              # the datatype implicitly to xsd:anyURI.
         | 
| 36 | 
            -
              #
         | 
| 37 | 
            -
              # If argument is a Float, this method sets the Float value and
         | 
| 38 | 
            -
              # the datatype implicitly to xsd:float.
         | 
| 39 | 
            -
              #
         | 
| 40 | 
            -
              # If argument is a Fixnum, this method sets Fixnum value and
         | 
| 41 | 
            -
              # the datatype implicitly to xsd:long.
         | 
| 42 | 
            -
              #
         | 
| 43 | 
            -
              # If argument is a Bignum, this method sets Bignum value and
         | 
| 44 | 
            -
              # the datatype implicitly to xsd:integer.
         | 
| 45 | 
            -
              #
         | 
| 46 | 
            -
              # :call-seq:
         | 
| 47 | 
            -
              #   value=(argument)
         | 
| 48 | 
            -
              #
         | 
| 49 | 
            -
            	def value=(argument)
         | 
| 50 | 
            -
            		setValue(argument)
         | 
| 51 | 
            -
            	end
         | 
| 52 | 
            -
             | 
| 53 | 
            -
             | 
| 54 | 
            -
             | 
| 55 | 
            -
             | 
| 56 31 | 
             
            end
         | 
| 32 | 
            +
             | 
| @@ -2,11 +2,11 @@ | |
| 2 2 | 
             
            # License:   Apache License, Version 2.0
         | 
| 3 3 |  | 
| 4 4 | 
             
            module Java::OrgTmapiCore::Reifiable
         | 
| 5 | 
            -
             | 
| 6 | 
            -
               | 
| 5 | 
            +
             | 
| 6 | 
            +
              include RTM::Reifiable
         | 
| 7 7 | 
             
              extend Superiseable
         | 
| 8 | 
            -
             | 
| 9 | 
            -
              # Returns the reifier ( | 
| 8 | 
            +
             | 
| 9 | 
            +
              # Returns the reifier (a topic) of this Reifiable
         | 
| 10 10 | 
             
              # or nil if the Reifiable is not reified.
         | 
| 11 11 | 
             
              #
         | 
| 12 12 | 
             
              # :call-seq:
         | 
| @@ -15,22 +15,12 @@ module Java::OrgTmapiCore::Reifiable | |
| 15 15 | 
             
              def reifier
         | 
| 16 16 | 
             
                getReifier
         | 
| 17 17 | 
             
              end
         | 
| 18 | 
            -
             | 
| 19 | 
            -
              # Returns the reifier (Topic) of this Reifiable.
         | 
| 20 | 
            -
              # If there is no current reifier, then a reifier will be generated.
         | 
| 21 | 
            -
              #
         | 
| 22 | 
            -
              # :call-seq:
         | 
| 23 | 
            -
              #   reifier! -> Topic
         | 
| 24 | 
            -
              #
         | 
| 25 | 
            -
            	def reifier!
         | 
| 26 | 
            -
            		self.reifier ||= self.topic_map.create_topic
         | 
| 27 | 
            -
            	end
         | 
| 28 | 
            -
               
         | 
| 18 | 
            +
             | 
| 29 19 | 
             
              superised
         | 
| 30 20 | 
             
              # Sets the reifier of this reifiable Construct.
         | 
| 31 21 | 
             
              # The specified reifier MUST NOT reify another information item.
         | 
| 32 22 | 
             
              #
         | 
| 33 | 
            -
              # Identifier may be a  | 
| 23 | 
            +
              # Identifier may be a topic reference or nil,
         | 
| 34 24 | 
             
              # if an existing reifier should be removed.
         | 
| 35 25 | 
             
              #
         | 
| 36 26 | 
             
              # :call-seq:
         | 
| @@ -39,7 +29,7 @@ module Java::OrgTmapiCore::Reifiable | |
| 39 29 | 
             
              #
         | 
| 40 30 | 
             
              def reifier=(identifier=nil)
         | 
| 41 31 | 
             
                unless identifier
         | 
| 42 | 
            -
                  setReifier( | 
| 32 | 
            +
                  setReifier(nil)
         | 
| 43 33 | 
             
                  return
         | 
| 44 34 | 
             
                end
         | 
| 45 35 | 
             
                raise("reifier=: identifier muss be a Topic, Locator or String; not given or nil") unless identifier.is_a?(Java::OrgTmapiCore::Topic) || identifier.is_a?(Java::OrgTmapiCore::Locator) || identifier.is_a?(String)
         | 
| @@ -2,8 +2,8 @@ | |
| 2 2 | 
             
            # License:   Apache License, Version 2.0
         | 
| 3 3 |  | 
| 4 4 | 
             
            module Java::OrgTmapiCore::Role
         | 
| 5 | 
            -
             | 
| 6 | 
            -
               | 
| 5 | 
            +
             | 
| 6 | 
            +
              include RTM::Role
         | 
| 7 7 | 
             
              extend Superiseable
         | 
| 8 8 |  | 
| 9 9 | 
             
              # Returns the Association to which this Role belongs.
         | 
| @@ -28,7 +28,7 @@ module Java::OrgTmapiCore::Role | |
| 28 28 | 
             
              superised
         | 
| 29 29 | 
             
              # Sets the role player. Any previous role player will be overriden.
         | 
| 30 30 | 
             
              #
         | 
| 31 | 
            -
              # Identifier may be a  | 
| 31 | 
            +
              # Identifier may be a topic reference.
         | 
| 32 32 | 
             
              #
         | 
| 33 33 | 
             
              # :call-seq:
         | 
| 34 34 | 
             
              #   player=(identifier)
         | 
| @@ -3,8 +3,8 @@ | |
| 3 3 |  | 
| 4 4 | 
             
            module Java::OrgTmapiCore::Scoped
         | 
| 5 5 |  | 
| 6 | 
            +
              include RTM::Scoped
         | 
| 6 7 | 
             
              extend Superiseable
         | 
| 7 | 
            -
              #include RTM::Scoped
         | 
| 8 8 |  | 
| 9 9 | 
             
              # Returns the Topics which define the scope of this scoped Construct.
         | 
| 10 10 | 
             
              # An empty Set represents the unconstrained scope.
         | 
| @@ -20,7 +20,7 @@ module Java::OrgTmapiCore::Scoped | |
| 20 20 | 
             
              superised
         | 
| 21 21 | 
             
              # Adds a topic given by the identifier to the scope.
         | 
| 22 22 | 
             
              #
         | 
| 23 | 
            -
              # Identifier may be a  | 
| 23 | 
            +
              # Identifier may be a topic reference.
         | 
| 24 24 | 
             
              #
         | 
| 25 25 | 
             
              # :call-seq:
         | 
| 26 26 | 
             
              #   add_theme(identifier)
         | 
| @@ -37,7 +37,7 @@ module Java::OrgTmapiCore::Scoped | |
| 37 37 |  | 
| 38 38 | 
             
              # Adds one or several topics to the scope.
         | 
| 39 39 | 
             
              #
         | 
| 40 | 
            -
              # An identifier may be a  | 
| 40 | 
            +
              # An identifier may be a topic reference.
         | 
| 41 41 | 
             
              #
         | 
| 42 42 | 
             
              # :call-seq:
         | 
| 43 43 | 
             
              #   add_themes(identifier)
         | 
| @@ -60,24 +60,19 @@ module Java::OrgTmapiCore::Scoped | |
| 60 60 | 
             
              superised
         | 
| 61 61 | 
             
              # Removes a topic given by the identifier from the current scope.
         | 
| 62 62 | 
             
              #
         | 
| 63 | 
            -
              # Identifier may be a  | 
| 63 | 
            +
              # Identifier may be a topic reference.
         | 
| 64 64 | 
             
              #
         | 
| 65 65 | 
             
              # :call-seq:
         | 
| 66 66 | 
             
              #   remove_theme(identifier)
         | 
| 67 67 | 
             
              #
         | 
| 68 68 | 
             
            	def remove_theme(identifier)
         | 
| 69 | 
            -
                 | 
| 70 | 
            -
             | 
| 71 | 
            -
                elsif identifier.is_a?(Java::OrgTmapiCore::Locator) || identifier.is_a?(String)
         | 
| 72 | 
            -
                  removeTheme(topic_map.get!(identifier))
         | 
| 73 | 
            -
                else
         | 
| 74 | 
            -
                  raise("Identifier must be a Topic, String or Locator")
         | 
| 75 | 
            -
                end
         | 
| 69 | 
            +
                identifier = topic_map.get(identifier)
         | 
| 70 | 
            +
                removeTheme(identifier) if identifier.is_a?(Java::OrgTmapiCore::Topic)
         | 
| 76 71 | 
             
            	end
         | 
| 77 72 |  | 
| 78 73 | 
             
              # Removes one or several topics from the scope.
         | 
| 79 74 | 
             
              #
         | 
| 80 | 
            -
              # An identifier may be a  | 
| 75 | 
            +
              # An identifier may be a topic reference.
         | 
| 81 76 | 
             
              #
         | 
| 82 77 | 
             
              # :call-seq:
         | 
| 83 78 | 
             
              #   remove_themes(identifier)
         | 
| @@ -2,10 +2,10 @@ | |
| 2 2 | 
             
            # License:   Apache License, Version 2.0
         | 
| 3 3 |  | 
| 4 4 | 
             
            module Java::OrgTmapiCore::Topic
         | 
| 5 | 
            -
             | 
| 6 | 
            -
               | 
| 5 | 
            +
             | 
| 6 | 
            +
              include RTM::Topic
         | 
| 7 7 | 
             
              extend Superiseable
         | 
| 8 | 
            -
             | 
| 8 | 
            +
             | 
| 9 9 | 
             
              # Returns all Names and Occurrences parented by this Topic.
         | 
| 10 10 | 
             
              #
         | 
| 11 11 | 
             
              # :call-seq:
         | 
| @@ -28,7 +28,7 @@ module Java::OrgTmapiCore::Topic | |
| 28 28 | 
             
              # If the identifier equals :default, all Names
         | 
| 29 29 | 
             
              # which have the default Name type are returned.
         | 
| 30 30 | 
             
              #
         | 
| 31 | 
            -
              # Identifier may be a  | 
| 31 | 
            +
              # Identifier may be a topic reference or Symbol;
         | 
| 32 32 | 
             
              # or an Array of these.
         | 
| 33 33 | 
             
              #
         | 
| 34 34 | 
             
              # :call-seq:
         | 
| @@ -61,7 +61,7 @@ module Java::OrgTmapiCore::Topic | |
| 61 61 | 
             
              # of all Occurrences of this Topic, which have one of
         | 
| 62 62 | 
             
              # the identifiers as Occurrence type. 
         | 
| 63 63 | 
             
              #
         | 
| 64 | 
            -
              # Identifier may be a  | 
| 64 | 
            +
              # Identifier may be a topic reference or an Array of these.
         | 
| 65 65 | 
             
              # 
         | 
| 66 66 | 
             
              # :call-seq:
         | 
| 67 67 | 
             
              #   occurrences           -> Set of Occurrences
         | 
| @@ -87,7 +87,7 @@ module Java::OrgTmapiCore::Topic | |
| 87 87 | 
             
              # Creates a Name for this Topic with the specified value.
         | 
| 88 88 | 
             
              # Value has to be a String.
         | 
| 89 89 | 
             
              #
         | 
| 90 | 
            -
              # Type may be a  | 
| 90 | 
            +
              # Type may be a topic reference.
         | 
| 91 91 | 
             
              # If given, type specifies the Name Type;
         | 
| 92 92 | 
             
              # else the created Name will have the default name type.
         | 
| 93 93 | 
             
              # 
         | 
| @@ -104,7 +104,7 @@ module Java::OrgTmapiCore::Topic | |
| 104 104 | 
             
              def create_name(arg1,arg2 = :nothing, arg3 = :nothing)
         | 
| 105 105 | 
             
                if (arg2 == :nothing) && (arg3 == :nothing) #arg1 = value
         | 
| 106 106 | 
             
                  raise "create_name(value): value must be a String" unless arg1.is_a?(String)
         | 
| 107 | 
            -
                  return createName(arg1, | 
| 107 | 
            +
                  return createName(arg1,new_empty_java_topic_array)
         | 
| 108 108 | 
             
                end
         | 
| 109 109 | 
             
                if (arg3 == :nothing)
         | 
| 110 110 | 
             
                  if arg2.is_a?(Array) #arg1 = value, arg2 = scope
         | 
| @@ -112,10 +112,10 @@ module Java::OrgTmapiCore::Topic | |
| 112 112 | 
             
                    arg2.each do |theme|
         | 
| 113 113 | 
             
                      raise "create_name(value, scope): scope must be an Array of Topics/Topic-References" unless (theme.is_a?(String) || theme.is_a?(Java::OrgTmapiCore::Topic) || theme.is_a?(Java::OrgTmapiCore::Locator))
         | 
| 114 114 | 
             
                    end
         | 
| 115 | 
            -
                    return arg2.empty? ? createName(arg1, | 
| 115 | 
            +
                    return arg2.empty? ? createName(arg1,new_empty_java_topic_array) : createName(arg1,topic_map.get!(arg2))
         | 
| 116 116 | 
             
                  elsif arg2.is_a?(String) #arg1 = type, arg2 = value
         | 
| 117 117 | 
             
                    raise "create_name(type, value): type must be a Topic/Topic-Reference" unless (arg1.is_a?(String) || arg1.is_a?(Java::OrgTmapiCore::Topic) || arg1.is_a?(Java::OrgTmapiCore::Locator))
         | 
| 118 | 
            -
                    return createName(topic_map.get!(arg1),arg2, | 
| 118 | 
            +
                    return createName(topic_map.get!(arg1),arg2,new_empty_java_topic_array)
         | 
| 119 119 | 
             
                  else
         | 
| 120 120 | 
             
                    raise "create_name(?,?): arguments don't match"
         | 
| 121 121 | 
             
                  end
         | 
| @@ -134,12 +134,12 @@ module Java::OrgTmapiCore::Topic | |
| 134 134 | 
             
              # Creates an Occurrence for this Topic with the specified type and value and
         | 
| 135 135 | 
             
              # optional scope and datatype.
         | 
| 136 136 | 
             
              #
         | 
| 137 | 
            -
              # Type specifies the Occurrence type and may be a  | 
| 137 | 
            +
              # Type specifies the Occurrence type and may be a topic reference.
         | 
| 138 138 | 
             
              #
         | 
| 139 139 | 
             
              # Value may be a Locator (then the datatype is set to xsd:AnyURI and
         | 
| 140 140 | 
             
              # must not be given) or String.
         | 
| 141 141 | 
             
              #
         | 
| 142 | 
            -
              # Scope may be an Array of  | 
| 142 | 
            +
              # Scope may be an Array of topic reference. If no scope
         | 
| 143 143 | 
             
              # is given, the Occurrence will be in the unconstrained scope.
         | 
| 144 144 | 
             
              #
         | 
| 145 145 | 
             
              # Datatype may be a String or Locator and indicates the datatype of the value.
         | 
| @@ -151,23 +151,55 @@ module Java::OrgTmapiCore::Topic | |
| 151 151 | 
             
              #   create_occurrence(type, value, {:datatype => datatype})                  -> Occurrence
         | 
| 152 152 | 
             
              #  
         | 
| 153 153 | 
             
              def create_occurrence(type,value,params={})
         | 
| 154 | 
            -
                 | 
| 155 | 
            -
             | 
| 156 | 
            -
             | 
| 157 | 
            -
             | 
| 158 | 
            -
             | 
| 159 | 
            -
             | 
| 154 | 
            +
                # creating a topic for the type
         | 
| 155 | 
            +
                type = topic_map.get!(type)
         | 
| 156 | 
            +
                # reading the datatype if given. nil otherwise
         | 
| 157 | 
            +
                datatype = params[:datatype]
         | 
| 158 | 
            +
                # reading value and setting datatype if not done before
         | 
| 159 | 
            +
                unless datatype
         | 
| 160 | 
            +
                  if value.is_a?(Java::OrgTmapiCore::Locator)
         | 
| 161 | 
            +
                    datatype = RTM::PSI[:IRI]
         | 
| 162 | 
            +
                  elsif value.is_a?(String)
         | 
| 163 | 
            +
                    datatype = RTM::PSI[:String]
         | 
| 164 | 
            +
                  elsif value.is_a?(Float)
         | 
| 165 | 
            +
                    datatype = RTM::PSI[:Float]
         | 
| 166 | 
            +
                  elsif value.is_a?(Fixnum)
         | 
| 167 | 
            +
                    datatype = RTM::PSI[:Long]
         | 
| 168 | 
            +
                  elsif value.is_a?(Bignum)
         | 
| 169 | 
            +
                    datatype = RTM::PSI[:Integer]
         | 
| 170 | 
            +
                  elsif value.is_a?(DateTime) #DateTime is a Time and a Date
         | 
| 171 | 
            +
                    datatype ||= RTM::PSI[:DateTime]
         | 
| 172 | 
            +
                  elsif value.is_a?(Time)
         | 
| 173 | 
            +
                    datatype ||= RTM::PSI[:Time]
         | 
| 174 | 
            +
                  elsif value.is_a?(Date)
         | 
| 175 | 
            +
                    datatype ||= RTM::PSI[:Date]
         | 
| 176 | 
            +
                  else
         | 
| 177 | 
            +
                    raise NoDatatypeHandlerAvailableException.new(value)
         | 
| 160 178 | 
             
                  end
         | 
| 161 | 
            -
                 | 
| 162 | 
            -
             | 
| 163 | 
            -
             | 
| 164 | 
            -
             | 
| 165 | 
            -
             | 
| 179 | 
            +
                end
         | 
| 180 | 
            +
                # creating locator for datatype
         | 
| 181 | 
            +
                datatype = topic_map.create_locator(datatype)
         | 
| 182 | 
            +
                # value must be a String
         | 
| 183 | 
            +
                value = value.to_s
         | 
| 184 | 
            +
                # if datatype is xsd:anyURI -> resolve value against base_iri
         | 
| 185 | 
            +
                if datatype.reference == RTM::PSI[:IRI]
         | 
| 186 | 
            +
                  value = topic_map.create_locator(value).reference
         | 
| 187 | 
            +
                end
         | 
| 188 | 
            +
             | 
| 189 | 
            +
                begin
         | 
| 190 | 
            +
                  if params[:scope]
         | 
| 191 | 
            +
                    raise("scope must be an Array") unless params[:scope].is_a?(Array)
         | 
| 192 | 
            +
             | 
| 193 | 
            +
                    return createOccurrence(type, value, datatype, topic_map.get!(params[:scope]))
         | 
| 194 | 
            +
             | 
| 195 | 
            +
                  else #no scope
         | 
| 196 | 
            +
                    return createOccurrence(type, value, datatype, new_empty_java_topic_array)
         | 
| 166 197 | 
             
                  end
         | 
| 198 | 
            +
                rescue java.lang.IllegalArgumentException => iae
         | 
| 199 | 
            +
                  raise(iae.message)
         | 
| 167 200 | 
             
                end
         | 
| 168 201 | 
             
              end
         | 
| 169 202 |  | 
| 170 | 
            -
             | 
| 171 203 | 
             
              # Returns the TopicMap the Topic belongs to.
         | 
| 172 204 | 
             
              #
         | 
| 173 205 | 
             
              # :call-seq:
         | 
| @@ -180,7 +212,7 @@ module Java::OrgTmapiCore::Topic | |
| 180 212 |  | 
| 181 213 | 
             
              # Calls TMAPI TopicMap.getIndex which
         | 
| 182 214 | 
             
              # returns the index for the TypeInstanceIndex.
         | 
| 183 | 
            -
              # | 
| 215 | 
            +
              #
         | 
| 184 216 | 
             
              # :call-seq:
         | 
| 185 217 | 
             
              #   type_instance_index -> TypeInstanceIndex
         | 
| 186 218 | 
             
              #
         | 
| @@ -194,8 +226,8 @@ module Java::OrgTmapiCore::Topic | |
| 194 226 | 
             
              # If given, rtype specifies the type of the Roles to be returned;
         | 
| 195 227 | 
             
              # If given, atype specifies the type of the Association
         | 
| 196 228 | 
             
              # from which the returned Roles must be part of.
         | 
| 197 | 
            -
              # | 
| 198 | 
            -
              # rtype and atype may be a  | 
| 229 | 
            +
              #
         | 
| 230 | 
            +
              # rtype and atype may be a topic reference or Arrays of these types.
         | 
| 199 231 | 
             
              #
         | 
| 200 232 | 
             
              # The result may be empty.
         | 
| 201 233 | 
             
              #
         | 
| @@ -263,31 +295,18 @@ module Java::OrgTmapiCore::Topic | |
| 263 295 | 
             
              #   add_subject_identifier(identifier)
         | 
| 264 296 | 
             
              #
         | 
| 265 297 | 
             
              def add_subject_identifier(identifier)
         | 
| 266 | 
            -
                 | 
| 267 | 
            -
                   | 
| 268 | 
            -
             | 
| 269 | 
            -
                   | 
| 298 | 
            +
                begin
         | 
| 299 | 
            +
                  if identifier.is_a? Java::OrgTmapiCore::Locator
         | 
| 300 | 
            +
                    addSubjectIdentifier(identifier)
         | 
| 301 | 
            +
                  else
         | 
| 302 | 
            +
                    addSubjectIdentifier(topic_map.create_locator(identifier))
         | 
| 303 | 
            +
                  end
         | 
| 304 | 
            +
                rescue org.tmapi.core.IdentityConstraintException => ice
         | 
| 305 | 
            +
                  # TODO add condition to switch off automerge
         | 
| 306 | 
            +
                  self.mergeIn(self.topic_map.get(identifier))
         | 
| 270 307 | 
             
                end
         | 
| 271 308 | 
             
              end
         | 
| 272 | 
            -
              alias :subject_identifiers= :add_subject_identifier
         | 
| 273 309 |  | 
| 274 | 
            -
              superised
         | 
| 275 | 
            -
              # Adds a subject locator to the current topic.
         | 
| 276 | 
            -
              # Identifier may be a String or Locator.
         | 
| 277 | 
            -
              #
         | 
| 278 | 
            -
              # :call-seq:
         | 
| 279 | 
            -
              #   add_subject_locator(identifier)
         | 
| 280 | 
            -
              #
         | 
| 281 | 
            -
              def add_subject_locator(identifier)
         | 
| 282 | 
            -
                # TODO Spec
         | 
| 283 | 
            -
                if identifier.is_a? Java::OrgTmapiCore::Locator
         | 
| 284 | 
            -
                  addSubjectLocator(identifier)
         | 
| 285 | 
            -
                else
         | 
| 286 | 
            -
                  addSubjectLocator(topic_map.create_locator(identifier))
         | 
| 287 | 
            -
                end
         | 
| 288 | 
            -
              end
         | 
| 289 | 
            -
              alias :subject_locators= :add_subject_locator
         | 
| 290 | 
            -
              
         | 
| 291 310 | 
             
              superised
         | 
| 292 311 | 
             
              # Removes a subject identifier from the this Topic,
         | 
| 293 312 | 
             
              # if present.
         | 
| @@ -298,10 +317,39 @@ module Java::OrgTmapiCore::Topic | |
| 298 317 | 
             
              #   remove_subject_identifier(identifier)
         | 
| 299 318 | 
             
              #
         | 
| 300 319 | 
             
              def remove_subject_identifier(identifier)
         | 
| 301 | 
            -
                identifier = topic_map.create_locator(identifier) if identifier.is_a? String | 
| 320 | 
            +
                identifier = topic_map.create_locator(identifier) if identifier.is_a? String
         | 
| 302 321 | 
             
                removeSubjectIdentifier(identifier) if identifier.is_a? Java::OrgTmapiCore::Locator
         | 
| 303 322 | 
             
              end
         | 
| 304 323 |  | 
| 324 | 
            +
              # Returns the subject locators assigned to the current topic.
         | 
| 325 | 
            +
              #
         | 
| 326 | 
            +
              # :call-seq:
         | 
| 327 | 
            +
              #   subject_locators -> Set of Locators
         | 
| 328 | 
            +
              #
         | 
| 329 | 
            +
              def subject_locators
         | 
| 330 | 
            +
                getSubjectLocators
         | 
| 331 | 
            +
              end
         | 
| 332 | 
            +
             | 
| 333 | 
            +
              superised
         | 
| 334 | 
            +
              # Adds a subject locator to the current topic.
         | 
| 335 | 
            +
              # Identifier may be a String or Locator.
         | 
| 336 | 
            +
              #
         | 
| 337 | 
            +
              # :call-seq:
         | 
| 338 | 
            +
              #   add_subject_locator(identifier)
         | 
| 339 | 
            +
              #
         | 
| 340 | 
            +
              def add_subject_locator(identifier)
         | 
| 341 | 
            +
                # TODO Spec
         | 
| 342 | 
            +
                begin
         | 
| 343 | 
            +
                  if identifier.is_a? Java::OrgTmapiCore::Locator
         | 
| 344 | 
            +
                    addSubjectLocator(identifier)
         | 
| 345 | 
            +
                  else
         | 
| 346 | 
            +
                    addSubjectLocator(topic_map.create_locator(identifier))
         | 
| 347 | 
            +
                  end
         | 
| 348 | 
            +
                rescue org.tmapi.core.IdentityConstraintException => ice
         | 
| 349 | 
            +
                  # TODO add condition to switch off automerge
         | 
| 350 | 
            +
                  self.mergeIn(self.topic_map.topic_by_subject_locator(identifier))
         | 
| 351 | 
            +
                end
         | 
| 352 | 
            +
              end
         | 
| 305 353 |  | 
| 306 354 | 
             
              superised
         | 
| 307 355 | 
             
              # Removes a subject locator from the this Topic,
         | 
| @@ -313,7 +361,7 @@ module Java::OrgTmapiCore::Topic | |
| 313 361 | 
             
              #   remove_subject_locator(identifier)
         | 
| 314 362 | 
             
              #
         | 
| 315 363 | 
             
              def remove_subject_locator(identifier)
         | 
| 316 | 
            -
                identifier = topic_map.create_locator(identifier) if identifier.is_a? String | 
| 364 | 
            +
                identifier = topic_map.create_locator(identifier) if identifier.is_a? String
         | 
| 317 365 | 
             
                removeSubjectLocator(identifier) if identifier.is_a? Java::OrgTmapiCore::Locator
         | 
| 318 366 | 
             
              end
         | 
| 319 367 |  | 
| @@ -332,12 +380,12 @@ module Java::OrgTmapiCore::Topic | |
| 332 380 | 
             
              #  end
         | 
| 333 381 |  | 
| 334 382 | 
             
              superised
         | 
| 335 | 
            -
              # Adds a type given by the identifier to this Topic. | 
| 383 | 
            +
              # Adds a type given by the identifier to this Topic.
         | 
| 336 384 | 
             
              #
         | 
| 337 | 
            -
              # Identifier may be a  | 
| 385 | 
            +
              # Identifier may be a topic reference.
         | 
| 338 386 | 
             
              #
         | 
| 339 387 | 
             
              # :call-seq:
         | 
| 340 | 
            -
              #   add_type(identifier) | 
| 388 | 
            +
              #   add_type(identifier)
         | 
| 341 389 | 
             
              #
         | 
| 342 390 | 
             
              def add_type(identifier)
         | 
| 343 391 | 
             
                if identifier.is_a?(Java::OrgTmapiCore::Topic)
         | 
| @@ -351,7 +399,7 @@ module Java::OrgTmapiCore::Topic | |
| 351 399 |  | 
| 352 400 | 
             
              # Adds one or several types given by the identifiers.
         | 
| 353 401 | 
             
              #
         | 
| 354 | 
            -
              # Identifier may be a  | 
| 402 | 
            +
              # Identifier may be a topic reference.
         | 
| 355 403 | 
             
              #
         | 
| 356 404 | 
             
              # :call-seq:
         | 
| 357 405 | 
             
              #   add_types(identifier1, identifier2, ...)
         | 
| @@ -364,12 +412,12 @@ module Java::OrgTmapiCore::Topic | |
| 364 412 | 
             
              end
         | 
| 365 413 |  | 
| 366 414 |  | 
| 367 | 
            -
              # Adds an instance given by the identifier to this Topic. | 
| 415 | 
            +
              # Adds an instance given by the identifier to this Topic.
         | 
| 368 416 | 
             
              #
         | 
| 369 | 
            -
              # Identifier may be a  | 
| 417 | 
            +
              # Identifier may be a topic reference.
         | 
| 370 418 | 
             
              #
         | 
| 371 419 | 
             
              # :call-seq:
         | 
| 372 | 
            -
              #   add_instance(identifier) | 
| 420 | 
            +
              #   add_instance(identifier)
         | 
| 373 421 | 
             
              #
         | 
| 374 422 | 
             
              def add_instance(identifier)
         | 
| 375 423 | 
             
                if identifier.is_a?(Java::OrgTmapiCore::Topic)
         | 
| @@ -383,7 +431,7 @@ module Java::OrgTmapiCore::Topic | |
| 383 431 |  | 
| 384 432 | 
             
              # Adds one or several instances given by the identifiers.
         | 
| 385 433 | 
             
              #
         | 
| 386 | 
            -
              # Identifier may be a  | 
| 434 | 
            +
              # Identifier may be a topic reference.
         | 
| 387 435 | 
             
              #
         | 
| 388 436 | 
             
              # :call-seq:
         | 
| 389 437 | 
             
              #   add_instances(identifier1, identifier2, ...)
         | 
| @@ -416,17 +464,17 @@ module Java::OrgTmapiCore::Topic | |
| 416 464 | 
             
              #
         | 
| 417 465 | 
             
              def reified=(identifier)
         | 
| 418 466 | 
             
                if identifier.is_a?(Java::OrgTmapiCore::Reifiable)
         | 
| 419 | 
            -
                  identifier.reifier = self | 
| 467 | 
            +
                  identifier.reifier = self
         | 
| 420 468 | 
             
                  return
         | 
| 421 469 | 
             
                end
         | 
| 422 470 | 
             
                raise("reified=: Identifier may be a Name, Variant, Occurrence, Association, Role or TopicMap")
         | 
| 423 471 | 
             
              end
         | 
| 424 472 |  | 
| 425 473 | 
             
              superised
         | 
| 426 | 
            -
              # Removes a type given by the identifier  | 
| 474 | 
            +
              # Removes a type given by the identifier of this topic,
         | 
| 427 475 | 
             
              # if present.
         | 
| 428 476 | 
             
              #
         | 
| 429 | 
            -
              # Identifier may be a  | 
| 477 | 
            +
              # Identifier may be a topic reference.
         | 
| 430 478 | 
             
              #
         | 
| 431 479 | 
             
              # :call-seq:
         | 
| 432 480 | 
             
              #   remove_type(identifier)
         | 
| @@ -440,6 +488,19 @@ module Java::OrgTmapiCore::Topic | |
| 440 488 | 
             
                end
         | 
| 441 489 | 
             
              end
         | 
| 442 490 |  | 
| 491 | 
            +
              # Removes an instance given by the identifier of this topic,
         | 
| 492 | 
            +
              # if present.
         | 
| 493 | 
            +
              #
         | 
| 494 | 
            +
              # Identifier may be a topic reference.
         | 
| 495 | 
            +
              #
         | 
| 496 | 
            +
              # :call-seq:
         | 
| 497 | 
            +
              #   remove_instance(identifier)
         | 
| 498 | 
            +
              #
         | 
| 499 | 
            +
              def remove_instance(identifier)
         | 
| 500 | 
            +
                identifier = topic_map.get(identifier)
         | 
| 501 | 
            +
                return unless identifier
         | 
| 502 | 
            +
                identifier.removeType(self)
         | 
| 503 | 
            +
              end
         | 
| 443 504 |  | 
| 444 505 | 
             
              # TODO extend this, maybe allow for a removal of any topic no matter how important
         | 
| 445 506 | 
             
              # it may be for the whole topic map
         | 
| @@ -448,6 +509,16 @@ module Java::OrgTmapiCore::Topic | |
| 448 509 | 
             
                self.remove
         | 
| 449 510 | 
             
              end
         | 
| 450 511 |  | 
| 512 | 
            +
              private
         | 
| 513 | 
            +
              def new_empty_java_topic_array
         | 
| 514 | 
            +
                [].to_java(org.tmapi.core.Topic)
         | 
| 515 | 
            +
              end
         | 
| 516 | 
            +
             | 
| 517 | 
            +
              class NoDatatypeHandlerAvailableException < Exception
         | 
| 518 | 
            +
                def initialize(value)
         | 
| 519 | 
            +
                  super "Cannot map #{value} to an occurrence value+datatype. Maybe you need to add a handler for your Ruby object type."
         | 
| 520 | 
            +
                end
         | 
| 521 | 
            +
              end
         | 
| 451 522 | 
             
            end
         | 
| 452 523 |  | 
| 453 524 |  |