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, byte[]... values )
59      {
60          return new DefaultAttribute( name, values );
61      }
62  
63      
64      @Override
65      public Attribute newAttribute( String name, String... values )
66      {
67          return new DefaultAttribute( name, values );
68      }
69      
70  
71      @Override
72      public Attribute newAttribute( String name, Value<?>... values )
73      {
74          return new DefaultAttribute( name, values );
75      }
76  
77  
78      @Override
79      public DeleteRequest newDeleteRequest( Dn dn )
80      {
81          return new DeleteRequestImpl()
82              .setName( dn );
83      }
84  
85  
86      @Override
87      public Dn newDn( String dn )
88      {
89          try
90          {
91              return new Dn( dn );
92          }
93          catch ( LdapInvalidDnException e )
94          {
95              throw new LdapRuntimeException( e );
96          }
97      }
98  
99  
100     @Override
101     public Entry newEntry( String dn )
102     {
103         return newEntry( newDn( dn ) );
104     }
105 
106 
107     @Override
108     public Entry newEntry( Dn dn )
109     {
110         return new DefaultEntry( dn );
111     }
112 
113 
114     @Override
115     public ModifyRequest newModifyRequest( String dn )
116     {
117         return newModifyRequest( newDn( dn ) );
118     }
119 
120 
121     @Override
122     public ModifyRequest newModifyRequest( Dn dn )
123     {
124         return new ModifyRequestImpl().setName( dn );
125     }
126 
127 
128     @Override
129     public SearchRequest newSearchRequest( String baseDn, FilterBuilder filter,
130         SearchScope scope )
131     {
132         return newSearchRequest( newDn( baseDn ), filter.toString(), scope );
133     }
134 
135 
136     @Override
137     public SearchRequest newSearchRequest( String baseDn, String filter,
138         SearchScope scope )
139     {
140         return newSearchRequest( newDn( baseDn ), filter, scope );
141     }
142 
143 
144     @Override
145     public SearchRequest newSearchRequest( Dn baseDn, FilterBuilder filter,
146         SearchScope scope )
147     {
148         return newSearchRequest( baseDn, filter.toString(), scope, ( String[] ) null );
149     }
150 
151 
152     @Override
153     public SearchRequest newSearchRequest( Dn baseDn, String filter,
154         SearchScope scope )
155     {
156         return newSearchRequest( baseDn, filter, scope, ( String[] ) null );
157     }
158 
159 
160     @Override
161     public SearchRequest newSearchRequest( String baseDn, FilterBuilder filter,
162         SearchScope scope, String... attributes )
163     {
164         return newSearchRequest( newDn( baseDn ), filter.toString(), scope, attributes );
165     }
166 
167 
168     @Override
169     public SearchRequest newSearchRequest( String baseDn, String filter,
170         SearchScope scope, String... attributes )
171     {
172         return newSearchRequest( newDn( baseDn ), filter, scope, attributes );
173     }
174 
175 
176     @Override
177     public SearchRequest newSearchRequest( Dn baseDn, FilterBuilder filter,
178         SearchScope scope, String... attributes )
179     {
180         return newSearchRequest( baseDn, filter.toString(), scope, attributes );
181     }
182 
183 
184     @Override
185     public SearchRequest newSearchRequest( Dn baseDn, String filter,
186         SearchScope scope, String... attributes )
187     {
188         SearchRequest searchRequest = null;
189         try
190         {
191             searchRequest = new SearchRequestImpl()
192                 .setBase( baseDn )
193                 .setFilter( filter )
194                 .setScope( scope == null ? SearchScope.OBJECT : scope );
195             if ( attributes != null && attributes.length > 0 )
196             {
197                 searchRequest.addAttributes( attributes );
198             }
199         }
200         catch ( LdapException e )
201         {
202             throw new LdapRuntimeException( e );
203         }
204         return searchRequest;
205     }
206 }