You are viewing a plain text version of this content. The canonical link for it is here.
Posted to axis-cvs@ws.apache.org by de...@apache.org on 2006/03/16 08:58:32 UTC
svn commit: r386280 - in /webservices/axis2/trunk/java/modules/core:
src/org/apache/axis2/context/ src/org/apache/axis2/deployment/
src/org/apache/axis2/engine/ src/org/apache/axis2/phaseresolver/
src/org/apache/axis2/transport/http/ test/org/apache/ax...
Author: deepal
Date: Wed Mar 15 23:58:30 2006
New Revision: 386280
URL: http://svn.apache.org/viewcvs?rev=386280&view=rev
Log:
- adding handler into each phases in a given flow
- so if the phase name of a handler is "*" then the handler will be added to all the phases in the flow
- and it should not that it will ignore before after , and will support phase first , phase last.
Added:
webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/phaserule/AddingHandlerToEachPhaseTest.java
Modified:
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContextFactory.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/Phase.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/phaseresolver/PhaseHolder.java
webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/AxisServlet.java
webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/phaserule/PhaseRuleTest.java
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContextFactory.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContextFactory.java?rev=386280&r1=386279&r2=386280&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContextFactory.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/context/ConfigurationContextFactory.java Wed Mar 15 23:58:30 2006
@@ -37,15 +37,48 @@
}
/**
- * Builds the configuration.
+ * To get a ConfigurationContext for given data , and underline implementation
+ * is Axis2 default impl which is file system based deployment model to create
+ * an AxisConfiguration.
+ * <p/>
+ * Here either or both parameter can be null. So that boil down to following
+ * scanarios and it should note that parameter value should be pull path ,
+ * you are not allowed to give one relative to other. And these two can be located
+ * in completely different locations.
+ * <ul>
+ * <li>If none of them are null , then AxisConfiguration will be based on the
+ * value of axis2xml , and the repositoy will be the value specified by the
+ * path paramter and there will not be any assumptions.</li>
+ * <li>If axis2xml is null , then the repository will be the value specfied by
+ * path parameter and , system will try to find axis2.xml from sub directory
+ * called "conf" inside the repository, so if system find
+ * repository/conf/axis2/xml then AxisConfiguration will be created using that
+ * else AxisConfiguration will be created using default_axis2.xml</li>
+ * <li>If path parameter is null , then AxisConfiguration will be created using
+ * that axis2.xml. And after creatig AxisConfiguration system will try to
+ * find user has specified repository parameter in axis2.xml
+ * (<parameter name="repository">locationo of the repo</parameter>) , if it
+ * find that then repository will be the value specified by that parameter.</li>
+ * <li>If both are null , then it is simple , AixsConfiguration will be created
+ * using default_axis2.xml and thats it.</li>
+ * </ul>
+ * <p/>
+ * Note : rather than passing any paremeters you can give them as System
+ * properties. Simple you can add following system properties before
+ * you call this.
+ * <ul>
+ * <li>axis2.repo : same as path paramter</li>
+ * <li>axis2.xml : same as axis2xml</li>
+ * </ul>
*
* @param path : location of the repository
* @param axis2xml : location of the axis2.xml (configuration) file
* @return Returns the built ConfigurationContext.
* @throws DeploymentException
*/
- public static ConfigurationContext createConfigurationContextFromFileSystem(String path,
- String axis2xml) throws AxisFault {
+ public static ConfigurationContext createConfigurationContextFromFileSystem(
+ String path,
+ String axis2xml) throws AxisFault {
return createConfigurationContext(new FileSystemConfigurator(path, axis2xml));
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java?rev=386280&r1=386279&r2=386280&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentEngine.java Wed Mar 15 23:58:30 2006
@@ -43,6 +43,8 @@
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
+import java.util.zip.ZipEntry;
+import java.util.zip.ZipInputStream;
public class DeploymentEngine implements DeploymentConstants {
@@ -87,7 +89,7 @@
public DeploymentEngine(String repositoryName, String xmlFile)
throws DeploymentException {
if ((repositoryName == null || "".equals(repositoryName.trim())) &&
- (xmlFile == null || "".equals(xmlFile.trim()))) {
+ (xmlFile == null || "".equals(xmlFile.trim()))) {
String axis2_home = System.getProperty(Constants.AXIS2_HOME);
if (axis2_home != null && !"".equals("")) {
useDefault = false;
@@ -233,8 +235,50 @@
}
contolops.clear();
}
-
axisConfig.addServiceGroup(serviceGroup);
+// addAsWebResources(currentArchiveFile.getFile(),
+// serviceGroup.getServiceGroupName());
+ }
+
+ private void addAsWebResources(File in, String serviceFileName) {
+ try {
+ String webLocationStr = System.getProperty("web.location");
+ if (webLocationStr == null) {
+ return;
+ }
+ if (in.isDirectory()) {
+ return;
+ }
+ File webLocation = new File(webLocationStr);
+ File out = new File(webLocation, serviceFileName);
+ int BUFFER = 1024;
+ byte data[] = new byte[BUFFER];
+ ZipInputStream zin = new ZipInputStream(
+ new FileInputStream(in));
+ ZipEntry entry;
+ while ((entry = zin.getNextEntry()) != null) {
+ ZipEntry zip = new ZipEntry(entry);
+ if (zip.getName().toUpperCase().startsWith("WWW")) {
+ String fileName = zip.getName();
+ fileName = fileName.substring("WWW/".length(),
+ fileName.length());
+ if (zip.isDirectory()) {
+ new File(out, fileName).mkdirs();
+ } else {
+ FileOutputStream tempOut = new FileOutputStream(new File(out, fileName));
+ int count;
+ while ((count = zin.read(data, 0, BUFFER)) != -1) {
+ tempOut.write(data, 0, count);
+ }
+ tempOut.close();
+ tempOut.flush();
+ }
+ }
+ }
+ zin.close();
+ } catch (IOException e) {
+ log.info(e.getMessage());
+ }
}
/**
@@ -271,7 +315,7 @@
currentArchiveFile.setClassLoader(false, config.getModuleClassLoader());
axismodule.setModuleClassLoader(currentArchiveFile.getClassLoader());
archiveReader.readModuleArchive(currentArchiveFile.getAbsolutePath(), this, axismodule,
- false, axisConfig);
+ false, axisConfig);
ClassLoader moduleClassLoader = axismodule.getModuleClassLoader();
Flow inflow = axismodule.getInFlow();
@@ -334,7 +378,7 @@
currentArchiveFile.setClassLoader(classLoader);
ServiceBuilder builder = new ServiceBuilder(serviceInputStream, axisConfig,
- axisService);
+ axisService);
builder.populateService(builder.buildOM());
} catch (AxisFault axisFault) {
@@ -358,12 +402,12 @@
switch (type) {
case TYPE_SERVICE :
currentArchiveFile.setClassLoader(explodedDir,
- axisConfig.getServiceClassLoader());
+ axisConfig.getServiceClassLoader());
archiveReader = new ArchiveReader();
String serviceStatus = "";
try {
HashMap wsdlservice = archiveReader.processWSDLs(currentArchiveFile,
- this);
+ this);
AxisServiceGroup sericeGroup = new AxisServiceGroup(axisConfig);
sericeGroup.setServiceGroupClassLoader(
currentArchiveFile.getClassLoader());
@@ -373,39 +417,39 @@
axisConfig);
addServiceGroup(sericeGroup, serviceList);
log.debug(Messages.getMessage(DeploymentErrorMsgs.DEPLOYING_WS,
- currentArchiveFile.getName()));
+ currentArchiveFile.getName()));
} catch (DeploymentException de) {
log.info(Messages.getMessage(DeploymentErrorMsgs.INVALID_SERVICE,
- currentArchiveFile.getName(),
- de.getMessage()));
+ currentArchiveFile.getName(),
+ de.getMessage()));
PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
de.printStackTrace(error_ptintWriter);
serviceStatus = "Error:\n" + errorWriter.toString();
} catch (AxisFault axisFault) {
log.info(Messages.getMessage(DeploymentErrorMsgs.INVALID_SERVICE,
- currentArchiveFile.getName(),
- axisFault.getMessage()));
+ currentArchiveFile.getName(),
+ axisFault.getMessage()));
PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
axisFault.printStackTrace(error_ptintWriter);
serviceStatus = "Error:\n" + errorWriter.toString();
} catch (Exception e) {
log.info(Messages.getMessage(DeploymentErrorMsgs.INVALID_SERVICE,
- currentArchiveFile.getName(),
- e.getMessage()));
+ currentArchiveFile.getName(),
+ e.getMessage()));
PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
e.printStackTrace(error_ptintWriter);
serviceStatus = "Error:\n" + errorWriter.toString();
} finally {
if (serviceStatus.startsWith("Error:")) {
axisConfig.getFaultyServices().put(currentArchiveFile.getFile().getAbsolutePath(),
- serviceStatus);
+ serviceStatus);
}
currentArchiveFile = null;
}
break;
case TYPE_MODULE :
currentArchiveFile.setClassLoader(explodedDir,
- axisConfig.getModuleClassLoader());
+ axisConfig.getModuleClassLoader());
archiveReader = new ArchiveReader();
String moduleStatus = "";
try {
@@ -413,23 +457,23 @@
metaData.setModuleClassLoader(currentArchiveFile.getClassLoader());
metaData.setParent(axisConfig);
archiveReader.readModuleArchive(currentArchiveFile.getAbsolutePath(),
- this, metaData, explodedDir,
- axisConfig);
+ this, metaData, explodedDir,
+ axisConfig);
metaData.setFileName(currentArchiveFile.getAbsolutePath());
addNewModule(metaData);
log.info(Messages.getMessage(DeploymentErrorMsgs.DEPLOYING_MODULE,
- metaData.getName().getLocalPart()));
+ metaData.getName().getLocalPart()));
} catch (DeploymentException e) {
log.info(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE,
- currentArchiveFile.getName(),
- e.getMessage()));
+ currentArchiveFile.getName(),
+ e.getMessage()));
PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
e.printStackTrace(error_ptintWriter);
moduleStatus = "Error:\n" + errorWriter.toString();
} catch (AxisFault axisFault) {
log.info(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE,
- currentArchiveFile.getName(),
- axisFault.getMessage()));
+ currentArchiveFile.getName(),
+ axisFault.getMessage()));
PrintWriter error_ptintWriter = new PrintWriter(errorWriter);
axisFault.printStackTrace(error_ptintWriter);
moduleStatus = "Error:\n" + errorWriter.toString();
@@ -444,7 +488,7 @@
}
} catch (AxisFault axisFault) {
log.info(Messages.getMessage(DeploymentErrorMsgs.ERROR_SETTING_CLIENT_HOME,
- axisFault.getMessage()));
+ axisFault.getMessage()));
}
}
}
@@ -467,12 +511,11 @@
if (useDefault && axis2repository == null) {
ClassLoader cl = Thread.currentThread().getContextClassLoader();
InputStream in = cl.getResourceAsStream(AXIS2_CONFIGURATION_RESOURCE);
- AxisConfigBuilder builder = new AxisConfigBuilder(in, this, axisConfig);
- builder.populateConfig();
- axisConfig.setPhasesinfo(phasesinfo);
+ populateAxisConfiguration(in);
//To load modules from the class path
new RepositoryListener(this);
- org.apache.axis2.util.Utils.calculateDefaultModuleVersion(axisConfig.getModules(), axisConfig);
+ org.apache.axis2.util.Utils.calculateDefaultModuleVersion(
+ axisConfig.getModules(), axisConfig);
return axisConfig;
} else if (axis2repository != null) {
InputStream in;
@@ -486,10 +529,7 @@
throw new DeploymentException(e);
}
}
- AxisConfigBuilder builder = new AxisConfigBuilder(in, this, axisConfig);
-
- builder.populateConfig();
- axisConfig.setPhasesinfo(phasesinfo);
+ populateAxisConfiguration(in);
// setting the CLs
setClassLoaders(axis2repository);
@@ -504,7 +544,7 @@
}
} catch (AxisFault axisFault) {
log.info(Messages.getMessage(DeploymentErrorMsgs.MODULE_VALIDATION_FAILED,
- axisFault.getMessage()));
+ axisFault.getMessage()));
throw new DeploymentException(axisFault);
}
repoListener.checkServices();
@@ -519,42 +559,91 @@
} catch (FileNotFoundException e) {
throw new DeploymentException(e);
}
- AxisConfigBuilder builder = new AxisConfigBuilder(in, this, axisConfig);
- builder.populateConfig();
- axisConfig.setPhasesinfo(phasesinfo);
- Parameter axis2repoPara = axisConfig.getParameter(AXIS2_REPO);
- if (axis2repoPara != null) {
- axis2repository = (String) axis2repoPara.getValue();
- setClassLoaders(axis2repository);
- setDeploymentFeatures();
- RepositoryListener repoListener = new RepositoryListener(axis2repository, this);
- org.apache.axis2.util.Utils.calculateDefaultModuleVersion(axisConfig.getModules(), axisConfig);
- try {
- axisConfig.setRepository(axis2repository);
- validateSystemPredefinedPhases();
- engageModules();
- } catch (AxisFault axisFault) {
- log.info(Messages.getMessage(DeploymentErrorMsgs.MODULE_VALIDATION_FAILED,
- axisFault.getMessage()));
- throw new DeploymentException(axisFault);
- }
- repoListener.checkServices();
- if (hotDeployment) {
- startSearch(repoListener);
- }
- return axisConfig;
- } else {
- log.info(Messages.getMessage("norepofoundinaxis2"));
- new RepositoryListener(this);
- org.apache.axis2.util.Utils.calculateDefaultModuleVersion(
- axisConfig.getModules(), axisConfig);
+ populateAxisConfiguration(in);
+ return findRepositoryFromAxisConfiguration();
+ }
+ }
+
+ /**
+ * If the axis2.xml has paramter with "repository" then , a repository listener
+ * will be created by using that parameter.HotDeployment and hotupdate will
+ * work as same as given repository seperate scanrio
+ */
+ private AxisConfiguration findRepositoryFromAxisConfiguration()
+ throws DeploymentException {
+ Parameter axis2repoPara = axisConfig.getParameter(AXIS2_REPO);
+ if (axis2repoPara != null) {
+ axis2repository = (String) axis2repoPara.getValue();
+ setClassLoaders(axis2repository);
+ setDeploymentFeatures();
+ RepositoryListener repoListener = new RepositoryListener(
+ axis2repository, this);
+ org.apache.axis2.util.Utils.calculateDefaultModuleVersion(
+ axisConfig.getModules(), axisConfig);
+ try {
+ axisConfig.setRepository(axis2repository);
validateSystemPredefinedPhases();
- return axisConfig;
+ engageModules();
+ } catch (AxisFault axisFault) {
+ log.info(Messages.getMessage(
+ DeploymentErrorMsgs.MODULE_VALIDATION_FAILED,
+ axisFault.getMessage()));
+ throw new DeploymentException(axisFault);
+ }
+ repoListener.checkServices();
+ if (hotDeployment) {
+ startSearch(repoListener);
}
+ return axisConfig;
+ } else {
+ log.info(Messages.getMessage("norepofoundinaxis2"));
+ new RepositoryListener(this);
+ org.apache.axis2.util.Utils.calculateDefaultModuleVersion(
+ axisConfig.getModules(), axisConfig);
+ validateSystemPredefinedPhases();
+ return axisConfig;
}
}
/**
+ * To build AxisConfiguration for a given inputStream
+ *
+ * @param in
+ * @throws DeploymentException
+ */
+ private void populateAxisConfiguration(InputStream in) throws DeploymentException {
+ AxisConfigBuilder builder = new AxisConfigBuilder(in, this, axisConfig);
+ builder.populateConfig();
+ axisConfig.setPhasesinfo(phasesinfo);
+ }
+
+
+ /**
+ * To get AxisConfiguration for a given inputStream this method can be used.
+ * The inputstream should be a valid axis2.xml , else you will be getting
+ * DeploymentExceptions.
+ * <p/>
+ * First creat a AxisConfiguration using given inputSream , and then it will
+ * try to find the repository location parameter from AxisConfiguration, so
+ * if user has add a parameter with the name "repository" , then the value
+ * specified by that parameter will be the repositiry and system will try to
+ * load modules and services from that repository location if it a valid
+ * location. hot deployment and hot update will work as usual in this case.
+ * <p/>
+ * You will be getting AxisConfiguration corresponding to given inputstream
+ * if it is valid , if something goes wrong you will be getting
+ * DeploymentExeption
+ *
+ * @param in
+ * @return
+ * @throws DeploymentException
+ */
+ public AxisConfiguration load(InputStream in) throws DeploymentException {
+ populateAxisConfiguration(in);
+ return findRepositoryFromAxisConfiguration();
+ }
+
+ /**
* Starts the Deployment engine to perform Hot deployment and so on..
*/
private void startSearch(RepositoryListener listener) {
@@ -573,7 +662,7 @@
fileName = getAxisServiceName(wsInfo.getFileName());
axisConfig.removeServiceGroup(fileName);
log.info(Messages.getMessage(DeploymentErrorMsgs.SERVICE_REMOVED,
- wsInfo.getFileName()));
+ wsInfo.getFileName()));
}
}
}
@@ -598,8 +687,8 @@
String phase3 = ((Phase) inPhases.get(2)).getPhaseName();
if (!(phase1.equals(PhaseMetadata.PHASE_TRANSPORTIN)
- && phases.equals(PhaseMetadata.PHASE_PRE_DISPATCH)
- && phase3.equals(PhaseMetadata.PHASE_DISPATCH))) {
+ && phases.equals(PhaseMetadata.PHASE_PRE_DISPATCH)
+ && phase3.equals(PhaseMetadata.PHASE_DISPATCH))) {
throw new DeploymentException(
Messages.getMessage(DeploymentErrorMsgs.INVALID_PHASE));
}
@@ -698,7 +787,7 @@
if (modules.exists()) {
axisConfig.setModuleClassLoader(Utils.getClassLoader(axisConfig.getSystemClassLoader(),
- modules));
+ modules));
} else {
axisConfig.setModuleClassLoader(axisConfig.getSystemClassLoader());
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/Phase.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/Phase.java?rev=386280&r1=386279&r2=386280&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/Phase.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/engine/Phase.java Wed Mar 15 23:58:30 2006
@@ -37,6 +37,8 @@
private static final long serialVersionUID = -3352439587370050957L;
+ public static final String ALL_PHASES = "*";
+
/**
* Field BOTH_BEFORE_AFTER
*/
@@ -331,25 +333,18 @@
switch (type) {
case BOTH_BEFORE_AFTER : {
insertBeforeandAfter(handler);
-
break;
}
-
case BEFORE : {
insertBefore(handler);
-
break;
}
-
case AFTER : {
insertAfter(handler);
-
break;
}
-
case ANYWHERE : {
addHandler(handler);
-
break;
}
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/phaseresolver/PhaseHolder.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/phaseresolver/PhaseHolder.java?rev=386280&r1=386279&r2=386280&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/phaseresolver/PhaseHolder.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/phaseresolver/PhaseHolder.java Wed Mar 15 23:58:30 2006
@@ -19,7 +19,6 @@
import org.apache.axis2.deployment.DeploymentErrorMsgs;
import org.apache.axis2.description.HandlerDescription;
-import org.apache.axis2.engine.Handler;
import org.apache.axis2.engine.Phase;
import org.apache.axis2.i18n.Messages;
@@ -39,51 +38,34 @@
}
/**
- * Method addHandler
+ * If the phase name is equal to "*" that implies , the handler should be
+ * added to each and every phase in the system for a given flow , and at that
+ * point if the phase rule contains any before or aftere then they will be
+ * ignored. Phase first and phase last are supported , but make sure you dont
+ * break any of the phase rules.
+ * <p/>
+ * If the phase name is not above then the hadler will be added to the phase
+ * specified by the phase rule , and no rules will be ignored.
*
* @param handlerDesc
* @throws PhaseException
*/
public void addHandler(HandlerDescription handlerDesc) throws PhaseException {
String phaseName = handlerDesc.getRules().getPhaseName();
-
- if (isPhaseExist(phaseName)) {
- getPhase(phaseName).addHandler(handlerDesc);
+ if (Phase.ALL_PHASES.equals(phaseName)) {
+ handlerDesc.getRules().setBefore("");
+ handlerDesc.getRules().setAfter("");
+ for (int i = 0; i < phaseList.size(); i++) {
+ Phase phase = (Phase) phaseList.get(i);
+ phase.addHandler(handlerDesc);
+ }
} else {
- throw new PhaseException(Messages.getMessage(DeploymentErrorMsgs.INVALID_PHASE,
- phaseName, handlerDesc.getName().getLocalPart()));
- }
- }
-
- /**
- * This method is to build the transport phase , here load the corresponding handlers and added them
- * in to correct phase
- *
- * @param phase
- * @param handlers
- * @throws PhaseException
- */
- public void buildTransportHandlerChain(Phase phase, ArrayList handlers) throws PhaseException {
- try {
- Class handlerClass = null;
- Handler handler;
-
- for (int i = 0; i < handlers.size(); i++) {
- HandlerDescription description = (HandlerDescription) handlers.get(i);
-
- handlerClass = Class.forName(description.getClassName(), true,
- Thread.currentThread().getContextClassLoader());
- handler = (Handler) handlerClass.newInstance();
- handler.init(description);
- description.setHandler(handler);
- phase.addHandler(description.getHandler());
+ if (isPhaseExist(phaseName)) {
+ getPhase(phaseName).addHandler(handlerDesc);
+ } else {
+ throw new PhaseException(Messages.getMessage(DeploymentErrorMsgs.INVALID_PHASE,
+ phaseName, handlerDesc.getName().getLocalPart()));
}
- } catch (ClassNotFoundException e) {
- throw new PhaseException(e);
- } catch (InstantiationException e) {
- throw new PhaseException(e);
- } catch (IllegalAccessException e) {
- throw new PhaseException(e);
}
}
@@ -91,7 +73,6 @@
* this method is used to get the actual phase object given in the phase array list
*
* @param phaseName
- * @return
*/
private Phase getPhase(String phaseName) {
for (int i = 0; i < phaseList.size(); i++) {
@@ -109,7 +90,6 @@
* Method isPhaseExist
*
* @param phaseName
- * @return
*/
private boolean isPhaseExist(String phaseName) {
for (int i = 0; i < phaseList.size(); i++) {
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/AxisServlet.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/AxisServlet.java?rev=386280&r1=386279&r2=386280&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/AxisServlet.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/transport/http/AxisServlet.java Wed Mar 15 23:58:30 2006
@@ -226,6 +226,8 @@
try {
ServletContext context = config.getServletContext();
String repoDir = context.getRealPath("/WEB-INF");
+ //adding weblocation property
+// setWebLocationProperty(context);
ConfigurationContext configContext =
ConfigurationContextFactory.createConfigurationContextFromFileSystem(repoDir, null);
configContext.setProperty(Constants.CONTAINER_MANAGED, Constants.VALUE_TRUE);
@@ -234,6 +236,21 @@
} catch (Exception e) {
throw new ServletException(e);
}
+ }
+
+ /**
+ * To find out the location where web reposurce need to be coiped, when
+ * deployment fine any service aar with web resources.
+ *
+ * @param context
+ */
+ private void setWebLocationProperty(ServletContext context) {
+ String webpath = context.getRealPath("");
+ if (webpath == null || "".equals(webpath)) {
+ return;
+ }
+ File weblocation = new File(webpath);
+ System.setProperty("web.location", weblocation.getAbsolutePath());
}
protected HashMap getHTTPParameters(HttpServletRequest httpServletRequest) {
Added: webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/phaserule/AddingHandlerToEachPhaseTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/phaserule/AddingHandlerToEachPhaseTest.java?rev=386280&view=auto
==============================================================================
--- webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/phaserule/AddingHandlerToEachPhaseTest.java (added)
+++ webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/phaserule/AddingHandlerToEachPhaseTest.java Wed Mar 15 23:58:30 2006
@@ -0,0 +1,148 @@
+package org.apache.axis2.phaserule;
+
+import org.apache.axis2.AbstractTestCase;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.engine.AxisConfiguration;
+import org.apache.axis2.engine.DispatchPhase;
+import org.apache.axis2.engine.Handler;
+import org.apache.axis2.engine.Phase;
+import org.apache.axis2.phaseresolver.PhaseHolder;
+
+import java.util.ArrayList;
+/*
+* Copyright 2004,2005 The Apache Software Foundation.
+*
+* Licensed under the Apache License, Version 2.0 (the "License");
+* you may not use this file except in compliance with the License.
+* You may obtain a copy of the License at
+*
+* http://www.apache.org/licenses/LICENSE-2.0
+*
+* 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.
+*
+*
+*/
+
+public class AddingHandlerToEachPhaseTest extends AbstractTestCase {
+
+ AddingHandlerToEachPhaseTest phaserul;
+ AxisConfiguration axisSytem;
+
+ public AddingHandlerToEachPhaseTest(String testName) {
+ super(testName);
+ }
+
+ public void testPhaseRules() throws Exception {
+ super.setUp();
+ //TODO fix me
+ phaserul = new AddingHandlerToEachPhaseTest("");
+ axisSytem = new AxisConfiguration();
+ ArrayList inPhase = axisSytem.getGlobalInFlow();
+ Phase transportIN = new Phase("TransportIn");
+ Phase preDispatch = new Phase("PreDispatch");
+ DispatchPhase dispatchPhase = new DispatchPhase();
+//
+ dispatchPhase.setName("Dispatch");
+ inPhase.add(transportIN);
+ inPhase.add(preDispatch);
+ inPhase.add(dispatchPhase);
+
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.handlers.AbstractHandler");
+ Handler h1 = new PhaseRuleHandlers();
+ hm.setHandler(h1);
+ hm.getRules().setPhaseName("*");
+
+ PhaseHolder ph = new PhaseHolder(inPhase);
+ ph.addHandler(hm);
+ boolean found;
+ for (int i = 0; i < inPhase.size(); i++) {
+ found = false;
+ Phase phase = (Phase) inPhase.get(i);
+ ArrayList hnadles = phase.getHandlers();
+ for (int j = 0; j < hnadles.size(); j++) {
+ Handler handler = (Handler) hnadles.get(j);
+ if (h1.equals(handler)) {
+ found = true;
+ }
+ }
+ if (!found) {
+ fail("Some thing has gone wrong hnadler does not exit in the phase :"
+ + phase.getPhaseName());
+ }
+ }
+ }
+
+ public void testPhaseRulesWithPhaseFirst() throws Exception {
+ super.setUp();
+ //TODO fix me
+ phaserul = new AddingHandlerToEachPhaseTest("");
+ axisSytem = new AxisConfiguration();
+ ArrayList inPhase = axisSytem.getGlobalInFlow();
+ Phase transportIN = new Phase("TransportIn");
+ Phase preDispatch = new Phase("PreDispatch");
+ DispatchPhase dispatchPhase = new DispatchPhase();
+//
+ dispatchPhase.setName("Dispatch");
+ inPhase.add(transportIN);
+ inPhase.add(preDispatch);
+ inPhase.add(dispatchPhase);
+
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.handlers.AbstractHandler");
+ Handler h1 = new PhaseRuleHandlers();
+ hm.setHandler(h1);
+ hm.getRules().setPhaseName("*");
+ hm.getRules().setPhaseFirst(true);
+
+ PhaseHolder ph = new PhaseHolder(inPhase);
+ ph.addHandler(hm);
+ for (int i = 0; i < inPhase.size(); i++) {
+ Phase phase = (Phase) inPhase.get(i);
+ ArrayList hnadles = phase.getHandlers();
+ Handler handler = (Handler) hnadles.get(0);
+ if (!h1.equals(handler)) {
+ fail("Some thing has gone wrong hnadler does not exit as phase " +
+ "first handler the phase :"
+ + phase.getPhaseName());
+ }
+ }
+ }
+
+ public void testPhaseRulesWithAfter() throws Exception {
+ super.setUp();
+ //TODO fix me
+ phaserul = new AddingHandlerToEachPhaseTest("");
+ axisSytem = new AxisConfiguration();
+ ArrayList inPhase = axisSytem.getGlobalInFlow();
+ Phase transportIN = new Phase("TransportIn");
+ Phase preDispatch = new Phase("PreDispatch");
+ DispatchPhase dispatchPhase = new DispatchPhase();
+//
+ dispatchPhase.setName("Dispatch");
+ inPhase.add(transportIN);
+ inPhase.add(preDispatch);
+ inPhase.add(dispatchPhase);
+
+ HandlerDescription hm = new HandlerDescription();
+ hm.setClassName("org.apache.axis2.handlers.AbstractHandler");
+ Handler h1 = new PhaseRuleHandlers();
+ hm.setHandler(h1);
+ hm.getRules().setPhaseName("*");
+ hm.getRules().setPhaseFirst(true);
+ hm.getRules().setAfter("nothing");
+
+ PhaseHolder ph = new PhaseHolder(inPhase);
+ ph.addHandler(hm);
+ for (int i = 0; i < inPhase.size(); i++) {
+ Phase phase = (Phase) inPhase.get(i);
+ ArrayList hnadles = phase.getHandlers();
+ Handler handler = (Handler) hnadles.get(0);
+ assertEquals("",handler.getHandlerDesc().getRules().getAfter());
+ }
+ }
+}
Modified: webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/phaserule/PhaseRuleTest.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/phaserule/PhaseRuleTest.java?rev=386280&r1=386279&r2=386280&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/phaserule/PhaseRuleTest.java (original)
+++ webservices/axis2/trunk/java/modules/core/test/org/apache/axis2/phaserule/PhaseRuleTest.java Wed Mar 15 23:58:30 2006
@@ -86,11 +86,5 @@
rule3.setPhaseName("Dispatch");
hm3.setRules(rule3);
ph.addHandler(hm3);
-
- /*ArrayList oh = ph.getOrderHandler();
- for (int i = 0; i < oh.size(); i++) {
- HandlerDescription metadata = (HandlerDescription) oh.get(i);
- System.out.println("Name:" + metadata.getName().getLocalPart());
- }*/
}
}