blob: d2a12dfac42a5f0d93f8a3fcb67a3537aad2a4d2 [file] [log] [blame]
/*
* Copyright 2001-2008 The Apache Software Foundation.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*
*/
using org.apache.juddi.v3.client;
using org.apache.juddi.v3.client.config;
using org.apache.juddi.v3.client.subscription;
using org.apache.juddi.v3.client.transport;
using org.uddi.apiv3;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
namespace org.apache.juddi.client.sample
{
class SubscriptionCallbackExample : ISubscriptionCallback
{
public void HandleCallback(uddi.apiv3.subscriptionResultsList body)
{
Console.Out.WriteLine("HandleCallback received " + body.Item);
}
public void NotifyEndpointStopped()
{
Console.Out.WriteLine("NotifyEndpointStopped, Callback endpoint stopped");
}
public static void Run(string[] args)
{
UDDIClient clerkManager = null;
Transport transport = null;
UDDIClerk clerk = null;
try
{
clerkManager = new UDDIClient("uddi.xml");
transport = clerkManager.getTransport("default_non_root");
UDDI_Security_SoapBinding security = transport.getUDDISecurityService();
UDDI_Inquiry_SoapBinding inquiry = transport.getUDDIInquiryService();
UDDI_Publication_SoapBinding publish = transport.getUDDIPublishService();
clerk = clerkManager.getClerk("default_non_root");
//this part just confirms that the keydomain exists for our new service and binding template
String keydomain = null;
if (clerkManager.getClientConfig().getConfiguration() != null &&
clerkManager.getClientConfig().getConfiguration().client != null &&
clerkManager.getClientConfig().getConfiguration().client.subscriptionCallbacks != null &&
clerkManager.getClientConfig().getConfiguration().client.subscriptionCallbacks.keyDomain != null)
keydomain = clerkManager.getClientConfig().getConfiguration().client.subscriptionCallbacks.keyDomain;
else
keydomain = "uddi:org.apache.demos";
tModel createKeyGenator = UDDIClerk.createKeyGenator(keydomain + ":keygenerator", "Test domain", "en");
clerk.register(createKeyGenator);
//we'll also create a business and a service here so that we can hook in our callback endpoint
businessEntity be = new businessEntity();
be.businessKey = keydomain + ":coolbizexample";
be.name = new name[] { new name("Coolbiz Inc", "en") };
be.businessServices = new businessService[] { new businessService() };
be.businessServices[0].businessKey = keydomain + ":coolbizexample";
be.businessServices[0].serviceKey = keydomain + ":coolbizexample-service";
be.businessServices[0].name = new name[] { new name("Coolbiz Service", "en") };
clerk.register(be);
bindingTemplate start = SubscriptionCallbackListener.start(clerkManager, "default_non_root");
Console.WriteLine("Started and waiting for inbound traffic");
//bkeep alive
DateTime stop = DateTime.Now.Add(new TimeSpan(0, 0, 10));
while (DateTime.Now < stop)
{
Thread.Sleep(1000);
}
Console.WriteLine("Stopping");
SubscriptionCallbackListener.stop(clerkManager, "default_non_root", start.bindingKey);
//get rid of it once we're done
clerk.unRegisterBusiness(keydomain + ":coolbizexample");
clerk.unRegisterTModel(createKeyGenator.tModelKey);
}
catch (Exception ex)
{
while (ex != null)
{
System.Console.WriteLine("Error! " + ex.Message);
ex = ex.InnerException;
}
}
finally
{
if (transport != null && transport is IDisposable)
{
((IDisposable)transport).Dispose();
}
if (clerk != null)
clerk.Dispose();
}
}
}
}