Skip to content

Commit

Permalink
FORGE-2240: from-archetype-catalog does not show if no catalogs are r…
Browse files Browse the repository at this point in the history
…egistered
  • Loading branch information
gastaldi committed Feb 19, 2015
1 parent e2cfbb0 commit 8b70d4d
Show file tree
Hide file tree
Showing 5 changed files with 275 additions and 186 deletions.
Expand Up @@ -16,33 +16,39 @@
*/
public interface ArchetypeCatalogFactoryRegistry
{
/**
* Registers a new {@link ArchetypeCatalogFactory} object
*/
void addArchetypeCatalogFactory(ArchetypeCatalogFactory factory);

/**
* Registers a new {@link ArchetypeCatalogFactory} object
*/
void addArchetypeCatalogFactory(String name, URL catalogURL);

/**
* Registers a new {@link ArchetypeCatalogFactory} object
*/
void addArchetypeCatalogFactory(String name, URL catalogURL, String defaultRepositoryName);

/**
* @return the registered {@link ArchetypeCatalogFactory} objects
*/
Iterable<ArchetypeCatalogFactory> getArchetypeCatalogFactories();

/**
* @return an {@link ArchetypeCatalogFactory} given its name. Null if not found.
*/
ArchetypeCatalogFactory getArchetypeCatalogFactory(String name);

/**
* Remove an {@link ArchetypeCatalogFactory} given its name.
*/
void removeArchetypeCatalogFactory(String name);
/**
* Registers a new {@link ArchetypeCatalogFactory} object
*/
void addArchetypeCatalogFactory(ArchetypeCatalogFactory factory);

/**
* Registers a new {@link ArchetypeCatalogFactory} object
*/
void addArchetypeCatalogFactory(String name, URL catalogURL);

/**
* Registers a new {@link ArchetypeCatalogFactory} object
*/
void addArchetypeCatalogFactory(String name, URL catalogURL, String defaultRepositoryName);

/**
* @return the registered {@link ArchetypeCatalogFactory} objects
*/
Iterable<ArchetypeCatalogFactory> getArchetypeCatalogFactories();

/**
* @return an {@link ArchetypeCatalogFactory} given its name. Null if not
* found.
*/
ArchetypeCatalogFactory getArchetypeCatalogFactory(String name);

/**
* Remove an {@link ArchetypeCatalogFactory} given its name.
*/
void removeArchetypeCatalogFactory(String name);

/**
* Return if there are any {@link ArchetypeCatalogFactory} registered
*/
boolean hasArchetypeCatalogFactories();
}
Expand Up @@ -9,13 +9,17 @@

import java.util.Arrays;

import javax.inject.Inject;

import org.jboss.forge.addon.maven.archetype.ArchetypeCatalogFactoryRegistry;
import org.jboss.forge.addon.maven.projects.MavenFacet;
import org.jboss.forge.addon.maven.projects.archetype.ui.ArchetypeCatalogSelectionWizardStep;
import org.jboss.forge.addon.parser.java.facets.JavaSourceFacet;
import org.jboss.forge.addon.projects.AbstractProjectType;
import org.jboss.forge.addon.projects.ProjectFacet;
import org.jboss.forge.addon.projects.ProjectType;
import org.jboss.forge.addon.projects.facets.MetadataFacet;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.wizard.UIWizardStep;

