Author: nextgens
Date: 2007-12-05 09:58:49 +0000 (Wed, 05 Dec 2007)
New Revision: 16300
Modified:
trunk/apps/Echo/src/plugins/echo/Echo.java
trunk/apps/Echo/src/plugins/echo/ProjectManager.java
Log:
Echo: refactor things a bit... hopefully re-loading echo will work now
Modified: trunk/apps/Echo/src/plugins/echo/Echo.java
===================================================================
--- trunk/apps/Echo/src/plugins/echo/Echo.java 2007-12-05 09:53:11 UTC (rev
16299)
+++ trunk/apps/Echo/src/plugins/echo/Echo.java 2007-12-05 09:58:49 UTC (rev
16300)
@@ -26,6 +26,7 @@
import java.io.InputStream;
import java.io.IOException;
// * Exceptions !
+import java.util.MissingResourceException;
// * var Project / projectManager
@@ -37,43 +38,55 @@
public static final int NODE_ID_LENGTH = 4;
protected PluginRespirator respirator;
- private Builder parser;
- private XSLTransform transform;
- private I18n i18n;
- private HashMap<String,Page> pages;
- private ProjectManager projectManager;
- private Project project;
- private NodesManager nodesManager;
- private BlockManager blockManager;
-
- public void runPlugin(PluginRespirator p) {
-
+ private final Builder parser;
+ private final XSLTransform transform;
+ private final HashMap<String,Page> pages;
+ private final ProjectManager projectManager;
+ private final Project project;
+ private final NodesManager nodesManager;
+ private final BlockManager blockManager;
+ private final Page welcomePage;
+
+ public Echo() throws Exception {
try {
- this.respirator = p;
-
if(!BASE_DIR.exists())
BASE_DIR.mkdirs();
-
- I18n.setLanguage("en");
- parser = new Builder();
-
+ try {
+ I18n.setLanguage(I18n.DEFAULT_LANGUAGE);
+ } catch(MissingResourceException e) {
+ }
+
+ this.parser = new Builder();
Document styleSheet =
parser.build(Echo.class.getClassLoader().getResourceAsStream("/xml/edit.xsl"));
I18n.translateXML(styleSheet);
- transform = new XSLTransform(styleSheet);
+ this.transform = new XSLTransform(styleSheet);
- projectManager = new ProjectManager(BASE_DIR,
respirator.getNode().random);
+ this.projectManager = new ProjectManager(this);
if(projectManager.countProjects() == 0)
projectManager.newProject("My Flog");
-
- setProject(projectManager.loadProject("001"));
+
+ this.project = projectManager.loadProject("001");
+ this.nodesManager = project.getNodesManager();
+ this.blockManager = project.getBlockManager();
+ transform.setParameter("baseDir",
project.getProjectDir().getAbsolutePath() + "/");
+
+ this.welcomePage =
StaticPage.createFromContentFile("Welcome", "welcome.xml");
+ this.pages = new HashMap<String, Page>();
+ } catch (Exception e) {
+ System.out.println("Echo made a booo! "
+e.getMessage());
+ e.printStackTrace();
+ throw e;
+ }
+ }
+
+ public void runPlugin(PluginRespirator p) {
+ try {
+ this.respirator = p;
String formPsw =
respirator.getNode().clientCore.formPassword;
-
-
- pages = new HashMap<String,Page>();
- pages.put("plugins.echo.Echo",
StaticPage.createFromContentFile("Welcome", "welcome.xml"));
+ pages.put("plugins.echo.Echo", welcomePage);
Page nodePage = new NodePage(nodesManager, formPsw);
pages.put("newPost", nodePage);
@@ -106,16 +119,7 @@
public void terminate() {
// TODO
}
-
- private void setProject(Project p) {
- this.project = p;
- this.nodesManager = project.getNodesManager();
- this.blockManager = project.getBlockManager();
- transform.setParameter("baseDir",
project.getProjectDir().getAbsolutePath() + "/");
-
- }
-
public String handleHTTPGet(HTTPRequest request) throws
PluginHTTPException {
if ("/plugins/plugins.echo.Echo".equals(request.getPath()))
throw new RedirectPluginHTTPException("", BASE_URL);
@@ -141,7 +145,18 @@
}
- throw new PluginHTTPException("Unable to handle the request!",
BASE_URL);
+ try {
+ welcomePage.handleHTTPRequest(request);
+ return transform.transform(new
Document(welcomePage.toXML())).get(0).toXML();
+ } catch (Exception e) {
+ e.printStackTrace();
+ return e.toString();
+ }
+// String passwd = request.getParam("formPassword");
+// if((passwd == null) ||
!passwd.equals(respirator.getNode().clientCore.formPassword))
+// throw new AccessDeniedPluginHTTPException("The
formPassword hasn't been set!", BASE_URL);
+// else
+// return handleHTTPPost(request);
}
public String handleHTTPPut(HTTPRequest request) throws
PluginHTTPException {
Modified: trunk/apps/Echo/src/plugins/echo/ProjectManager.java
===================================================================
--- trunk/apps/Echo/src/plugins/echo/ProjectManager.java 2007-12-05
09:53:11 UTC (rev 16299)
+++ trunk/apps/Echo/src/plugins/echo/ProjectManager.java 2007-12-05
09:58:49 UTC (rev 16300)
@@ -2,7 +2,6 @@
import freenet.crypt.RandomSource;
import freenet.keys.InsertableClientSSK;
-import freenet.keys.FreenetURI;
import java.util.HashMap;
import java.util.Properties;
@@ -17,22 +16,18 @@
* This class provides methods to manage projects
*/
public class ProjectManager {
-
- private File baseDir;
private HashMap<String,File> projects;
- private RandomSource randomSource;
private Project currentProject;
+ private Echo _e;
/**
* Class constructor specifying the projects base dir and the
random source used to generate the projects keys.
*/
- public ProjectManager(File baseDir, RandomSource randomSource) {
-
- this.baseDir= baseDir;
- this.randomSource = randomSource;
- projects = new HashMap<String,File>();
+ public ProjectManager(Echo e) {
+ this._e = e;
+ this.projects = new HashMap<String,File>();
- File[] files = baseDir.listFiles();
+ File[] files = Echo.BASE_DIR.listFiles();
for(File f : files) {
if(f.isDirectory() && f.getName().matches("[0-9]{" +
Echo.PROJECT_ID_LENGTH + "}"))
projects.put(f.getName(), f);
@@ -84,7 +79,7 @@
break;
}
- File projectDir = new File(baseDir, id);
+ File projectDir = new File(Echo.BASE_DIR, id);
if(projectDir.mkdirs()) {
(new File(projectDir.getPath() + File.separator +
"nodes")).mkdirs();
@@ -94,7 +89,7 @@
Properties conf = new Properties();
conf.setProperty("title", projectTitle);
- InsertableClientSSK key =
InsertableClientSSK.createRandom(randomSource, projectTitle);
+ InsertableClientSSK key =
InsertableClientSSK.createRandom(_e.respirator.getNode().random, projectTitle);
conf.setProperty("insertURI",
key.getInsertURI().toString());
conf.setProperty("requestURI", key.getURI().toString());