Type name resolution was fixed
After the new contract framework and new property validation workflow were introduced type name resolution broke. As a result if the creating class is in different than the created property validation will fail. This commit fixes it. Change-Id: I2fdf7bb5e5d6af73acaaabdd65c7d676a180a7a2 Closes-Bug: #1618563
This commit is contained in:
parent
41cc2ddc39
commit
8757c6d177
|
@ -225,9 +225,9 @@ class MuranoObject(dsl_types.MuranoObject):
|
|||
self.real_this, context, default=default,
|
||||
finalize=len(property_list) == 1)
|
||||
else:
|
||||
spec.validate(value, context, default)
|
||||
spec.validate(value, self.real_this, context, default)
|
||||
if len(property_list) > 1:
|
||||
value = ultimate_spec.finalize(value, context)
|
||||
value = ultimate_spec.finalize(value, self.real_this, context)
|
||||
if ultimate_spec.usage == dsl_types.PropertyUsages.Static:
|
||||
ultimate_spec.declaring_type.set_property(name, value, context)
|
||||
else:
|
||||
|
|
|
@ -27,29 +27,36 @@ class Spec(object):
|
|||
self._has_default = 'Default' in declaration
|
||||
self._default = declaration.get('Default')
|
||||
|
||||
def _get_this_context(self, this):
|
||||
executor = helpers.get_executor()
|
||||
if isinstance(this, dsl_types.MuranoType):
|
||||
return executor.create_object_context(this)
|
||||
return executor.create_object_context(
|
||||
this.cast(self._container_type()))
|
||||
|
||||
def transform(self, value, this, owner, context, default=None,
|
||||
finalize=True):
|
||||
if default is None:
|
||||
default = self.default
|
||||
executor = helpers.get_executor()
|
||||
if isinstance(this, dsl_types.MuranoTypeReference):
|
||||
this = this.type
|
||||
if isinstance(this, dsl_types.MuranoType):
|
||||
return self._contract.transform(
|
||||
value, executor.create_object_context(this),
|
||||
None, None, default, helpers.get_type(context))
|
||||
value, self._get_this_context(this),
|
||||
None, None, default, helpers.get_type(context),
|
||||
finalize=finalize)
|
||||
else:
|
||||
return self._contract.transform(
|
||||
value, executor.create_object_context(
|
||||
this.cast(self._container_type())),
|
||||
value, self._get_this_context(this),
|
||||
this, owner, default, helpers.get_type(context),
|
||||
finalize=finalize)
|
||||
|
||||
def validate(self, value, context, default=None):
|
||||
def validate(self, value, this, context, default=None):
|
||||
if default is None:
|
||||
default = self.default
|
||||
return self._contract.validate(
|
||||
value, context, default, helpers.get_type(context))
|
||||
value, self._get_this_context(this), default,
|
||||
helpers.get_type(context))
|
||||
|
||||
def check_type(self, value, context, default=None):
|
||||
if default is None:
|
||||
|
@ -57,9 +64,9 @@ class Spec(object):
|
|||
return self._contract.check_type(
|
||||
value, context, default, helpers.get_type(context))
|
||||
|
||||
def finalize(self, value, context):
|
||||
def finalize(self, value, this, context):
|
||||
return self._contract.finalize(
|
||||
value, context, helpers.get_type(context))
|
||||
value, self._get_this_context(this), helpers.get_type(context))
|
||||
|
||||
@property
|
||||
def default(self):
|
||||
|
|
Loading…
Reference in New Issue