Child pages
  • Grouper development environment
Skip to end of metadata
Go to start of metadata

This page is for Grouper developers.

Note the coding standards: Grouper developers coding standards

General tips

  • You should be using Eclipse, but you can also use the IDE of your choice
    • You should have webtools with tomcat 8.5
  • For profiling we use YourKit

  • Checkout the git repo for GROUPER_2_4_BRANCH or master (main)
  • Install mysql (or whatever database you want, probably better to not use hsql, though you could)
  • You can use as a maven project, or ant project
  • Do an ant build
  • Configure the for database
  • Do a gsh -registry -runscript
  • Start GSH and run some commands
  • Have the UI include a source folder from the API for source and conf
  • Add a tomcat to eclipse
  • Do an "ant dev" in the UI to get the libs in WEB-INF/lib
  • Download the required tomcat version (e.g. tomcat 8.5)
  • Make sure API has all libs exported
  • ui and ws (and others) have a project dependency on grouper)
  • Map the webapp dir to tomcat, UI should start
  • Add tomcat users for GrouperSystem and test.subject.0, set your password
  • Do an "ant dev" in the WS to get the libs in WEB-INF/lib

Map the webapp dir to tomcat, WS should start, try a call from the client

Eclipse setup

Project setup


Checkstyle plugin

Grouper uses Checkstyle configuration files to scan for general style issues in source code. These are in the grouper-parent/src/checkstyle project directory, and can be used to set up IDE background checking on Java files.

Go to Help→Eclipse Marketplace, and install "Checkstyle Plugin (eclipse-cs)". Click OK if needed to install unsigned content

Configure via File→ Properties→ Checkstyle→ Local Check Configurations

Click New... to create the local configuration. Choose Type "Project Relative Configuration". The location of the file will be under /grouper-parent/src/checkstyle. File checkstyle-legacy.xml just has a few checks and is geared toward older code with more issues, while checkstyle.xml has more checks and is better for newer files.

On the main tab, check "Checkstyle active for this project", choose the newly created configuration. To adjust the number of warnings, you can check more boxes under the "Exclude from checking" choices.

Sample output:


Patch java example

This is not really Grouper specific, but if you want to patch a jar in a webapp, here is an example:

 cd /tmp
 mkdir grouper
 cd grouper
 mkdir src
 cd src
 unzip /opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/lib/grouper.jar
 ### note, might want to delete all other source and class files except the one you need ###
 emacs edu/internet2/middleware/grouper/app/loader/

 javac -cp .:/opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/lib/subject.jar:/opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/lib/commons-lang.jar:/opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/lib/log4j.jar:/opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/lib/hibernate.jar:/opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/lib/commons-logging.jar:/opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/lib/DdlUtils.jar:/opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/lib/quartz.jar:/opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/lib/commons-collections.jar:/opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/lib/grouper.jar -sourcepath . edu/internet2/middleware/grouper/app/loader/

 mkdir /opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/classes/edu/internet2
 mkdir /opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/classes/edu/internet2/middleware
 mkdir /opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/classes/edu/internet2/middleware/grouper
 mkdir /opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/classes/edu/internet2/middleware/grouper/app
 mkdir /opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/classes/edu/internet2/middleware/grouper/app/loader
 cp edu/internet2/middleware/grouper/app/loader/GrouperLoaderType* /opt/appserv/tomcat_3c/webapps/fastGrouperProdDaemon/WEB-INF/classes/edu/internet2/middleware/grouper/app/loader

See also 

Grouper Coding Standards 

Page down here for a section on Guidelines for Contribs to Grouper

  • No labels