Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
K
k3s
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Jacklull
k3s
Commits
13992837
Commit
13992837
authored
Oct 09, 2014
by
Clayton Coleman
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Use one copy of EnforcePtr
parent
d488e238
Hide whitespace changes
Inline
Side-by-side
Showing
3 changed files
with
6 additions
and
17 deletions
+6
-17
encode.go
pkg/conversion/encode.go
+1
-1
scheme.go
pkg/conversion/scheme.go
+1
-12
scheme.go
pkg/runtime/scheme.go
+4
-4
No files found.
pkg/conversion/encode.go
View file @
13992837
...
...
@@ -51,7 +51,7 @@ import (
//
func
(
s
*
Scheme
)
EncodeToVersion
(
obj
interface
{},
destVersion
string
)
(
data
[]
byte
,
err
error
)
{
obj
=
maybeCopy
(
obj
)
v
,
_
:=
e
nforcePtr
(
obj
)
// maybeCopy guarantees a pointer
v
,
_
:=
E
nforcePtr
(
obj
)
// maybeCopy guarantees a pointer
if
_
,
registered
:=
s
.
typeToVersion
[
v
.
Type
()];
!
registered
{
return
nil
,
fmt
.
Errorf
(
"type %v is not registered and it will be impossible to Decode it, therefore Encode will refuse to encode it."
,
v
.
Type
())
}
...
...
pkg/conversion/scheme.go
View file @
13992837
...
...
@@ -228,7 +228,7 @@ func (s *Scheme) DataVersionAndKind(data []byte) (version, kind string, err erro
// ObjectVersionAndKind returns the API version and kind of the go object,
// or an error if it's not a pointer or is unregistered.
func
(
s
*
Scheme
)
ObjectVersionAndKind
(
obj
interface
{})
(
apiVersion
,
kind
string
,
err
error
)
{
v
,
err
:=
e
nforcePtr
(
obj
)
v
,
err
:=
E
nforcePtr
(
obj
)
if
err
!=
nil
{
return
""
,
""
,
err
}
...
...
@@ -261,14 +261,3 @@ func maybeCopy(obj interface{}) interface{} {
v2
.
Elem
()
.
Set
(
v
)
return
v2
.
Interface
()
}
// enforcePtr ensures that obj is a pointer of some sort. Returns a reflect.Value
// of the dereferenced pointer, ensuring that it is settable/addressable.
// Returns an error if this is not possible.
func
enforcePtr
(
obj
interface
{})
(
reflect
.
Value
,
error
)
{
v
:=
reflect
.
ValueOf
(
obj
)
if
v
.
Kind
()
!=
reflect
.
Ptr
{
return
reflect
.
Value
{},
fmt
.
Errorf
(
"expected pointer, but got %v"
,
v
.
Type
()
.
Name
())
}
return
v
.
Elem
(),
nil
}
pkg/runtime/scheme.go
View file @
13992837
...
...
@@ -222,7 +222,7 @@ func (s *Scheme) Convert(in, out interface{}) error {
// FindTypeMeta takes an arbitary api type, returns pointer to its TypeMeta field.
// obj must be a pointer to an api type.
func
FindTypeMeta
(
obj
Object
)
(
TypeMetaInterface
,
error
)
{
v
,
err
:=
e
nforcePtr
(
obj
)
v
,
err
:=
conversion
.
E
nforcePtr
(
obj
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
@@ -231,11 +231,11 @@ func FindTypeMeta(obj Object) (TypeMetaInterface, error) {
if
v
.
Kind
()
!=
reflect
.
Struct
{
return
nil
,
fmt
.
Errorf
(
"expected struct, but got %v: %v (%#v)"
,
v
.
Kind
(),
name
,
v
.
Interface
())
}
jsonBase
:=
v
.
FieldByName
(
"TypeMeta"
)
if
!
jsonBase
.
IsValid
()
{
typeMeta
:=
v
.
FieldByName
(
"TypeMeta"
)
if
!
typeMeta
.
IsValid
()
{
return
nil
,
fmt
.
Errorf
(
"struct %v lacks embedded JSON type"
,
name
)
}
g
,
err
:=
newGenericTypeMeta
(
jsonBase
)
g
,
err
:=
newGenericTypeMeta
(
typeMeta
)
if
err
!=
nil
{
return
nil
,
err
}
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment