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

com.ibm.cloud.objectstorage.services.s3.model.BucketNotificationConfiguration Maven / Gradle / Ivy

Go to download

The IBM COS Java SDK for Amazon S3 module holds the client classes that are used for communicating with IBM Cloud Object Storage Service

The newest version!
/*
 * Copyright 2010-2023 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.ibm.cloud.objectstorage.services.s3.model;

import com.ibm.cloud.objectstorage.services.s3.AmazonS3;
import com.ibm.cloud.objectstorage.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; //IBM unsupported //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. */ //IBM unsupported // public EventBridgeConfiguration getEventBridgeConfiguration() { // return eventBridgeConfiguration; // } /** * Enables delivery of all bucket events to Amazon EventBridge. */ //IBM unsupported // public void setEventBridgeConfiguration(EventBridgeConfiguration eventBridgeConfiguration) { // this.eventBridgeConfiguration = eventBridgeConfiguration; // } /** * Enables delivery of all bucket events to Amazon EventBridge. */ //IBM unsupported // 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.ibm.cloud.objectstorage.services.s3.model.TopicConfiguration} * instead */ @Deprecated public static class TopicConfiguration extends com.ibm.cloud.objectstorage.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.ibm.cloud.objectstorage.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 - 2025 Weber Informatics LLC | Privacy Policy