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 di...@apache.org on 2005/12/16 18:18:08 UTC
svn commit: r357187 [5/25] - in
/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2: ./
addressing/ client/ client/async/ context/ deployment/ deployment/listener/
deployment/repository/util/ deployment/scheduler/ deployment/util/
descripti...
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/AxisConfigBuilder.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/AxisConfigBuilder.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/AxisConfigBuilder.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/AxisConfigBuilder.java Fri Dec 16 09:13:57 2005
@@ -1,25 +1,30 @@
/*
- * 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.
- */
+* 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.
+*/
+
package org.apache.axis2.deployment;
import org.apache.axis2.AxisFault;
import org.apache.axis2.deployment.util.PhasesInfo;
import org.apache.axis2.deployment.util.Utils;
-import org.apache.axis2.description.*;
+import org.apache.axis2.description.HandlerDescription;
+import org.apache.axis2.description.ModuleConfiguration;
+import org.apache.axis2.description.ParameterInclude;
+import org.apache.axis2.description.TransportInDescription;
+import org.apache.axis2.description.TransportOutDescription;
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.engine.AxisObserver;
import org.apache.axis2.engine.MessageReceiver;
@@ -39,7 +44,6 @@
import java.util.Iterator;
public class AxisConfigBuilder extends DescriptionBuilder {
-
private AxisConfiguration axisConfiguration;
private DeploymentEngine engine;
@@ -54,50 +58,57 @@
try {
OMElement config_element = buildOM();
- //processing Parameters
- //Processing service level parameters
- Iterator itr = config_element.getChildrenWithName(
- new QName(PARAMETER));
- processParameters(itr, axisConfiguration, axisConfiguration);
+ // processing Parameters
+ // Processing service level parameters
+ Iterator itr = config_element.getChildrenWithName(new QName(PARAMETER));
- //process MessageReciver
+ processParameters(itr, axisConfiguration, axisConfiguration);
+ // process MessageReciver
Iterator msgRecives = config_element.getChildrenWithName(new QName(MESSAGERECEIVER));
+
while (msgRecives.hasNext()) {
OMElement msgRev = (OMElement) msgRecives.next();
- MessageReceiver msgrecivere = loadMessageReceiver(
- Thread.currentThread().getContextClassLoader(), msgRev);
+ MessageReceiver msgrecivere =
+ loadMessageReceiver(Thread.currentThread().getContextClassLoader(), msgRev);
OMAttribute mepAtt = msgRev.getAttribute(new QName(MEP));
- axisConfiguration.addMessageReceiver(
- mepAtt.getAttributeValue(), msgrecivere);
+
+ axisConfiguration.addMessageReceiver(mepAtt.getAttributeValue(), msgrecivere);
}
- //Process Module refs
- Iterator moduleitr = config_element.getChildrenWithName(
- new QName(DeploymentConstants.MODULEST));
+ // Process Module refs
+ Iterator moduleitr =
+ config_element.getChildrenWithName(new QName(DeploymentConstants.MODULEST));
+
processModuleRefs(moduleitr);
// Proccessing Transport Sennders
Iterator trs_senders = config_element.getChildrenWithName(new QName(TRANSPORTSENDER));
+
processTransportSenders(trs_senders);
// Proccessing Transport Recivers
Iterator trs_Reivers = config_element.getChildrenWithName(new QName(TRANSPORTRECEIVER));
+
processTransportReceivers(trs_Reivers);
// Process Observers
Iterator obs_ittr = config_element.getChildrenWithName(new QName(LISTENERST));
+
processObservers(obs_ittr);
- //processing Phase orders
+ // processing Phase orders
Iterator phaserders = config_element.getChildrenWithName(new QName(PHASE_ORDER));
+
processPhaseOrders(phaserders);
Iterator moduleConfigs = config_element.getChildrenWithName(new QName(MODULECONFIG));
+
processModuleConfig(moduleConfigs, axisConfiguration, axisConfiguration);
// setting host configuration
OMElement hostElement = config_element.getFirstChildWithName(new QName(HOST_CONFIG));
+
if (hostElement != null) {
processHostCongiguration(hostElement, axisConfiguration);
}
@@ -106,325 +117,351 @@
}
}
+ private void processHostCongiguration(OMElement element, AxisConfiguration config) {
+ OMElement ipele = element.getFirstChildWithName(new QName("ip"));
+ String ip = null;
+ int port = -1;
+
+ if (ipele != null) {
+ ip = ipele.getText().trim();
+ }
+
+ OMElement portele = element.getFirstChildWithName(new QName("port"));
+
+ if (portele != null) {
+ port = Integer.parseInt(portele.getText().trim());
+ }
+
+ HostConfiguration hostconfig = new HostConfiguration(ip, port);
+
+ config.setHostConfiguration(hostconfig);
+ }
+
+ protected void processModuleConfig(Iterator moduleConfigs, ParameterInclude parent,
+ AxisConfiguration config)
+ throws DeploymentException {
+ while (moduleConfigs.hasNext()) {
+ OMElement moduleConfig = (OMElement) moduleConfigs.next();
+ OMAttribute moduleName_att = moduleConfig.getAttribute(new QName(ATTNAME));
+
+ if (moduleName_att == null) {
+ throw new DeploymentException(
+ Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE_CONFIG));
+ } else {
+ String module = moduleName_att.getAttributeValue();
+ ModuleConfiguration moduleConfiguration =
+ new ModuleConfiguration(new QName(module), parent);
+ Iterator parameters = moduleConfig.getChildrenWithName(new QName(PARAMETER));
+
+ processParameters(parameters, moduleConfiguration, parent);
+ config.addModuleConfig(moduleConfiguration);
+ }
+ }
+ }
+
/**
- * To process all the phase orders which are defined in axis2.xml
+ * To get the list og modules that is requird to be engage globally
*
- * @param phaserders
+ * @param moduleRefs <code>java.util.Iterator</code>
*/
- private void processPhaseOrders(Iterator phaserders) throws DeploymentException {
- PhasesInfo info = engine.getPhasesinfo();
- while (phaserders.hasNext()) {
- OMElement phaseOrders = (OMElement) phaserders.next();
- String flowType = phaseOrders.getAttribute(new QName(TYPE)).getAttributeValue();
- if (INFLOWST.equals(flowType)) {
- info.setINPhases(processPhaseList(phaseOrders));
- } else if (IN_FAILTFLOW.equals(flowType)) {
- info.setIN_FaultPhases(processPhaseList(phaseOrders));
- } else if (OUTFLOWST.equals(flowType)) {
- info.setOUTPhases(processPhaseList(phaseOrders));
- } else if (OUT_FAILTFLOW.equals(flowType)) {
- info.setOUT_FaultPhases(processPhaseList(phaseOrders));
+ protected void processModuleRefs(Iterator moduleRefs) {
+ while (moduleRefs.hasNext()) {
+ OMElement moduleref = (OMElement) moduleRefs.next();
+ OMAttribute moduleRefAttribute = moduleref.getAttribute(new QName(REF));
+ String refName = moduleRefAttribute.getAttributeValue();
+
+ engine.addModule(new QName(refName));
+ }
+ }
+
+ /**
+ * To process AxisObservers
+ *
+ * @param oservers
+ */
+ private void processObservers(Iterator oservers) throws DeploymentException {
+ while (oservers.hasNext()) {
+ OMElement observerelement = (OMElement) oservers.next();
+ AxisObserver observer;
+ OMAttribute trsClas = observerelement.getAttribute(new QName(CLASSNAME));
+ String clasName;
+
+ if (trsClas != null) {
+ clasName = trsClas.getAttributeValue();
+ } else {
+ throw new DeploymentException(
+ Messages.getMessage(DeploymentErrorMsgs.OBSERVER_ERROR));
}
+ try {
+ Class observerclass = Class.forName(clasName, true,
+ Thread.currentThread().getContextClassLoader());
+
+ observer = (AxisObserver) observerclass.newInstance();
+
+ // processing Parameters
+ // Processing service level parameters
+ Iterator itr = observerelement.getChildrenWithName(new QName(PARAMETER));
+
+ processParameters(itr, observer, axisConfiguration);
+
+ // initilization
+ observer.init();
+ axisConfiguration.addObservers(observer);
+ } catch (ClassNotFoundException e) {
+ throw new DeploymentException(e);
+ } catch (IllegalAccessException e) {
+ throw new DeploymentException(e);
+ } catch (InstantiationException e) {
+ throw new DeploymentException(e);
+ }
}
}
private ArrayList processPhaseList(OMElement phaseOrders) throws DeploymentException {
ArrayList phaselist = new ArrayList();
Iterator phases = phaseOrders.getChildrenWithName(new QName(PHASE));
+
while (phases.hasNext()) {
OMElement phaseelement = (OMElement) phases.next();
- String phaseName = phaseelement.getAttribute(new QName(ATTNAME)).getAttributeValue();
+ String phaseName =
+ phaseelement.getAttribute(new QName(ATTNAME)).getAttributeValue();
String phaseClass = phaseelement.getAttributeValue(new QName(CLASSNAME));
Phase phase;
+
try {
phase = getPhase(phaseClass);
} catch (Exception e) {
throw new DeploymentException("Couldn't find phase class : " + phaseClass, e);
}
+
phase.setName(phaseName);
Iterator handlers = phaseelement.getChildrenWithName(new QName(HANDERST));
+
while (handlers.hasNext()) {
OMElement omElement = (OMElement) handlers.next();
HandlerDescription handler = processHandler(omElement, axisConfiguration);
+
handler.getRules().setPhaseName(phaseName);
Utils.loadHandler(axisConfiguration.getSystemClassLoader(), handler);
+
try {
phase.addHandler(handler);
} catch (PhaseException e) {
throw new DeploymentException(e);
}
}
+
phaselist.add(phase);
}
+
return phaselist;
}
- private Phase getPhase(String className)
- throws ClassNotFoundException, IllegalAccessException, InstantiationException {
- if (className == null) {
- return new Phase();
+ /**
+ * To process all the phase orders which are defined in axis2.xml
+ *
+ * @param phaserders
+ */
+ private void processPhaseOrders(Iterator phaserders) throws DeploymentException {
+ PhasesInfo info = engine.getPhasesinfo();
+
+ while (phaserders.hasNext()) {
+ OMElement phaseOrders = (OMElement) phaserders.next();
+ String flowType = phaseOrders.getAttribute(new QName(TYPE)).getAttributeValue();
+
+ if (INFLOWST.equals(flowType)) {
+ info.setINPhases(processPhaseList(phaseOrders));
+ } else if (IN_FAILTFLOW.equals(flowType)) {
+ info.setIN_FaultPhases(processPhaseList(phaseOrders));
+ } else if (OUTFLOWST.equals(flowType)) {
+ info.setOUTPhases(processPhaseList(phaseOrders));
+ } else if (OUT_FAILTFLOW.equals(flowType)) {
+ info.setOUT_FaultPhases(processPhaseList(phaseOrders));
+ }
}
-// Class phaseClass = Class.forName(className);
- Class phaseClass = axisConfiguration.getSystemClassLoader().loadClass(className);
- return (Phase) phaseClass.newInstance();
}
- private void processTransportSenders(Iterator trs_senders) throws DeploymentException {
+ private void processTransportReceivers(Iterator trs_senders) throws DeploymentException {
while (trs_senders.hasNext()) {
- TransportOutDescription transportout;
+ TransportInDescription transportIN;
OMElement transport = (OMElement) trs_senders.next();
// getting trsnport Name
- OMAttribute trsName = transport.getAttribute(
- new QName(ATTNAME));
+ OMAttribute trsName = transport.getAttribute(new QName(ATTNAME));
+
if (trsName != null) {
String name = trsName.getAttributeValue();
- transportout = new TransportOutDescription(new QName(name));
- //tranport impl class
- OMAttribute trsClas = transport.getAttribute(
- new QName(CLASSNAME));
- if (trsClas == null) {
- throw new DeploymentException(Messages.getMessage(
- DeploymentErrorMsgs.TRANSPORT_SENDER_ERROR, name));
+ transportIN = new TransportInDescription(new QName(name));
+
+ // tranport impl class
+ OMAttribute trsClas = transport.getAttribute(new QName(CLASSNAME));
+
+ if (trsClas != null) {
+ try {
+ String clasName = trsClas.getAttributeValue();
+ Class receiverClass = Class.forName(clasName, true,
+ Thread.currentThread().getContextClassLoader());
+ TransportListener receiver =
+ (TransportListener) receiverClass.newInstance();
+
+ transportIN.setReceiver(receiver);
+ } catch (NoClassDefFoundError e) {
+ log.info(Messages.getMessage("classnotfound", trsClas.getAttributeValue()));
+ } catch (ClassNotFoundException e) {
+ throw new DeploymentException(e);
+ } catch (IllegalAccessException e) {
+ throw new DeploymentException(e);
+ } catch (InstantiationException e) {
+ throw new DeploymentException(e);
+ }
}
- String clasName = trsClas.getAttributeValue();
- Class sender;
+
try {
- sender = Class.forName(clasName, true,
- Thread.currentThread()
- .getContextClassLoader());
- TransportSender transportSender = (TransportSender) sender.newInstance();
- transportout.setSender(transportSender);
- //process Parameters
- //processing Parameters
- //Processing service level parameters
- Iterator itr = transport.getChildrenWithName(
- new QName(PARAMETER));
- processParameters(itr, transportout, axisConfiguration);
+ // process Parameters
+ // processing Parameters
+ // Processing service level parameters
+ Iterator itr = transport.getChildrenWithName(new QName(PARAMETER));
+
+ processParameters(itr, transportIN, axisConfiguration);
+
+ // process INFLOW
+ OMElement inFlow = transport.getFirstChildWithName(new QName(INFLOWST));
- //process INFLOW
- OMElement inFlow = transport.getFirstChildWithName(
- new QName(INFLOWST));
if (inFlow != null) {
throw new DeploymentException(
Messages.getMessage(
DeploymentErrorMsgs.INFLOW_NOT_ALLOWED_IN_TRS_OUT, name));
}
- OMElement outFlow = transport.getFirstChildWithName(
- new QName(OUTFLOWST));
+ OMElement outFlow = transport.getFirstChildWithName(new QName(OUTFLOWST));
+
if (outFlow != null) {
- transportout.setOutFlow(processFlow(outFlow, axisConfiguration));
+ transportIN.setInFlow(processFlow(outFlow, axisConfiguration));
}
- OMElement inFaultFlow = transport.getFirstChildWithName(
- new QName(IN_FAILTFLOW));
+ OMElement inFaultFlow =
+ transport.getFirstChildWithName(new QName(IN_FAILTFLOW));
+
if (inFaultFlow != null) {
- throw new DeploymentException(
- Messages.getMessage(
- DeploymentErrorMsgs.INFLOW_NOT_ALLOWED_IN_TRS_OUT, name));
+ transportIN.setFaultFlow(processFlow(inFaultFlow, axisConfiguration));
}
- OMElement outFaultFlow = transport.getFirstChildWithName(
- new QName(OUT_FAILTFLOW));
+ OMElement outFaultFlow =
+ transport.getFirstChildWithName(new QName(OUT_FAILTFLOW));
+
if (outFaultFlow != null) {
- transportout.setFaultFlow(processFlow(outFaultFlow, axisConfiguration));
+ throw new DeploymentException(
+ Messages.getMessage(
+ DeploymentErrorMsgs.OUTFLOW_NOT_ALLOWED_IN_TRS_IN, name));
}
- //adding to axis config
- axisConfiguration.addTransportOut(transportout);
-
- } catch (ClassNotFoundException e) {
- throw new DeploymentException(e);
- } catch (IllegalAccessException e) {
- throw new DeploymentException(e);
- } catch (InstantiationException e) {
- throw new DeploymentException(e);
+ // adding to axis config
+ axisConfiguration.addTransportIn(transportIN);
} catch (AxisFault axisFault) {
throw new DeploymentException(axisFault);
}
-
}
}
}
-
- private void processTransportReceivers(Iterator trs_senders) throws DeploymentException {
+ private void processTransportSenders(Iterator trs_senders) throws DeploymentException {
while (trs_senders.hasNext()) {
- TransportInDescription transportIN;
+ TransportOutDescription transportout;
OMElement transport = (OMElement) trs_senders.next();
// getting trsnport Name
- OMAttribute trsName = transport.getAttribute(
- new QName(ATTNAME));
+ OMAttribute trsName = transport.getAttribute(new QName(ATTNAME));
+
if (trsName != null) {
String name = trsName.getAttributeValue();
- transportIN = new TransportInDescription(new QName(name));
- //tranport impl class
+ transportout = new TransportOutDescription(new QName(name));
+
+ // tranport impl class
OMAttribute trsClas = transport.getAttribute(new QName(CLASSNAME));
- if (trsClas != null) {
- try {
- String clasName = trsClas.getAttributeValue();
- Class receiverClass = Class.forName(clasName, true,
- Thread.currentThread()
- .getContextClassLoader());
- TransportListener receiver = (TransportListener) receiverClass.newInstance();
- transportIN.setReceiver(receiver);
- } catch (NoClassDefFoundError e) {
- log.info(Messages.getMessage("classnotfound", trsClas.getAttributeValue()));
- } catch (ClassNotFoundException e) {
- throw new DeploymentException(e);
- } catch (IllegalAccessException e) {
- throw new DeploymentException(e);
- } catch (InstantiationException e) {
- throw new DeploymentException(e);
- }
+
+ if (trsClas == null) {
+ throw new DeploymentException(
+ Messages.getMessage(DeploymentErrorMsgs.TRANSPORT_SENDER_ERROR, name));
}
+
+ String clasName = trsClas.getAttributeValue();
+ Class sender;
+
try {
+ sender = Class.forName(clasName, true,
+ Thread.currentThread().getContextClassLoader());
- //process Parameters
- //processing Parameters
- //Processing service level parameters
- Iterator itr = transport.getChildrenWithName(
- new QName(PARAMETER));
- processParameters(itr, transportIN, axisConfiguration);
+ TransportSender transportSender = (TransportSender) sender.newInstance();
+
+ transportout.setSender(transportSender);
+
+ // process Parameters
+ // processing Parameters
+ // Processing service level parameters
+ Iterator itr = transport.getChildrenWithName(new QName(PARAMETER));
+
+ processParameters(itr, transportout, axisConfiguration);
+
+ // process INFLOW
+ OMElement inFlow = transport.getFirstChildWithName(new QName(INFLOWST));
- //process INFLOW
- OMElement inFlow = transport.getFirstChildWithName(
- new QName(INFLOWST));
if (inFlow != null) {
throw new DeploymentException(
Messages.getMessage(
DeploymentErrorMsgs.INFLOW_NOT_ALLOWED_IN_TRS_OUT, name));
}
- OMElement outFlow = transport.getFirstChildWithName(
- new QName(OUTFLOWST));
+ OMElement outFlow = transport.getFirstChildWithName(new QName(OUTFLOWST));
+
if (outFlow != null) {
- transportIN.setInFlow(processFlow(outFlow, axisConfiguration));
+ transportout.setOutFlow(processFlow(outFlow, axisConfiguration));
}
- OMElement inFaultFlow = transport.getFirstChildWithName(
- new QName(IN_FAILTFLOW));
+ OMElement inFaultFlow =
+ transport.getFirstChildWithName(new QName(IN_FAILTFLOW));
+
if (inFaultFlow != null) {
- transportIN.setFaultFlow(processFlow(inFaultFlow, axisConfiguration));
+ throw new DeploymentException(
+ Messages.getMessage(
+ DeploymentErrorMsgs.INFLOW_NOT_ALLOWED_IN_TRS_OUT, name));
}
- OMElement outFaultFlow = transport.getFirstChildWithName(
- new QName(OUT_FAILTFLOW));
+ OMElement outFaultFlow =
+ transport.getFirstChildWithName(new QName(OUT_FAILTFLOW));
+
if (outFaultFlow != null) {
- throw new DeploymentException(Messages.getMessage(
- DeploymentErrorMsgs.OUTFLOW_NOT_ALLOWED_IN_TRS_IN, name));
+ transportout.setFaultFlow(processFlow(outFaultFlow, axisConfiguration));
}
- //adding to axis config
- axisConfiguration.addTransportIn(transportIN);
-
+ // adding to axis config
+ axisConfiguration.addTransportOut(transportout);
+ } catch (ClassNotFoundException e) {
+ throw new DeploymentException(e);
+ } catch (IllegalAccessException e) {
+ throw new DeploymentException(e);
+ } catch (InstantiationException e) {
+ throw new DeploymentException(e);
} catch (AxisFault axisFault) {
throw new DeploymentException(axisFault);
}
-
}
}
}
-
- private void processHostCongiguration(OMElement element, AxisConfiguration config) {
- OMElement ipele = element.getFirstChildWithName(new QName("ip"));
- String ip = null;
- int port = -1;
- if (ipele != null) {
- ip = ipele.getText().trim();
- }
- OMElement portele = element.getFirstChildWithName(new QName("port"));
- if (portele != null) {
- port = Integer.parseInt(portele.getText().trim());
- }
- HostConfiguration hostconfig = new HostConfiguration(ip, port);
- config.setHostConfiguration(hostconfig);
- }
-
- /**
- * To process AxisObservers
- *
- * @param oservers
- */
- private void processObservers(Iterator oservers) throws DeploymentException {
- while (oservers.hasNext()) {
- OMElement observerelement = (OMElement) oservers.next();
- AxisObserver observer;
- OMAttribute trsClas = observerelement.getAttribute(
- new QName(CLASSNAME));
- String clasName;
- if (trsClas != null) {
- clasName = trsClas.getAttributeValue();
- } else {
- throw new DeploymentException(Messages.getMessage(
- DeploymentErrorMsgs.OBSERVER_ERROR));
- }
- try {
- Class observerclass = Class.forName(clasName, true, Thread.currentThread().
- getContextClassLoader());
- observer = (AxisObserver) observerclass.newInstance();
- //processing Parameters
- //Processing service level parameters
- Iterator itr = observerelement.getChildrenWithName(
- new QName(PARAMETER));
- processParameters(itr, observer, axisConfiguration);
-
- // initilization
- observer.init();
- axisConfiguration.addObservers(observer);
-
- } catch (ClassNotFoundException e) {
- throw new DeploymentException(e);
- } catch (IllegalAccessException e) {
- throw new DeploymentException(e);
- } catch (InstantiationException e) {
- throw new DeploymentException(e);
- }
+ private Phase getPhase(String className)
+ throws ClassNotFoundException, IllegalAccessException, InstantiationException {
+ if (className == null) {
+ return new Phase();
}
- }
-
- /**
- * To get the list og modules that is requird to be engage globally
- *
- * @param moduleRefs <code>java.util.Iterator</code>
- */
- protected void processModuleRefs(Iterator moduleRefs) {
- while (moduleRefs.hasNext()) {
- OMElement moduleref = (OMElement) moduleRefs.next();
- OMAttribute moduleRefAttribute = moduleref.getAttribute(
- new QName(REF));
- String refName = moduleRefAttribute.getAttributeValue();
- engine.addModule(new QName(refName));
- }
- }
+// Class phaseClass = Class.forName(className);
+ Class phaseClass = axisConfiguration.getSystemClassLoader().loadClass(className);
- protected void processModuleConfig(Iterator moduleConfigs,
- ParameterInclude parent, AxisConfiguration config)
- throws DeploymentException {
- while (moduleConfigs.hasNext()) {
- OMElement moduleConfig = (OMElement) moduleConfigs.next();
- OMAttribute moduleName_att = moduleConfig.getAttribute(
- new QName(ATTNAME));
- if (moduleName_att == null) {
- throw new DeploymentException(Messages.getMessage(DeploymentErrorMsgs.INVALID_MODULE_CONFIG));
- } else {
- String module = moduleName_att.getAttributeValue();
- ModuleConfiguration moduleConfiguration =
- new ModuleConfiguration(new QName(module), parent);
- Iterator parameters = moduleConfig.getChildrenWithName(new QName(PARAMETER));
- processParameters(parameters, moduleConfiguration, parent);
- config.addModuleConfig(moduleConfiguration);
- }
- }
+ return (Phase) phaseClass.newInstance();
}
-
}
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentClassLoader.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentClassLoader.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentClassLoader.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentClassLoader.java Fri Dec 16 09:13:57 2005
@@ -1,24 +1,30 @@
/*
- * 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.
- */
+* 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.
+*/
+
package org.apache.axis2.deployment;
import org.apache.axis2.i18n.Messages;
-import java.io.*;
+import java.io.ByteArrayInputStream;
+import java.io.ByteArrayOutputStream;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
import java.net.URL;
import java.net.URLClassLoader;
import java.util.ArrayList;
@@ -28,14 +34,12 @@
public class DeploymentClassLoader extends URLClassLoader {
- //urls which gives to create the classLoader
- private URL[] urls;
-
- //To keep jar files inside /lib directory in the main jar
+ // To keep jar files inside /lib directory in the main jar
private ArrayList lib_jars_list;
-
private HashMap loadedClass;
+ // urls which gives to create the classLoader
+ private URL[] urls;
/**
* DeploymentClassLoader is exetend form URLClassLoader , and the constructor
@@ -54,40 +58,6 @@
}
/**
- * This just search for jar files inside /lib dirctory and if there are any then those
- * will be added to the arraylit (only the name of the jar file)
- */
- private void findLibJars() {
- /**
- * though the URL array can contains one or more urls , I have only consider the
- * first one , that is this classLoader is only for Axis2 stuff and the classloader
- * is created by Deployment , so there wont be any chance to have more the one urls for
- * the URL array list
- */
- File file = new File(urls[0].getFile());
- try {
- ZipInputStream zin = new ZipInputStream(new FileInputStream(file));
- ZipEntry entry;
- String entryName;
- while ((entry = zin.getNextEntry()) != null) {
- entryName = entry.getName();
- /**
- * id the entry name start with /lib and end with .jar
- * then those entry name will be added to the arraylist
- */
- if (entryName != null &&
- entryName.toLowerCase().startsWith("lib/") &&
- entryName.toLowerCase().endsWith(".jar")) {
- lib_jars_list.add(entryName);
- }
- }
- zin.close();
- } catch (Exception e) {
- throw new RuntimeException(e);
- }
- }
-
- /**
* @param name <code>String</code> Name of the file to be loaded
* @return <code>Class</code> return a class object if it found else
* will return null or classNotfoun exeption
@@ -102,27 +72,34 @@
* 4. Throw classNotfound exeption
* @throws ClassNotFoundException
*/
- protected Class findClass(final String name)
- throws ClassNotFoundException {
+ protected Class findClass(final String name) throws ClassNotFoundException {
Class cla;
+
try {
cla = (Class) loadedClass.get(name);
+
if (cla != null) {
return cla;
}
+
boolean foundClass;
+
try {
cla = super.findClass(name);
loadedClass.put(name, cla);
+
return cla;
} catch (ClassNotFoundException e) {
foundClass = false;
}
+
if (!foundClass) {
try {
byte raw[] = getClassByteCodes(name);
+
cla = defineClass(name, raw, 0, raw.length);
loadedClass.put(name, cla);
+
return cla;
} catch (Exception e) {
foundClass = false;
@@ -130,45 +107,57 @@
foundClass = false;
}
}
+
if (!foundClass) {
- throw new ClassNotFoundException(Messages.getMessage(
- DeploymentErrorMsgs.CLASS_NOT_FOUND, name));
+ throw new ClassNotFoundException(
+ Messages.getMessage(DeploymentErrorMsgs.CLASS_NOT_FOUND, name));
}
-
} catch (Exception e) {
- throw new ClassNotFoundException(Messages.getMessage(
- DeploymentErrorMsgs.CLASS_NOT_FOUND, name));
+ throw new ClassNotFoundException(
+ Messages.getMessage(DeploymentErrorMsgs.CLASS_NOT_FOUND, name));
}
+
return null;
}
/**
- * Read jar file (/lib) one by one , then for each file craete <code>ZipInputStream</code>
- * that and check to see wether there is any entry eith given name if it found then
- * Creat ByteArrayOutPutStream and get the class bytes to that .
- * after goning throgh each and evry jar file if there is no entry with given name
- * will throug a ClassNotFound execption
- *
- * @param filename <code>String</code> Name of the file to be loaded (Class Name)
- * @return bytt[]
- * @throws java.io.IOException <code>Exception</code>
+ * This just search for jar files inside /lib dirctory and if there are any then those
+ * will be added to the arraylit (only the name of the jar file)
*/
- private byte[] getClassByteCodes(String filename) throws Exception {
- String completeFileName = filename;
+ private void findLibJars() {
+
/**
- * Replacing org.apache. -> org/apache/...
+ * though the URL array can contains one or more urls , I have only consider the
+ * first one , that is this classLoader is only for Axis2 stuff and the classloader
+ * is created by Deployment , so there wont be any chance to have more the one urls for
+ * the URL array list
*/
- completeFileName = completeFileName.replace('.', '/').concat(".class");
- byte [] byteCodes = getBytes(completeFileName);
- if (byteCodes != null) {
- return byteCodes;
- } else {
- throw new ClassNotFoundException(Messages.getMessage(
- DeploymentErrorMsgs.CLASS_NOT_FOUND, filename));
+ File file = new File(urls[0].getFile());
+
+ try {
+ ZipInputStream zin = new ZipInputStream(new FileInputStream(file));
+ ZipEntry entry;
+ String entryName;
+
+ while ((entry = zin.getNextEntry()) != null) {
+ entryName = entry.getName();
+
+ /**
+ * id the entry name start with /lib and end with .jar
+ * then those entry name will be added to the arraylist
+ */
+ if ((entryName != null) && entryName.toLowerCase().startsWith("lib/")
+ && entryName.toLowerCase().endsWith(".jar")) {
+ lib_jars_list.add(entryName);
+ }
+ }
+
+ zin.close();
+ } catch (Exception e) {
+ throw new RuntimeException(e);
}
}
-
/**
* Read jar file (/lib) one by one , then for each file craete <code>ZipInputStream</code>
* that and check to see wether there is any entry eith given name if it found then
@@ -180,25 +169,32 @@
private byte[] getBytes(String resourceName) {
byte raw[];
ZipInputStream zin = null;
+
for (int i = 0; i < lib_jars_list.size(); i++) {
String libjar_name = (String) lib_jars_list.get(i);
InputStream in = getResourceAsStream(libjar_name);
+
try {
zin = new ZipInputStream(in);
+
ZipEntry entry;
String entryName;
+
while ((entry = zin.getNextEntry()) != null) {
entryName = entry.getName();
- if (entryName != null &&
- entryName.endsWith(resourceName)) {
+
+ if ((entryName != null) && entryName.endsWith(resourceName)) {
byte data[] = new byte[2048];
ByteArrayOutputStream out = new ByteArrayOutputStream();
int count;
+
while ((count = zin.read(data, 0, 2048)) != -1) {
out.write(data, 0, count);
}
+
raw = out.toByteArray();
out.close();
+
return raw;
}
}
@@ -210,30 +206,63 @@
zin.close();
}
} catch (IOException e) {
- //what to do, better to log
+
+ // what to do, better to log
}
}
-
}
+
return null;
}
+ /**
+ * Read jar file (/lib) one by one , then for each file craete <code>ZipInputStream</code>
+ * that and check to see wether there is any entry eith given name if it found then
+ * Creat ByteArrayOutPutStream and get the class bytes to that .
+ * after goning throgh each and evry jar file if there is no entry with given name
+ * will throug a ClassNotFound execption
+ *
+ * @param filename <code>String</code> Name of the file to be loaded (Class Name)
+ * @return bytt[]
+ * @throws java.io.IOException <code>Exception</code>
+ */
+ private byte[] getClassByteCodes(String filename) throws Exception {
+ String completeFileName = filename;
+
+ /**
+ * Replacing org.apache. -> org/apache/...
+ */
+ completeFileName = completeFileName.replace('.', '/').concat(".class");
+
+ byte[] byteCodes = getBytes(completeFileName);
+
+ if (byteCodes != null) {
+ return byteCodes;
+ } else {
+ throw new ClassNotFoundException(
+ Messages.getMessage(DeploymentErrorMsgs.CLASS_NOT_FOUND, filename));
+ }
+ }
+
/*
- * This override locates resources similar to the way that getClassByteCodes() locates classes.
- * We do not store the bytes from resources in memory, as
- * the size of resources is generally unpredictable
- *
- * @param name
- * @return inputstream
- */
+ * This override locates resources similar to the way that getClassByteCodes() locates classes.
+ * We do not store the bytes from resources in memory, as
+ * the size of resources is generally unpredictable
+ *
+ * @param name
+ * @return inputstream
+ */
public InputStream getResourceAsStream(String name) {
- if (name == null)
+ if (name == null) {
return null;
+ }
InputStream is = super.getResourceAsStream(name);
- //ohh , input stream is null , so need to check whether thats there in lib/*.jar
+
+ // ohh , input stream is null , so need to check whether thats there in lib/*.jar
if (is == null) {
byte data[] = getBytes(name);
+
if (data == null) {
return null;
} else {
@@ -244,4 +273,3 @@
}
}
}
-
Modified: webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentConstants.java
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentConstants.java?rev=357187&r1=357186&r2=357187&view=diff
==============================================================================
--- webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentConstants.java (original)
+++ webservices/axis2/trunk/java/modules/core/src/org/apache/axis2/deployment/DeploymentConstants.java Fri Dec 16 09:13:57 2005
@@ -1,18 +1,19 @@
/*
- * 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.
- */
+* 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.
+*/
+
package org.apache.axis2.deployment;
@@ -20,82 +21,76 @@
* DeployCons interface is to keep constent value required for Deployemnt
*/
public interface DeploymentConstants {
- int SERVICE = 0; // if it is a servise
- int MODULE = 1; // if it is a module
-
- public static String META_INF ="META-INF";
- String SERVICEXML = "META-INF/services.xml";
+ public static String META_INF = "META-INF";
public static final String SERVICE_WSDL_NAME = "service.wsdl";
+ int SERVICE = 0; // if it is a servise
+ int MODULE = 1; // if it is a module
+ String SERVICEXML = "META-INF/services.xml";
String SERVICE_WSDL_WITH_FOLDER = "META-INF/service.wsdl";
+ String PHASE_ORDER = "phaseOrder";
+ String PHASEST = "phase";
+ String PARAMETER = "parameter"; // paramater start tag
String MODULEXML = "META-INF/module.xml";
- String PARAMETER = "parameter";// paramater start tag
- String LISTENERST = "listener";// paramater start tag
- String HANDERST = "handler";
String MODULEST = "module";
+ String MODULECONFIG = "moduleConfig";
String MESSGES = "message";
+ String LISTENERST = "listener"; // paramater start tag
String LABEL = "label";
- String MODULECONFIG = "moduleConfig";
String HOST_CONFIG = "hostConfiguration";
- String PHASEST = "phase";
- String PHASE_ORDER = "phaseOrder";
- String TYPEMAPPINGST = "typeMapping";// typeMapping start tag
- String BEANMAPPINGST = "beanMapping";// beanMapping start tag
- String OPRATIONST = "operation";// operation start tag
- String INFLOWST = "inflow";// inflow start tag
- String OUTFLOWST = "outflow";// outflowr start tag
- String IN_FAILTFLOW = "INfaultflow";// faultflow start tag
- String OUT_FAILTFLOW = "Outfaultflow";// faultflow start tag
+ String HANDERST = "handler";
+ String TYPEMAPPINGST = "typeMapping"; // typeMapping start tag
+ String TYPE = "type";
+ String TRANSPORTTAG = "transport";
+ String TRANSPORTSTAG = "transports";
+ String TRANSPORTSENDER = "transportSender";
+ String TRANSPORTRECEIVER = "transportReceiver";
+
+ // for serviemetadat
+ String STYLENAME = "style";
+ String SERVICE_PATH = "/services/";
+ String SERVICE_GROUP_ELEMENT = "serviceGroup";
+
+ // element in a services.xml
+ String SERVICE_ELEMENT = "service";
+ String SERVICETAG = "service";
+
+ // for handlers
+ String REF = "ref";
+ String PHASELAST = "phaseLast";
+ String PHASEFIRST = "phaseFirst";
+ String PHASE = "phase";
+ String OUT_FAILTFLOW = "Outfaultflow"; // faultflow start tag
+ String OUTFLOWST = "outflow"; // outflowr start tag
+ String ORDER = "order"; // to resolve the order tag
+ String OPRATIONST = "operation"; // operation start tag
// String FOLDE_NAME = "D:/Axis 2.0/projects/Deployement/test-data";
String MODULE_PATH = "/modules/";
- String SERVICE_PATH = "/services/";
+ String MESSAGERECEIVER = "messageReceiver";
+ String MEP = "mep";
// for jws file extension
String JWS_EXTENSION = ".jws";
-
- String SERVICETAG = "service";
- String AXIS2CONFIG = "axisconfig";
-
- // for serviemetadat
- String STYLENAME = "style";
+ String IN_FAILTFLOW = "INfaultflow"; // faultflow start tag
+ String INFLOWST = "inflow"; // inflow start tag
+ String HOTUPDATE = "hotupdate";
+ String HOTDEPLOYMENT = "hotdeployment";
+ String EXTRACTSERVICEARCHIVE = "extractServiceArchive";
+ String DISPATCH_ORDER = "dispatchOrder";
+ String DISPATCHER = "dispatcher";
+ String DESCRIPTION = "description";
String CONTEXTPATHNAME = "contextPath";
+ String CLASSNAME = "class";
+ String BEFORE = "before";
+ String BEANMAPPINGST = "beanMapping"; // beanMapping start tag
+ String AXIS2CONFIG = "axisconfig";
+ String ATUSE = "use";
// for parameters
String ATTNAME = "name";
String ATTLOCKED = "locked";
- String TYPE = "type";
// for operatiins
String ATQNAME = "name";
- String ATUSE = "use";
- String MEP = "mep";
-
- //for handlers
- String REF = "ref";
- String CLASSNAME = "class";
- String BEFORE = "before";
String AFTER = "after";
- String PHASE = "phase";
- String PHASEFIRST = "phaseFirst";
- String PHASELAST = "phaseLast";
- String ORDER = "order"; // to resolve the order tag
- String DESCRIPTION = "description";
-
- String TRANSPORTSTAG = "transports";
- String TRANSPORTTAG = "transport";
- String TRANSPORTSENDER = "transportSender";
- String TRANSPORTRECEIVER = "transportReceiver";
-
- String MESSAGERECEIVER = "messageReceiver";
-
-
- String HOTDEPLOYMENT = "hotdeployment";
- String HOTUPDATE = "hotupdate";
- String EXTRACTSERVICEARCHIVE = "extractServiceArchive";
- String DISPATCH_ORDER ="dispatchOrder";
- String DISPATCHER ="dispatcher";
-
- //element in a services.xml
- String SERVICE_ELEMENT ="service";
- String SERVICE_GROUP_ELEMENT ="serviceGroup";
}