r1079 - in trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication: . action externalize synchro
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 */
participants (1)
-
mfortun@users.nuiton.org