Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  /*
   * Copyright © 2014-2015 Cask Data, Inc.
   *
   * Licensed under the Apache License, Version 2.0 (the "License"); you may not
   * use this file except in compliance with the License. You may obtain a copy of
   * the License at
   *
   * http://www.apache.org/licenses/LICENSE-2.0
   *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
  * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
  * License for the specific language governing permissions and limitations under
  * the License.
  */
 
 package co.cask.cdap.notifications.feeds.service;
 
 
 import java.util.List;

Implementation of co.cask.cdap.notifications.feeds.service.NotificationFeedStore that access MDS directly.
 
 public final class MDSNotificationFeedStore implements NotificationFeedStore {
   private static final Logger LOG = LoggerFactory.getLogger(MDSNotificationFeedStore.class);
 
   // note: these constants should be same as in DefaultStore - this needs refactoring, but currently these pieces
   // dependent
   private static final String NOTIFICATION_FEED_TABLE = "app.meta";
   private static final String TYPE_NOTIFICATION_FEED = "feed";
 
 
   @Inject
   public MDSNotificationFeedStore(TransactionExecutorFactory txExecutorFactoryfinal DatasetFramework dsFramework) {
 
      = Transactional.of(txExecutorFactorynew Supplier<NotificationFeedMds>() {
       @Override
       public NotificationFeedMds get() {
         try {
           Id.DatasetInstance notificationsDatasetInstanceId = Id.DatasetInstance.from(.,
                                                                                       );
           Table mdsTable = DatasetsUtil.getOrCreateDataset(dsFrameworknotificationsDatasetInstanceId"table",
                                                            ..,
                                                            null);
 
           return new NotificationFeedMds(new MetadataStoreDataset(mdsTable));
         } catch (Exception e) {
           .debug("Failed to access app.meta table"e);
           throw Throwables.propagate(e);
         }
       }
     });
   }
 
   @Override
       @Override
       public Id.NotificationFeed apply(NotificationFeedMds inputthrows Exception {
         MDSKey feedKey = getKey(feed.getFeedId());
         Id.NotificationFeed existing = input.feeds.getFirst(feedKeyId.NotificationFeed.class);
         if (existing != null) {
           return existing;
         }
         input.feeds.write(feedKeyfeed);
         return null;
       }
     });
   }
 
   @Override
   public Id.NotificationFeed getNotificationFeed(final String feedId) {
       @Override
       public Id.NotificationFeed apply(NotificationFeedMds inputthrows Exception {
         return input.feeds.getFirst(getKey(feedId), Id.NotificationFeed.class);
       }
     });
  }
  public Id.NotificationFeed deleteNotificationFeed(final String feedId) {
      @Override
      public Id.NotificationFeed apply(NotificationFeedMds inputthrows Exception {
        Id.NotificationFeed existing = input.feeds.getFirst(getKey(feedId), Id.NotificationFeed.class);
        if (existing != null) {
          input.feeds.deleteAll(getKey(feedId));
        }
        return existing;
      }
    });
  }
  public List<Id.NotificationFeedlistNotificationFeeds(final Id.Namespace namespace) {
      @Override
      public List<Id.NotificationFeedapply(NotificationFeedMds inputthrows Exception {
        return input.feeds.list(getKey(namespace.getId()), Id.NotificationFeed.class);
      }
    });
  }
  private MDSKey getKey(String id) {
    return new MDSKey.Builder().add(id).build();
  }
  private static final class NotificationFeedMds implements Iterable<MetadataStoreDataset> {
    private final MetadataStoreDataset feeds;
    private NotificationFeedMds(MetadataStoreDataset metaTable) {
      this. = metaTable;
    }
    @Override
      return Iterators.singletonIterator();
    }
  }
New to GrepCode? Check out our FAQ X