/* * Copyright 2010-2019 Amazon.com, Inc. or its affiliates. All Rights Reserved. * * Portions copyright 2006-2009 James Murty. Please see LICENSE.txt * for applicable license terms and NOTICE.txt for applicable notices. * * Licensed under the Apache License, Version 2.0 (the "License"). * You may not use this file except in compliance with the License. * A copy of the License is located at * * http://aws.amazon.com/apache2.0 * * or in the "license" file accompanying this file. This file 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 com.amazonaws.services.s3.model; import com.amazonaws.services.s3.AmazonS3; import com.google.gson.Gson; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Set; import java.util.UUID; /** *
* Represents a bucket's notification configuration. The notification * configuration is used to control reception of notifications for specific * events for Amazon S3 buckets. *
** Using SNS as the delivery service, the notification configuration of an * Amazon S3 bucket provides near real-time notifications of events the user is * interested in. Notification is turned on by enabling configuration on a * bucket, specifying the events and the SNS topic. This configuration can only * be turned on by the bucket owner. *
** If a notification configuration already exists for the specified bucket, the * new notification configuration will replace the existing notification * configuration. To remove a notification configuration, pass an an empty * configuration directly to * {@link AmazonS3#setBucketNotificationConfiguration(String,BucketNotificationConfiguration)} * . *
** Note: Currently buckets may only have a single event and topic configuration. *
* * @see AmazonS3#getBucketNotificationConfiguration(String) * @see AmazonS3#setBucketNotificationConfiguration(String, * BucketNotificationConfiguration) */ public class BucketNotificationConfiguration implements Serializable { private Map* Creates a new bucket notification configuration. By default, the newly * created configuration is empty. *
** Passing the new configuration directly to * {@link AmazonS3#setBucketNotificationConfiguration(String,BucketNotificationConfiguration)} * will remove any existing bucket notification configuration. *
* * @see BucketNotificationConfiguration#BucketNotificationConfiguration(Collection) */ public BucketNotificationConfiguration() { this.configurations = new HashMap* Creates a new bucket notification configuration with the given * configuration. *
* * @param name the name for the configuration * @param notificationConfiguration the notification configuration for the * Amazon S3 bucket. */ public BucketNotificationConfiguration(String name, NotificationConfiguration notificationConfiguration) { this.configurations = new HashMap* Removes the notification configuration for the given name in the * {@link BucketNotificationConfiguration} object. *
** Pass the updated {@link BucketNotificationConfiguration} to * {@link AmazonS3#setBucketNotificationConfiguration(String,BucketNotificationConfiguration)} * to update the configuration in Amazon S3 for the bucket. *
* * @param name the name of the notification configuration * @return {@link NotificationConfiguration} associated with the given name. */ public NotificationConfiguration removeConfiguration(String name) { return configurations.remove(name); } /** *
* Creates a new bucket notification configuration containing the specified
* TopicConfigurations
.
*
* Passing the new configuration directly to * {@link AmazonS3#setBucketNotificationConfiguration(String,BucketNotificationConfiguration)} * will set the bucket's notification configuration and overwrite any * existing configuration. *
* * @deprecated * @see BucketNotificationConfiguration#BucketNotificationConfiguration(String, * NotificationConfiguration) */ @Deprecated public BucketNotificationConfiguration(Collection
* Sets the {@link BucketNotificationConfiguration.TopicConfiguration}
* TopicConfigurations
and returns this object, enabling
* additional method calls to be chained together.
*
* Calling this method will overwrite any previously set
* TopicConfigurations
for this object.
*
* Sets the {@link BucketNotificationConfiguration.TopicConfiguration}. *
*
* Calling this method will overwrite any previously set
* TopicConfigurations
for this object.
*
* Gets the list of
* {@link BucketNotificationConfiguration.TopicConfiguration} objects
* contained in this object. This method may return an empty list if no
* TopicConfiguration
objects are present.
*
* This method is deprecated and will not return all the notification * configuration associated with the Amazon S3 bucket. To retrieve all the * configuration use @see * BucketNotificationConfiguration#getConfigurations() *
* * @deprecated * @see BucketNotificationConfiguration#getConfigurations() * @return The list ofTopicConfiguration
objects contained in
* this object. May return an empty list.
*/
@Deprecated
public List* Represents the SNS topic to publish event notification to. Notifications * are published to the topic only if the specified event is triggered. *
* * @deprecated Use * {@link com.amazonaws.services.s3.model.TopicConfiguration} * instead */ @Deprecated public static class TopicConfiguration extends com.amazonaws.services.s3.model.TopicConfiguration { /** ** Creates a new * {@link BucketNotificationConfiguration.TopicConfiguration}. *
* * @param topic The SNS Topic ARN (Amazon Resource Name) to publish * notifications to. * @param event The event that must occur to trigger the notification * publication. */ public TopicConfiguration(final String topic, final String event) { super(topic, event); } /** ** Gets the topic ARN (Amazon Resource Name) for the topic to publish * events to. *
* * @return The topic ARN for the topic to publish events to. */ public String getTopic() { return getTopicARN(); } /** ** Gets the first event that is configured in the list of events. *
* * @deprecated use * {@link com.amazonaws.services.s3.model.TopicConfiguration#getEvents()} * instead. */ @Deprecated public String getEvent() { final Set