r1123 - in trunk/wikitty-publication/src: main/java/org/nuiton/wikitty/publication main/java/org/nuiton/wikitty/publication/action main/resources test/java/org/nuiton/wikitty/publication test/java/org/nuiton/wikitty/publication/externalize test/java/org/nuiton/wikitty/publication/synchro
Author: mfortun Date: 2011-08-11 16:33:36 +0200 (Thu, 11 Aug 2011) New Revision: 1123 Url: http://nuiton.org/repositories/revision/wikitty/1123 Log: *mimetype handling improved Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/MimeTypePubHelper.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/UiCodeDecorator.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyFileUtil.java trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java trunk/wikitty-publication/src/main/resources/struts.xml trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/WikittyPublicationFallbackServiceTest.java trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalizeTest.java trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystemTest.java trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationSynchronizeTest.java Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/MimeTypePubHelper.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/MimeTypePubHelper.java 2011-08-11 09:49:59 UTC (rev 1122) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/MimeTypePubHelper.java 2011-08-11 14:33:36 UTC (rev 1123) @@ -24,14 +24,12 @@ */ package org.nuiton.wikitty.publication; -import java.util.HashMap; import java.util.LinkedList; import java.util.List; -import java.util.Map; - import javax.script.ScriptEngineManager; import org.apache.commons.collections.BidiMap; import org.apache.commons.collections.bidimap.DualHashBidiMap; +import org.nuiton.util.StringUtil; import org.nuiton.wikitty.ScriptEvaluator; /** @@ -54,7 +52,20 @@ protected ScriptEngineManager manager; protected UiCodeDecorator decorator; + static public String COMMON_MIME_SEP ="/"; + static public String PUBLICATION_MIME_SEP="."; + + static public String PREFIX_MIME_PUB_TEXT= "text"; /** + * match pub text that must be converted via ui decorateur + * text/\w*\.\w* + * as + * text/html.javascript + */ + static public String REGEX_PUB_TEXT_TRANSFORM = "text/\\w*\\.\\w*"; + + + /** * The default mime type */ public static String DEFAULT_MIME_TYPE = "application/octet-stream"; @@ -67,13 +78,23 @@ manager = ScriptEvaluator.getScriptEnginManager(null); - bidiMap.put("wp", "application/javascript"); - bidiMap.put("js", "application/javascript"); - bidiMap.put("htmlp", "htmlp/javascript"); + bidiMap.put("wp", "text/javascript"); + //bidiMap.put("js", "text/javascript"); + bidiMap.put("htmljs", "text/html.javascript"); bidiMap.put("jpg", "image/jpeg"); bidiMap.put("png", "image/png"); - bidiMap.put("java", "application/java"); + bidiMap.put("java", "text/java"); compilable.add("application/java"); + + + /* + * + * si type commence par text alors -> pubtext + * si text/machin.truc ça veut dire qu'on doit le préprosesser + * avec le bon truc + * + * + */ } @@ -127,11 +148,48 @@ public boolean isPubTextMime(String mimeType) { // will check if there is an engine for the mimetype - boolean result = manager.getEngineByMimeType(mimeType)!=null; - result = result || decorator.isMimeTypeUi(mimeType); + boolean result = false; + + // check if mimetype startwith the PUbtext prefix + result = mimeType.startsWith(PREFIX_MIME_PUB_TEXT); + + // if mimetype match the regex for wikitty pub text that must be + // decorate by uidecorator, + if (mimeType.matches(REGEX_PUB_TEXT_TRANSFORM)){ + String[] mimeTab = StringUtil.split(mimeType, COMMON_MIME_SEP); + // construct final mime of the script after transformation + String originalMime = mimeTab[0]; + originalMime+=COMMON_MIME_SEP+StringUtil.split(mimeType,PUBLICATION_MIME_SEP)[1]; + + //check if there is an engine to execute final script + result = manager.getEngineByMimeType(originalMime)!=null; + // check if there rules to transform the script + result = result && decorator.isDecorated(mimeTab[1]); + } + return result; } + + public String pubUiMimeToConverterOption (String mime){ + String result = mime; + if (mime.matches(REGEX_PUB_TEXT_TRANSFORM)){ + result = StringUtil.split(mime, COMMON_MIME_SEP)[1]; + } + return result; + } + + public String pubUiMimeToTargetMime (String mime){ + String result = mime; + if (mime.matches(REGEX_PUB_TEXT_TRANSFORM)){ + String[] mimeTab = StringUtil.split(mime, COMMON_MIME_SEP); + // construct final mime of the script after transformation + result = mimeTab[0]; + result += COMMON_MIME_SEP+StringUtil.split(mime,PUBLICATION_MIME_SEP)[1]; + } + return result; + } + /** * used to check if a file have to be converted as a wikittyPubText * with his extension similar to : @@ -166,5 +224,7 @@ public boolean isReallyCompilable(String mimeType){ return compilable.contains(mimeType); } + + } Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/UiCodeDecorator.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/UiCodeDecorator.java 2011-08-11 09:49:59 UTC (rev 1122) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/UiCodeDecorator.java 2011-08-11 14:33:36 UTC (rev 1123) @@ -34,7 +34,7 @@ protected String MIME_SEP = "/"; protected Map<String, FilterOption> filtersOptions; - protected Set<String> firstPartMimeHandled; + static protected FilterOption defaultFilterOption; @@ -56,11 +56,11 @@ public UiCodeDecorator() { filtersOptions = new HashMap<String, FilterOption>(); - firstPartMimeHandled = new HashSet<String>(); + // add basic value js and htmlp - filtersOptions.put("javascript", defaultFilterOption); - firstPartMimeHandled.add("htmlp"); + filtersOptions.put("html.javascript", defaultFilterOption); + } public Wikitty transformPubUIToPubText(Wikitty wikitty) throws IOException { @@ -140,16 +140,21 @@ } - public boolean isTransformationNeeded(WikittyPubData wikitty) { + public boolean isTransformationNeeded(WikittyPubText wikitty) { String mime = wikitty.getMimeType(); return isMimeTypeUi(mime); } public boolean isMimeTypeUi(String mime){ - String[] mimeParsed = StringUtil.split(mime, MIME_SEP); - boolean result = firstPartMimeHandled.contains(mimeParsed[0]); - return result; + MimeTypePubHelper helper = new MimeTypePubHelper(); + String mimeKeyOption = helper.pubUiMimeToConverterOption(mime); + return filtersOptions.containsKey(mimeKeyOption); } + + public boolean isDecorated(String string) { + return filtersOptions.containsKey(string); + + } } Modified: trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyFileUtil.java =================================================================== --- trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyFileUtil.java 2011-08-11 09:49:59 UTC (rev 1122) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/WikittyFileUtil.java 2011-08-11 14:33:36 UTC (rev 1123) @@ -7,10 +7,6 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.util.FileUtil; import org.nuiton.util.StringUtil; -import org.nuiton.wikitty.WikittyUtil; -import org.nuiton.wikitty.entities.WikittyLabel; -import org.nuiton.wikitty.entities.WikittyLabelAbstract; - /** * * Class that containt utils method when handle wikitty store as file. 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-08-11 09:49:59 UTC (rev 1122) +++ trunk/wikitty-publication/src/main/java/org/nuiton/wikitty/publication/action/PublicationActionEval.java 2011-08-11 14:33:36 UTC (rev 1123) @@ -142,7 +142,9 @@ } else { UiCodeDecorator decorator = new UiCodeDecorator(); + log.debug("Check if transformed needed"); if (decorator.isTransformationNeeded(w)) { + log.debug("transformeneed"); try { w = decorator.transformPubUIToPubText(w); } catch (IOException e) { Modified: trunk/wikitty-publication/src/main/resources/struts.xml =================================================================== --- trunk/wikitty-publication/src/main/resources/struts.xml 2011-08-11 09:49:59 UTC (rev 1122) +++ trunk/wikitty-publication/src/main/resources/struts.xml 2011-08-11 14:33:36 UTC (rev 1123) @@ -78,7 +78,7 @@ </package> <!-- Action aviable only to logged user extends="restrictedArea" --> - <package name="publication" extends="restrictedArea"> + <package name="publication" extends="publicArea"> <action name="*/edit/*" class="org.nuiton.wikitty.publication.action.PublicationActionEdit"> @@ -115,7 +115,7 @@ </action> </package> - <package name="fragment" namespace="/fragment" extends="restrictedArea"> + <package name="fragment" namespace="/fragment" extends="publicArea"> <action name="wikittyInfo" class="org.nuiton.wikitty.publication.action.PublicationActionRestoreWikitty"> <result>/WEB-INF/jsp/wikittyInfo.jsp</result> Modified: trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/WikittyPublicationFallbackServiceTest.java =================================================================== --- trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/WikittyPublicationFallbackServiceTest.java 2011-08-11 09:49:59 UTC (rev 1122) +++ trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/WikittyPublicationFallbackServiceTest.java 2011-08-11 14:33:36 UTC (rev 1123) @@ -119,13 +119,13 @@ WikittyPubTextHelper.setContent(pubTextMain, "content_main_" + i); WikittyPubTextHelper.setMimeType(pubTextMain, - "application/javascript"); + "text/javascript"); WikittyPubTextHelper.setName(pubTextMain, "pubtextOnMain_" + i); WikittyPubTextHelper.setContent(pubTextFall, "content_fall_" + i); WikittyPubTextHelper.setMimeType(pubTextFall, - "application/javascript"); + "text/javascript"); WikittyPubTextHelper.setName(pubTextFall, "pubtextOnFall_" + i); pubTextMain.addExtension(WikittyLabelImpl.extensions); @@ -149,7 +149,7 @@ WikittyPubTextHelper.setContent(pubTextMain, "content_onBoth_" + i); WikittyPubTextHelper.setMimeType(pubTextMain, - "application/javascript"); + "text/javascript"); WikittyPubTextHelper.setName(pubTextMain, "pubtextOnboth_" + i); pubTextMain.addExtension(WikittyLabelImpl.extensions); @@ -222,7 +222,8 @@ String originalContent; Wikitty wikittFromFall = proxyOnFallBack.restore(id); - + + System.out.println(wikittFromFall.toString()); originalContent = WikittyPubTextHelper.getContent(wikittFromFall); Wikitty wikitty = proxy.restore(id); @@ -295,7 +296,7 @@ wikitt.addExtension(WikittyPubTextImpl.extensionWikittyPubText); WikittyPubTextHelper.setContent(wikitt, "testSaveContent"); - WikittyPubTextHelper.setMimeType(wikitt, "application/javascript"); + WikittyPubTextHelper.setMimeType(wikitt, "text/javascript"); WikittyPubTextHelper.setName(wikitt, "testSave"); wikitt.addExtension(WikittyLabelImpl.extensions); Modified: trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalizeTest.java =================================================================== --- trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalizeTest.java 2011-08-11 09:49:59 UTC (rev 1122) +++ trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/externalize/WikittyPublicationExternalizeTest.java 2011-08-11 14:33:36 UTC (rev 1123) @@ -88,7 +88,7 @@ WikittyPubTextHelper.setContent(pubText, "content_" + i); - WikittyPubTextHelper.setMimeType(pubText, "application/javascript"); + WikittyPubTextHelper.setMimeType(pubText, "text/javascript"); WikittyPubTextHelper.setName(pubText, "pubtextnum_" + i); WikittyPubDataHelper.setContent(pubData, Modified: trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystemTest.java =================================================================== --- trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystemTest.java 2011-08-11 09:49:59 UTC (rev 1122) +++ trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationFileSystemTest.java 2011-08-11 14:33:36 UTC (rev 1123) @@ -1,7 +1,6 @@ package org.nuiton.wikitty.publication.synchro; import java.io.File; -import java.io.FileReader; import java.io.FileWriter; import java.io.IOException; import java.util.ArrayList; @@ -48,6 +47,8 @@ protected Criteria allCrit; protected File starts; + static protected String PUB_TEXT_MIME = "text/javascript"; + @Before public void init() throws IOException { @@ -90,7 +91,7 @@ pubText.addExtension(WikittyPubTextImpl.extensionWikittyPubText); WikittyPubTextHelper.setContent(pubText, "content_" + i); - WikittyPubTextHelper.setMimeType(pubText, "application/javascript"); + WikittyPubTextHelper.setMimeType(pubText, PUB_TEXT_MIME); WikittyPubTextHelper.setName(pubText, "pubtextnum_" + i); WikittyPubDataHelper.setContent(pubData, @@ -191,7 +192,7 @@ String label = WikittyFileUtil.labelToPath(labels.get(1)); File wikittyOnFS = new File(tempHome.getCanonicalPath() - + File.separator + label + File.separator + "pubtextnum_1.js"); + + File.separator + label + File.separator + "pubtextnum_1.wp"); // check file exist Assert.assertTrue(wikittyOnFS.exists()); @@ -230,7 +231,7 @@ String label = WikittyFileUtil.labelToPath(labels.get(1)); File wikittyOnFS = new File(tempHome.getCanonicalPath() - + File.separator + label + File.separator + "pubtextnum_1.js"); + + File.separator + label + File.separator + "pubtextnum_1.wp"); // check file exist Assert.assertTrue(wikittyOnFS.exists()); @@ -262,7 +263,7 @@ String label = WikittyFileUtil.labelToPath(labels.get(1)); File wikittyOnFS = new File(tempHome.getCanonicalPath() - + File.separator + label + File.separator + "pubtextnum_1.js"); + + File.separator + label + File.separator + "pubtextnum_1.wp"); // check file exist Assert.assertTrue(wikittyOnFS.exists()); Modified: trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationSynchronizeTest.java =================================================================== --- trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationSynchronizeTest.java 2011-08-11 09:49:59 UTC (rev 1122) +++ trunk/wikitty-publication/src/test/java/org/nuiton/wikitty/publication/synchro/WikittyPublicationSynchronizeTest.java 2011-08-11 14:33:36 UTC (rev 1123) @@ -115,12 +115,12 @@ WikittyPubTextHelper.setContent(pubTextMain, "content_main_" + i); WikittyPubTextHelper.setMimeType(pubTextMain, - "application/javascript"); + "text/javascript"); WikittyPubTextHelper.setName(pubTextMain, "pubtextOnMain_" + i); WikittyPubTextHelper.setContent(pubTextFall, "content_fall_" + i); WikittyPubTextHelper.setMimeType(pubTextFall, - "application/javascript"); + "text/javascript"); WikittyPubTextHelper.setName(pubTextFall, "pubtextOnFall_" + i); pubTextMain.addExtension(WikittyLabelImpl.extensions);
participants (1)
-
mfortun@users.nuiton.org