Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
[cosmos-dev] WSDL Console Extension using MEX

Bill

 

Here’s a partial patch for implementing the wsdl console extension using MEX, like we talked about on the last DC call. I think this’ll get you pretty close – you should just need to print the wsdl that’s returned (it’s a W3C element).

 

Cheers,

Joel

 

P.S. I’ve made a few changes to the WSDM binding to make deal with WsResources rather than WSDMBindings – I’ll be checking those in against the WSDL bug, in preparation for handling muse-generated resources. You won’t need them to move this forward, so no need to wait on me.

 

 

 

 

### Eclipse Workspace Patch 1.0

#P org.eclipse.cosmos.dc.common

Index: src/org/eclipse/cosmos/dc/common/ConsoleExtension.java

===================================================================

RCS file: /cvsroot/technology/org.eclipse.cosmos/data-collection/org.eclipse.cosmos.dc.common/src/org/eclipse/cosmos/dc/common/ConsoleExtension.java,v

retrieving revision 1.9

diff -u -r1.9 ConsoleExtension.java

--- src/org/eclipse/cosmos/dc/common/ConsoleExtension.java      30 Aug 2007 01:11:02 -0000      1.9

+++ src/org/eclipse/cosmos/dc/common/ConsoleExtension.java    31 Aug 2007 13:52:59 -0000

@@ -24,7 +24,9 @@

 

 import org.osgi.framework.Bundle;

 import org.osgi.framework.BundleContext;

+import org.osgi.framework.InvalidSyntaxException;

 import org.osgi.framework.ServiceReference;

+import org.w3c.dom.Element;

 import org.eclipse.osgi.framework.console.CommandInterpreter;

 import org.eclipse.osgi.framework.console.CommandProvider;

 import org.eclipse.cosmos.dc.common.api.IDataCollectionContext;

@@ -39,13 +41,23 @@

 import org.eclipse.cosmos.dc.common.spi.OutboundContext;

 import org.eclipse.cosmos.dc.common.spi.RuntimeHost;

 import org.eclipse.cosmos.dc.common.spi.ServiceRegistry;

+import org.eclipse.cosmos.dc.mgmt.binding.Binding;

 import org.eclipse.cosmos.dc.mgmt.common.ContributionManager;

 import org.eclipse.cosmos.dc.runtime.Runtime;

 

+import org.apache.muse.ws.addressing.EndpointReference;

+import org.apache.muse.ws.metadata.remote.MetadataExchangeClient;

+import org.apache.muse.ws.resource.WsResource;

+

+

+

 

 public class ConsoleExtension implements CommandProvider {

 

-           BundleContext context;

+          private BundleContext context;

+          private Binding wsdmBinding = null;

+         

+          private static final String BINDING_FILTER = "(&(objectclass=org.eclipse.cosmos.dc.mgmt.binding.Binding)(Provider=WSDM))";

 

            private static RuntimeHost runtime;

 

@@ -207,6 +219,22 @@

                                                                        System.out.println( "   " + element );

                                                            }

                                                }

+                                  }else if("wsdl".equals(name)){

+                                              EndpointReference epr = null;

+                                              IDataCollectionContext ctx = runtime.getContextForName(name);

+                                              if(wsdmBinding == null) wsdmBinding = getWSDMBinding();

+                                              if(wsdmBinding == null){

+                                                          System.out.println("Unable to resolve metadata");

+                                                          return;

+                                              }

+                                              WsResource resource = (WsResource)wsdmBinding.getBindingForObject(ctx);

+                                              if(resource != null){

+                                                          epr = resource.getEndpointReference();

+                                                          MetadataExchangeClient mex = new MetadataExchangeClient(epr);

+                                                          Element elem = mex.getWSDL();

+                                              } else {

+                                                          System.out.print("resource not found");

+                                              }

                                    }

                        }

            }

@@ -249,5 +277,15 @@

                        return null;

            }

 

+          private Binding getWSDMBinding(){

+                      try {

+                                  ServiceReference[] refs = context.getServiceReferences("org.eclipse.cosmos.dc.mgmt.binding.Binding", BINDING_FILTER);

+                                  if(refs != null && refs.length > 0){

+                                              return (Binding)context.getService(refs[0]);

+                                  }

+                      } catch (InvalidSyntaxException e) {

+                      }

+                      return null;

+          }

 

 }

Index: META-INF/MANIFEST.MF

===================================================================

RCS file: /cvsroot/technology/org.eclipse.cosmos/data-collection/org.eclipse.cosmos.dc.common/META-INF/MANIFEST.MF,v

retrieving revision 1.17

diff -u -r1.17 MANIFEST.MF

--- META-INF/MANIFEST.MF     3 Aug 2007 16:56:55 -0000        1.17

+++ META-INF/MANIFEST.MF   31 Aug 2007 13:52:59 -0000

@@ -29,7 +29,8 @@

  org.eclipse.cosmos.dc.common.spi;version="1.0.0",

  org.eclipse.cosmos.dc.common.spi.descriptor;version="1.0.0",

  org.eclipse.cosmos.dc.runtime;version="1.0.0"

-Require-Bundle: org.eclipse.cosmos.dc.mgmt.common;visibility:=reexport

+Require-Bundle: org.eclipse.cosmos.dc.mgmt.common;visibility:=reexport,

+ org.apache.muse.complete

 Eclipse-LazyStart: true

 Service-Component: META-INF/DCRuntime.xml

 Bundle-ClassPath: .


The contents of this e-mail are intended for the named addressee only. It contains information that may be confidential. Unless you are the named addressee or an authorized designee, you may not copy or use it, or disclose it to anyone else. If you received it in error please notify us immediately and then destroy it.


Back to the top