All Downloads are FREE. Search and download functionalities are using the official Maven repository.

com.amazonaws.services.s3.model.BucketNotificationConfiguration Maven / Gradle / Ivy

Go to download

The AWS Java SDK for Amazon S3 module holds the client classes that are used for communicating with Amazon Simple Storage Service

The newest version!
/*
 * Copyright 2010-2024 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.amazonaws.util.json.Jackson;
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 configurations = null; private EventBridgeConfiguration eventBridgeConfiguration; /** *

* 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(); addConfiguration(name, notificationConfiguration); } /** * Sets the given notification configurations and returns this object. * * @param notificationConfiguration * the notification configurations to set * @return The updated {@link BucketNotificationConfiguration} object. */ public BucketNotificationConfiguration withNotificationConfiguration( Map notificationConfiguration) { configurations.clear(); configurations.putAll(notificationConfiguration); return this; } /** * Adds the given notification configuration to the * {@link BucketNotificationConfiguration} object * * @param name * the name of the configuration * @param notificationConfiguration * the notification configuration for the Amazon S3 bucket. * @return The updated {@link BucketNotificationConfiguration} object. */ public BucketNotificationConfiguration addConfiguration(String name, NotificationConfiguration notificationConfiguration) { configurations.put(name, notificationConfiguration); return this; } /** * Returns all the notification configurations associated with the Amazon S3 * bucket. */ public Map getConfigurations() { return configurations; } /** * Sets the given notification configurations in this * {@link BucketNotificationConfiguration} object. * * @param configurations * the notification configurations to set */ public void setConfigurations( Map configurations) { this.configurations = configurations; } /** * Returns the notification configuration for the given name. * * @param name * the name of the notification configuration * @return {@link NotificationConfiguration} associated with the given name. */ public NotificationConfiguration getConfigurationByName(String name) { return configurations.get(name); } /** *

* 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) */ public BucketNotificationConfiguration( Collection topicConfigurations ) { this.configurations = new HashMap(); if (topicConfigurations != null){ for(TopicConfiguration config : topicConfigurations) { addConfiguration(UUID.randomUUID().toString(), config); } } } /** *

* 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. *

* * @param topicConfigurations * A set of topic configurations. * * @return The updated {@link BucketNotificationConfiguration} object, * enabling additional method calls to be chained together. * * @deprecated * @see BucketNotificationConfiguration#withNotificationConfiguration(Map) */ public BucketNotificationConfiguration withTopicConfigurations( TopicConfiguration... topicConfigurations ) { setTopicConfigurations(Arrays.asList(topicConfigurations)); return this; } /** *

* Sets the {@link BucketNotificationConfiguration.TopicConfiguration}. *

*

* Calling this method will overwrite any * previously set TopicConfigurations for this object. *

* * @param topicConfigurations * A collection of topic configurations. * * @deprecated * @see BucketNotificationConfiguration#setConfigurations(Map) */ public void setTopicConfigurations( Collection topicConfigurations ) { this.configurations.clear(); if (topicConfigurations != null) { for (TopicConfiguration topicConfiguration : topicConfigurations) { addConfiguration(UUID.randomUUID().toString(), topicConfiguration); } } } /** *

* 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 of TopicConfiguration objects contained in * this object. May return an empty list. */ public List getTopicConfigurations() { List topicConfigs = new ArrayList(); for (Map.Entry entry : configurations .entrySet()) { if (entry.getValue() instanceof TopicConfiguration) { topicConfigs.add((TopicConfiguration) entry.getValue()); } } return topicConfigs; } /** * Enables delivery of all bucket events to Amazon EventBridge. */ public EventBridgeConfiguration getEventBridgeConfiguration() { return eventBridgeConfiguration; } /** * Enables delivery of all bucket events to Amazon EventBridge. */ public void setEventBridgeConfiguration(EventBridgeConfiguration eventBridgeConfiguration) { this.eventBridgeConfiguration = eventBridgeConfiguration; } /** * Enables delivery of all bucket events to Amazon EventBridge. */ public BucketNotificationConfiguration withEventBridgeConfiguration(EventBridgeConfiguration eventBridgeConfiguration) { this.eventBridgeConfiguration = eventBridgeConfiguration; return this; } @Override public String toString() { return Jackson.toJsonString(this.getConfigurations()); } /** *

* 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. */ public String getEvent() { Set events = getEvents(); String[] eventArray = events.toArray(new String[events.size()]); return eventArray[0]; } @Override public String toString() { return Jackson.toJsonString(this); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy