Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Aug 3, 2015
  1. @nebhale

    Safenet Luna Security Provider

    nebhale authored
    The change adds a framework for the Safenet Luna Security Provider.
    This  framework is triggered by a service with the name 'luna' in it.
    It depends on that service having the HSM host, host-certificate,
    client, and client-certificate.  In also expects users to provide a
    repository with the Luna Client binaries in it.
Commits on May 11, 2015
  1. @nebhale

    JRE Memory Calculator

    nebhale authored
    Previously the values for the applications memory regions were
    calculated once during staging.  If the application was scaled such
    that the amount of memory allocated to it changed, the application had
    to be restaged in order to recalculate how the memory was allocated.
    Customers claimed that this slowed down development cycles and the
    behavior should be modified such that only a restart was required.
    This change incorporates a native executable to calculate the memory
    region allocation.  This executable is run during staging to ensure
    that the initial memory size and heuristics are valid.  The executable
    is then run as a subshell each time the application is started.  This
    means that  when the memory size is changed and the application is
    restarted, the memory allocations are adjusted accordingly.  If the
    new memory size causes an illegal allocation of memory, startup will
Commits on Feb 18, 2015
  1. @cgfrost

    Updates the copyright statements dates

    cgfrost authored
    All file now read 2013-2015 where they previously stated only 2013 or
    2013-2014. The Contibuting documentation is also updated to request
    that new files contain 2015 instead of 2014 as was previously stated.
    A template exists in InteliJ to provide an Apache license header to
    all new Ruby files with the current year.
Commits on Jan 14, 2015
  1. @cgfrost @nebhale

    Add support for Gem Fire session replication

    cgfrost authored nebhale committed
    This commit adds support for automatic Tomcat session replication using
    Gem Fire by binding to a service that exposes the required service
    tag 'session_replication' and service credentials 'locators',
    'username' and 'password'.
Commits on Jul 9, 2014
  1. Support configurable Tomcat Access Logging

    Christopher Frost authored
    Currently, in order to enable access logging the buildpack must be forked and
    a custom access valve added to the Tomcat configuration in the resources
    folder. A customised Access Valve is required as the one provided with Tomcat
    does not support logging to stdout which is required for Loggregator. This
    change allows Access logging to be enabled with a simple configuration change
    to the Tomcat container configuration in the 'config' folder. The default
    pattern for the logging output is specified in the server.xml file located in
    the 'resources/tomcat' folder. The default pattern begins with '[ACCESS]' and
    includes the 'X-Vcap-Request_Id' request header but otherwise follows the
    default for Apache access logs.
Commits on Mar 24, 2014
  1. @nebhale

    Use Yard (see ...) syntax

    nebhale authored
    Based on the results of
    lsegal/yard#720 (comment) the
    Yard (see ...) syntax suits our needs.  This change updates all of our
    docs to remove the macros and instead use that syntax.
Commits on Mar 17, 2014
  1. @nebhale

    Version upgrades

    nebhale authored
    This change upgrades the versions of the dependencies to their latest.
    As part of this upgrade, Rubocop underwent a major version upgrade.
    This necessitated major updates to the code.
Commits on Mar 6, 2014
  1. @nebhale

    Redis-based Session Replication

    nebhale authored
    Previously, all Tomcat Sessions existed only in memory.  In the case
    that a specific instance failed, the data in the Sessions hosted by
    that instance would be lost.  In some circumstances this isn't ideal,
    so Sessions should be replicated to an external repository.
    This change adds support for persisting Sessions to a Redis instance.
    It does this by using the RedisStore Tomcat PersistentManager Store
    As part of this effort the Tomcat container was refactored (it was
    already too complicated) and a ModularComponent base type was created.
    The ModularComponent allows enables a component to be composed of
    multiple "sub-components" and coordinates the component lifecycle
    across all of them.
Commits on Feb 18, 2014
  1. @nebhale

    Additional JARs on classpath

    nebhale authored
    As part of the work to integrate Ratpack into the buildpack, an
    adjustment to the Groovy classpath has been made.  Previously, Groovy
    applications were responsible for maintaining their own classpath.
    Instead, the buildpack should be doing this.  The new behavior is that
    all JAR files (regardless of their location) will be added to the
    Groovy classpath at runtime.
Commits on Feb 17, 2014
  1. @nebhale

    Improve Tomcat logging format and location

    nebhale authored
    Previously, the Tomcat logs (and that of anything else that used JULI)
    were written in an unreadable form to stderr.  This made the logs
    difficult to use when diagnosing problems, but also very scary looking
    when the started with [ERR].  This change updates the buildpack to use
    a new copy of the Tomcat support JARs which, when combined with new
    logging configuration, will cause the output to be cleaner and be
    written to stdout.
