View Javadoc

1   package com.atlassian.plugin.schema.impl;
2   
3   import com.atlassian.plugin.DefaultModuleDescriptorFactory;
4   import com.atlassian.plugin.ModuleDescriptor;
5   import com.atlassian.plugin.hostcontainer.HostContainer;
6   import com.atlassian.plugin.schema.descriptor.DescribedModuleDescriptorFactory;
7   import com.atlassian.plugin.schema.spi.DocumentBasedSchema;
8   import com.atlassian.plugin.schema.spi.Schema;
9   import com.atlassian.plugin.util.resource.AlternativeClassLoaderResourceLoader;
10  import com.google.common.collect.ImmutableSet;
11  
12  import java.util.Set;
13  
14  public class DefaultDescribedModuleDescriptorFactory extends DefaultModuleDescriptorFactory implements DescribedModuleDescriptorFactory
15  {
16      public DefaultDescribedModuleDescriptorFactory(final HostContainer hostContainer)
17      {
18          super(hostContainer);
19          addModuleDescriptor("described-module-type", DescribedModuleTypeModuleDescriptor.class);
20      }
21  
22      @Override
23      public final Iterable<String> getModuleDescriptorKeys()
24      {
25          return ImmutableSet.copyOf(getDescriptorClassesMap().keySet());
26      }
27  
28      @Override
29      public final Set<Class<? extends ModuleDescriptor>> getModuleDescriptorClasses()
30      {
31          return ImmutableSet.copyOf(getDescriptorClassesMap().values());
32      }
33  
34      @Override
35      public final Schema getSchema(final String type)
36      {
37          if (!getDescriptorClassesMap().containsKey(type))
38          {
39              return null;
40          }
41  
42          DocumentBasedSchema.DynamicSchemaBuilder builder = DocumentBasedSchema
43                  .builder(type)
44                  .setResourceLoader(new AlternativeClassLoaderResourceLoader(this.getClass()));
45          return builder.validate() ? builder.build() : null;
46      }
47  }