You are viewing a plain text version of this content. The canonical link for it is here.
Posted to java-dev@axis.apache.org by sa...@apache.org on 2005/11/07 06:37:37 UTC
svn commit: r331213 -
/webservices/axis2/trunk/c/modules/core/handlers/src/axis2_handler.c
Author: samisa
Date: Sun Nov 6 21:37:33 2005
New Revision: 331213
URL: http://svn.apache.org/viewcvs?rev=331213&view=rev
Log:
More changes to handler
Modified:
webservices/axis2/trunk/c/modules/core/handlers/src/axis2_handler.c
Modified: webservices/axis2/trunk/c/modules/core/handlers/src/axis2_handler.c
URL: http://svn.apache.org/viewcvs/webservices/axis2/trunk/c/modules/core/handlers/src/axis2_handler.c?rev=331213&r1=331212&r2=331213&view=diff
==============================================================================
--- webservices/axis2/trunk/c/modules/core/handlers/src/axis2_handler.c (original)
+++ webservices/axis2/trunk/c/modules/core/handlers/src/axis2_handler.c Sun Nov 6 21:37:33 2005
@@ -0,0 +1,126 @@
+/*
+ * Copyright 2004,2005 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.
+ */
+
+#include <axis2_handler.h>
+#include <axis2_handler_desc.h>
+
+typedef struct axis2_handler_impl
+{
+ /** Handler struct */
+ axis2_handler_t handler;
+ /** Handler description. This is a referance, hence a shallow copy. */
+ axis2_handler_desc_t *handler_desc;
+} axis2_handler_impl_t;
+
+/** Interface to implementation conversion macro */
+#define AXIS2_INTF_TO_IMPL(handler) ((axis2_handler_impl_t *)handler)
+
+axis2_handler_t* AXIS2_CALL axis2_handler_create(axis2_env_t **env);
+{
+ axis2_handler_impl_t *handler_impl = NULL;
+
+ AXIS2_ENV_CHECK(env, NULL);
+
+ handler_impl = AXIS2_MALLOC( (*env)->allocator, sizeof(axis2_handler_impl_t) );
+ if (!handler_impl)
+ {
+ AXIS2_ERROR_SET_ERROR_NUMBER((*env)->error, AXIS2_ERROR_NO_MEMORY);
+ AXIS2_ERROR_SET_STATUS_CODE((*env)->error, AXIS2_FAILURE);
+ return NULL;
+ }
+
+ handler_impl->handler_desc = NULL;
+
+ /* initialize operations */
+ handler_impl->handler.ops = NULL;
+ handler_impl->handler.ops = AXIS2_MALLOC( (*env)->allocator, sizeof(axis2_handler_ops_t) );
+ if (!handler_impl->handler.ops)
+ {
+ AXIS2_ERROR_SET_ERROR_NUMBER((*env)->error, AXIS2_ERROR_NO_MEMORY);
+ AXIS2_ERROR_SET_STATUS_CODE((*env)->error, AXIS2_FAILURE);
+ axis2_handler_free(&(handler_impl->handler));
+ return NULL;
+ }
+
+ handler_impl->handler.ops->get_name = axis2_handler_get_name;
+
+ return &(handler_impl->handler);
+}
+
+axis2_status_t AXIS2_CALL
+axis2_handler_free (struct axis2_handler * handler,
+ axis2_env_t **env)
+{
+ AXIS2_FUNC_PARAMETER_CHECK(handler, env, AXIS2_FAILURE);
+ if (handler->ops)
+ {
+ AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(handler)->handler.ops);
+ AXIS2_INTF_TO_IMPL(handler)->handler.ops = NULL;
+ }
+
+ AXIS2_FREE((*env)->allocator, AXIS2_INTF_TO_IMPL(handler));
+ AXIS2_INTF_TO_IMPL(handler) = NULL;
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_qname_t* AXIS2_CALL
+axis2_handler_get_name(struct axis2_handler * handler,
+ axis2_env_t **env)
+{
+ AXIS2_FUNC_PARAMETER_CHECK(handler, env, NULL);
+
+ if (!(AXIS2_INTF_TO_IMPL(handler)->handler_desc))
+ return NULL;
+
+ return AXIS2_HANDLER_DESC_GET_NAME(AXIS2_INTF_TO_IMPL(handler)->handler_desc);
+}
+
+axis2_status_t AXIS2_CALL axis2_handler_invoke (struct axis2_handler * handler,
+ axis2_env_t **env,
+ struct axis2_msg_ctx *msg_ctx)
+{
+ /**TODO invoke has to be implemented by an implementing handler */
+}
+
+axis2_parameter_t* AXIS2_CALL axis2_handler_get_parameter (struct axis2_handler * handler,
+ axis2_env_t **env,
+ axis2_char_t *name)
+{
+ AXIS2_FUNC_PARAMETER_CHECK(handler, env, NULL);
+
+ if (!(AXIS2_INTF_TO_IMPL(handler)->handler_desc))
+ return NULL;
+
+ return AXIS2_HANDLER_DESC_GET_PARAMETER(AXIS2_INTF_TO_IMPL(handler)->handler_desc, name);
+}
+
+axis2_status_t AXIS2_CALL axis2_handler_init (struct axis2_handler * handler,
+ axis2_env_t **env,
+ struct axis2_handler_description *handler_desc)
+{
+ AXIS2_FUNC_PARAMETER_CHECK(handler, env, AXIS2_FAILURE);
+ AXIS2_INTF_TO_IMPL(handler)->handler_desc = handler_desc;
+
+ return AXIS2_SUCCESS;
+}
+
+axis2_handler_description_t* (AXIS2_CALL * get_handler_desc) (struct axis2_handler * handler,
+ axis2_env_t **env)
+{
+ AXIS2_FUNC_PARAMETER_CHECK(handler, env, NULL);
+ return AXIS2_INTF_TO_IMPL(handler)->handler_desc;
+}