summaryrefslogtreecommitdiffstats
path: root/sca-cpp/trunk/runtime/extensions/sca
diff options
context:
space:
mode:
Diffstat (limited to 'sca-cpp/trunk/runtime/extensions/sca')
-rw-r--r--sca-cpp/trunk/runtime/extensions/sca/Makefile.am23
-rw-r--r--sca-cpp/trunk/runtime/extensions/sca/reference/Makefile.am18
-rw-r--r--sca-cpp/trunk/runtime/extensions/sca/reference/src/Makefile.am42
-rw-r--r--sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/SCAServiceBindingExtension.cpp103
-rw-r--r--sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/SCAServiceBindingExtension.h77
-rw-r--r--sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/model/SCAServiceBinding.cpp59
-rw-r--r--sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/model/SCAServiceBinding.h76
-rw-r--r--sca-cpp/trunk/runtime/extensions/sca/service/Makefile.am18
-rw-r--r--sca-cpp/trunk/runtime/extensions/sca/service/src/Makefile.am42
-rw-r--r--sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/SCAReferenceBindingExtension.cpp103
-rw-r--r--sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/SCAReferenceBindingExtension.h77
-rw-r--r--sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/model/SCAReferenceBinding.cpp66
-rw-r--r--sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/model/SCAReferenceBinding.h85
-rw-r--r--sca-cpp/trunk/runtime/extensions/sca/xsd/sca-binding-sca.xsd39
14 files changed, 828 insertions, 0 deletions
diff --git a/sca-cpp/trunk/runtime/extensions/sca/Makefile.am b/sca-cpp/trunk/runtime/extensions/sca/Makefile.am
new file mode 100644
index 0000000000..50dfb45557
--- /dev/null
+++ b/sca-cpp/trunk/runtime/extensions/sca/Makefile.am
@@ -0,0 +1,23 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF 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.
+
+SUBDIRS = reference service
+datadir=$(prefix)/extensions/sca
+
+nobase_data_DATA = xsd/*.xsd
+
+EXTRA_DIST = xsd
diff --git a/sca-cpp/trunk/runtime/extensions/sca/reference/Makefile.am b/sca-cpp/trunk/runtime/extensions/sca/reference/Makefile.am
new file mode 100644
index 0000000000..2b9491ec1c
--- /dev/null
+++ b/sca-cpp/trunk/runtime/extensions/sca/reference/Makefile.am
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF 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.
+
+SUBDIRS = src
diff --git a/sca-cpp/trunk/runtime/extensions/sca/reference/src/Makefile.am b/sca-cpp/trunk/runtime/extensions/sca/reference/src/Makefile.am
new file mode 100644
index 0000000000..d5fdf775ca
--- /dev/null
+++ b/sca-cpp/trunk/runtime/extensions/sca/reference/src/Makefile.am
@@ -0,0 +1,42 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF 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.
+
+libdir=$(prefix)/extensions/sca/reference/lib
+lib_LTLIBRARIES = libtuscany_sca_binding_reference.la
+
+noinst_HEADERS = \
+tuscany/sca/binding/*.h \
+tuscany/sca/binding/model/*.h
+
+libtuscany_sca_binding_reference_la_SOURCES = \
+tuscany/sca/binding/SCAServiceBindingExtension.cpp \
+tuscany/sca/binding/model/SCAServiceBinding.cpp
+
+libtuscany_sca_binding_reference_la_LIBADD = \
+ -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo -ltuscany_sdo_axiom \
+ -L$(top_builddir)/runtime/core/src -ltuscany_sca
+
+INCLUDES = -I$(top_builddir)/runtime/core/src \
+ -I${TUSCANY_SDOCPP}/include
+
+moduledir=$(prefix)/extensions/sca/reference/module
+extension = libtuscany_sca_binding_reference$(libsuffix)
+
+install-exec-hook:
+ test -z $(moduledir) || $(mkdir_p) $(moduledir);
+ -rm -f $(moduledir)/$(extension)
+ $(LN_S) $(libdir)/$(extension) $(moduledir)/$(extension)
diff --git a/sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/SCAServiceBindingExtension.cpp b/sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/SCAServiceBindingExtension.cpp
new file mode 100644
index 0000000000..7d70f595cc
--- /dev/null
+++ b/sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/SCAServiceBindingExtension.cpp
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "SCAServiceBindingExtension.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/core/Exceptions.h"
+
+using namespace std;
+using namespace commonj::sdo;
+using namespace tuscany::sca::model;
+
+extern "C"
+{
+#if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+#endif
+ void tuscany_sca_binding_reference_initialize()
+ {
+ tuscany::sca::binding::SCAServiceBindingExtension::initialize();
+ }
+}
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+ // ===================================================================
+ // Constructor for the SCAServiceBinding class.
+ // ===================================================================
+ SCAServiceBindingExtension::SCAServiceBindingExtension()
+ {
+ logentry();
+ }
+
+ // ===================================================================
+ // Destructor for the SCAServiceBindingExtension class.
+ // ===================================================================
+ SCAServiceBindingExtension::~SCAServiceBindingExtension()
+ {
+ logentry();
+ }
+
+ const string SCAServiceBindingExtension::extensionName("sca");
+ const string SCAServiceBindingExtension::typeQName("http://www.osoa.org/xmlns/sca/1.0#SCABinding");
+
+
+ // ===================================================================
+ // loadModelElement - load the info from binding.ws
+ // ===================================================================
+ ServiceBinding* SCAServiceBindingExtension::getServiceBinding(Composite *composite, Service* service, DataObjectPtr scdlBinding)
+ {
+ logentry();
+
+ SCARuntime* runtime = SCARuntime::getCurrentRuntime();
+
+ ServiceBindingExtension* bindingExtension = NULL; // runtime->getServiceBindingExtension("http://www.osoa.org/xmlns/sca/1.0#RESTBinding");
+ if (bindingExtension == NULL)
+ {
+ bindingExtension = runtime->getServiceBindingExtension("http://www.osoa.org/xmlns/sca/1.0#WebServiceBinding");
+ if (bindingExtension == NULL)
+ {
+ logerror("SCA default binding requires the REST or WS binding to be available");
+
+ string message = "SCA default binding requires the REST or WS binding to be available";
+ throwException(SystemConfigurationException, message.c_str());
+ }
+ }
+
+ return bindingExtension->getServiceBinding(composite, service, scdlBinding);
+ }
+
+ void SCAServiceBindingExtension::initialize()
+ {
+ logentry();
+ SCARuntime::getCurrentRuntime()->registerServiceBindingExtension(new SCAServiceBindingExtension());
+ }
+
+ } // End namespace ws
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/SCAServiceBindingExtension.h b/sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/SCAServiceBindingExtension.h
new file mode 100644
index 0000000000..389541061a
--- /dev/null
+++ b/sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/SCAServiceBindingExtension.h
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_binding_scaservicebindingextension_h
+#define tuscany_sca_extension_binding_scaservicebindingextension_h
+
+#include "tuscany/sca/extension/ServiceBindingExtension.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+
+ class SCAServiceBindingExtension : public ServiceBindingExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ SCAServiceBindingExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~SCAServiceBindingExtension();
+
+ /**
+ * return the name of the extension
+ */
+ virtual const std::string& getExtensionName() {return extensionName;}
+
+ /**
+ * return the QName of schema elemant for this implementation extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#binding.ws")
+ */
+ virtual const std::string& getExtensionTypeQName() {return typeQName;}
+
+ virtual tuscany::sca::model::ServiceBinding* getServiceBinding(
+ tuscany::sca::model::Composite* composite,
+ tuscany::sca::model::Service* service,
+ commonj::sdo::DataObjectPtr scdlBinding);
+
+ static void initialize();
+
+ private:
+ static const std::string extensionName;
+ static const std::string typeQName;
+
+ };
+
+
+ } // End namespace binding
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif //tuscany_sca_extension_binding_scaservicebindingextension_h
+
diff --git a/sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/model/SCAServiceBinding.cpp b/sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/model/SCAServiceBinding.cpp
new file mode 100644
index 0000000000..3b5564a765
--- /dev/null
+++ b/sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/model/SCAServiceBinding.cpp
@@ -0,0 +1,59 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/core/Exceptions.h"
+#include "tuscany/sca/binding/model/SCAServiceBinding.h"
+#include "tuscany/sca/core/ServiceWrapper.h"
+
+using namespace std;
+using namespace commonj::sdo;
+using namespace tuscany::sca;
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+
+ // Constructor
+ SCAServiceBinding::SCAServiceBinding(Composite* composite, Service* service, const string& uri, DataObjectPtr scdlBinding)
+ : ServiceBinding(service, uri)
+ {
+ }
+
+ // Destructor
+ SCAServiceBinding::~SCAServiceBinding()
+ {
+ }
+
+ ServiceWrapper* SCAServiceBinding::getServiceWrapper()
+ {
+ logentry();
+
+ throwException(SystemConfigurationException, "Not supported");
+ }
+
+ } // End namespace binding
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/model/SCAServiceBinding.h b/sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/model/SCAServiceBinding.h
new file mode 100644
index 0000000000..d73a10f202
--- /dev/null
+++ b/sca-cpp/trunk/runtime/extensions/sca/reference/src/tuscany/sca/binding/model/SCAServiceBinding.h
@@ -0,0 +1,76 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_binding_model_scaservicebinding_h
+#define tuscany_sca_extension_binding_model_scaservicebinding_h
+
+#include <string>
+
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/model/ServiceBinding.h"
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/Service.h"
+
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+ /**
+ * Information about an SCA service binding for service or a reference.
+ */
+ class SCAServiceBinding : public tuscany::sca::model::ServiceBinding
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param uri The uri of the binding.
+ */
+ SCAServiceBinding(tuscany::sca::model::Composite* composite, tuscany::sca::model::Service* service, const std::string& uri, commonj::sdo::DataObjectPtr scdlBinding);
+
+ /**
+ * Destructor.
+ */
+ virtual ~SCAServiceBinding();
+
+ /**
+ * Returns the type of binding.
+ */
+ virtual std::string getType() { return "http://www.osoa.org/xmlns/sca/1.0#SCABinding"; };
+
+ /**
+ * Create a service wrapper handling the interaction
+ * with the service configured with this binding.
+ */
+ virtual tuscany::sca::ServiceWrapper* getServiceWrapper();
+
+ private:
+
+ };
+
+ } // End namespace model
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_extension_ws_model_wsservicebinding_h
diff --git a/sca-cpp/trunk/runtime/extensions/sca/service/Makefile.am b/sca-cpp/trunk/runtime/extensions/sca/service/Makefile.am
new file mode 100644
index 0000000000..2b9491ec1c
--- /dev/null
+++ b/sca-cpp/trunk/runtime/extensions/sca/service/Makefile.am
@@ -0,0 +1,18 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF 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.
+
+SUBDIRS = src
diff --git a/sca-cpp/trunk/runtime/extensions/sca/service/src/Makefile.am b/sca-cpp/trunk/runtime/extensions/sca/service/src/Makefile.am
new file mode 100644
index 0000000000..1136dba677
--- /dev/null
+++ b/sca-cpp/trunk/runtime/extensions/sca/service/src/Makefile.am
@@ -0,0 +1,42 @@
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements. See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership. The ASF 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.
+
+libdir=$(prefix)/extensions/sca/service/lib
+lib_LTLIBRARIES = libtuscany_sca_binding_service.la
+
+noinst_HEADERS = \
+tuscany/sca/binding/*.h \
+tuscany/sca/binding/model/*.h
+
+libtuscany_sca_binding_service_la_SOURCES = \
+tuscany/sca/binding/SCAReferenceBindingExtension.cpp \
+tuscany/sca/binding/model/SCAReferenceBinding.cpp
+
+libtuscany_sca_binding_service_la_LIBADD = \
+ -L${TUSCANY_SDOCPP}/lib -ltuscany_sdo -ltuscany_sdo_axiom \
+ -L$(top_builddir)/runtime/core/src -ltuscany_sca
+
+INCLUDES = -I$(top_builddir)/runtime/core/src \
+ -I${TUSCANY_SDOCPP}/include
+
+moduledir=$(prefix)/extensions/sca/service/module
+extension = libtuscany_sca_binding_service$(libsuffix)
+
+install-exec-hook:
+ test -z $(moduledir) || $(mkdir_p) $(moduledir);
+ -rm -f $(moduledir)/$(extension)
+ $(LN_S) $(libdir)/$(extension) $(moduledir)/$(extension)
diff --git a/sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/SCAReferenceBindingExtension.cpp b/sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/SCAReferenceBindingExtension.cpp
new file mode 100644
index 0000000000..789d8794df
--- /dev/null
+++ b/sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/SCAReferenceBindingExtension.cpp
@@ -0,0 +1,103 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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.
+ */
+
+/* $Rev$ $Date$ */
+
+
+#include "SCAReferenceBindingExtension.h"
+#include "model/SCAReferenceBinding.h"
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/util/Utils.h"
+#include "tuscany/sca/core/SCARuntime.h"
+#include "tuscany/sca/core/Exceptions.h"
+
+using namespace std;
+using namespace commonj::sdo;
+using namespace tuscany::sca::model;
+
+extern "C"
+{
+#if defined(WIN32) || defined(_WINDOWS)
+ __declspec(dllexport)
+#endif
+ void tuscany_sca_binding_service_initialize()
+ {
+ tuscany::sca::binding::SCAReferenceBindingExtension::initialize();
+ }
+}
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+ // ===================================================================
+ // Constructor for the SCAReferenceBinding class.
+ // ===================================================================
+ SCAReferenceBindingExtension::SCAReferenceBindingExtension()
+ {
+ logentry();
+ }
+
+ // ===================================================================
+ // Destructor for the SCAReferenceBindingExtension class.
+ // ===================================================================
+ SCAReferenceBindingExtension::~SCAReferenceBindingExtension()
+ {
+ logentry();
+ }
+
+ const string SCAReferenceBindingExtension::extensionName("sca");
+ const string SCAReferenceBindingExtension::typeQName("http://www.osoa.org/xmlns/sca/1.0#SCABinding");
+
+ // ===================================================================
+ // loadModelElement - load the info from binding.ws
+ // ===================================================================
+ ReferenceBinding* SCAReferenceBindingExtension::getReferenceBinding(Composite *composite, Reference* reference, DataObjectPtr scdlBinding)
+ {
+ logentry();
+
+ SCARuntime* runtime = SCARuntime::getCurrentRuntime();
+
+ ReferenceBindingExtension* bindingExtension = NULL; // runtime->getReferenceBindingExtension("http://www.osoa.org/xmlns/sca/1.0#RESTBinding");
+ if (bindingExtension == NULL)
+ {
+ bindingExtension = runtime->getReferenceBindingExtension("http://www.osoa.org/xmlns/sca/1.0#WebServiceBinding");
+ if (bindingExtension == NULL)
+ {
+ logerror("SCA default binding requires the REST or WS binding to be available");
+
+ string message = "SCA default binding requires the REST or WS binding to be available";
+ throwException(SystemConfigurationException, message.c_str());
+ }
+ }
+
+ return bindingExtension->getReferenceBinding(composite, reference, scdlBinding);
+ }
+
+ void SCAReferenceBindingExtension::initialize()
+ {
+ logentry();
+ SCARuntime::getCurrentRuntime()->registerReferenceBindingExtension(new SCAReferenceBindingExtension());
+ }
+
+ } // End namespace binding
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/SCAReferenceBindingExtension.h b/sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/SCAReferenceBindingExtension.h
new file mode 100644
index 0000000000..8cde2fbef4
--- /dev/null
+++ b/sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/SCAReferenceBindingExtension.h
@@ -0,0 +1,77 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_binding_scareferencebindingextension_h
+#define tuscany_sca_extension_binding_scareferencebindingextension_h
+
+#include "tuscany/sca/extension/ReferenceBindingExtension.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+
+ class SCAReferenceBindingExtension : public ReferenceBindingExtension
+ {
+ public:
+ /**
+ * Default constructor
+ */
+ SCAReferenceBindingExtension();
+
+ /**
+ * Destructor
+ */
+ virtual ~SCAReferenceBindingExtension();
+
+ /**
+ * return the name of the extension
+ */
+ virtual const std::string& getExtensionName() {return extensionName;}
+
+ /**
+ * return the QName of schema elemant for this implementation extension
+ * (e.g. "http://www.osoa.org/xmlns/sca/1.0#binding.ws")
+ */
+ virtual const std::string& getExtensionTypeQName() {return typeQName;}
+
+ virtual tuscany::sca::model::ReferenceBinding* getReferenceBinding(
+ tuscany::sca::model::Composite* composite,
+ tuscany::sca::model::Reference *reference,
+ commonj::sdo::DataObjectPtr scdlBinding);
+
+ static void initialize();
+
+ private:
+ static const std::string extensionName;
+ static const std::string typeQName;
+
+ };
+
+
+ } // End namespace binding
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_extension_binding_scareferencebindingextension_h
+
diff --git a/sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/model/SCAReferenceBinding.cpp b/sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/model/SCAReferenceBinding.cpp
new file mode 100644
index 0000000000..b8eaaaa1f9
--- /dev/null
+++ b/sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/model/SCAReferenceBinding.cpp
@@ -0,0 +1,66 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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.
+ */
+
+/* $Rev$ $Date$ */
+
+#include "tuscany/sca/util/Logging.h"
+#include "tuscany/sca/core/Exceptions.h"
+#include "tuscany/sca/binding/model/SCAReferenceBinding.h"
+#include "tuscany/sca/core/ServiceProxy.h"
+
+using namespace std;
+using namespace commonj::sdo;
+using namespace tuscany::sca::model;
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+
+ // Constructor
+ SCAReferenceBinding::SCAReferenceBinding(Composite* composite, Reference* reference, const string& uri, DataObjectPtr scdlBinding)
+ : ReferenceBinding(reference, uri)
+ {
+ }
+
+ // Destructor
+ SCAReferenceBinding::~SCAReferenceBinding()
+ {
+ }
+
+ ServiceProxy* SCAReferenceBinding::getServiceProxy()
+ {
+ throwException(SystemConfigurationException, "Not supported");
+ }
+
+ void SCAReferenceBinding::configure(ServiceBinding* serviceBinding)
+ {
+ throwException(SystemConfigurationException, "Not supported");
+ }
+
+ void SCAReferenceBinding::configure(const std::string& uri)
+ {
+ throwException(SystemConfigurationException, "Not supported");
+ }
+
+ } // End namespace binding
+ } // End namespace sca
+} // End namespace tuscany
diff --git a/sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/model/SCAReferenceBinding.h b/sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/model/SCAReferenceBinding.h
new file mode 100644
index 0000000000..f3e699e2ee
--- /dev/null
+++ b/sca-cpp/trunk/runtime/extensions/sca/service/src/tuscany/sca/binding/model/SCAReferenceBinding.h
@@ -0,0 +1,85 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF 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.
+ */
+
+/* $Rev$ $Date$ */
+
+#ifndef tuscany_sca_extension_binding_model_scareferencebinding_h
+#define tuscany_sca_extension_binding_model_scareferencebinding_h
+
+#include <string>
+
+#include "tuscany/sca/model/Composite.h"
+#include "tuscany/sca/model/ReferenceBinding.h"
+#include "tuscany/sca/model/ServiceBinding.h"
+#include "tuscany/sca/core/ServiceProxy.h"
+
+namespace tuscany
+{
+ namespace sca
+ {
+ namespace binding
+ {
+ /**
+ * Information about a web service binding for service or a reference.
+ */
+ class SCAReferenceBinding : public tuscany::sca::model::ReferenceBinding
+ {
+ public:
+
+ /**
+ * Constructor.
+ * @param uri The uri of the binding.
+ */
+ SCAReferenceBinding(tuscany::sca::model::Composite* composite, tuscany::sca::model::Reference* reference, const std::string&uri, commonj::sdo::DataObjectPtr scdlBinding);
+
+ /**
+ * Destructor.
+ */
+ virtual ~SCAReferenceBinding();
+
+ /**
+ * Returns the type of binding.
+ */
+ virtual std::string getType() { return "http://www.osoa.org/xmlns/sca/1.0#SCABinding"; };
+
+ /**
+ * Create a proxy representing the reference to the
+ * client component.
+ */
+ virtual tuscany::sca::ServiceProxy* getServiceProxy();
+
+ /**
+ * Configure this binding from a service binding.
+ */
+ virtual void configure(tuscany::sca::model::ServiceBinding* serviceBinding);
+
+ /**
+ * Configure this binding from a URI.
+ */
+ virtual void configure(const std::string& uri);
+
+ private:
+
+ };
+
+ } // End namespace binding
+ } // End namespace sca
+} // End namespace tuscany
+
+#endif // tuscany_sca_extension_binding_model_scareferencebinding_h
diff --git a/sca-cpp/trunk/runtime/extensions/sca/xsd/sca-binding-sca.xsd b/sca-cpp/trunk/runtime/extensions/sca/xsd/sca-binding-sca.xsd
new file mode 100644
index 0000000000..6ec18bd992
--- /dev/null
+++ b/sca-cpp/trunk/runtime/extensions/sca/xsd/sca-binding-sca.xsd
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one
+ or more contributor license agreements. See the NOTICE file
+ distributed with this work for additional information
+ regarding copyright ownership. The ASF 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.
+-->
+
+<schema xmlns="http://www.w3.org/2001/XMLSchema"
+ targetNamespace="http://www.osoa.org/xmlns/sca/1.0"
+ xmlns:sca="http://www.osoa.org/xmlns/sca/1.0"
+ elementFormDefault="qualified">
+
+ <include schemaLocation="../../../xsd/sca-core.xsd"/>
+
+ <element name="binding.sca" type="sca:SCABinding" substitutionGroup="sca:binding"/>
+ <complexType name="SCABinding">
+ <complexContent>
+ <extension base="sca:Binding">
+ <sequence>
+ <any namespace="##other" processContents="lax" minOccurs="0" maxOccurs="unbounded" />
+ </sequence>
+ <anyAttribute namespace="##any" processContents="lax" />
+ </extension>
+ </complexContent>
+ </complexType>
+</schema>