Details
diff --git a/analytics/src/main/java/com/ning/billing/analytics/api/user/DefaultAnalyticsUserApi.java b/analytics/src/main/java/com/ning/billing/analytics/api/user/DefaultAnalyticsUserApi.java
index 840f483..5ad1b4c 100644
--- a/analytics/src/main/java/com/ning/billing/analytics/api/user/DefaultAnalyticsUserApi.java
+++ b/analytics/src/main/java/com/ning/billing/analytics/api/user/DefaultAnalyticsUserApi.java
@@ -58,6 +58,8 @@ import com.ning.billing.util.callcontext.TenantContext;
import com.ning.billing.util.dao.ObjectType;
import com.ning.billing.util.svcapi.entitlement.EntitlementInternalApi;
import com.ning.billing.util.svcapi.tag.TagInternalApi;
+import com.ning.billing.util.tag.Tag;
+import com.ning.billing.util.tag.TagDefinition;
import com.google.common.base.Function;
import com.google.common.collect.Collections2;
@@ -234,11 +236,21 @@ public class DefaultAnalyticsUserApi implements AnalyticsUserApi {
private void updateTags(final Account account, final InternalCallContext internalCallContext) {
// Find the current state of tags from util
- final Collection<String> utilTags = Collections2.transform(tagInternalApi.getTags(account.getId(), ObjectType.ACCOUNT, internalCallContext).keySet(),
- new Function<String, String>() {
+ final List<TagDefinition> tagDefinitions = tagInternalApi.getTagDefinitions(internalCallContext);
+ final Collection<String> utilTags = Collections2.transform(tagInternalApi.getTags(account.getId(), ObjectType.ACCOUNT, internalCallContext).values(),
+ new Function<Tag, String>() {
@Override
- public String apply(@Nullable final String input) {
- return input;
+ public String apply(@Nullable final Tag input) {
+ if (input == null) {
+ return "";
+ }
+
+ for (final TagDefinition tagDefinition : tagDefinitions) {
+ if (tagDefinition.getId().equals(input.getTagDefinitionId())) {
+ return tagDefinition.getName();
+ }
+ }
+ return "";
}
});
diff --git a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestAnalytics.java b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestAnalytics.java
index 78e2d55..8be18d4 100644
--- a/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestAnalytics.java
+++ b/beatrix/src/test/java/com/ning/billing/beatrix/integration/TestAnalytics.java
@@ -137,6 +137,21 @@ public class TestAnalytics extends TestIntegrationBase {
}
@Test(groups = "slow")
+ public void testVerifyRefresh() throws Exception {
+ // Create a tag
+ final TagDefinition tagDefinition = tagUserApi.create(UUID.randomUUID().toString().substring(0, 10), UUID.randomUUID().toString(), callContext);
+ tagUserApi.addTag(account.getId(), ObjectType.ACCOUNT, tagDefinition.getId(), callContext);
+
+ // Refresh
+ analyticsUserApi.rebuildAnalyticsForAccount(account, callContext);
+
+ // Check the tag
+ final List<BusinessAccountTag> tagsForAccount = analyticsUserApi.getTagsForAccount(account.getExternalKey(), callContext);
+ Assert.assertEquals(tagsForAccount.size(), 1);
+ Assert.assertEquals(tagsForAccount.get(0).getName(), tagDefinition.getName());
+ }
+
+ @Test(groups = "slow")
public void testCreateAndCancelSubscription() throws Exception {
// Create a bundle
diff --git a/util/src/main/java/com/ning/billing/util/svcapi/tag/DefaultTagInternalApi.java b/util/src/main/java/com/ning/billing/util/svcapi/tag/DefaultTagInternalApi.java
index 5a8eae8..cf7b190 100644
--- a/util/src/main/java/com/ning/billing/util/svcapi/tag/DefaultTagInternalApi.java
+++ b/util/src/main/java/com/ning/billing/util/svcapi/tag/DefaultTagInternalApi.java
@@ -15,6 +15,7 @@
*/
package com.ning.billing.util.svcapi.tag;
+import java.util.List;
import java.util.Map;
import java.util.UUID;
@@ -25,15 +26,25 @@ import com.ning.billing.util.callcontext.InternalCallContext;
import com.ning.billing.util.callcontext.InternalTenantContext;
import com.ning.billing.util.dao.ObjectType;
import com.ning.billing.util.tag.Tag;
+import com.ning.billing.util.tag.TagDefinition;
import com.ning.billing.util.tag.dao.TagDao;
+import com.ning.billing.util.tag.dao.TagDefinitionDao;
public class DefaultTagInternalApi implements TagInternalApi {
private final TagDao tagDao;
+ private final TagDefinitionDao tagDefinitionDao;
@Inject
- public DefaultTagInternalApi(final TagDao tagDao) {
+ public DefaultTagInternalApi(final TagDao tagDao,
+ final TagDefinitionDao tagDefinitionDao) {
this.tagDao = tagDao;
+ this.tagDefinitionDao = tagDefinitionDao;
+ }
+
+ @Override
+ public List<TagDefinition> getTagDefinitions(final InternalTenantContext context) {
+ return tagDefinitionDao.getTagDefinitions(context);
}
@Override
diff --git a/util/src/main/java/com/ning/billing/util/svcapi/tag/TagInternalApi.java b/util/src/main/java/com/ning/billing/util/svcapi/tag/TagInternalApi.java
index 83160df..6f1b670 100644
--- a/util/src/main/java/com/ning/billing/util/svcapi/tag/TagInternalApi.java
+++ b/util/src/main/java/com/ning/billing/util/svcapi/tag/TagInternalApi.java
@@ -13,8 +13,10 @@
* License for the specific language governing permissions and limitations
* under the License.
*/
+
package com.ning.billing.util.svcapi.tag;
+import java.util.List;
import java.util.Map;
import java.util.UUID;
@@ -23,9 +25,20 @@ import com.ning.billing.util.callcontext.InternalCallContext;
import com.ning.billing.util.callcontext.InternalTenantContext;
import com.ning.billing.util.dao.ObjectType;
import com.ning.billing.util.tag.Tag;
+import com.ning.billing.util.tag.TagDefinition;
public interface TagInternalApi {
+ public List<TagDefinition> getTagDefinitions(InternalTenantContext context);
+
+ /**
+ * Return tags for a given object
+ *
+ * @param objectId the object id
+ * @param objectType the object type
+ * @param context call context
+ * @return mapping tag id -> tag
+ */
public Map<String, Tag> getTags(UUID objectId, ObjectType objectType, InternalTenantContext context);
public void addTag(UUID objectId, ObjectType objectType, UUID tagDefinitionId, InternalCallContext context) throws TagApiException;