Toggle navigation
Dataverse Project
About
About the Project
Add Data
Blog
Presentations
Publications
Community
Best Practices
Academic Credit
Harvard Dataverse Policies
Data Management
Replication Dataset Guidelines
Software
Features
Source Code
User Guide
Installation Guide
API Guide
Developer Guide
Style Guide
Admin Guide
Contact
User Guide
Installation Guide
API Guide
Developer Guide
Introduction
Development Environment
Version Control
Testing
Documentation
Debugging
Coding Style
Making Releases
Tools
Universal Numerical Fingerprint (UNF)
Geospatial Data
SELinux
Big Data Support
Style Guide
Admin Guide
Workflows
Developer Guide
ΒΆ
Contents:
Introduction
Intended Audience
Roadmap
Related Guides
Related Projects
Development Environment
Assumptions
Requirements
Java
Glassfish
PostgreSQL
Solr
curl
jq
Recommendations
Mac OS X
Netbeans
Additional Tools
Setting Up Your Dev Environment
Set Up SSH Keys
Clone Project from GitHub
Determine Which Repo To Push To
Cloning the Project from Netbeans
Cloning the Project from the Terminal
Building the WAR File
Building the War File from Netbeans
Building the War File from the Terminal
Installing and Running Solr
Run Installer
Iterating on Code and Redeploying
Deploy on Save
Deploying Manually
Netbeans Connector Chrome Extension
Troubleshooting
context-root in glassfish-web.xml Munged by Netbeans
Configuring / Troubleshooting Mail Host
Rebuilding Your Dev Environment
Shibboleth and OAuth
Geoconnect
DataCite
OpenShift
Install Minishift
Start Minishift
Make the OpenShift Client Binary (oc) Executable
Log in to Minishift
Create a Minishift Project
Create a Dataverse App within the Minishift Project
Check Status of Dataverse Deployment to Minishift
Review Logs of Dataverse Deployment to Minishift
Get a Shell (ssh/rsh) on Glassfish Server Deployed to Minishift
Make the Dataverse App Available Via HTTP
Make Sure the Dataverse API is Working
Log into Minishift and Visit Dataverse in your Browser
Cleaning up
Making Changes
Runnning Containers to Run as Root in Minishift
Minishift Resources
Docker
Installing Docker
Editing Dataverse Docker Images
Known issues with Dataverse Docker images
Get Set Up to Push Docker Images to Minishift Registry
Version Control
Where to Find the Dataverse Code
Branching Strategy
Goals
Branches
The “master” Branch
The “develop” Branch
Feature Branches
How to Make a Pull Request
Find or Create a GitHub Issue
Create a New Branch off the develop Branch
Commit Your Change to Your New Branch
Push Your Branch to GitHub
Make a Pull Request
Make Sure Your Pull Request Has Been Advanced to Code Review
How to Resolve Conflicts in Your Pull Request
Testing
The Health of a Codebase
Testing in Depth
Unit Tests
Unit Test Automation Overview
Writing Unit Tests with JUnit
Refactoring Code to Make It Unit-Testable
Observing Changes to Code Coverage
Testing Commands
Integration Tests
Getting Set Up to Run REST Assured Tests
The Burrito Key
Root Dataverse Permissions
Publish Root Dataverse
dataverse.siteUrl
Identifier Generation
Writing Integration Tests with REST Assured
The Phoenix Server
Future Work
Future Work on Unit Tests
Future Work on Integration Tests
Browser-Based Testing
Installation Testing
Load/Performance Testing
Documentation
Quick Fix
Other Changes (Sphinx)
Installing Sphinx
Using Sphinx
Table of Contents
Debugging
Logging
Coding Style
Java
Formatting Code
Tabs vs. Spaces
Format Code You Changed with Netbeans
Logging
Avoid Hard-Coding Strings
Type Safety
Bike Shedding
Making Releases
Bump Version Numbers
Merge “develop” into “master”
Write Release Notes
Make Artifacts Available for Download
Publish Release
Tools
Netbeans Connector Chrome Extension
Maven
PlantUML
Eclipse Memory Analyzer Tool (MAT)
PageKite
Vagrant
MSV
FontCustom
Universal Numerical Fingerprint (UNF)
UNF Version 3
UNF Version 5
UNF Version 6
I. UNF of a Data Vector
II. Combining multiple UNFs to create UNFs of higher-level objects.
Footnotes:
Geospatial Data
How Dataverse Ingests Shapefiles
Ingest
Example
WorldMap JoinTargets + API Endpoint
How Geoconnect Uses Join Target Information
Retrieving Join Target Information from WorldMap API
Saving Join Target Information to Geoconnect Database
SELinux
Introduction
Development Environment
Recreating the shibboleth.te File
Ensure that SELinux is Enforcing
Removing the Existing shibboleth.te Rules
Exercising SELinux denials
Stub out the new shibboleth.te file
Iteratively Use audit2allow to Add Rules and Test Your Change
Big Data Support
Data Capture Module (DCM)
Install a DCM
Downloading rsync scripts via Dataverse API
How a DCM reports checksum success or failure to Dataverse
Steps to set up a DCM mock for Development
Troubleshooting
Repository Storage Abstraction Layer (RSAL)
Configuring the RSAL Mock
Configuring download via rsync