Class ApachePublishDelegate

  • All Implemented Interfaces:
    IWebServerPublishDelegate
    Direct Known Subclasses:
    ApachePublishDelegateLinux, ApachePublishDelegateMock, ApachePublishDelegateWin32

    public abstract class ApachePublishDelegate
    extends Object
    implements IWebServerPublishDelegate
    Configures publications for Apache Web Server.

    Apache Web Server is configured by placing directives in plain text configuration files. The main configuration file is usually called httpd.conf. The location of this file is set at compile-time, but may be overridden. Changes to the main configuration files are only recognized by web server when it is started or restarted.

    Apache Web Server publication process is actually changing web server configuration file: publication Directory will be created or modified during publication process.

    • Constructor Detail

      • ApachePublishDelegate

        public ApachePublishDelegate()
    • Method Detail

      • publish

        public void publish​(Publication publication,
                            WebServer webServer,
                            Path webExtensions)
                     throws WebServerAccessException
        Publish the given publication instance on the given web server. Publications can configure the web server ability to work with 1C:Enterprise web clients, mobile devices, etc.

        Publication process depends on the publication type and may be various.

        Also can register the given 1C:Enterprise runtime web extension component on the given web server. Note, that some publication types does not support working without 1C:Enterprise runtime web extension component registration.

        Apache Web Server implementation converts publication instances to object Directory. Directory will be appended to the web server configuration file.

        Specified by:
        publish in interface IWebServerPublishDelegate
        Parameters:
        publication - the publication instance to publish, cannot be null
        webServer - the web server to publish the given publication instance to, cannot be null
        webExtensions - the path to 1C:Enterprise runtime web component, or null if component publishing is not needed
        Throws:
        WebServerAccessException - if publication process fails with some reason
      • update

        public void update​(Publication publication,
                           String name,
                           WebServer webServer,
                           Path webExtensions)
                    throws WebServerAccessException
        Description copied from interface: IWebServerPublishDelegate
        Edit the given publication on the server. Searches publication by the given name in the target web server. Does nothing, if publication not found. Overwrite old publication properties with new values from the given publication.

        Publication process depends on the publication type and may be various.

        Also can register the given 1C:Enterprise runtime web extension component on the given web server. Note, that some publication types does not support working without 1C:Enterprise runtime web extension component registration.

        Specified by:
        update in interface IWebServerPublishDelegate
        Parameters:
        publication - the publication instance to overwrite found publication with, cannot be null
        name - of publication to edit, cannot be null or empty
        webServer - the web server to edit the given publication instance in, cannot be null
        webExtensions - the path to registered 1C:Enterprise runtime web component, or null if component publishing is not needed
        Throws:
        WebServerAccessException - if publication process fails with some reason
      • remove

        public boolean remove​(WebServer webServer,
                              Publication publication)
                       throws WebServerAccessException
        Removes publication with given name from given web server. Returns whether specified publication was actually removed.

        Note, that actual publication content will not be deleted, but only removed from web server configuration.

        Apache Web Server implementation removes the container Directory with the description of publication by the given name of the publication from the target web server.

        Specified by:
        remove in interface IWebServerPublishDelegate
        Parameters:
        webServer - the web server to remove publication from, cannot be null
        publication - to remove, cannot be null, publication must contain non-null and non-empty name and location values
        Returns:
        whether if an element was removed as a result of this call
        Throws:
        WebServerAccessException - if removing fails
      • getDefaultPublicationLocation

        public Path getDefaultPublicationLocation​(WebServer webServer)
        Description copied from interface: IWebServerPublishDelegate
        Returns default location for the new publications for the given web server. The default publication location is a folder, that can contain sub-folders with publications. Can return null, if not defined or web server does not support default publication location.
        Specified by:
        getDefaultPublicationLocation in interface IWebServerPublishDelegate
        Parameters:
        webServer - the web server to get default publication location for, cannot be null
        Returns:
        default location for the new publications for the given web server or null, if not defined
      • isWebExtensionConfigured

        public boolean isWebExtensionConfigured​(Publication publication,
                                                Path webExtensions,
                                                WebServer webServer)
                                         throws WebServerAccessException
        Description copied from interface: IWebServerPublishDelegate
        Returns whether the provided 1C:Enterprise runtime web extension component is correctly configured for the web server publication. If false is returned then re-publish is required for this publication with this web extension for correct work.
        Specified by:
        isWebExtensionConfigured in interface IWebServerPublishDelegate
        Parameters:
        publication - the publication to check, cannot be null
        webExtensions - path to the 1C:Enterprise runtime web extension component, cannot be null
        webServer - the web server to check, cannot be null
        Returns:
        whether the provided 1C:Enterprise runtime web extension component is correctly configured for the web server publication
        Throws:
        WebServerAccessException - if request fails
      • getPublicationUrl

        public URL getPublicationUrl​(WebServer webServer,
                                     String name)
                              throws WebServerAccessException
        Returns URL of the publication by the provided publication name in the web server instance.
        Specified by:
        getPublicationUrl in interface IWebServerPublishDelegate
        Parameters:
        webServer - the web server to get URL for web server, cannot be null
        name - the name of publication, cannot be null or empty
        Returns:
        the URL of publication, never null
        Throws:
        WebServerAccessException - if directive 'Listen' is missing in the Apache Web Server configuration file
      • isPublishSupported

        public boolean isPublishSupported​(WebServer webServer,
                                          PublicationType type)
        Description copied from interface: IWebServerPublishDelegate
        Check support of publish process on the given web server instance.
        Specified by:
        isPublishSupported in interface IWebServerPublishDelegate
        Parameters:
        webServer - the web server to check publish support for, cannot be null
        type - the publication type to check, cannot be null
        Returns:
        true if web server supports publishing with the given publication type, false otherwise
      • publishTypeSpecificSettings

        protected void publishTypeSpecificSettings​(Publication publication)
                                            throws WebServerAccessException
        Publishes publication type-specific settings for the publication instance.
        Parameters:
        publication - the publication to publish type-specific settings for, cannot be null
        Throws:
        WebServerAccessException - if publish fails
      • formatIfExtists

        protected String formatIfExtists​(Path target)
        Formats target path, if file for this path exists.
        Parameters:
        target - the target path to format, cannot be null
        Returns:
        formatted path or null if file for this path does not exists
      • formatPathToWebExtensionComponent

        protected abstract String formatPathToWebExtensionComponent​(String componentPath)
        Formats path to the web extension component of the 1C:Enterprise runtime depending on the OS. Formatted path will be written in the web server configuration file.
        Parameters:
        componentPath - the web extension component to format, cannot be null
        Returns:
        formatted path to the web extension component of the 1C:Enterprise runtime, never null
      • getWebServerExecutableFileName

        protected abstract String getWebServerExecutableFileName​(WebServer webServer)
        Returns the web server executable file name.
        Parameters:
        webServer - the web server to get executable file name for, cannot be null
        Returns:
        the web server executable file name, never null