mirror of
				https://github.com/optim-enterprises-bv/kubernetes.git
				synced 2025-11-04 04:08:16 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.6 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
/*
 | 
						|
Copyright 2014 The Kubernetes Authors.
 | 
						|
 | 
						|
Licensed under the Apache License, Version 2.0 (the "License");
 | 
						|
you may not use this file except in compliance with the License.
 | 
						|
You may obtain a copy of the License at
 | 
						|
 | 
						|
    http://www.apache.org/licenses/LICENSE-2.0
 | 
						|
 | 
						|
Unless required by applicable law or agreed to in writing, software
 | 
						|
distributed under the License is distributed on an "AS IS" BASIS,
 | 
						|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 | 
						|
See the License for the specific language governing permissions and
 | 
						|
limitations under the License.
 | 
						|
*/
 | 
						|
 | 
						|
package runtime
 | 
						|
 | 
						|
import (
 | 
						|
	"encoding/json"
 | 
						|
	"errors"
 | 
						|
)
 | 
						|
 | 
						|
func (re *RawExtension) UnmarshalJSON(in []byte) error {
 | 
						|
	if re == nil {
 | 
						|
		return errors.New("runtime.RawExtension: UnmarshalJSON on nil pointer")
 | 
						|
	}
 | 
						|
	re.Raw = append(re.Raw[0:0], in...)
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
// Marshal may get called on pointers or values, so implement MarshalJSON on value.
 | 
						|
// http://stackoverflow.com/questions/21390979/custom-marshaljson-never-gets-called-in-go
 | 
						|
func (re RawExtension) MarshalJSON() ([]byte, error) {
 | 
						|
	if re.Raw == nil {
 | 
						|
		// TODO: this is to support legacy behavior of JSONPrinter and YAMLPrinter, which
 | 
						|
		// expect to call json.Marshal on arbitrary versioned objects (even those not in
 | 
						|
		// the scheme). pkg/kubectl/resource#AsVersionedObjects and its interaction with
 | 
						|
		// kubectl get on objects not in the scheme needs to be updated to ensure that the
 | 
						|
		// objects that are not part of the scheme are correctly put into the right form.
 | 
						|
		if re.Object != nil {
 | 
						|
			return json.Marshal(re.Object)
 | 
						|
		}
 | 
						|
		return []byte("null"), nil
 | 
						|
	}
 | 
						|
	// TODO: Check whether ContentType is actually JSON before returning it.
 | 
						|
	return re.Raw, nil
 | 
						|
}
 |