/**
Expand All @@ -26,35 +30,45 @@
public class MavenArchetypeCatalogProjectType extends AbstractProjectType
{

@Override
public String getType()
{
return "From Archetype Catalog";
}

@Override
public Class<? extends UIWizardStep> getSetupFlow()
{
return ArchetypeCatalogSelectionWizardStep.class;
}

@Override
public Iterable<Class<? extends ProjectFacet>> getRequiredFacets()
{
return Arrays
.<Class<? extends ProjectFacet>> asList(MetadataFacet.class, JavaSourceFacet.class, MavenFacet.class);
}

@Override
public int priority()
{
return 10001;
}

@Override
public String toString()
{
return "from-archetype-catalog";
}
@Inject
private ArchetypeCatalogFactoryRegistry catalogRegistry;

@Override
public String getType()
{
return "From Archetype Catalog";
}

@Override
public Class<? extends UIWizardStep> getSetupFlow()
{
return ArchetypeCatalogSelectionWizardStep.class;
}

@Override
public Iterable<Class<? extends ProjectFacet>> getRequiredFacets()
{
return Arrays
.<Class<? extends ProjectFacet>> asList(MetadataFacet.class, JavaSourceFacet.class,
MavenFacet.class);
}

@Override
public int priority()
{
return 10001;
}

@Override
public String toString()
{
return "from-archetype-catalog";
}

@Override
public boolean isEnabled(UIContext context)
{
return catalogRegistry.hasArchetypeCatalogFactories();
}

}
Expand Up @@ -36,98 +36,104 @@
@Singleton
public class ArchetypeCatalogFactoryRegistryImpl implements ArchetypeCatalogFactoryRegistry
{
private Map<String, ArchetypeCatalogFactory> factories = new TreeMap<>();
private final Logger log = Logger.getLogger(getClass().getName());

@Inject
private Imported<ArchetypeCatalogFactory> services;

@Inject
@Subset("maven.archetypes")
private Configuration archetypeConfiguration;

/**
* Registers the {@link ArchetypeCatalogFactory} objects from the user {@link Configuration}
*/
@PostConstruct
void initializeDefaultFactories()
{
Iterator<?> keys = archetypeConfiguration.getKeys();
while (keys.hasNext())
{
String name = keys.next().toString();
if (!name.isEmpty())
{
String url = archetypeConfiguration.getString(name);
try
private Map<String, ArchetypeCatalogFactory> factories = new TreeMap<>();
private final Logger log = Logger.getLogger(getClass().getName());

@Inject
private Imported<ArchetypeCatalogFactory> services;

@Inject
@Subset("maven.archetypes")
private Configuration archetypeConfiguration;

/**
* Registers the {@link ArchetypeCatalogFactory} objects from the user
* {@link Configuration}
*/
@PostConstruct
void initializeDefaultFactories()
{
Iterator<?> keys = archetypeConfiguration.getKeys();
while (keys.hasNext())
{
String name = keys.next().toString();
if (!name.isEmpty())
{
addArchetypeCatalogFactory(name, new URL(url));
String url = archetypeConfiguration.getString(name);
try
{
addArchetypeCatalogFactory(name, new URL(url));
} catch (MalformedURLException e)
{
log.log(Level.SEVERE, "Malformed URL for " + name, e);
}
}
catch (MalformedURLException e)
}
}

@PreDestroy
void destroy()
{
this.factories.clear();
}

@Override
public void addArchetypeCatalogFactory(String name, URL catalogURL)
{
addArchetypeCatalogFactory(new URLArchetypeCatalogFactory(name, catalogURL));
}

@Override
public void addArchetypeCatalogFactory(String name, URL catalogURL, String defaultRepositoryName)
{
addArchetypeCatalogFactory(new URLArchetypeCatalogFactory(name, catalogURL, defaultRepositoryName));
}

@Override
public void addArchetypeCatalogFactory(ArchetypeCatalogFactory factory)
{
Assert.notNull(factory, "Cannot add a null Archetype Catalog Factory");
Assert.notNull(factory.getName(), "Archetype Catalog Factory must have a name");
factories.put(factory.getName(), factory);
}

@Override
public Iterable<ArchetypeCatalogFactory> getArchetypeCatalogFactories()
{
Set<ArchetypeCatalogFactory> result = new LinkedHashSet<>();
for (ArchetypeCatalogFactory factory : services)
{
result.add(factory);
}
result.addAll(factories.values());
return Collections.unmodifiableCollection(result);
}

@Override
public ArchetypeCatalogFactory getArchetypeCatalogFactory(String name)
{
ArchetypeCatalogFactory result = null;
if (name != null)
{
for (ArchetypeCatalogFactory factory : getArchetypeCatalogFactories())
{
log.log(Level.SEVERE, "Malformed URL for " + name, e);
if (name.equals(factory.getName()))
return factory;
}
}
}
}

@PreDestroy
void destroy()
{
this.factories.clear();
}

@Override
public void addArchetypeCatalogFactory(String name, URL catalogURL)
{
addArchetypeCatalogFactory(new URLArchetypeCatalogFactory(name, catalogURL));
}

@Override
public void addArchetypeCatalogFactory(String name, URL catalogURL, String defaultRepositoryName)
{
addArchetypeCatalogFactory(new URLArchetypeCatalogFactory(name, catalogURL, defaultRepositoryName));
}

@Override
public void addArchetypeCatalogFactory(ArchetypeCatalogFactory factory)
{
Assert.notNull(factory, "Cannot add a null Archetype Catalog Factory");
Assert.notNull(factory.getName(), "Archetype Catalog Factory must have a name");
factories.put(factory.getName(), factory);
}

@Override
public Iterable<ArchetypeCatalogFactory> getArchetypeCatalogFactories()
{
Set<ArchetypeCatalogFactory> result = new LinkedHashSet<>();
for (ArchetypeCatalogFactory factory : services)
{
result.add(factory);
}
result.addAll(factories.values());
return Collections.unmodifiableCollection(result);
}

@Override
public ArchetypeCatalogFactory getArchetypeCatalogFactory(String name)
{
ArchetypeCatalogFactory result = null;
if (name != null)
{
for (ArchetypeCatalogFactory factory : getArchetypeCatalogFactories())
{
if (name.equals(factory.getName()))
return factory;
}
}
return result;
}

@Override
public void removeArchetypeCatalogFactory(String name)
{
factories.remove(name);
}

}
}
return result;
}

@Override
public void removeArchetypeCatalogFactory(String name)
{
factories.remove(name);
}

@Override
public boolean hasArchetypeCatalogFactories()
{
return factories.size() > 0 && !services.isUnsatisfied();
}

}

0 comments on commit 8b70d4d

Please sign in to comment.