Skip to main content

Design and Coding Requirements

Red Apps are expected to conform to the following requirements.

  • (Optional) The main plug-in has the most important or significant functionality. While it is preferred for the main plug-in to include all business logic, it is not required.

  • The functionality in a Red App can be distributed among multiple plug-in projects within a Red App bundle. All JARs for each plug-in project must be located in the plugins directory in the Red App bundle ZIP file.

  • All communications with the SRWRuntime communications bus are in the main Red App plug-in within the Red App bundle. For communications requirements, see Communications Components in Red Apps.

  • Dependent plug-ins within a Red App bundle consist of libraries and other dependencies. They may also include business logic. Dependent plug-ins must not have communications.

  • All Red Apps must incorporate secure coding practices.

  • Red Apps cannot call any methods on the System.out and System.err objects. These objects are static fields in the java.lang.System class.

        If your Red App calls any of these methods, it will fail certification. Instead, use methods in ILoggerService. (See Creating Access to ILoggerService.)

  • Red Apps are not permitted to listen for the AG command. Red Apps that listen for AG will fail certification. Red Apps can listen for all commands with an empty action_code, however, if passwords are returned, they will be masked with the xxxxxx characters. For general information, see About Emulator Command Intercept and Markup Services and About Event Listeners and Event Listening.

  • If a Red App has a GUI or creates a website, the Red App conforms to Sabre Red 360 styles.

  • A Red App includes the technologies, UI elements, services, and other criteria that are in the corresponding Red App proposal.

  • The technologies, UI elements, wrappers, services, and communications in all plug-ins comply with all Sabre Red App requirements and guidelines as described in the Red App help. For example, a plug-in that has an editor complies with the description of an editor in the topics about editors.

  • Your Sabre Red 360 menu contributions must be assigned according to the functionality in your app, for example, an air booking tool is on the Tools > Air menu. For more information, see the topics in Basic Menus.

IMPORTANT!   During validation of your Red App, Sabre verifies that your menu contribution is appropriate for the functionality in your app.

  • A Red App cannot contribute to the following launcher bar menus: Tools menu root, Help Desk sub-menu on the Admin menu, and Favorites.

  • If any plug-ins are based on the Red App sample plug-ins, the content for Sabre Red 360 classes is put into new classes and new packages. Sabre will not accept or certify Red Apps with classes or packages that are taken from Red App sample plug-ins.

  • The plugin.xml file in the main Red App plug-in project includes a dependency to the com.sabre.edge.redapp.contactdetails extension point. Other dependent plug-in projects within a Red App bundle must not have contact details.

        You have several options for adding contact details:

        If your support contact information for your Red App changes, you are required to update the contact details in your plug-in. Even if this is the only change you make to a published Red App, you are required to submit a new release with this updated information. It is most likely that this will be a patch release.

        For important information about contact details and an example of an entry in the manifest, see all topics in the Contact Details book.

  • Versions of SR360 bundles (starting with com.sabre.edge.*) declared in java manifest, should not contain maximum allowed version in the *Required-Bundles* field. Example of an incorrect entry:

com.sabre.edge.platform.core.common;bundle-version="[1.2.0,1.3.0]"
  • The plugin.xml file in the main Red App plug-in project includes the com.sabre.edge.cf.redapp extension point. This extension point triggers SRWRuntime to search for redapp.xml. Other dependent plug-in projects within a Red App bundle must not have this extension. Use Eclipse to add this extension point. Do not add any extension points outside of Eclipse.

        An example is shown below.

<extension point="com.sabre.edge.cf.redapp" />
  • Only the main Red App plug-in project within a Red App bundle has a redapp.xml file. For more information, see Building a redapp.xml File.

  • Your redapp.xml file must be encoded as UTF-8.

  • If a Red App consumes external non Sabre services, it is recommended to follow the Accessing External Services guidelines available in this chapter.