[Yanel-commits] rev 20318 - in public/yanel/trunk/src:
contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources
core/java/org/wyona/yanel/core/api/attributes
core/java/org/wyona/yanel/servlet
simon at wyona.com
simon at wyona.com
Fri Nov 24 17:39:05 CET 2006
Author: simon
Date: 2006-11-24 17:39:03 +0100 (Fri, 24 Nov 2006)
New Revision: 20318
Modified:
public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java
public/yanel/trunk/src/core/java/org/wyona/yanel/core/api/attributes/CreatableV2.java
public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/CreateUsecaseHelper.java
Log:
improved creator a little bit ;)
Modified: public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java
===================================================================
--- public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java 2006-11-24 16:37:11 UTC (rev 20317)
+++ public/yanel/trunk/src/contributions/resources/wiki/src/java/org/wyona/yanel/impl/resources/WikiResource.java 2006-11-24 16:39:03 UTC (rev 20318)
@@ -16,9 +16,12 @@
package org.wyona.yanel.impl.resources;
+import java.io.BufferedWriter;
import java.io.File;
import java.io.InputStream;
import java.io.OutputStream;
+import java.io.Writer;
+import java.io.PrintWriter;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
@@ -66,6 +69,7 @@
public WikiResource() {
dbf = DocumentBuilderFactory.newInstance();
dbf.setNamespaceAware(true);
+ properties.put("title", "");
}
/**
@@ -184,6 +188,43 @@
return null;
}
+ /**
+ * @return the empty wiki resource as String
+ */
+ private String getEmptyWikiXml() {
+ StringBuffer emptyWikiXml = new StringBuffer();
+ emptyWikiXml.append("<?xml version=\"1.0\"?>");
+ emptyWikiXml.append("\n");
+ emptyWikiXml.append("<wiki xmlns=\"http://www.wyona.org/neutron/1.0\">");
+ emptyWikiXml.append("\n");
+ emptyWikiXml.append("</wiki>");
+
+ return emptyWikiXml.toString();
+ }
+
+ /**
+ * @param newWikiPage
+ * @return the empty wiki introspection as String
+ */
+ private String getEmptyWikiIntrospection(String newWikiPage) {
+ StringBuffer emptyWikiPageContent = new StringBuffer();
+ emptyWikiPageContent.append("<?xml version=\"1.0\"?>");
+ emptyWikiPageContent.append("\n");
+ emptyWikiPageContent.append("<introspection xmlns=\"http://www.wyona.org/neutron/1.0\">");
+ emptyWikiPageContent.append("\n\t");
+ emptyWikiPageContent.append("<edit mime-type=\"application/xml\" name=\"" + newWikiPage + "\">");
+ emptyWikiPageContent.append("\n\t\t");
+ emptyWikiPageContent.append("<checkout url=\"/wiki/" + newWikiPage + ".html\" method=\"GET\"/>");
+ emptyWikiPageContent.append("\n\t\t");
+ emptyWikiPageContent.append("<checkin url=\"/wiki/" + newWikiPage + ".html?yanel.resource.usecase=checkin\" method=\"PUT\"/>");
+ emptyWikiPageContent.append("\n\t");
+ emptyWikiPageContent.append("</edit>");
+ emptyWikiPageContent.append("\n");
+ emptyWikiPageContent.append("</introspection>");
+
+ return emptyWikiPageContent.toString();
+ }
+
protected RepositoryFactory getRepositoryFactory() {
return yanel.getRepositoryFactory("DefaultRepositoryFactory");
}
@@ -207,8 +248,64 @@
//TODO not implemented yet
return null;
}
-
- public void create(String name){
+
+ public void create(HttpServletRequest request ,String createName){
log.warn("TODO: Not implemented yet!");
+ //yanel rti TODO does not work yet
+ //writeRti(new Path(request.getServletPath()), createName, "rtd/wiki.rtd");
+
+
+ //content
+ writeContent(new Path(request.getServletPath()), createName, this.getEmptyWikiXml());
+
+ //introspection
+ //writeToRepo(newpath,content);
}
+
+ public void writeContent(Path path,String createName, String content){
+
+ try{
+
+ RepoPath rp = new org.wyona.yarep.util.YarepUtil().getRepositoryPath(new org.wyona.yarep.core.Path(path.toString()+"/"+createName), new RepositoryFactory());
+ repository = rp.getRepo();
+
+ // Write content to repository
+ System.out.println("\nWriting content to repository " + repository.getName() +"with content: "+content+"to path: "+path.toString()+"/"+createName);
+ Writer writer = repository.getWriter(rp.getPath());
+ writer.write(content);
+ writer.close();
+ }
+ catch (Exception e) {
+ log.warn(e);
+ }
+ }
+
+ public void writeRti(Path path,String createName, String content){
+
+ try{
+ RepoPath rpRTI = new org.wyona.yarep.util.YarepUtil().getRepositoryPath(new org.wyona.yarep.core.Path(path.toString()+"/"+createName), yanel.getRepositoryFactory("RTIRepositoryFactory"));
+
+ repository = rpRTI.getRepo();
+
+ // Write content to repository
+ System.out.println("\nWriting content to repository " + repository.getName() +"with content: "+content+"to path: "+path.toString()+"/"+createName);
+ Writer writer = repository.getWriter(rpRTI.getPath());
+ writer.write(content);
+ writer.close();
+
+ //Writer br = rpRTI.getRepo().getWriter(new org.wyona.yarep.core.Path(new Path(rpRTI.getPath().toString()).getRTIPath().toString()));
+
+ //PrintWriter br = new PrintWriter(rpRTI.getRepo().getWriter(new org.wyona.yarep.core.Path(new Path(rpRTI.getPath().toString()).getRTIPath().toString())));
+
+
+ // Write the rti file
+ //System.out.println("\nWriting RTI to repository " + repository.getName() +"with content: "+content+"to path: "+path.toString()+"/"+createName);
+ //br.write(content);
+ //br.close();
+ }
+ catch (Exception e) {
+ log.error(e);
+ }
+ }
+
}
Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/api/attributes/CreatableV2.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/api/attributes/CreatableV2.java 2006-11-24 16:37:11 UTC (rev 20317)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/api/attributes/CreatableV2.java 2006-11-24 16:39:03 UTC (rev 20318)
@@ -16,6 +16,9 @@
package org.wyona.yanel.core.api.attributes;
+import javax.servlet.http.HttpServletRequest;
+
+import org.wyona.yanel.core.Path;
import org.wyona.yanel.core.api.attributes.CreatableV1;
/**
@@ -32,5 +35,5 @@
/**
* creates the resource
*/
- public void create(String path);
+ public void create(HttpServletRequest request, String createName);
}
Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/CreateUsecaseHelper.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/CreateUsecaseHelper.java 2006-11-24 16:37:11 UTC (rev 20317)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/servlet/CreateUsecaseHelper.java 2006-11-24 16:39:03 UTC (rev 20318)
@@ -33,8 +33,9 @@
import org.wyona.yanel.core.api.attributes.ViewableV2;
import org.wyona.yanel.core.api.attributes.CreatableV2;
import org.wyona.yanel.core.util.ResourceAttributeHelper;
-import org.wyona.yarep.core.Path;
+import org.wyona.yanel.core.Path;
+
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@@ -43,7 +44,7 @@
*/
public class CreateUsecaseHelper {
- private static Logger log = Logger.getLogger("test");
+ private static Logger log = Logger.getLogger(CreateUsecaseHelper.class);
/**
*
@@ -52,13 +53,19 @@
String createName = request.getParameter("create.name");
String resourceType = request.getParameter("resource.type");
+ String create = request.getParameter("create");
if (resourceType == null) {
PrintWriter w = response.getWriter();
w.print(resourcesTypeSelectScreen(createName));
} else {
- PrintWriter w = response.getWriter();
- w.print(createResourceScreen(createName, resourceType));
+ if(create == null){
+ PrintWriter w = response.getWriter();
+ w.print(createResourceScreen(createName, resourceType));
+ } else{
+ PrintWriter w = response.getWriter();
+ w.print(doCreate(resourceType, request, createName));
+ }
}
return response;
@@ -278,5 +285,55 @@
return resourcesCreateScreen;
}
+
+ public String doCreate(String resourceType, HttpServletRequest request, String createName ) {
+ String responseAfterCreationScreen = null;
+ ResourceTypeRegistry rtr = new ResourceTypeRegistry();
+ String[] PropertyNames = null;
+
+ try {
+ Resource resource = rtr.newResource(resourceType);
+ if (resource != null) {
+ if (ResourceAttributeHelper.hasAttributeImplemented(resource, "Creatable", "2")) {
+ PropertyNames = ((CreatableV2) resource).getPropertyNames();
+
+ ((CreatableV2) resource).create(request, createName);
+
+ //response after creation, better would be a redirect to the fresh created resource
+ StringBuffer form = new StringBuffer();
+ form.append("<?xml version=\"1.0\"?>");
+ form.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
+ form.append("<body>");
+ form.append("creation successfull");
+ form.append("</body>");
+ responseAfterCreationScreen = form.toString();
+ }else{
+ //response after creation failed
+ StringBuffer form = new StringBuffer();
+ form.append("<?xml version=\"1.0\"?>");
+ form.append("<html xmlns=\"http://www.w3.org/1999/xhtml\">");
+ form.append("<body>");
+ form.append("creation NOT successfull!");
+ form.append("</body>");
+ responseAfterCreationScreen = form.toString();
+ }
+ return responseAfterCreationScreen;
+ }
+
+ }
+ catch (Exception e) {
+ log.error(e.getMessage(), e);
+ String message = e.toString();
+ log.error(e.getMessage(), e);
+ // Element exceptionElement = (Element)
+ // rootElement.appendChild(doc.createElement("exception"));
+ // exceptionElement.appendChild(doc.createTextNode(message));
+ // setYanelOutput(response, doc);
+ // response.setStatus(javax.servlet.http.HttpServletResponse.SC_INTERNAL_SERVER_ERROR);
+ return message;
+ }
+ return responseAfterCreationScreen;
+ }
+
}
More information about the Yanel-commits
mailing list