Commits on Feb 7, 2014
  1. @nebhale

    Use Yard macros in API docs

    nebhale authored
    Previously there was a hole in our API documentation that overridden
    methods did not inherit their parent's documentation.  There is an
    issue open with the Yard team to fix this bug, but until then the
    decision was made to use Yard macros to duplicate the documentation.
    This change adds the Yard macros and cleans up other miscellaneous
    documentation errors.
Commits on Jan 10, 2014
  1. @nebhale

    Seriously, don't create sandboxes in detect and release

    nebhale authored
    An earlier attempt to prevent sandboxes from being created in detect
    and release wasn't entirely successful.  This change finishes the job
    and ensures that, seriously, sandboxes aren't created when they
    shouldn't be.
Commits on Dec 24, 2013
  1. @nebhale

    Tidy requires

    nebhale authored
    When testing the previous change it was noticed that the require
    statements in a number of components were in incorrect.  This change
    tidies them up a bit.
  2. @nebhale

    Make sandbox directory on demand

    nebhale authored
    Previously, the component sandbox directory was created aggressively
    each time a Droplet was instantiated.  This caused issues because it
    would happen during the detect phase and corrupt the file system for
    the compile phase.  This change removes the aggressive creation and
    instead makes the directory the first time that the sandbox is
    requested by a component.
Commits on Dec 13, 2013
  1. @nebhale

    Application and Droplet abstractions

    nebhale authored
    This major change codifies the use of the Application and Droplet
    abstractions.  These abstractions ensure visibility constraints and
    standard treatment of paths across all components.  The changes here
    are compatibility breaking and will be documented in the commit that
Commits on Nov 29, 2013
  1. @nebhale

    Introduce Application abstraction

    nebhale authored
    Originally, this work was intended to fix a bug were paths on the
    command line of a Play 2.2 application were not relative to the root
    of the running Play application (because Play changes the working
    directory).  In order to fix this problem, the codebase had to be
    changed to use Pathname instead of File, Dir, and Strings.  This
    allowed us to more easily calculate relative paths.  In addition, to
    uniformly guarantee that $PWD was prepended to all path related to
    +JAVA_OPTS+ an Application abstraction was introduced.  It
    encapsulates the common behaviors done by components so that they are
    handled consistently.  This abstraction isn't required to be used (all
    of the context variables still exist) but it should be considered the
    way forward.  Eventually, the context variables will be deprecated and
    removed in favor of this abstraction.  Finally, the codebase was
    cleaned up to meet the following set of rules:
    * Minimize the use of
    * Minimize the use of File and Dir
    * Minimize the use of Shell (in favor of FileUtils)
    * Minimize the use of @app_dir
Commits on Nov 22, 2013
  1. @nebhale

    Prefer FileUtils over shell

    nebhale authored
    This change replaces as many of the calls to shell for file
    manipulations (e.g. cp, mv, rm) with FileUtils as is possible.
Commits on Nov 13, 2013
  1. @glyn

    Fix typo

    glyn authored
Commits on Oct 29, 2013
  1. @glyn

    Fix rubocop issues

    glyn authored
  2. @glyn
Commits on Oct 24, 2013
  1. @nebhale

    AppDynamics Support

    nebhale authored
    This change adds support for zero-touch usage of an bound AppDynamics
    service.  The documentation for the component contains information on
    how to bind the service to use this functionality.
Commits on Oct 23, 2013
  1. Zero-touch support for Spring Insight

    Christopher Frost authored
    Spring Insight is a monitoring solution provided Pivotal[1].  It monitors
    Spring web applications for performance and faults.  This support is
    implemented as a framework that looks for a service called 'insight' and acts
    when it is found.  The framework downloads the appropriate Insight agent from
    the Insight dashboard and configures it so that it connects to the bound
    service properly.  Configuration of Insight is not accomplished through the
    buildpack, but rather through the Insight dashboard.  This service only works
    for applications deploying into the Tomcat container and modifies the Tomcat
    container with *TEMPORARY* support for behaviors needed by the Spring Insight
    agent.  These changes to the Tomcat container are not likely to last long and
    other components should not depend on or emulate them.
    [52064679] [52065001] [52065073]
