Wikitty-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
July 2011
- 4 participants
- 85 discussions
r1080 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize
by mfortun@users.nuiton.org 18 Jul '11
by mfortun@users.nuiton.org 18 Jul '11
18 Jul '11
Author: mfortun
Date: 2011-07-18 12:00:30 +0200 (Mon, 18 Jul 2011)
New Revision: 1080
Url: http://nuiton.org/repositories/revision/wikitty/1080
Log:
* correct copy/paste error
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-13 13:59:54 UTC (rev 1079)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-18 10:00:30 UTC (rev 1080)
@@ -75,9 +75,9 @@
wikittyJarRepository = new JarFile(jarLocation);
JarEntry metaEntry = wikittyJarRepository
+ .getJarEntry(WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE);
+ JarEntry idEntry = wikittyJarRepository
.getJarEntry(WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE);
- JarEntry idEntry = wikittyJarRepository
- .getJarEntry(WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE);
wikittyIndex = new Properties();
wikittyIndex.load(wikittyJarRepository.getInputStream(idEntry));
1
0
r1079 - in trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication: . action externalize synchro
by mfortun@users.nuiton.org 13 Jul '11
by mfortun@users.nuiton.org 13 Jul '11
13 Jul '11
Author: mfortun
Date: 2011-07-13 15:59:54 +0200 (Wed, 13 Jul 2011)
New Revision: 1079
Url: http://nuiton.org/repositories/revision/wikitty/1079
Log:
* clean import
* change local value to static constant
* new class for cross-cutting constant
Added:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConstant.java
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConfig.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/JarUtil.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConfig.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConfig.java 2011-07-12 15:29:48 UTC (rev 1078)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConfig.java 2011-07-13 13:59:54 UTC (rev 1079)
@@ -54,7 +54,7 @@
public enum Option implements ApplicationConfig.OptionDef {
CONFIG_FILE(ApplicationConfig.CONFIG_FILE_NAME,
_("wikitty-publication.config.configFileName.description"),
- "wikitty-publication-ws-default.properties", String.class, false,
+ "wikitty-publication-ws-jar.properties", String.class, false,
false);
Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConstant.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConstant.java (rev 0)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConstant.java 2011-07-13 13:59:54 UTC (rev 1079)
@@ -0,0 +1,29 @@
+package org.nuiton.wikitty.publication;
+
+public class WikittyPublicationConstant {
+
+ /*
+ * Variable relative to scriping/binding
+ */
+ /** variable contenant l'instance de la classe ActionEval */
+ static final public String EVAL_VAR = "wpEval";
+ /** variable name use to put context in script and jsp */
+ static final public String CONTEXT_VAR = "wpContext";
+ /** contient la liste des arguments mandatory non encore utilise */
+ static final public String SUBCONTEXT_VAR = "wpSubContext";
+ /**
+ * contient le nom de la page WikittyPubText (ex: Wiki) ou la requete ayant
+ * permis de trouver la page (ex: MyScript.name=df)
+ */
+ static final public String PAGE_NAME_VAR = "wpPage";
+ /**
+ * contient le wikitty utilise comme script
+ */
+ static final public String WIKITTY_VAR = "wpWikitty";
+
+
+
+
+
+
+}
Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyPublicationConstant.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java 2011-07-12 15:29:48 UTC (rev 1078)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java 2011-07-13 13:59:54 UTC (rev 1079)
@@ -20,6 +20,7 @@
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.publication.WikittyPublicationConfig;
+import org.nuiton.wikitty.publication.WikittyPublicationConstant;
import org.nuiton.wikitty.publication.entities.WikittyPubText;
import org.nuiton.wikitty.publication.entities.WikittyPubTextCompiled;
import org.nuiton.wikitty.publication.entities.WikittyPubTextCompiledHelper;
@@ -44,22 +45,6 @@
protected HttpServletRequest request;
protected InputStream inputStream;
- /** variable contenant l'instance de la classe ActionEval */
- static final public String EVAL_VAR = "wpEval";
- /** variable name use to put context in script and jsp */
- static final public String CONTEXT_VAR = "wpContext";
- /** contient la liste des arguments mandatory non encore utilise */
- static final public String SUBCONTEXT_VAR = "wpSubContext";
- /**
- * contient le nom de la page WikittyPubText (ex: Wiki) ou la requete ayant
- * permis de trouver la page (ex: MyScript.name=df)
- */
- static final public String PAGE_NAME_VAR = "wpPage";
- /**
- * contient le wikitty utilise comme script
- */
- static final public String WIKITTY_VAR = "wpWikitty";
-
@Override
public void setServletResponse(HttpServletResponse arg0) {
this.response = arg0;
@@ -113,13 +98,13 @@
if (content == null) {
result = getError(context);
} else {
-
+
/*
- * if wikitty pub text compiled we load the class corresponding
- * to the byte code contained.
- * And then invoke the eval method on it
+ * if wikitty pub text compiled we load the class
+ * corresponding to the byte code contained. And then invoke
+ * the eval method on it
*/
- String name= WikittyPubTextHelper.getName(w);
+ String name = WikittyPubTextHelper.getName(w);
// supprime de subcontext ce qui a ete utilise dans cette
// methode
@@ -127,22 +112,26 @@
subContext.size()));
Map<String, Object> bindings = new HashMap<String, Object>();
- bindings.put(PAGE_NAME_VAR, criteria.getName());
- bindings.put(CONTEXT_VAR, context);
- bindings.put(SUBCONTEXT_VAR, subContext);
- bindings.put(WIKITTY_VAR, w);
- bindings.put(EVAL_VAR, this);
+ bindings.put(WikittyPublicationConstant.PAGE_NAME_VAR,
+ criteria.getName());
+ bindings.put(WikittyPublicationConstant.CONTEXT_VAR,
+ context);
+ bindings.put(WikittyPublicationConstant.SUBCONTEXT_VAR,
+ subContext);
+ bindings.put(WikittyPublicationConstant.WIKITTY_VAR, w);
+ bindings.put(WikittyPublicationConstant.EVAL_VAR, this);
WikittyPublicationClassLoader classloader = new WikittyPublicationClassLoader();
- Class<? extends AbstractDecoredClass> clazz = (Class<? extends AbstractDecoredClass>) classloader.addClass(name, content);
+ Class<? extends AbstractDecoredClass> clazz = (Class<? extends AbstractDecoredClass>) classloader
+ .addClass(name, content);
try {
result = clazz.newInstance().eval(bindings);
} catch (Exception e) {
// TODO Mfortun-2011-07-08 really handle exception
e.printStackTrace();
- result = getError(context);
+ result = getError(context);
}
}
@@ -161,11 +150,14 @@
subContext.size()));
Map<String, Object> bindings = new HashMap<String, Object>();
- bindings.put(PAGE_NAME_VAR, criteria.getName());
- bindings.put(CONTEXT_VAR, context);
- bindings.put(SUBCONTEXT_VAR, subContext);
- bindings.put(WIKITTY_VAR, w);
- bindings.put(EVAL_VAR, this);
+ bindings.put(WikittyPublicationConstant.PAGE_NAME_VAR,
+ criteria.getName());
+ bindings.put(WikittyPublicationConstant.CONTEXT_VAR,
+ context);
+ bindings.put(WikittyPublicationConstant.SUBCONTEXT_VAR,
+ subContext);
+ bindings.put(WikittyPublicationConstant.WIKITTY_VAR, w);
+ bindings.put(WikittyPublicationConstant.EVAL_VAR, this);
result = ScriptEvaluator.eval(null, criteria.getName(),
content, mimetype, bindings);
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/JarUtil.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/JarUtil.java 2011-07-12 15:29:48 UTC (rev 1078)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/JarUtil.java 2011-07-13 13:59:54 UTC (rev 1079)
@@ -7,12 +7,15 @@
import org.nuiton.util.StringUtil;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.FileFilter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
+import java.io.InputStreamReader;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.Collection;
@@ -581,4 +584,45 @@
}
return s;
}
+
+ public static String getStringContent(JarFile jar, JarEntry jarEntry)
+ throws IOException {
+ BufferedReader buffer = new BufferedReader(new InputStreamReader(
+ jar.getInputStream(jarEntry)));
+
+ StringBuffer result = new StringBuffer();
+ char[] cbuf = new char[2000];
+
+ int nb = buffer.read(cbuf);
+ while (nb != -1) {
+ result.append(cbuf, 0, nb);
+ nb = buffer.read(cbuf);
+ }
+ buffer.close();
+ return result.toString();
+
+ }
+
+ public static byte[] getByteContent(JarFile jar, JarEntry jarEnt)
+ throws IOException {
+
+ ByteArrayOutputStream content;
+ // Extract this to a byte utils ?
+ InputStream in = new BufferedInputStream(jar.getInputStream(jarEnt));
+ try {
+ content = new ByteArrayOutputStream();
+ BufferedOutputStream tmp = new BufferedOutputStream(content);
+ try {
+ for (int b = in.read(); b != -1; b = in.read()) {
+ tmp.write(b);
+ }
+ } finally {
+ tmp.close();
+ }
+ } finally {
+ in.close();
+ }
+ return content.toByteArray();
+ }
+
}
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-12 15:29:48 UTC (rev 1078)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-13 13:59:54 UTC (rev 1079)
@@ -5,6 +5,7 @@
import java.io.PrintWriter;
import java.util.Set;
import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang.StringUtils;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.ArgumentsParserException;
import org.nuiton.util.FileUtil;
@@ -14,7 +15,7 @@
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyLabel;
import org.nuiton.wikitty.entities.WikittyLabelHelper;
-import org.nuiton.wikitty.publication.action.PublicationActionEval;
+import org.nuiton.wikitty.publication.WikittyPublicationConstant;
import org.nuiton.wikitty.publication.entities.WikittyPubData;
import org.nuiton.wikitty.publication.entities.WikittyPubDataHelper;
import org.nuiton.wikitty.publication.entities.WikittyPubText;
@@ -22,6 +23,7 @@
import org.nuiton.wikitty.publication.entities.WikittyPubTextImpl;
import org.nuiton.wikitty.publication.synchro.PropertiesExtended;
import org.nuiton.wikitty.publication.synchro.WikittyFileUtil;
+import org.nuiton.wikitty.publication.synchro.WikittyPublication;
import org.nuiton.wikitty.publication.synchro.WikittyPublicationFileSystem;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.search.PagedResult;
@@ -36,16 +38,16 @@
*/
public class WikittyPublicationExternalize {
- public static String TEMPORARY_FILE_NAME = "tempBeforeJar";
- public static String DEFAULT_JAR_NAME = "pub-externalized";
+ static public String TEMPORARY_FILE_NAME = "tempBeforeJar";
+ static public String DEFAULT_JAR_NAME = "pub-externalized";
- public static String VERSION_SUFFIX = ".version";
- public static String EXTENSION_SUFFIX = ".extension";
-
- public static String SOURCE_EXTENSION = ".java";
- public static String COMPILED_EXTENSION = ".class";
- public static String PATH_SEPARATOR="path.separator";
+ static public String VERSION_SUFFIX = ".version";
+ static public String EXTENSION_SUFFIX = ".extension";
+ static public String SOURCE_EXTENSION = ".java";
+ static public String COMPILED_EXTENSION = ".class";
+ static public String PATH_SEPARATOR_PROPERTIE_KEY = "path.separator";
+
/*
* Class don't have to be instantiate
*/
@@ -64,13 +66,12 @@
// construct the url for local repo
File currentFile = new File(".");
- // currentFile = new
- // File(currentFile.getAbsolutePath()).getParentFile();
- currentFile = new File("/home/Manou/testWP");
+ currentFile = new File(currentFile.getAbsolutePath()).getParentFile();
+ // currentFile = new File("/home/User/testWP");
String Label = currentFile.getName();
- String urlFileSystem = "file:///home/Manou/testWP#wp";
- // String urlFileSystem = currentFile.getParent() + "#" + Label;
+ // String urlFileSystem = "file:///home/User/testWP#wp";
+ String urlFileSystem = currentFile.getParent() + WikittyPublication.LABEL_DELIM + Label;
appconfig.setOption(WikittyConfigOption.WIKITTY_SERVER_URL.getKey(),
urlFileSystem);
@@ -100,13 +101,12 @@
PropertiesExtended metaProperties = new PropertiesExtended(
filePropertiesMeta);
-
- metaProperties.setProperty(PATH_SEPARATOR, File.separator);
+ metaProperties.setProperty(PATH_SEPARATOR_PROPERTIE_KEY, File.separator);
// iterate wikitty
// - write file
// - write property
// - write
-
+
/*
* Format des propriétés:
*
@@ -147,36 +147,33 @@
extension = WikittyPubTextHelper.getFileExtension(wikit);
String content = WikittyPubTextHelper.getContent(wikit);
-
- // TODO 2011-07-08 change this later or not, java source will be
+ // TODO 2011-07-08 change this later or not, java source will be
// erase by the second file.
// Write original file
- wikittyFile = new File(
- tempDirectory.getAbsolutePath()+File.separator+
- labelPath + name + "." + extension);
+ wikittyFile = new File(tempDirectory.getAbsolutePath()
+ + File.separator + labelPath + name + "." + extension);
wikittyFile.createNewFile();
- FileUtil.writeString(wikittyFile,content );
+ FileUtil.writeString(wikittyFile, content);
-
- WikittyPubText currentPubText= new WikittyPubTextImpl(wikit);
-
-
- File javaFile = new File(tempDirectory.getAbsolutePath()+File.separator+
- labelPath + name + SOURCE_EXTENSION);
+ WikittyPubText currentPubText = new WikittyPubTextImpl(wikit);
+
+ File javaFile = new File(tempDirectory.getAbsolutePath()
+ + File.separator + labelPath + name + SOURCE_EXTENSION);
javaFile.createNewFile();
String codeClass = getCode(currentPubText);
FileUtil.writeString(javaFile, codeClass);
-
- File classDirectory = new File(tempDirectory.getAbsolutePath()+File.separator+
- labelPath );//+ name + COMPILED_EXTENSION);
- //classFile.createNewFile();
+ File classDirectory = new File(tempDirectory.getAbsolutePath()
+ + File.separator + labelPath);// + name +
+ // COMPILED_EXTENSION);
+ // classFile.createNewFile();
+
PrintWriter writer = new PrintWriter(System.out);
- // compile
- CompileHelper.compile(tempDirectory, javaFile, classDirectory,writer );
-
-
+ // compile
+ CompileHelper.compile(tempDirectory, javaFile, classDirectory,
+ writer);
+
// write properties
idProperties.put(id, labelPath + name);
metaProperties.put(id + EXTENSION_SUFFIX,
@@ -189,9 +186,8 @@
name = WikittyPubDataHelper.getName(wikit);
// write file on the temporary directory
- wikittyFile = new File(
- tempDirectory.getAbsolutePath()+File.separator+
- labelPath + name + "." + extension);
+ wikittyFile = new File(tempDirectory.getAbsolutePath()
+ + File.separator + labelPath + name + "." + extension);
wikittyFile.createNewFile();
FileUtil.byteToFile(content, wikittyFile);
@@ -216,94 +212,97 @@
/*
* Algo fonctionnement
*
- * done:
- * Selectionner tout les wikitty sur le file system qui sont dans le dossier
- * courant, en servant d'un wikitty publication fileSystem.
+ * done: Selectionner tout les wikitty sur le file system qui sont dans le
+ * dossier courant, en servant d'un wikitty publication fileSystem.
*
- * done:
- * On va créer un dossier pour le jar "tempJar" pour chaque wikitty en
+ * done: On va créer un dossier pour le jar "tempJar" pour chaque wikitty en
* fonction du type: -wikittyPubData: on va l'écrire sous son label le
* fichier dans le dossier tempJar et on va le référencer dans l'index
* central du dossier
*
- * stay:
- * -WikittyPubText: .on va écrire le pub text sous son label le fichier
- * correspondant .on va décorer le contenu du wikittyPubText avec les
- * éléments script engine etc, on va écrire le .java correspondant .ensuite
- * on va compiler le java et écrire le .class correspondant .on écrit les
- * metadata et les élément d'index du wikitty pour le retrouver
+ * stay: -WikittyPubText: .on va écrire le pub text sous son label le
+ * fichier correspondant .on va décorer le contenu du wikittyPubText avec
+ * les éléments script engine etc, on va écrire le .java correspondant
+ * .ensuite on va compiler le java et écrire le .class correspondant .on
+ * écrit les metadata et les élément d'index du wikitty pour le retrouver
*
*
*
- * done:
- * Une fois tout les wikitty traité on va packager le dossier tempJar en jar
- * et on va supprimer le dossier tempJar
+ * done: Une fois tout les wikitty traité on va packager le dossier tempJar
+ * en jar et on va supprimer le dossier tempJar
*/
-
-
- public static String getCode(WikittyPubText wikitty){
- String content =wikitty.getContent();
+ public static String getCode(WikittyPubText wikitty) {
+ String content = wikitty.getContent();
String mimeType = wikitty.getMimeType();
- String className=wikitty.getName();//+"PublicationClass";
- String classContent = "";
-
- //Set<String> labels = (Set<String>) wikitty.getField(WikittyLabel.EXT_WIKITTYLABEL, WikittyLabel.FIELD_WIKITTYLABEL_LABELS);
- //classContent += "package org.nuiton.wikitty.publication;" ;
- //classContent += "package "+ labels.toArray()[0].toString() +";";
+ String className = wikitty.getName();// +"PublicationClass";
+ String classContent = StringUtils.EMPTY;
+
+ // Set<String> labels = (Set<String>)
+ // wikitty.getField(WikittyLabel.EXT_WIKITTYLABEL,
+ // WikittyLabel.FIELD_WIKITTYLABEL_LABELS);
+ // classContent += "package org.nuiton.wikitty.publication;" ;
+ // classContent += "package "+ labels.toArray()[0].toString() +";";
classContent += "import org.apache.commons.logging.Log;";
classContent += "import org.apache.commons.logging.LogFactory;";
classContent += "import org.nuiton.wikitty.ScriptEvaluator;";
- classContent += "import "+ AbstractDecoredClass.class.getName() + ";";
+ classContent += "import " + AbstractDecoredClass.class.getName() + ";";
classContent += "import org.nuiton.wikitty.entities.*;";
classContent += "import org.nuiton.wikitty.publication.entities.*;";
classContent += "import org.nuiton.wikitty.publication.action.*;";
classContent += "import java.util.*;";
-
- classContent += "public class " + className + " extends " + AbstractDecoredClass.class.getSimpleName() + " {";
-
-
+
+ classContent += "public class " + className + " extends "
+ + AbstractDecoredClass.class.getSimpleName() + " {";
+
classContent += "public Object eval(Map<String, Object> bindings ) throws Exception {";
-
-
-
-
+
// TODO mfortun-2011-07-08 write a better "filter" must isolate specific
// mime type that correspond to precompilable langague
- if (mimeType!="java"){
+ if (mimeType != "java") {
classContent += "Object result = null;";
- classContent += "String content = \""+StringEscapeUtils.escapeJava(content) +"\";";
- classContent += "String mimeType = \""+StringEscapeUtils.escapeJava(mimeType) +"\";";
- classContent += "String criteriaName= \""+ Element.ELT_ID+":"+wikitty.getWikittyId()+"\";";
- classContent +=" result = ScriptEvaluator.eval(null, criteriaName, content, mimeType, bindings);";
+ classContent += "String content = \""
+ + StringEscapeUtils.escapeJava(content) + "\";";
+ classContent += "String mimeType = \""
+ + StringEscapeUtils.escapeJava(mimeType) + "\";";
+ classContent += "String criteriaName= \"" + Element.ELT_ID + ":"
+ + wikitty.getWikittyId() + "\";";
+ classContent += " result = ScriptEvaluator.eval(null, criteriaName, content, mimeType, bindings);";
classContent += "return result;";
} else {
-
+
/*
* Iterate on element that must be in the context and write
*
- * classContent = "+type+" "+name+" = bindings.get(\""+name+"\");";
+ * classContent = "+type+" "+name+" = bindings.get(\""+name+"\");";
*
* ?
- *
*/
// contruct variables that can be used inside the java code.
- classContent = "PublicationContext "+PublicationActionEval.CONTEXT_VAR+" = bindings.get(\""+PublicationActionEval.CONTEXT_VAR+"\");";
- classContent = "PublicationActionEval "+PublicationActionEval.EVAL_VAR+" = bindings.get(\""+PublicationActionEval.EVAL_VAR+"\");";
- classContent = "String "+PublicationActionEval.PAGE_NAME_VAR+" = bindings.get(\""+PublicationActionEval.PAGE_NAME_VAR+"\");";
- classContent = "List<String> "+PublicationActionEval.SUBCONTEXT_VAR+" = bindings.get(\""+PublicationActionEval.SUBCONTEXT_VAR+"\");";
- classContent = "Wikitty "+PublicationActionEval.WIKITTY_VAR+" = bindings.get(\""+PublicationActionEval.WIKITTY_VAR+"\");";
-
+ classContent = "PublicationContext "
+ + WikittyPublicationConstant.CONTEXT_VAR + " = bindings.get(\""
+ + WikittyPublicationConstant.CONTEXT_VAR + "\");";
+ classContent = "WikittyPublicationConstant "
+ + WikittyPublicationConstant.EVAL_VAR + " = bindings.get(\""
+ + WikittyPublicationConstant.EVAL_VAR + "\");";
+ classContent = "String " + WikittyPublicationConstant.PAGE_NAME_VAR
+ + " = bindings.get(\""
+ + WikittyPublicationConstant.PAGE_NAME_VAR + "\");";
+ classContent = "List<String> "
+ + WikittyPublicationConstant.SUBCONTEXT_VAR
+ + " = bindings.get(\""
+ + WikittyPublicationConstant.SUBCONTEXT_VAR + "\");";
+ classContent = "Wikitty " + WikittyPublicationConstant.WIKITTY_VAR
+ + " = bindings.get(\"" + WikittyPublicationConstant.WIKITTY_VAR
+ + "\");";
+
classContent += content;
-
+
}
-
+
classContent += "\n}\n}\n";
return classContent;
}
-
-
-
-
+
}
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-12 15:29:48 UTC (rev 1078)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-13 13:59:54 UTC (rev 1079)
@@ -1,13 +1,7 @@
package org.nuiton.wikitty.publication.externalize;
-import java.io.BufferedInputStream;
-import java.io.BufferedOutputStream;
-import java.io.BufferedReader;
-import java.io.ByteArrayOutputStream;
import java.io.File;
import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedList;
@@ -18,9 +12,6 @@
import java.util.jar.JarFile;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.StringUtil;
-import org.nuiton.wikitty.WikittyConfigOption;
-import org.nuiton.wikitty.WikittyProxy;
-import org.nuiton.wikitty.WikittyServiceFactory;
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyExtension;
import org.nuiton.wikitty.entities.WikittyImpl;
@@ -38,9 +29,9 @@
import org.nuiton.wikitty.publication.entities.WikittyPubTextImpl;
import org.nuiton.wikitty.publication.synchro.AbstractWikittyFileService;
import org.nuiton.wikitty.publication.synchro.MimeTypePubHelper;
+import org.nuiton.wikitty.publication.synchro.WikittyFileUtil;
import org.nuiton.wikitty.publication.synchro.WikittyPublicationFileSystem;
import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.TreeNodeResult;
import org.nuiton.wikitty.services.WikittyEvent;
import org.nuiton.wikitty.services.WikittyListener;
@@ -61,38 +52,32 @@
protected Properties wikittyMetadata;
/*
- * Implementer :
+ * static public void main(String[] args) {
*
- * restore findByCriteria findAllByCriteria
+ * ApplicationConfig config = new ApplicationConfig();
+ * config.setOption(JAR_LOCATION_KEY,
+ * "/home/User/testWP/pub-externalized.jar"); config.setOption(
+ * WikittyConfigOption.WIKITTY_WIKITTYSERVICE_COMPONENTS.getKey(),
+ * WikittyServiceJarLoader.class.getName()); WikittyProxy proxy = new
+ * WikittyProxy( WikittyServiceFactory.buildWikittyService(config));
+ *
+ * System.out.println(proxy
+ * .restore("e443dbbe-b461-41bd-b5b6-b612e964cb0d"));
+ *
+ * }
*/
- static public void main(String[] args) {
-
- ApplicationConfig config = new ApplicationConfig();
- config.setOption(JAR_LOCATION_KEY,
- "/home/Manou/testWP/pub-externalized.jar");
- config.setOption(
- WikittyConfigOption.WIKITTY_WIKITTYSERVICE_COMPONENTS.getKey(),
- WikittyServiceJarLoader.class.getName());
- WikittyProxy proxy = new WikittyProxy(
- WikittyServiceFactory.buildWikittyService(config));
-
- System.out.println(proxy
- .restore("e443dbbe-b461-41bd-b5b6-b612e964cb0d"));
-
- }
-
public WikittyServiceJarLoader(ApplicationConfig config) {
try {
-
+
File jarLocation = new File(config.getOption(JAR_LOCATION_KEY));
wikittyJarRepository = new JarFile(jarLocation);
JarEntry metaEntry = wikittyJarRepository
- .getJarEntry("meta.properties");
+ .getJarEntry(WikittyFileUtil.WIKITTY_ID_PROPERTIES_FILE);
JarEntry idEntry = wikittyJarRepository
- .getJarEntry("ids.properties");
+ .getJarEntry(WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE);
wikittyIndex = new Properties();
wikittyIndex.load(wikittyJarRepository.getInputStream(idEntry));
@@ -101,7 +86,6 @@
wikittyMetadata
.load(wikittyJarRepository.getInputStream(metaEntry));
-
} catch (IOException e) {
// TODO mfortun-2011-07-11 realy handle exception
e.printStackTrace();
@@ -165,13 +149,12 @@
public boolean canRead(String securityToken, String wikittyId) {
return exists(securityToken, wikittyId);
}
-
@Override
public boolean exists(String securityToken, String wikittyId) {
return exists(wikittyId);
}
-
+
protected boolean exists(String wikittyId) {
return wikittyIndex.containsKey(wikittyId);
}
@@ -207,8 +190,8 @@
result.add(WikittyPubText.EXT_WIKITTYPUBTEXT);
result.add(WikittyPubTextCompiled.EXT_WIKITTYPUBTEXTCOMPILED);
result.add(WikittyLabel.EXT_WIKITTYLABEL);
-
- return result;
+
+ return result;
}
@Override
@@ -278,22 +261,16 @@
}
-
-
-
-
-
@Override
protected Map<String, Wikitty> getAllWikitties() {
Map<String, Wikitty> result = new HashMap<String, Wikitty>();
-
- for (Object oId: wikittyIndex.keySet()){
- String id= oId.toString();
+
+ for (Object oId : wikittyIndex.keySet()) {
+ String id = oId.toString();
result.put(id, restore(id));
}
- return result;
+ return result;
}
-
@Override
public WikittyEvent deleteTree(String securityToken, String treeNodeId) {
@@ -329,9 +306,6 @@
}
-
-
-
protected Wikitty restore(String wikittyId) {
Wikitty wikit = null;
@@ -358,7 +332,7 @@
// set labels computate name
String sep = wikittyMetadata
- .getProperty(WikittyPublicationExternalize.PATH_SEPARATOR);
+ .getProperty(WikittyPublicationExternalize.PATH_SEPARATOR_PROPERTIE_KEY);
String[] namPath = StringUtil.split(path, sep);
String wikittyName = namPath[namPath.length - 1];
@@ -372,8 +346,6 @@
WikittyLabelHelper.addLabels(wikit, label);
-
-
if (mimeHelper.isPubTextExtension(fileExtension)) {
// wikitty pub text compiled
wikit.addExtension(WikittyPubTextImpl.extensions);
@@ -389,10 +361,10 @@
JarEntry wikittyclass = wikittyJarRepository.getJarEntry(path
+ WikittyPublicationExternalize.COMPILED_EXTENSION);
- WikittyPubTextHelper.setContent(wikit,
- this.getStringContent(wikittyJared));
- WikittyPubTextCompiledHelper.setByteCode(wikit,
- this.getByteContent(wikittyclass));
+ WikittyPubTextHelper.setContent(wikit, JarUtil
+ .getStringContent(wikittyJarRepository, wikittyJared));
+ WikittyPubTextCompiledHelper.setByteCode(wikit, JarUtil
+ .getByteContent(wikittyJarRepository, wikittyclass));
} else {
// wikitty pub data
@@ -403,8 +375,8 @@
WikittyPubDataHelper.setName(wikit, wikittyName);
WikittyPubDataHelper.setFileExtension(wikit, fileExtension);
- WikittyPubDataHelper.setContent(wikit,
- this.getByteContent(wikittyJared));
+ WikittyPubDataHelper.setContent(wikit, JarUtil.getByteContent(
+ wikittyJarRepository, wikittyJared));
}
} catch (Exception e) {
@@ -414,45 +386,5 @@
return wikit;
}
-
-
- public String getStringContent(JarEntry jarEntry) throws IOException {
- BufferedReader buffer = new BufferedReader(new InputStreamReader(
- wikittyJarRepository.getInputStream(jarEntry)));
- StringBuffer result = new StringBuffer();
- char[] cbuf = new char[2000];
-
- int nb = buffer.read(cbuf);
- while (nb != -1) {
- result.append(cbuf, 0, nb);
- nb = buffer.read(cbuf);
- }
- buffer.close();
- return result.toString();
-
- }
-
- public byte[] getByteContent(JarEntry jarEnt) throws IOException {
-
- ByteArrayOutputStream content;
- // Extract this to a byte utils ?
- InputStream in = new BufferedInputStream(
- wikittyJarRepository.getInputStream(jarEnt));
- try {
- content = new ByteArrayOutputStream();
- BufferedOutputStream tmp = new BufferedOutputStream(content);
- try {
- for (int b = in.read(); b != -1; b = in.read()) {
- tmp.write(b);
- }
- } finally {
- tmp.close();
- }
- } finally {
- in.close();
- }
- return content.toByteArray();
- }
-
}
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java 2011-07-12 15:29:48 UTC (rev 1078)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublication.java 2011-07-13 13:59:54 UTC (rev 1079)
@@ -32,6 +32,8 @@
import java.util.List;
import java.util.Map.Entry;
import java.util.Set;
+
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.util.ApplicationConfig;
@@ -62,8 +64,6 @@
/** to use log facility, just put in your code: log.info(\"...\"); */
final static private Log log = LogFactory.getLog(WikittyPublication.class);
-
-
/**
* Key for the other uri, usefull in the case of commit/update with a file
* system wikitty service.
@@ -91,9 +91,31 @@
static public String LABEL_KEY = "working.label";
/**
- *
+ * the string that mark the beginnning of the label
*/
+ static public String LABEL_DELIM = "#";
+ /**
+ * regex to select the label part of the uri
+ */
+ static public String LABEL_REGEX = "\\#.*";
+ /**
+ * the prefix use in file url
+ */
+ static public String FILE_URI_PREFIX = "file";
+
+ /**
+ * the prefix use in cajo url
+ */
+ static public String CAJO_URI_PREFIX = "cajo";
+
+ /**
+ * the prefix use in hessian url
+ */
+ static public String HESSIAN_URI_PREFIX = "hessian";
+
+
+
/*
* Class don't have to be instantiate
*/
@@ -182,7 +204,7 @@
// once on the service origin
applicationConfig.setOption(WIKITTY_SERVICE_INTERLOCUTEUR, new String(
- target.replaceAll("\\#.*", "")));
+ target.replaceAll(LABEL_REGEX, StringUtils.EMPTY)));
ApplicationConfig temp1 = setUpApplicationConfigServerConnector(uriOrigin);
@@ -193,7 +215,7 @@
// wikittypublication file system
// it can need it to store wikittyservice property
applicationConfig.setOption(WIKITTY_SERVICE_INTERLOCUTEUR, new String(
- origin.replaceAll("\\#.*", "")));
+ origin.replaceAll(LABEL_REGEX, StringUtils.EMPTY)));
// once on the service target
ApplicationConfig temp2 = setUpApplicationConfigServerConnector(uriTarget);
@@ -445,28 +467,28 @@
result.setOptions(applicationConfig.getFlatOptions());
String url = uri.toASCIIString();
- if (uri.getScheme().equals("file")) {
+ if (uri.getScheme().equals(FILE_URI_PREFIX)) {
result.setOption(
WikittyConfigOption.WIKITTY_WIKITTYSERVICE_COMPONENTS
- .getKey(),
- WikittyPublicationFileSystem.class.getName());
- } else if (uri.getScheme().equals("cajo")) {
+ .getKey(), WikittyPublicationFileSystem.class
+ .getName());
+ } else if (uri.getScheme().equals(CAJO_URI_PREFIX)) {
result.setOption(
WikittyConfigOption.WIKITTY_WIKITTYSERVICE_COMPONENTS
.getKey(),
"org.nuiton.wikitty.services.WikittyServiceCajoClient");
// remove fragment from the uri.
- url = new String(url.replaceAll("\\#.*", ""));
+ url = new String(url.replaceAll(LABEL_REGEX, StringUtils.EMPTY));
- } else if (uri.getScheme().equals("hessian")) {
+ } else if (uri.getScheme().equals(HESSIAN_URI_PREFIX)) {
result.setOption(
WikittyConfigOption.WIKITTY_WIKITTYSERVICE_COMPONENTS
.getKey(),
"org.nuiton.wikitty.services.WikittyServiceHessianClient");
// remove fragment from the uri.
- url = new String(url.replaceAll("\\#.*", ""));
+ url = new String(url.replaceAll(LABEL_REGEX, StringUtils.EMPTY));
}
// set protocol to http, no use finally
@@ -474,8 +496,11 @@
* url = url.replaceFirst("["+uri.getScheme()+"]", "http");
*/
- log.info("set url " + url + " with component :"
- + result.getOption("wikitty.WikittyService.components"));
+ log.info("set url "
+ + url
+ + " with component :"
+ + result.getOption(WikittyConfigOption.WIKITTY_WIKITTYSERVICE_COMPONENTS
+ .getKey()));
result.setOption(WikittyConfigOption.WIKITTY_SERVER_URL.getKey(), url);
@@ -539,10 +564,10 @@
// update is from wikitty service store to wikitty service File System
- String wikittyServiceInter = "";
- String wikittyServiceFileSystem = "";
+ String wikittyServiceInter = StringUtils.EMPTY;
+ String wikittyServiceFileSystem = StringUtils.EMPTY;
- String labelInitial = "";
+ String labelInitial = StringUtils.EMPTY;
PropertiesExtended homeProperty = null;
// Check number of argument
switch (uriFileSystem.length) {
@@ -564,18 +589,18 @@
// construct the current uri for wikitty service file system
// search the current label
PropertiesExtended metaPropertiesExtended = WikittyPublicationFileSystem
- .getWikittyPublicationProperties(
- currentDir,
+ .getWikittyPublicationProperties(currentDir,
WikittyFileUtil.WIKITTY_FILE_META_PROPERTIES_FILE);
String labelCurrent = metaPropertiesExtended
.getProperty(WikittyPublicationFileSystem.META_CURRENT_LABEL);
// construct uri of the wikitty publication file system
wikittyServiceFileSystem = "file://"
- + homePropertyDir.getAbsolutePath() + "#" + labelCurrent;
+ + homePropertyDir.getAbsolutePath() + LABEL_DELIM
+ + labelCurrent;
labelInitial = homeProperty.getProperty(LABEL_KEY);
- wikittyServiceInter += "#" + label
+ wikittyServiceInter += LABEL_DELIM + label
+ labelCurrent.replaceFirst(labelInitial, "");
break;
@@ -586,7 +611,7 @@
URI originUri = new URI(wikittyServiceFileSystem);
// check if uri of wikitty publication file system is well formed,
// must be a file "protocol"
- if (!originUri.getScheme().equals("file")) {
+ if (!originUri.getScheme().equals(FILE_URI_PREFIX)) {
// Exception
}
// then search for the home property file to load the wikitty
@@ -601,7 +626,7 @@
labelInitial = homeProperty.getProperty(LABEL_KEY);
- wikittyServiceInter += "#" + label
+ wikittyServiceInter += LABEL_DELIM + label
+ originUri.getFragment().replaceFirst(labelInitial, "");
break;
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-07-12 15:29:48 UTC (rev 1078)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-07-13 13:59:54 UTC (rev 1079)
@@ -77,6 +77,7 @@
static public String WIKITTYLABEL_SEPARATOR = ".";
+
/**
* The working directory of the wikitty service
*/
1
0
r1078 - in trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication: externalize synchro
by mfortun@users.nuiton.org 12 Jul '11
by mfortun@users.nuiton.org 12 Jul '11
12 Jul '11
Author: mfortun
Date: 2011-07-12 17:29:48 +0200 (Tue, 12 Jul 2011)
New Revision: 1078
Url: http://nuiton.org/repositories/revision/wikitty/1078
Log:
* add some documentation
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/AbstractDecoredClass.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/MimeTypePubHelper.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyFileUtil.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/AbstractDecoredClass.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/AbstractDecoredClass.java 2011-07-12 09:34:27 UTC (rev 1077)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/AbstractDecoredClass.java 2011-07-12 15:29:48 UTC (rev 1078)
@@ -2,6 +2,18 @@
import java.util.Map;
+
+/**
+ * Abstract class for the skeleton and signature for wikittyPubText content
+ * transform and compile as Java class.
+ *
+ * This class allow the evaluator engine to call the eval method to return
+ * the result of the compiled code from the wikitty pub text content.
+ *
+ *
+ * @author mfortun
+ *
+ */
public abstract class AbstractDecoredClass {
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java 2011-07-12 09:34:27 UTC (rev 1077)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java 2011-07-12 15:29:48 UTC (rev 1078)
@@ -1,11 +1,24 @@
package org.nuiton.wikitty.publication.externalize;
+
+/**
+ * A simple classloader extension to allow adding java class with bytecode
+ * @author mfortun
+ *
+ */
public class WikittyPublicationClassLoader extends ClassLoader {
public WikittyPublicationClassLoader() {
super(WikittyPublicationClassLoader.class.getClassLoader());
}
+
+ /**
+ * use to add a class inside the class path from bytecode
+ * @param name the name of the class
+ * @param b the bytecode of the class
+ * @return the class loaded
+ */
public Class<?> addClass(String name, byte[] b) {
int off = 0;
int len = b.length;
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-12 09:34:27 UTC (rev 1077)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-12 15:29:48 UTC (rev 1078)
@@ -24,10 +24,14 @@
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyExtension;
import org.nuiton.wikitty.entities.WikittyImpl;
+import org.nuiton.wikitty.entities.WikittyLabel;
import org.nuiton.wikitty.entities.WikittyLabelHelper;
import org.nuiton.wikitty.entities.WikittyLabelImpl;
+import org.nuiton.wikitty.publication.entities.WikittyPubData;
import org.nuiton.wikitty.publication.entities.WikittyPubDataHelper;
import org.nuiton.wikitty.publication.entities.WikittyPubDataImpl;
+import org.nuiton.wikitty.publication.entities.WikittyPubText;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextCompiled;
import org.nuiton.wikitty.publication.entities.WikittyPubTextCompiledHelper;
import org.nuiton.wikitty.publication.entities.WikittyPubTextCompiledImpl;
import org.nuiton.wikitty.publication.entities.WikittyPubTextHelper;
@@ -197,10 +201,14 @@
@Override
public List<String> getAllExtensionIds(String securityToken) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- // return null;
+ List<String> result = new LinkedList<String>();
+ result.add(WikittyPubData.EXT_WIKITTYPUBDATA);
+ result.add(WikittyPubText.EXT_WIKITTYPUBTEXT);
+ result.add(WikittyPubTextCompiled.EXT_WIKITTYPUBTEXTCOMPILED);
+ result.add(WikittyLabel.EXT_WIKITTYLABEL);
+
+ return result;
}
@Override
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java 2011-07-12 09:34:27 UTC (rev 1077)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java 2011-07-12 15:29:48 UTC (rev 1078)
@@ -37,6 +37,16 @@
import org.nuiton.wikitty.search.operators.RestrictionName;
import org.nuiton.wikitty.search.operators.True;
+
+/**
+ * This service must be extends by wikitty service that are over file system
+ * directly or this kind of storage for wikitty.
+ *
+ *
+ *
+ * @author mfortun
+ *
+ */
public abstract class AbstractWikittyFileService implements WikittyService{
@@ -45,6 +55,16 @@
public AbstractWikittyFileService() {
super();
}
+
+ /**
+ * Method that must be implemented by the extended service. This must return
+ * all the wikitty stored. The result will be use to checkrestriction for
+ * a find.
+ * @return a Map with wikittyId as Key and wikitty as value
+ */
+ protected abstract Map<String, Wikitty> getAllWikitties();
+
+
/**
* Write by jcouteau, used to check if a wikitty check a restriction
@@ -429,10 +449,7 @@
}
}
-
- protected abstract Map<String, Wikitty> getAllWikitties();
-
-
+
@Override
public List<PagedResult<String>> findAllByCriteria(String securityToken,
List<Criteria> criteria) {
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/MimeTypePubHelper.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/MimeTypePubHelper.java 2011-07-12 09:34:27 UTC (rev 1077)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/MimeTypePubHelper.java 2011-07-12 15:29:48 UTC (rev 1078)
@@ -114,14 +114,17 @@
return mimePubText.contains(mimeType);
}
-
+ /**
+ * used to check if a file have to be converted as a wikittyPubText
+ * with his extension similar to :
+ * <br>isPubTextMime(getMimeForExtension(extension))</br>
+ * @param extension the file extension
+ * @return if the extension correspond to a wikittyPubText
+ */
public boolean isPubTextExtension(String extension) {
return isPubTextMime(getMimeForExtension(extension));
}
-
-
-
/**
* Add a mimeType corresponding to a WikittyPubText
*
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyFileUtil.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyFileUtil.java 2011-07-12 09:34:27 UTC (rev 1077)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyFileUtil.java 2011-07-12 15:29:48 UTC (rev 1078)
@@ -8,6 +8,14 @@
import org.nuiton.util.FileUtil;
import org.nuiton.util.StringUtil;
+
+/**
+ *
+ * Class that containt utils method when handle wikitty store as file.
+ *
+ * @author mfortun
+ *
+ */
public class WikittyFileUtil {
/**
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-07-12 09:34:27 UTC (rev 1077)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-07-12 15:29:48 UTC (rev 1078)
@@ -34,6 +34,7 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
+import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
@@ -52,6 +53,7 @@
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyExtension;
import org.nuiton.wikitty.entities.WikittyImpl;
+import org.nuiton.wikitty.entities.WikittyLabel;
import org.nuiton.wikitty.entities.WikittyLabelHelper;
import org.nuiton.wikitty.entities.WikittyLabelImpl;
import org.nuiton.wikitty.publication.entities.WikittyPubData;
@@ -488,10 +490,14 @@
@Override
public List<String> getAllExtensionIds(String securityToken) {
- // TODO mfortun-2011-04-05
- throw new UnsupportedOperationException("not yet implemented");
- // return null;
+ List<String> result = new LinkedList<String>();
+ result.add(WikittyPubData.EXT_WIKITTYPUBDATA);
+ result.add(WikittyPubText.EXT_WIKITTYPUBTEXT);
+ //result.add(WikittyPubTextCompiled.EXT_WIKITTYPUBTEXTCOMPILED);
+ result.add(WikittyLabel.EXT_WIKITTYLABEL);
+
+ return result;
}
@Override
@@ -853,7 +859,7 @@
log.debug("restore wikitty id:" + id + " file: " + fileId);
Wikitty result = new WikittyImpl(id);
-
+
result.addExtension(WikittyLabelImpl.extensionWikittyLabel);
// preparation for mime research and file research
1
0
r1077 - in trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication: externalize synchro
by mfortun@users.nuiton.org 12 Jul '11
by mfortun@users.nuiton.org 12 Jul '11
12 Jul '11
Author: mfortun
Date: 2011-07-12 11:34:27 +0200 (Tue, 12 Jul 2011)
New Revision: 1077
Url: http://nuiton.org/repositories/revision/wikitty/1077
Log:
* add new method for mimeTypeHelper
* fix some import
* correct restore for wikitty save as jar
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/MimeTypePubHelper.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-12 08:46:28 UTC (rev 1076)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-12 09:34:27 UTC (rev 1077)
@@ -3,7 +3,6 @@
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
-import java.util.ArrayList;
import java.util.Set;
import org.apache.commons.lang.StringEscapeUtils;
import org.nuiton.util.ApplicationConfig;
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-12 08:46:28 UTC (rev 1076)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-12 09:34:27 UTC (rev 1077)
@@ -80,6 +80,7 @@
public WikittyServiceJarLoader(ApplicationConfig config) {
try {
+
File jarLocation = new File(config.getOption(JAR_LOCATION_KEY));
wikittyJarRepository = new JarFile(jarLocation);
@@ -363,7 +364,9 @@
WikittyLabelHelper.addLabels(wikit, label);
- if (mimeHelper.isPubTextMime(fileExtension)) {
+
+
+ if (mimeHelper.isPubTextExtension(fileExtension)) {
// wikitty pub text compiled
wikit.addExtension(WikittyPubTextImpl.extensions);
wikit.addExtension(WikittyPubTextCompiledImpl.extensionWikittyPubTextCompiled);
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java 2011-07-12 08:46:28 UTC (rev 1076)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java 2011-07-12 09:34:27 UTC (rev 1077)
@@ -1,6 +1,6 @@
package org.nuiton.wikitty.publication.synchro;
-import java.io.File;
+
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
@@ -11,11 +11,8 @@
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.nuiton.util.FileUtil;
-import org.nuiton.util.StringUtil;
import org.nuiton.wikitty.WikittyException;
import org.nuiton.wikitty.WikittyService;
import org.nuiton.wikitty.WikittyUtil;
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/MimeTypePubHelper.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/MimeTypePubHelper.java 2011-07-12 08:46:28 UTC (rev 1076)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/MimeTypePubHelper.java 2011-07-12 09:34:27 UTC (rev 1077)
@@ -63,6 +63,7 @@
mimePubText.add("application/javascript");
mapExtensionMime.put("wp", "application/javascript");
+ mapExtensionMime.put("js", "application/javascript");
mapExtensionMime.put("jpg", "image/jpeg");
mapExtensionMime.put("png", "image/png");
}
@@ -112,7 +113,15 @@
public boolean isPubTextMime(String mimeType) {
return mimePubText.contains(mimeType);
}
+
+
+ public boolean isPubTextExtension(String extension) {
+ return isPubTextMime(getMimeForExtension(extension));
+ }
+
+
+
/**
* Add a mimeType corresponding to a WikittyPubText
*
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-07-12 08:46:28 UTC (rev 1076)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-07-12 09:34:27 UTC (rev 1077)
@@ -34,12 +34,10 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
-import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Properties;
import java.util.Set;
-import java.util.Map.Entry;
import org.apache.commons.collections.BidiMap;
import org.apache.commons.collections.bidimap.DualHashBidiMap;
import org.apache.commons.logging.Log;
@@ -63,9 +61,7 @@
import org.nuiton.wikitty.publication.entities.WikittyPubTextHelper;
import org.nuiton.wikitty.publication.entities.WikittyPubTextImpl;
import org.nuiton.wikitty.search.Criteria;
-import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.TreeNodeResult;
-import org.nuiton.wikitty.search.operators.Restriction;
import org.nuiton.wikitty.services.WikittyEvent;
import org.nuiton.wikitty.services.WikittyListener;
import org.nuiton.wikitty.publication.synchro.WikittyFileUtil;
1
0
r1076 - in trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication: externalize synchro
by mfortun@users.nuiton.org 12 Jul '11
by mfortun@users.nuiton.org 12 Jul '11
12 Jul '11
Author: mfortun
Date: 2011-07-12 10:46:28 +0200 (Tue, 12 Jul 2011)
New Revision: 1076
Url: http://nuiton.org/repositories/revision/wikitty/1076
Log:
* code optimization move findbyid and findallid to abstract wikitty service on file system
* finds implemented for wikitty service jar loader
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-11 15:48:08 UTC (rev 1075)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-12 08:46:28 UTC (rev 1076)
@@ -9,8 +9,10 @@
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Collection;
+import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
import java.util.Properties;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
@@ -158,9 +160,14 @@
public boolean canRead(String securityToken, String wikittyId) {
return exists(securityToken, wikittyId);
}
+
@Override
public boolean exists(String securityToken, String wikittyId) {
+ return exists(wikittyId);
+ }
+
+ protected boolean exists(String wikittyId) {
return wikittyIndex.containsKey(wikittyId);
}
@@ -245,87 +252,12 @@
List<Wikitty> result = new LinkedList<Wikitty>();
- try {
- for (String wikittyId : ids) {
- // if wikitty doesn't exist jump to the next id
- if (!exists(securityToken, wikittyId)) {
+ for (String wikittyId : ids) {
+ // if wikitty doesn't exist jump to the next id
- continue;
- }
+ result.add(restore(wikittyId));
+ }
- String fileExtension = wikittyMetadata.getProperty(wikittyId
- + WikittyPublicationExternalize.EXTENSION_SUFFIX);
- String path = wikittyIndex.getProperty(wikittyId);
- String version = wikittyMetadata.getProperty(wikittyId
- + WikittyPublicationExternalize.VERSION_SUFFIX);
-
- JarEntry wikittyJared = wikittyJarRepository.getJarEntry(path
- + "." + fileExtension);
-
- MimeTypePubHelper mimeHelper = new MimeTypePubHelper();
-
- Wikitty wikit = new WikittyImpl(wikittyId);
- wikit.setVersion(version);
-
- wikit.addExtension(WikittyLabelImpl.extensionWikittyLabel);
-
- // set labels computate name
- String sep = wikittyMetadata
- .getProperty(WikittyPublicationExternalize.PATH_SEPARATOR);
- String[] namPath = StringUtil.split(path, sep);
- String wikittyName = namPath[namPath.length - 1];
-
- String label = "";
- for (int i = 0; i < namPath.length - 1; i++) {
- label += namPath[i];
- if (i < namPath.length - 2) {
- label += WikittyPublicationFileSystem.WIKITTYLABEL_SEPARATOR;
- }
- }
-
- WikittyLabelHelper.addLabels(wikit, label);
-
- if (mimeHelper.isPubTextMime(fileExtension)) {
- // wikitty pub text compiled
- wikit.addExtension(WikittyPubTextImpl.extensions);
- wikit.addExtension(WikittyPubTextCompiledImpl.extensionWikittyPubTextCompiled);
-
- // basic field
- WikittyPubTextHelper.setFileExtension(wikit, fileExtension);
- WikittyPubTextHelper.setMimeType(wikit,
- mimeHelper.getMimeForExtension(fileExtension));
- WikittyPubTextHelper.setName(wikit, wikittyName);
-
- // contents fields:
- JarEntry wikittyclass = wikittyJarRepository
- .getJarEntry(path
- + WikittyPublicationExternalize.COMPILED_EXTENSION);
-
- WikittyPubTextHelper.setContent(wikit,
- getStringContent(wikittyJared));
- WikittyPubTextCompiledHelper.setByteCode(wikit,
- this.getByteContent(wikittyclass));
-
- } else {
- // wikitty pub data
- wikit.addExtension(WikittyPubDataImpl.extensionWikittyPubData);
- WikittyPubDataHelper.setMimeType(wikit,
- mimeHelper.getMimeForExtension(fileExtension));
-
- WikittyPubDataHelper.setName(wikit, wikittyName);
-
- WikittyPubDataHelper.setFileExtension(wikit, fileExtension);
- WikittyPubDataHelper.setContent(wikit,
- this.getByteContent(wikittyJared));
- }
-
- result.add(wikit);
- }
-
- } catch (Exception e) {
- // TODO mfortun-2011-07-11 really handle exception
- e.printStackTrace();
- }
return result;
}
@@ -337,23 +269,22 @@
}
- @Override
- public List<PagedResult<String>> findAllByCriteria(String securityToken,
- List<Criteria> criteria) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- // return null;
- }
-
+
+
+
+
@Override
- public List<String> findByCriteria(String securityToken,
- List<Criteria> criteria) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- // return null;
-
+ protected Map<String, Wikitty> getAllWikitties() {
+ Map<String, Wikitty> result = new HashMap<String, Wikitty>();
+
+ for (Object oId: wikittyIndex.keySet()){
+ String id= oId.toString();
+ result.put(id, restore(id));
+ }
+ return result;
}
+
@Override
public WikittyEvent deleteTree(String securityToken, String treeNodeId) {
@@ -389,6 +320,91 @@
}
+
+
+
+ protected Wikitty restore(String wikittyId) {
+
+ Wikitty wikit = null;
+ try {
+ if (!exists(wikittyId)) {
+ return null;
+ }
+
+ String fileExtension = wikittyMetadata.getProperty(wikittyId
+ + WikittyPublicationExternalize.EXTENSION_SUFFIX);
+ String path = wikittyIndex.getProperty(wikittyId);
+ String version = wikittyMetadata.getProperty(wikittyId
+ + WikittyPublicationExternalize.VERSION_SUFFIX);
+
+ JarEntry wikittyJared = wikittyJarRepository.getJarEntry(path + "."
+ + fileExtension);
+
+ MimeTypePubHelper mimeHelper = new MimeTypePubHelper();
+
+ wikit = new WikittyImpl(wikittyId);
+ wikit.setVersion(version);
+
+ wikit.addExtension(WikittyLabelImpl.extensionWikittyLabel);
+
+ // set labels computate name
+ String sep = wikittyMetadata
+ .getProperty(WikittyPublicationExternalize.PATH_SEPARATOR);
+ String[] namPath = StringUtil.split(path, sep);
+ String wikittyName = namPath[namPath.length - 1];
+
+ String label = "";
+ for (int i = 0; i < namPath.length - 1; i++) {
+ label += namPath[i];
+ if (i < namPath.length - 2) {
+ label += WikittyPublicationFileSystem.WIKITTYLABEL_SEPARATOR;
+ }
+ }
+
+ WikittyLabelHelper.addLabels(wikit, label);
+
+ if (mimeHelper.isPubTextMime(fileExtension)) {
+ // wikitty pub text compiled
+ wikit.addExtension(WikittyPubTextImpl.extensions);
+ wikit.addExtension(WikittyPubTextCompiledImpl.extensionWikittyPubTextCompiled);
+
+ // basic field
+ WikittyPubTextHelper.setFileExtension(wikit, fileExtension);
+ WikittyPubTextHelper.setMimeType(wikit,
+ mimeHelper.getMimeForExtension(fileExtension));
+ WikittyPubTextHelper.setName(wikit, wikittyName);
+
+ // contents fields:
+ JarEntry wikittyclass = wikittyJarRepository.getJarEntry(path
+ + WikittyPublicationExternalize.COMPILED_EXTENSION);
+
+ WikittyPubTextHelper.setContent(wikit,
+ this.getStringContent(wikittyJared));
+ WikittyPubTextCompiledHelper.setByteCode(wikit,
+ this.getByteContent(wikittyclass));
+
+ } else {
+ // wikitty pub data
+ wikit.addExtension(WikittyPubDataImpl.extensionWikittyPubData);
+ WikittyPubDataHelper.setMimeType(wikit,
+ mimeHelper.getMimeForExtension(fileExtension));
+
+ WikittyPubDataHelper.setName(wikit, wikittyName);
+
+ WikittyPubDataHelper.setFileExtension(wikit, fileExtension);
+ WikittyPubDataHelper.setContent(wikit,
+ this.getByteContent(wikittyJared));
+ }
+
+ } catch (Exception e) {
+ // TODO mfortun-2011-07-11 really handle exception
+ e.printStackTrace();
+ }
+
+ return wikit;
+ }
+
+
public String getStringContent(JarEntry jarEntry) throws IOException {
BufferedReader buffer = new BufferedReader(new InputStreamReader(
wikittyJarRepository.getInputStream(jarEntry)));
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java 2011-07-11 15:48:08 UTC (rev 1075)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/AbstractWikittyFileService.java 2011-07-12 08:46:28 UTC (rev 1076)
@@ -5,7 +5,10 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
+import java.util.LinkedList;
import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
@@ -429,5 +432,96 @@
}
}
+
+ protected abstract Map<String, Wikitty> getAllWikitties();
+
+
+ @Override
+ public List<PagedResult<String>> findAllByCriteria(String securityToken,
+ List<Criteria> criteria) {
+
+
+ List<PagedResult<String>> result = new ArrayList<PagedResult<String>>();
+
+ Map<String, Wikitty> wikitties = getAllWikitties();
+
+ // for each criteria
+ for (Criteria cr : criteria) {
+ // prepare restriction on result
+ int firstIndex = cr.getFirstIndex();
+ int endIndex = cr.getEndIndex();
+ List<String> ids = new LinkedList<String>();
+ int currentIndex = 0;
+ Restriction restriction = cr.getRestriction();
+ // for each wikitty check if it match the resttriction
+ for (Entry<String, Wikitty> entry : wikitties.entrySet()) {
+ String id = entry.getKey();
+ Wikitty w = entry.getValue();
+ // if macth
+
+
+ if (checkRestriction(restriction, w)) {
+
+ // increment result number
+ currentIndex++;
+ if (currentIndex > firstIndex) {
+ ids.add(id);
+ }
+ // if the number of wikitty found is match
+ // stop the search for other wikitty
+ if (endIndex >= 0 && currentIndex >= endIndex) {
+ break;
+ }
+ }
+ }
+ result.add(new PagedResult<String>(firstIndex, ids.size(),
+ restriction.toString(), null, ids));
+
+ }
+ return result;
+ }
+
+
+ @Override
+ public List<String> findByCriteria(String securityToken,
+ List<Criteria> criteria) {
+ List<String> result = new ArrayList<String>();
+
+ Map<String, Wikitty> wikitties = getAllWikitties();
+ // for each criteria
+ for (Criteria cr : criteria) {
+ // prepare restriction on result
+ int firstIndex = cr.getFirstIndex();
+ int endIndex = cr.getEndIndex();
+ List<String> ids = new LinkedList<String>();
+ int currentIndex = 0;
+ Restriction restriction = cr.getRestriction();
+ // for each wikitty check if it match the resttriction
+ for (Entry<String, Wikitty> entry : wikitties.entrySet()) {
+ String id = entry.getKey();
+ Wikitty w = entry.getValue();
+ // if macth
+
+ log.debug("Check restriction for wikitty: " + w
+ + " Restriction:" + restriction);
+
+ if (checkRestriction(restriction, w)) {
+ // increment result number
+ currentIndex++;
+ if (currentIndex > firstIndex) {
+ ids.add(id);
+ }
+ // if the number of wikitty found is match
+ // stop the search for other wikitty
+ if (endIndex >= 0 && currentIndex >= endIndex) {
+ break;
+ }
+ }
+ }
+ result.addAll(ids);
+ }
+ return result;
+ }
+
}
\ No newline at end of file
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-07-11 15:48:08 UTC (rev 1075)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystem.java 2011-07-12 08:46:28 UTC (rev 1076)
@@ -646,10 +646,10 @@
return result;
}
+
+
@Override
- public List<PagedResult<String>> findAllByCriteria(String securityToken,
- List<Criteria> criteria) {
-
+ protected Map<String, Wikitty> getAllWikitties() {
Map<String, Wikitty> wikitties = new HashMap<String, Wikitty>();
try {
// construct properly with the working directory and the label
@@ -680,113 +680,12 @@
// TODO mfortun-2011-04-20 really handle exception
e.printStackTrace();
}
-
- List<PagedResult<String>> result = new ArrayList<PagedResult<String>>();
-
- // for each criteria
- for (Criteria cr : criteria) {
- // prepare restriction on result
- int firstIndex = cr.getFirstIndex();
- int endIndex = cr.getEndIndex();
- List<String> ids = new LinkedList<String>();
- int currentIndex = 0;
- Restriction restriction = cr.getRestriction();
- // for each wikitty check if it match the resttriction
- for (Entry<String, Wikitty> entry : wikitties.entrySet()) {
- String id = entry.getKey();
- Wikitty w = entry.getValue();
- // if macth
-
-
- if (checkRestriction(restriction, w)) {
-
- // increment result number
- currentIndex++;
- if (currentIndex > firstIndex) {
- ids.add(id);
- }
- // if the number of wikitty found is match
- // stop the search for other wikitty
- if (endIndex >= 0 && currentIndex >= endIndex) {
- break;
- }
- }
- }
- result.add(new PagedResult<String>(firstIndex, ids.size(),
- restriction.toString(), null, ids));
-
- }
- return result;
+ return wikitties;
}
+
- @Override
- public List<String> findByCriteria(String securityToken,
- List<Criteria> criteria) {
- List<String> result = new ArrayList<String>();
+
- Map<String, Wikitty> wikitties = new HashMap<String, Wikitty>();
- try {
- // construct properly with the working directory and the label
- // the starts directory
- String labelToDir = WikittyFileUtil.labelToPath(label);
- File starts = new File(homeFile.getAbsolutePath() + File.separator
- + labelToDir);
- if (starts.exists()) {
- // check for new file, modifications and deleted wikitty
- harvestNewCheckModificationsAndDeleted(starts, label);
- }
-
- // load all locals wikitty
- BidiMap map = harvestLocalWikitties(starts, true);
-
- // put all local wikitties in a map
- for (Object o : map.keySet()) {
- String id = (String) o;
- FileSystemWIkittyId location = (FileSystemWIkittyId) map
- .get(id);
-
- wikitties.put(id, restore(id, location));
-
- }
- } catch (Exception e) {
- // TODO mfortun-2011-04-21 really handle exception
- e.printStackTrace();
- }
- // for each criteria
- for (Criteria cr : criteria) {
- // prepare restriction on result
- int firstIndex = cr.getFirstIndex();
- int endIndex = cr.getEndIndex();
- List<String> ids = new LinkedList<String>();
- int currentIndex = 0;
- Restriction restriction = cr.getRestriction();
- // for each wikitty check if it match the resttriction
- for (Entry<String, Wikitty> entry : wikitties.entrySet()) {
- String id = entry.getKey();
- Wikitty w = entry.getValue();
- // if macth
-
- log.debug("Check restriction for wikitty: " + w
- + " Restriction:" + restriction);
-
- if (checkRestriction(restriction, w)) {
- // increment result number
- currentIndex++;
- if (currentIndex > firstIndex) {
- ids.add(id);
- }
- // if the number of wikitty found is match
- // stop the search for other wikitty
- if (endIndex >= 0 && currentIndex >= endIndex) {
- break;
- }
- }
- }
- result.addAll(ids);
- }
- return result;
- }
-
@Override
public WikittyEvent deleteTree(String securityToken, String treeNodeId) {
// TODO mfortun-2011-04-05
1
0
r1075 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize
by mfortun@users.nuiton.org 11 Jul '11
by mfortun@users.nuiton.org 11 Jul '11
11 Jul '11
Author: mfortun
Date: 2011-07-11 17:48:08 +0200 (Mon, 11 Jul 2011)
New Revision: 1075
Url: http://nuiton.org/repositories/revision/wikitty/1075
Log:
* add some basic method for wikitty service jar loader
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-11 15:37:11 UTC (rev 1074)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-11 15:48:08 UTC (rev 1075)
@@ -94,8 +94,6 @@
wikittyMetadata
.load(wikittyJarRepository.getInputStream(metaEntry));
- System.out.println(wikittyMetadata);
- System.out.println(wikittyIndex);
} catch (IOException e) {
// TODO mfortun-2011-07-11 realy handle exception
@@ -147,26 +145,18 @@
@Override
public boolean canWrite(String securityToken, Wikitty wikitty) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- // return false;
+ return false;
}
@Override
public boolean canDelete(String securityToken, String wikittyId) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- // return false;
-
+ return false;
}
@Override
public boolean canRead(String securityToken, String wikittyId) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- // return false;
-
+ return exists(securityToken, wikittyId);
}
@Override
1
0
r1074 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize
by mfortun@users.nuiton.org 11 Jul '11
by mfortun@users.nuiton.org 11 Jul '11
11 Jul '11
Author: mfortun
Date: 2011-07-11 17:37:11 +0200 (Mon, 11 Jul 2011)
New Revision: 1074
Url: http://nuiton.org/repositories/revision/wikitty/1074
Log:
* add property to save separator used to write label inside properties
* implemented restore/exist/is delete/constructor for wikitty service jar loader
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-11 09:00:59 UTC (rev 1073)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-11 15:37:11 UTC (rev 1074)
@@ -45,6 +45,7 @@
public static String SOURCE_EXTENSION = ".java";
public static String COMPILED_EXTENSION = ".class";
+ public static String PATH_SEPARATOR="path.separator";
/*
* Class don't have to be instantiate
@@ -100,6 +101,8 @@
PropertiesExtended metaProperties = new PropertiesExtended(
filePropertiesMeta);
+
+ metaProperties.setProperty(PATH_SEPARATOR, File.separator);
// iterate wikitty
// - write file
// - write property
@@ -296,14 +299,8 @@
}
-
-
-
classContent += "\n}\n}\n";
-
-
-
-
+
return classContent;
}
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-11 09:00:59 UTC (rev 1073)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyServiceJarLoader.java 2011-07-11 15:37:11 UTC (rev 1074)
@@ -1,10 +1,38 @@
package org.nuiton.wikitty.publication.externalize;
+import java.io.BufferedInputStream;
+import java.io.BufferedOutputStream;
+import java.io.BufferedReader;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
import java.util.Collection;
+import java.util.LinkedList;
import java.util.List;
+import java.util.Properties;
+import java.util.jar.JarEntry;
+import java.util.jar.JarFile;
+import org.nuiton.util.ApplicationConfig;
+import org.nuiton.util.StringUtil;
+import org.nuiton.wikitty.WikittyConfigOption;
+import org.nuiton.wikitty.WikittyProxy;
+import org.nuiton.wikitty.WikittyServiceFactory;
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyExtension;
+import org.nuiton.wikitty.entities.WikittyImpl;
+import org.nuiton.wikitty.entities.WikittyLabelHelper;
+import org.nuiton.wikitty.entities.WikittyLabelImpl;
+import org.nuiton.wikitty.publication.entities.WikittyPubDataHelper;
+import org.nuiton.wikitty.publication.entities.WikittyPubDataImpl;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextCompiledHelper;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextCompiledImpl;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextHelper;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextImpl;
import org.nuiton.wikitty.publication.synchro.AbstractWikittyFileService;
+import org.nuiton.wikitty.publication.synchro.MimeTypePubHelper;
+import org.nuiton.wikitty.publication.synchro.WikittyPublicationFileSystem;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.TreeNodeResult;
@@ -15,24 +43,66 @@
* Wikitty service use to load wikitty store inside jar file
*
* @author mfortun
- *
+ *
*/
public class WikittyServiceJarLoader extends AbstractWikittyFileService {
-
-
+
+ public static String JAR_LOCATION_KEY = "wikitty.publication.repository.jar";
+
+ protected JarFile wikittyJarRepository;
+
+ protected Properties wikittyIndex;
+ protected Properties wikittyMetadata;
+
/*
* Implementer :
- *
- * restore
- * findByCriteria
- * findAllByCriteria
- * exist ?
*
- *
- *
+ * restore findByCriteria findAllByCriteria
*/
-
-
+
+ static public void main(String[] args) {
+
+ ApplicationConfig config = new ApplicationConfig();
+ config.setOption(JAR_LOCATION_KEY,
+ "/home/Manou/testWP/pub-externalized.jar");
+ config.setOption(
+ WikittyConfigOption.WIKITTY_WIKITTYSERVICE_COMPONENTS.getKey(),
+ WikittyServiceJarLoader.class.getName());
+ WikittyProxy proxy = new WikittyProxy(
+ WikittyServiceFactory.buildWikittyService(config));
+
+ System.out.println(proxy
+ .restore("e443dbbe-b461-41bd-b5b6-b612e964cb0d"));
+
+ }
+
+ public WikittyServiceJarLoader(ApplicationConfig config) {
+ try {
+ File jarLocation = new File(config.getOption(JAR_LOCATION_KEY));
+
+ wikittyJarRepository = new JarFile(jarLocation);
+
+ JarEntry metaEntry = wikittyJarRepository
+ .getJarEntry("meta.properties");
+ JarEntry idEntry = wikittyJarRepository
+ .getJarEntry("ids.properties");
+
+ wikittyIndex = new Properties();
+ wikittyIndex.load(wikittyJarRepository.getInputStream(idEntry));
+
+ wikittyMetadata = new Properties();
+ wikittyMetadata
+ .load(wikittyJarRepository.getInputStream(metaEntry));
+
+ System.out.println(wikittyMetadata);
+ System.out.println(wikittyIndex);
+
+ } catch (IOException e) {
+ // TODO mfortun-2011-07-11 realy handle exception
+ e.printStackTrace();
+ }
+ }
+
@Override
public void addWikittyServiceListener(WikittyListener listener,
ServiceListenerType type) {
@@ -55,7 +125,7 @@
public String login(String login, String password) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -71,7 +141,7 @@
public WikittyEvent clear(String securityToken) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -79,7 +149,7 @@
public boolean canWrite(String securityToken, Wikitty wikitty) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return false;
+ // return false;
}
@@ -87,7 +157,7 @@
public boolean canDelete(String securityToken, String wikittyId) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return false;
+ // return false;
}
@@ -95,24 +165,18 @@
public boolean canRead(String securityToken, String wikittyId) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return false;
+ // return false;
}
@Override
public boolean exists(String securityToken, String wikittyId) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- //return false;
-
+ return wikittyIndex.containsKey(wikittyId);
}
@Override
public boolean isDeleted(String securityToken, String wikittyId) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- //return false;
-
+ return false;
}
@Override
@@ -120,7 +184,7 @@
boolean force) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -129,7 +193,7 @@
Collection<Wikitty> wikitties, boolean force) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -137,7 +201,7 @@
public List<String> getAllExtensionIds(String securityToken) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -146,7 +210,7 @@
String extensionName) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -155,7 +219,7 @@
Collection<WikittyExtension> exts) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -164,7 +228,7 @@
Collection<String> extNames) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -173,7 +237,7 @@
String extensionId) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -182,23 +246,104 @@
String name) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@Override
- public List<Wikitty> restore(String securityToken, List<String> id) {
- // TODO mfortun
- throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ public List<Wikitty> restore(String securityToken, List<String> ids) {
+ List<Wikitty> result = new LinkedList<Wikitty>();
+
+ try {
+ for (String wikittyId : ids) {
+ // if wikitty doesn't exist jump to the next id
+ if (!exists(securityToken, wikittyId)) {
+
+ continue;
+ }
+
+ String fileExtension = wikittyMetadata.getProperty(wikittyId
+ + WikittyPublicationExternalize.EXTENSION_SUFFIX);
+ String path = wikittyIndex.getProperty(wikittyId);
+ String version = wikittyMetadata.getProperty(wikittyId
+ + WikittyPublicationExternalize.VERSION_SUFFIX);
+
+ JarEntry wikittyJared = wikittyJarRepository.getJarEntry(path
+ + "." + fileExtension);
+
+ MimeTypePubHelper mimeHelper = new MimeTypePubHelper();
+
+ Wikitty wikit = new WikittyImpl(wikittyId);
+ wikit.setVersion(version);
+
+ wikit.addExtension(WikittyLabelImpl.extensionWikittyLabel);
+
+ // set labels computate name
+ String sep = wikittyMetadata
+ .getProperty(WikittyPublicationExternalize.PATH_SEPARATOR);
+ String[] namPath = StringUtil.split(path, sep);
+ String wikittyName = namPath[namPath.length - 1];
+
+ String label = "";
+ for (int i = 0; i < namPath.length - 1; i++) {
+ label += namPath[i];
+ if (i < namPath.length - 2) {
+ label += WikittyPublicationFileSystem.WIKITTYLABEL_SEPARATOR;
+ }
+ }
+
+ WikittyLabelHelper.addLabels(wikit, label);
+
+ if (mimeHelper.isPubTextMime(fileExtension)) {
+ // wikitty pub text compiled
+ wikit.addExtension(WikittyPubTextImpl.extensions);
+ wikit.addExtension(WikittyPubTextCompiledImpl.extensionWikittyPubTextCompiled);
+
+ // basic field
+ WikittyPubTextHelper.setFileExtension(wikit, fileExtension);
+ WikittyPubTextHelper.setMimeType(wikit,
+ mimeHelper.getMimeForExtension(fileExtension));
+ WikittyPubTextHelper.setName(wikit, wikittyName);
+
+ // contents fields:
+ JarEntry wikittyclass = wikittyJarRepository
+ .getJarEntry(path
+ + WikittyPublicationExternalize.COMPILED_EXTENSION);
+
+ WikittyPubTextHelper.setContent(wikit,
+ getStringContent(wikittyJared));
+ WikittyPubTextCompiledHelper.setByteCode(wikit,
+ this.getByteContent(wikittyclass));
+
+ } else {
+ // wikitty pub data
+ wikit.addExtension(WikittyPubDataImpl.extensionWikittyPubData);
+ WikittyPubDataHelper.setMimeType(wikit,
+ mimeHelper.getMimeForExtension(fileExtension));
+
+ WikittyPubDataHelper.setName(wikit, wikittyName);
+
+ WikittyPubDataHelper.setFileExtension(wikit, fileExtension);
+ WikittyPubDataHelper.setContent(wikit,
+ this.getByteContent(wikittyJared));
+ }
+
+ result.add(wikit);
+ }
+
+ } catch (Exception e) {
+ // TODO mfortun-2011-07-11 really handle exception
+ e.printStackTrace();
+ }
+ return result;
}
@Override
public WikittyEvent delete(String securityToken, Collection<String> ids) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -207,7 +352,7 @@
List<Criteria> criteria) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -216,7 +361,7 @@
List<Criteria> criteria) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -224,7 +369,7 @@
public WikittyEvent deleteTree(String securityToken, String treeNodeId) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -233,7 +378,7 @@
String wikittyId, int depth, boolean count, Criteria filter) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -242,7 +387,7 @@
String version) {
// TODO mfortun
throw new UnsupportedOperationException("not yet implemented");
- //return null;
+ // return null;
}
@@ -254,4 +399,43 @@
}
+ public String getStringContent(JarEntry jarEntry) throws IOException {
+ BufferedReader buffer = new BufferedReader(new InputStreamReader(
+ wikittyJarRepository.getInputStream(jarEntry)));
+
+ StringBuffer result = new StringBuffer();
+ char[] cbuf = new char[2000];
+
+ int nb = buffer.read(cbuf);
+ while (nb != -1) {
+ result.append(cbuf, 0, nb);
+ nb = buffer.read(cbuf);
+ }
+ buffer.close();
+ return result.toString();
+
+ }
+
+ public byte[] getByteContent(JarEntry jarEnt) throws IOException {
+
+ ByteArrayOutputStream content;
+ // Extract this to a byte utils ?
+ InputStream in = new BufferedInputStream(
+ wikittyJarRepository.getInputStream(jarEnt));
+ try {
+ content = new ByteArrayOutputStream();
+ BufferedOutputStream tmp = new BufferedOutputStream(content);
+ try {
+ for (int b = in.read(); b != -1; b = in.read()) {
+ tmp.write(b);
+ }
+ } finally {
+ tmp.close();
+ }
+ } finally {
+ in.close();
+ }
+ return content.toByteArray();
+ }
+
}
1
0
r1073 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize
by mfortun@users.nuiton.org 11 Jul '11
by mfortun@users.nuiton.org 11 Jul '11
11 Jul '11
Author: mfortun
Date: 2011-07-11 11:00:59 +0200 (Mon, 11 Jul 2011)
New Revision: 1073
Url: http://nuiton.org/repositories/revision/wikitty/1073
Log:
* change java code template
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-08 16:07:38 UTC (rev 1072)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-11 09:00:59 UTC (rev 1073)
@@ -3,6 +3,7 @@
import java.io.File;
import java.io.IOException;
import java.io.PrintWriter;
+import java.util.ArrayList;
import java.util.Set;
import org.apache.commons.lang.StringEscapeUtils;
import org.nuiton.util.ApplicationConfig;
@@ -14,6 +15,7 @@
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.entities.WikittyLabel;
import org.nuiton.wikitty.entities.WikittyLabelHelper;
+import org.nuiton.wikitty.publication.action.PublicationActionEval;
import org.nuiton.wikitty.publication.entities.WikittyPubData;
import org.nuiton.wikitty.publication.entities.WikittyPubDataHelper;
import org.nuiton.wikitty.publication.entities.WikittyPubText;
@@ -242,7 +244,6 @@
String content =wikitty.getContent();
String mimeType = wikitty.getMimeType();
String className=wikitty.getName();//+"PublicationClass";
- String script="";
String classContent = "";
//Set<String> labels = (Set<String>) wikitty.getField(WikittyLabel.EXT_WIKITTYLABEL, WikittyLabel.FIELD_WIKITTYLABEL_LABELS);
@@ -252,6 +253,9 @@
classContent += "import org.apache.commons.logging.LogFactory;";
classContent += "import org.nuiton.wikitty.ScriptEvaluator;";
classContent += "import "+ AbstractDecoredClass.class.getName() + ";";
+ classContent += "import org.nuiton.wikitty.entities.*;";
+ classContent += "import org.nuiton.wikitty.publication.entities.*;";
+ classContent += "import org.nuiton.wikitty.publication.action.*;";
classContent += "import java.util.*;";
classContent += "public class " + className + " extends " + AbstractDecoredClass.class.getSimpleName() + " {";
@@ -281,6 +285,13 @@
* ?
*
*/
+ // contruct variables that can be used inside the java code.
+ classContent = "PublicationContext "+PublicationActionEval.CONTEXT_VAR+" = bindings.get(\""+PublicationActionEval.CONTEXT_VAR+"\");";
+ classContent = "PublicationActionEval "+PublicationActionEval.EVAL_VAR+" = bindings.get(\""+PublicationActionEval.EVAL_VAR+"\");";
+ classContent = "String "+PublicationActionEval.PAGE_NAME_VAR+" = bindings.get(\""+PublicationActionEval.PAGE_NAME_VAR+"\");";
+ classContent = "List<String> "+PublicationActionEval.SUBCONTEXT_VAR+" = bindings.get(\""+PublicationActionEval.SUBCONTEXT_VAR+"\");";
+ classContent = "Wikitty "+PublicationActionEval.WIKITTY_VAR+" = bindings.get(\""+PublicationActionEval.WIKITTY_VAR+"\");";
+
classContent += content;
}
1
0
r1072 - in trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication: action externalize
by mfortun@users.nuiton.org 08 Jul '11
by mfortun@users.nuiton.org 08 Jul '11
08 Jul '11
Author: mfortun
Date: 2011-07-08 18:07:38 +0200 (Fri, 08 Jul 2011)
New Revision: 1072
Url: http://nuiton.org/repositories/revision/wikitty/1072
Log:
* Complete eval mechanism in eval action to handler compiled
* Complete classloader
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java 2011-07-08 14:47:15 UTC (rev 1071)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java 2011-07-08 16:07:38 UTC (rev 1072)
@@ -21,7 +21,11 @@
import org.nuiton.wikitty.entities.Wikitty;
import org.nuiton.wikitty.publication.WikittyPublicationConfig;
import org.nuiton.wikitty.publication.entities.WikittyPubText;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextCompiled;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextCompiledHelper;
import org.nuiton.wikitty.publication.entities.WikittyPubTextHelper;
+import org.nuiton.wikitty.publication.externalize.AbstractDecoredClass;
+import org.nuiton.wikitty.publication.externalize.WikittyPublicationClassLoader;
import org.nuiton.wikitty.search.Criteria;
import com.opensymphony.xwork2.ActionContext;
@@ -102,6 +106,46 @@
context.setContentType("text/plain");
result = String.format("no data found for criteria '%s'",
criteria);
+ } else if (w
+ .hasExtension(WikittyPubTextCompiled.EXT_WIKITTYPUBTEXTCOMPILED)) {
+
+ byte[] content = WikittyPubTextCompiledHelper.getByteCode(w);
+ if (content == null) {
+ result = getError(context);
+ } else {
+
+ /*
+ * if wikitty pub text compiled we load the class corresponding
+ * to the byte code contained.
+ * And then invoke the eval method on it
+ */
+ String name= WikittyPubTextHelper.getName(w);
+
+ // supprime de subcontext ce qui a ete utilise dans cette
+ // methode
+ subContext = new ArrayList<String>(subContext.subList(1,
+ subContext.size()));
+
+ Map<String, Object> bindings = new HashMap<String, Object>();
+ bindings.put(PAGE_NAME_VAR, criteria.getName());
+ bindings.put(CONTEXT_VAR, context);
+ bindings.put(SUBCONTEXT_VAR, subContext);
+ bindings.put(WIKITTY_VAR, w);
+ bindings.put(EVAL_VAR, this);
+
+ WikittyPublicationClassLoader classloader = new WikittyPublicationClassLoader();
+
+ Class<? extends AbstractDecoredClass> clazz = (Class<? extends AbstractDecoredClass>) classloader.addClass(name, content);
+
+ try {
+ result = clazz.newInstance().eval(bindings);
+ } catch (Exception e) {
+ // TODO Mfortun-2011-07-08 really handle exception
+ e.printStackTrace();
+ result = getError(context);
+ }
+ }
+
} else {
String content = WikittyPubTextHelper.getContent(w);
@@ -181,7 +225,6 @@
this.inputStream = inputStream;
}
-
@Override
public HttpServletRequest getRequest() {
return request;
@@ -194,24 +237,23 @@
@Override
public String getActionName() {
- // TODO mfortun-2011-05-09 really needed ?
+ // TODO mfortun-2011-05-09 really needed ?
throw new UnsupportedOperationException("not yet implemented");
// return null;
}
-
-
@Override
public String makeUrl(String url) {
String finalUrl = url;
if (!finalUrl.startsWith("/")) {
finalUrl = "/" + finalUrl;
}
- //TODO mforun-2011-05-09 rework on this method
-
- finalUrl = getRequest().getContextPath() + "/" + getArgument(CONTEXT_KEY, "") + finalUrl;
- finalUrl = getResponse().encodeURL(finalUrl)+".action";
+ // TODO mforun-2011-05-09 rework on this method
+
+ finalUrl = getRequest().getContextPath() + "/"
+ + getArgument(CONTEXT_KEY, "") + finalUrl;
+ finalUrl = getResponse().encodeURL(finalUrl) + ".action";
if (log.isInfoEnabled()) {
log.info(String.format("transforme url from '%s' to '%s'", url,
finalUrl));
@@ -227,7 +269,7 @@
@Override
public List<String> getMandatoryArguments() {
- // TODO mfortun-2011-05-09 really needed ?
+ // TODO mfortun-2011-05-09 really needed ?
throw new UnsupportedOperationException("not yet implemented");
// return null;
@@ -235,7 +277,7 @@
@Override
public Map<String, String> getArguments() {
- // TODO mfortun-2011-05-09 really needed ?
+ // TODO mfortun-2011-05-09 really needed ?
throw new UnsupportedOperationException("not yet implemented");
// return null;
@@ -243,15 +285,12 @@
@Override
public Map<String, byte[]> getArgumentFiles() {
- // TODO mfortun-2011-05-09 really needed ?
+ // TODO mfortun-2011-05-09 really needed ?
throw new UnsupportedOperationException("not yet implemented");
// return null;
}
-
-
-
public String getContentType() {
return contentType;
}
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java 2011-07-08 14:47:15 UTC (rev 1071)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java 2011-07-08 16:07:38 UTC (rev 1072)
@@ -1,15 +1,16 @@
package org.nuiton.wikitty.publication.externalize;
-
public class WikittyPublicationClassLoader extends ClassLoader {
-
- public Class<?> addClass(String name, byte[] b ){
+ public WikittyPublicationClassLoader() {
+ super(WikittyPublicationClassLoader.class.getClassLoader());
+ }
+
+ public Class<?> addClass(String name, byte[] b) {
int off = 0;
int len = b.length;
+
return super.defineClass(name, b, off, len);
}
-
-
-
+
}
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-08 14:47:15 UTC (rev 1071)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-08 16:07:38 UTC (rev 1072)
@@ -1,24 +1,13 @@
package org.nuiton.wikitty.publication.externalize;
import java.io.File;
-import java.io.FileOutputStream;
import java.io.IOException;
import java.io.PrintWriter;
-import java.util.List;
import java.util.Set;
-import java.util.jar.JarEntry;
-import java.util.jar.JarFile;
-import java.util.jar.JarOutputStream;
-import java.util.jar.Manifest;
-
import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.commons.lang.StringUtils;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.ArgumentsParserException;
import org.nuiton.util.FileUtil;
-import org.nuiton.util.StringUtil;
-import org.nuiton.util.ZipUtil;
-import org.nuiton.wikitty.ScriptEvaluator;
import org.nuiton.wikitty.WikittyConfigOption;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.WikittyServiceFactory;
@@ -273,7 +262,8 @@
-
+ // TODO mfortun-2011-07-08 write a better "filter" must isolate specific
+ // mime type that correspond to precompilable langague
if (mimeType!="java"){
classContent += "Object result = null;";
classContent += "String content = \""+StringEscapeUtils.escapeJava(content) +"\";";
@@ -283,6 +273,16 @@
classContent += "return result;";
} else {
+ /*
+ * Iterate on element that must be in the context and write
+ *
+ * classContent = "+type+" "+name+" = bindings.get(\""+name+"\");";
+ *
+ * ?
+ *
+ */
+ classContent += content;
+
}
1
0
r1071 - trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize
by mfortun@users.nuiton.org 08 Jul '11
by mfortun@users.nuiton.org 08 Jul '11
08 Jul '11
Author: mfortun
Date: 2011-07-08 16:47:15 +0200 (Fri, 08 Jul 2011)
New Revision: 1071
Url: http://nuiton.org/repositories/revision/wikitty/1071
Log:
* Abstract class for decoratedClass usefull for pubtext compiled
* compile helper used from isisfish
* base for custome class loader
* scripted pub text handle
Added:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/AbstractDecoredClass.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/CompileHelper.java
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java
Modified:
trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/AbstractDecoredClass.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/AbstractDecoredClass.java (rev 0)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/AbstractDecoredClass.java 2011-07-08 14:47:15 UTC (rev 1071)
@@ -0,0 +1,11 @@
+package org.nuiton.wikitty.publication.externalize;
+
+import java.util.Map;
+
+public abstract class AbstractDecoredClass {
+
+
+ public abstract Object eval(Map<String, Object> bindings) throws Exception ;
+
+
+}
Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/AbstractDecoredClass.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/CompileHelper.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/CompileHelper.java (rev 0)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/CompileHelper.java 2011-07-08 14:47:15 UTC (rev 1071)
@@ -0,0 +1,241 @@
+package org.nuiton.wikitty.publication.externalize;
+
+
+
+import static org.nuiton.i18n.I18n._;
+
+
+import java.io.File;
+import java.io.PrintWriter;
+
+import java.net.URL;
+
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Enumeration;
+import java.util.List;
+
+import javax.tools.JavaCompiler;
+import javax.tools.JavaFileObject;
+import javax.tools.StandardJavaFileManager;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.util.FileUtil;
+
+import com.sun.tools.javac.api.JavacTool;
+
+
+/**
+ * Class reuse from the isis fish project.
+ *
+ *
+ * Compile helper used to compile Java code.
+ *
+ * JDK must be installed to use compilation.
+ * (JRE won't work).
+ *
+ * Created: 12 janv. 2006 15:29:53
+ *
+ * @author poussin
+ * @version $Revision: 3124 $
+ *
+ * Last update: $Date: 2010-11-29 19:14:09 +0100 (lun. 29 nov. 2010) $
+ * by : $Author: chatellier $
+ */
+public class CompileHelper {
+
+ /** Logger for this class. */
+ private static final Log log = LogFactory.getLog(CompileHelper.class);
+
+
+ /**
+ * Recherche tous les fichiers qui un source plus recent que la version compilé.
+ *
+ * @param srcDir
+ * @param destDir
+ * @return File list
+ */
+ public static List<File> searchSrcToCompile(File srcDir, File destDir) {
+ List<File> result = new ArrayList<File>();
+ for (File src : srcDir.listFiles()) {
+ File dest = new File(FileUtil.basename(src, ".java"), ".class");
+ if (src.getName().endsWith(".java") && FileUtil.isNewer(src, dest)) {
+ result.add(src);
+ }
+ }
+ return result;
+ }
+
+
+
+
+
+
+ /**
+ * Methode permettant de compiler un fichier Java.
+ *
+ * @param rootSrc le répertoire ou se trouve les sources
+ * @param src Le fichier source a compiler, il doit etre dans un sous
+ * répertoire de rootSrc en fonction du package
+ * @param dest le repertoire destination de la compilation
+ * @param out l'objet sur lequel on ecrit la sortie (erreur) de la
+ * compilation
+ * @return un nombre different de 0 s'il y a une erreur
+ * <li> -1000 si l'exception vient de la recherche du compilateur par
+ * introspection
+ * <li> -10000 si une autre exception
+ * <li> sinon les valeurs retourné par le compilateur java
+ */
+ public static int compile(File rootSrc, File src, File dest, PrintWriter out) {
+ int result = compile(rootSrc, Collections.singletonList(src), dest, out);
+ return result;
+ }
+
+ /**
+ * Methode permettant de compiler un ensemble de fichiers Java.
+ *
+ * @param rootSrc le répertoire ou se trouve les sources
+ * @param src Le fichier source a compiler, il doit etre dans un sous
+ * répertoire de rootSrc en fonction du package
+ * @param dest le repertoire destination de la compilation
+ * @param out l'objet sur lequel on ecrit la sortie (erreur) de la
+ * compilation
+ * @return un nombre different de 0 s'il y a une erreur
+ * <li> -1000 si l'exception vient de la recherche du compilateur par
+ * introspection
+ * <li> -10000 si une autre exception
+ * <li> sinon les valeurs retourné par le compilateur java
+ */
+ public static int compile(File rootSrc, Collection<File> src, File dest,
+ PrintWriter out) {
+ int result = -10000;
+ try {
+ List<File> classpath = new ArrayList<File>();
+ classpath.add(rootSrc.getAbsoluteFile());
+
+ result = compile(classpath, src, dest, out);
+ } catch (Exception eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Compilation failed", eee);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Compile un fichier java.
+ *
+ * @param src les fichiers java source
+ * @param dest le repertoire destination
+ */
+ protected static int compile(List<File> classpath, Collection<File> src,
+ File dest, PrintWriter out) {
+ dest.mkdirs();
+
+ int result = -1000;
+ try {
+ JavaCompiler compiler = JavacTool.create();
+ // Use system compiler
+ // JavaCompiler compiler = ToolProvider.getSystemJavaCompiler();
+ StandardJavaFileManager fileManager = compiler
+ .getStandardFileManager(null, null, null);
+ Iterable<? extends JavaFileObject> compilationUnits = fileManager
+ .getJavaFileObjectsFromFiles(src);
+
+ // Options de compilations
+ String classpathAsString = getClassPathAsString(classpath);
+ List<String> args = new ArrayList<String>();
+ args.add("-g");
+ // Show a description of each use or override of a deprecated member or class.
+ args.add("-deprecation");
+ args.add("-classpath");
+ args.add(classpathAsString);
+ args.add("-d");
+ args.add(dest.getAbsolutePath());
+
+ // Compilation
+ boolean b = compiler.getTask(out, fileManager, null, args, null,
+ compilationUnits).call();
+ // on retourne 0 si tout s'est bien déroulé et -1 sinon
+ result = b ? 0 : -1;
+
+ fileManager.close();
+ } catch (Exception eee) {
+ if (log.isWarnEnabled()) {
+ log.warn("Can't get compiler", eee);
+ }
+ }
+ return result;
+ }
+
+ /**
+ * Return full classpath (for compilation or javadoc) as string.
+ * Separated by {@link File#pathSeparator}.
+ *
+ * Add :
+ * <ul>
+ * <li>System.getProperty("java.class.path")
+ * <li>All first jar dependency (META-INF/MANIFEST.MF)
+ * </ul>
+ * @param classpath initial classpath
+ * @return classpath as string
+ * @throws Exception
+ */
+ public static String getClassPathAsString(List<File> classpath)
+ throws Exception {
+ String result = StringUtils.join(classpath.iterator(),
+ File.pathSeparator);
+
+ // chatellier : since 20090512 java.class.path in not added to
+ // classpath.
+ // result in duplicated entry or non normalised entry
+ // en compilation fail some times
+ //+ File.pathSeparator + System.getProperty("java.class.path");
+
+ // Ajout des jars
+ for (Enumeration<?> e = CompileHelper.class.getClassLoader()
+ .getResources("META-INF/MANIFEST.MF"); e.hasMoreElements();) {
+ URL url = (URL) e.nextElement();
+ if (log.isDebugEnabled()) {
+ log.debug("Found manifest : " + url);
+ }
+ if ((url != null) && url.getFile().startsWith("file:/")) {
+ String jarName = url.getPath().substring(5,
+ url.getPath().indexOf("!"));
+ if (!result.contains(jarName)) {
+ result += File.pathSeparator + jarName;
+ }
+ }
+ }
+
+ // chatellier : mais sous eclipse par exemple, on a besoin du classpath
+ // on test que le class path n'est pas un jar et qu'il n'apparait
+ // pas deja :
+ String systemClassPath = System.getProperty("java.class.path");
+ String[] systemClassPathes = systemClassPath.split(File.pathSeparator);
+ for (String path : systemClassPathes) {
+ String absolutePath = new File(path).getCanonicalPath();
+ if (!result.contains(absolutePath)) {
+ result += File.pathSeparator + absolutePath;
+ }
+ }
+
+ if (log.isDebugEnabled()) {
+ log.debug("CLASSPATH : " + result);
+ }
+
+ return result;
+ }
+
+
+
+
+
+
+
+
+
+}
Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/CompileHelper.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Added: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java (rev 0)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java 2011-07-08 14:47:15 UTC (rev 1071)
@@ -0,0 +1,15 @@
+package org.nuiton.wikitty.publication.externalize;
+
+
+public class WikittyPublicationClassLoader extends ClassLoader {
+
+
+ public Class<?> addClass(String name, byte[] b ){
+ int off = 0;
+ int len = b.length;
+ return super.defineClass(name, b, off, len);
+ }
+
+
+
+}
Property changes on: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationClassLoader.java
___________________________________________________________________
Added: svn:mime-type
+ text/plain
Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java
===================================================================
--- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-08 10:26:15 UTC (rev 1070)
+++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalize.java 2011-07-08 14:47:15 UTC (rev 1071)
@@ -3,6 +3,7 @@
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
+import java.io.PrintWriter;
import java.util.List;
import java.util.Set;
import java.util.jar.JarEntry;
@@ -10,10 +11,14 @@
import java.util.jar.JarOutputStream;
import java.util.jar.Manifest;
+import org.apache.commons.lang.StringEscapeUtils;
+import org.apache.commons.lang.StringUtils;
import org.nuiton.util.ApplicationConfig;
import org.nuiton.util.ArgumentsParserException;
import org.nuiton.util.FileUtil;
+import org.nuiton.util.StringUtil;
import org.nuiton.util.ZipUtil;
+import org.nuiton.wikitty.ScriptEvaluator;
import org.nuiton.wikitty.WikittyConfigOption;
import org.nuiton.wikitty.WikittyProxy;
import org.nuiton.wikitty.WikittyServiceFactory;
@@ -24,12 +29,14 @@
import org.nuiton.wikitty.publication.entities.WikittyPubDataHelper;
import org.nuiton.wikitty.publication.entities.WikittyPubText;
import org.nuiton.wikitty.publication.entities.WikittyPubTextHelper;
+import org.nuiton.wikitty.publication.entities.WikittyPubTextImpl;
import org.nuiton.wikitty.publication.synchro.PropertiesExtended;
import org.nuiton.wikitty.publication.synchro.WikittyFileUtil;
import org.nuiton.wikitty.publication.synchro.WikittyPublicationFileSystem;
import org.nuiton.wikitty.search.Criteria;
import org.nuiton.wikitty.search.PagedResult;
import org.nuiton.wikitty.search.Search;
+import org.nuiton.wikitty.search.operators.Element;
/**
* Entry point for the main externalize functionnality
@@ -44,6 +51,9 @@
public static String VERSION_SUFFIX = ".version";
public static String EXTENSION_SUFFIX = ".extension";
+
+ public static String SOURCE_EXTENSION = ".java";
+ public static String COMPILED_EXTENSION = ".class";
/*
* Class don't have to be instantiate
@@ -145,14 +155,35 @@
String content = WikittyPubTextHelper.getContent(wikit);
+ // TODO 2011-07-08 change this later or not, java source will be
+ // erase by the second file.
+
// Write original file
wikittyFile = new File(
tempDirectory.getAbsolutePath()+File.separator+
labelPath + name + "." + extension);
wikittyFile.createNewFile();
FileUtil.writeString(wikittyFile,content );
+
+ WikittyPubText currentPubText= new WikittyPubTextImpl(wikit);
+
+ File javaFile = new File(tempDirectory.getAbsolutePath()+File.separator+
+ labelPath + name + SOURCE_EXTENSION);
+ javaFile.createNewFile();
+ String codeClass = getCode(currentPubText);
+ FileUtil.writeString(javaFile, codeClass);
+
+ File classDirectory = new File(tempDirectory.getAbsolutePath()+File.separator+
+ labelPath );//+ name + COMPILED_EXTENSION);
+ //classFile.createNewFile();
+
+ PrintWriter writer = new PrintWriter(System.out);
+ // compile
+ CompileHelper.compile(tempDirectory, javaFile, classDirectory,writer );
+
+
// write properties
idProperties.put(id, labelPath + name);
metaProperties.put(id + EXTENSION_SUFFIX,
@@ -218,4 +249,54 @@
+ public static String getCode(WikittyPubText wikitty){
+ String content =wikitty.getContent();
+ String mimeType = wikitty.getMimeType();
+ String className=wikitty.getName();//+"PublicationClass";
+ String script="";
+ String classContent = "";
+
+ //Set<String> labels = (Set<String>) wikitty.getField(WikittyLabel.EXT_WIKITTYLABEL, WikittyLabel.FIELD_WIKITTYLABEL_LABELS);
+ //classContent += "package org.nuiton.wikitty.publication;" ;
+ //classContent += "package "+ labels.toArray()[0].toString() +";";
+ classContent += "import org.apache.commons.logging.Log;";
+ classContent += "import org.apache.commons.logging.LogFactory;";
+ classContent += "import org.nuiton.wikitty.ScriptEvaluator;";
+ classContent += "import "+ AbstractDecoredClass.class.getName() + ";";
+ classContent += "import java.util.*;";
+
+ classContent += "public class " + className + " extends " + AbstractDecoredClass.class.getSimpleName() + " {";
+
+
+ classContent += "public Object eval(Map<String, Object> bindings ) throws Exception {";
+
+
+
+
+
+ if (mimeType!="java"){
+ classContent += "Object result = null;";
+ classContent += "String content = \""+StringEscapeUtils.escapeJava(content) +"\";";
+ classContent += "String mimeType = \""+StringEscapeUtils.escapeJava(mimeType) +"\";";
+ classContent += "String criteriaName= \""+ Element.ELT_ID+":"+wikitty.getWikittyId()+"\";";
+ classContent +=" result = ScriptEvaluator.eval(null, criteriaName, content, mimeType, bindings);";
+ classContent += "return result;";
+ } else {
+
+ }
+
+
+
+
+ classContent += "\n}\n}\n";
+
+
+
+
+ return classContent;
+ }
+
+
+
+
}
1
0