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   *     http://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.template;
21  
22  import org.apache.directory.api.ldap.model.entry.Attribute;
23  import org.apache.directory.api.ldap.model.entry.DefaultAttribute;
24  import org.apache.directory.api.ldap.model.entry.DefaultEntry;
25  import org.apache.directory.api.ldap.model.entry.Entry;
26  import org.apache.directory.api.ldap.model.entry.Value;
27  import org.apache.directory.api.ldap.model.exception.LdapException;
28  import org.apache.directory.api.ldap.model.exception.LdapInvalidDnException;
29  import org.apache.directory.api.ldap.model.message.AddRequest;
30  import org.apache.directory.api.ldap.model.message.AddRequestImpl;
31  import org.apache.directory.api.ldap.model.message.DeleteRequest;
32  import org.apache.directory.api.ldap.model.message.DeleteRequestImpl;
33  import org.apache.directory.api.ldap.model.message.ModifyRequest;
34  import org.apache.directory.api.ldap.model.message.ModifyRequestImpl;
35  import org.apache.directory.api.ldap.model.message.SearchRequest;
36  import org.apache.directory.api.ldap.model.message.SearchRequestImpl;
37  import org.apache.directory.api.ldap.model.message.SearchScope;
38  import org.apache.directory.api.ldap.model.name.Dn;
39  import org.apache.directory.ldap.client.api.search.FilterBuilder;
40  import org.apache.directory.ldap.client.template.exception.LdapRuntimeException;
41  
42  
43  /**
44   * The default implementation of {@link ModelFactory}.
45   *
46   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
47   */
48  class ModelFactoryImpl implements ModelFactory
49  {
50      @Override
51      public AddRequest newAddRequest( Entry entry )
52      {
53          return new AddRequestImpl().setEntry( entry );
54      }
55  
56  
57      @Override
58      public Attribute newAttribute( String name )
59      {
60          return new DefaultAttribute( name );
61      }
62  
63  
64      @Override
65      public Attribute newAttribute( String name, byte[]... values )
66      {
67          return new DefaultAttribute( name, values );
68      }
69  
70      
71      @Override
72      public Attribute newAttribute( String name, String... values )
73      {
74          return new DefaultAttribute( name, values );
75      }
76      
77  
78      @Override
79      public Attribute newAttribute( String name, Value<?>... values )
80      {
81          return new DefaultAttribute( name, values );
82      }
83  
84  
85      @Override
86      public DeleteRequest newDeleteRequest( Dn dn )
87      {
88          return new DeleteRequestImpl()
89              .setName( dn );
90      }
91  
92  
93      @Override
94      public Dn newDn( String dn )
95      {
96          try
97          {
98              return new Dn( dn );
99          }
100         catch ( LdapInvalidDnException e )
101         {
102             throw new LdapRuntimeException( e );
103         }
104     }
105 
106 
107     @Override
108     public Entry newEntry( String dn )
109     {
110         return newEntry( newDn( dn ) );
111     }
112 
113 
114     @Override
115     public Entry newEntry( Dn dn )
116     {
117         return new DefaultEntry( dn );
118     }
119 
120 
121     @Override
122     public ModifyRequest newModifyRequest( String dn )
123     {
124         return newModifyRequest( newDn( dn ) );
125     }
126 
127 
128     @Override
129     public ModifyRequest newModifyRequest( Dn dn )
130     {
131         return new ModifyRequestImpl().setName( dn );
132     }
133 
134 
135     @Override
136     public SearchRequest newSearchRequest( String baseDn, FilterBuilder filter,
137         SearchScope scope )
138     {
139         return newSearchRequest( newDn( baseDn ), filter.toString(), scope );
140     }
141 
142 
143     @Override
144     public SearchRequest newSearchRequest( String baseDn, String filter,
145         SearchScope scope )
146     {
147         return newSearchRequest( newDn( baseDn ), filter, scope );
148     }
149 
150 
151     @Override
152     public SearchRequest newSearchRequest( Dn baseDn, FilterBuilder filter,
153         SearchScope scope )
154     {
155         return newSearchRequest( baseDn, filter.toString(), scope, ( String[] ) null );
156     }
157 
158 
159     @Override
160     public SearchRequest newSearchRequest( Dn baseDn, String filter,
161         SearchScope scope )
162     {
163         return newSearchRequest( baseDn, filter, scope, ( String[] ) null );
164     }
165 
166 
167     @Override
168     public SearchRequest newSearchRequest( String baseDn, FilterBuilder filter,
169         SearchScope scope, String... attributes )
170     {
171         return newSearchRequest( newDn( baseDn ), filter.toString(), scope, attributes );
172     }
173 
174 
175     @Override
176     public SearchRequest newSearchRequest( String baseDn, String filter,
177         SearchScope scope, String... attributes )
178     {
179         return newSearchRequest( newDn( baseDn ), filter, scope, attributes );
180     }
181 
182 
183     @Override
184     public SearchRequest newSearchRequest( Dn baseDn, FilterBuilder filter,
185         SearchScope scope, String... attributes )
186     {
187         return newSearchRequest( baseDn, filter.toString(), scope, attributes );
188     }
189 
190 
191     @Override
192     public SearchRequest newSearchRequest( Dn baseDn, String filter,
193         SearchScope scope, String... attributes )
194     {
195         SearchRequest searchRequest = null;
196         try
197         {
198             searchRequest = new SearchRequestImpl()
199                 .setBase( baseDn )
200                 .setFilter( filter )
201                 .setScope( scope == null ? SearchScope.OBJECT : scope );
202             if ( attributes != null && attributes.length > 0 )
203             {
204                 searchRequest.addAttributes( attributes );
205             }
206         }
207         catch ( LdapException e )
208         {
209             throw new LdapRuntimeException( e );
210         }
211         return searchRequest;
212     }
213 }