Skip to main content

Graphical Seat Map Service

The Graphical Seat Map Service allows Red Apps to open Graphical Seat Map (GSM) component. This component is used by agents to select or change seats chosen within given PNR.

Service can open GSM in two modes:

  • Read/Write - this mode allows agent to select or change seat chosen within PNR active in emulator.

  • Read Only - this mode allows agent to look at seats available for given flight but does not allow for any changes.

To use GSM Service in you need to:

  1. Add required dependencies:

    • com.sabre.edge.app.gsm

    • com.sabre.edge.cf.core

    • com.sabre.edge.cf.model

    • com.sabre.edge.platform.core.common

  1. Add an authorization for "com.sabre.edge.cf.gsm.SelectionGUI" Service in your redapp.xml file:

<Authorization name="com.sabre.edge.cf.gsm.SelectionGUI" threshold="1" />
  1. If you want to receive any data from GSM, you need to create EventListener and register it with event filter " GSM_CHANGE " and state " PRE "

<EventListener event_filter="GSM_CHANGE" handler_class="com.example.GSMEventListener" state="PRE"/>
  1. Create GSMServiceClient

ISRWCommunication COM = Activator.getDefault().getServiceReference(ISRWCommunication.class); GSMServiceClient client = new GSMServiceClient(COM);
  1. Depending on whether you want to get data for active PNR or specific flight you create different GSMRequest objects: For active PNR:

ClientResponse <GSMResponse> rsp = client.send(GSMRequest.createReadOnlyGSM(segmentNumber));

for specific flight details:

Set <FlightDetails> flightDetailsSet = new HashSet <GSMRequest.FlightDetails>();
FlightDetails flightDetails = new FlightDetails(airline, flightNumber, date, departure, arrival, seatClass);
flightDetailsSet.add(flightDetails);
ClientResponse <GSMResponse> rsp = client.send(GSMRequest.createReadWriteGSM(segmentNumber, flightDetailsSet));
  1. GSM Service will return data about agent’s action in asynchronous manner. Service will return immediately after it was able to request GSM to be open and rest of data will be provided in form of event directed to your EventListener registered for " GSM_CHANGE " event (see point 3 for registration):

public class GSMEventListener implements IEventListener {
    @Override
    public void handleEvent(IEvent event)
    {
        if(event.getData() instanceof Action) {
            Action action = (Action) event.getData();
            //handle data
        }

     }
 }