Getting Information about Access Paths

#### Search Results

Search

# Getting Information about Access Paths

Sometimes you need to get detailed information about a page accessing its adapter. Or, in other words: you want to get a detailed list of all the properties and objects which are referenced by your page definition to the corresponding adapter object.

For this reason, there is the class `CheckAccessPath` in the `com.softwareag.cis.server` package providing this information. The class has a `getInstance()` method to obtain an instance; the class has two additional methods:

    public String[] findAccessedObjects(String application,
                                        String reference);
    public String[] findAccessedProperties(String application,
                                           String reference);

In both methods, the parameters are "application" and "reference". "application" is the application project in which a page is defined. "reference" is the name of the page itself, without ".xml".

The `findAccessedObjects` method returns a String array of all objects referenced in this page. An object is referenced if the properties are not directly plugged to the adapter itself but to subobjects. Example: if you bind a FIELD to the VALUEPROP "address.street" then "address" is the returned name.

The `findAccessedProperties` method returns a String array of all properties referenced in the page which are not complex properties, but simple value properties.

In the cisdemos project (which is part of the installation), there is a page "ShowAccessPaths" and the corresponding class `ShowAccessPathsAdapter` that shows an example of how to use the `CheckAccessPath` methods. The page allows you to enter the application name and the page name, and returns a list of referenced objects and properties:

In the class definition of the corresponding adapter, the code (finding the information about access paths) looks as follows:

    // ------------------------------------------------------------------------
    // inner classes
    // ------------------------------------------------------------------------
     public class Info
    {
        // property >objects[*].name<
        // property >properties[*].name<
        String m_name;
        public String getName() { return m_name; }
        public void setName(String value) { m_name = value; }
    }

    // ------------------------------------------------------------------------
    // property access
    // ------------------------------------------------------------------------

    // property >app<
    String m_app = "";
    public String getApp() { return m_app; }
    public void setApp(String value) { m_app = value; }

    // property >page<
    String m_page = "";
    public String getPage() { return m_page; }
    public void setPage(String value) { m_page = value; }

    // array property >objects[*]<
    TEXTGRIDCollection m_objects = new TEXTGRIDCollection();
    public TEXTGRIDCollection getObjects() { return m_objects; }

    // array property >properties[*]<
    TEXTGRIDCollection m_properties = new TEXTGRIDCollection();
    public TEXTGRIDCollection getProperties() { return m_properties; }

    // ------------------------------------------------------------------------
    // public usage
    // ------------------------------------------------------------------------

    /** */
    public void onShowAccessPath()
    {
        // check
        if (m_app.trim().length() == 0)
        {
            outputMessage(MT_ERROR,"Please specify application project");
            return;
        }
        if (m_page.trim().length() == 0)
        {
            outputMessage(MT_ERROR,"Please specify page");
            return;
        }
        // fill data
        m_properties.clear();
        m_objects.clear();
        String[] objects = CheckAccessPath.getInstance().findAccessedObjects(m_app,m_page);
        String[] properties = CheckAccessPath.getInstance().findAccessedProperties(m_app,m_page);
        for (int i=0; i<objects.length; i++)
        {
            Info info = new Info();
            info.m_name = objects[i];
            m_objects.add(info);
        }
        for (int i=0; i<properties.length; i++)
        {
            Info info = new Info();
            info.m_name = properties[i];
            m_properties.add(info);
        }
      }
    }