19 May, 2014

1 commit


18 May, 2014

1 commit


16 May, 2014

1 commit


15 May, 2014

1 commit

  • * Removed all @author tags
    * Fixed trailing lines, too long lines, unchecked exceptions
    * Fixed indent errors
    * Fixed some javadoc errors (wrong html tags, ...)
    * Updated some copyright header that were badly formatted
    * Added some private default constructors and made some utility class 'final'
    * Fixed all errors in test classes
    
    git-svn-id: https://svn.forgerock.org/openig/trunk@179 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
    guillaume.sauthier
     

13 May, 2014

2 commits


28 Apr, 2014

1 commit


23 Apr, 2014

2 commits


22 Apr, 2014

2 commits


16 Apr, 2014

4 commits

  • * use GroovyScriptEngine for its dynamic reloading capabilities
    * use a bootstrap Groovy script to add meta-class information to the engine (accidentally committed in r169)
    * custom Groovy scripts should be located in ".openig/scripts/groovy".
    
    
    git-svn-id: https://svn.forgerock.org/openig/trunk@171 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
    matthew
     
  • * introduced Environment class which encapsulates information regarding the application's installation directory, etc. It is exposed on the heap as "Environment" so that other heaplets (such as scripting) can determine path names such as script class paths
    
    * removed vendor name from configuration paths and lowercased the product name. The configuration root is now in ".openig" instead of ".ForgeRock/OpenIG"
    
    * moved the configuration file into the "config" sub-folder, e.g. ".openig/config/config.json". The same goes for the bootstrap configuration as well. This will be useful when installing as standalone package because it is important to separate mutable configuration files from installed files.
    
    
    git-svn-id: https://svn.forgerock.org/openig/trunk@170 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
    matthew
     
  • git-svn-id: https://svn.forgerock.org/openig/trunk@169 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
    matthew
     
  • git-svn-id: https://svn.forgerock.org/openig/trunk@168 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
    matthew
     

14 Apr, 2014

1 commit

  • git-svn-id: https://svn.forgerock.org/openig/trunk@167 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
    mark
     

10 Apr, 2014

3 commits


09 Apr, 2014

1 commit


03 Apr, 2014

1 commit


01 Apr, 2014

3 commits


29 Mar, 2014

1 commit


28 Mar, 2014

3 commits


27 Mar, 2014

1 commit


26 Mar, 2014

3 commits

  • * provide the ability to easily set attributes in entries.
    
    
    git-svn-id: https://svn.forgerock.org/openig/trunk@153 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
    matthew
     
  • Provided global variable "ldap" which provides simple access to OpenDJ LDAP SDK including:
    
    * ldap.connect(host, port) - obtains cached connection to host/port (no SSL)
    * ldap.connect(host, port, options) - obtains cached connection to host/port (with optional SSL)
    * ldap.dn(template, args...) - injection safe printf style formatting of DNs
    * ldap.filter(template, args...) - injection safe printf style formatting of filters
    * ldap.scope.* - easy access to LDAP search scopes, e.g. ldap.scope.sub.
    
    The connect methods return an adapted SDK LDAP connection which only exposes the synchronous methods. This is to protect against future evolution of the SDK APIs (e.g. we plan to migrate to using Promises). In addition, the Groovy scripting engine has been enhanced using Groovy MetaClasses to facilitate access to LDAP Entry attributes, which are now exposed as properties. For example, the following code parses the "description" attribute as a single valued string:
    
        entry.description.parse().asString()
    
    The testLdapClient unit test in GroovyScriptFilterTest illustrates LDAP usage.
    
    
    git-svn-id: https://svn.forgerock.org/openig/trunk@152 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
    matthew
     
  • * added out of the box support for using the OpenDJ LDAP SDK
    * added unit test illustrating usage from within Groovy.
    
    A subsequent commit will improve the integration in order to reduce boilerplate and to cache connections between script invocations.
    
    
    git-svn-id: https://svn.forgerock.org/openig/trunk@151 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
    matthew
     

07 Mar, 2014

2 commits

  • Filters and handlers support a single standalone Groovy script. At the moment the script is not automatically reloaded. The following variables are injected into each script invocation:
    
    * globals - a Map of global variables which persist across successive invocations of the script
    * exchange - the HTTP exchange
    * http - an OpenIG HTTP client which may be used for performing outbound HTTP requests
    * logger - the OpenIG logger
    * next - the next handler in the filter chain (filters only).
    
    Many examples showing how Groovy scripts can interact with OpenIG can be found in GroovyScriptFilterTest.
    
    
    git-svn-id: https://svn.forgerock.org/openig/trunk@150 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
    matthew
     
  • git-svn-id: https://svn.forgerock.org/openig/trunk@149 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
    matthew
     

05 Mar, 2014

1 commit


28 Feb, 2014

2 commits

  • Add basic preliminary support for Groovy scriptable filters and handlers. Uses JSR-223 for now, but plan to move to our commons scripting module when it's ready. Scripts can read and write exchange fields, except for the entity.
    
    
    git-svn-id: https://svn.forgerock.org/openig/trunk@147 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
    matthew
     
  • "If it looks like a duck, swims like a duck, and quacks like a duck, then it probably is a duck."
    
    But Ducks are fat and we don't want lots of excess fat in our code base so, since we are not duck collectors, let's go shoot some duck. :-)
    
    Seriously: OpenIG uses duck-typing to provide map-like views of various objects. JSR 223 implementations, such as for Groovy, provide automatic support for bean-like objects and maps. In particular, bean getters/setters and map key/value pairs are automatically mapped to properties in Groovy scripts. This makes scripting really easy and developer friendly. Unfortunately, the support does not extend to our duck-typed objects, which are neither beans or maps. I was unable to see why duck-typing is needed in OpenIG, other than to avoid implementing a couple of awkward map view methods (e.g. entrySet), but they bring their own complexity. For example, many engineers find the duck-type support hard to understand and maintain.
    
    
    git-svn-id: https://svn.forgerock.org/openig/trunk@146 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
    matthew
     

21 Feb, 2014

1 commit


20 Feb, 2014

1 commit

  • * remove unused imports
    * fixed various compilation warnings.
    
    
    git-svn-id: https://svn.forgerock.org/openig/trunk@144 dbb9e58e-28e6-4ce0-90e8-f11d9605b710
    matthew
     

07 Feb, 2014

1 commit