View Javadoc
1   /*
2    * Licensed to the Apache Software Foundation (ASF) under one
3    *  or more contributor license agreements.  See the NOTICE file
4    *  distributed with this work for additional information
5    *  regarding copyright ownership.  The ASF licenses this file
6    *  to you under the Apache License, Version 2.0 (the
7    *  "License"); you may not use this file except in compliance
8    *  with the License.  You may obtain a copy of the License at
9    *
10   *    https://www.apache.org/licenses/LICENSE-2.0
11   *
12   *  Unless required by applicable law or agreed to in writing,
13   *  software distributed under the License is distributed on an
14   *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15   *  KIND, either express or implied.  See the License for the
16   *  specific language governing permissions and limitations
17   *  under the License.
18   *
19   */
20  package org.apache.directory.ldap.client.api.future;
21  
22  
23  import org.apache.directory.api.ldap.model.message.ExtendedRequest;
24  import org.apache.directory.api.ldap.model.message.ExtendedResponse;
25  import org.apache.directory.api.ldap.model.message.Response;
26  import org.apache.directory.ldap.client.api.LdapConnection;
27  
28  
29  /**
30   * A Future to manage ExtendedRequests.
31   *
32   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
33   */
34  public class ExtendedFuture extends MultipleResponseFuture<Response>
35  {
36      /** 
37       * The extendedRequest : we need it to find which request is associated 
38       * with a response, when this response has no name */
39      ExtendedRequest extendedRequest;
40      
41      /**
42       * Creates a new instance of ExtendedFuture.
43       *
44       * @param connection the LDAP connection
45       * @param messageId The associated messageId
46       */
47      public ExtendedFuture( LdapConnection connection, int messageId )
48      {
49          super( connection, messageId );
50      }
51  
52  
53      /**
54       * @return the extendedRequest
55       */
56      public ExtendedRequest getExtendedRequest()
57      {
58          return extendedRequest;
59      }
60  
61  
62      /**
63       * @param extendedRequest the extendedRequest to set
64       */
65      public void setExtendedRequest( ExtendedRequest extendedRequest )
66      {
67          this.extendedRequest = extendedRequest;
68      }
69  
70  
71      /**
72       * Set the associated Response in this Future
73       * 
74       * @param response The response to add into the Future
75       * @throws InterruptedException if the operation has been cancelled by client
76       */
77      public void set( ExtendedResponse response ) throws InterruptedException
78      {
79          if ( response.getResponseName() == null )
80          {
81              // Feed the response with the request's OID 
82              response.setResponseName( extendedRequest.getRequestName() );
83          }
84          
85          queue.add( response );
86      }
87  
88  
89      /**
90       * {@inheritDoc}
91       */
92      @Override
93      public String toString()
94      {
95          StringBuilder sb = new StringBuilder();
96  
97          sb.append( "ExtendedFuture" ).append( super.toString() );
98  
99          return sb.toString();
100     }
101 }