Address remaining comments from #756
Rename Encoding to Codec, Versioning to ResourceVersioner. Add GoDoc. Add Delete(key, recursive) to EtcdHelper
This commit is contained in:
@@ -25,19 +25,23 @@ import (
|
||||
"gopkg.in/v1/yaml"
|
||||
)
|
||||
|
||||
type EncodingInterface interface {
|
||||
// codec defines methods for serializing and deserializing API
|
||||
// objects
|
||||
type codec interface {
|
||||
Encode(obj interface{}) (data []byte, err error)
|
||||
Decode(data []byte) (interface{}, error)
|
||||
DecodeInto(data []byte, obj interface{}) error
|
||||
}
|
||||
|
||||
type VersioningInterface interface {
|
||||
// resourceVersioner provides methods for setting and retrieving
|
||||
// the resource version from an API object
|
||||
type resourceVersioner interface {
|
||||
SetResourceVersion(obj interface{}, version uint64) error
|
||||
ResourceVersion(obj interface{}) (uint64, error)
|
||||
}
|
||||
|
||||
var Encoding EncodingInterface
|
||||
var Versioning VersioningInterface
|
||||
var Codec codec
|
||||
var ResourceVersioner resourceVersioner
|
||||
|
||||
var conversionScheme *conversion.Scheme
|
||||
|
||||
@@ -101,8 +105,8 @@ func init() {
|
||||
},
|
||||
)
|
||||
|
||||
Encoding = conversionScheme
|
||||
Versioning = JSONBaseVersioning{}
|
||||
Codec = conversionScheme
|
||||
ResourceVersioner = NewJSONBaseResourceVersioner()
|
||||
}
|
||||
|
||||
// AddKnownTypes registers the types of the arguments to the marshaller of the package api.
|
||||
|
@@ -21,10 +21,15 @@ import (
|
||||
"reflect"
|
||||
)
|
||||
|
||||
// versionedJSONBase allows access to the version state of a JSONBase object
|
||||
type JSONBaseVersioning struct{}
|
||||
// NewJSONBaseVersioner returns a resourceVersioner that can set or retrieve
|
||||
// ResourceVersion on objects derived from JSONBase.
|
||||
func NewJSONBaseResourceVersioner() resourceVersioner {
|
||||
return &jsonBaseResourceVersioner{}
|
||||
}
|
||||
|
||||
func (v JSONBaseVersioning) ResourceVersion(obj interface{}) (uint64, error) {
|
||||
type jsonBaseResourceVersioner struct{}
|
||||
|
||||
func (v jsonBaseResourceVersioner) ResourceVersion(obj interface{}) (uint64, error) {
|
||||
json, err := FindJSONBaseRO(obj)
|
||||
if err != nil {
|
||||
return 0, err
|
||||
@@ -32,7 +37,7 @@ func (v JSONBaseVersioning) ResourceVersion(obj interface{}) (uint64, error) {
|
||||
return json.ResourceVersion, nil
|
||||
}
|
||||
|
||||
func (v JSONBaseVersioning) SetResourceVersion(obj interface{}, version uint64) error {
|
||||
func (v jsonBaseResourceVersioner) SetResourceVersion(obj interface{}, version uint64) error {
|
||||
json, err := FindJSONBase(obj)
|
||||
if err != nil {
|
||||
return err
|
||||
|
@@ -67,7 +67,7 @@ func TestGenericJSONBase(t *testing.T) {
|
||||
}
|
||||
}
|
||||
|
||||
func TestVersioningOfAPI(t *testing.T) {
|
||||
func TestResourceVersionerOfAPI(t *testing.T) {
|
||||
type T struct {
|
||||
Object interface{}
|
||||
Expected uint64
|
||||
@@ -77,7 +77,7 @@ func TestVersioningOfAPI(t *testing.T) {
|
||||
"api object with version": {Service{JSONBase: JSONBase{ResourceVersion: 1}}, 1},
|
||||
"pointer to api object with version": {&Service{JSONBase: JSONBase{ResourceVersion: 1}}, 1},
|
||||
}
|
||||
versioning := JSONBaseVersioning{}
|
||||
versioning := NewJSONBaseResourceVersioner()
|
||||
for key, testCase := range testCases {
|
||||
actual, err := versioning.ResourceVersion(testCase.Object)
|
||||
if err != nil {
|
||||
|
Reference in New Issue
Block a user