View Javadoc
1   /*
2    * #%L
3    * EUGene :: EUGene
4    * %%
5    * Copyright (C) 2004 - 2010 CodeLutin
6    * %%
7    * This program is free software: you can redistribute it and/or modify
8    * it under the terms of the GNU Lesser General Public License as 
9    * published by the Free Software Foundation, either version 3 of the 
10   * License, or (at your option) any later version.
11   * 
12   * This program is distributed in the hope that it will be useful,
13   * but WITHOUT ANY WARRANTY; without even the implied warranty of
14   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
15   * GNU General Lesser Public License for more details.
16   * 
17   * You should have received a copy of the GNU General Lesser Public 
18   * License along with this program.  If not, see
19   * <http://www.gnu.org/licenses/lgpl-3.0.html>.
20   * #L%
21   */
22  
23  package org.nuiton.eugene.models.object.xml;
24  
25  import com.google.common.collect.ImmutableSet;
26  import com.google.common.collect.Sets;
27  import org.nuiton.eugene.models.object.ObjectModelClassifier;
28  import org.nuiton.eugene.models.object.ObjectModelInterface;
29  import org.nuiton.eugene.models.object.ObjectModelJavaModifier;
30  import org.nuiton.eugene.models.object.ObjectModelModifier;
31  
32  import java.util.Iterator;
33  import java.util.Set;
34  
35  /**
36   * ObjectModelInterfaceImpl.java
37   *
38   * Created: 14 janv. 2004
39   *
40   * @author Cédric Pineau - pineau@codelutin.com
41   */
42  public class ObjectModelInterfaceImpl extends ObjectModelClassifierImpl implements ObjectModelInterface {
43  
44      private static Set<ObjectModelModifier> authorizedModifiers;
45  
46      @Override
47      protected Set<ObjectModelModifier> getAuthorizedModifiers() {
48          if (authorizedModifiers == null) {
49              // http://docs.oracle.com/javase/specs/jls/se7/html/jls-9.html#jls-9.1.1
50              // public protected private abstract static strictfp
51              Set<ObjectModelModifier> modifiers = Sets.newHashSet(
52                      (ObjectModelModifier) ObjectModelJavaModifier.ABSTRACT, // Force cast because of generics limitation
53                      ObjectModelJavaModifier.STATIC,
54                      ObjectModelJavaModifier.STRICTFP);
55              modifiers.addAll(ObjectModelJavaModifier.visibilityModifiers);
56              authorizedModifiers = ImmutableSet.copyOf(modifiers);
57          }
58          return authorizedModifiers;
59      }
60  
61      @Override
62      public String toString() {
63          StringBuffer result = new StringBuffer();
64          result.append("interface ").append(getQualifiedName()).append(" ");
65          result.append("extends ");
66          for (Iterator<?> i = getInterfaces().iterator(); i.hasNext(); ) {
67              result.append(((ObjectModelClassifier) i.next()).getName());
68              if (i.hasNext()) {
69                  result.append(", ");
70              }
71          }
72          return result.toString();
73      }
74  }