The highlights of this checkin are:
o No need to manually remove virt server work dir anymore
o Now contents of work dir are virtualized in addition
to the jars in memory. Starts / reloads faster,
plus a lot more scalable.
o You can create users & invite them to web project,
delete their sandboxe, etc. Works.
o Virt server picks up new web projects properly
even when these projects were created after
the virt server was started.
Not done:
o Need to play the same game with classes dirs that
I'm doing with lib dirs. Should be easy now.
o Some cleanup is needed in the way that sandboxes
are destroyed. Works, but on the brittle side.
Not urgent.
o Because of problems with RMI auth, you still need
to startup the alfreco webapp before the virt server,
and if one poops out, the auth code does not recover
that well yet. Britt & I will have to deal with
this over the next few days.
Gory details:
root/projects/catalina-virtual/config/server.xml
Turned off autoDeploy entirely.
Now all reloading is explicit via JMX
Put the request dumper valve into a comment.
It's for debugging purposes only (and slows stuff down).
root/projects/catalina-virtual/source/java/org/alfresco/catalina/host/AVMHost.java
Cleaned up api a bit.
root/projects/catalina-virtual/source/java/org/alfresco/catalina/host/AVMHostConfig.java
Recursive reload of webapps.
root/projects/catalina-virtual/source/java/org/alfresco/catalina/loader/AVMWebappLoader.java
Recursive reload of webapps.
root/projects/catalina-virtual/source/java/org/alfresco/catalina/valve/AVMUrlValve.java
Cleaned up & refactoring
root/projects/catalina-virtual/source/java/org/alfresco/mbeans/VirtServerRegistrationThread.java
Using new api from AVMFileDirContext
root/projects/jndi-client/source/java/org/alfresco/jndi/AVMFileDirContext.java
Cleaned up api, made non-fatal log messages 'debug' rather than 'info'.
root/projects/web-client/source/java/org/alfresco/web/bean/wcm/AVMConstants.java
Added new constant.
This file needs to be refactored soon.
root/projects/web-client/source/java/org/alfresco/web/bean/wcm/AddAvmContentDialog.java
Moved virt server notification to doPostCommitProcessing
root/projects/web-client/source/java/org/alfresco/web/bean/wcm/DeleteSandboxDialog.java
Fixed notification of virt server.
root/projects/web-client/source/java/org/alfresco/web/bean/wcm/ImportWebsiteDialog.java
Moved virt server notification to doPostCommitProcessing
root/projects/web-client/source/java/org/alfresco/web/bean/wcm/InviteWebsiteUsersWizard.java
Moved virt server notification to doPostCommitProcessing
root/projects/web-client/source/java/org/alfresco/web/bean/wcm/SandboxFactory.java
Added new property to sandboxes to make recursive reload efficient.
root/projects/web-client/source/java/org/alfresco/web/forms/ServletContextFormDataFunctionsAdapter.java
Now uses new AVMFileDirContext api.
Removed System.err.prinln() statements.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4839 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
. WCM ContentReviewer bug fix - role can no longer seem Forms (as they cannot create - they can only edit existing items)
. Submit dialog bug fix - can now press OK after entering workflow config when the dialog previous displayed an error
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4830 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- using the same hidden upload mechanism as used for uploading schema.
- fixing bug where values aren't being prefilled for rendering engine templates after the first has been uploaded.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4823 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- using xsi:nil to deal with invalid values (based on restrictions) for optional elements. no equivalent solution for attributes which is unfortunate. for attributes, the types will need to be able to accept empty string as a value for all types where no default is specified. this fixes part of the bug with dealing with comboboxes with no default.
- more predictable inclusion of group headers using xf:appearance="repeated" attribute.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4821 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
also fixing a couple bugs related to namespaces within instance data. being more rigorous about placing the namespace prefix in the right place basically.
removing the wrapperelementbuilders from the schemaformbuilder. they were confusing and not used anywhere. (reduces cruft from the schemaformbuilder).
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4816 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- All users can now Read/Browse content in the Staging Area
- None of the user roles (including Content Managers!) can create/edit/delete directly in the Staging Area
- The only exception to this rule is the system admin user - who can do anything anywhere in the app…
- Content Publisher roles can now view other users sandboxes - but in Read mode only
- http://issues.alfresco.com/browse/WCM-211
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4803 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- fixing various upload related bugs (resize issue, not handling file exists exception, not attaching uploaded files to workflow, loosing some of the uploaded files, and probably some more).
- reusing upload_helper.js code from xforms.js. added facility for having the javascript return page return an error and file type image to support xform - doesn't effect other usages (create form).
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4800 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- sizing of selected item lists
- No modified items/no web forms messages added to sandbox views
- Sizing of output path text boxes
- Description textboxes in web project wizard now textareas
- Selected Web Forms list in Create Web Project wizard now looks like lists in Create Form Wizard
- Improved list layout in Configure Templates dialog
- Mimetype of template shown next to name in list in Configure Templates dialog
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4793 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- help cursor mouse over added to help icon
- incorrect alt text removed
- renamed output path pattern help jsp page to standard naming convention
. Found that all "Required Field" images in our JSPs with ALT text were not I18N - find-and-replaced all occurances with an I18Ned message
. Some more WCM UI improvements/fixes
. Fix up of 3rd Party Eclipse project after xalan library changes
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4780 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- fixing row highlight bug in repeats when they're moved around
- attempt to fix move up move down issues for tinymce - but mce is really not behaving at all
- fix for folder icon in manage task screen, but doesn't really solve the problem that inappropriate actions are available.
- some minor fixes for create form wizard summary page.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4772 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
Added debug logging for various things in AVMSyncServiceImpl.
Fixed "from" path in workflow submits so that the ROOT directory
does not get wiped out in the originating sandbox.
Fixed avm.jsp so that it works again.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4771 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
fixing columns in create form wizard to not move around wildy once files are uploaded
fixing some bugs in repeats as a result of the chiba1.3 upgrade.
- xpaths were not being resolved for newly created instances (and shouldn't be)
- xpaths for nested repeats weren't behaving properly
fixed caching issue in edit which was causing the wrong form to be loaded for instance data
using alfresco namespace as defined in NamespaceService
passing namespace uris and prefixes to js to avoid errors if they should change
fixed a bug where the renditions property of forminstancedata was getting duplicate renditions (and thus regenerating way too much stuff when doing an edit)
using an italic 'description not set' when description isn't set in several screens.
using the avm service to set properties in renderingenginetemplateimpl.
upgrading to xalan-2.7.0 in order to be able to use bsf for extension functions.
adding the path that was not found to AVMNotFoundExceptions. very helpful when debugging.
substantial refactoring of rendering engines in preparation for integration with TemplateService.
- implementing a common model as a hash of QNames to objects. for method, providing a simple method wrapper called TemplateProcessorMethod which takes an array of Objects as a parameter, and returns an object. it is up to the template processors to properly convert arguments. a QName is used for the variable name rather than a string in order to include a namespace prefix (needed for xsl, and generally better looking).
- for xsl, using javascript bindings for formdatafunctions, which using liveconnect within rhino to call into the xsl rendering engine to evaluate the function. it ends up generating this js block into a xalan:component within the xsl tempalte:
// gets the handle to the backing java object which can invoke the function based on id
var _xsltp_invoke = java.lang.Class.forName('org.alfresco.web.forms.XSLTRenderingEngine$ProcessorMethodInvoker').newInstance();
// utility to convert js arrays into java
function _xsltp_to_java_array(js_array) {
var java_array = java.lang.reflect.Array.newInstance(java.lang.Object, js_array.length);
for (var i = 0; i < js_array.length; i++) { java_array[i] = js_array[i]; }
return java_array; }
// js handles to each of the form data functions which uses _xsltp_invoke to call the actual method
function _getAVMPath() { return _xsltp_invoke.invokeMethod('_getAVMPath8829055', _xsltp_to_java_array(arguments)); }
function parseXMLDocuments() { return _xsltp_invoke.invokeMethod('parseXMLDocuments12235190', _xsltp_to_java_array(arguments)); }
function parseXMLDocument() { return _xsltp_invoke.invokeMethod('parseXMLDocument15280968', _xsltp_to_java_array(arguments)); }
xml model data is inferred as a root namespace document within the model hash provided.
- for freemarker, things pretty much work as they did before, just i now need to convert values by hand to TemplateModels
fixed a bug with hidden iframe upload. seems like the complexity of actually cloning the file input element is unnecessary and that simply attaching the node in two places within the dom works just fine.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4764 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
svn merge svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4734 svn://svn.alfresco.com:3691/alfresco/BRANCHES/V1.4@4751 .
Ignored 4672, 4676 in accordance with Roy's checkin notices
4735 appeared to be already in HEAD
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4760 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- View previous file version content
- Sorted by most recent version first
- Revert to a previous version action
. Some more changes to Create Web Project wizard from Usability Review
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4756 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- misc ui fixes per usability meeting this morning
- using action node path in XFormsBean since current path isn't reliable in workflow context
- getting location column to work in manage task screen. had to use actioncontext.id for wcm actions since path can be a Path object in workflow screens
- adding property resolvers to AVMNode for common props
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4731 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- added new wcm specific client config file: web-client-config-wcm.xml
- only the workflows as defined in the WCM client config file are now shown in the various wizards
- the upside is that workflows not compatible with AVM objects are no longer shown
- the downside is that when new workflows are deployed in the system they must be added to the config file
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4725 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- Renamed "Import Website Content" to "Bulk Import"
- Action can be used to import an archive of content into any folder, such as a root webapp folder or a sub-folder of content
- Action can now be used to import into a user sandbox rather than just the staging area
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4720 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- not caching the forms list within the web project as it is not being properly refreshed when the web project is edited
- better error handling in create web content for when the workflow has not properly been configured.
- more work on getting edit and preview working from manage tasks screen. it should all be in place now though i am completely unable to preview right now - need to hear back from jon. had to reduce reliance on AVMBrowseBean from actions since the current path is not necessarily properly set since it's outside of a browse context.
- some error handling in rendition if the primary form instance data is not there.
- adding a backward webproject noderef reference to the staging store to make it possible to get web project properties without an avmbrowsebean context
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4708 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
the update message that the virtualization server
gets is the path to the newly added webapp,
not the path to that webapp in the staging area.
For example, if 'bob' is added to the 'ROOT'
webapp of 'mysite', the virt server now
gets: mysite--bob:/www/avm_webapps/ROOT
not: mysite:/www/avm_webapps/ROOT
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4704 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- refactoring to generate and regenerate methods to make it easier to use project level overridden properties, and to at some point (soon) make it possible to make error handling for rendering engines more robust
- added a web project object to encapsulate web project properties and provide a central location for getting forms and rendering engines with web project level overridden properties
- made select default workflow screen match wireframes
- using the same workflowdefault type in the wcm model for web projects and forms.
- using outputpathpattern aspect consistently
- using commons.io to parse paths
- using form name rather than noderef as parameter for selected form from content forms dashlet
- fixed bug where rendition properties noderef wasn't being properly associated with renditions causing problems with regenerate
- using multivalued properties to track renditions
- remove weird registerRendition/registerFormInstanceData calls. no longer necessary since generateRendition and regenerate are done within forminstancedata and rendition
- adding default workflow parameters as property of Form
- adding a unique name property to rendering engine templates to allow for looking one up by name
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4702 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
this: mysite--guest--preview/HEAD/DATA/www/avm_webapps/ROOT/WEB-INF/...
and: mysite--guest--preview/VERSION/v1/DATA/www/avm_webapps/ROOT/WEB-INF/...
rather than: mysite--guest--preview/HEAD/DATA/appBase/avm_webapps/ROOT/WEB-INF/...
and: mysite--guest--preview/VERSION/v1/DATA/appBase/avm_webapps/ROOT/WEB-INF/...
The reason for this is that the actual "appliation base"
is and always has been "avm_webapps"; the original reason
for making the *parent* of this dir called appBase had do
do with the fact that you can have diffrent app bases
for different virtual hosts. However, in the end it causes
way more confusion than it was ever worth, so it's gone now.
The reason for all the modified files is that people were
hard-coding values in many different places, and/or defining
their own constants for something that was needed at a
higher level.
As a temporary measure (I hope), I've defined some rather ugly-looking
constants in JNDIConstants.java, and have used them everywhere:
DIR_DEFAULT_WWW = "www"
DIR_DEFAULT_APPBASE = "avm_webapps"
The reason for calling the parent of the new application base "www"
is that will be the default place that www-centric stuff happens
(therefore, it's also the level at which the overlays take place).
Ultimately, I'd like to turn these into spring configs,
and bring back support for multiple AVMHost nodes within
the same Tomcat... but it's not a priority at the moment.
Please don't hard-code any dirs named "appBase" as the
root level dir in a repo -- it's now "www", and will
change again to a function call later when/if virtual
AVMHosts come back. Keeping them as constants also
helps them to be easier to find when overhauling things.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4696 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- added utility methods to AVMConstants to extract information about stores from their names. this has to be reimplemented to look at store properties rather than inferring things from their names - but it works for now. this also centralizes all the usage of the store name to infer data about it so it'll make it easier later.
- made the problematic constants jon changed private to avoid having this problem happen again
- checked pretty much every usage of buildAVM<bla> to ensure that nothing else was broken. in the process removed the AVM part from the buildAVM<bla> part of the method to shorten it and since it's redundant with the classname AVMConstants in which their contained.
creating workflow sandboxes in a manner consistent with user sandboxes
- added a method to SandboxFactory to create workflow sandboxes. they're created with the name <storeId>--workflow-<guid>
- centralized workflow package creation code in AVMWorkflowUtil.
- refactored sandbox creation code to use new utility methods in AVMConstants and so that at some point it can be further refactored.
getting avm actions to show up in manage task screen for avm workflows
- modified the model to use different packageItemActionGroups for wcm workflows
- modified the AVMWorkflowEvaluator to allow all actions for items in a workflow package
- added some debug output to various classes
- made wcm navigation ids exposed throughout the app since they are now called from workflow jsps.
things that now work that didn't before:
- virtualization now works again with jon's new naming scheme
- some actions from the manage task screen.
known bugs introduced or remaining as a consequence of this change (i'll filed jira issues for these as soon as i commit this):
- i'm inaccurately counting the number of users in a sandbox since it's harder now to differentiate between user main sandboxes and all the other ones that are being created
- preview does not work on assets within the workflow sandboxes
- review and approve workflow does not appear to actually submit once approved. not sure if it did before
- lots of actions still do not work from manage tasks, though edit does appear to.
- i commented out the location column in the manage task screen since the path link was causing me troubles - need to put that back in.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4692 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- refactoring of revert functionality into Undo All and Undo Selected dialogs
. Performance enhancement to Node class - to cache Path value from NodeService and changed appropriate class to use this
. Fix to horribly broken values in AVMConstants
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4690 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
and automatic virtualization server registration so that
now we virtualize on URLs like this:
http://mysite.www--sandbox.ip.localdomain.lan:8180/http://alice.mysite.www--sandbox.ip.localdomain.lan:8180/http://preview.alice.mysite.www--sandbox.ip.localdomain.lan:8180/
Or if you're using EchDNS at ip.alfrescodemo.net (the default):
http://mysite.www--sandbox.127-0-0-1.ip.alfrescodemo.net:8180/http://alice.mysite.www--sandbox.127-0-0-1.ip.alfrescodemo.net:8180/http://preview.alice.mysite.www--sandbox.127-0-0-1.ip.alfrescodemo.net:8180/
The reasons behind this change have to do with:
[1] Allowing wildcard cookies to be shared with subdomains, if desired.
The scenario is that if you have an elaborate webapp that
needs a cookie to function (or some auth), the user "alice"
does not want to have to re-log in to the app just to get
preview functions to work.
[2] Making the mangling scheme compatible with I18N-encoded URLs
See: IDNA (Internationalizing Domain Names In Applications)
RFCs: 3490,3492. The problem with the old scheme was that
relied on the string "--" as a delimiter within host labels,
but IDNA uses "xn--" as a prefix to indicate that a label
was I18N-encoded (and that the app should un-mangle in the
presentation layer). Ugh.
The names of the stores was also rationalized to match the new URL
scheme. The "." delimiting host lables becomes "--" in the
repo's dir name, and the ordering of labels is reversed.
Reasons:
[1] It's nicer to see project-first ordering in the
file system because it's more tab-complete friendly.
It's also prettier visually with "ls -l" because
logically related dirs line-up visually.
[2] It's dangerous to use "." as a character in directory names
because a fully-patched version of IIS might refuse to
serve content off such a path. Weird, huh?
It's too bad that the repo's dir name can't just be exactly
the same as the fqdn (or a portion of it), but this reverse
ordering ended up being the lesser of the available evils,
because it optimizes the user's experience in each relm at
the expense of a small amont of URL <--> file system funkines.
Note that they can't be the same in any case because of the
"--" vs "." issue... so the "identity" mapping was already
a lost cause.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4688 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261