blob: a208e06243567ae8e72d4bf1626013bff170a264 [file] [log] [blame]
/*
* Copyright 2004 The Apache Software Foundation.
*
* 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 org.apache.kandula.participant;
import java.io.IOException;
import java.util.Map;
import org.apache.axiom.om.OMElement;
import org.apache.axis2.AxisFault;
import org.apache.axis2.addressing.EndpointReference;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
import org.apache.axis2.databinding.types.URI;
import org.apache.kandula.Constants;
import org.apache.kandula.context.impl.ATParticipantContext;
import org.apache.kandula.faults.AbstractKandulaException;
import org.apache.kandula.utility.EndpointReferenceFactory;
import org.apache.kandula.utility.KandulaConfiguration;
import org.apache.kandula.wscoor.RegistrationServiceStub;
import org.oasis_open.docs.ws_tx.wscoor._2006._06.Register;
import org.oasis_open.docs.ws_tx.wscoor._2006._06.RegisterResponse;
import org.oasis_open.docs.ws_tx.wscoor._2006._06.RegisterType;
import org.xmlsoap.schemas.ws._2004._08.addressing.AttributedURI;
import org.xmlsoap.schemas.ws._2004._08.addressing.EndpointReferenceType;
import org.xmlsoap.schemas.ws._2004._08.addressing.ReferenceParametersType;
public class ParticipantUtility {
public static void registerParticipant(
ATParticipantContext participantContext,
MessageContext messageContext) throws AxisFault {
try {
ConfigurationContext axis2ConfigurationContext = KandulaConfiguration
.getInstance().getPariticipantAxis2ConfigurationContext();
if (axis2ConfigurationContext == null) {
axis2ConfigurationContext = messageContext
.getConfigurationContext();
}
EndpointReference participantProtocolService = EndpointReferenceFactory
.getInstance().get2PCParticipantEndpoint(
participantContext.getID());
RegistrationServiceStub registrationCoordinator = new RegistrationServiceStub(
axis2ConfigurationContext, null);
registrationCoordinator._getServiceClient().setTargetEPR(
participantContext.getCoordinationContext()
.getRegistrationService());
Register register = new Register();
RegisterType registerType = new RegisterType();
registerType.setProtocolIdentifier(new URI(participantContext
.getRegistrationProtocol()));
EndpointReferenceType endpointReferenceType = new EndpointReferenceType();
AttributedURI attributedURI = new AttributedURI();
attributedURI.setAnyURI(new URI(participantProtocolService
.getAddress()));
endpointReferenceType.setAddress(attributedURI);
// setting reference parameters
ReferenceParametersType referenceParametersType = new ReferenceParametersType();
Map map = participantProtocolService.getAllReferenceParameters();
OMElement element = (OMElement) map
.get(Constants.REQUESTER_ID_PARAMETER);
referenceParametersType.addExtraElement(element);
endpointReferenceType
.setReferenceParameters(referenceParametersType);
registerType.setParticipantProtocolService(endpointReferenceType);
register.setRegister(registerType);
// Actual WS call for registeration
RegisterResponse registerResponse = registrationCoordinator
.RegisterOperation(register);
participantContext.setCoordinationEPR(EndpointReferenceFactory
.getEPR(registerResponse.getRegisterResponse()
.getCoordinatorProtocolService()));
} catch (IOException e) {
throw new AxisFault(e);
} catch (AbstractKandulaException e) {
AxisFault e1 = new AxisFault(e);
throw e1;
}
}
}