within the webapp. Currently, we don't support either updating
a single-webapp, or removing a single-webapp because the GUI
cannot invite someone to only one webapp within a project.
Therefore, the JMX calls are "updateAllVirtualWebapps"
and "removeAllVirtualWebapps", rather than implying we're
more fine-grained that we actually are.
The case of removal would be particularly misleading
because if you thought you could just get rid of single
webapp, you'd be sadly mistaken.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5072 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
Now the virt server can react properly when a file in WEB-INF
(such as a jar or web.xml file) is submitted to staging.
Details
-------
More testing is needed, but the basic stuff looks ok.
Here's a list of the events within the webapp that
the virt server is now able to receive & handle properly:
o Invite user to web project
o Create web project
o Delete sandbox
o Delete web project
o Submission of files to WEB-INF
The virt server does not yet get:
o Revert events
o Out-of-band changes from CIFS (and probably never will).
The plan to deal with changes made to critical files in WEB-INF
is to have an exlicit control available within the webapp.
It does not yet handle "approved with changes" very gracefully.
That can probably be fixed over the next few days.
Gory details
-----------
projects/core/source/java/org/alfresco/util/VirtServerUtils.java
Moved pattern that detects whether virt server needs
updating in from AVMConstants, due to build dependencies;
now this function is needed by workflow, which is in the
repository package.
projects/repository/config/alfresco/avm-services-context.xml
Added AVMSubmitTransactionListener bean to allow virt
server notification to hapen immediately after the
submit transaction has been committed sucessfully.
projects/repository/source/java/org/alfresco/repo/avm/wf/AVMSubmitPackageHandler.java
Added transaction listner that does the virt server update,
and added the list of staging diffs to AlfrescoTransactionSupport
as a bound resource.
projects/repository/source/java/org/alfresco/repo/avm/wf/AVMSubmitTransactionListener.java
Does the actual notification of the virt server.
The logic in this class still needs some work to handle
"approved with changes" gracefully, but it does do
the right thing when it comes to recursively reloading
staging when a jar or web.xml file is modified.
Light testing so far, but looks ok. Consider this
a point checkin only. A singleton of this class is
instantiated via the Spring config avm-services-context.xml,
and used by AVMSubmitPackageHandler.
projects/web-client/source/java/org/alfresco/web/bean/wcm/AVMConstants.java
Removed the utility function that tests whether or not
updating a file would require the virt server to be notified.
This class would benifit from a major cleanup when time permits.
projects/web-client/source/java/org/alfresco/web/bean/wcm/SubmitDialog.java
Using the function that was moved/renamed from AVMConstants
to VirtServerUtils that tests if a given file update requires
a virt server notification message.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4990 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
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
- 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
- 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
- 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
- refactoring of generate and regenerate calls to take a FormInstanceData object
- adding in support for overriding step title and description properties in wizards so as to be able to format them with parameters
- making the step descriptions in create form wizard reiterate the form name so as to give the user better context
- displaying avm task resources in the manage task screen. still need to get actions working and clean this up a bit.
- making output path patterns sandbox relative
- refactored utility method for combining avm paths sensitive to webapp vs sandbox relative paths.
- adding a default description for generated renditions
todo:
- cleanup some usage of AVMNode from ManageTaskBean
- get actions to appear in manage task screen
- add a multi value property to the web project for all its webapps
- properly use overridden values for forms from the web project settings
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4687 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
so that they now include an "isRecursive" flag.
Modified code in AVMConstants to pass along the
extra arg (hard-coding it to "true", for now,
just as version "-1" is hardcoded).
Later, when we expose the ability to make archived
versions of repositories browsable via the virtualization
server, the updateVServerWebapp and removeVServerWebapp APIs
within AVMConstants.java will need to tunnel along the
version number & recursion flag.
For this to be useful, there will also need to be GUI
support for bringing old versions on/off line.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4648 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- Import of website content
- Edits/uploads to WEB-INF/web.xml, WEB-INF/lib/*, WEB-INF/classes/*
- Addition of new user sandbox
- Removal of a user sandbox
. Fix to generation of website preview url in sandbox display when switching between root webapp folders
. Fix to issue when swapping between web projects that did not contain the same webapp context
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4611 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- Fall back values are used if no virtualisation server is running (with a warning output to the log)
- Values are retrieved and cached for 10 seconds - so if the virtualisation server is started after the main Alfresco server then it will take up to 10 seconds for those values to be updated
. Adding missing NameMatcher impl to compare() call in AVMBrowseBean
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@4602 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- WARNING: this change requires a new DB as the WCM model has changed significantly, yes I have probably broken a few WCM things :)
Previously the following statements were true:
- Most of the model constants were defined in the ContentModel class - including web-client Application specific model items
- WCMModel class was a mix of WCM repository and WCM application model constants
- The applicationModel.xml definition file contained both web-client Application and WCM application model definitions
- The wcmModel.xml definition file contained both WCM repository and WCM application model definitions
The following statements are now true:
- All web-client application specific model constants have been moved from ContentModel to a new model constants class ApplicationModel
- A new WCM application model has been defined with the prefix "wca" and URI: http://www.alfresco.org/model/wcmappmodel/1.0
- All WCM application specific model constants have been renamed/moved from ContentModel/WCMModel to a new model constants class WCMAppModel
- The mix of WCM application specific model definitions in contentModel.xml and applicationModel.xml has been moved to a new definition file wcmAppModel.xml
- A patch is not required for standard Alfresco as only WCM definitions have actually changed
. Fix to issue created during workflow id/name refactor
. Fix to allow forms in the Available Content Forms panel to have correct sandbox/username context for action dialog
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@4448 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- the web-app folder name specified at Web Project creation time is created by default and is the root folder for all sandbox operations
- a mechanism for selecting a different root webapp (or creating new root folders) can be easily added later (when there is time…!)
. Removal of two public workflow actions that have no params and therefore don't work as public actions in the UI
. Fix to user sandboxes component to allow any user to always have action to delete a user sandbox
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@4445 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- adding freemarker expression for output path patterns
- enabling using the same rendering engine template with multiple mime types
- extracting rendering engine template from rendering engine to make moving to templateservice easier eventually
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@4351 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- sample implementation of a callout in the alfresco sample website; using a jsp to produce an included xsd that lists all available company_footer.xmls
- moving stuff around. XFormsbean is now in the xforms package rather than ajax package - more relevant to that codebase.
- consolidating SchemaFormBuilder into one class since the inheritance hierarchy made very little sense.
- refactored some of the sample website to reduce java code in the jsps and begining to think about a generic utility library for callouts and jsps that want to access templating generated data.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3957 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- Added Preview action for individual folders and files to the website browse page
- Added Preview action for files/folders in the Modified Files list for a user sandbox
- these changes allow the user to preview any sub-section (folder/weapp) or individual file in the website
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3923 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- Preview Staging area action added
- Preview User Sandbox action added
- Generates the virtualisation server URLs to an AVM sandboxes for the - possible to preview the entire website with transparent overlays for each user.
- Fix to generation of mangled DNS name for a user store to remove the "main" part (implicit)
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3918 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
printing a log message and showing up appropriately in task lists. The task
screens aren't quite delectable but they show up.
Fixed a misplaced store level property and added a new one ".website.name" to
user sandbox stores so that the corresponding staging sandbox can be determined
efficiently from a user sandbox.
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3870 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- Multi file/folder import via ZIP file into an AVM website store, through the Import Website Content action on the main page for a Website.
- The folder structure and file content from the ZIP file is unpacked into an AVM store
- Folder and file structure visible to user sandboxes through the layer directories in their respective stores
- Browse action added to staging sandbox and user sandbox panels
- Icon images from Linton added
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3807 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- Create Website Wizard now creates the appropriate structure of stores and layers for a website
- A website has a sandbox comprising of a staging area and a preview area layered ontop of that
- Each user has a sandbox comprising of a main area (layered ontop of the staging area) and a preview area layered ontop of that
- Added store level meta-data to tag the website stores with appropriate DNS names and markers for sandbox-id and sandbox types
. AVM "reallybad.jsp" demo page renamed to avm.jsp with a few UI tweaks for easier command input etc.
- removed the terrible.html as no longer required - just launch avm.jsp directly
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3772 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
- "Websites" folder created under root of Company Home during bootstrap
- Bootstrap properties and getter helper added to import-export-context & web-client
- Beginnings of the Create Website wizard
- Action definition added for Create Website action
- Beginings of the model for avm webfolders and associated sub-structures
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/BRANCHES/WCM-DEV2/root@3762 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261