[forge-issues] [JBoss JIRA] (FORGE-2245) ResourceFactory : creating a resource from a file
George Gastaldi (JIRA)
issues at jboss.org
Thu Feb 19 00:23:49 EST 2015
[ https://issues.jboss.org/browse/FORGE-2245?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
George Gastaldi updated FORGE-2245:
-----------------------------------
Steps to Reproduce:
{code:java}
import java.io.File;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
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.addon.templates.Template;
import org.jboss.forge.addon.templates.TemplateFactory;
import org.jboss.forge.addon.templates.freemarker.FreemarkerTemplate;
import org.jboss.forge.addon.ui.command.AbstractUICommand;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UIExecutionContext;
import org.jboss.forge.addon.ui.metadata.UICommandMetadata;
import org.jboss.forge.addon.ui.result.Result;
import org.jboss.forge.addon.ui.result.Results;
import org.jboss.forge.addon.ui.util.Categories;
import org.jboss.forge.addon.ui.util.Metadata;
public class FileAddon extends AbstractUICommand {
@Inject
private TemplateFactory tfactory;
@Inject
private ResourceFactory rfactory;
@Override
public UICommandMetadata getMetadata(UIContext context) {
return Metadata.forCommand(FileAddon.class).name("readVoila")
.category(Categories.create("test"));
}
@Override
public void initializeUI(UIBuilder builder) throws Exception {
}
@Override
public Result execute(UIExecutionContext context) throws Exception {
URL voilaURL = getClass().getClassLoader().getResource("voila.txt");
File f = new File(voilaURL.toExternalForm());
// Resource<?> fresource = rfactory.create(f);
FileResource fresource = rfactory.create(FileResource.class, f);
Template template = null;
try {
template = tfactory.create(fresource, FreemarkerTemplate.class);
} catch (Exception e) {
e.printStackTrace();
return Results.fail( e.getMessage() );
}
assert(template!=null);
Map<String, Object> params = new HashMap<String, Object>();
params.put("slogan", "JBoss Forge c'est bon mangez en");
String output = template.process(params);
return Results.success(output+ " Command 'lireFichier' successfully executed!");
}
}
{code}
was:
import java.io.File;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
import javax.inject.Inject;
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.addon.templates.Template;
import org.jboss.forge.addon.templates.TemplateFactory;
import org.jboss.forge.addon.templates.freemarker.FreemarkerTemplate;
import org.jboss.forge.addon.ui.command.AbstractUICommand;
import org.jboss.forge.addon.ui.context.UIBuilder;
import org.jboss.forge.addon.ui.context.UIContext;
import org.jboss.forge.addon.ui.context.UIExecutionContext;
import org.jboss.forge.addon.ui.metadata.UICommandMetadata;
import org.jboss.forge.addon.ui.result.Result;
import org.jboss.forge.addon.ui.result.Results;
import org.jboss.forge.addon.ui.util.Categories;
import org.jboss.forge.addon.ui.util.Metadata;
public class FileAddon extends AbstractUICommand {
@Inject
private TemplateFactory tfactory;
@Inject
private ResourceFactory rfactory;
@Override
public UICommandMetadata getMetadata(UIContext context) {
return Metadata.forCommand(FileAddon.class).name("readVoila")
.category(Categories.create("test"));
}
@Override
public void initializeUI(UIBuilder builder) throws Exception {
}
@Override
public Result execute(UIExecutionContext context) throws Exception {
URL voilaURL = getClass().getClassLoader().getResource("voila.txt");
File f = new File(voilaURL.toExternalForm());
// Resource<?> fresource = rfactory.create(f);
FileResource fresource = rfactory.create(FileResource.class, f);
Template template = null;
try {
template = tfactory.create(fresource, FreemarkerTemplate.class);
} catch (Exception e) {
e.printStackTrace();
return Results.fail( e.getMessage() );
}
assert(template!=null);
Map<String, Object> params = new HashMap<String, Object>();
params.put("slogan", "JBoss Forge c'est bon mangez en");
String output = template.process(params);
return Results.success(output+ " Command 'lireFichier' successfully executed!");
}
}
> ResourceFactory : creating a resource from a file
> -------------------------------------------------
>
> Key: FORGE-2245
> URL: https://issues.jboss.org/browse/FORGE-2245
> Project: Forge
> Issue Type: Bug
> Components: Resources
> Affects Versions: 2.13.1.Final
> Environment: w764, java 7
> Reporter: Jerome B
>
> As I was trying to use a file contained in the JAR of my addon, I used this (intuitive) code
> URL voilaURL = getClass().getClassLoader().getResource("voila.txt");
> File f = new File(voilaURL.toExternalForm());
> Resource<?> resource = rfactory.create(f); // KO
> FileResource fresource = rfactory.create(FileResource.class, f); // KO
> both last two line lead to a FileResource which, in debug is displayed as this form
> [PROJECT_ROOT][Correct full path of file in jar]
> D:\workspace_addons\ADDONS\jar:file:\C:\Users\me\.forge\addons\fr-company-addons-ADDONS213b-1-0-1-SNAPSHOT\ADDONS213b-1.0.1-SNAPSHOT-forge-addon.jar!\voila.txt
> Then, those FileResources when used with the templateFactory
> Template template = tfactory.create(resource,FreemarkerTemplate.class);
> lead to an error like "template does not exist"
> Hint?: The toString value is wrong but the path of the file within FileResource is ok
> See https://developer.jboss.org/thread/252367 for more data
--
This message was sent by Atlassian JIRA
(v6.3.11#6341)
More information about the forge-issues
mailing list