[freenet-cvs] r16300 - trunk/apps/Echo/src/plugins/echo

nextgens at freenetproject.org nextgens at freenetproject.org
Wed Dec 5 09:58:49 UTC 2007


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());
 			




More information about the cvs mailing list