Skip to content

Commit

Permalink
FORGE-2424: Migrated templates addon to simple container
Browse files Browse the repository at this point in the history
  • Loading branch information
gastaldi committed Aug 5, 2015
1 parent db47f62 commit 9be392c
Show file tree
Hide file tree
Showing 11 changed files with 96 additions and 72 deletions.
2 changes: 1 addition & 1 deletion templates/addon/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
<dependencies>
<dependency>
<groupId>org.jboss.forge.furnace.container</groupId>
<artifactId>cdi</artifactId>
<artifactId>simple</artifactId>
<classifier>forge-addon</classifier>
<scope>provided</scope>
</dependency>
Expand Down
71 changes: 37 additions & 34 deletions templates/freemarker/pom.xml
Original file line number Diff line number Diff line change
@@ -1,38 +1,41 @@
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>templates-parent</artifactId>
<groupId>org.jboss.forge.addon</groupId>
<version>2.17.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<properties>
<version.freemarker>2.3.20</version.freemarker>
</properties>
<artifactId>templates-freemarker</artifactId>
<name>Forge - Freemarker SPI impl in Templates Addon</name>
<dependencies>
<dependency>
<groupId>org.jboss.forge.furnace.container</groupId>
<artifactId>cdi-api</artifactId>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>templates-api</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>resources</artifactId>
<classifier>forge-addon</classifier>
</dependency>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<parent>
<artifactId>templates-parent</artifactId>
<groupId>org.jboss.forge.addon</groupId>
<version>2.17.1-SNAPSHOT</version>
</parent>
<modelVersion>4.0.0</modelVersion>
<properties>
<version.freemarker>2.3.20</version.freemarker>
</properties>
<artifactId>templates-freemarker</artifactId>
<name>Forge - Freemarker SPI impl in Templates Addon</name>
<dependencies>
<dependency>
<groupId>org.jboss.forge.furnace.container</groupId>
<artifactId>simple</artifactId>
<classifier>forge-addon</classifier>
<scope>provided</scope>
</dependency>

<!-- Freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>${version.freemarker}</version>
</dependency>
</dependencies>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>templates-api</artifactId>
</dependency>
<dependency>
<groupId>org.jboss.forge.addon</groupId>
<artifactId>resources</artifactId>
<classifier>forge-addon</classifier>
</dependency>

<!-- Freemarker -->
<dependency>
<groupId>org.freemarker</groupId>
<artifactId>freemarker</artifactId>
<version>${version.freemarker}</version>
</dependency>
</dependencies>

</project>
Original file line number Diff line number Diff line change
Expand Up @@ -7,9 +7,6 @@

package org.jboss.forge.addon.templates.freemarker;

import javax.inject.Inject;
import javax.inject.Singleton;

