Skip to content

Instantly share code, notes, and snippets.

@danveloper danveloper/Service.groovy
Last active Dec 17, 2015

Embed
What would you like to do?
Redefined - "Redefining the Service Layer with Groovy Categories"
class LocalPaymentService implements PaymentService {
static {
use (PaymentTypeHandlerRegistrationCategory) {
CreditCardPaymentType.register(CreditCardPaymentProcessor)
GiftCardPaymentType.register(GiftCardPaymentProcessor)
EmployeePaymentType.register(EmployeePaymentProcessor)
CheckPaymentType.register(CheckPaymentProcessor)
}
}
public String process(PaymentType paymentType) {
def processorCategory
use (PaymentTypeHandlerRegistrationCategory) {
processorCategory = paymentType.class.getHandler()
}
// No processor for the payment type
if (!processorCategory) throw new RuntimeException("No handler registered for ${paymentType.class}")
use (processorCategory) {
paymentType.process()
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.