Skip to content
No description, website, or topics provided.
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
project
src
.gitignore
LICENSE
README.md
build.sbt

README.md

refined-guava

A set of refinement types for Google's Guava library.

Quickstart

Code samples assume these imports:

import java.net.InetAddress
import com.google.common.net.InternetDomainName
import eu.timepit.refined.api.Refined
import eu.timepit.refined.auto._
import refined.guava.net._
import refined.guava.net.net.IP

Checking values at compile-time using helper functions:

val ipv4Loopback: InetAddress = ip("127.0.0.1")
// ipv4Loopback: java.net.InetAddress = /127.0.0.1

val hostname: InternetDomainName = dns("foo.org.co.uk")
// hostname: com.google.common.net.InternetDomainName = foo.org.co.uk

Values can also be checked using refinement predicates:

val dns1: String Refined IP = "2001:db8::f00:123"
// dns1: eu.timepit.refined.api.Refined[String,refined.guava.net.net.IP] = 2001:db8::f00:123

These examples won't compile because they fail validation:

val notAnIp = ip("hello")
// <console>:22: error: IP Address predicate failed: 'hello' is not an IP string literal.
//        val notAnIp = ip("hello")
//                         ^

val notAHostname = dns("rm -rf /")
// <console>:22: error: DNS name predicate failed: Not a valid domain name: 'rm -rf /'
//        val notAHostname = dns("rm -rf /")
//                               ^

Testing the app

To run unit tests, run

sbt test

Code coverage report

To generate a code coverage report run,

sbt clean coverage test coverageReport

The HTML report will be written to target/scala-2.12/scoverage-report/index.html.

Code quality analysis

The project uses the scapegoat tool for code quality analysis. Run run a scapegoat report, run

sbt scapegoat

The HTML report will be written to target/scala-2.12/scapegoat-report/scapegoat.html

You can’t perform that action at this time.