|
|
@ -55,10 +55,22 @@ func (broker *NewTransactionBroker) Call(in []reflect.Value) []reflect.Value { |
|
|
|
} |
|
|
|
out := broker.caller(in) |
|
|
|
lastReturnValue := out[len(out)-1] |
|
|
|
if lastReturnValue.Kind() == reflect.Invalid { |
|
|
|
if err := transactionHandler.Commit(); err != nil { |
|
|
|
// Todo Log
|
|
|
|
return []reflect.Value{reflect.ValueOf(err)} |
|
|
|
switch lastReturnValue.Kind() { |
|
|
|
case reflect.Invalid: |
|
|
|
{ |
|
|
|
if err := transactionHandler.Commit(); err != nil { |
|
|
|
// Todo Log
|
|
|
|
return []reflect.Value{reflect.ValueOf(err)} |
|
|
|
} |
|
|
|
} |
|
|
|
case reflect.Interface: |
|
|
|
{ |
|
|
|
if lastReturnValue.Type() == errorType && lastReturnValue.IsNil() { |
|
|
|
if err := transactionHandler.Commit(); err != nil { |
|
|
|
// Todo Log
|
|
|
|
return []reflect.Value{reflect.ValueOf(err)} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
return out |
|
|
|