Commits on Oct 22, 2013
  1. @nebhale

    Change detect output

    nebhale authored
    Previously, the detect output of the buildpack looked something like
    the following:
    openjdk-1.7.0_40, tomcat-7.0.42, spring-auto-reconfiguration-0.9.1
    Per request from the Cloud Foundry core team, this output has been
    modified to delimit each entry's name and version number with an
    equals sign and each entry from one another with a space.  The output
    now looks like:
    openjdk=1.7.0_40 tomcat=7.0.42 spring-auto-reconfiguration=0.9.1
Commits on Oct 21, 2013
  1. @nebhale

    Only expose application through Tomcat

    nebhale authored
    Previously, the Tomcat container symlinked the application root
    directly to TOMCAT_HOME/webapps/ROOT.  This led to a problem where a
    web application configured without a root servlet would expose the
    filesystem of the application via the default servlet.  This change
    fixes that issue by ensuring that only files and directories that are
    uploaded by the user are mapped into the ROOT web application.
    To make this change, the first implementation of an Application
    abstraction has been created.  This initial implementation ensures
    that only the originally upload application code is exposed and adds
    utility methods for getting a component-specific directory and
    determining paths relative to the application root.
Commits on Oct 16, 2013
  1. @glyn

    Prevent Tomcat container from detecting Java main applications

    glyn authored
    Implement the more general improvement of diagnosing JRE and container
    cardinality issues on compile and release
    Detect checks that there is precisely one JRE and one container that
    are offering to run the application and fails otherwise. Compile and
    release were only checking that there was at most one container.
    Check on compile and release that there is precisely one JRE and one
    container that are offering to run the application and fail otherwise.
    Diagnostics should use container & JRE names. Previously the detect
    diagnostics included the container or JRE detect tags rather than the
    container or JREs themselves. This gave rise to diagnostics such as:
    Application can be run by more than one container: java-main,
    tomcat-7.0.42, tomcat-buildpack-support-1.1.1
    which was misleading since tomcat-buildpack-support-1.1.1 is not a
    Change the diagnostics to use container and JRE names. For example,
    the above diagnostic then becomes:
    Application can be run by more than one container: ["Java Main",
    Given this general improvement, factor out Java main class location
    utility and use this utility from the Tomcat and Main containers.
Commits on Oct 4, 2013
  1. @nebhale

    Fail if system calls are non-zero

    nebhale authored
    Previously, if a system call such as 'tar xf ...' failed, the
    buildpack continued on as if everything had gone fine.  This was due
    to the use of the 'system' call without ever checking that the return
    value was 'true'.  This change creates a 'shell' call that works
    similarly to the system call except that it checks the exit code of
    every call and prints stdout and stderr and then fails if the exit
    code is non-zero.
Commits on Sep 27, 2013
  1. @nebhale

    Component name while downloading

    nebhale authored
    This change normalizes the name of the Tomcat while downloading.
Commits on Sep 26, 2013
  1. @nebhale

    Make extension more palatable

    nebhale authored
    This change takes the opportunity to factor out a couple of subclasses
    that should make extension more palatable.  At the same time, it
    cleans up many of the existing components so that they are more
    similar to one another.  Finally it improves the extension
    documentation to talk about the new base classes, the unified
    component contract, and documents the content of the context passed in
    during initialization.
Commits on Sep 16, 2013
  1. @glyn

    Exploded context hashes

    glyn authored
    Add three more instances.
Commits on Sep 13, 2013
  1. @glyn

    Move duplicated code to Resources utility class

    glyn authored
Commits on Sep 12, 2013
  1. @glyn

    Remove duplicate code

    glyn authored
    Introduce a ConfiguredItem helper method which wraps exceptions
    and a new check_size method on TokenizedVersion. Then reuse these
    methods in place of duplicate code.
    Add a Groovy utility method to find all Groovy files.
  2. @glyn

    Remove duplicate download code associated with ApplicationCache

    glyn authored
    Also tighten up the ApplicationCache interface by hding the
  3. @glyn

    Reduce duplicated code

    glyn authored
  4. @glyn

    Reformat all Ruby code

    glyn authored
    Adhere to RubyMine conventions from now on. In particular, the private
    method should not increase indentations of subsequent statements.
Commits on Aug 12, 2013
  1. @nebhale

    Add New Relic support

    nebhale authored
    This change adds support for bound New Relic services.  The framework
    notices a bound service in VCAP_SERVICES.  During the compile phase,
    the New Relic agent JAR is download and a default New Relic
    configuration file is copied into place.  During the release phase, a
    number of JAVA_OPTS are configured such that the New Relic service is
    used during the application's runtime.
Something went wrong with that request. Please try again.