Jon Cox f55c3091ea Fixed up paths a bit more so that now you get files paths like
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
2006-12-25 02:07:46 +00:00

110 lines
3.2 KiB
Java

/*
* Copyright (C) 2005 Alfresco, Inc.
*
* Licensed under the Mozilla Public License version 1.1
* with a permitted attribution clause. You may obtain a
* copy of the License at
*
* http://www.alfresco.org/legal/license.txt
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND,
* either express or implied. See the License for the specific
* language governing permissions and limitations under the
* License.
*/
package org.alfresco.repo.jscript;
import org.alfresco.config.JNDIConstants;
import org.alfresco.repo.avm.AVMNodeConverter;
import org.alfresco.service.cmr.avm.AVMNodeDescriptor;
import org.alfresco.service.ServiceRegistry;
import org.mozilla.javascript.Scriptable;
/**
* Helper to access AVM nodes from a script context.
*
* @author Kevin Roast
*/
public final class AVM extends BaseScriptImplementation implements Scopeable
{
/** Repository Service Registry */
private ServiceRegistry services;
/** Root scope for this object */
private Scriptable scope;
/**
* Set the service registry
*
* @param serviceRegistry the service registry
*/
public void setServiceRegistry(ServiceRegistry serviceRegistry)
{
this.services = serviceRegistry;
}
/**
* @see org.alfresco.repo.jscript.Scopeable#setScope(org.mozilla.javascript.Scriptable)
*/
public void setScope(Scriptable scope)
{
this.scope = scope;
}
/**
* Return an AVM Node representing the public store root folder.
*
* @param store Store name to lookup root folder for
*
* @return AVM Node representing the public store root folder, or null if not found.
*/
public AVMNode lookupStoreRoot(String store)
{
AVMNode rootNode = null;
if (store != null && store.length() != 0)
{
String rootPath = store + ':' + getWebappsFolderPath();
AVMNodeDescriptor nodeDesc = this.services.getAVMService().lookup(-1, rootPath);
if (nodeDesc != null)
{
rootNode = new AVMNode(AVMNodeConverter.ToNodeRef(-1, rootPath), this.services, this.scope);
}
}
return rootNode;
}
/**
* Return an AVM Node for the fully qualified path.
*
* @param path Fully qualified path to node to lookup
*
* @return AVM Node for the fully qualified path, or null if not found.
*/
public AVMNode lookupNode(String path)
{
AVMNode node = null;
if (path != null && path.length() != 0)
{
AVMNodeDescriptor nodeDesc = this.services.getAVMService().lookup(-1, path);
if (nodeDesc != null)
{
node = new AVMNode(AVMNodeConverter.ToNodeRef(-1, path), this.services, this.scope);
}
}
return node;
}
public static String getWebappsFolderPath()
{
return '/' + JNDIConstants.DIR_DEFAULT_WWW + '/' +
JNDIConstants.DIR_DEFAULT_APPBASE;
}
public static String jsGet_webappsFolderPath()
{
return getWebappsFolderPath();
}
}