import org.jboss.forge.addon.resource.Resource;
import org.jboss.forge.addon.templates.Template;
import org.jboss.forge.addon.templates.TemplateGenerator;
Expand All @@ -21,10 +18,8 @@
*
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
*/
@Singleton
public class FreemarkerTemplateGenerator implements TemplateGenerator
{
@Inject
private ResourceTemplateLoader loader;
private Configuration config;

Expand All @@ -37,17 +32,26 @@ public boolean handles(Class<? extends Template> type)
@Override
public Template create(Resource<?> template, Class<? extends Template> type)
{
return new FreemarkerTemplateImpl(loader, template, getConfiguration());
return new FreemarkerTemplateImpl(getResourceTemplateLoader(), template, getConfiguration());
}

private Configuration getConfiguration()
{
if (config == null)
{
config = new Configuration();
config.setTemplateLoader(loader);
config.setTemplateLoader(getResourceTemplateLoader());
}
return config;
}

private ResourceTemplateLoader getResourceTemplateLoader()
{
if (loader == null)
{
loader = new ResourceTemplateLoader();
}
return loader;
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -14,12 +14,11 @@
import java.util.Map.Entry;
import java.util.concurrent.ConcurrentHashMap;

import javax.inject.Inject;
import javax.inject.Singleton;

import org.jboss.forge.addon.resource.FileResource;
import org.jboss.forge.addon.resource.Resource;
import org.jboss.forge.addon.resource.ResourceFactory;
import org.jboss.forge.furnace.addons.AddonRegistry;
import org.jboss.forge.furnace.container.simple.lifecycle.SimpleContainer;

import freemarker.cache.StatefulTemplateLoader;

Expand All @@ -29,15 +28,10 @@
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
@Singleton
public class ResourceTemplateLoader implements StatefulTemplateLoader
{
private final Map<String, ResourceId> resourceMap = new ConcurrentHashMap<>();

/**
* Needed for includes
*/
@Inject
private ResourceFactory resourceFactory;

String register(Resource<?> resource)
Expand Down Expand Up @@ -70,7 +64,7 @@ public Object findTemplateSource(String name) throws IOException

if (id == null)
{
Resource<?> includedResource = resourceFactory.create(name);
Resource<?> includedResource = getResourceFactory().create(name);
if (includedResource != null && includedResource.exists())
{
id = generateResourceId(includedResource);
Expand Down Expand Up @@ -116,4 +110,14 @@ private ResourceId generateResourceId(Resource<?> resource)
return new ResourceId(resource);
}

private ResourceFactory getResourceFactory()
{
if (resourceFactory == null)
{
AddonRegistry addonRegistry = SimpleContainer.getFurnace(getClass().getClassLoader()).getAddonRegistry();
resourceFactory = addonRegistry.getServices(ResourceFactory.class).get();
}
return resourceFactory;
}

}
2 changes: 0 additions & 2 deletions templates/freemarker/src/main/resources/META-INF/beans.xml

This file was deleted.

Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
org.jboss.forge.addon.templates.freemarker.FreemarkerTemplateGenerator
# This should be moved to templates-impl. Bug in simple container
org.jboss.forge.addon.templates.TemplateFactoryImpl
3 changes: 2 additions & 1 deletion templates/impl/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,8 @@
<dependencies>
<dependency>
<groupId>org.jboss.forge.furnace.container</groupId>
<artifactId>cdi-api</artifactId>
<artifactId>simple</artifactId>
<classifier>forge-addon</classifier>
<scope>provided</scope>
</dependency>
<dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,10 +7,9 @@

package org.jboss.forge.addon.templates;

import javax.inject.Inject;
import javax.inject.Singleton;

import org.jboss.forge.addon.resource.Resource;
import org.jboss.forge.furnace.addons.AddonRegistry;
import org.jboss.forge.furnace.container.simple.lifecycle.SimpleContainer;
import org.jboss.forge.furnace.services.Imported;
import org.jboss.forge.furnace.util.Assert;

Expand All @@ -19,10 +18,8 @@
* @author <a href="ggastald@redhat.com">George Gastaldi</a>
* @author <a href="mailto:lincolnbaxter@gmail.com">Lincoln Baxter, III</a>
*/
@Singleton
public class TemplateFactoryImpl implements TemplateFactory
{
@Inject
private Imported<TemplateGenerator> generators;

@Override
Expand All @@ -31,7 +28,7 @@ public Template create(Resource<?> template, Class<? extends Template> type)
Assert.notNull(template, "Template resource cannot be null");
Assert.isTrue(template.exists(), "Template does not exist: " + template);

for (TemplateGenerator generator : generators)
for (TemplateGenerator generator : getTemplateGenerators())
{
if (generator.handles(type))
{
Expand All @@ -41,4 +38,14 @@ public Template create(Resource<?> template, Class<? extends Template> type)

return null;
}

private Imported<TemplateGenerator> getTemplateGenerators()
{
if (generators == null)
{
AddonRegistry addonRegistry = SimpleContainer.getFurnace(getClass().getClassLoader()).getAddonRegistry();
generators = addonRegistry.getServices(TemplateGenerator.class);
}
return generators;
}
}
2 changes: 0 additions & 2 deletions templates/impl/src/main/resources/META-INF/beans.xml

This file was deleted.

3 changes: 1 addition & 2 deletions templates/tests/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -11,9 +11,8 @@
<dependencies>
<dependency>
<groupId>org.jboss.forge.furnace.container</groupId>
<artifactId>cdi</artifactId>
<artifactId>simple</artifactId>
<classifier>forge-addon</classifier>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.forge.furnace</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,6 @@
import java.net.URL;
import java.util.Collections;

import javax.inject.Inject;

import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.forge.addon.resource.FileResource;
Expand All @@ -21,9 +19,12 @@
import org.jboss.forge.arquillian.AddonDeployment;
import org.jboss.forge.arquillian.AddonDeployments;
import org.jboss.forge.arquillian.archive.AddonArchive;
import org.jboss.forge.furnace.addons.AddonRegistry;
import org.jboss.forge.furnace.container.simple.lifecycle.SimpleContainer;
import org.jboss.forge.furnace.repositories.AddonDependencyEntry;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;

Expand All @@ -42,21 +43,27 @@ public static AddonArchive getDeployment()
.addClass(JavaBean.class)
.addAsResource(TemplateTestCase.class.getResource("template.ftl"), packagePath + "/template.ftl")
.addAsResource(TemplateTestCase.class.getResource("includes.ftl"), packagePath + "/includes.ftl")
.addAsServiceProvider("org.jboss.forge.furnace.container.simple.Service",
TemplateTestCase.class.getName())
.addAsAddonDependencies(
AddonDependencyEntry.create("org.jboss.forge.furnace.container:cdi"),
AddonDependencyEntry.create("org.jboss.forge.furnace.container:simple"),
AddonDependencyEntry.create("org.jboss.forge.addon:templates"),
AddonDependencyEntry.create("org.jboss.forge.addon:resources")
);
AddonDependencyEntry.create("org.jboss.forge.addon:resources"));

return archive;
}

@Inject
private ResourceFactory resourceFactory;

@Inject
private TemplateFactory templateFactory;

@Before
public void setUp()
{
AddonRegistry addonRegistry = SimpleContainer.getFurnace(getClass().getClassLoader()).getAddonRegistry();
this.resourceFactory = addonRegistry.getServices(ResourceFactory.class).get();
this.templateFactory = addonRegistry.getServices(TemplateFactory.class).get();
}

@Test
public void testProcessorFactoryInjection() throws Exception
{
Expand Down

0 comments on commit 9be392c

Please sign in to comment.