001 /* 002 * Copyright 2014-2015 UnboundID Corp. 003 * All Rights Reserved. 004 */ 005 /* 006 * Copyright (C) 2015 UnboundID Corp. 007 * 008 * This program is free software; you can redistribute it and/or modify 009 * it under the terms of the GNU General Public License (GPLv2 only) 010 * or the terms of the GNU Lesser General Public License (LGPLv2.1 only) 011 * as published by the Free Software Foundation. 012 * 013 * This program is distributed in the hope that it will be useful, 014 * but WITHOUT ANY WARRANTY; without even the implied warranty of 015 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 016 * GNU General Public License for more details. 017 * 018 * You should have received a copy of the GNU General Public License 019 * along with this program; if not, see <http://www.gnu.org/licenses>. 020 */ 021 package com.unboundid.ldap.sdk.unboundidds.extensions; 022 023 024 025 import com.unboundid.asn1.ASN1Element; 026 import com.unboundid.asn1.ASN1OctetString; 027 import com.unboundid.ldap.sdk.LDAPException; 028 import com.unboundid.ldap.sdk.ResultCode; 029 import com.unboundid.util.Debug; 030 import com.unboundid.util.NotMutable; 031 import com.unboundid.util.StaticUtils; 032 import com.unboundid.util.ThreadSafety; 033 import com.unboundid.util.ThreadSafetyLevel; 034 import com.unboundid.util.Validator; 035 036 import static com.unboundid.ldap.sdk.unboundidds.extensions.ExtOpMessages.*; 037 038 039 040 /** 041 * <BLOCKQUOTE> 042 * <B>NOTE:</B> This class is part of the Commercial Edition of the UnboundID 043 * LDAP SDK for Java. It is not available for use in applications that 044 * include only the Standard Edition of the LDAP SDK, and is not supported for 045 * use in conjunction with non-UnboundID products. 046 * </BLOCKQUOTE> 047 * This class provides an implementation of a get changelog batch change 048 * selection criteria value that indicates that the server should only return 049 * changes that are associated with a specified notification destination, as 050 * specified by the entryUUID for the notification destination to target. 051 */ 052 @NotMutable() 053 @ThreadSafety(level=ThreadSafetyLevel.COMPLETELY_THREADSAFE) 054 public final class NotificationDestinationChangeSelectionCriteria 055 extends ChangelogBatchChangeSelectionCriteria 056 { 057 /** 058 * The inner BER type that should be used for encoded elements that represent 059 * a notification destination get changelog batch selection criteria value. 060 */ 061 static final byte TYPE_SELECTION_CRITERIA_NOTIFICATION_DESTINATION = 062 (byte) 0x84; 063 064 065 066 // The entryUUID for the for the notification destination to target. 067 private final String destinationEntryUUID; 068 069 070 071 /** 072 * Creates a new notification destination change selection criteria value with 073 * the specified destination entryUUID. 074 * 075 * @param destinationEntryUUID The entryUUID for the notification 076 * destination to target. It must not be 077 * {@code null}. 078 */ 079 public NotificationDestinationChangeSelectionCriteria( 080 final String destinationEntryUUID) 081 { 082 Validator.ensureNotNull(destinationEntryUUID); 083 084 this.destinationEntryUUID = destinationEntryUUID; 085 } 086 087 088 089 /** 090 * Decodes the provided ASN.1 element, which is the inner element of a 091 * changelog batch change selection criteria element, as an all attributes 092 * change selection criteria value. 093 * 094 * @param innerElement The inner element of a changelog batch change 095 * selection criteria element to be decoded. 096 * 097 * @return The decoded all attributes change selection criteria value. 098 * 099 * @throws LDAPException If a problem is encountered while trying to decode 100 * the provided element as the inner element of an all 101 * attributes change selection criteria value. 102 */ 103 static NotificationDestinationChangeSelectionCriteria decodeInnerElement( 104 final ASN1Element innerElement) 105 throws LDAPException 106 { 107 try 108 { 109 return new NotificationDestinationChangeSelectionCriteria( 110 ASN1OctetString.decodeAsOctetString(innerElement).stringValue()); 111 } 112 catch (final Exception e) 113 { 114 Debug.debugException(e); 115 throw new LDAPException(ResultCode.DECODING_ERROR, 116 ERR_NOT_DEST_CHANGE_SELECTION_CRITERIA_DECODE_ERROR.get( 117 StaticUtils.getExceptionMessage(e)), 118 e); 119 } 120 } 121 122 123 124 /** 125 * Retrieves the entryUUID for the target notification destination. 126 * 127 * @return The entryUUID for the target notification destination. 128 */ 129 public String getDestinationEntryUUID() 130 { 131 return destinationEntryUUID; 132 } 133 134 135 136 /** 137 * {@inheritDoc} 138 */ 139 @Override() 140 public ASN1Element encodeInnerElement() 141 { 142 return new ASN1OctetString(TYPE_SELECTION_CRITERIA_NOTIFICATION_DESTINATION, 143 destinationEntryUUID); 144 } 145 146 147 148 /** 149 * {@inheritDoc} 150 */ 151 @Override() 152 public void toString(final StringBuilder buffer) 153 { 154 buffer.append("NotificationDestinationChangeSelectionCriteria(" + 155 "destinationEntryUUID='"); 156 buffer.append(destinationEntryUUID); 157 buffer.append("')"); 158 } 159 }