From 55cba1e0f3373fa69d3b9a66f455ad36ab4b82cf Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Sun, 20 Mar 2016 17:07:26 -0700 Subject: Adding support for Church Community Builder login. Beginning with this change all of the Church Management System integration logic is moving into implementations of the new IntegrationDriver interface. The desired IntegrationDriver can be selected by setting the integrationDriver config to the appropriate class name. This commit is only moving login support. Progress reporting will move in a later commit. --- src/com/p4square/grow/ccb/MonitoredCCBAPI.java | 68 ++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/com/p4square/grow/ccb/MonitoredCCBAPI.java (limited to 'src/com/p4square/grow/ccb/MonitoredCCBAPI.java') diff --git a/src/com/p4square/grow/ccb/MonitoredCCBAPI.java b/src/com/p4square/grow/ccb/MonitoredCCBAPI.java new file mode 100644 index 0000000..6903460 --- /dev/null +++ b/src/com/p4square/grow/ccb/MonitoredCCBAPI.java @@ -0,0 +1,68 @@ +package com.p4square.grow.ccb; + +import com.codahale.metrics.MetricRegistry; +import com.codahale.metrics.Timer; +import com.p4square.ccbapi.CCBAPI; +import com.p4square.ccbapi.model.GetCustomFieldLabelsResponse; +import com.p4square.ccbapi.model.GetIndividualProfilesRequest; +import com.p4square.ccbapi.model.GetIndividualProfilesResponse; + +import java.io.IOException; + +/** + * MonitoredCCBAPI is a CCBAPI decorator which records metrics for each API call. + */ +public class MonitoredCCBAPI implements CCBAPI { + + private final CCBAPI mAPI; + private final MetricRegistry mMetricRegistry; + + public MonitoredCCBAPI(final CCBAPI api, final MetricRegistry metricRegistry) { + if (api == null) { + throw new IllegalArgumentException("api must not be null."); + } + mAPI = api; + + if (metricRegistry == null) { + throw new IllegalArgumentException("metricRegistry must not be null."); + } + mMetricRegistry = metricRegistry; + } + + @Override + public GetCustomFieldLabelsResponse getCustomFieldLabels() throws IOException { + final Timer.Context timer = mMetricRegistry.timer("CCBAPI.getCustomFieldLabels.time").time(); + boolean success = false; + try { + final GetCustomFieldLabelsResponse resp = mAPI.getCustomFieldLabels(); + success = true; + return resp; + } finally { + timer.stop(); + mMetricRegistry.counter("CCBAPI.getCustomFieldLabels.success").inc(success ? 1 : 0); + mMetricRegistry.counter("CCBAPI.getCustomFieldLabels.failure").inc(!success ? 1 : 0); + } + } + + @Override + public GetIndividualProfilesResponse getIndividualProfiles(GetIndividualProfilesRequest request) + throws IOException { + final Timer.Context timer = mMetricRegistry.timer("CCBAPI.getIndividualProfiles").time(); + boolean success = false; + try { + final GetIndividualProfilesResponse resp = mAPI.getIndividualProfiles(request); + mMetricRegistry.counter("CCBAPI.getCustomFieldLabels.count").inc(resp.getIndividuals().size()); + success = true; + return resp; + } finally { + timer.stop(); + mMetricRegistry.counter("CCBAPI.getCustomFieldLabels.success").inc(success ? 1 : 0); + mMetricRegistry.counter("CCBAPI.getCustomFieldLabels.failure").inc(!success ? 1 : 0); + } + } + + @Override + public void close() throws IOException { + mAPI.close(); + } +} -- cgit v1.2.3 From 37c60c6edea56fedfeb4a22467ec85fca5fc8881 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Thu, 7 Apr 2016 18:28:49 -0700 Subject: Adding updateIndividualProfile API to MonitoredCCBAPI --- src/com/p4square/grow/ccb/MonitoredCCBAPI.java | 25 +++++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'src/com/p4square/grow/ccb/MonitoredCCBAPI.java') diff --git a/src/com/p4square/grow/ccb/MonitoredCCBAPI.java b/src/com/p4square/grow/ccb/MonitoredCCBAPI.java index 6903460..1463c77 100644 --- a/src/com/p4square/grow/ccb/MonitoredCCBAPI.java +++ b/src/com/p4square/grow/ccb/MonitoredCCBAPI.java @@ -3,9 +3,7 @@ package com.p4square.grow.ccb; import com.codahale.metrics.MetricRegistry; import com.codahale.metrics.Timer; import com.p4square.ccbapi.CCBAPI; -import com.p4square.ccbapi.model.GetCustomFieldLabelsResponse; -import com.p4square.ccbapi.model.GetIndividualProfilesRequest; -import com.p4square.ccbapi.model.GetIndividualProfilesResponse; +import com.p4square.ccbapi.model.*; import java.io.IOException; @@ -51,13 +49,28 @@ public class MonitoredCCBAPI implements CCBAPI { boolean success = false; try { final GetIndividualProfilesResponse resp = mAPI.getIndividualProfiles(request); - mMetricRegistry.counter("CCBAPI.getCustomFieldLabels.count").inc(resp.getIndividuals().size()); + mMetricRegistry.counter("CCBAPI.getIndividualProfiles.count").inc(resp.getIndividuals().size()); success = true; return resp; } finally { timer.stop(); - mMetricRegistry.counter("CCBAPI.getCustomFieldLabels.success").inc(success ? 1 : 0); - mMetricRegistry.counter("CCBAPI.getCustomFieldLabels.failure").inc(!success ? 1 : 0); + mMetricRegistry.counter("CCBAPI.getIndividualProfiles.success").inc(success ? 1 : 0); + mMetricRegistry.counter("CCBAPI.getIndividualProfiles.failure").inc(!success ? 1 : 0); + } + } + + @Override + public UpdateIndividualProfileResponse updateIndividualProfile(UpdateIndividualProfileRequest request) throws IOException { + final Timer.Context timer = mMetricRegistry.timer("CCBAPI.updateIndividualProfile").time(); + boolean success = false; + try { + final UpdateIndividualProfileResponse resp = mAPI.updateIndividualProfile(request); + success = true; + return resp; + } finally { + timer.stop(); + mMetricRegistry.counter("CCBAPI.updateIndividualProfile.success").inc(success ? 1 : 0); + mMetricRegistry.counter("CCBAPI.updateIndividualProfile.failure").inc(!success ? 1 : 0); } } -- cgit v1.2.3 From 01efa2f05df48cac2f1e22742aa911a7c0abdb25 Mon Sep 17 00:00:00 2001 From: Jesse Morgan Date: Thu, 7 Apr 2016 18:38:50 -0700 Subject: Adding getLookupTable API to MonitoredCCBAPI --- src/com/p4square/grow/ccb/MonitoredCCBAPI.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) (limited to 'src/com/p4square/grow/ccb/MonitoredCCBAPI.java') diff --git a/src/com/p4square/grow/ccb/MonitoredCCBAPI.java b/src/com/p4square/grow/ccb/MonitoredCCBAPI.java index 1463c77..43b6433 100644 --- a/src/com/p4square/grow/ccb/MonitoredCCBAPI.java +++ b/src/com/p4square/grow/ccb/MonitoredCCBAPI.java @@ -42,6 +42,21 @@ public class MonitoredCCBAPI implements CCBAPI { } } + @Override + public GetLookupTableResponse getLookupTable(final GetLookupTableRequest request) throws IOException { + final Timer.Context timer = mMetricRegistry.timer("CCBAPI.getLookupTable.time").time(); + boolean success = false; + try { + final GetLookupTableResponse resp = mAPI.getLookupTable(request); + success = true; + return resp; + } finally { + timer.stop(); + mMetricRegistry.counter("CCBAPI.getLookupTable.success").inc(success ? 1 : 0); + mMetricRegistry.counter("CCBAPI.getLookupTable.failure").inc(!success ? 1 : 0); + } + } + @Override public GetIndividualProfilesResponse getIndividualProfiles(GetIndividualProfilesRequest request) throws IOException { -- cgit v1.2.3