001package org.kuali.common.devops.heap; 002 003import static org.kuali.common.util.base.Precondition.checkMin; 004 005import com.fasterxml.jackson.databind.annotation.JsonDeserialize; 006 007@JsonDeserialize(builder = Heap.Builder.class) 008public final class Heap { 009 010 private final long young; 011 private final long old; 012 private final long perm; 013 014 private Heap(Builder builder) { 015 this.young = builder.young; 016 this.old = builder.old; 017 this.perm = builder.perm; 018 } 019 020 public static Builder builder() { 021 return new Builder(); 022 } 023 024 public static class Builder implements org.apache.commons.lang3.builder.Builder<Heap> { 025 026 private long young = -1; 027 private long old = -1; 028 private long perm = -1; 029 030 public Builder withYoung(long young) { 031 this.young = young; 032 return this; 033 } 034 035 public Builder withOld(long old) { 036 this.old = old; 037 return this; 038 } 039 040 public Builder withPerm(long perm) { 041 this.perm = perm; 042 return this; 043 } 044 045 @Override 046 public Heap build() { 047 return validate(new Heap(this)); 048 } 049 050 private static Heap validate(Heap instance) { 051 checkMin(instance.perm, 0, "perm"); 052 checkMin(instance.old, 0, "old"); 053 checkMin(instance.young, 0, "young"); 054 return instance; 055 } 056 } 057 058 public long getYoung() { 059 return young; 060 } 061 062 public long getOld() { 063 return old; 064 } 065 066 public long getPerm() { 067 return perm; 068 } 069 070}