/* * Licensed to the Apache Software Foundation (ASF) under one * or more contributor license agreements. See the NOTICE file * distributed with this work for additional information * regarding copyright ownership. The ASF licenses this file * to you 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 org.apache.tuscany.sca.implementation.guardian.provider; import org.apache.tuscany.sca.implementation.guardian.impl.*; import java.util.List; import org.apache.tuscany.sca.implementation.guardian.GuardianMember; import org.apache.tuscany.sca.implementation.guardian.common.Context; import org.apache.tuscany.sca.implementation.guardian.common.GlobalExceptionInterface; import org.apache.tuscany.sca.invocation.Invoker; import org.apache.tuscany.sca.invocation.Message; public class GuardianGroupInvoker implements Invoker { protected final GuardianGroupImpl guardian; public GuardianGroupInvoker(GuardianGroupImpl guardian) { this.guardian = guardian; } public Message invoke(Message arg0) { throw new UnsupportedOperationException("Not supported yet. 1"); } //AddGuardianMember operation invoker public static class AddGuardianMemberInvoker extends GuardianGroupInvoker { public AddGuardianMemberInvoker(GuardianGroupImpl guardian) { super(guardian); } @Override public Message invoke(Message msg) { GuardianMember guardianMember = (GuardianMember) ((Object[]) msg.getBody())[0]; this.guardian.addGuardianMember(guardianMember); return msg; } } //RemoveGuardianMember operation invoker public static class RemoveGuardianMemberInvoker extends GuardianGroupInvoker { public RemoveGuardianMemberInvoker(GuardianGroupImpl guardian) { super(guardian); } @Override public Message invoke(Message msg) { GuardianMember guardianMember = (GuardianMember) ((Object[]) msg.getBody())[0]; boolean returnedValue = this.guardian.removeGuardianMember(guardianMember); msg.setBody(returnedValue); return msg; } } //EnableContext operation invoker public static class EnableContextInvoker extends GuardianGroupInvoker { public EnableContextInvoker(GuardianGroupImpl guardian) { super(guardian); } @Override public Message invoke(Message msg) { Context context = (Context) ((Object[]) msg.getBody())[0]; this.guardian.enableContext(context); return msg; } } //RemoveContext operation invoker public static class RemoveContextInvoker extends GuardianGroupInvoker { public RemoveContextInvoker(GuardianGroupImpl guardian) { super(guardian); } @Override public Message invoke(Message msg) { this.guardian.removeContext(); return msg; } } //Gthrow operation invoker public static class GthrowInvoker extends GuardianGroupInvoker { public GthrowInvoker(GuardianGroupImpl guardian) { super(guardian); } @Override public Message invoke(Message msg) { GlobalExceptionInterface ex = (GlobalExceptionInterface) ((Object[]) msg.getBody())[0]; List participantList = (List) ((Object[]) msg.getBody())[1]; this.guardian.gthrow(ex, participantList); return msg; } } //Propagate operation invoker public static class PropagateInvoker extends GuardianGroupInvoker { public PropagateInvoker(GuardianGroupImpl guardian) { super(guardian); } @Override public Message invoke(Message msg) { GlobalExceptionInterface ex = (GlobalExceptionInterface) ((Object[]) msg.getBody())[0]; boolean needPropagation = this.guardian.propagate(ex); msg.setBody(needPropagation); return msg; } } //CheckExceptionStatus operation invoker public static class CheckExceptionStatusInvoker extends GuardianGroupInvoker { public CheckExceptionStatusInvoker(GuardianGroupImpl guardian) { super(guardian); } @Override public Message invoke(Message msg) { this.guardian.checkExceptionStatus(); return msg; } } }