/*
* Copyright (c) 2005-2009, WSO2 Inc. (http://www.wso2.org) All Rights Reserved.
*
* WSO2 Inc. licenses this file to you under the Apache License,
* Version 2.0 (the "License"); you may not use this file except
* in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*
*/
package org.wso2.carbon.registry.eventing.events;
import org.apache.axiom.om.OMAbstractFactory;
import org.apache.axiom.om.OMElement;
import org.apache.axiom.om.OMFactory;
import org.apache.axiom.om.OMNamespace;
import org.wso2.carbon.registry.event.core.Message;
import org.wso2.carbon.registry.common.eventing.RegistryEvent;
import java.util.Map;
public class DispatchEvent extends Message {
private String endpoint = null;
private boolean doRest = false;
private RegistryEvent event = null;
public DispatchEvent(RegistryEvent event, String endpoint, boolean doRest) {
super();
this.event = event;
this.setEndpoint(endpoint);
this.setDoRest(doRest);
setProperties(event.getParameters());
}
public OMElement getMessage() {
if (event.getMessage() instanceof OMElement) {
return (OMElement) event.getMessage();
} else if (event.getMessage() instanceof String) {
OMFactory factory = OMAbstractFactory.getOMFactory();
OMNamespace namespace = factory.createOMNamespace(
RegistryEvent.REGISTRY_EVENT_NS, "ns");
OMElement payload = factory.createOMElement("Event", namespace);
factory.createOMElement("Message", namespace, payload).setText(
(String) event.getMessage());
factory.createOMElement("Timestamp", namespace, payload).setText(
event.getTimestamp());
RegistryEvent.Context contextDetails = event.getContextDetails();
RegistryEvent.Operation operationDetails =
event.getOperationDetails();
RegistryEvent.RegistrySession registrySessionDetails =
event.getRegistrySessionDetails();
RegistryEvent.Server serverDetails = RegistryEvent.getServerDetails();
OMElement details = factory.createOMElement("Details", namespace, payload);
OMElement registrySession =
factory.createOMElement("Session", namespace, details);
String chroot = registrySessionDetails.getChroot();
if (chroot == null) {
chroot = "undefined";
}
factory.createOMElement("Chroot", namespace, registrySession).setText(
chroot);
String username = registrySessionDetails.getUsername();
if (username == null) {
username = contextDetails.getUsername();
if (username == null) {
username = "unknown";
}
}
factory.createOMElement("Username", namespace, registrySession).setText(
username);
int tenantId = registrySessionDetails.getTenantId();
if (tenantId == -1) {
tenantId = contextDetails.getTenantId();
if (tenantId == -1) {
tenantId = event.getTenantId();
}
}
factory.createOMElement("TenantId", namespace, registrySession).setText(
Integer.toString(tenantId));
OMElement operation =
factory.createOMElement("Operation", namespace, details);
factory.createOMElement("Path", namespace, operation).setText(
operationDetails.getPath());
factory.createOMElement("EventType", namespace, operation).setText(
operationDetails.getEventType());
factory.createOMElement("ResourceType", namespace, operation).setText(
operationDetails.getResourceType());
@SuppressWarnings("unchecked")
Map<String, String> parameters = event.getParameters();
for (Map.Entry<String, String> e : parameters.entrySet()) {
factory.createOMElement(e.getKey(), namespace, operation).setText(
e.getValue());
}
OMElement server = factory.createOMElement("Server", namespace, details);
factory.createOMElement("HostName", namespace, server).setText(
serverDetails.getHostIPAddress());
OMElement product = factory.createOMElement("Product", namespace, server);
factory.createOMElement("Name", namespace, product).setText(
serverDetails.getProductName());
factory.createOMElement("Version", namespace, product).setText(
serverDetails.getProductVersion());
OMElement os = factory.createOMElement("OS", namespace, server);
factory.createOMElement("Name", namespace, os).setText(
serverDetails.getOSDetails().getOperatingSystemName());
factory.createOMElement("Version", namespace, os).setText(
serverDetails.getOSDetails().getOperatingSystemVersion());
factory.createOMElement("Architecture", namespace, os).setText(
serverDetails.getOSDetails().getOperatingSystemArchitecture());
OMElement user = factory.createOMElement("User", namespace, server);
factory.createOMElement("Name", namespace, user).setText(
serverDetails.getOSUser().getUsername());
factory.createOMElement("Country", namespace, user).setText(
serverDetails.getOSUser().getCountry());
factory.createOMElement("Language", namespace, user).setText(
serverDetails.getOSUser().getLanguage());
factory.createOMElement("TimeZone", namespace, user).setText(
serverDetails.getOSUser().getTimezone());
OMElement java = factory.createOMElement("Java", namespace, server);
factory.createOMElement("Vendor", namespace, java).setText(
serverDetails.getJVMDetails().getJavaVendor());
factory.createOMElement("Version", namespace, java).setText(
serverDetails.getJVMDetails().getJavaVersion());
OMElement jvm = factory.createOMElement("JVM", namespace, java);
factory.createOMElement("Name", namespace, jvm).setText(
serverDetails.getJVMDetails().getJavaVMName());
factory.createOMElement("Version", namespace, jvm).setText(
serverDetails.getJVMDetails().getJavaVMVersion());
payload.build();
return payload;
}
return null;
}
public String getEndpoint() {
return endpoint;
}
public void setEndpoint(String endpoint) {
this.endpoint = endpoint;
}
public boolean isDoRest() {
return doRest;
}
public void setDoRest(boolean doRest) {
this.doRest = doRest;
}
public int getTenantId() {
return event.getTenantId();
}
public void setTenantId(int tenantId) {
this.event.setTenantId(tenantId);
}
public String getTimestamp() {
return event.getTimestamp();
}
public RegistryEvent.RegistrySession getRegistrySessionDetails() {
return event.getRegistrySessionDetails();
}
public RegistryEvent.Context getContextDetails() {
return event.getContextDetails();
}
public RegistryEvent.Operation getOperationDetails() {
return event.getOperationDetails();
}
public String getTopic() {
return event.getTopic();
}
@SuppressWarnings("unchecked")
public Map<String, String> getParameters() {
return event.getParameters();
}
public RegistryEvent getEvent(){
return event;
}
}