package org.fenixedu.bennu.core.api.json;
import java.io.IOException;
import java.util.jar.JarFile;
import org.fenixedu.bennu.core.annotation.DefaultJsonAdapter;
import org.fenixedu.bennu.core.json.JsonBuilder;
import org.fenixedu.bennu.core.json.JsonViewer;
import pt.ist.fenixframework.core.Project;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
@DefaultJsonAdapter(Project.class)
public class FenixFrameworkProjectViewer implements JsonViewer<Project> {
@Override
public JsonElement view(Project project, JsonBuilder ctx) {
String projectResource = "/" + project.getName() + "/project.properties";
String url = FenixFrameworkProjectViewer.class.getResource(projectResource).toExternalForm();
if (url.startsWith("jar")) {
String jar = url.substring("jar:file:".length(), url.length() - projectResource.length() - 1);
try (JarFile jarFile = new JarFile(jar)) {
return ctx.view(jarFile);
} catch (IOException e) {
throw new Error(e);
}
}
// webapp case
JsonObject json = new JsonObject();
json.addProperty("name", project.getName());
return json;
}
}