internal/fwschema: Introduce NestedAttribute interface and cleanup Attribute interface methods #543
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Reference: #132
As part of upcoming effort to split schema functionality into the
datasource
,provider
, andresource
packages, there are some internal implementation details which need to be sorted beforehand. Throughout the 0.x versions, schema functionality has been migrated from thetfsdk
package into theinternal/fwschema
package, but there is some lingering technical debt of duplicate and confusing methods.This change creates a new
NestedAttribute
(singular) interface which extends theAttribute
interface with the methods only required for an attribute that does in fact implement nested attributes. Thetfsdk.Attribute
type is updated to support both theAttribute
andNestedAttribute
interfaces as it accurately describes the overloaded abstraction. TheNestedAttributes
(plural) interface remains to describe howtfsdk.Attribute
implements that concepts under itsAttributes
field. TheNestedAttributes
(plural) interface and its implementations will be removed whentfsdk.Attribute
is removed.Another aspect of these changes is cleaning up the type describing methods, removing the separate
Attribute
typeFrameworkType()
method andNestedAttributes
typeAttributeType()
method.The upcoming split schemas will implement explicit attribute types which only implement
NestedAttribute
(singular) as appropriate.