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  package org.apache.directory.server.core.integ;
20  
21  
22  import org.apache.directory.server.core.integ.annotations.*;
23  
24  
25  /**
26   * Various utility methods for dealing with annotations all over.
27   *
28   * @author <a href="mailto:dev@directory.apache.org">Apache Directory Project</a>
29   * @version $Rev$, $Date$
30   */
31  public class AnnotationUtils
32  {
33      public static SetupMode getMode( Mode modeAnnotation, SetupMode defaultMode )
34      {
35          if ( modeAnnotation != null && modeAnnotation.value() != null )
36          {
37              return modeAnnotation.value();
38          }
39          else
40          {
41              return defaultMode;
42          }
43      }
44  
45  
46      public static DirectoryServiceFactory newFactory( Factory factoryAnnotation,
47                                                        DirectoryServiceFactory defaultFactory )
48      {
49          DirectoryServiceFactory factory = defaultFactory;
50  
51          if ( factoryAnnotation != null )
52          {
53              try
54              {
55                  factory = ( DirectoryServiceFactory ) factoryAnnotation.getClass().newInstance();
56              }
57              catch ( ClassCastException e )
58              {
59                  throw new RuntimeException( "The specified factory '" +
60                          factoryAnnotation.getClass() + "' does not implement DirectoryServiceFactory", e );
61              }
62              catch ( InstantiationException e )
63              {
64                  throw new RuntimeException( "The specified factory '" +
65                          factoryAnnotation.getClass() + "' does not contain a default constructor", e );
66              }
67              catch ( IllegalAccessException e )
68              {
69                  throw new RuntimeException( "The specified factory '" +
70                          factoryAnnotation.getClass() + "' does not contain a public default constructor", e );
71              }
72          }
73  
74          return factory;
75      }
76  }