[
https://issues.jboss.org/browse/FORGE-2245?page=com.atlassian.jira.plugin...
]
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)