lib/jinx/metadata/property.rb in jinx-2.1.3 vs lib/jinx/metadata/property.rb in jinx-2.1.4
- old
+ new
@@ -270,12 +270,12 @@
unless flag_supported?(flag) then
raise ArgumentError.new("Property #{declarer.name}.#{self} flag not supported: #{flag.qp}")
end
@flags << flag
case flag
- when :owner then owner_flag_set
- when :dependent then dependent_flag_set
+ when :owner then owner_flag_set
+ when :dependent then dependent_flag_set
end
end
# This method is called when the owner flag is set.
# The inverse is inferred as the referenced owner type's dependent attribute which references
@@ -284,23 +284,28 @@
# @raise [MetadataError] if this attribute is dependent or an inverse could not be inferred
def owner_flag_set
if dependent? then
raise MetadataError.new("#{declarer.qp}.#{self} cannot be set as a #{type.qp} owner since it is already defined as a #{type.qp} dependent")
end
- inv_attr = type.dependent_attribute(@declarer)
- if inv_attr.nil? then
- raise MetadataError.new("#{@declarer.qp} owner attribute #{self} does not have a #{type.qp} dependent inverse")
+ inv_prop = inverse_property
+ if inv_prop then
+ inv_prop.qualify(:dependent) unless inv_prop.dependent?
+ else
+ inv_attr = type.dependent_attribute(@declarer)
+ if inv_attr.nil? then
+ raise MetadataError.new("The #{@declarer.qp} owner attribute #{self} of type #{type.qp} does not have an inverse")
+ end
+ logger.debug { "#{declarer.qp}.#{self} inverse is the #{type.qp} dependent attribute #{inv_attr}." }
+ self.inverse = inv_attr
end
- logger.debug { "#{declarer.qp}.#{self} inverse is the #{type.qp} dependent attribute #{inv_attr}." }
- self.inverse = inv_attr
end
# Validates that this is not an owner attribute.
#
# @raise [MetadataError] if this is an owner attribute
def dependent_flag_set
if owner? then
- raise MetadataError.new("#{declarer.qp}.#{self} cannot be set as a #{type.qp} dependent since it is already defined as a #{type.qp} owner")
+ raise MetadataError.new("#{declarer.qp}.#{self} cannot be set as a #{type.qp} dependent since it is already defined as a #{type.qp} owner")
end
end
end
end