[prev in list] [next in list] [prev in thread] [next in thread]
List: wsas-java-dev
Subject: [wsas-java-dev] svn commit r15590 - in trunk/wsas/java/modules:
From: svn () wso2 ! org
Date: 2008-04-07 4:31:40
Message-ID: E1Jij1A-0001yQ-98 () wso2 ! org
[Download RAW message or body]
Author: keith
Date: Sun Apr 6 21:31:26 2008
New Revision: 15590
Log:
Applying patch given by sanka for WSAS-736
Modified:
trunk/wsas/java/modules/admin/src/org/wso2/wsas/admin/service/GlobalAdmin.java
trunk/wsas/java/modules/admin/src/org/wso2/wsas/admin/service/SecurityScenarioConfigAdmin.java
trunk/wsas/java/modules/admin/src/org/wso2/wsas/admin/service/ServiceAdmin.java
trunk/wsas/java/modules/core/src/org/wso2/wsas/persistence/dataobject/ServicePolicyDO.java
Modified: trunk/wsas/java/modules/admin/src/org/wso2/wsas/admin/service/GlobalAdmin.java
==============================================================================
--- trunk/wsas/java/modules/admin/src/org/wso2/wsas/admin/service/GlobalAdmin.java (original)
+++ trunk/wsas/java/modules/admin/src/org/wso2/wsas/admin/service/GlobalAdmin.java Sun \
Apr 6 21:31:26 2008 @@ -26,7 +26,7 @@
import org.apache.axis2.deployment.DeploymentEngine;
import org.apache.axis2.description.AxisModule;
import org.apache.axis2.description.Parameter;
-import org.apache.axis2.description.PolicyInclude;
+import org.apache.axis2.description.PolicySubject;
import org.apache.axis2.engine.Handler;
import org.apache.axis2.engine.Phase;
import org.apache.axis2.phaseresolver.PhaseMetadata;
@@ -54,367 +54,388 @@
import java.util.Date;
import java.util.List;
-
/**
* Admin service to manage operations on the <code>AxisConfiguration</code>
*/
public class GlobalAdmin extends AbstractAdmin {
- private static final Log log = LogFactory.getLog(GlobalAdmin.class);
- private PersistenceManager pm = new PersistenceManager();
+ private static final Log log = LogFactory.getLog(GlobalAdmin.class);
+ private PersistenceManager pm = new PersistenceManager();
- /**
- * Restore the default system settings and override all the changes persisted in \
the
- * database. Please note that this is possible only for the default database \
included
- * with WSO2 WSAS
- */
- public void restoreDefaults() {
- pm.restoreDefaults();
- }
-
- /**
- * List handlers in a given phase (global)
- *
- * @param flow
- * @param phaseName
- * @return list of global phase handlers as a String[].
- * @throws AxisFault
- */
- public String[] listGlobalPhaseHandlers(int flow, String phaseName) throws \
AxisFault {
- String[] handlers = null;
- switch (flow) {
- case PhaseMetadata.IN_FLOW: {
- ArrayList inflow = getAxisConfig().getInFlowPhases();
- for (int i = 0; i < inflow.size(); i++) {
- Phase phase = (Phase) inflow.get(i);
- if (phase.getPhaseName().equals(phaseName)) {
- handlers = new String[phase.getHandlerCount()];
- List hands = phase.getHandlers();
- for (int j = 0; j < hands.size(); j++) {
- Handler handler = (Handler) hands.get(j);
- handlers[j] = handler.getName();
- }
- }
- }
- break;
- }
- case PhaseMetadata.OUT_FLOW: {
- ArrayList phases = getAxisConfig().getOutFlowPhases();
- for (int i = 0; i < phases.size(); i++) {
- Phase phase = (Phase) phases.get(i);
- if (phase.getPhaseName().equals(phaseName)) {
- handlers = new String[phase.getHandlerCount()];
- List hands = phase.getHandlers();
- for (int j = 0; j < hands.size(); j++) {
- Handler handler = (Handler) hands.get(j);
- handlers[j] = handler.getName();
- }
- }
- }
- break;
- }
- case PhaseMetadata.FAULT_IN_FLOW: {
- ArrayList inflow = getAxisConfig().getInFaultFlowPhases();
- for (int i = 0; i < inflow.size(); i++) {
- Phase phase = (Phase) inflow.get(i);
- if (phase.getPhaseName().equals(phaseName)) {
- handlers = new String[phase.getHandlerCount()];
- List hands = phase.getHandlers();
- for (int j = 0; j < hands.size(); j++) {
- Handler handler = (Handler) hands.get(j);
- handlers[j] = handler.getName();
- }
- }
- }
- break;
- }
- case PhaseMetadata.FAULT_OUT_FLOW: {
- ArrayList inflow = getAxisConfig().getOutFaultFlowPhases();
- for (int i = 0; i < inflow.size(); i++) {
- Phase phase = (Phase) inflow.get(i);
- if (phase.getPhaseName().equals(phaseName)) {
- handlers = new String[phase.getHandlerCount()];
- List hands = phase.getHandlers();
- for (int j = 0; j < hands.size(); j++) {
- Handler handler = (Handler) hands.get(j);
- handlers[j] = handler.getName();
- }
- }
- }
- break;
- }
- }
- return handlers;
- }
-
- /**
- * return only the parameters for explicitly set for this module (not including \
inherited ones),
- * where each parameter is an XML fragment representing the "parameter" element.
- * Note: In this case (unlike module/service group etc.), there are no inherited \
parameters.
- */
- public OMElement[] getDeclaredSystemParameters() throws AxisFault {
- ArrayList parameters = getAxisConfig().getParameters();
- OMElement[] paraElements = new OMElement[parameters.size()];
-
- for (int i = 0; i < parameters.size(); i++) {
- Parameter parameter = (Parameter) parameters.get(i);
- paraElements[i] = parameter.getParameterElement();
- }
-
- return paraElements;
- }
-
- public void setSystemParameter(OMElement parameterElement) throws AxisFault {
- Parameter parameter = ParameterUtil.createParameter(parameterElement);
- getAxisConfig().addParameter(parameter);
- }
-
- /**
- * List global phases
- *
- * @param flow
- * @return Global phases
- * @throws AxisFault
- */
- public String[] listGlobalPhases(int flow) throws AxisFault {
- String[] phaseNames = null;
-
- switch (flow) {
- case PhaseMetadata.IN_FLOW: {
- ArrayList inflow = getAxisConfig().getInFlowPhases();
- phaseNames = new String[inflow.size()];
-
- for (int i = 0; i < inflow.size(); i++) {
- Phase phase = (Phase) inflow.get(i);
- phaseNames[i] = phase.getPhaseName();
- }
-
- break;
- }
- case PhaseMetadata.OUT_FLOW: {
- ArrayList inflow = getAxisConfig().getOutFlowPhases();
- phaseNames = new String[inflow.size()];
-
- for (int i = 0; i < inflow.size(); i++) {
- Phase phase = (Phase) inflow.get(i);
- phaseNames[i] = phase.getPhaseName();
- }
-
- break;
- }
- case PhaseMetadata.FAULT_IN_FLOW: {
- ArrayList inflow = getAxisConfig().getInFaultFlowPhases();
- phaseNames = new String[inflow.size()];
-
- for (int i = 0; i < inflow.size(); i++) {
- Phase phase = (Phase) inflow.get(i);
- phaseNames[i] = phase.getPhaseName();
- }
-
- break;
- }
- case PhaseMetadata.FAULT_OUT_FLOW: {
- ArrayList inflow = getAxisConfig().getOutFaultFlowPhases();
- phaseNames = new String[inflow.size()];
-
- for (int i = 0; i < inflow.size(); i++) {
- Phase phase = (Phase) inflow.get(i);
- phaseNames[i] = phase.getPhaseName();
- }
-
- break;
- }
- }
- return phaseNames;
- }
-
- public boolean login(String username, String password) throws AxisFault {
-
- MessageContext msgCtx = MessageContext.getCurrentMessageContext();
-
- ServiceGroupContext sgCtx = msgCtx.getServiceGroupContext();
- if ((username == null) || (password == null) ||
- username.trim().equals("") || password.trim().equals("")) {
- sgCtx.setProperty(ServerConstants.ADMIN_LOGGED_IN, "false");
- return false;
- }
- boolean loggedIn =
- new AdminAuthenticator().authenticate(username, password);
- SimpleDateFormat date = new SimpleDateFormat("'['yyyy-MM-dd \
HH:mm:ss,SSSS']'");
- Date currentTime = Calendar.getInstance().getTime();
- ServiceUserDO user = pm.getUser(username);
- String remoteIP = (String) msgCtx.getProperty(MessageContext.REMOTE_ADDR);
- if (loggedIn) {
- sgCtx.setProperty(ServerConstants.ADMIN_LOGGED_IN, "true");
- log.info("Administrator \'" + username + "' logged in at " + \
date.format(currentTime) +
- " from IP address " + remoteIP);
- if (user.getLastLoggedIn() != null) {
- log.info("Last successful login at " + \
date.format(user.getLastLoggedIn()) +
- " from IP Address " + user.getLastLoginIP());
- }
- if (user.getLastFailedLogIn() != null) {
- log.info("Last failed login at " + \
date.format(user.getLastFailedLogIn()) +
- " from IP Address " + user.getLastFailedLoginIP());
- }
- user.setLastLoggedIn(currentTime);
- user.setLastLoginIP(remoteIP);
- try {
- pm.updateUser(user);
- } catch (ServiceUserNotFoundException e) {
- throw AxisFault.makeFault(e);
- }
- return true;
- } else {
- sgCtx.removeProperty(ServerConstants.ADMIN_LOGGED_IN);
- if (user != null) {
- log.warn("Failed login attempt by Administrator \'" + username + "\' \
at " +
- date.format(currentTime) + " from IP address " + remoteIP);
- user.setLastFailedLogIn(currentTime);
- user.setLastFailedLoginIP(remoteIP);
- try {
- pm.updateUser(user);
- } catch (ServiceUserNotFoundException e) {
- throw AxisFault.makeFault(e);
- }
- } else {
- log.warn("Failed Administrator login attempt by non-existent \
Administrator \'" +
- username + "\' at " + date.format(currentTime) +
- " from IP address " + remoteIP);
- }
- return false;
- }
- }
-
- public void serverRegistered() {
- ConfigurationContext configCtx =
- MessageContext.getCurrentMessageContext().getConfigurationContext();
- configCtx.setProperty(ServerConstants.SERVER_REGISTERED, "true");
- pm.updateConfigurationProperty(ServerConstants.SERVER_REGISTERED, "true");
- }
-
- public boolean isServerRegistered() {
- ConfigurationContext configCtx =
- MessageContext.getCurrentMessageContext().getConfigurationContext();
- String serverReg = (String) \
configCtx.getProperty(ServerConstants.SERVER_REGISTERED);
-
- if (serverReg == null) {
- serverReg = \
pm.getConfigurationProperty(ServerConstants.SERVER_REGISTERED);
- if (serverReg == null) {
- serverReg = "false";
- pm.updateConfigurationProperty(ServerConstants.SERVER_REGISTERED,
- "false");
- configCtx.setProperty(ServerConstants.SERVER_REGISTERED, "false");
- }
- }
-
- return serverReg.equals("true");
- }
-
- public void logout() throws AxisFault {
- MessageContext.getCurrentMessageContext().
- getServiceGroupContext().getProperties().clear();
- }
-
- public boolean deployService(OMElement element) throws AxisFault {
- try {
- if (element == null) {
- throw new AxisFault("Element is null");
- }
-
- String fileName = element.getLocalName();
- OMNode node = element.getFirstOMChild();
- if (node instanceof OMText) {
- OMText txt = (OMText) node;
- String repo = getAxisConfig().getRepository().getPath();
- DataHandler expectedDH = (DataHandler) txt.getDataHandler();
- File serviceDir = new File(repo, "services");
- File file = new File(serviceDir, fileName);
- OutputStream out = new FileOutputStream(file);
- expectedDH.writeTo(out);
- out.flush();
- out.close();
-
- return true;
- } else {
- throw new AxisFault("Invalid Message");
- }
- } catch (IOException e) {
- throw AxisFault.makeFault(e);
- }
- }
-
- public boolean deployModule(OMElement element) throws AxisFault {
- try {
- if (element == null) {
- throw new AxisFault("Element null");
- }
-
- String fileName = element.getLocalName();
- OMNode node = element.getFirstOMChild();
-
- if (node instanceof OMText) {
- OMText txt = (OMText) node;
- String repo = getAxisConfig().getRepository().getPath();
- DataHandler expectedDH = (DataHandler) txt.getDataHandler();
- File moduleDir = new File(repo, "modules");
- File file = new File(moduleDir, fileName);
- OutputStream out = new FileOutputStream(file);
- expectedDH.writeTo(out);
- out.flush();
- out.close();
-
- AxisModule module =
- DeploymentEngine.buildModule(file, getAxisConfig());
- getAxisConfig().addModule(module);
-
- return true;
- } else {
- throw new AxisFault("Invalid Message");
- }
- } catch (IOException e) {
- throw AxisFault.makeFault(e);
- }
- }
-
- public OMElement getPolicy() throws AxisFault {
- PolicyInclude globalPolicyInclude = getAxisConfig().getPolicyInclude();
- Policy globalPolicy = globalPolicyInclude.getPolicy();
-
- if (globalPolicy == null) {
- return PolicyUtil.getEmptyPolicyAsOMElement();
- }
-
- return PolicyUtil.getPolicyAsOMElement(globalPolicy);
- }
-
- public void setPolicy(OMElement policyElement) throws AxisFault {
- Policy globalPolicy;
-
- try {
- globalPolicy = PolicyUtil.getPolicyFromOMElement(policyElement);
- } catch (Exception ex) {
- throw new AxisFault("Cannot convert the OMElement to Policy", ex);
- }
-
- PolicyInclude globalPolicyInclude = getAxisConfig().getPolicyInclude();
- globalPolicyInclude.setPolicy(globalPolicy);
- }
-
- /**
- * This has used to test if the server is availabele and the current admins \
login status.
- *
- * @return boolean
- */
- public boolean ping() {
- MessageContext msgCtx = MessageContext.getCurrentMessageContext();
- ServiceGroupContext serviceGroupContext = msgCtx.getServiceGroupContext();
- Object property = \
serviceGroupContext.getProperty(ServerConstants.ADMIN_LOGGED_IN);
- if (property == null) {
- return false;
- } else {
- String status = (String) property;
- return JavaUtils.isTrue(status);
- }
+ /**
+ * Restore the default system settings and override all the changes
+ * persisted in the database. Please note that this is possible only for the
+ * default database included with WSO2 WSAS
+ */
+ public void restoreDefaults() {
+ pm.restoreDefaults();
+ }
+
+ /**
+ * List handlers in a given phase (global)
+ *
+ * @param flow
+ * @param phaseName
+ * @return list of global phase handlers as a String[].
+ * @throws AxisFault
+ */
+ public String[] listGlobalPhaseHandlers(int flow, String phaseName)
+ throws AxisFault {
+ String[] handlers = null;
+ switch (flow) {
+ case PhaseMetadata.IN_FLOW: {
+ ArrayList inflow = getAxisConfig().getInFlowPhases();
+ for (int i = 0; i < inflow.size(); i++) {
+ Phase phase = (Phase) inflow.get(i);
+ if (phase.getPhaseName().equals(phaseName)) {
+ handlers = new String[phase.getHandlerCount()];
+ List hands = phase.getHandlers();
+ for (int j = 0; j < hands.size(); j++) {
+ Handler handler = (Handler) hands.get(j);
+ handlers[j] = handler.getName();
+ }
+ }
+ }
+ break;
+ }
+ case PhaseMetadata.OUT_FLOW: {
+ ArrayList phases = getAxisConfig().getOutFlowPhases();
+ for (int i = 0; i < phases.size(); i++) {
+ Phase phase = (Phase) phases.get(i);
+ if (phase.getPhaseName().equals(phaseName)) {
+ handlers = new String[phase.getHandlerCount()];
+ List hands = phase.getHandlers();
+ for (int j = 0; j < hands.size(); j++) {
+ Handler handler = (Handler) hands.get(j);
+ handlers[j] = handler.getName();
+ }
+ }
+ }
+ break;
+ }
+ case PhaseMetadata.FAULT_IN_FLOW: {
+ ArrayList inflow = getAxisConfig().getInFaultFlowPhases();
+ for (int i = 0; i < inflow.size(); i++) {
+ Phase phase = (Phase) inflow.get(i);
+ if (phase.getPhaseName().equals(phaseName)) {
+ handlers = new String[phase.getHandlerCount()];
+ List hands = phase.getHandlers();
+ for (int j = 0; j < hands.size(); j++) {
+ Handler handler = (Handler) hands.get(j);
+ handlers[j] = handler.getName();
+ }
+ }
+ }
+ break;
+ }
+ case PhaseMetadata.FAULT_OUT_FLOW: {
+ ArrayList inflow = getAxisConfig().getOutFaultFlowPhases();
+ for (int i = 0; i < inflow.size(); i++) {
+ Phase phase = (Phase) inflow.get(i);
+ if (phase.getPhaseName().equals(phaseName)) {
+ handlers = new String[phase.getHandlerCount()];
+ List hands = phase.getHandlers();
+ for (int j = 0; j < hands.size(); j++) {
+ Handler handler = (Handler) hands.get(j);
+ handlers[j] = handler.getName();
+ }
+ }
+ }
+ break;
+ }
+ }
+ return handlers;
+ }
+
+ /**
+ * return only the parameters for explicitly set for this module (not
+ * including inherited ones), where each parameter is an XML fragment
+ * representing the "parameter" element. Note: In this case (unlike
+ * module/service group etc.), there are no inherited parameters.
+ */
+ public OMElement[] getDeclaredSystemParameters() throws AxisFault {
+ ArrayList parameters = getAxisConfig().getParameters();
+ OMElement[] paraElements = new OMElement[parameters.size()];
+
+ for (int i = 0; i < parameters.size(); i++) {
+ Parameter parameter = (Parameter) parameters.get(i);
+ paraElements[i] = parameter.getParameterElement();
+ }
+
+ return paraElements;
+ }
+
+ public void setSystemParameter(OMElement parameterElement) throws AxisFault {
+ Parameter parameter = ParameterUtil.createParameter(parameterElement);
+ getAxisConfig().addParameter(parameter);
+ }
+
+ /**
+ * List global phases
+ *
+ * @param flow
+ * @return Global phases
+ * @throws AxisFault
+ */
+ public String[] listGlobalPhases(int flow) throws AxisFault {
+ String[] phaseNames = null;
+
+ switch (flow) {
+ case PhaseMetadata.IN_FLOW: {
+ ArrayList inflow = getAxisConfig().getInFlowPhases();
+ phaseNames = new String[inflow.size()];
+
+ for (int i = 0; i < inflow.size(); i++) {
+ Phase phase = (Phase) inflow.get(i);
+ phaseNames[i] = phase.getPhaseName();
+ }
+
+ break;
+ }
+ case PhaseMetadata.OUT_FLOW: {
+ ArrayList inflow = getAxisConfig().getOutFlowPhases();
+ phaseNames = new String[inflow.size()];
+
+ for (int i = 0; i < inflow.size(); i++) {
+ Phase phase = (Phase) inflow.get(i);
+ phaseNames[i] = phase.getPhaseName();
+ }
+
+ break;
+ }
+ case PhaseMetadata.FAULT_IN_FLOW: {
+ ArrayList inflow = getAxisConfig().getInFaultFlowPhases();
+ phaseNames = new String[inflow.size()];
+
+ for (int i = 0; i < inflow.size(); i++) {
+ Phase phase = (Phase) inflow.get(i);
+ phaseNames[i] = phase.getPhaseName();
+ }
+
+ break;
+ }
+ case PhaseMetadata.FAULT_OUT_FLOW: {
+ ArrayList inflow = getAxisConfig().getOutFaultFlowPhases();
+ phaseNames = new String[inflow.size()];
+
+ for (int i = 0; i < inflow.size(); i++) {
+ Phase phase = (Phase) inflow.get(i);
+ phaseNames[i] = phase.getPhaseName();
+ }
+
+ break;
+ }
+ }
+ return phaseNames;
+ }
+
+ public boolean login(String username, String password) throws AxisFault {
+
+ MessageContext msgCtx = MessageContext.getCurrentMessageContext();
+
+ ServiceGroupContext sgCtx = msgCtx.getServiceGroupContext();
+ if ((username == null) || (password == null)
+ || username.trim().equals("") || password.trim().equals("")) {
+ sgCtx.setProperty(ServerConstants.ADMIN_LOGGED_IN, "false");
+ return false;
+ }
+ boolean loggedIn = new AdminAuthenticator().authenticate(username,
+ password);
+ SimpleDateFormat date = new SimpleDateFormat(
+ "'['yyyy-MM-dd HH:mm:ss,SSSS']'");
+ Date currentTime = Calendar.getInstance().getTime();
+ ServiceUserDO user = pm.getUser(username);
+ String remoteIP = (String) msgCtx
+ .getProperty(MessageContext.REMOTE_ADDR);
+ if (loggedIn) {
+ sgCtx.setProperty(ServerConstants.ADMIN_LOGGED_IN, "true");
+ log
+ .info("Administrator \'" + username + "' logged in at "
+ + date.format(currentTime) + " from IP address "
+ + remoteIP);
+ if (user.getLastLoggedIn() != null) {
+ log.info("Last successful login at "
+ + date.format(user.getLastLoggedIn())
+ + " from IP Address " + user.getLastLoginIP());
+ }
+ if (user.getLastFailedLogIn() != null) {
+ log.info("Last failed login at "
+ + date.format(user.getLastFailedLogIn())
+ + " from IP Address " + user.getLastFailedLoginIP());
+ }
+ user.setLastLoggedIn(currentTime);
+ user.setLastLoginIP(remoteIP);
+ try {
+ pm.updateUser(user);
+ } catch (ServiceUserNotFoundException e) {
+ throw AxisFault.makeFault(e);
+ }
+ return true;
+ } else {
+ sgCtx.removeProperty(ServerConstants.ADMIN_LOGGED_IN);
+ if (user != null) {
+ log.warn("Failed login attempt by Administrator \'" + username
+ + "\' at " + date.format(currentTime)
+ + " from IP address " + remoteIP);
+ user.setLastFailedLogIn(currentTime);
+ user.setLastFailedLoginIP(remoteIP);
+ try {
+ pm.updateUser(user);
+ } catch (ServiceUserNotFoundException e) {
+ throw AxisFault.makeFault(e);
+ }
+ } else {
+ log
+ .warn("Failed Administrator login attempt by non-existent Administrator \'"
+ + username
+ + "\' at "
+ + date.format(currentTime)
+ + " from IP address " + remoteIP);
+ }
+ return false;
+ }
+ }
+
+ public void serverRegistered() {
+ ConfigurationContext configCtx = MessageContext
+ .getCurrentMessageContext().getConfigurationContext();
+ configCtx.setProperty(ServerConstants.SERVER_REGISTERED, "true");
+ pm.updateConfigurationProperty(ServerConstants.SERVER_REGISTERED,
+ "true");
+ }
+
+ public boolean isServerRegistered() {
+ ConfigurationContext configCtx = MessageContext
+ .getCurrentMessageContext().getConfigurationContext();
+ String serverReg = (String) configCtx
+ .getProperty(ServerConstants.SERVER_REGISTERED);
+
+ if (serverReg == null) {
+ serverReg = pm
+ .getConfigurationProperty(ServerConstants.SERVER_REGISTERED);
+ if (serverReg == null) {
+ serverReg = "false";
+ pm.updateConfigurationProperty(
+ ServerConstants.SERVER_REGISTERED, "false");
+ configCtx.setProperty(ServerConstants.SERVER_REGISTERED,
+ "false");
+ }
+ }
+
+ return serverReg.equals("true");
+ }
+
+ public void logout() throws AxisFault {
+ MessageContext.getCurrentMessageContext().getServiceGroupContext()
+ .getProperties().clear();
+ }
+
+ public boolean deployService(OMElement element) throws AxisFault {
+ try {
+ if (element == null) {
+ throw new AxisFault("Element is null");
+ }
+
+ String fileName = element.getLocalName();
+ OMNode node = element.getFirstOMChild();
+ if (node instanceof OMText) {
+ OMText txt = (OMText) node;
+ String repo = getAxisConfig().getRepository().getPath();
+ DataHandler expectedDH = (DataHandler) txt.getDataHandler();
+ File serviceDir = new File(repo, "services");
+ File file = new File(serviceDir, fileName);
+ OutputStream out = new FileOutputStream(file);
+ expectedDH.writeTo(out);
+ out.flush();
+ out.close();
+
+ return true;
+ } else {
+ throw new AxisFault("Invalid Message");
+ }
+ } catch (IOException e) {
+ throw AxisFault.makeFault(e);
+ }
+ }
+
+ public boolean deployModule(OMElement element) throws AxisFault {
+ try {
+ if (element == null) {
+ throw new AxisFault("Element null");
+ }
+
+ String fileName = element.getLocalName();
+ OMNode node = element.getFirstOMChild();
+
+ if (node instanceof OMText) {
+ OMText txt = (OMText) node;
+ String repo = getAxisConfig().getRepository().getPath();
+ DataHandler expectedDH = (DataHandler) txt.getDataHandler();
+ File moduleDir = new File(repo, "modules");
+ File file = new File(moduleDir, fileName);
+ OutputStream out = new FileOutputStream(file);
+ expectedDH.writeTo(out);
+ out.flush();
+ out.close();
+
+ AxisModule module = DeploymentEngine.buildModule(file,
+ getAxisConfig());
+ getAxisConfig().addModule(module);
+
+ return true;
+ } else {
+ throw new AxisFault("Invalid Message");
+ }
+ } catch (IOException e) {
+ throw AxisFault.makeFault(e);
+ }
+ }
+
+ public OMElement getPolicy() throws AxisFault {
+ PolicySubject globalPolicySubject = getAxisConfig().getPolicySubject();
+ ArrayList policyList = new ArrayList(globalPolicySubject
+ .getAttachedPolicyComponents());
+ Policy globalPolicy = org.apache.axis2.util.PolicyUtil.getMergedPolicy(
+ policyList, getAxisConfig());
+
+ if (globalPolicy == null) {
+ return PolicyUtil.getEmptyPolicyAsOMElement();
+ }
+
+ return PolicyUtil.getPolicyAsOMElement(globalPolicy);
+ }
+
+ public void setPolicy(OMElement policyElement) throws AxisFault {
+ Policy globalPolicy;
+
+ try {
+ globalPolicy = PolicyUtil.getPolicyFromOMElement(policyElement);
+ } catch (Exception ex) {
+ throw new AxisFault("Cannot convert the OMElement to Policy", ex);
+ }
+
+ PolicySubject globalPolicySubject = getAxisConfig().getPolicySubject();
+ globalPolicySubject.attachPolicy(globalPolicy);
+ }
+
+ /**
+ * This has used to test if the server is availabele and the current admins
+ * login status.
+ *
+ * @return boolean
+ */
+ public boolean ping() {
+ MessageContext msgCtx = MessageContext.getCurrentMessageContext();
+ ServiceGroupContext serviceGroupContext = msgCtx
+ .getServiceGroupContext();
+ Object property = serviceGroupContext
+ .getProperty(ServerConstants.ADMIN_LOGGED_IN);
+ if (property == null) {
+ return false;
+ } else {
+ String status = (String) property;
+ return JavaUtils.isTrue(status);
+ }
- }
+ }
}
Modified: trunk/wsas/java/modules/admin/src/org/wso2/wsas/admin/service/SecurityScenarioConfigAdmin.java
==============================================================================
--- trunk/wsas/java/modules/admin/src/org/wso2/wsas/admin/service/SecurityScenarioConfigAdmin.java (original)
+++ trunk/wsas/java/modules/admin/src/org/wso2/wsas/admin/service/SecurityScenarioConfigAdmin.java Sun \
Apr 6 21:31:26 2008 @@ -145,9 +145,8 @@
policy.addAssertion(rampartConfig);
}
AxisService axisService = getAxisConfig().getService(serviceName);
- axisService.getPolicyInclude().addPolicyElement(PolicyInclude.AXIS_SERVICE_POLICY,
- policy);
-
+ axisService.getPolicySubject().attachPolicy(policy);
+
// When there is a transport binding sec policy assertion,
// the service should be exposed only via HTTPS
Iterator alternatives = policy.getAlternatives();
Modified: trunk/wsas/java/modules/admin/src/org/wso2/wsas/admin/service/ServiceAdmin.java
==============================================================================
--- trunk/wsas/java/modules/admin/src/org/wso2/wsas/admin/service/ServiceAdmin.java (original)
+++ trunk/wsas/java/modules/admin/src/org/wso2/wsas/admin/service/ServiceAdmin.java Sun \
Apr 6 21:31:26 2008 @@ -26,16 +26,19 @@
import org.apache.axis2.Constants;
import org.apache.axis2.context.ConfigurationContext;
import org.apache.axis2.context.MessageContext;
+import org.apache.axis2.description.AxisEndpoint;
import org.apache.axis2.description.AxisOperation;
import org.apache.axis2.description.AxisService;
import org.apache.axis2.description.AxisServiceGroup;
import org.apache.axis2.description.Parameter;
import org.apache.axis2.description.PolicyInclude;
+import org.apache.axis2.description.PolicySubject;
import org.apache.axis2.description.TransportInDescription;
import org.apache.axis2.engine.AxisConfiguration;
import org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver;
import org.apache.axis2.rpc.receivers.RPCMessageReceiver;
import org.apache.axis2.rpc.receivers.ejb.EJBUtil;
+import org.apache.axis2.util.PolicyLocator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.neethi.Policy;
@@ -108,1960 +111,2021 @@
* Admin service to manage services
*/
public class ServiceAdmin extends AbstractAdmin implements ServiceAdminMBean {
- private static final Log log = LogFactory.getLog(ServiceAdmin.class);
+ private static final Log log = LogFactory.getLog(ServiceAdmin.class);
- private static final String SERVICE_MUST_CONTAIN_AT_LEAST_ONE_TRANSPORT =
- "Cannot remove transport binding. " +
- "<br/>A service must contain at least one transport binding!";
- private PersistenceManager pm = new PersistenceManager();
-
- static {
- MBeanRegistrar.registerMBean(new ServiceAdmin());
- }
-
- public ServiceAdmin() {
- }
-
- /**
- * Expose this service only via the specified transport
- *
- * @param serviceId
- * @param transportProtocols
- * @return Status Message
- * @throws AxisFault
- */
- public String exposeServiceOnlyViaTransports(String serviceId,
- String[] transportProtocols) throws \
AxisFault {
-
- AxisService axisService = getAxisConfig().getService(serviceId);
- ArrayList transports = new ArrayList();
- for (int i = 0; i < transportProtocols.length; i++) {
- transports.add(transportProtocols[i]);
- }
- axisService.setExposedTransports(transports);
-
- ServiceDO serviceDO = pm.getService(axisService.getName(),
- \
ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
- serviceDO.setIsExposedOnAllTransports(false);
-
- TransportDO[] transportDOs = pm.getTransports();
- for (int i = 0; i < transportDOs.length; i++) { // Remove all transports
- serviceDO.getTransports().remove(transportDOs[i]);
- }
- for (int i = 0; i < transportProtocols.length; i++) {
- TransportDO transportDO = pm.getTransport(transportProtocols[i]);
- serviceDO.addTransport(transportDO); // add only specified transports
- pm.updateEntity(transportDO);
- }
-
- try {
- pm.updateService(serviceDO);
- } catch (ServiceNotFoundException e) {
- String msg = "Service with name " + serviceId + " not found.";
- log.error(msg);
- throw new AxisFault(msg, e);
- }
- return "Successfully add selected transport bindings to service " + \
serviceId;
- }
-
- public String addTransportBinding(String serviceId,
- String transportProtocol) throws AxisFault {
- if (transportProtocol == null || transportProtocol.trim().length() == 0) {
- return "Invalid transport " + transportProtocol;
- }
- AxisService axisService = getAxisConfig().getService(serviceId);
-
- if (axisService.isExposedTransport(transportProtocol)) {
- return "Service [" + serviceId + "] already contains the " + \
transportProtocol +
- " transport binding!";
- }
-
- ServiceDO serviceDO = pm.getService(axisService.getName(),
- \
ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
- if (serviceDO.getIsUTAuthEnabled()) {
- if (!transportProtocol.equalsIgnoreCase(ServerConstants.HTTPS_TRANSPORT)) \
{
- throw new AxisFault("Cannot add non-HTTPS transport binding for \
Service [" +
- serviceId + "] since a security scenario which \
requires the " +
- "service to contain only the HTTPS transport \
binding" +
- " has been applied to this service.");
- }
- }
-
- if (!axisService.isEnableAllTransports()) {
- axisService.addExposedTransport(transportProtocol);
- } else {
- return "Service [" + serviceId + "] already contains the " + \
transportProtocol +
- " transport binding!";
- }
-
- TransportDO transportDO = pm.getTransport(transportProtocol);
- if (transportDO != null) {
- serviceDO.setIsExposedOnAllTransports(false);
- serviceDO.addTransport(transportDO);
-
- try {
- pm.updateService(serviceDO);
- pm.updateEntity(transportDO);
- } catch (ServiceNotFoundException e) {
- String msg = "Service with name " + serviceId + " not found.";
- log.error(msg);
- throw new AxisFault(msg, e);
- }
- }
-
- return "Successfully added " + transportProtocol + " transport binding to \
service " +
- serviceId;
- }
-
- public String removeTransportBinding(String serviceId,
- String transportProtocol) throws AxisFault \
{
-
- AxisService axisService = getAxisConfig().getService(serviceId);
- ServiceDO serviceDO = pm.getService(axisService.getName(),
- \
ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
- if (serviceDO.getIsUTAuthEnabled()) {
- if (transportProtocol.equalsIgnoreCase(ServerConstants.HTTPS_TRANSPORT)) \
{
- throw new AxisFault("HTTPS transport binding for Service [" + \
serviceId +
- "] cannot be removed since a security scenario \
which requires" +
- " HTTPS has been applied to this service.");
- }
- }
- TransportDO transportDO = pm.getTransport(transportProtocol);
- if (!axisService.isEnableAllTransports()) {
- if (axisService.getExposedTransports().size() == 1) {
- return SERVICE_MUST_CONTAIN_AT_LEAST_ONE_TRANSPORT;
- } else {
- serviceDO.getTransports().remove(transportDO);
- transportDO.getServices().remove(serviceDO);
- axisService.removeExposedTransport(transportProtocol);
- pm.updateEntity(transportDO);
- }
- } else {
- TransportSummary[] transports = new TransportAdmin().listTransports();
-
- if (transports.length == 1) {
- return SERVICE_MUST_CONTAIN_AT_LEAST_ONE_TRANSPORT;
- } else {
- for (int i = 0; i < transports.length; i++) {
- String protocol = transports[i].getProtocol();
-
- if (!protocol.equals(transportProtocol)) {
- axisService.addExposedTransport(protocol);
- TransportDO addTransportDO = pm.getTransport(protocol);
- serviceDO.addTransport(addTransportDO);
- pm.updateEntity(addTransportDO);
- }
- }
- }
- }
-
- serviceDO.setIsExposedOnAllTransports(false);
- try {
- pm.updateService(serviceDO);
- } catch (ServiceNotFoundException e) {
- String msg = "Service with name " + serviceId + " not found.";
- log.error(msg);
- throw new AxisFault(msg, e);
- }
-
- return "Removed " + transportProtocol + " transport binding for " + \
serviceId + " service";
- }
-
- public String[] getExposedTransports(String serviceId) throws AxisFault {
- AxisService axisService = getAxisConfig().getService(serviceId);
- if (!axisService.isEnableAllTransports()) {
- List exposedTransports = axisService.getExposedTransports();
- return (String[]) exposedTransports.toArray(new \
String[exposedTransports.size()]);
- } else {
- HashMap transportsIn = getConfigContext().getAxisConfiguration()
- .getTransportsIn();
- String[] transports = new String[transportsIn.size()];
- int i = 0;
-
- for (Iterator transportsIter = transportsIn.values().iterator();
- transportsIter.hasNext();) {
- TransportInDescription tiDesc = (TransportInDescription) \
transportsIter.next();
- transports[i++] = tiDesc.getName();
- }
-
- return transports;
- }
- }
-
- public void creatService(String serviceName) throws AxisFault {
- AxisService service = AxisService.createService(serviceName,
- getAxisConfig());
- getAxisConfig().addService(service);
- }
-
- public void stopService(String serviceName) throws Exception {
- AxisService axisService = \
getAxisConfig().getServiceForActivation(serviceName);
- if (axisService == null) {
- throw new Exception("Invalid service name " + serviceName);
- }
-
- try {
- getAxisConfig().stopService(serviceName);
- } catch (AxisFault e) {
- String msg = "Cannot stop service " + serviceName;
- log.error(msg, e);
- throw new Exception(msg);
- }
- }
-
- /* public String[] getActiveEndPoints() {
-List endpoints = new ArrayList();
-for (Iterator iter = getAxisConfig().getServices().values().iterator(); \
iter.hasNext();) {
-AxisService service = (AxisService) iter.next();
-if (service.isActive()) {
- *//* String[] eprs;
- try {
- eprs = service.getEPRs();
- } catch (AxisFault e) {
- throw new RuntimeException("Cannot get service EPRs", e);
- }
- for (int i = 0; i < eprs.length; i++) {
- String epr = eprs[i];
- if (!endpoints.contains(epr)) {
- endpoints.add(epr);
- }
- }*//*
-
- for (Iterator endpointIter = \
service.getEndpoints().values().iterator();
- endpointIter.hasNext();) {
- AxisEndpoint axisEndpoint = (AxisEndpoint) endpointIter.next();
- String binding = axisEndpoint.getBinding().getName().toString();
- String epr = axisEndpoint.getEndpointURL();
-
- endpoints.add(epr + " [" + binding + "]");
-
- }
- }
- }
- return (String[]) endpoints.toArray(new String[endpoints.size()]);
- }
-*/
-
- public int getNumberOfActiveServices() throws Exception {
- int activeServices = 0;
- HashMap services = getAxisConfig().getServices();
- for (Iterator iterator = services.values().iterator(); iterator.hasNext();) \
{
- AxisService service = (AxisService) iterator.next();
- if (service.isActive()) {
- activeServices++;
- }
- }
- return activeServices;
- }
-
- public int getNumberOfInactiveServices() throws Exception {
- int inactiveServices = 0;
- HashMap services = getAxisConfig().getServices();
- for (Iterator iterator = services.values().iterator(); iterator.hasNext();) \
{
- AxisService service = (AxisService) iterator.next();
- if (!service.isActive()) {
- inactiveServices++;
- }
- }
- return inactiveServices;
- }
-
- public void startService(String serviceName) throws Exception {
- AxisService axisService = \
getAxisConfig().getServiceForActivation(serviceName);
-
- if (axisService == null) {
- throw new Exception("Invalid service name " + serviceName);
- }
- try {
- getAxisConfig().startService(serviceName);
- } catch (AxisFault e) {
- String msg = "Cannot start service " + serviceName;
- log.error(msg, e);
- throw new Exception(msg);
- }
- }
-
- private String[] getServiceEPRs(AxisService service) throws AxisFault {
- if (!service.isActive()) {
- return new String[]{"Service is inactive. No valid end point \
references."};
- }
- return service.getEPRs();
- }
-
- public ServiceMetaData getServiceData(String serviceName) throws AxisFault {
- AxisService service = getAxisConfig().getServiceForActivation(serviceName);
- Parameter serviceTypeParam = \
service.getParameter(ServerConstants.SERVICE_TYPE);
- String serviceType;
- if (serviceTypeParam != null) {
- serviceType = (String) serviceTypeParam.getValue();
- } else {
- serviceType = "Normal";
- }
- List ops = new ArrayList();
- for (Iterator opIter = service.getOperations(); opIter.hasNext();) {
- AxisOperation axisOperation = (AxisOperation) opIter.next();
-
- if (axisOperation.getName() != null) {
- ops.add(axisOperation.getName().getLocalPart());
- }
- }
-
- ServiceMetaData smd = new ServiceMetaData();
-
- try {
- StatisticsClient statClient = new StatisticsClient();
- smd.setServiceRequestCount(statClient.getServiceRequestCount(serviceName));
- smd.setServiceResponseCount(statClient.getServiceResponseCount(serviceName));
- smd.setServiceFaultCount(statClient.getServiceFaultCount(serviceName));
- smd.setMaxResponseTime(statClient.getMaxServiceResponseTime(serviceName));
- smd.setMinResponseTime(statClient.getMinServiceResponseTime(serviceName));
- smd.setAvgResponseTime(statClient.getAvgServiceResponseTime(serviceName));
- } catch (Exception e) {
- String msg = "Could not get service statistics";
- log.error(msg, e);
- throw new AxisFault(msg, e);
- }
-
- smd.setOperations((String[]) ops.toArray(new String[ops.size()]));
- smd.setName(serviceName);
- smd.setServiceId(serviceName);
- smd.setServiceVersion("");
- smd.setActive(service.isActive());
- smd.setEprs(getServiceEPRs(service));
- smd.setServiceType(serviceType);
- AxisServiceGroup serviceGroup = (AxisServiceGroup) service.getParent();
- smd.setFoundWebResources(serviceGroup.isFoundWebResources());
- smd.setScope(service.getScope());
- smd.setServiceGroupName(serviceGroup.getServiceGroupName());
-
- if (service.getDocumentation() != null) {
- smd.setDescription(service.getDocumentation());
- } else {
- smd.setDescription("No service description found");
- }
-
- Parameter parameter = \
service.getParameter(Constants.Configuration.ENABLE_MTOM);
- if (parameter != null) {
- smd.setEnableMTOM((String) parameter.getValue());
- } else {
- smd.setEnableMTOM("false");
- }
-
- return smd;
- }
-
- /**
- * set the service parameter enableMTOM to manipulate MTOM flag \
true/false/optional
- *
- * @param flag
- * @param serviceName
- */
- public void configureMTOM(String flag, String serviceName) throws AxisFault {
-
- AxisService service = getAxisConfig().getService(serviceName);
- if (service == null) {
- throw new AxisFault("AxisService " + serviceName + " cannot be found.");
- }
-
- ArrayList parameters = service.getParameters();
-
- boolean found = false;
- for (Iterator iterator = parameters.iterator(); iterator.hasNext();) {
- Parameter parameter = (Parameter) iterator.next();
-
- if (parameter.getParameterType() == Parameter.TEXT_PARAMETER &&
- parameter.getValue().toString().equals(Constants.Configuration.ENABLE_MTOM)) \
{
- parameter.setValue(flag.trim());
- found = true;
- break;
- }
-
- }
- if (!found) {
- Parameter parameter = ParameterUtil
- .createParameter(Constants.Configuration.ENABLE_MTOM, \
flag.trim());
- service.addParameter(parameter);
- }
-
- Parameter parameter = \
service.getParameter(Constants.Configuration.ENABLE_MTOM);
- for (Iterator iterator1 = service.getOperations(); iterator1.hasNext();) {
- AxisOperation axisOperation = (AxisOperation) iterator1.next();
- axisOperation.addParameter(ParameterUtil.createParameter(
- Constants.Configuration.ENABLE_MTOM, (String) \
parameter.getValue()));
- }
- ServiceDO serviceDO = pm.getService(serviceName,
- \
ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
- ServiceParameterDO paramDO = pm.getServiceParameter(serviceDO,
- parameter.getName());
- if (paramDO != null) {
- paramDO.setValue(parameter.getParameterElement().toString());
- pm.updateEntity(paramDO);
- } else {
- ServiceParameterDO param = new ServiceParameterDO();
- param.setName(parameter.getName());
- param.setValue(parameter.getParameterElement().toString());
- param.setService(serviceDO);
-
- try {
- pm.addEntity(param);
- } catch (DuplicateEntityException e) {
- log.error("Service Parameter already exists", e);
- }
-
- }
-
-
- OperationDO[] operationDOs = pm.getOperations(serviceDO);
- if (operationDOs != null) {
- for (int j = 0; j < operationDOs.length; j++) {
- OperationDO operationDO = operationDOs[j];
- OperationParameterDO[] operationParameterDOs =
- pm.getOperationParameters(operationDO);
- OperationParameterDO operationParameterDO = null;
- for (int k = 0; k < operationParameterDOs.length; k++) {
- if \
(operationParameterDOs[k].getName().equals(parameter.getName())) {
- operationParameterDO = operationParameterDOs[k];
- break;
- }
- }
- if (operationParameterDO != null) {
- operationParameterDO
- .setValue(parameter.getParameterElement().toString());
- pm.updateEntity(operationParameterDO);
- } else {
- operationParameterDO = new OperationParameterDO();
- operationParameterDO.setName(parameter.getName());
- operationParameterDO
- .setValue(parameter.getParameterElement().toString());
- operationParameterDO.setOperation(operationDO);
- try {
- pm.addEntity(operationParameterDO);
- } catch (DuplicateEntityException e) {
- log.error("Service Parameter already exists", e);
- }
-
- }
-
- }
- }
- }
-
- /**
- * @param serviceGroupId
- * @return list of services
- * @throws AxisFault
- */
- public ServiceMetaData[] listServices(String serviceGroupId) throws AxisFault {
- AxisServiceGroup asg = getAxisConfig().getServiceGroup(serviceGroupId);
- List services = new ArrayList();
-
- if (asg == null) {
- throw new AxisFault("Invalid service group name");
- } else {
- for (Iterator serviceIter = asg.getServices(); serviceIter.hasNext();) {
- AxisService axisService = (AxisService) serviceIter.next();
- Parameter serviceTypeParam = \
axisService.getParameter(ServerConstants.SERVICE_TYPE);
- String serviceType;
- if (serviceTypeParam != null) {
- serviceType = (String) serviceTypeParam.getValue();
- } else {
- serviceType = "Normal";
- }
- List ops = new ArrayList();
- for (Iterator opIter = axisService.getOperations(); \
opIter.hasNext();) {
- AxisOperation axisOperation = (AxisOperation) opIter.next();
- ops.add(axisOperation.getName().getLocalPart());
- }
-
- ServiceMetaData smd = new ServiceMetaData();
- String serviceName = axisService.getName();
- try {
- StatisticsClient statClient = new StatisticsClient();
- \
smd.setServiceRequestCount(statClient.getServiceRequestCount(serviceName));
- \
smd.setServiceResponseCount(statClient.getServiceResponseCount(serviceName));
- \
smd.setServiceFaultCount(statClient.getServiceFaultCount(serviceName));
- \
smd.setMaxResponseTime(statClient.getMaxServiceResponseTime(serviceName));
- \
smd.setMinResponseTime(statClient.getMinServiceResponseTime(serviceName));
- \
smd.setAvgResponseTime(statClient.getAvgServiceResponseTime(serviceName));
- } catch (Exception e) {
- throw AxisFault.makeFault(e);
- }
- smd.setOperations((String[]) ops.toArray(new String[ops.size()]));
- smd.setName(serviceName);
- smd.setServiceId(serviceName);
- smd.setEprs(getServiceEPRs(axisService));
- smd.setServiceVersion("");
- smd.setActive(axisService.isActive());
- smd.setServiceType(serviceType);
- smd.setDescription(axisService.getDocumentation());
- services.add(smd);
- }
- }
- Collections.sort(services, new Comparator() {
- public int compare(Object arg0, Object arg1) {
- ServiceMetaData a = (ServiceMetaData) arg0;
- ServiceMetaData b = (ServiceMetaData) arg1;
- return a.getName().compareToIgnoreCase(b.getName());
- }
- });
-
- return (ServiceMetaData[]) services.toArray(new \
ServiceMetaData[services.size()]);
- }
-
- // return all available service metadata (not counts)
- public Object[] getServiceInfo(String serviceId, String serviceVersion) throws \
AxisFault {
- throw new AxisFault("Operation not yet implemented");
- }
-
- // return all accumulated data about this service
- public Object[] getServiceStatus(String serviceId, String serviceVersion) throws \
AxisFault {
- throw new AxisFault("Operation not yet implemented");
- }
-
- // return all parameters for this service (including inherited ones),
- // where each parameter is an XML fragment representing the "parameter"
- // element
- public OMElement[] getServiceParameters(String serviceId,
- String serviceVersion) throws AxisFault \
{
- ArrayList allParameters = new ArrayList();
- ArrayList globalParameters = getAxisConfig().getParameters();
-
- for (int i = 0; i < globalParameters.size(); i++) {
- Parameter parameter = (Parameter) globalParameters.get(i);
- allParameters.add(parameter.getParameterElement());
- }
-
- AxisService service = getAxisConfig().getService(serviceId);
-
- if (service == null) {
- throw new AxisFault("Invalid service name");
- }
-
- ArrayList serviceParams = service.getParameters();
-
- for (int i = 0; i < serviceParams.size(); i++) {
- Parameter parameter = (Parameter) serviceParams.get(i);
-
- String paramName = parameter.getName();
- if (paramName != null && paramName.trim().length() != 0) {
- if (parameter.getParameterElement() != null) {
- allParameters.add(parameter.getParameterElement());
- } else if (parameter.getValue() != null && parameter.getValue() \
instanceof String) {
- parameter = ParameterUtil.createParameter(paramName.trim(),
- (String) \
parameter.getValue());
- allParameters.add(parameter.getParameterElement());
- }
- }
- }
- return (OMElement[]) allParameters.toArray(new \
OMElement[allParameters.size()]);
- }
-
- // return only the parameters for explicitly set for this service (not
- // including inherited ones),
- // where each parameter is an XML fragment representing the <parameter>
- // element
- public OMElement[] getDeclaredServiceParameters(String serviceId,
- String serviceVersion) throws \
AxisFault {
- ArrayList allParameters = new ArrayList();
- AxisService axisService = getAxisConfig().getService(serviceId);
-
- if (axisService == null) {
- throw new AxisFault("invalid service name " + serviceId);
- }
-
- ArrayList params = axisService.getParameters();
-
- for (int i = 0; i < params.size(); i++) {
- Parameter parameter = (Parameter) params.get(i);
- String paramName = parameter.getName();
- if (paramName != null && paramName.trim().length() != 0) {
- if (parameter.getParameterElement() != null) {
- allParameters.add(parameter.getParameterElement());
- } else if (parameter.getValue() != null && parameter.getValue() \
instanceof String) {
- parameter = ParameterUtil.createParameter(paramName.trim(),
- (String) \
parameter.getValue());
- allParameters.add(parameter.getParameterElement());
- }
- }
- }
-
- return (OMElement[]) allParameters.toArray(new \
OMElement[allParameters.size()]);
- }
-
- public void setServiceParameters(String serviceId,
- String serviceVersion,
- OMElement[] paramterElements) throws AxisFault \
{
- for (int i = 0; i < paramterElements.length; i++) {
- setServiceParameter(serviceId, serviceVersion, paramterElements[i]);
- }
-
- }
-
- public void setServiceParameter3(String serviceId,
- Parameter parameter) throws AxisFault {
-
- AxisService axisService = getAxisConfig().getService(serviceId);
-
- if (axisService == null) {
- throw new AxisFault("Invalid service name '" + serviceId + "'");
- }
-
- // Persist the parameter
- ServiceDO serviceDO = pm.getService(serviceId,
- \
ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
- Parameter p = axisService.getParameter(parameter.getName());
- ServiceParameterDO paramDO = pm.getServiceParameter(serviceDO,
- parameter.getName());
- if (p != null && paramDO != null) {
-
- // Setting a new value for a parameter declared in AxisService
- if (!p.isLocked()) {
- axisService.addParameter(parameter);
- paramDO.setValue(parameter.getParameterElement().toString());
- pm.updateEntity(paramDO);
- }
- } else {
-
- // If we are adding a new AxisService param or overriding a param in the \
Configuration hierarchy
- if (p == null || !p.isLocked()) {
- axisService.addParameter(parameter);
-
- ServiceParameterDO param = new ServiceParameterDO();
- param.setName(parameter.getName());
- param.setValue(parameter.getParameterElement().toString());
- param.setService(serviceDO);
-
- try {
- pm.addEntity(param);
- } catch (DuplicateEntityException e) {
- log.error("Service Parameter already exists", e);
- }
- }
- }
- }
-
- public void setServiceParameter(String serviceId,
- String serviceVersion,
- OMElement paramterElement) throws AxisFault {
-
- AxisService axisService = getAxisConfig().getService(serviceId);
-
- if (axisService == null) {
- throw new AxisFault("Invalid service name '" + serviceId + "'");
- }
-
- // Persist the parameter
- ServiceDO serviceDO = pm.getService(serviceId,
- \
ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
- Parameter parameter = ParameterUtil.createParameter(paramterElement);
- Parameter p = axisService.getParameter(parameter.getName());
- ServiceParameterDO paramDO = pm.getServiceParameter(serviceDO,
- parameter.getName());
- if (p != null && paramDO != null) {
-
- // Setting a new value for a parameter declared in AxisService
- if (!p.isLocked()) {
- axisService.addParameter(parameter);
- paramDO.setValue(paramterElement.toString());
- pm.updateEntity(paramDO);
- }
- } else {
-
- // If we are adding a new AxisService param or overriding a param in the \
Configuration hierarchy
- if (p == null || !p.isLocked()) {
- axisService.addParameter(parameter);
-
- ServiceParameterDO param = new ServiceParameterDO();
- param.setName(parameter.getName());
- param.setValue(paramterElement.toString());
- param.setService(serviceDO);
-
- try {
- pm.addEntity(param);
- } catch (DuplicateEntityException e) {
- log.error("Service Parameter already exists", e);
- }
- }
- }
- }
-
- public void removeServiceSpecificParameter(String serviceId,
- String serviceVersion,
- OMElement paramterElement) throws \
AxisFault {
-
- AxisService axisService = getAxisConfig().getService(serviceId);
-
- if (axisService == null) {
- throw new AxisFault("Invalid service name '" + serviceId + "'");
- }
-
- // un-Persist the parameter
- ServiceDO serviceDO = pm.getService(serviceId,
- \
ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
- Parameter parameter = ParameterUtil.createParameter(paramterElement);
- Parameter p = axisService.getParameter(parameter.getName());
- ServiceParameterDO paramDO = pm.getServiceParameter(serviceDO,
- parameter.getName());
- if (p != null && paramDO != null) {
-
- // Setting a new value for a parameter declared in AxisService
- if (!p.isLocked()) {
- axisService.removeParameter(parameter);
- pm.deleteEntity(paramDO);
- }
- } else {
-
- if (p == null || !p.isLocked()) {
- axisService.removeParameter(parameter);
-
-
- }
- }
- }
-
- public void setServiceParameter2(String serviceName,
- Parameter parameter) throws AxisFault {
- AxisService axisService = getAxisConfig().getService(serviceName);
-
- if (axisService == null) {
- throw new AxisFault("Invalid service name '" + serviceName + "'");
- }
-
- // Persist the parameter
- ServiceDO serviceDO = pm.getService(serviceName,
- \
ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
- Parameter p = axisService.getParameter(parameter.getName());
-
- if (p != null) {
- if (!p.isLocked()) {
- axisService.addParameter(parameter);
-
- ServiceParameterDO paramDO = pm.getServiceParameter(serviceDO,
- \
parameter.getName());
- paramDO.setValue(p.getParameterElement().toString());
- pm.updateEntity(paramDO);
- }
- } else {
- axisService.addParameter(parameter);
-
- ServiceParameterDO param = new ServiceParameterDO();
- param.setName(parameter.getName());
- param.setValue(parameter.getParameterElement().toString());
- param.setService(serviceDO);
-
- try {
- pm.addEntity(param);
- } catch (DuplicateEntityException e) {
- log.error("Service Parameter already exists", e);
- }
- }
- }
-
- public void removeServiceParameter(String serviceName, String paramName) throws \
AxisFault {
- AxisService axisService = getAxisConfig().getService(serviceName);
- axisService.removeParameter(new Parameter(paramName, null));
- ServiceDO serviceDO = pm.getService(serviceName, \
ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
- ServiceParameterDO sp = new ServiceParameterDO();
- sp.setService(serviceDO);
- sp.setName(paramName);
- serviceDO.getParameters().remove(sp);
- pm.updateEntity(serviceDO);
- }
-
- public OMElement getWSDL(String serviceName) throws AxisFault {
- AxisService axisService = getAxisConfig().getService(serviceName);
-
- if (axisService != null) {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- String url = \
MessageContext.getCurrentMessageContext().getTo().getAddress();
- int ipindex = url.indexOf("//");
- String ip = null;
-
- if (ipindex >= 0) {
- ip = url.substring(ipindex + 2, url.length());
-
- int seperatorIndex = ip.indexOf(":");
-
- if (seperatorIndex > 0) {
- ip = ip.substring(0, seperatorIndex);
- }
- }
-
- axisService.printWSDL(out, ip);
-
- try {
- XMLStreamReader xmlReader = XMLInputFactory.newInstance()
- .createXMLStreamReader(new ByteArrayInputStream(
- out.toByteArray()));
-
- OMFactory fac = OMAbstractFactory.getOMFactory();
- OMNamespace namespace = \
fac.createOMNamespace("http://org.apache.axis2/xsd",
- "ns1");
- OMElement wsdlWrapper = fac.createOMElement("getWSDLResponse",
- namespace);
- OMElement retvalue = fac.createOMElement("return", null);
- wsdlWrapper.addChild(retvalue);
-
- StAXOMBuilder staxOMBuilder = new StAXOMBuilder(fac, xmlReader);
- retvalue.addChild(staxOMBuilder.getDocumentElement());
-
- return wsdlWrapper;
- } catch (XMLStreamException e) {
- throw AxisFault.makeFault(e);
- }
- }
-
- return null;
- }
-
- public OMElement getSchema(String serviceName) throws AxisFault {
- AxisService axisService = getAxisConfig().getService(serviceName);
-
- if (axisService != null) {
- ByteArrayOutputStream out = new ByteArrayOutputStream();
- axisService.printSchema(out);
-
- try {
- XMLStreamReader xmlReader = XMLInputFactory.newInstance()
- .createXMLStreamReader(new ByteArrayInputStream(
- out.toByteArray()));
- OMFactory fac = OMAbstractFactory.getOMFactory();
- OMElement wsdlWrapper = fac.createOMElement("getWSDLReponse",
- null);
- StAXOMBuilder staxOMBuilder = new StAXOMBuilder(fac, xmlReader);
- wsdlWrapper.addChild(staxOMBuilder.getDocumentElement());
-
- return wsdlWrapper;
- } catch (XMLStreamException e) {
- throw AxisFault.makeFault(e);
- }
- }
-
- return null;
- }
-
- public OMElement getPolicy(String serviceId, String serviceVersion) throws \
AxisFault {
- AxisService axisService = getAxisConfig().getService(serviceId);
-
- if (axisService == null) {
- throw new AxisFault("invalid service name");
- }
-
- PolicyInclude servicePolicyInclude = axisService.getPolicyInclude();
- Policy servicePolicy = servicePolicyInclude.getPolicy();
-
- if (servicePolicy == null) {
- return PolicyUtil.getEmptyPolicyAsOMElement();
- }
-
- return PolicyUtil.getPolicyAsOMElement(servicePolicy);
- }
-
- public PolicyData[] getPolicies(String serviceId, String serviceVersion) throws \
AxisFault {
- AxisService axisService = getAxisConfig().getService(serviceId);
-
- if (axisService == null) {
- throw new AxisFault("invalid service name");
- }
-
- ArrayList policyDataArray = new ArrayList();
-
- PolicyInclude servicePolicyInclude = axisService.getPolicyInclude();
- PolicyRegistry registry = servicePolicyInclude.getPolicyRegistry();
-
- List policyList;
-
- // services.xml
- policyList = \
servicePolicyInclude.getPolicyElements(PolicyInclude.AXIS_SERVICE_POLICY);
-
- if (!policyList.isEmpty()) {
- PolicyData policyData = new PolicyData();
- policyData.setWrapper("Policies in services.xml");
- policyData
- \
.setPolycies(PolicyUtil.processPolicyElements(policyList.iterator(), \
registry));
- policyDataArray.add(policyData);
- }
-
- // wsdl:service
- policyList = \
servicePolicyInclude.getPolicyElements(PolicyInclude.SERVICE_POLICY);
-
- if (!policyList.isEmpty()) {
- PolicyData policyData = new PolicyData();
- policyData.setWrapper("Policies in wsdl:service");
- policyData
- \
.setPolycies(PolicyUtil.processPolicyElements(policyList.iterator(), \
registry));
- policyDataArray.add(policyData);
- }
-
- // wsdl:portType
- policyList = \
servicePolicyInclude.getPolicyElements(PolicyInclude.PORT_TYPE_POLICY);
-
- if (!policyList.isEmpty()) {
- PolicyData policyData = new PolicyData();
- policyData.setWrapper("Policies in wsdl:portType");
- policyData
- \
.setPolycies(PolicyUtil.processPolicyElements(policyList.iterator(), \
registry));
- policyDataArray.add(policyData);
- }
-
- // wsdl:port
- policyList = \
servicePolicyInclude.getPolicyElements(PolicyInclude.PORT_POLICY);
-
- if (!policyList.isEmpty()) {
- PolicyData policyData = new PolicyData();
- policyData.setWrapper("Policies in wsdl:port");
- policyData
- \
.setPolycies(PolicyUtil.processPolicyElements(policyList.iterator(), \
registry));
- policyDataArray.add(policyData);
- }
-
- // wsdl:binding
- policyList = \
servicePolicyInclude.getPolicyElements(PolicyInclude.BINDING_POLICY);
-
- if (!policyList.isEmpty()) {
- PolicyData policyData = new PolicyData();
- policyData.setWrapper("Policies in wsdl:binding");
- policyData
- \
.setPolycies(PolicyUtil.processPolicyElements(policyList.iterator(), \
registry));
- policyDataArray.add(policyData);
- }
-
-
- return (PolicyData[]) policyDataArray.toArray(new \
PolicyData[policyDataArray.size()]);
- }
-
- public boolean removePolicy(String serviceId,
- String version,
- String policyId) throws AxisFault {
- boolean isPolicyRemoved = false;
- AxisService axisService = getAxisConfig().getService(serviceId);
- if (axisService == null) {
- throw new AxisFault("Invalid service name " + serviceId);
- }
- PolicyInclude policyInclude = axisService.getPolicyInclude();
- if (policyInclude.getPolicy(policyId) != null) {
- policyInclude.removePolicyElement(policyId);
- isPolicyRemoved = true;
- }
- ServiceDO serviceDO = pm.getService(serviceId, version);
- List policiesToBeRemoved = new ArrayList();
- for (Iterator policyIter = serviceDO.getPolicies().iterator();
- policyIter.hasNext();) {
- ServicePolicyDO servicePolicyDO = (ServicePolicyDO) policyIter.next();
- if (servicePolicyDO.getUuid().equals(policyId)) {
- policiesToBeRemoved.add(servicePolicyDO);
- }
- }
- Set policies = serviceDO.getPolicies();
- for (Iterator iterator = policiesToBeRemoved.iterator(); \
iterator.hasNext();) {
- policies.remove(iterator.next());
- isPolicyRemoved = true;
- }
- pm.updateEntity(serviceDO);
- return isPolicyRemoved;
- }
-
- public void setPolicy(String serviceId,
- String version,
- String policyString) throws AxisFault {
-
- ByteArrayInputStream bais = new \
ByteArrayInputStream(policyString.getBytes());
- OMElement policyElement;
- try {
- policyElement = new StAXOMBuilder(bais).getDocumentElement();
- policyElement.build();
- } catch (Exception e) {
- throw new AxisFault("Cannot deserialize service policy. The policy may \
be invalid.", e);
- }
-
- AxisService axisService = getAxisConfig().getService(serviceId);
- if (axisService == null) {
- throw new AxisFault("Invalid service name " + serviceId);
- }
-
- if (!policyElement.getLocalName().equals(org.apache.neethi.Constants.ELEM_POLICY)) \
{
- policyElement = policyElement.getFirstElement();
- }
-
- OMAttribute attribute =
- policyElement.getAttribute(new \
QName(org.apache.neethi.Constants.URI_WSU_NS,
- \
org.apache.neethi.Constants.ATTR_ID));
-
- if (attribute == null) {
- throw new AxisFault("ID Attribute not found in Policy element. " +
- "Please verify that the policy XML is valid.");
- }
- String idAttrVal = attribute.getAttributeValue();
-
- PolicyInclude policyInclude = axisService.getPolicyInclude();
-
- Policy servicePolicy;
- try {
- servicePolicy = PolicyUtil.getPolicyFromOMElement(policyElement);
-
- } catch (NullPointerException npe) {
- /*
- * Since 'policyElement.toString()' is the actual string which is used \
to
- * create the policy object it logged instead of 'policyString'.
- */
- log.error("Error: When constructing Policy object from the string : "
- + policyElement.toString(), npe);
- throw new AxisFault("Error: Invalid policy", npe);
-
- } catch (RuntimeException rte) {
- log.error("Error: When constructing Policy object from the string : "
- + policyElement.toString(), rte);
- throw new AxisFault("Error: Invalid policy", rte);
- }
-
- ServicePolicyDO servicePolicyDO = new ServicePolicyDO();
- servicePolicyDO.setUuid(idAttrVal);
- servicePolicyDO.setService(pm.getService(serviceId,
- \
ServiceIdentifierDO.EMPTY_SERVICE_VERSION));
- servicePolicyDO.setPolicy(policyElement.toString());
-
- if (policyInclude.getPolicy(idAttrVal) != null) {
- policyInclude.updatePolicy(servicePolicy);
-
- try {
- pm.updateServicePolicy(servicePolicyDO);
- } catch (ServicePolicyNotFoundException e) {
- throw AxisFault.makeFault(e);
- }
-
- } else {
- policyInclude.addPolicyElement(PolicyInclude.AXIS_SERVICE_POLICY, \
servicePolicy);
- servicePolicyDO.setType(PolicyInclude.AXIS_SERVICE_POLICY);
-
- try {
- pm.addServicePolicy(servicePolicyDO);
- } catch (ServicePolicyAlreadyExistsException e) {
- throw AxisFault.makeFault(e);
- }
- }
- }
-
- public String[] getServiceUsers(String serviceName) throws AxisFault {
- AxisService axisService = getAxisConfig().getService(serviceName);
-
- if (axisService == null) {
- throw new AxisFault("invalid service name " + serviceName);
- }
-
- Collection users = new ArrayList();
- ServiceUserDO[] userDOs = pm.getUsersForService(serviceName,
- \
ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
-
- for (int i = 0; i < userDOs.length; i++) {
- ServiceUserDO userDO = userDOs[i];
- users.add(userDO.getUsername());
- }
-
- return (String[]) users.toArray(new String[users.size()]);
- }
-
- public ServiceUserData[] getServiceUsersWithDescription(String serviceName)
- throws AxisFault {
- AxisService axisService = getAxisConfig().getService(serviceName);
-
- if (axisService == null) {
- throw new AxisFault("invalid service name " + serviceName);
- }
-
- ServiceUserDO[] userDOs = pm.getUsersForService(serviceName,
- \
ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
-
- ServiceUserData[] suData = new ServiceUserData[userDOs.length];
-
- if (userDOs.length == 0) {
- return new ServiceUserData[0];
- }
-
- ServiceUserDO serviceUserData;
-
- for (int i = 0; i < suData.length; i++) {
- serviceUserData = userDOs[i];
-
- ServiceUserData userData = new ServiceUserData();
- userData.setUser(serviceUserData.getUsername());
- userData.setDescription(serviceUserData.getDescription());
- suData[i] = userData;
- }
-
- return suData;
- }
-
- public ServiceRoleData[] getServiceRolesWithDescription(String serviceName)
- throws AxisFault {
- AxisService axisService = getAxisConfig().getService(serviceName);
-
- if (axisService == null) {
- throw new AxisFault("invalid service name " + serviceName);
- }
-
- ServiceUserRoleDO[] roleDOs = pm.getRolesForService(serviceName,
- \
ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
-
- ServiceRoleData[] srData = new ServiceRoleData[roleDOs.length];
-
- if (roleDOs.length == 0) {
- return new ServiceRoleData[0];
- }
-
- ServiceUserRoleDO serviceRoleData;
-
- for (int i = 0; i < srData.length; i++) {
- serviceRoleData = roleDOs[i];
-
- ServiceRoleData roleData = new ServiceRoleData();
- roleData.setRole(serviceRoleData.getRole());
- roleData.setDescription(serviceRoleData.getDescription());
- srData[i] = roleData;
- }
-
- return srData;
- }
-
- /**
- * Get all the fully qualified class names of all the classes in this archive
- *
- * @param archiveId
- * @return all the fully qualified class names of all the classes in this \
archive
- * @throws AxisFault
- */
- public String[] getClassNames(String archiveId) throws AxisFault {
- String filePath = getFilePathFromArchiveId(archiveId);
-
- if (filePath != null) {
- try {
- String[] entries = new ArchiveManipulator().check(filePath);
- Collection classnames = new ArrayList();
-
- for (int i = 0; i < entries.length; i++) {
- String entry = entries[i];
-
- if (entry.endsWith(".class")) {
- entry = entry.replace('/', '.').substring(0,
- \
entry.lastIndexOf(".class"));
- classnames.add(entry);
- }
- }
-
- return (String[]) classnames.toArray(new String[classnames.size()]);
- } catch (IOException e) {
- String msg = "Could not read archive";
- log.error(msg, e);
- throw new AxisFault(msg, e);
- }
- }
-
- return new String[]{""};
- }
-
- /**
- * This method will list all the public methods for the given classes.
- *
- * @param classNames full qualified class name
- * @return resourcesId array of resource Ids
- * @throws AxisFault will be thrown
- */
- public ClassMethodsData[] listMethodsForClass(String[] classNames, String[] \
resourcesId)
- throws AxisFault {
- if (classNames == null || classNames.length == 0) {
- String msg = "Cannot find classes";
- log.error(msg);
- throw new AxisFault(msg);
- }
- List methodExcludeList = new ArrayList();
- methodExcludeList.add("hashCode");
- methodExcludeList.add("getClass");
- methodExcludeList.add("equals");
- methodExcludeList.add("notify");
- methodExcludeList.add("notifyAll");
- methodExcludeList.add("toString");
- methodExcludeList.add("wait");
- List resourecesList = new ArrayList();
- for (int i = 0; i < resourcesId.length; i++) {
- String filePathFromArchiveId = getFilePathFromArchiveId(resourcesId[i]);
- if (filePathFromArchiveId == null) {
- throw new AxisFault("File cannot be located for id : " + \
resourcesId[i]);
- }
- try {
- resourecesList.add(new File(filePathFromArchiveId).toURL());
- } catch (MalformedURLException e) {
- String msg = "MalformedURLException";
- throw new AxisFault(msg, e);
- }
- }
- URL[] urls = (URL[]) resourecesList.toArray(new URL[resourecesList.size()]);
- ClassLoader classLoader =
- URLClassLoader.newInstance(urls, \
Thread.currentThread().getContextClassLoader());
- List classMethodList = new ArrayList();
- for (int i = 0; i < classNames.length; i++) {
- String className = classNames[i];
- try {
- Class clazz = classLoader.loadClass(className);
- ClassMethodsData classMethodsData = new ClassMethodsData();
- classMethodsData.setClassName(clazz.getName());
- Method[] methods = clazz.getMethods();
- List methodList = new ArrayList();
- for (int j = 0; j < methods.length; j++) {
- Method method = methods[j];
- String methodName = method.getName();
- int modifiers = method.getModifiers();
- if (Modifier.isPublic(modifiers) && \
!methodExcludeList.contains(methodName)) {
- MethodData methodData = new MethodData();
- methodData.setMethodName(methodName);
- methodList.add(methodData);
- }
- }
- findOverloadedMethods(methodList);
- classMethodsData.setMethods(
- (MethodData[]) methodList.toArray(new \
MethodData[methodList.size()]));
- classMethodList.add(classMethodsData);
- } catch (ClassNotFoundException e) {
- String msg = "The class " + className + " cannot be loaded";
- log.error(msg);
- }
-
- }
- return (ClassMethodsData[]) classMethodList
- .toArray(new ClassMethodsData[classMethodList.size()]);
-
- }
-
- private void findOverloadedMethods(List methodList) {
- Map finalMap = new HashMap();
- int size = methodList.size();
- for (int k = 0; k < size - 1; k++) {
- MethodData startPointer = (MethodData) methodList.get(k);
- if (!finalMap.containsKey(startPointer.getMethodName())) {
- int count = 0;
- for (Iterator iterator = methodList.iterator(); iterator.hasNext();) \
{
- MethodData method = (MethodData) iterator.next();
- if (method.getMethodName().equals(startPointer.getMethodName())) \
{
- count++;
- }
- }
- for (Iterator iterator = methodList.iterator(); iterator.hasNext();) \
{
- MethodData method = (MethodData) iterator.next();
- if (method.getMethodName().equals(startPointer.getMethodName())) \
{
- if (count > 1) {
- method.setOverload(true);
- }
- }
- }
- }
- }
-
- }
-
- /**
- * Creates and deploys a service. This AAR will contain all the classe from the \
jar/zip file
- * corresponding to <code>archiveId</code>. In addition, a services.xml will be \
created, and all
- * of the <code>serviceClasses</code> will be added as services.
- *
- * @param archiveId archive id
- * @param data info array. data contains the excluded method names.
- * @param resourceId array of resource Ids that goes in the "lib" folder
- * @throws AxisFault will be thrown
- */
- public void createAndDeployService(String archiveId,
- ClassMethodsData[] data,
- String[] resourceId) throws AxisFault {
- String filePathFromArchiveId = getFilePathFromArchiveId(archiveId);
-
- if (filePathFromArchiveId == null) {
- String msg = "A non-existent file was requested";
- log.warn(msg);
- throw new AxisFault(msg);
- }
-
- int endIndex = filePathFromArchiveId.lastIndexOf(File.separator);
- String filePath = filePathFromArchiveId.substring(0, endIndex);
- String archiveFileName = filePathFromArchiveId.substring(endIndex);
- archiveFileName = archiveFileName.substring(0, \
archiveFileName.lastIndexOf("."));
-
- ArchiveManipulator archiveManipulator = new ArchiveManipulator();
-
- // ----------------- Unzip the file ------------------------------------
- String unzippeDir = filePath + File.separator + "temp";
- File unzipped = new File(unzippeDir);
- unzipped.mkdirs();
-
- try {
- archiveManipulator.extract(filePathFromArchiveId, unzippeDir);
- } catch (IOException e) {
- throw new AxisFault("Cannot extract archive", e);
- }
-
- //copy resources to lib folder.
- File resourceLibDir = new File(unzipped.getAbsolutePath() + File.separator + \
"lib");
- resourceLibDir.mkdirs();
- List resourceList = new ArrayList();
- for (int i = 0; i < resourceId.length; i++) {
- if (!resourceId[i].equals(archiveId)) {
- String fileAbsPath = getFilePathFromArchiveId(resourceId[i]);
- if (fileAbsPath == null) {
- throw new AxisFault("Resource cannot be located");
- }
- resourceList.add(new File(fileAbsPath));
- }
- }
- FileManipulator fileMan = new FileManipulator();
- for (Iterator iterator = resourceList.iterator(); iterator.hasNext();) {
- File file = (File) iterator.next();
- try {
- String absPath = file.getAbsolutePath();
- if (File.separatorChar == '\\') {
- absPath = absPath.replace("\\", "/");
- }
- int nameIndex = absPath.lastIndexOf("/");
- String fileName = absPath.substring(nameIndex + 1);
- fileMan.copyFile(file, new File(resourceLibDir, fileName));
- } catch (IOException e) {
- String msg = "Error occured when copying resources";
- throw new AxisFault(msg, e);
- }
- }
-
- // ---- Generate the services.xml and place it in META-INF -----
- File file = new File(unzippeDir + File.separator + "META-INF" +
- File.separator + "services.xml");
- file.mkdirs();
-
- try {
- File absoluteFile = file.getAbsoluteFile();
-
- if (absoluteFile.exists()) {
- absoluteFile.delete();
- }
-
- absoluteFile.createNewFile();
-
- OutputStream os = new FileOutputStream(file);
- OMElement servicesXML = createServicesXML(data);
- servicesXML.build();
- servicesXML.serialize(os);
- } catch (Exception e) {
- String msg = "Cannot write services XML";
- log.error(msg, e);
- throw new AxisFault(msg, e);
- }
-
- // ----------------- Create the AAR ------------------------------------
- // These are the files to include in the ZIP file
- String outAARFilename = filePath + File.separator + archiveFileName +
- ".aar";
-
- try {
- archiveManipulator.archiveDir(outAARFilename, unzipped.getPath());
- } catch (IOException e) {
- String msg = "Cannot create new AAR archive";
- log.error(msg, e);
- throw new AxisFault(msg, e);
- }
-
- //------------- Copy the AAR to the repository/services directory --------
- String repo = \
MessageContext.getCurrentMessageContext().getConfigurationContext()
- .getAxisConfiguration().getRepository()
- .getPath() + File.separator + "services";
-
- try {
- new FileManipulator().copyFile(new File(outAARFilename),
- new File(repo + File.separator + \
archiveFileName +
- ".aar"));
- } catch (IOException e) {
- String msg = "Cannot copy AAR file to Repo";
- log.error(msg, e);
- throw new AxisFault(msg, e);
- }
- }
-
- private OMElement createServicesXMLFromSpringBeans(String[] springBeans,
- String springContextLocation) \
{
- OMFactory factory = OMAbstractFactory.getOMFactory();
- OMNamespace emptyNS = factory.createOMNamespace("", "");
- OMElement serviceGroupEle = factory.createOMElement("serviceGroup", "", "");
-
- for (int i = 0; i < springBeans.length; i++) {
- String serviceBeanName = springBeans[i];
-
-
- OMElement serviceEle = factory.createOMElement("service", "", "");
-
- OMElement schemaEle = factory.createOMElement("schema", "", "");
- schemaEle.addAttribute(
- factory.createOMAttribute("elementFormDefaultQualified", \
emptyNS, "false"));
-
- serviceEle.addAttribute(factory.createOMAttribute("name", emptyNS, \
serviceBeanName));
-
- OMElement msgReceiversEle = factory.createOMElement("messageReceivers",
- "", "");
- OMElement msgReceiverEle1 = factory.createOMElement("messageReceiver",
- "", "");
- msgReceiverEle1.addAttribute("mep",
- "http://www.w3.org/ns/wsdl/in-only", \
emptyNS);
- msgReceiverEle1.addAttribute("class",
- RPCInOnlyMessageReceiver.class.getName(),
- emptyNS);
-
- OMElement msgReceiverEle2 = factory.createOMElement("messageReceiver",
- "", "");
- msgReceiverEle2.addAttribute("mep",
- "http://www.w3.org/ns/wsdl/in-out", \
emptyNS);
- msgReceiverEle2.addAttribute("class",
- RPCMessageReceiver.class.getName(),
- emptyNS);
- msgReceiversEle.addChild(msgReceiverEle1);
- msgReceiversEle.addChild(msgReceiverEle2);
-
- OMElement parameterEleServiceObjectSupplier =
- factory.createOMElement("parameter", "", "");
- parameterEleServiceObjectSupplier.addAttribute("locked", "true", \
emptyNS);
- parameterEleServiceObjectSupplier
- .addAttribute("name", "ServiceObjectSupplier", emptyNS);
- parameterEleServiceObjectSupplier.
- setText(GenericApplicationContextSupplier.class.getName());
-
- OMElement parameterEleSpringBeanName = \
factory.createOMElement("parameter", "", "");
- parameterEleSpringBeanName.addAttribute("locked", "true", emptyNS);
- parameterEleSpringBeanName.addAttribute("name", "SpringBeanName", \
emptyNS);
- parameterEleSpringBeanName.setText(serviceBeanName);
-
- OMElement parameterEleSpringContextLocation =
- factory.createOMElement("parameter", "", "");
- parameterEleSpringContextLocation.addAttribute("locked", "true", \
emptyNS);
- parameterEleSpringContextLocation
- .addAttribute("name", "SpringContextLocation", emptyNS);
- parameterEleSpringContextLocation.setText(springContextLocation);
-
- serviceEle.addChild(schemaEle);
- serviceEle.addChild(msgReceiversEle);
- serviceEle.addChild(parameterEleServiceObjectSupplier);
- serviceEle.addChild(parameterEleSpringBeanName);
- serviceEle.addChild(parameterEleSpringContextLocation);
- serviceGroupEle.addChild(serviceEle);
- }
- return serviceGroupEle;
- }
-
- private OMElement createServicesXML(ClassMethodsData[] data) {
- OMFactory factory = OMAbstractFactory.getOMFactory();
- OMNamespace emptyNS = factory.createOMNamespace("", "");
- OMElement serviceGroupEle = factory.createOMElement("serviceGroup", "", "");
-
- for (int i = 0; i < data.length; i++) {
- ClassMethodsData datum = data[i];
- String serviceClass = datum.getClassName();
- String serviceName = \
serviceClass.substring(serviceClass.lastIndexOf(".") + 1);
-
- OMElement serviceEle = factory.createOMElement("service", "", "");
-
- OMElement schemaEle = factory.createOMElement("schema", "", "");
- schemaEle.addAttribute(
- factory.createOMAttribute("elementFormDefaultQualified", \
emptyNS, "true"));
-
- serviceEle.addAttribute(factory.createOMAttribute("name", emptyNS,
- serviceName));
-
- OMElement msgReceiversEle = factory.createOMElement("messageReceivers",
- "", "");
- OMElement msgReceiverEle1 = factory.createOMElement("messageReceiver",
- "", "");
- msgReceiverEle1.addAttribute("mep",
- "http://www.w3.org/ns/wsdl/in-only", \
emptyNS);
- msgReceiverEle1.addAttribute("class",
- \
"org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver",
- emptyNS);
-
- OMElement msgReceiverEle2 = factory.createOMElement("messageReceiver",
- "", "");
- msgReceiverEle2.addAttribute("mep",
- "http://www.w3.org/ns/wsdl/in-out", \
emptyNS);
- msgReceiverEle2.addAttribute("class",
- \
"org.apache.axis2.rpc.receivers.RPCMessageReceiver",
- emptyNS);
- msgReceiversEle.addChild(msgReceiverEle1);
- msgReceiversEle.addChild(msgReceiverEle2);
-
- OMElement parameterEle = factory.createOMElement("parameter", "", "");
- parameterEle.addAttribute("name", "ServiceClass", emptyNS);
- parameterEle.setText(serviceClass);
-
- serviceEle.addChild(schemaEle);
- serviceEle.addChild(msgReceiversEle);
- serviceEle.addChild(parameterEle);
- // Operations
- MethodData[] methodData = datum.getMethods();
- if (methodData != null) {
- if (methodData.length > 0) {
- OMElement excludesEle = \
factory.createOMElement("excludeOperations", "", "");
- serviceEle.addChild(excludesEle);
- List operationDuplicationList = new ArrayList();
- for (int j = 0; j < methodData.length; j++) {
- String methodName = methodData[j].getMethodName();
- if (!operationDuplicationList.contains(methodName)) {
- OMElement operationEle = \
factory.createOMElement("operation", "", "");
- operationDuplicationList.add(methodName);
- operationEle.setText(methodName);
- excludesEle.addChild(operationEle);
- }
- }
- }
- }
- serviceGroupEle.addChild(serviceEle);
- }
-
- return serviceGroupEle;
- }
-
- private String getFilePathFromArchiveId(String archiveId) {
- ConfigurationContext configCtx =
- MessageContext.getCurrentMessageContext().getConfigurationContext();
- Map fileResMap =
- (Map) \
configCtx.getProperty(org.wso2.wsas.ServerConstants.FILE_RESOURCE_MAP);
-
- return (String) fileResMap.get(archiveId);
- }
-
- public boolean deleteFaultyServiceArchive(String archiveName) throws AxisFault {
- if (File.separatorChar == '\\') {
- archiveName = archiveName.replace('/', '\\');
- }
-
- boolean isDeleted = false;
- if (archiveName != null && archiveName.trim().length() != 0) {
- File file = new File(archiveName);
- if (file.exists()) {
- if (!((file.isDirectory() && new FileManipulator().deleteDir(file)) \
||
- file.delete())) {
- throw new AxisFault("Faulty service archive deletion failed. " +
- "Due to a JVM issue on MS-Windows, " +
- "AAR files cannot be deleted. " +
- "Please stop the server and manually delete \
this file.");
- } else {
- isDeleted = true;
- getAxisConfig().getFaultyServices().remove(archiveName);
- }
- }
- }
-
- return isDeleted;
- }
-
- public FaultService[] getFaultyServiceArchives() throws AxisFault {
- AxisConfiguration ac = getAxisConfig();
- Hashtable faultyServices = ac.getFaultyServices();
- ArrayList fsList = new ArrayList();
-
- for (Iterator keys = faultyServices.keySet().iterator();
- keys.hasNext();) {
- String key = (String) keys.next();
- String fault = (String) faultyServices.get(key);
- FaultService fs = new FaultService();
-
- if (File.separatorChar == '\\') {
- key = key.replace('\\', '/');
- }
-
- fs.setServiceName(key);
- fs.setFault(fault);
- fsList.add(fs);
- }
-
- return (FaultService[]) fsList.toArray(new FaultService[fsList.size()]);
- }
-
- public int getNumberOfFaultyServices() throws AxisFault {
- return getAxisConfig().getFaultyServices().size();
- }
-
- public SpringBeansData getSpringBeanNames(String springContextId,
- String springBeanId) throws AxisFault \
{
- //Manipulation of springContext to ${RepositoryLocation}/spring
-
- String springContextFilePath = getFilePathFromArchiveId(springContextId);
- String springBeanFilePath = getFilePathFromArchiveId(springBeanId);
- SpringBeansData data = new SpringBeansData();
- data.setSpringContext(springContextId);
- try {
- ApplicationContext aCtx =
- GenericApplicationContextUtil
- .getSpringApplicationContext(springContextFilePath, \
springBeanFilePath);
- String[] beanDefintions = aCtx.getBeanDefinitionNames();
- data.setBeans(beanDefintions);
- } catch (Exception e) {
- throw new AxisFault("Cannot load Spring beans. Please check the Spring \
context " +
- "configuration file and verify that the defined \
Spring beans exist" +
- " in the .jar file.");
- }
- return data;
- }
-
- public void createAndDeploySpringBean(String springContextId,
- String springBeanId,
- String[] beanClasses) throws AxisFault {
- String filePathFromArchiveId = getFilePathFromArchiveId(springBeanId);
- String filePathForSpringContext = getFilePathFromArchiveId(springContextId);
- ConfigurationContext configCtx =
- MessageContext.getCurrentMessageContext().getConfigurationContext();
- Map fileResMap =
- (Map) \
configCtx.getProperty(org.wso2.wsas.ServerConstants.FILE_RESOURCE_MAP);
- fileResMap.remove(springContextId);
-
- if (filePathFromArchiveId == null) {
- String msg = "A non-existent file was requested";
- log.warn(msg);
- throw new AxisFault(msg);
- }
-
- int endIndex = filePathFromArchiveId.lastIndexOf(File.separator);
- String filePath = filePathFromArchiveId.substring(0, endIndex);
- String archiveFileName = filePathFromArchiveId.substring(endIndex);
- archiveFileName = archiveFileName.substring(0,
- \
archiveFileName.lastIndexOf("."));
-
- ArchiveManipulator archiveManipulator = new ArchiveManipulator();
-
- // ----------------- Unzip the file ------------------------------------
- String unzippeDir = filePath + File.separator + "springTemp";
- File unzipped = new File(unzippeDir);
- unzipped.mkdirs();
-
- try {
- archiveManipulator.extract(filePathFromArchiveId, unzippeDir);
- } catch (IOException e) {
- throw new AxisFault("Cannot extract archive", e);
- }
-
- //TODO copy the spring xml
- String springContextRelLocation = "spring/context.xml";
- try {
- File springContextRelDir =
- new File(unzippeDir + File.separator + "spring");
- springContextRelDir.mkdirs();
- File absFile = new File(springContextRelDir, "context.xml");
- if (!absFile.exists()) {
- absFile.createNewFile();
- }
- File file = new File(filePathForSpringContext);
- FileInputStream in = new FileInputStream(file);
- FileOutputStream out = new FileOutputStream(absFile);
- // Transfer bytes from in to out
- byte[] buf = new byte[1024];
- int len;
- while ((len = in.read(buf)) > 0) {
- out.write(buf, 0, len);
- }
- in.close();
- out.close();
-
- } catch (FileNotFoundException e) {
- throw AxisFault.makeFault(e);
- } catch (IOException e) {
- throw AxisFault.makeFault(e);
- }
-
- // ---- Generate the services.xml and place it in META-INF -----
- File file = new File(unzippeDir + File.separator + "META-INF" +
- File.separator + "services.xml");
- file.mkdirs();
-
- try {
- File absoluteFile = file.getAbsoluteFile();
-
- if (absoluteFile.exists()) {
- absoluteFile.delete();
- }
-
- absoluteFile.createNewFile();
-
- OutputStream os = new FileOutputStream(file);
- OMElement servicesXML =
- createServicesXMLFromSpringBeans(beanClasses, \
springContextRelLocation);
- servicesXML.build();
- servicesXML.serialize(os);
- } catch (Exception e) {
- String msg = "Cannot write services XML";
- log.error(msg, e);
- throw new AxisFault(msg, e);
- }
-
- // ----------------- Create the AAR ------------------------------------
- // These are the files to include in the ZIP file
- String outAARFilename = filePath + File.separator + archiveFileName + \
".aar";
-
- try {
- archiveManipulator.archiveDir(outAARFilename, unzipped.getPath());
- } catch (IOException e) {
- String msg = "Cannot create new AAR archive";
- log.error(msg, e);
- throw new AxisFault(msg, e);
- }
-
- //------------- Copy the AAR to the respository/services directory --------
- String repo = \
MessageContext.getCurrentMessageContext().getConfigurationContext()
- .getAxisConfiguration().getRepository()
- .getPath() + File.separator + "services";
-
- try {
- new FileManipulator().copyFile(new File(outAARFilename),
- new File(repo + File.separator + \
archiveFileName +
- ".aar"));
- } catch (IOException e) {
- String msg = "Cannot copy AAR file to Repo";
- log.error(msg, e);
- throw new AxisFault(msg, e);
- }
- }
-
- public void createAndDeployEJBService(String archiveId,
- String[] serviceClasses,
- String jnpProviderUrl,
- String beanJNDIName,
- String homeInterface,
- String remoteInterface) throws AxisFault {
- //Find details of selected ejb application server configuration
- EJBAppServerDO ejbAppServerDO = \
pm.getEJBAppServerConfiguration(jnpProviderUrl);
- if (ejbAppServerDO == null) {
- throw new AxisFault("Non-existance Application server configuration");
- }
-
- //save ejb configuration
- EJBProviderAdmin ejbProviderAdmin = new EJBProviderAdmin();
-
- //search for existing configuration, if found abort service deployment
- try {
- EJBProviderDO ejbProviderDO = \
ejbProviderAdmin.getEJBConfiguration(beanJNDIName,
- \
jnpProviderUrl);
- if (!(ejbProviderDO == null)) {
- //configuration found.Throw exception
- throw new AxisFault("A Service exists for the provided JNDI name(" +
- beanJNDIName + ") and JNP Url(" + jnpProviderUrl \
+ ").");
- }
- } catch (Exception e) {
- throw new AxisFault("A Service exists for the provided JNDI name(" +
- beanJNDIName + ") and JNP Url(" + jnpProviderUrl + \
").");
- }
-
-
- ejbProviderAdmin.addEJBConfiguration(ejbAppServerDO.getProviderURL()
- , ejbAppServerDO.getJndiContextClass()
- , ejbAppServerDO.getUserName()
- , ejbAppServerDO.getUserName()
- , beanJNDIName
- , homeInterface
- , remoteInterface
- , ejbAppServerDO.getAppServerType());
-
- String filePathFromArchiveId = getFilePathFromArchiveId(archiveId);
-
- if (filePathFromArchiveId == null) {
- String msg = "A non-existent file was requested";
- log.warn(msg);
- throw new AxisFault(msg);
- }
-
- int endIndex = filePathFromArchiveId.lastIndexOf(File.separator);
- String filePath = filePathFromArchiveId.substring(0, endIndex);
- String archiveFileName = filePathFromArchiveId.substring(endIndex);
- archiveFileName = archiveFileName.substring(0,
- \
archiveFileName.lastIndexOf("."));
-
- ArchiveManipulator archiveManipulator = new ArchiveManipulator();
-
- //----------------- Unzip the file ------------------------------------
- String unzippeDir = filePath + File.separator + "temp";
- File unzipped = new File(unzippeDir);
- unzipped.mkdirs();
-
- try {
- archiveManipulator.extract(filePathFromArchiveId, unzippeDir);
- } catch (IOException e) {
- throw new AxisFault("Cannot extract archive", e);
- }
-
- //---- Generate the services.xml and place it in META-INF -----
- File file = new File(unzippeDir + File.separator + "META-INF" +
- File.separator + "services.xml");
- file.mkdirs();
-
- try {
- File absoluteFile = file.getAbsoluteFile();
- if (absoluteFile.exists()) {
- absoluteFile.delete();
- }
- absoluteFile.createNewFile();
- OutputStream os = new FileOutputStream(file);
- OMElement servicesXML = createServicesXMLForEJBService(serviceClasses,
- \
ejbAppServerDO.getProviderURL(),
- \
ejbAppServerDO.getJndiContextClass(),
- \
ejbAppServerDO.getUserName(),
- \
ejbAppServerDO.getPassword(),
- beanJNDIName,
- homeInterface,
- remoteInterface);
- servicesXML.build();
- servicesXML.serialize(os);
- } catch (Exception e) {
- String msg = "Cannot write services XML";
- log.error(msg, e);
- throw new AxisFault(msg, e);
- }
-
- //----------------- Create the AAR ------------------------------------
- //These are the files to include in the ZIP file
- String outAARFilename = filePath + File.separator + archiveFileName +
- ".aar";
-
- try {
- archiveManipulator.archiveDir(outAARFilename, unzipped.getPath());
- } catch (IOException e) {
- String msg = "Cannot create new AAR archive";
- log.error(msg, e);
- throw new AxisFault(msg, e);
- }
-
- //------------- Copy the AAR to the respository/services directory --------
- String repo = \
MessageContext.getCurrentMessageContext().getConfigurationContext()
- .getAxisConfiguration().getRepository()
- .getPath() + File.separator + "services";
-
- try {
- new FileManipulator().copyFile(new File(outAARFilename),
- new File(repo + File.separator + \
archiveFileName +
- ".aar"));
- } catch (IOException e) {
- String msg = "Cannot copy AAR file to Repo";
- log.error(msg, e);
- throw new AxisFault(msg, e);
- }
- }
-
-
- /*
- <serviceGroup>
- <service name="TimeService">
- <description>Time!! web service</description>
- <parameter name="ServiceClass" \
locked="false">org.apache.axis2.samples.ejb.session.interfaces.TimeServiceRemote</parameter>
- <messageReceivers>
- <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-only" \
class="org.apache.axis2.rpc.receivers.ejb.EJBInOnlyMessageReceiver"/>
- <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out" \
class="org.apache.axis2.rpc.receivers.ejb.EJBMessageReceiver"/>
- </messageReceivers>
- <parameter \
name="remoteInterfaceName">org.apache.axis2.samples.ejb.session.interfaces.TimeServiceRemote</parameter>
- <parameter \
name="homeInterfaceName">org.apache.axis2.samples.ejb.session.interfaces.TimeServiceRemoteHome</parameter>
- <parameter \
name="beanJndiName">org.apache.axis2.samples.ejb.session.interfaces.TimeServiceLocalHome</parameter>
- <parameter name="service_type">ejb_service</parameter>
- <!--for jboss -->
- <parameter name="providerUrl">jnp://localhost:1099</parameter>
- <parameter \
name="jndiContextClass">org.jnp.interfaces.NamingContextFactory</parameter>
-
- <!--for geronimo
- <parameter name="providerUrl">localhost:4201</parameter>
- <parameter \
name="jndiContextClass">org.openejb.client.JNDIContext</parameter>
- -->
- </service>
- </serviceGroup>
- */
- private OMElement createServicesXMLForEJBService(String[] serviceClasses, String \
providerURL,
- String jndiContextClass,
- String userName,
- String password,
- String beanJNDIName,
- String homeInterface,
- String remoteInterface) {
-
- OMFactory factory = OMAbstractFactory.getOMFactory();
- OMNamespace emptyNS = factory.createOMNamespace("", "");
- OMElement serviceGroupEle = factory.createOMElement("serviceGroup", "", "");
-
- //Although we have a loop here, only one class will come
- for (int i = 0; i < serviceClasses.length; i++) {
- String serviceClass = serviceClasses[i];
- String serviceName = serviceClass.substring(serviceClass.lastIndexOf(
- ".") + 1);
-
- OMElement serviceEle = factory.createOMElement("service", "", "");
-
- OMElement schemaEle = factory.createOMElement("schema", "", "");
- schemaEle.addAttribute(
- factory.createOMAttribute("elementFormDefaultQualified", \
emptyNS, "false"));
-
- serviceEle.addAttribute(factory.createOMAttribute("name", emptyNS,
- serviceName));
-
- OMElement msgReceiversEle = factory.createOMElement("messageReceivers",
- "", "");
- OMElement msgReceiverEle1 = factory.createOMElement("messageReceiver",
- "", "");
- msgReceiverEle1.addAttribute("mep",
- "http://www.w3.org/ns/wsdl/in-only", \
emptyNS);
- msgReceiverEle1.addAttribute("class",
- \
"org.apache.axis2.rpc.receivers.ejb.EJBInOnlyMessageReceiver",
- emptyNS);
-
- OMElement msgReceiverEle2 = factory.createOMElement("messageReceiver",
- "", "");
- msgReceiverEle2.addAttribute("mep",
- "http://www.w3.org/ns/wsdl/in-out", \
emptyNS);
- msgReceiverEle2.addAttribute("class",
- \
"org.apache.axis2.rpc.receivers.ejb.EJBMessageReceiver",
- emptyNS);
- msgReceiversEle.addChild(msgReceiverEle1);
- msgReceiversEle.addChild(msgReceiverEle2);
-
- OMElement parameterEle1 = factory.createOMElement("parameter", "", "");
- parameterEle1.addAttribute("name", EJBUtil.EJB_REMOTE_INTERFACE_NAME, \
emptyNS);
- parameterEle1.setText(remoteInterface);
-
- OMElement parameterEle2 = factory.createOMElement("parameter", "", "");
- parameterEle2.addAttribute("name", EJBUtil.EJB_HOME_INTERFACE_NAME, \
emptyNS);
- parameterEle2.setText(homeInterface);
-
- OMElement parameterEle3 = factory.createOMElement("parameter", "", "");
- parameterEle3.addAttribute("name", EJBUtil.EJB_JNDI_NAME, emptyNS);
- parameterEle3.setText(beanJNDIName);
-
- OMElement parameterEle4 = factory.createOMElement("parameter", "", "");
- parameterEle4.addAttribute("name", EJBUtil.EJB_PROVIDER_URL, emptyNS);
- parameterEle4.setText(providerURL);
-
- OMElement parameterEle5 = factory.createOMElement("parameter", "", "");
- parameterEle5.addAttribute("name", EJBUtil.EJB_INITIAL_CONTEXT_FACTORY, \
emptyNS);
- parameterEle5.setText(jndiContextClass);
-
- OMElement parameterEle6 = factory.createOMElement("parameter", "", "");
- parameterEle6.addAttribute("name", EJBUtil.EJB_JNDI_USERNAME, emptyNS);
- parameterEle6.setText(userName);
-
- OMElement parameterEle7 = factory.createOMElement("parameter", "", "");
- parameterEle7.addAttribute("name", EJBUtil.EJB_JNDI_PASSWORD, emptyNS);
- parameterEle7.setText(password);
-
- OMElement parameterEle8 = factory.createOMElement("parameter", "", "");
- parameterEle8.addAttribute("name", "ServiceClass", emptyNS);
- parameterEle8.setText(serviceClass);
-
- OMElement parameterEle9 = factory.createOMElement("parameter", "", "");
- parameterEle9.addAttribute("name", ServerConstants.SERVICE_TYPE, \
emptyNS);
- parameterEle9.setText(ServerConstants.SERVICE_TYPE_EJB);
-
- serviceEle.addChild(schemaEle);
- serviceEle.addChild(msgReceiversEle);
- serviceEle.addChild(parameterEle1);
- serviceEle.addChild(parameterEle2);
- serviceEle.addChild(parameterEle3);
- serviceEle.addChild(parameterEle4);
- serviceEle.addChild(parameterEle5);
- serviceEle.addChild(parameterEle6);
- serviceEle.addChild(parameterEle7);
- serviceEle.addChild(parameterEle8);
- serviceEle.addChild(parameterEle9);
-
- serviceGroupEle.addChild(serviceEle);
- }
- return serviceGroupEle;
- }
+ private static final String SERVICE_MUST_CONTAIN_AT_LEAST_ONE_TRANSPORT = "Cannot \
remove transport binding. " + + "<br/>A service must contain at least one transport \
binding!"; + private PersistenceManager pm = new PersistenceManager();
+
+ static {
+ MBeanRegistrar.registerMBean(new ServiceAdmin());
+ }
+
+ public ServiceAdmin() {
+ }
+
+ /**
+ * Expose this service only via the specified transport
+ *
+ * @param serviceId
+ * @param transportProtocols
+ * @return Status Message
+ * @throws AxisFault
+ */
+ public String exposeServiceOnlyViaTransports(String serviceId,
+ String[] transportProtocols) throws AxisFault {
+
+ AxisService axisService = getAxisConfig().getService(serviceId);
+ ArrayList transports = new ArrayList();
+ for (int i = 0; i < transportProtocols.length; i++) {
+ transports.add(transportProtocols[i]);
+ }
+ axisService.setExposedTransports(transports);
+
+ ServiceDO serviceDO = pm.getService(axisService.getName(),
+ ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
+ serviceDO.setIsExposedOnAllTransports(false);
+
+ TransportDO[] transportDOs = pm.getTransports();
+ for (int i = 0; i < transportDOs.length; i++) { // Remove all transports
+ serviceDO.getTransports().remove(transportDOs[i]);
+ }
+ for (int i = 0; i < transportProtocols.length; i++) {
+ TransportDO transportDO = pm.getTransport(transportProtocols[i]);
+ serviceDO.addTransport(transportDO); // add only specified
+ // transports
+ pm.updateEntity(transportDO);
+ }
+
+ try {
+ pm.updateService(serviceDO);
+ } catch (ServiceNotFoundException e) {
+ String msg = "Service with name " + serviceId + " not found.";
+ log.error(msg);
+ throw new AxisFault(msg, e);
+ }
+ return "Successfully add selected transport bindings to service "
+ + serviceId;
+ }
+
+ public String addTransportBinding(String serviceId, String transportProtocol)
+ throws AxisFault {
+ if (transportProtocol == null || transportProtocol.trim().length() == 0) {
+ return "Invalid transport " + transportProtocol;
+ }
+ AxisService axisService = getAxisConfig().getService(serviceId);
+
+ if (axisService.isExposedTransport(transportProtocol)) {
+ return "Service [" + serviceId + "] already contains the "
+ + transportProtocol + " transport binding!";
+ }
+
+ ServiceDO serviceDO = pm.getService(axisService.getName(),
+ ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
+ if (serviceDO.getIsUTAuthEnabled()) {
+ if (!transportProtocol
+ .equalsIgnoreCase(ServerConstants.HTTPS_TRANSPORT)) {
+ throw new AxisFault(
+ "Cannot add non-HTTPS transport binding for Service ["
+ + serviceId
+ + "] since a security scenario which requires the "
+ + "service to contain only the HTTPS transport binding"
+ + " has been applied to this service.");
+ }
+ }
+
+ if (!axisService.isEnableAllTransports()) {
+ axisService.addExposedTransport(transportProtocol);
+ } else {
+ return "Service [" + serviceId + "] already contains the "
+ + transportProtocol + " transport binding!";
+ }
+
+ TransportDO transportDO = pm.getTransport(transportProtocol);
+ if (transportDO != null) {
+ serviceDO.setIsExposedOnAllTransports(false);
+ serviceDO.addTransport(transportDO);
+
+ try {
+ pm.updateService(serviceDO);
+ pm.updateEntity(transportDO);
+ } catch (ServiceNotFoundException e) {
+ String msg = "Service with name " + serviceId + " not found.";
+ log.error(msg);
+ throw new AxisFault(msg, e);
+ }
+ }
+
+ return "Successfully added " + transportProtocol
+ + " transport binding to service " + serviceId;
+ }
+
+ public String removeTransportBinding(String serviceId,
+ String transportProtocol) throws AxisFault {
+
+ AxisService axisService = getAxisConfig().getService(serviceId);
+ ServiceDO serviceDO = pm.getService(axisService.getName(),
+ ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
+ if (serviceDO.getIsUTAuthEnabled()) {
+ if (transportProtocol
+ .equalsIgnoreCase(ServerConstants.HTTPS_TRANSPORT)) {
+ throw new AxisFault(
+ "HTTPS transport binding for Service ["
+ + serviceId
+ + "] cannot be removed since a security scenario which requires"
+ + " HTTPS has been applied to this service.");
+ }
+ }
+ TransportDO transportDO = pm.getTransport(transportProtocol);
+ if (!axisService.isEnableAllTransports()) {
+ if (axisService.getExposedTransports().size() == 1) {
+ return SERVICE_MUST_CONTAIN_AT_LEAST_ONE_TRANSPORT;
+ } else {
+ serviceDO.getTransports().remove(transportDO);
+ transportDO.getServices().remove(serviceDO);
+ axisService.removeExposedTransport(transportProtocol);
+ pm.updateEntity(transportDO);
+ }
+ } else {
+ TransportSummary[] transports = new TransportAdmin()
+ .listTransports();
+
+ if (transports.length == 1) {
+ return SERVICE_MUST_CONTAIN_AT_LEAST_ONE_TRANSPORT;
+ } else {
+ for (int i = 0; i < transports.length; i++) {
+ String protocol = transports[i].getProtocol();
+
+ if (!protocol.equals(transportProtocol)) {
+ axisService.addExposedTransport(protocol);
+ TransportDO addTransportDO = pm.getTransport(protocol);
+ serviceDO.addTransport(addTransportDO);
+ pm.updateEntity(addTransportDO);
+ }
+ }
+ }
+ }
+
+ serviceDO.setIsExposedOnAllTransports(false);
+ try {
+ pm.updateService(serviceDO);
+ } catch (ServiceNotFoundException e) {
+ String msg = "Service with name " + serviceId + " not found.";
+ log.error(msg);
+ throw new AxisFault(msg, e);
+ }
+
+ return "Removed " + transportProtocol + " transport binding for "
+ + serviceId + " service";
+ }
+
+ public String[] getExposedTransports(String serviceId) throws AxisFault {
+ AxisService axisService = getAxisConfig().getService(serviceId);
+ if (!axisService.isEnableAllTransports()) {
+ List exposedTransports = axisService.getExposedTransports();
+ return (String[]) exposedTransports
+ .toArray(new String[exposedTransports.size()]);
+ } else {
+ HashMap transportsIn = getConfigContext().getAxisConfiguration()
+ .getTransportsIn();
+ String[] transports = new String[transportsIn.size()];
+ int i = 0;
+
+ for (Iterator transportsIter = transportsIn.values().iterator(); transportsIter
+ .hasNext();) {
+ TransportInDescription tiDesc = (TransportInDescription) transportsIter
+ .next();
+ transports[i++] = tiDesc.getName();
+ }
+
+ return transports;
+ }
+ }
+
+ public void creatService(String serviceName) throws AxisFault {
+ AxisService service = AxisService.createService(serviceName,
+ getAxisConfig());
+ getAxisConfig().addService(service);
+ }
+
+ public void stopService(String serviceName) throws Exception {
+ AxisService axisService = getAxisConfig().getServiceForActivation(
+ serviceName);
+ if (axisService == null) {
+ throw new Exception("Invalid service name " + serviceName);
+ }
+
+ try {
+ getAxisConfig().stopService(serviceName);
+ } catch (AxisFault e) {
+ String msg = "Cannot stop service " + serviceName;
+ log.error(msg, e);
+ throw new Exception(msg);
+ }
+ }
+
+ /*
+ * public String[] getActiveEndPoints() { List endpoints = new ArrayList();
+ * for (Iterator iter = getAxisConfig().getServices().values().iterator();
+ * iter.hasNext();) { AxisService service = (AxisService) iter.next(); if
+ * (service.isActive()) {
+ *//*
+ * String[] eprs; try { eprs = service.getEPRs(); } catch (AxisFault e) {
+ * throw new RuntimeException("Cannot get service EPRs", e); } for (int
+ * i = 0; i < eprs.length; i++) { String epr = eprs[i]; if
+ * (!endpoints.contains(epr)) { endpoints.add(epr); } }
+ *//*
+ *
+ * for (Iterator endpointIter =
+ * service.getEndpoints().values().iterator(); endpointIter.hasNext();) {
+ * AxisEndpoint axisEndpoint = (AxisEndpoint) endpointIter.next();
+ * String binding = axisEndpoint.getBinding().getName().toString();
+ * String epr = axisEndpoint.getEndpointURL();
+ *
+ * endpoints.add(epr + " [" + binding + "]"); } } } return (String[])
+ * endpoints.toArray(new String[endpoints.size()]); }
+ */
+
+ public int getNumberOfActiveServices() throws Exception {
+ int activeServices = 0;
+ HashMap services = getAxisConfig().getServices();
+ for (Iterator iterator = services.values().iterator(); iterator
+ .hasNext();) {
+ AxisService service = (AxisService) iterator.next();
+ if (service.isActive()) {
+ activeServices++;
+ }
+ }
+ return activeServices;
+ }
+
+ public int getNumberOfInactiveServices() throws Exception {
+ int inactiveServices = 0;
+ HashMap services = getAxisConfig().getServices();
+ for (Iterator iterator = services.values().iterator(); iterator
+ .hasNext();) {
+ AxisService service = (AxisService) iterator.next();
+ if (!service.isActive()) {
+ inactiveServices++;
+ }
+ }
+ return inactiveServices;
+ }
+
+ public void startService(String serviceName) throws Exception {
+ AxisService axisService = getAxisConfig().getServiceForActivation(
+ serviceName);
+
+ if (axisService == null) {
+ throw new Exception("Invalid service name " + serviceName);
+ }
+ try {
+ getAxisConfig().startService(serviceName);
+ } catch (AxisFault e) {
+ String msg = "Cannot start service " + serviceName;
+ log.error(msg, e);
+ throw new Exception(msg);
+ }
+ }
+
+ private String[] getServiceEPRs(AxisService service) throws AxisFault {
+ if (!service.isActive()) {
+ return new String[] { "Service is inactive. No valid end point references." };
+ }
+ return service.getEPRs();
+ }
+
+ public ServiceMetaData getServiceData(String serviceName) throws AxisFault {
+ AxisService service = getAxisConfig().getServiceForActivation(
+ serviceName);
+ Parameter serviceTypeParam = service
+ .getParameter(ServerConstants.SERVICE_TYPE);
+ String serviceType;
+ if (serviceTypeParam != null) {
+ serviceType = (String) serviceTypeParam.getValue();
+ } else {
+ serviceType = "Normal";
+ }
+ List ops = new ArrayList();
+ for (Iterator opIter = service.getOperations(); opIter.hasNext();) {
+ AxisOperation axisOperation = (AxisOperation) opIter.next();
+
+ if (axisOperation.getName() != null) {
+ ops.add(axisOperation.getName().getLocalPart());
+ }
+ }
+
+ ServiceMetaData smd = new ServiceMetaData();
+
+ try {
+ StatisticsClient statClient = new StatisticsClient();
+ smd.setServiceRequestCount(statClient
+ .getServiceRequestCount(serviceName));
+ smd.setServiceResponseCount(statClient
+ .getServiceResponseCount(serviceName));
+ smd.setServiceFaultCount(statClient
+ .getServiceFaultCount(serviceName));
+ smd.setMaxResponseTime(statClient
+ .getMaxServiceResponseTime(serviceName));
+ smd.setMinResponseTime(statClient
+ .getMinServiceResponseTime(serviceName));
+ smd.setAvgResponseTime(statClient
+ .getAvgServiceResponseTime(serviceName));
+ } catch (Exception e) {
+ String msg = "Could not get service statistics";
+ log.error(msg, e);
+ throw new AxisFault(msg, e);
+ }
+
+ smd.setOperations((String[]) ops.toArray(new String[ops.size()]));
+ smd.setName(serviceName);
+ smd.setServiceId(serviceName);
+ smd.setServiceVersion("");
+ smd.setActive(service.isActive());
+ smd.setEprs(getServiceEPRs(service));
+ smd.setServiceType(serviceType);
+ AxisServiceGroup serviceGroup = (AxisServiceGroup) service.getParent();
+ smd.setFoundWebResources(serviceGroup.isFoundWebResources());
+ smd.setScope(service.getScope());
+ smd.setServiceGroupName(serviceGroup.getServiceGroupName());
+
+ if (service.getDocumentation() != null) {
+ smd.setDescription(service.getDocumentation());
+ } else {
+ smd.setDescription("No service description found");
+ }
+
+ Parameter parameter = service
+ .getParameter(Constants.Configuration.ENABLE_MTOM);
+ if (parameter != null) {
+ smd.setEnableMTOM((String) parameter.getValue());
+ } else {
+ smd.setEnableMTOM("false");
+ }
+
+ return smd;
+ }
+
+ /**
+ * set the service parameter enableMTOM to manipulate MTOM flag
+ * true/false/optional
+ *
+ * @param flag
+ * @param serviceName
+ */
+ public void configureMTOM(String flag, String serviceName) throws AxisFault {
+
+ AxisService service = getAxisConfig().getService(serviceName);
+ if (service == null) {
+ throw new AxisFault("AxisService " + serviceName
+ + " cannot be found.");
+ }
+
+ ArrayList parameters = service.getParameters();
+
+ boolean found = false;
+ for (Iterator iterator = parameters.iterator(); iterator.hasNext();) {
+ Parameter parameter = (Parameter) iterator.next();
+
+ if (parameter.getParameterType() == Parameter.TEXT_PARAMETER
+ && parameter.getValue().toString().equals(
+ Constants.Configuration.ENABLE_MTOM)) {
+ parameter.setValue(flag.trim());
+ found = true;
+ break;
+ }
+
+ }
+ if (!found) {
+ Parameter parameter = ParameterUtil.createParameter(
+ Constants.Configuration.ENABLE_MTOM, flag.trim());
+ service.addParameter(parameter);
+ }
+
+ Parameter parameter = service
+ .getParameter(Constants.Configuration.ENABLE_MTOM);
+ for (Iterator iterator1 = service.getOperations(); iterator1.hasNext();) {
+ AxisOperation axisOperation = (AxisOperation) iterator1.next();
+ axisOperation.addParameter(ParameterUtil.createParameter(
+ Constants.Configuration.ENABLE_MTOM, (String) parameter
+ .getValue()));
+ }
+ ServiceDO serviceDO = pm.getService(serviceName,
+ ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
+ ServiceParameterDO paramDO = pm.getServiceParameter(serviceDO,
+ parameter.getName());
+ if (paramDO != null) {
+ paramDO.setValue(parameter.getParameterElement().toString());
+ pm.updateEntity(paramDO);
+ } else {
+ ServiceParameterDO param = new ServiceParameterDO();
+ param.setName(parameter.getName());
+ param.setValue(parameter.getParameterElement().toString());
+ param.setService(serviceDO);
+
+ try {
+ pm.addEntity(param);
+ } catch (DuplicateEntityException e) {
+ log.error("Service Parameter already exists", e);
+ }
+
+ }
+
+ OperationDO[] operationDOs = pm.getOperations(serviceDO);
+ if (operationDOs != null) {
+ for (int j = 0; j < operationDOs.length; j++) {
+ OperationDO operationDO = operationDOs[j];
+ OperationParameterDO[] operationParameterDOs = pm
+ .getOperationParameters(operationDO);
+ OperationParameterDO operationParameterDO = null;
+ for (int k = 0; k < operationParameterDOs.length; k++) {
+ if (operationParameterDOs[k].getName().equals(
+ parameter.getName())) {
+ operationParameterDO = operationParameterDOs[k];
+ break;
+ }
+ }
+ if (operationParameterDO != null) {
+ operationParameterDO.setValue(parameter
+ .getParameterElement().toString());
+ pm.updateEntity(operationParameterDO);
+ } else {
+ operationParameterDO = new OperationParameterDO();
+ operationParameterDO.setName(parameter.getName());
+ operationParameterDO.setValue(parameter
+ .getParameterElement().toString());
+ operationParameterDO.setOperation(operationDO);
+ try {
+ pm.addEntity(operationParameterDO);
+ } catch (DuplicateEntityException e) {
+ log.error("Service Parameter already exists", e);
+ }
+
+ }
+
+ }
+ }
+ }
+
+ /**
+ * @param serviceGroupId
+ * @return list of services
+ * @throws AxisFault
+ */
+ public ServiceMetaData[] listServices(String serviceGroupId)
+ throws AxisFault {
+ AxisServiceGroup asg = getAxisConfig().getServiceGroup(serviceGroupId);
+ List services = new ArrayList();
+
+ if (asg == null) {
+ throw new AxisFault("Invalid service group name");
+ } else {
+ for (Iterator serviceIter = asg.getServices(); serviceIter
+ .hasNext();) {
+ AxisService axisService = (AxisService) serviceIter.next();
+ Parameter serviceTypeParam = axisService
+ .getParameter(ServerConstants.SERVICE_TYPE);
+ String serviceType;
+ if (serviceTypeParam != null) {
+ serviceType = (String) serviceTypeParam.getValue();
+ } else {
+ serviceType = "Normal";
+ }
+ List ops = new ArrayList();
+ for (Iterator opIter = axisService.getOperations(); opIter
+ .hasNext();) {
+ AxisOperation axisOperation = (AxisOperation) opIter.next();
+ ops.add(axisOperation.getName().getLocalPart());
+ }
+
+ ServiceMetaData smd = new ServiceMetaData();
+ String serviceName = axisService.getName();
+ try {
+ StatisticsClient statClient = new StatisticsClient();
+ smd.setServiceRequestCount(statClient
+ .getServiceRequestCount(serviceName));
+ smd.setServiceResponseCount(statClient
+ .getServiceResponseCount(serviceName));
+ smd.setServiceFaultCount(statClient
+ .getServiceFaultCount(serviceName));
+ smd.setMaxResponseTime(statClient
+ .getMaxServiceResponseTime(serviceName));
+ smd.setMinResponseTime(statClient
+ .getMinServiceResponseTime(serviceName));
+ smd.setAvgResponseTime(statClient
+ .getAvgServiceResponseTime(serviceName));
+ } catch (Exception e) {
+ throw AxisFault.makeFault(e);
+ }
+ smd.setOperations((String[]) ops
+ .toArray(new String[ops.size()]));
+ smd.setName(serviceName);
+ smd.setServiceId(serviceName);
+ smd.setEprs(getServiceEPRs(axisService));
+ smd.setServiceVersion("");
+ smd.setActive(axisService.isActive());
+ smd.setServiceType(serviceType);
+ smd.setDescription(axisService.getDocumentation());
+ services.add(smd);
+ }
+ }
+ Collections.sort(services, new Comparator() {
+ public int compare(Object arg0, Object arg1) {
+ ServiceMetaData a = (ServiceMetaData) arg0;
+ ServiceMetaData b = (ServiceMetaData) arg1;
+ return a.getName().compareToIgnoreCase(b.getName());
+ }
+ });
+
+ return (ServiceMetaData[]) services
+ .toArray(new ServiceMetaData[services.size()]);
+ }
+
+ // return all available service metadata (not counts)
+ public Object[] getServiceInfo(String serviceId, String serviceVersion)
+ throws AxisFault {
+ throw new AxisFault("Operation not yet implemented");
+ }
+
+ // return all accumulated data about this service
+ public Object[] getServiceStatus(String serviceId, String serviceVersion)
+ throws AxisFault {
+ throw new AxisFault("Operation not yet implemented");
+ }
+
+ // return all parameters for this service (including inherited ones),
+ // where each parameter is an XML fragment representing the "parameter"
+ // element
+ public OMElement[] getServiceParameters(String serviceId,
+ String serviceVersion) throws AxisFault {
+ ArrayList allParameters = new ArrayList();
+ ArrayList globalParameters = getAxisConfig().getParameters();
+
+ for (int i = 0; i < globalParameters.size(); i++) {
+ Parameter parameter = (Parameter) globalParameters.get(i);
+ allParameters.add(parameter.getParameterElement());
+ }
+
+ AxisService service = getAxisConfig().getService(serviceId);
+
+ if (service == null) {
+ throw new AxisFault("Invalid service name");
+ }
+
+ ArrayList serviceParams = service.getParameters();
+
+ for (int i = 0; i < serviceParams.size(); i++) {
+ Parameter parameter = (Parameter) serviceParams.get(i);
+
+ String paramName = parameter.getName();
+ if (paramName != null && paramName.trim().length() != 0) {
+ if (parameter.getParameterElement() != null) {
+ allParameters.add(parameter.getParameterElement());
+ } else if (parameter.getValue() != null
+ && parameter.getValue() instanceof String) {
+ parameter = ParameterUtil.createParameter(paramName.trim(),
+ (String) parameter.getValue());
+ allParameters.add(parameter.getParameterElement());
+ }
+ }
+ }
+ return (OMElement[]) allParameters.toArray(new OMElement[allParameters
+ .size()]);
+ }
+
+ // return only the parameters for explicitly set for this service (not
+ // including inherited ones),
+ // where each parameter is an XML fragment representing the <parameter>
+ // element
+ public OMElement[] getDeclaredServiceParameters(String serviceId,
+ String serviceVersion) throws AxisFault {
+ ArrayList allParameters = new ArrayList();
+ AxisService axisService = getAxisConfig().getService(serviceId);
+
+ if (axisService == null) {
+ throw new AxisFault("invalid service name " + serviceId);
+ }
+
+ ArrayList params = axisService.getParameters();
+
+ for (int i = 0; i < params.size(); i++) {
+ Parameter parameter = (Parameter) params.get(i);
+ String paramName = parameter.getName();
+ if (paramName != null && paramName.trim().length() != 0) {
+ if (parameter.getParameterElement() != null) {
+ allParameters.add(parameter.getParameterElement());
+ } else if (parameter.getValue() != null
+ && parameter.getValue() instanceof String) {
+ parameter = ParameterUtil.createParameter(paramName.trim(),
+ (String) parameter.getValue());
+ allParameters.add(parameter.getParameterElement());
+ }
+ }
+ }
+
+ return (OMElement[]) allParameters.toArray(new OMElement[allParameters
+ .size()]);
+ }
+
+ public void setServiceParameters(String serviceId, String serviceVersion,
+ OMElement[] paramterElements) throws AxisFault {
+ for (int i = 0; i < paramterElements.length; i++) {
+ setServiceParameter(serviceId, serviceVersion, paramterElements[i]);
+ }
+
+ }
+
+ public void setServiceParameter3(String serviceId, Parameter parameter)
+ throws AxisFault {
+
+ AxisService axisService = getAxisConfig().getService(serviceId);
+
+ if (axisService == null) {
+ throw new AxisFault("Invalid service name '" + serviceId + "'");
+ }
+
+ // Persist the parameter
+ ServiceDO serviceDO = pm.getService(serviceId,
+ ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
+ Parameter p = axisService.getParameter(parameter.getName());
+ ServiceParameterDO paramDO = pm.getServiceParameter(serviceDO,
+ parameter.getName());
+ if (p != null && paramDO != null) {
+
+ // Setting a new value for a parameter declared in AxisService
+ if (!p.isLocked()) {
+ axisService.addParameter(parameter);
+ paramDO.setValue(parameter.getParameterElement().toString());
+ pm.updateEntity(paramDO);
+ }
+ } else {
+
+ // If we are adding a new AxisService param or overriding a param in
+ // the Configuration hierarchy
+ if (p == null || !p.isLocked()) {
+ axisService.addParameter(parameter);
+
+ ServiceParameterDO param = new ServiceParameterDO();
+ param.setName(parameter.getName());
+ param.setValue(parameter.getParameterElement().toString());
+ param.setService(serviceDO);
+
+ try {
+ pm.addEntity(param);
+ } catch (DuplicateEntityException e) {
+ log.error("Service Parameter already exists", e);
+ }
+ }
+ }
+ }
+
+ public void setServiceParameter(String serviceId, String serviceVersion,
+ OMElement paramterElement) throws AxisFault {
+
+ AxisService axisService = getAxisConfig().getService(serviceId);
+
+ if (axisService == null) {
+ throw new AxisFault("Invalid service name '" + serviceId + "'");
+ }
+
+ // Persist the parameter
+ ServiceDO serviceDO = pm.getService(serviceId,
+ ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
+ Parameter parameter = ParameterUtil.createParameter(paramterElement);
+ Parameter p = axisService.getParameter(parameter.getName());
+ ServiceParameterDO paramDO = pm.getServiceParameter(serviceDO,
+ parameter.getName());
+ if (p != null && paramDO != null) {
+
+ // Setting a new value for a parameter declared in AxisService
+ if (!p.isLocked()) {
+ axisService.addParameter(parameter);
+ paramDO.setValue(paramterElement.toString());
+ pm.updateEntity(paramDO);
+ }
+ } else {
+
+ // If we are adding a new AxisService param or overriding a param in
+ // the Configuration hierarchy
+ if (p == null || !p.isLocked()) {
+ axisService.addParameter(parameter);
+
+ ServiceParameterDO param = new ServiceParameterDO();
+ param.setName(parameter.getName());
+ param.setValue(paramterElement.toString());
+ param.setService(serviceDO);
+
+ try {
+ pm.addEntity(param);
+ } catch (DuplicateEntityException e) {
+ log.error("Service Parameter already exists", e);
+ }
+ }
+ }
+ }
+
+ public void removeServiceSpecificParameter(String serviceId,
+ String serviceVersion, OMElement paramterElement) throws AxisFault {
+
+ AxisService axisService = getAxisConfig().getService(serviceId);
+
+ if (axisService == null) {
+ throw new AxisFault("Invalid service name '" + serviceId + "'");
+ }
+
+ // un-Persist the parameter
+ ServiceDO serviceDO = pm.getService(serviceId,
+ ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
+ Parameter parameter = ParameterUtil.createParameter(paramterElement);
+ Parameter p = axisService.getParameter(parameter.getName());
+ ServiceParameterDO paramDO = pm.getServiceParameter(serviceDO,
+ parameter.getName());
+ if (p != null && paramDO != null) {
+
+ // Setting a new value for a parameter declared in AxisService
+ if (!p.isLocked()) {
+ axisService.removeParameter(parameter);
+ pm.deleteEntity(paramDO);
+ }
+ } else {
+
+ if (p == null || !p.isLocked()) {
+ axisService.removeParameter(parameter);
+
+ }
+ }
+ }
+
+ public void setServiceParameter2(String serviceName, Parameter parameter)
+ throws AxisFault {
+ AxisService axisService = getAxisConfig().getService(serviceName);
+
+ if (axisService == null) {
+ throw new AxisFault("Invalid service name '" + serviceName + "'");
+ }
+
+ // Persist the parameter
+ ServiceDO serviceDO = pm.getService(serviceName,
+ ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
+ Parameter p = axisService.getParameter(parameter.getName());
+
+ if (p != null) {
+ if (!p.isLocked()) {
+ axisService.addParameter(parameter);
+
+ ServiceParameterDO paramDO = pm.getServiceParameter(serviceDO,
+ parameter.getName());
+ paramDO.setValue(p.getParameterElement().toString());
+ pm.updateEntity(paramDO);
+ }
+ } else {
+ axisService.addParameter(parameter);
+
+ ServiceParameterDO param = new ServiceParameterDO();
+ param.setName(parameter.getName());
+ param.setValue(parameter.getParameterElement().toString());
+ param.setService(serviceDO);
+
+ try {
+ pm.addEntity(param);
+ } catch (DuplicateEntityException e) {
+ log.error("Service Parameter already exists", e);
+ }
+ }
+ }
+
+ public void removeServiceParameter(String serviceName, String paramName)
+ throws AxisFault {
+ AxisService axisService = getAxisConfig().getService(serviceName);
+ axisService.removeParameter(new Parameter(paramName, null));
+ ServiceDO serviceDO = pm.getService(serviceName,
+ ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
+ ServiceParameterDO sp = new ServiceParameterDO();
+ sp.setService(serviceDO);
+ sp.setName(paramName);
+ serviceDO.getParameters().remove(sp);
+ pm.updateEntity(serviceDO);
+ }
+
+ public OMElement getWSDL(String serviceName) throws AxisFault {
+ AxisService axisService = getAxisConfig().getService(serviceName);
+
+ if (axisService != null) {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ String url = MessageContext.getCurrentMessageContext().getTo()
+ .getAddress();
+ int ipindex = url.indexOf("//");
+ String ip = null;
+
+ if (ipindex >= 0) {
+ ip = url.substring(ipindex + 2, url.length());
+
+ int seperatorIndex = ip.indexOf(":");
+
+ if (seperatorIndex > 0) {
+ ip = ip.substring(0, seperatorIndex);
+ }
+ }
+
+ axisService.printWSDL(out, ip);
+
+ try {
+ XMLStreamReader xmlReader = XMLInputFactory.newInstance()
+ .createXMLStreamReader(
+ new ByteArrayInputStream(out.toByteArray()));
+
+ OMFactory fac = OMAbstractFactory.getOMFactory();
+ OMNamespace namespace = fac.createOMNamespace(
+ "http://org.apache.axis2/xsd", "ns1");
+ OMElement wsdlWrapper = fac.createOMElement("getWSDLResponse",
+ namespace);
+ OMElement retvalue = fac.createOMElement("return", null);
+ wsdlWrapper.addChild(retvalue);
+
+ StAXOMBuilder staxOMBuilder = new StAXOMBuilder(fac, xmlReader);
+ retvalue.addChild(staxOMBuilder.getDocumentElement());
+
+ return wsdlWrapper;
+ } catch (XMLStreamException e) {
+ throw AxisFault.makeFault(e);
+ }
+ }
+
+ return null;
+ }
+
+ public OMElement getSchema(String serviceName) throws AxisFault {
+ AxisService axisService = getAxisConfig().getService(serviceName);
+
+ if (axisService != null) {
+ ByteArrayOutputStream out = new ByteArrayOutputStream();
+ axisService.printSchema(out);
+
+ try {
+ XMLStreamReader xmlReader = XMLInputFactory.newInstance()
+ .createXMLStreamReader(
+ new ByteArrayInputStream(out.toByteArray()));
+ OMFactory fac = OMAbstractFactory.getOMFactory();
+ OMElement wsdlWrapper = fac.createOMElement("getWSDLReponse",
+ null);
+ StAXOMBuilder staxOMBuilder = new StAXOMBuilder(fac, xmlReader);
+ wsdlWrapper.addChild(staxOMBuilder.getDocumentElement());
+
+ return wsdlWrapper;
+ } catch (XMLStreamException e) {
+ throw AxisFault.makeFault(e);
+ }
+ }
+
+ return null;
+ }
+
+ public OMElement getPolicy(String serviceId, String serviceVersion)
+ throws AxisFault {
+ AxisService axisService = getAxisConfig().getService(serviceId);
+
+ if (axisService == null) {
+ throw new AxisFault("invalid service name");
+ }
+
+ PolicySubject servicePolicySubject = axisService.getPolicySubject();
+ List policyList = new ArrayList(servicePolicySubject
+ .getAttachedPolicyComponents());
+ Policy servicePolicy = org.apache.axis2.util.PolicyUtil
+ .getMergedPolicy(policyList, axisService);
+
+ if (servicePolicy == null) {
+ return PolicyUtil.getEmptyPolicyAsOMElement();
+ }
+
+ return PolicyUtil.getPolicyAsOMElement(servicePolicy);
+ }
+
+ public PolicyData[] getPolicies(String serviceId, String serviceVersion)
+ throws AxisFault {
+ AxisService axisService = getAxisConfig().getService(serviceId);
+
+ if (axisService == null) {
+ throw new AxisFault("invalid service name");
+ }
+
+ ArrayList policyDataArray = new ArrayList();
+
+ PolicySubject servicePolicySubject = axisService.getPolicySubject();
+ List policyList;
+
+ // services.xml
+ policyList = new ArrayList(servicePolicySubject
+ .getAttachedPolicyComponents());
+
+ if (!policyList.isEmpty()) {
+ PolicyData policyData = new PolicyData();
+ policyData.setWrapper("Policies that are applicable for "
+ + axisService.getName() + " service");
+ policyData.setPolycies(PolicyUtil.processPolicyElements(policyList
+ .iterator(), new PolicyLocator(axisService)));
+ policyDataArray.add(policyData);
+ }
+
+ for (Iterator iterator = axisService.getEndpoints().values().iterator(); \
iterator.hasNext();) { + AxisEndpoint axisEndpoint = (AxisEndpoint) \
iterator.next(); + policyList = new \
ArrayList(axisEndpoint.getPolicySubject().getAttachedPolicyComponents()); +
+ if (!policyList.isEmpty()) {
+ PolicyData policyData = new PolicyData();
+ policyData.setWrapper("Policies that are applicable for " + \
axisEndpoint.getName() + " endpoint"); \
+ policyData.setPolycies(PolicyUtil.processPolicyElements(policyList \
+ .iterator(), new PolicyLocator(axisService))); \
+ policyDataArray.add(policyData); + }
+ }
+
+ return (PolicyData[]) policyDataArray
+ .toArray(new PolicyData[policyDataArray.size()]);
+ }
+
+ public boolean removePolicy(String serviceId, String version,
+ String policyId) throws AxisFault {
+ boolean isPolicyRemoved = false;
+ AxisService axisService = getAxisConfig().getService(serviceId);
+ if (axisService == null) {
+ throw new AxisFault("Invalid service name " + serviceId);
+ }
+
+ PolicySubject servicePolicySubject = axisService.getPolicySubject();
+ if (servicePolicySubject.getAttachedPolicyComponent(policyId) != null) {
+ servicePolicySubject.detachPolicyComponent(policyId);
+ isPolicyRemoved = true;
+ }
+
+ ServiceDO serviceDO = pm.getService(serviceId, version);
+ List policiesToBeRemoved = new ArrayList();
+ for (Iterator policyIter = serviceDO.getPolicies().iterator(); policyIter
+ .hasNext();) {
+ ServicePolicyDO servicePolicyDO = (ServicePolicyDO) policyIter
+ .next();
+ if (servicePolicyDO.getUuid().equals(policyId)) {
+ policiesToBeRemoved.add(servicePolicyDO);
+ }
+ }
+ Set policies = serviceDO.getPolicies();
+ for (Iterator iterator = policiesToBeRemoved.iterator(); iterator
+ .hasNext();) {
+ policies.remove(iterator.next());
+ isPolicyRemoved = true;
+ }
+ pm.updateEntity(serviceDO);
+ return isPolicyRemoved;
+ }
+
+ public void setPolicy(String serviceId, String version, String policyString)
+ throws AxisFault {
+
+ ByteArrayInputStream bais = new ByteArrayInputStream(policyString
+ .getBytes());
+ OMElement policyElement;
+ try {
+ policyElement = new StAXOMBuilder(bais).getDocumentElement();
+ policyElement.build();
+ } catch (Exception e) {
+ throw new AxisFault(
+ "Cannot deserialize service policy. The policy may be invalid.",
+ e);
+ }
+
+ AxisService axisService = getAxisConfig().getService(serviceId);
+ if (axisService == null) {
+ throw new AxisFault("Invalid service name " + serviceId);
+ }
+
+ if (!policyElement.getLocalName().equals(
+ org.apache.neethi.Constants.ELEM_POLICY)) {
+ policyElement = policyElement.getFirstElement();
+ }
+
+ OMAttribute attribute = policyElement.getAttribute(new QName(
+ org.apache.neethi.Constants.URI_WSU_NS,
+ org.apache.neethi.Constants.ATTR_ID));
+
+ if (attribute == null) {
+ throw new AxisFault("ID Attribute not found in Policy element. "
+ + "Please verify that the policy XML is valid.");
+ }
+ String idAttrVal = attribute.getAttributeValue();
+
+ PolicySubject servicePolicySubject = axisService.getPolicySubject();
+
+ Policy servicePolicy;
+ try {
+ servicePolicy = PolicyUtil.getPolicyFromOMElement(policyElement);
+
+ } catch (NullPointerException npe) {
+ /*
+ * Since 'policyElement.toString()' is the actual string which is
+ * used to create the policy object it logged instead of
+ * 'policyString'.
+ */
+ log.error(
+ "Error: When constructing Policy object from the string : "
+ + policyElement.toString(), npe);
+ throw new AxisFault("Error: Invalid policy", npe);
+
+ } catch (RuntimeException rte) {
+ log.error(
+ "Error: When constructing Policy object from the string : "
+ + policyElement.toString(), rte);
+ throw new AxisFault("Error: Invalid policy", rte);
+ }
+
+ ServicePolicyDO servicePolicyDO = new ServicePolicyDO();
+ servicePolicyDO.setUuid(idAttrVal);
+ servicePolicyDO.setService(pm.getService(serviceId,
+ ServiceIdentifierDO.EMPTY_SERVICE_VERSION));
+ servicePolicyDO.setPolicy(policyElement.toString());
+
+ if (servicePolicySubject.getAttachedPolicyComponent(idAttrVal) != null) {
+ servicePolicySubject.updatePolicy(servicePolicy);
+
+ try {
+ pm.updateServicePolicy(servicePolicyDO);
+ } catch (ServicePolicyNotFoundException e) {
+ throw AxisFault.makeFault(e);
+ }
+
+ } else {
+ servicePolicySubject.attachPolicy(servicePolicy);
+ servicePolicyDO.setType(ServicePolicyDO.AXIS_SERVICE_POLICY);
+
+ try {
+ pm.addServicePolicy(servicePolicyDO);
+ } catch (ServicePolicyAlreadyExistsException e) {
+ throw AxisFault.makeFault(e);
+ }
+ }
+ }
+
+ public String[] getServiceUsers(String serviceName) throws AxisFault {
+ AxisService axisService = getAxisConfig().getService(serviceName);
+
+ if (axisService == null) {
+ throw new AxisFault("invalid service name " + serviceName);
+ }
+
+ Collection users = new ArrayList();
+ ServiceUserDO[] userDOs = pm.getUsersForService(serviceName,
+ ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
+
+ for (int i = 0; i < userDOs.length; i++) {
+ ServiceUserDO userDO = userDOs[i];
+ users.add(userDO.getUsername());
+ }
+
+ return (String[]) users.toArray(new String[users.size()]);
+ }
+
+ public ServiceUserData[] getServiceUsersWithDescription(String serviceName)
+ throws AxisFault {
+ AxisService axisService = getAxisConfig().getService(serviceName);
+
+ if (axisService == null) {
+ throw new AxisFault("invalid service name " + serviceName);
+ }
+
+ ServiceUserDO[] userDOs = pm.getUsersForService(serviceName,
+ ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
+
+ ServiceUserData[] suData = new ServiceUserData[userDOs.length];
+
+ if (userDOs.length == 0) {
+ return new ServiceUserData[0];
+ }
+
+ ServiceUserDO serviceUserData;
+
+ for (int i = 0; i < suData.length; i++) {
+ serviceUserData = userDOs[i];
+
+ ServiceUserData userData = new ServiceUserData();
+ userData.setUser(serviceUserData.getUsername());
+ userData.setDescription(serviceUserData.getDescription());
+ suData[i] = userData;
+ }
+
+ return suData;
+ }
+
+ public ServiceRoleData[] getServiceRolesWithDescription(String serviceName)
+ throws AxisFault {
+ AxisService axisService = getAxisConfig().getService(serviceName);
+
+ if (axisService == null) {
+ throw new AxisFault("invalid service name " + serviceName);
+ }
+
+ ServiceUserRoleDO[] roleDOs = pm.getRolesForService(serviceName,
+ ServiceIdentifierDO.EMPTY_SERVICE_VERSION);
+
+ ServiceRoleData[] srData = new ServiceRoleData[roleDOs.length];
+
+ if (roleDOs.length == 0) {
+ return new ServiceRoleData[0];
+ }
+
+ ServiceUserRoleDO serviceRoleData;
+
+ for (int i = 0; i < srData.length; i++) {
+ serviceRoleData = roleDOs[i];
+
+ ServiceRoleData roleData = new ServiceRoleData();
+ roleData.setRole(serviceRoleData.getRole());
+ roleData.setDescription(serviceRoleData.getDescription());
+ srData[i] = roleData;
+ }
+
+ return srData;
+ }
+
+ /**
+ * Get all the fully qualified class names of all the classes in this
+ * archive
+ *
+ * @param archiveId
+ * @return all the fully qualified class names of all the classes in this
+ * archive
+ * @throws AxisFault
+ */
+ public String[] getClassNames(String archiveId) throws AxisFault {
+ String filePath = getFilePathFromArchiveId(archiveId);
+
+ if (filePath != null) {
+ try {
+ String[] entries = new ArchiveManipulator().check(filePath);
+ Collection classnames = new ArrayList();
+
+ for (int i = 0; i < entries.length; i++) {
+ String entry = entries[i];
+
+ if (entry.endsWith(".class")) {
+ entry = entry.replace('/', '.').substring(0,
+ entry.lastIndexOf(".class"));
+ classnames.add(entry);
+ }
+ }
+
+ return (String[]) classnames.toArray(new String[classnames
+ .size()]);
+ } catch (IOException e) {
+ String msg = "Could not read archive";
+ log.error(msg, e);
+ throw new AxisFault(msg, e);
+ }
+ }
+
+ return new String[] { "" };
+ }
+
+ /**
+ * This method will list all the public methods for the given classes.
+ *
+ * @param classNames
+ * full qualified class name
+ * @return resourcesId array of resource Ids
+ * @throws AxisFault
+ * will be thrown
+ */
+ public ClassMethodsData[] listMethodsForClass(String[] classNames,
+ String[] resourcesId) throws AxisFault {
+ if (classNames == null || classNames.length == 0) {
+ String msg = "Cannot find classes";
+ log.error(msg);
+ throw new AxisFault(msg);
+ }
+ List methodExcludeList = new ArrayList();
+ methodExcludeList.add("hashCode");
+ methodExcludeList.add("getClass");
+ methodExcludeList.add("equals");
+ methodExcludeList.add("notify");
+ methodExcludeList.add("notifyAll");
+ methodExcludeList.add("toString");
+ methodExcludeList.add("wait");
+ List resourecesList = new ArrayList();
+ for (int i = 0; i < resourcesId.length; i++) {
+ String filePathFromArchiveId = getFilePathFromArchiveId(resourcesId[i]);
+ if (filePathFromArchiveId == null) {
+ throw new AxisFault("File cannot be located for id : "
+ + resourcesId[i]);
+ }
+ try {
+ resourecesList.add(new File(filePathFromArchiveId).toURL());
+ } catch (MalformedURLException e) {
+ String msg = "MalformedURLException";
+ throw new AxisFault(msg, e);
+ }
+ }
+ URL[] urls = (URL[]) resourecesList.toArray(new URL[resourecesList
+ .size()]);
+ ClassLoader classLoader = URLClassLoader.newInstance(urls, Thread
+ .currentThread().getContextClassLoader());
+ List classMethodList = new ArrayList();
+ for (int i = 0; i < classNames.length; i++) {
+ String className = classNames[i];
+ try {
+ Class clazz = classLoader.loadClass(className);
+ ClassMethodsData classMethodsData = new ClassMethodsData();
+ classMethodsData.setClassName(clazz.getName());
+ Method[] methods = clazz.getMethods();
+ List methodList = new ArrayList();
+ for (int j = 0; j < methods.length; j++) {
+ Method method = methods[j];
+ String methodName = method.getName();
+ int modifiers = method.getModifiers();
+ if (Modifier.isPublic(modifiers)
+ && !methodExcludeList.contains(methodName)) {
+ MethodData methodData = new MethodData();
+ methodData.setMethodName(methodName);
+ methodList.add(methodData);
+ }
+ }
+ findOverloadedMethods(methodList);
+ classMethodsData.setMethods((MethodData[]) methodList
+ .toArray(new MethodData[methodList.size()]));
+ classMethodList.add(classMethodsData);
+ } catch (ClassNotFoundException e) {
+ String msg = "The class " + className + " cannot be loaded";
+ log.error(msg);
+ }
+
+ }
+ return (ClassMethodsData[]) classMethodList
+ .toArray(new ClassMethodsData[classMethodList.size()]);
+
+ }
+
+ private void findOverloadedMethods(List methodList) {
+ Map finalMap = new HashMap();
+ int size = methodList.size();
+ for (int k = 0; k < size - 1; k++) {
+ MethodData startPointer = (MethodData) methodList.get(k);
+ if (!finalMap.containsKey(startPointer.getMethodName())) {
+ int count = 0;
+ for (Iterator iterator = methodList.iterator(); iterator
+ .hasNext();) {
+ MethodData method = (MethodData) iterator.next();
+ if (method.getMethodName().equals(
+ startPointer.getMethodName())) {
+ count++;
+ }
+ }
+ for (Iterator iterator = methodList.iterator(); iterator
+ .hasNext();) {
+ MethodData method = (MethodData) iterator.next();
+ if (method.getMethodName().equals(
+ startPointer.getMethodName())) {
+ if (count > 1) {
+ method.setOverload(true);
+ }
+ }
+ }
+ }
+ }
+
+ }
+
+ /**
+ * Creates and deploys a service. This AAR will contain all the classe from
+ * the jar/zip file corresponding to <code>archiveId</code>. In addition,
+ * a services.xml will be created, and all of the
+ * <code>serviceClasses</code> will be added as services.
+ *
+ * @param archiveId
+ * archive id
+ * @param data
+ * info array. data contains the excluded method names.
+ * @param resourceId
+ * array of resource Ids that goes in the "lib" folder
+ * @throws AxisFault
+ * will be thrown
+ */
+ public void createAndDeployService(String archiveId,
+ ClassMethodsData[] data, String[] resourceId) throws AxisFault {
+ String filePathFromArchiveId = getFilePathFromArchiveId(archiveId);
+
+ if (filePathFromArchiveId == null) {
+ String msg = "A non-existent file was requested";
+ log.warn(msg);
+ throw new AxisFault(msg);
+ }
+
+ int endIndex = filePathFromArchiveId.lastIndexOf(File.separator);
+ String filePath = filePathFromArchiveId.substring(0, endIndex);
+ String archiveFileName = filePathFromArchiveId.substring(endIndex);
+ archiveFileName = archiveFileName.substring(0, archiveFileName
+ .lastIndexOf("."));
+
+ ArchiveManipulator archiveManipulator = new ArchiveManipulator();
+
+ // ----------------- Unzip the file ------------------------------------
+ String unzippeDir = filePath + File.separator + "temp";
+ File unzipped = new File(unzippeDir);
+ unzipped.mkdirs();
+
+ try {
+ archiveManipulator.extract(filePathFromArchiveId, unzippeDir);
+ } catch (IOException e) {
+ throw new AxisFault("Cannot extract archive", e);
+ }
+
+ // copy resources to lib folder.
+ File resourceLibDir = new File(unzipped.getAbsolutePath()
+ + File.separator + "lib");
+ resourceLibDir.mkdirs();
+ List resourceList = new ArrayList();
+ for (int i = 0; i < resourceId.length; i++) {
+ if (!resourceId[i].equals(archiveId)) {
+ String fileAbsPath = getFilePathFromArchiveId(resourceId[i]);
+ if (fileAbsPath == null) {
+ throw new AxisFault("Resource cannot be located");
+ }
+ resourceList.add(new File(fileAbsPath));
+ }
+ }
+ FileManipulator fileMan = new FileManipulator();
+ for (Iterator iterator = resourceList.iterator(); iterator.hasNext();) {
+ File file = (File) iterator.next();
+ try {
+ String absPath = file.getAbsolutePath();
+ if (File.separatorChar == '\\') {
+ absPath = absPath.replace("\\", "/");
+ }
+ int nameIndex = absPath.lastIndexOf("/");
+ String fileName = absPath.substring(nameIndex + 1);
+ fileMan.copyFile(file, new File(resourceLibDir, fileName));
+ } catch (IOException e) {
+ String msg = "Error occured when copying resources";
+ throw new AxisFault(msg, e);
+ }
+ }
+
+ // ---- Generate the services.xml and place it in META-INF -----
+ File file = new File(unzippeDir + File.separator + "META-INF"
+ + File.separator + "services.xml");
+ file.mkdirs();
+
+ try {
+ File absoluteFile = file.getAbsoluteFile();
+
+ if (absoluteFile.exists()) {
+ absoluteFile.delete();
+ }
+
+ absoluteFile.createNewFile();
+
+ OutputStream os = new FileOutputStream(file);
+ OMElement servicesXML = createServicesXML(data);
+ servicesXML.build();
+ servicesXML.serialize(os);
+ } catch (Exception e) {
+ String msg = "Cannot write services XML";
+ log.error(msg, e);
+ throw new AxisFault(msg, e);
+ }
+
+ // ----------------- Create the AAR ------------------------------------
+ // These are the files to include in the ZIP file
+ String outAARFilename = filePath + File.separator + archiveFileName
+ + ".aar";
+
+ try {
+ archiveManipulator.archiveDir(outAARFilename, unzipped.getPath());
+ } catch (IOException e) {
+ String msg = "Cannot create new AAR archive";
+ log.error(msg, e);
+ throw new AxisFault(msg, e);
+ }
+
+ // ------------- Copy the AAR to the repository/services directory
+ // --------
+ String repo = MessageContext.getCurrentMessageContext()
+ .getConfigurationContext().getAxisConfiguration()
+ .getRepository().getPath()
+ + File.separator + "services";
+
+ try {
+ new FileManipulator().copyFile(new File(outAARFilename), new File(
+ repo + File.separator + archiveFileName + ".aar"));
+ } catch (IOException e) {
+ String msg = "Cannot copy AAR file to Repo";
+ log.error(msg, e);
+ throw new AxisFault(msg, e);
+ }
+ }
+
+ private OMElement createServicesXMLFromSpringBeans(String[] springBeans,
+ String springContextLocation) {
+ OMFactory factory = OMAbstractFactory.getOMFactory();
+ OMNamespace emptyNS = factory.createOMNamespace("", "");
+ OMElement serviceGroupEle = factory.createOMElement("serviceGroup", "",
+ "");
+
+ for (int i = 0; i < springBeans.length; i++) {
+ String serviceBeanName = springBeans[i];
+
+ OMElement serviceEle = factory.createOMElement("service", "", "");
+
+ OMElement schemaEle = factory.createOMElement("schema", "", "");
+ schemaEle.addAttribute(factory.createOMAttribute(
+ "elementFormDefaultQualified", emptyNS, "false"));
+
+ serviceEle.addAttribute(factory.createOMAttribute("name", emptyNS,
+ serviceBeanName));
+
+ OMElement msgReceiversEle = factory.createOMElement(
+ "messageReceivers", "", "");
+ OMElement msgReceiverEle1 = factory.createOMElement(
+ "messageReceiver", "", "");
+ msgReceiverEle1.addAttribute("mep",
+ "http://www.w3.org/ns/wsdl/in-only", emptyNS);
+ msgReceiverEle1.addAttribute("class",
+ RPCInOnlyMessageReceiver.class.getName(), emptyNS);
+
+ OMElement msgReceiverEle2 = factory.createOMElement(
+ "messageReceiver", "", "");
+ msgReceiverEle2.addAttribute("mep",
+ "http://www.w3.org/ns/wsdl/in-out", emptyNS);
+ msgReceiverEle2.addAttribute("class", RPCMessageReceiver.class
+ .getName(), emptyNS);
+ msgReceiversEle.addChild(msgReceiverEle1);
+ msgReceiversEle.addChild(msgReceiverEle2);
+
+ OMElement parameterEleServiceObjectSupplier = factory
+ .createOMElement("parameter", "", "");
+ parameterEleServiceObjectSupplier.addAttribute("locked", "true",
+ emptyNS);
+ parameterEleServiceObjectSupplier.addAttribute("name",
+ "ServiceObjectSupplier", emptyNS);
+ parameterEleServiceObjectSupplier
+ .setText(GenericApplicationContextSupplier.class.getName());
+
+ OMElement parameterEleSpringBeanName = factory.createOMElement(
+ "parameter", "", "");
+ parameterEleSpringBeanName.addAttribute("locked", "true", emptyNS);
+ parameterEleSpringBeanName.addAttribute("name", "SpringBeanName",
+ emptyNS);
+ parameterEleSpringBeanName.setText(serviceBeanName);
+
+ OMElement parameterEleSpringContextLocation = factory
+ .createOMElement("parameter", "", "");
+ parameterEleSpringContextLocation.addAttribute("locked", "true",
+ emptyNS);
+ parameterEleSpringContextLocation.addAttribute("name",
+ "SpringContextLocation", emptyNS);
+ parameterEleSpringContextLocation.setText(springContextLocation);
+
+ serviceEle.addChild(schemaEle);
+ serviceEle.addChild(msgReceiversEle);
+ serviceEle.addChild(parameterEleServiceObjectSupplier);
+ serviceEle.addChild(parameterEleSpringBeanName);
+ serviceEle.addChild(parameterEleSpringContextLocation);
+ serviceGroupEle.addChild(serviceEle);
+ }
+ return serviceGroupEle;
+ }
+
+ private OMElement createServicesXML(ClassMethodsData[] data) {
+ OMFactory factory = OMAbstractFactory.getOMFactory();
+ OMNamespace emptyNS = factory.createOMNamespace("", "");
+ OMElement serviceGroupEle = factory.createOMElement("serviceGroup", "",
+ "");
+
+ for (int i = 0; i < data.length; i++) {
+ ClassMethodsData datum = data[i];
+ String serviceClass = datum.getClassName();
+ String serviceName = serviceClass.substring(serviceClass
+ .lastIndexOf(".") + 1);
+
+ OMElement serviceEle = factory.createOMElement("service", "", "");
+
+ OMElement schemaEle = factory.createOMElement("schema", "", "");
+ schemaEle.addAttribute(factory.createOMAttribute(
+ "elementFormDefaultQualified", emptyNS, "true"));
+
+ serviceEle.addAttribute(factory.createOMAttribute("name", emptyNS,
+ serviceName));
+
+ OMElement msgReceiversEle = factory.createOMElement(
+ "messageReceivers", "", "");
+ OMElement msgReceiverEle1 = factory.createOMElement(
+ "messageReceiver", "", "");
+ msgReceiverEle1.addAttribute("mep",
+ "http://www.w3.org/ns/wsdl/in-only", emptyNS);
+ msgReceiverEle1.addAttribute("class",
+ "org.apache.axis2.rpc.receivers.RPCInOnlyMessageReceiver",
+ emptyNS);
+
+ OMElement msgReceiverEle2 = factory.createOMElement(
+ "messageReceiver", "", "");
+ msgReceiverEle2.addAttribute("mep",
+ "http://www.w3.org/ns/wsdl/in-out", emptyNS);
+ msgReceiverEle2.addAttribute("class",
+ "org.apache.axis2.rpc.receivers.RPCMessageReceiver",
+ emptyNS);
+ msgReceiversEle.addChild(msgReceiverEle1);
+ msgReceiversEle.addChild(msgReceiverEle2);
+
+ OMElement parameterEle = factory.createOMElement("parameter", "",
+ "");
+ parameterEle.addAttribute("name", "ServiceClass", emptyNS);
+ parameterEle.setText(serviceClass);
+
+ serviceEle.addChild(schemaEle);
+ serviceEle.addChild(msgReceiversEle);
+ serviceEle.addChild(parameterEle);
+ // Operations
+ MethodData[] methodData = datum.getMethods();
+ if (methodData != null) {
+ if (methodData.length > 0) {
+ OMElement excludesEle = factory.createOMElement(
+ "excludeOperations", "", "");
+ serviceEle.addChild(excludesEle);
+ List operationDuplicationList = new ArrayList();
+ for (int j = 0; j < methodData.length; j++) {
+ String methodName = methodData[j].getMethodName();
+ if (!operationDuplicationList.contains(methodName)) {
+ OMElement operationEle = factory.createOMElement(
+ "operation", "", "");
+ operationDuplicationList.add(methodName);
+ operationEle.setText(methodName);
+ excludesEle.addChild(operationEle);
+ }
+ }
+ }
+ }
+ serviceGroupEle.addChild(serviceEle);
+ }
+
+ return serviceGroupEle;
+ }
+
+ private String getFilePathFromArchiveId(String archiveId) {
+ ConfigurationContext configCtx = MessageContext
+ .getCurrentMessageContext().getConfigurationContext();
+ Map fileResMap = (Map) configCtx
+ .getProperty(org.wso2.wsas.ServerConstants.FILE_RESOURCE_MAP);
+
+ return (String) fileResMap.get(archiveId);
+ }
+
+ public boolean deleteFaultyServiceArchive(String archiveName)
+ throws AxisFault {
+ if (File.separatorChar == '\\') {
+ archiveName = archiveName.replace('/', '\\');
+ }
+
+ boolean isDeleted = false;
+ if (archiveName != null && archiveName.trim().length() != 0) {
+ File file = new File(archiveName);
+ if (file.exists()) {
+ if (!((file.isDirectory() && new FileManipulator()
+ .deleteDir(file)) || file.delete())) {
+ throw new AxisFault(
+ "Faulty service archive deletion failed. "
+ + "Due to a JVM issue on MS-Windows, "
+ + "AAR files cannot be deleted. "
+ + "Please stop the server and manually delete this file.");
+ } else {
+ isDeleted = true;
+ getAxisConfig().getFaultyServices().remove(archiveName);
+ }
+ }
+ }
+
+ return isDeleted;
+ }
+
+ public FaultService[] getFaultyServiceArchives() throws AxisFault {
+ AxisConfiguration ac = getAxisConfig();
+ Hashtable faultyServices = ac.getFaultyServices();
+ ArrayList fsList = new ArrayList();
+
+ for (Iterator keys = faultyServices.keySet().iterator(); keys.hasNext();) {
+ String key = (String) keys.next();
+ String fault = (String) faultyServices.get(key);
+ FaultService fs = new FaultService();
+
+ if (File.separatorChar == '\\') {
+ key = key.replace('\\', '/');
+ }
+
+ fs.setServiceName(key);
+ fs.setFault(fault);
+ fsList.add(fs);
+ }
+
+ return (FaultService[]) fsList.toArray(new FaultService[fsList.size()]);
+ }
+
+ public int getNumberOfFaultyServices() throws AxisFault {
+ return getAxisConfig().getFaultyServices().size();
+ }
+
+ public SpringBeansData getSpringBeanNames(String springContextId,
+ String springBeanId) throws AxisFault {
+ // Manipulation of springContext to ${RepositoryLocation}/spring
+
+ String springContextFilePath = getFilePathFromArchiveId(springContextId);
+ String springBeanFilePath = getFilePathFromArchiveId(springBeanId);
+ SpringBeansData data = new SpringBeansData();
+ data.setSpringContext(springContextId);
+ try {
+ ApplicationContext aCtx = GenericApplicationContextUtil
+ .getSpringApplicationContext(springContextFilePath,
+ springBeanFilePath);
+ String[] beanDefintions = aCtx.getBeanDefinitionNames();
+ data.setBeans(beanDefintions);
+ } catch (Exception e) {
+ throw new AxisFault(
+ "Cannot load Spring beans. Please check the Spring context "
+ + "configuration file and verify that the defined Spring beans exist"
+ + " in the .jar file.");
+ }
+ return data;
+ }
+
+ public void createAndDeploySpringBean(String springContextId,
+ String springBeanId, String[] beanClasses) throws AxisFault {
+ String filePathFromArchiveId = getFilePathFromArchiveId(springBeanId);
+ String filePathForSpringContext = getFilePathFromArchiveId(springContextId);
+ ConfigurationContext configCtx = MessageContext
+ .getCurrentMessageContext().getConfigurationContext();
+ Map fileResMap = (Map) configCtx
+ .getProperty(org.wso2.wsas.ServerConstants.FILE_RESOURCE_MAP);
+ fileResMap.remove(springContextId);
+
+ if (filePathFromArchiveId == null) {
+ String msg = "A non-existent file was requested";
+ log.warn(msg);
+ throw new AxisFault(msg);
+ }
+
+ int endIndex = filePathFromArchiveId.lastIndexOf(File.separator);
+ String filePath = filePathFromArchiveId.substring(0, endIndex);
+ String archiveFileName = filePathFromArchiveId.substring(endIndex);
+ archiveFileName = archiveFileName.substring(0, archiveFileName
+ .lastIndexOf("."));
+
+ ArchiveManipulator archiveManipulator = new ArchiveManipulator();
+
+ // ----------------- Unzip the file ------------------------------------
+ String unzippeDir = filePath + File.separator + "springTemp";
+ File unzipped = new File(unzippeDir);
+ unzipped.mkdirs();
+
+ try {
+ archiveManipulator.extract(filePathFromArchiveId, unzippeDir);
+ } catch (IOException e) {
+ throw new AxisFault("Cannot extract archive", e);
+ }
+
+ // TODO copy the spring xml
+ String springContextRelLocation = "spring/context.xml";
+ try {
+ File springContextRelDir = new File(unzippeDir + File.separator
+ + "spring");
+ springContextRelDir.mkdirs();
+ File absFile = new File(springContextRelDir, "context.xml");
+ if (!absFile.exists()) {
+ absFile.createNewFile();
+ }
+ File file = new File(filePathForSpringContext);
+ FileInputStream in = new FileInputStream(file);
+ FileOutputStream out = new FileOutputStream(absFile);
+ // Transfer bytes from in to out
+ byte[] buf = new byte[1024];
+ int len;
+ while ((len = in.read(buf)) > 0) {
+ out.write(buf, 0, len);
+ }
+ in.close();
+ out.close();
+
+ } catch (FileNotFoundException e) {
+ throw AxisFault.makeFault(e);
+ } catch (IOException e) {
+ throw AxisFault.makeFault(e);
+ }
+
+ // ---- Generate the services.xml and place it in META-INF -----
+ File file = new File(unzippeDir + File.separator + "META-INF"
+ + File.separator + "services.xml");
+ file.mkdirs();
+
+ try {
+ File absoluteFile = file.getAbsoluteFile();
+
+ if (absoluteFile.exists()) {
+ absoluteFile.delete();
+ }
+
+ absoluteFile.createNewFile();
+
+ OutputStream os = new FileOutputStream(file);
+ OMElement servicesXML = createServicesXMLFromSpringBeans(
+ beanClasses, springContextRelLocation);
+ servicesXML.build();
+ servicesXML.serialize(os);
+ } catch (Exception e) {
+ String msg = "Cannot write services XML";
+ log.error(msg, e);
+ throw new AxisFault(msg, e);
+ }
+
+ // ----------------- Create the AAR ------------------------------------
+ // These are the files to include in the ZIP file
+ String outAARFilename = filePath + File.separator + archiveFileName
+ + ".aar";
+
+ try {
+ archiveManipulator.archiveDir(outAARFilename, unzipped.getPath());
+ } catch (IOException e) {
+ String msg = "Cannot create new AAR archive";
+ log.error(msg, e);
+ throw new AxisFault(msg, e);
+ }
+
+ // ------------- Copy the AAR to the respository/services directory
+ // --------
+ String repo = MessageContext.getCurrentMessageContext()
+ .getConfigurationContext().getAxisConfiguration()
+ .getRepository().getPath()
+ + File.separator + "services";
+
+ try {
+ new FileManipulator().copyFile(new File(outAARFilename), new File(
+ repo + File.separator + archiveFileName + ".aar"));
+ } catch (IOException e) {
+ String msg = "Cannot copy AAR file to Repo";
+ log.error(msg, e);
+ throw new AxisFault(msg, e);
+ }
+ }
+
+ public void createAndDeployEJBService(String archiveId,
+ String[] serviceClasses, String jnpProviderUrl,
+ String beanJNDIName, String homeInterface, String remoteInterface)
+ throws AxisFault {
+ // Find details of selected ejb application server configuration
+ EJBAppServerDO ejbAppServerDO = pm
+ .getEJBAppServerConfiguration(jnpProviderUrl);
+ if (ejbAppServerDO == null) {
+ throw new AxisFault(
+ "Non-existance Application server configuration");
+ }
+
+ // save ejb configuration
+ EJBProviderAdmin ejbProviderAdmin = new EJBProviderAdmin();
+
+ // search for existing configuration, if found abort service deployment
+ try {
+ EJBProviderDO ejbProviderDO = ejbProviderAdmin.getEJBConfiguration(
+ beanJNDIName, jnpProviderUrl);
+ if (!(ejbProviderDO == null)) {
+ // configuration found.Throw exception
+ throw new AxisFault(
+ "A Service exists for the provided JNDI name("
+ + beanJNDIName + ") and JNP Url("
+ + jnpProviderUrl + ").");
+ }
+ } catch (Exception e) {
+ throw new AxisFault("A Service exists for the provided JNDI name("
+ + beanJNDIName + ") and JNP Url(" + jnpProviderUrl + ").");
+ }
+
+ ejbProviderAdmin.addEJBConfiguration(ejbAppServerDO.getProviderURL(),
+ ejbAppServerDO.getJndiContextClass(), ejbAppServerDO
+ .getUserName(), ejbAppServerDO.getUserName(),
+ beanJNDIName, homeInterface, remoteInterface, ejbAppServerDO
+ .getAppServerType());
+
+ String filePathFromArchiveId = getFilePathFromArchiveId(archiveId);
+
+ if (filePathFromArchiveId == null) {
+ String msg = "A non-existent file was requested";
+ log.warn(msg);
+ throw new AxisFault(msg);
+ }
+
+ int endIndex = filePathFromArchiveId.lastIndexOf(File.separator);
+ String filePath = filePathFromArchiveId.substring(0, endIndex);
+ String archiveFileName = filePathFromArchiveId.substring(endIndex);
+ archiveFileName = archiveFileName.substring(0, archiveFileName
+ .lastIndexOf("."));
+
+ ArchiveManipulator archiveManipulator = new ArchiveManipulator();
+
+ // ----------------- Unzip the file ------------------------------------
+ String unzippeDir = filePath + File.separator + "temp";
+ File unzipped = new File(unzippeDir);
+ unzipped.mkdirs();
+
+ try {
+ archiveManipulator.extract(filePathFromArchiveId, unzippeDir);
+ } catch (IOException e) {
+ throw new AxisFault("Cannot extract archive", e);
+ }
+
+ // ---- Generate the services.xml and place it in META-INF -----
+ File file = new File(unzippeDir + File.separator + "META-INF"
+ + File.separator + "services.xml");
+ file.mkdirs();
+
+ try {
+ File absoluteFile = file.getAbsoluteFile();
+ if (absoluteFile.exists()) {
+ absoluteFile.delete();
+ }
+ absoluteFile.createNewFile();
+ OutputStream os = new FileOutputStream(file);
+ OMElement servicesXML = createServicesXMLForEJBService(
+ serviceClasses, ejbAppServerDO.getProviderURL(),
+ ejbAppServerDO.getJndiContextClass(), ejbAppServerDO
+ .getUserName(), ejbAppServerDO.getPassword(),
+ beanJNDIName, homeInterface, remoteInterface);
+ servicesXML.build();
+ servicesXML.serialize(os);
+ } catch (Exception e) {
+ String msg = "Cannot write services XML";
+ log.error(msg, e);
+ throw new AxisFault(msg, e);
+ }
+
+ // ----------------- Create the AAR ------------------------------------
+ // These are the files to include in the ZIP file
+ String outAARFilename = filePath + File.separator + archiveFileName
+ + ".aar";
+
+ try {
+ archiveManipulator.archiveDir(outAARFilename, unzipped.getPath());
+ } catch (IOException e) {
+ String msg = "Cannot create new AAR archive";
+ log.error(msg, e);
+ throw new AxisFault(msg, e);
+ }
+
+ // ------------- Copy the AAR to the respository/services directory
+ // --------
+ String repo = MessageContext.getCurrentMessageContext()
+ .getConfigurationContext().getAxisConfiguration()
+ .getRepository().getPath()
+ + File.separator + "services";
+
+ try {
+ new FileManipulator().copyFile(new File(outAARFilename), new File(
+ repo + File.separator + archiveFileName + ".aar"));
+ } catch (IOException e) {
+ String msg = "Cannot copy AAR file to Repo";
+ log.error(msg, e);
+ throw new AxisFault(msg, e);
+ }
+ }
+
+ /*
+ * <serviceGroup> <service name="TimeService"> <description>Time!! web
+ * service</description> <parameter name="ServiceClass"
+ * locked="false">org.apache.axis2.samples.ejb.session.interfaces.TimeServiceRemote</parameter>
+ * <messageReceivers> <messageReceiver
+ * mep="http://www.w3.org/2004/08/wsdl/in-only"
+ * class="org.apache.axis2.rpc.receivers.ejb.EJBInOnlyMessageReceiver"/>
+ * <messageReceiver mep="http://www.w3.org/2004/08/wsdl/in-out"
+ * class="org.apache.axis2.rpc.receivers.ejb.EJBMessageReceiver"/>
+ * </messageReceivers> <parameter
+ * name="remoteInterfaceName">org.apache.axis2.samples.ejb.session.interfaces.TimeServiceRemote</parameter>
+ * <parameter
+ * name="homeInterfaceName">org.apache.axis2.samples.ejb.session.interfaces.TimeServiceRemoteHome</parameter>
+ * <parameter
+ * name="beanJndiName">org.apache.axis2.samples.ejb.session.interfaces.TimeServiceLocalHome</parameter>
+ * <parameter name="service_type">ejb_service</parameter> <!--for jboss -->
+ * <parameter name="providerUrl">jnp://localhost:1099</parameter>
+ * <parameter
+ * name="jndiContextClass">org.jnp.interfaces.NamingContextFactory</parameter>
+ *
+ * <!--for geronimo <parameter name="providerUrl">localhost:4201</parameter>
+ * <parameter name="jndiContextClass">org.openejb.client.JNDIContext</parameter>
+ * --> </service> </serviceGroup>
+ */
+ private OMElement createServicesXMLForEJBService(String[] serviceClasses,
+ String providerURL, String jndiContextClass, String userName,
+ String password, String beanJNDIName, String homeInterface,
+ String remoteInterface) {
+
+ OMFactory factory = OMAbstractFactory.getOMFactory();
+ OMNamespace emptyNS = factory.createOMNamespace("", "");
+ OMElement serviceGroupEle = factory.createOMElement("serviceGroup", "",
+ "");
+
+ // Although we have a loop here, only one class will come
+ for (int i = 0; i < serviceClasses.length; i++) {
+ String serviceClass = serviceClasses[i];
+ String serviceName = serviceClass.substring(serviceClass
+ .lastIndexOf(".") + 1);
+
+ OMElement serviceEle = factory.createOMElement("service", "", "");
+
+ OMElement schemaEle = factory.createOMElement("schema", "", "");
+ schemaEle.addAttribute(factory.createOMAttribute(
+ "elementFormDefaultQualified", emptyNS, "false"));
+
+ serviceEle.addAttribute(factory.createOMAttribute("name", emptyNS,
+ serviceName));
+
+ OMElement msgReceiversEle = factory.createOMElement(
+ "messageReceivers", "", "");
+ OMElement msgReceiverEle1 = factory.createOMElement(
+ "messageReceiver", "", "");
+ msgReceiverEle1.addAttribute("mep",
+ "http://www.w3.org/ns/wsdl/in-only", emptyNS);
+ msgReceiverEle1
+ .addAttribute(
+ "class",
+ "org.apache.axis2.rpc.receivers.ejb.EJBInOnlyMessageReceiver",
+ emptyNS);
+
+ OMElement msgReceiverEle2 = factory.createOMElement(
+ "messageReceiver", "", "");
+ msgReceiverEle2.addAttribute("mep",
+ "http://www.w3.org/ns/wsdl/in-out", emptyNS);
+ msgReceiverEle2.addAttribute("class",
+ "org.apache.axis2.rpc.receivers.ejb.EJBMessageReceiver",
+ emptyNS);
+ msgReceiversEle.addChild(msgReceiverEle1);
+ msgReceiversEle.addChild(msgReceiverEle2);
+
+ OMElement parameterEle1 = factory.createOMElement("parameter", "",
+ "");
+ parameterEle1.addAttribute("name",
+ EJBUtil.EJB_REMOTE_INTERFACE_NAME, emptyNS);
+ parameterEle1.setText(remoteInterface);
+
+ OMElement parameterEle2 = factory.createOMElement("parameter", "",
+ "");
+ parameterEle2.addAttribute("name", EJBUtil.EJB_HOME_INTERFACE_NAME,
+ emptyNS);
+ parameterEle2.setText(homeInterface);
+
+ OMElement parameterEle3 = factory.createOMElement("parameter", "",
+ "");
+ parameterEle3.addAttribute("name", EJBUtil.EJB_JNDI_NAME, emptyNS);
+ parameterEle3.setText(beanJNDIName);
+
+ OMElement parameterEle4 = factory.createOMElement("parameter", "",
+ "");
+ parameterEle4.addAttribute("name", EJBUtil.EJB_PROVIDER_URL,
+ emptyNS);
+ parameterEle4.setText(providerURL);
+
+ OMElement parameterEle5 = factory.createOMElement("parameter", "",
+ "");
+ parameterEle5.addAttribute("name",
+ EJBUtil.EJB_INITIAL_CONTEXT_FACTORY, emptyNS);
+ parameterEle5.setText(jndiContextClass);
+
+ OMElement parameterEle6 = factory.createOMElement("parameter", "",
+ "");
+ parameterEle6.addAttribute("name", EJBUtil.EJB_JNDI_USERNAME,
+ emptyNS);
+ parameterEle6.setText(userName);
+
+ OMElement parameterEle7 = factory.createOMElement("parameter", "",
+ "");
+ parameterEle7.addAttribute("name", EJBUtil.EJB_JNDI_PASSWORD,
+ emptyNS);
+ parameterEle7.setText(password);
+
+ OMElement parameterEle8 = factory.createOMElement("parameter", "",
+ "");
+ parameterEle8.addAttribute("name", "ServiceClass", emptyNS);
+ parameterEle8.setText(serviceClass);
+
+ OMElement parameterEle9 = factory.createOMElement("parameter", "",
+ "");
+ parameterEle9.addAttribute("name", ServerConstants.SERVICE_TYPE,
+ emptyNS);
+ parameterEle9.setText(ServerConstants.SERVICE_TYPE_EJB);
+
+ serviceEle.addChild(schemaEle);
+ serviceEle.addChild(msgReceiversEle);
+ serviceEle.addChild(parameterEle1);
+ serviceEle.addChild(parameterEle2);
+ serviceEle.addChild(parameterEle3);
+ serviceEle.addChild(parameterEle4);
+ serviceEle.addChild(parameterEle5);
+ serviceEle.addChild(parameterEle6);
+ serviceEle.addChild(parameterEle7);
+ serviceEle.addChild(parameterEle8);
+ serviceEle.addChild(parameterEle9);
+
+ serviceGroupEle.addChild(serviceEle);
+ }
+ return serviceGroupEle;
+ }
}
Modified: trunk/wsas/java/modules/core/src/org/wso2/wsas/persistence/dataobject/ServicePolicyDO.java
==============================================================================
--- trunk/wsas/java/modules/core/src/org/wso2/wsas/persistence/dataobject/ServicePolicyDO.java (original)
+++ trunk/wsas/java/modules/core/src/org/wso2/wsas/persistence/dataobject/ServicePolicyDO.java Sun \
Apr 6 21:31:26 2008 @@ -20,6 +20,43 @@
* Data object representing policy of a service
*/
public class ServicePolicyDO extends AbstractDataObject {
+
+ public static final int ANON_POLICY = 100;
+
+ public static final int AXIS_POLICY = 1;
+
+ public static final int AXIS_MODULE_POLICY = 2;
+
+ public static final int AXIS_MODULE_OPERATION_POLICY = 17;
+
+ public static final int AXIS_SERVICE_POLICY = 3;
+
+ public static final int AXIS_OPERATION_POLICY = 4;
+
+ public static final int AXIS_MESSAGE_POLICY = 5;
+
+ public static final int SERVICE_POLICY = 6;
+
+ public static final int PORT_POLICY = 7;
+
+ public static final int PORT_TYPE_POLICY = 8;
+
+ public static final int BINDING_POLICY = 9;
+
+ public static final int OPERATION_POLICY = 10;
+
+ public static final int BINDING_OPERATION_POLICY = 11;
+
+ public static final int INPUT_POLICY = 12;
+
+ public static final int OUTPUT_POLICY = 13;
+
+ public static final int BINDING_INPUT_POLICY = 14;
+
+ public static final int BINDING_OUTPUT_POLICY = 15;
+
+ public static final int MESSAGE_POLICY = 16;
+
private String policy;
private String uuid;
private int type;
_______________________________________________
Wsas-java-dev mailing list
Wsas-java-dev@wso2.org
http://wso2.org/cgi-bin/mailman/listinfo/wsas-java-dev
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic