From 5914bcc8c2f19ad52b8733dd3fe1ae260d73218c Mon Sep 17 00:00:00 2001 From: Derek Hulley Date: Thu, 6 Mar 2008 21:28:43 +0000 Subject: [PATCH] Merged V2.2 to HEAD 7653: Update and added deployment icons 7655: Fixed multithreaded test case to handle case where threads can't get started due to lack of available DB connections. 7657: AR-1903: Text attachments should be treated the same way as other attachments. 7661: Fixed duplicate index creation for column that is also declared unique 7662: Additional indexes related to permissions 7664: Fixed query for specific property types 7667: Used existing attachable aspect for email attachments - effectively reversing association direction. 7682: Added AVM Console page to webapp (admin user protected) 7683: Merged V2.1 to V2.2 7642: Fix for WCM-949 7668: Debugging output for getAPath(). Possible partial fix for LazyInitialization errors seen by some customers 7672: Fixed sub optimal tree pruning in filesystem deployment git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@8442 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261 --- config/alfresco/web-client-config-dialogs.xml | 4 +- .../alfresco/web-client-config-properties.xml | 6 + .../images/icons/delete_deploy_reports.gif | Bin 619 -> 627 bytes .../icons/delete_deploy_reports_large.gif | Bin 0 -> 1481 bytes source/web/images/icons/release_server.gif | Bin 597 -> 605 bytes .../web/images/icons/release_server_large.gif | Bin 0 -> 1342 bytes source/web/jsp/admin/avm-console-help.txt | 281 ++++++++++++++++++ source/web/jsp/admin/avm-console.jsp | 129 ++++++++ 8 files changed, 418 insertions(+), 2 deletions(-) create mode 100644 source/web/images/icons/delete_deploy_reports_large.gif create mode 100644 source/web/images/icons/release_server_large.gif create mode 100644 source/web/jsp/admin/avm-console-help.txt create mode 100644 source/web/jsp/admin/avm-console.jsp diff --git a/config/alfresco/web-client-config-dialogs.xml b/config/alfresco/web-client-config-dialogs.xml index eb6f5946e3..c68e1ab4f7 100644 --- a/config/alfresco/web-client-config-dialogs.xml +++ b/config/alfresco/web-client-config-dialogs.xml @@ -283,11 +283,11 @@ description-id="monitor_deployment_desc" show-ok-button="false" /> + + + + + + diff --git a/source/web/images/icons/delete_deploy_reports.gif b/source/web/images/icons/delete_deploy_reports.gif index 65f6ff07b76083cac4b40bbed8a1363f6cf091f6..d07eaf6e15556c07dfb88b08a866efd0bce55799 100644 GIT binary patch delta 593 zcmV-X0FMe0 z?CtXM^85V!?Ck92<>lGf*zWD^=;-J5_V$T}h6t_y39tWu($Uf8=H}qw;HIUf_xJde zk&)8U($mt>#KXh%^!38Q!PeB&ySlpF+}z^f;qvnHs;Q~{{ruF^)9>!??(Xf^*Vo+K z+kt<6>+9_2=jZYA^N5Iu>gww9^YhQn&akkskBp4-^z`80-}(6X=jP^!g@v-Rvd6~8 z`T6;fj*YlnwzuHl;Naol>FVm{<>lVq-uL(SjEain+9j*;J&`T zqM@O{zrX3}>dwv0@bK`-$jH3AyXooZkByAJzPgv^si0-c0x23>?$K=B6^4^z+)fCvDLhZ73}l+ehr41$v zt<`$)@WJ1|f8M=&`|{1Iq$LCL9ZgM5;1DH&&;h9h z#RUWVg$7$|l@v8c7q?6n#-3hzHX&JIBmV$9X4T#vb01+gA5njfR0q$DS&E_}BJBQR zoR(g!d9$qiMg68q1)7+0dC#&D7n7Ef4h{-64$R8VN@BF-l{gl1Eg(5NJO56yp@~V5 zNr+jfZ%$B9a$0)6y_^}}r%wV|cfMyiafNY*h4Vx%SrD9l?96P%$PH&Ee`koDox|4M zaKWjNyH8K@!rI0k&pgESxMf`~oDl4sK3RQ#&BaF(7Bd(m9O@7_n8?!6_?l;xMPrj| Qm$*U9mWaaj(FzRK0FAj?p#T5? diff --git a/source/web/images/icons/delete_deploy_reports_large.gif b/source/web/images/icons/delete_deploy_reports_large.gif new file mode 100644 index 0000000000000000000000000000000000000000..576b17f23b36f1ef612f59f4d017f904577eb07d GIT binary patch literal 1481 zcmdUui#O8?0LOpWW)?N9nz*v+oZ`~9a=JvFO(d_%WoZ)Abx-A1hPveF+J?25*KNzn zxa2i9jBs4SHm@0FkA zRyH#;GdemtH8mCSPtVxcSXx@z%F4>z+}zsQ+S1a}`}gnFYPCY4n4O*d@Zm#eXJ9eF!uxK#-&0ajii?Z+eKkj(x<*Du#>U3_l}BT<0?<$WEjh0D>N%~gt^O4; z=~6-HUo0Y#c%?iMops^u+qY~sJ2^QyypHYT<3puV6A}`7dwU6GcR3tRd3kw7MMY9l zk~QZtn(JwtX8Y#N8%(yB2QMU8_^4^TCowT`aB#4vr>Cl_Dmy#-9Pirj@bK8QGAAb| zARqu=c(r2i-=kd53%pogUtjm)Yv<3OKbqx15d4XLcIkS}qXX=-F^$}k{$_L5X>V`u z=H}+^>7kkB*BTx}e?#6jK{3b`;cz4j z0!-jS_X+xyI<7F|;}nP+5IpB4FktE1=c%L#2W_f3(IpdjT0?Y3X-a_@Oh;nLw@|CU z#DL-G4LAC!S|K*#@o12TASfvxfcc_y zAV#E>mIMA~BpjXq7m6}=AcAE(bKn<8AH&Q5kMDM9dT2i=@gfY2z=<-S+#`x0rU@Fc zE-c+U36a9m($+J%;g*gJxdVv6K)(s?>Hdp2s`f#(hF}oZZhr`0xnLpz{~Q39q@+(E z)wzi>d-)y&_x@pEzvHYWK!Js7=aK!b;JY!KC01Zebtn~V=v<`4^H@(})VND8L&Zh) z?N)qUqk@|ZBvWA6YC_)wN~mB4!tn*aSW#LneKneghEAejE6nL=WM?yPXEDgoCLmAZp~HiVI*$|!j>)X_fq^behxJ-FRu=>~{0C#8j2Zv{ literal 0 HcmV?d00001 diff --git a/source/web/images/icons/release_server.gif b/source/web/images/icons/release_server.gif index 9342b3ed4e4db0ca1991f3c0c600f738b5dea9a1..46f74022999594ebdea75afb0b51d395d2da28d9 100644 GIT binary patch delta 490 zcmV{r;k;uyb{A?(y}*$IH6Cw!zNY)7jhH;NjQZ-jJN9_V@RUn4<6T@!{m=!OhyV zy25{lkbZ`aj+C5`mYu7yxTUMI)7<6e=<3ec;;OK?$<*I}k(Zvs&)c%Nz~t%g)Y#hD z;OMTiy6f%jiIJJAu($mD{nOdn^Y!@c@bui_;py%2`}_Uj<>il-o#yH4uC%<@+}^gl z!?C!(^Yrwkth4v|`?|o!rmVEZ$<6%y{;##XrK_{V(c6%ho%8hd#nIf{;Nsrp?6kYV z;pF9_sITe^?d|XK_1N6r|NsA!5dnOYAOQ$}A^8LW002_}EC2ui01yBW000NNfDQzM zgo6%Kh=~IVjEzJv9f^uI773Ov0+|4t0Eh!X2@4BG0tlw32%Q5ml?gZk6#=rc6{=AU zxHAGi0S3MSNvbsz1qB-d7rn|Cswo8;8bJary}wYZOa&-CJOVkhvLdQ01w}ed0yh{@ zvrZVQAq6BaECMtV4EPdDsv`wLKOY24kiu!g4pk)zEO-J!fQkqYB1VXzN(r$790VNL g$nk(G2oN%4IB_JC08X8z2rA^k1d<_=5CsANJLS*=UjP6A delta 482 zcmV<80UiF`1l0t8M@dFFIbje05CG-?00000|NsB|{Qmp<{r&y^{QUj%_4tmIoTaO? zqNuR0w7jaYxTdVMw7SBwxWKNny6*Ay?eO&E>F??7@_&br!Ohx;kC%~`o{*NEqNuN{ zvAC+Rx23DHw!FiywY=Hj=yH36!_V7(hK_@alZla;$<*I}&e-CQmYvhw<)y5%vADn9 z20}> zjEw>X2Z@RUHzSrLP?=AgPlz=zBMAuzP*bL-Q=K&il_MumOir@0OsX#sxDilIPKi!3 zsuMFHAQVtay~#?d5+Dr?EKp0mh)zkWD$T5g28Z;_Y Y2%#er6i%H22r7i(0uC3F5CsANJ2GJdQvd(} diff --git a/source/web/images/icons/release_server_large.gif b/source/web/images/icons/release_server_large.gif new file mode 100644 index 0000000000000000000000000000000000000000..32065f06541ae8b59a8c7003804d09e7ab90f7ea GIT binary patch literal 1342 zcmeH`=}*&l0LH(i1q( z&8Zw4799NALR$(wIOM1bzXIb3$XJ23^ezPog+l4g+3D;33wz!?FFx;{PoDV1xTxq1 zEWiRg9S{mjvThb+<1?SsQ$GFd61|C^c_Y8QM~KfO?(Xdw&9)9f|Fv6p2?ZtBZx^ZO z)qP`<&CSi$u0DQeZ(BFad-}rZbVe|=+>YlhZ9Oy=uWww!X&1ob61&~ez;0#pyXO{l z1H)sqQKd*CWpO(NFFIu^O%tzc&1ht_v^TeQbK0MY#L{vKby_NGY;F_FmASWan4FG^ z8d_y7eMTzRuNtgY8;!-c+wIl$3@Vc=63^Ds*mj4#fz5{)oaWXZ3dE|RHgP+iskHN| zx%tW(x>7s;xSm-{ZIURII=!CCYoP0z|KHiv3qmC1Q};|J2PNHIMt*DmV1 zdk1^RB!5oIr{xQjdZuDtzp`$Y%`I?V_W;4kU2;Z>V;%X;1N3Y*`hUo%k|+zJY9 z!(`qtn?*8hhd{WpYM`_Dh7HS0v1V&~$7;21@9eCbtiqSGGPOphUs+q<5J_eq{9Xq! zxDvH4^Je~%VI%KuSq;RZa|L5FDw$e6BbAwL4#(zpEK9}}3~6+R`QaBXeWqw$0YC}AqnmJGl2Qjfl_cLC>#x)EB+<${cLW|B*k=cX7WU1OF0txQq8y zFWy6O3XM%6x|SUXi~BNhBAo;rm@C*N;=)+<-|{;b%9Fu3ChB)m8w1@jQ_YD0+Y2P4?S^Y5;0d7)wzH8S}?9;MZ)t0DW$}c zb=02PNlA)I0{fSy0z!_!7d_UEmm09%cap%Hj_4)vd+H&tb@i{2=tBQQKb#vn_&C|e z4hOuC zUjD5#H4BA3hp4)oorS3E7ErjVj2vx1AoK8PH2>-dNY8Fz>qn0;xNl7hTiU-* bZ{}QHln%WS8bXG7uv=KTi{C+iA8_(tUF=+Q literal 0 HcmV?d00001 diff --git a/source/web/jsp/admin/avm-console-help.txt b/source/web/jsp/admin/avm-console-help.txt new file mode 100644 index 0000000000..551e98cbfd --- /dev/null +++ b/source/web/jsp/admin/avm-console-help.txt @@ -0,0 +1,281 @@ +Help For The AVM Console. +------------------------- + +Basic Syntax: +Enter commands into the Command box of the form: + + command, arg1, arg2, arg3, ... argn + +Enter further data into the Optional Data box for +command like write, create that require input data. + +Click Execute to run the command. + +Individual Commands: + +ls - Lists the contents of the given directory. + +ls, avmpath, #versionnumber# + +avmpath is a valid avm path which are of the form: + + storename:/name/name/name.../name + + The root of the store is simply + storename:/ + +#versionnumber# is an integer constant indicating +the version number. -1 is used to reference the 'HEAD' +version. + +------ + +lsr - Lists the contents of the given directory recursively. + +lsr, avmpath, #versionnumber# + +avmpath and #versionnumber# as above. + +------ + +lsrep - Lists all the avmstores. + +lsrep + +------ + +lsver - Lists the versions in a given store. + +lsver, storename + +storename is the name of the store (alphanumeric). + +------ + +mkrep - Create a new store. + +mkrep, storename + +storename as above. + +------ + +load - Loads content recursively into an avm directory. + +load, fspath, avmpath + +fspath is a local filesystem path. Use '/'s to +be safe, even on windows. +avmpath as above and must be a path to a directory. + +------ + +mkdir - Create a new directory + +mkdir, avmpath, name + +avmpath is as above and must point to a directory. +name must be a valid Alfresco path component name. + +------ + +mkbr - Create a branch + +mkbr, srcavmpath, dstavmpath, name, #versionnumber# + +srcavmpath is a valid avmpath +dstavmpath is a valid avmpath to a directory +name is a valid path component name. + +------ + +mkldir - Create a new layered directory + +mkldir, targetavmpath, avmpath, name + +targetavmpath is a valid avmpath to a directory which + will be what the new layered directory is transparent to. +avmpath is and avmpath to the directory which will contain + the new layered directory. +name is a valid path component name. + +------ + +rename - Renames a node from one place to another. + +rename, srcdiravmpath, srcname, dstdiravmpath, dstname + +srcdiravmpath is the avm directory that contains the node + to be renamed. +srcname is the name of the node to rename. +dstdiravmpath is the avm directory that the renamed + node will live in. +dstname is the name of the renamed node. + +------ + +cp - Copies a file from one place to another. + +cp, avmpath, #versionnumber#, diravmpath, name + +avmpath is the path to the file to copy. +#versionnumber# is as above. +diravmpath is the directory in which the copy will +reside. +name is the name of the copy. + +------ + +snap - Creates a snapshot (a new version of an +avmstore). + +snap, storename + +storename is the name of the store to snapshot. + +------ + +cat - Shows the textual content of a node. Sorry no binary +viewing. + +cat, avmpath, #versionnumber# + +avmpath as above. +#versionnumber# as above. + +------ + +rm - Remove a node. + +rm, avmpath, name + +avmpath is a pointer to a directory. +name is the name of the node in that directory +to remove. + +------ + +rmrep - Purges a store, i.e. makes it truly go away. + +rmrep, name + +name is the name of the store to purge. + +------ + +rmver - Purges a particular version of a store. + +rmver, name, #versionnumber# + +name is the name of the store. + +#versionnmber# is the version to purge. + +------ + +write - Writes content to an existing file. + +write, avmpath + +avmpath is a path to a file. + +This command expects the content to be written in +the Optional Data box. + +------ + +create - Create a new file. + +create, avmpath, name + +avmpath is a path to a directory. +name is the name to give the new file. + +This command expects the content to be written in +the Optional Data box. + +------ + +stat - Get information on a node. + +stat, avmpath, #versionnumber# + +avmpath as above. + +#versionnumber# as above. + +------ + +getnodeproperties - List all properties of a node. + +getnodeproperties, avmpath, #versionnumber# + +avmpath as above. + +#versionnumber# as above. + +------ + +descnode - Describes a node (including lock information). + +descnode, avmpath, #versionnumber# + +avmpath as above. + +#versionnumber# as above. + +------ + +deletenodeproperty - Delete a property of a node. + +deletenodeproperty, avmpath, #versionnumber#, qname + +avmpath as above. + +#versionnumber# as above. + +qname - a property name in the form {namespaceURI}localName + +------ + +history - Get a list of the previous versions +of a node. + +history, avmpath, #versionnumber#, #count# + +avmpath as above. +#versionnumber# as above. +#count# The number of versions into the past to list. +-1 means all. + +------ + +statstore - Show information about a store. + +statstore, storename + +storename The name of the store. + +------ + +compare - Compares two trees. + +compare, avmpath, #versionnumber#, avmpath, #versionnumber# + +------ + +update - Promotes a node from one tree to another. + +update, avmpath, #versionnumber#, avmpath + +------ + +resetLayer - Resets a layer. + +resetLayer, avmpath + +______ + +flatten - Flattens a layer against a target tree. + +flatten, avmpath, avmpath diff --git a/source/web/jsp/admin/avm-console.jsp b/source/web/jsp/admin/avm-console.jsp new file mode 100644 index 0000000000..93f251c773 --- /dev/null +++ b/source/web/jsp/admin/avm-console.jsp @@ -0,0 +1,129 @@ +<%-- + * Copyright (C) 2005-2007 Alfresco Software Limited. + + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + + * As a special exception to the terms and conditions of version 2.0 of + * the GPL, you may redistribute this Program in connection with Free/Libre + * and Open Source Software ("FLOSS") applications as described in Alfresco's + * FLOSS exception. You should have recieved a copy of the text describing + * the FLOSS exception, and it is also available here: + * http://www.alfresco.com/legal/licensing" +--%> +<%@ taglib uri="/WEB-INF/repo.tld" prefix="r" %> +<%@ page import="java.util.*,java.io.*,org.alfresco.repo.avm.*,org.alfresco.repo.avm.util.*,org.alfresco.service.cmr.avm.*,org.alfresco.service.cmr.repository.*,org.alfresco.repo.security.authentication.*,org.alfresco.service.cmr.avmsync.*,org.alfresco.service.cmr.security.*,org.alfresco.service.cmr.avm.locking.*" %> + +<%! + static AVMService fgService; + static BulkLoader fgLoader; + static AVMInterpreter fgInterpreter; + + static + { + fgService = (AVMService)RawServices.Instance().getContext().getBean("AVMService"); + fgLoader = new BulkLoader(); + fgLoader.setAvmService(fgService); + fgInterpreter = new AVMInterpreter(); + fgInterpreter.setAvmService(fgService); + fgInterpreter.setAvmSyncService( + (AVMSyncService)RawServices.Instance().getContext().getBean("AVMSyncService")); + fgInterpreter.setAvmLockingService( + (AVMLockingService)RawServices.Instance().getContext().getBean("AVMLockingService")); + fgInterpreter.setBulkLoader(fgLoader); + } + + static String EscapeForHTML(String data) + { + StringBuilder builder = new StringBuilder(); + int count = data.length(); + for (int i = 0; i < count; i++) + { + char c = data.charAt(i); + switch (c) + { + case '<' : + builder.append("<"); + break; + case '>' : + builder.append(">"); + break; + case '"' : + builder.append("""); + break; + case '&' : + builder.append("&"); + break; + case '\'' : + builder.append("'"); + break; + case '\\' : + builder.append("\"); + break; + default : + builder.append(c); + break; + } + } + return builder.toString(); + } +%> + + + + + + + +
+ Alfresco + + AVM Console +
+ + <% + String command = request.getParameter("command"); + if (command != null) + { + long start = System.currentTimeMillis(); + String data = request.getParameter("data"); + data = data + "\n\n"; + BufferedReader in = new BufferedReader(new StringReader(data)); + String result = fgInterpreter.interpretCommand(command, in); + out.println("
Output:
"); + out.println(EscapeForHTML(command)); + out.println(); + out.println(EscapeForHTML(result)); + out.println((System.currentTimeMillis() - start) + "ms"); + out.println("
"); + } + else + { + command = ""; + } + %> + +
+

Command:

+

Optional Data:

+ +

+ Help! +
+ + + +