Source code: org/everest/WeatherStationSoapService.java
1 package org.everest;
2
3 import org.apache.ws.XmlObjectWrapper;
4 import org.apache.ws.mows.v1_0.MowsConstants;
5 import org.apache.ws.muws.impl.CategoryImpl;
6 import org.apache.ws.muws.v1_0.MuwsConstants;
7 import org.apache.ws.muws.v1_0.events.Situation;
8 import org.apache.ws.muws.v1_0.events.impl.SituationImpl;
9 import org.apache.ws.muws.v1_0.events.impl.XmlBeansManagementEvent;
10 import org.apache.ws.notification.topics.Topic;
11 import org.apache.ws.resource.ResourceContext;
12 import org.apache.ws.resource.example.InteropConstants;
13 import org.apache.ws.resource.impl.SimpleTypeResourceKey;
14 import org.apache.ws.util.XmlBeanUtils;
15 import org.apache.xmlbeans.XmlObject;
16 import org.everestWeather.wsdm.samples.x2005.x04.schema.WeatherstationHome;
17 import org.everestWeather.wsdm.samples.x2005.x04.schema.WeatherstationPropertyQNames;
18 import org.everestWeather.wsdm.samples.x2005.x04.schema.WeatherstationResource;
19 import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.AnyXmlContentsType;
20 import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.GetManageabilityReferencesDocument;
21 import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.GetManageabilityReferencesResponseDocument;
22 import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.MessageContentType;
23 import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.MessageInformationType;
24 import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.RequestProcessingNotificationDocument;
25 import org.oasisOpen.docs.wsdm.x2004.x12.mows.wsdmMows.RequestProcessingStateInformationType;
26 import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart1.ManagementEventDocument;
27 import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart2.StateTransitionType;
28 import org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart2.StateType;
29 import org.xmlsoap.schemas.ws.x2004.x08.addressing.AttributedURI;
30 import org.xmlsoap.schemas.ws.x2004.x08.addressing.EndpointReferenceType;
31 import org.xmlsoap.schemas.ws.x2004.x08.addressing.ReferencePropertiesType;
32
33 import javax.naming.InitialContext;
34 import javax.xml.namespace.QName;
35 import java.util.Calendar;
36
37 /**
38 * This class should be generated ONCE (and not overwritten) to maintain user-added code. If there is a change to the
39 * WSDL, then the generated implemented interfaces (representing the "base" portTypes) will change, thus showing a
40 * compile error to the user.
41 * <p/>
42 * NOTE: This class is generated. However, it will not be overwritten by subsequent calls to the code generator.
43 */
44 public class WeatherStationSoapService
45 extends AbstractWeatherStationSoapService
46 implements WeatherStationSoapCustomOperationsPortType
47 {
48
49 private ResourceContext m_resourceContext;
50
51 /**
52 * Creates a new {@link WeatherStationSoapService } object.
53 *
54 * @param resourceContext DOCUMENT_ME
55 */
56 public WeatherStationSoapService(ResourceContext resourceContext)
57 {
58 m_resourceContext = resourceContext;
59 init();
60 }
61
62 /**
63 * DOCUMENT_ME
64 *
65 * @return DOCUMENT_ME
66 */
67 public ResourceContext getResourceContext()
68 {
69 return m_resourceContext;
70 }
71
72 public GetManageabilityReferencesResponseDocument getManageabilityReferences(GetManageabilityReferencesDocument request)
73 {
74 GetManageabilityReferencesResponseDocument getManageabilityReferencesResponseDocument = GetManageabilityReferencesResponseDocument.Factory.newInstance();
75 GetManageabilityReferencesResponseDocument.GetManageabilityReferencesResponse getManageabilityReferencesResponse = getManageabilityReferencesResponseDocument.addNewGetManageabilityReferencesResponse();
76 QName resourceKeyName = QName.valueOf("{" + WeatherstationPropertyQNames.FCCID.getNamespaceURI() + "}ResourceID");
77 EndpointReferenceType endpointReferenceType = getManageabilityReferencesResponse.addNewManageabilityEndpointReference();
78 AttributedURI attributedURI = endpointReferenceType.addNewAddress();
79 attributedURI.setStringValue(InteropConstants.SERVICES_URL + "/" + InteropConstants.WEATHERSTATION_SERVICE_NAME);
80 ReferencePropertiesType referencePropertiesType = endpointReferenceType.addNewReferenceProperties();
81 XmlObject key1 = XmlBeanUtils.addChildElement(referencePropertiesType, resourceKeyName);
82 XmlBeanUtils.setValue(key1, InteropConstants.WEATHERSTATION_KEY1);
83
84 EndpointReferenceType endpointReferenceType2 = getManageabilityReferencesResponse.addNewManageabilityEndpointReference();
85 attributedURI = endpointReferenceType2.addNewAddress();
86 attributedURI.setStringValue(InteropConstants.SERVICES_URL + "/" + InteropConstants.WEATHERSTATION_SERVICE_NAME);
87 referencePropertiesType = endpointReferenceType2.addNewReferenceProperties();
88 key1 = XmlBeanUtils.addChildElement(referencePropertiesType, resourceKeyName);
89 XmlBeanUtils.setValue(key1, InteropConstants.WEATHERSTATION_KEY2);
90
91 return getManageabilityReferencesResponseDocument;
92 }
93
94 public org.everest.GetCurrentTemperatureResponseDocument GetCurrentTemperature(org.everest.GetCurrentTemperatureDocument getCurrentTemperatureRequestDoc)
95 {
96 GetCurrentTemperatureResponseDocument getCurrentTemperatureResponseDocument = GetCurrentTemperatureResponseDocument.Factory.newInstance();
97 GetCurrentTemperatureResponseDocument.GetCurrentTemperatureResponse getCurrentTemperatureResponse = getCurrentTemperatureResponseDocument.addNewGetCurrentTemperatureResponse();
98 Double aDouble = new Double(101);
99 getCurrentTemperatureResponse.setGetCurrentTemperatureResult(aDouble.doubleValue());
100
101 try
102 {
103 InitialContext initialContext = new InitialContext();
104 WeatherstationHome home = (WeatherstationHome) initialContext.lookup(WeatherstationHome.HOME_LOCATION);
105 SimpleTypeResourceKey simpleTypeResourceKey = new SimpleTypeResourceKey(new QName(WeatherstationPropertyQNames.FCCID.getNamespaceURI(), "ResourceID"),
106 InteropConstants.WEATHERSTATION_KEY1);
107 WeatherstationResource resource = (WeatherstationResource) home.find(simpleTypeResourceKey);
108 Topic topic = resource.getTopicSpaceSet().getTopicSpace(MowsConstants.NSURI_MOWS_TOPICS).getTopic("RequestProcessingObservations");
109 Calendar currentTime = Calendar.getInstance();
110
111 //RequestProcessingNotification
112 RequestProcessingNotificationDocument notifDocument = RequestProcessingNotificationDocument.Factory.newInstance();
113 RequestProcessingNotificationDocument.RequestProcessingNotification notif = notifDocument.addNewRequestProcessingNotification();
114
115 //request message
116 MessageInformationType requestInformationType = notif.addNewRequest();
117 MessageContentType requestMessage = requestInformationType.addNewMessage();
118 AnyXmlContentsType requestAnyXmlContentsType = requestMessage.addNewXml();
119 XmlBeanUtils.addChildElement(requestAnyXmlContentsType, getCurrentTemperatureRequestDoc);
120
121 //reply message
122 MessageInformationType replyInformationType = notif.addNewReply();
123 MessageContentType replyMessage = replyInformationType.addNewMessage();
124 AnyXmlContentsType replyAnyXmlContentsType = replyMessage.addNewXml();
125 XmlBeanUtils.addChildElement(replyAnyXmlContentsType, getCurrentTemperatureResponseDocument);
126
127 //todo flesh out
128 //StateInformation
129 RequestProcessingStateInformationType requestProcessingStateInformationType = notif.addNewStateInformation();
130 StateTransitionType stateTransitionType = requestProcessingStateInformationType.addNewStateTransition();
131
132 XmlObject currentState = XmlObject.Factory.parse("<tns:temp xmlns:tns=\"http://tempcentral.com/temps\">Cool</tns:temp>");
133
134 StateType enteredState = stateTransitionType.addNewEnteredState();
135 XmlBeanUtils.addChildElement(enteredState, currentState);
136
137 StateType prevState = stateTransitionType.addNewPreviousState();
138 XmlBeanUtils.addChildElement(prevState, currentState);
139
140 stateTransitionType.setTransitionIdentifier("urn:NONE");
141 stateTransitionType.setTime(currentTime);
142 notif.setCurrentTime(currentTime);
143
144 Situation situation = new SituationImpl(new CategoryImpl(MuwsConstants.SITUATION_OTHER));
145 XmlBeansManagementEvent xme = new XmlBeansManagementEvent(situation);
146 ManagementEventDocument mgmtEvent = (ManagementEventDocument) ((XmlObjectWrapper) xme).getXmlObject();
147 org.oasisOpen.docs.wsdm.x2004.x12.muws.wsdmMuwsPart1.ManagementEventType managementEvent = mgmtEvent.getManagementEvent();
148 XmlBeanUtils.addChildElement(managementEvent, notifDocument);
149
150 topic.publish(mgmtEvent);
151 }
152 catch (Exception e)
153 {
154 e.printStackTrace();
155 }
156
157 return getCurrentTemperatureResponseDocument;
158 }
159
160 }