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:
Clayton Coleman
2014-08-05 22:23:22 -04:00
parent 91b31c5552
commit 67dbd15929
6 changed files with 88 additions and 71 deletions

View File

@@ -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.

View File

@@ -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

View File

@@ -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 {