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 ma...@apache.org on 2008/06/18 14:01:28 UTC
svn commit: r669142 - in /webservices/axis2/branches/c/post_1_4_mtom/c: ./
axiom/include/ axiom/src/attachments/ axiom/src/om/ src/core/description/
src/core/engine/ src/core/transport/http/sender/ util/include/ util/src/
Author: manjula
Date: Wed Jun 18 05:01:27 2008
New Revision: 669142
URL: http://svn.apache.org/viewvc?rev=669142&view=rev
Log:
Adding latest changes.
Added:
webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_mime_output.h
Removed:
webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/axiom_mime_output.h
Modified:
webservices/axis2/branches/c/post_1_4_mtom/c/ (props changed)
webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_output.h
webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/Makefile.am
webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/data_handler.c
webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_body_part.c
webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_output.c
webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/om/om_output.c
webservices/axis2/branches/c/post_1_4_mtom/c/src/core/description/ (props changed)
webservices/axis2/branches/c/post_1_4_mtom/c/src/core/engine/ (props changed)
webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/sender/ (props changed)
webservices/axis2/branches/c/post_1_4_mtom/c/util/include/axutil_utils.h
webservices/axis2/branches/c/post_1_4_mtom/c/util/src/ (props changed)
webservices/axis2/branches/c/post_1_4_mtom/c/util/src/utils.c
Propchange: webservices/axis2/branches/c/post_1_4_mtom/c/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jun 18 05:01:27 2008
@@ -0,0 +1 @@
+.build.sh.swp
Added: webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_mime_output.h
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_mime_output.h?rev=669142&view=auto
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_mime_output.h (added)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_mime_output.h Wed Jun 18 05:01:27 2008
@@ -0,0 +1,123 @@
+/*
+ * 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.
+ */
+
+#ifndef AXIOM_MIME_OUTPUT_H
+#define AXIOM_MIME_OUTPUT_H
+
+/**
+ * @file axiom_mime_output.h
+ * @brief axis2 mime_output interface
+ */
+
+#include <axutil_utils.h>
+#include <axutil_error.h>
+#include <axutil_utils_defines.h>
+#include <axutil_env.h>
+#include <axutil_allocator.h>
+#include <axutil_string.h>
+#include <axutil_array_list.h>
+
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+
+ typedef char axiom_mime_output_t; /*this can be void. But in windows, we are getting a compilation error*/
+
+ /** @defgroup axiom_mime_output Flow
+ * @ingroup axiom_mime_output
+ * @{
+ */
+
+ typedef struct axiom_mime_output_part_t axiom_mime_output_part_t;
+
+
+ typedef enum axiom_mime_output_part_type_t
+ {
+
+ /** Char buffer */
+ AXIOM_MIME_OUTPUT_PART_BUFFER = 0,
+
+ /* A file */
+ AXIOM_MIME_OUTPUT_PART_FILE,
+
+ /* unknown type*/
+ AXIOM_MIME_OUTPUT_PART_UNKNOWN
+
+ } axiom_mime_output_part_type_t;
+
+ struct axiom_mime_output_part_t
+ {
+ axis2_byte_t *part;
+ axis2_char_t *file_name;
+ int part_size;
+ axiom_mime_output_part_type_t type;
+ };
+
+ AXIS2_EXTERN const axis2_char_t *AXIS2_CALL
+ axiom_mime_output_get_content_type_for_mime(
+ axiom_mime_output_t * mime_output,
+ const axutil_env_t * env,
+ axis2_char_t * boundary,
+ axis2_char_t * content_id,
+ axis2_char_t * char_set_encoding,
+ const axis2_char_t * soap_content_type);
+
+ /** Deallocate memory
+ * @return status code
+ */
+ AXIS2_EXTERN void AXIS2_CALL
+ axiom_mime_output_free(
+ axiom_mime_output_t * mime_output,
+ const axutil_env_t * env);
+
+ /**
+ * Creates mime_output struct
+ * @return pointer to newly created mime_output
+ */
+ AXIS2_EXTERN axiom_mime_output_t *AXIS2_CALL
+ axiom_mime_output_create(
+ const axutil_env_t * env);
+
+ /**
+ * Creates mime_output part struct
+ * @return pointer to newly created mime_output_part
+ */
+
+ AXIS2_EXTERN axiom_mime_output_part_t *AXIS2_CALL
+ axiom_mime_output_part_create(
+ const axutil_env_t *env);
+
+ AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
+ axiom_mime_output_create_part_list(
+ axiom_mime_output_t *mime_output,
+ const axutil_env_t *env,
+ axis2_char_t *soap_body,
+ axutil_array_list_t *binary_node_list,
+ axis2_char_t *boundary,
+ axis2_char_t *content_id,
+ axis2_char_t *char_set_encoding,
+ const axis2_char_t *soap_content_type);
+
+
+
+ /** @} */
+
+#ifdef __cplusplus
+}
+#endif
+#endif /* AXIOM_MIME_OUTPUT_H */
Modified: webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_output.h
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_output.h?rev=669142&r1=669141&r2=669142&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_output.h (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/axiom/include/axiom_output.h Wed Jun 18 05:01:27 2008
@@ -236,9 +236,7 @@
AXIS2_EXTERN axis2_byte_t *AXIS2_CALL
axiom_output_flush(
axiom_output_t * om_output,
- const axutil_env_t * env,
- axis2_byte_t ** output_stream,
- int *output_stream_size);
+ const axutil_env_t * env);
/** @} */
Modified: webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/Makefile.am
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/Makefile.am?rev=669142&r1=669141&r2=669142&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/Makefile.am (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/Makefile.am Wed Jun 18 05:01:27 2008
@@ -11,5 +11,5 @@
-I$(top_builddir)/parser \
-I ../../../util/include
-EXTRA_DIST = axiom_mime_body_part.h axiom_mime_output.h
+EXTRA_DIST = axiom_mime_body_part.h
Modified: webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/data_handler.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/data_handler.c?rev=669142&r1=669141&r2=669142&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/data_handler.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/data_handler.c Wed Jun 18 05:01:27 2008
@@ -18,7 +18,7 @@
#include <axiom_data_handler.h>
#include <stdio.h>
#include <sys/stat.h>
-#include "axiom_mime_output.h"
+#include <axiom_mime_output.h>
struct axiom_data_handler
{
Modified: webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_body_part.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_body_part.c?rev=669142&r1=669141&r2=669142&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_body_part.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_body_part.c Wed Jun 18 05:01:27 2008
@@ -16,7 +16,7 @@
*/
#include "axiom_mime_body_part.h"
-#include "axiom_mime_output.h"
+#include <axiom_mime_output.h>
#include <axiom_data_handler.h>
#include <axutil_hash.h>
Modified: webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_output.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_output.c?rev=669142&r1=669141&r2=669142&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_output.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/attachments/mime_output.c Wed Jun 18 05:01:27 2008
@@ -15,7 +15,7 @@
* limitations under the License.
*/
-#include "axiom_mime_output.h"
+#include <axiom_mime_output.h>
#include <axiom_data_handler.h>
#include "axiom_mime_body_part.h"
#include <axutil_string.h>
Modified: webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/om/om_output.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/om/om_output.c?rev=669142&r1=669141&r2=669142&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/om/om_output.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/axiom/src/om/om_output.c Wed Jun 18 05:01:27 2008
@@ -66,6 +66,8 @@
axis2_char_t *content_type;
+ axutil_array_list_t *mime_parts;
+
};
AXIS2_EXTERN axiom_output_t *AXIS2_CALL
@@ -99,6 +101,7 @@
om_output->mime_output = NULL;
om_output->mime_boundry = NULL;
om_output->content_type = NULL;
+ om_output->mime_parts = NULL;
return om_output;
}
@@ -631,12 +634,16 @@
}
-axis2_byte_t *AXIS2_CALL
-axiom_output_flush(
+/* This method will be called from transport. After this method each and every
+ * message part needs to be send are stored in an arraylits. So the transport
+ * sender should correctly figure out how to send from the given information.
+ */
+
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axiom_output_flush(
axiom_output_t * om_output,
- const axutil_env_t * env,
- axis2_byte_t ** output_stream,
- int *output_stream_size)
+ const axutil_env_t * env)
{
const axis2_char_t *soap_content_type = NULL;
@@ -644,13 +651,13 @@
if (om_output->do_optimize)
{
- axis2_byte_t *byte_stream = NULL;
axis2_char_t *root_content_id = NULL;
axis2_char_t *buffer = NULL;
+ /* Extracting the soap part */
+
buffer = axiom_xml_writer_get_xml(om_output->xml_writer,
env);
- int stream_size = 0;
if (om_output->is_soap11)
{
soap_content_type = AXIOM_SOAP11_CONTENT_TYPE;
@@ -660,63 +667,42 @@
soap_content_type = AXIOM_SOAP12_CONTENT_TYPE;
}
om_output->mime_output = axiom_mime_output_create(env);
+
+ /* The created mime_boundary for this soap message */
+
om_output->mime_boundry = axiom_output_get_mime_boundry(om_output, env);
+
+ /* This is also created for attachments*/
root_content_id = axiom_output_get_root_content_id(om_output, env);
- /*axiom_mime_output_complete(om_output->mime_output,
- env, &byte_stream, &stream_size,
- buffer, om_output->binary_node_list,
- om_output->mime_boundry,
- om_output->root_content_id,
- om_output->char_set_encoding,
- soap_content_type);*/
-
- *output_stream = byte_stream;
- *output_stream_size = stream_size;
-
- return byte_stream;
- }
- return NULL;
-}
-
-
-/*axis2_status_t AXIS2_CALL
-axiom_output_flush_to_wire(
- axiom_output_t * om_output,
- const axutil_env_t * env,
- axutil_stream_t *stream)
-{
- const axis2_char_t *soap_content_type = NULL;
- axis2_status_t status = AXIS2_FAILURE;
-
- AXIS2_ENV_CHECK(env, NULL);
-
- if (om_output->do_optimize)
- {
- axis2_byte_t *byte_stream = NULL;
- axis2_char_t *root_content_id = NULL;
- axis2_char_t *buffer =
- (axis2_char_t *) axiom_xml_writer_get_xml(om_output->xml_writer,
- env);
- int stream_size = 0;
- if (om_output->is_soap11)
+
+ /* different parts of the message is added according to their order
+ * to an arraylist */
+ om_output->mime_parts = axiom_mime_output_create_part_list(
+ om_output->mime_output,
+ env, buffer, om_output->binary_node_list,
+ om_output->mime_boundry,
+ om_output->root_content_id,
+ om_output->char_set_encoding,
+ soap_content_type);
+
+ if(om_output->mime_parts)
{
- soap_content_type = AXIOM_SOAP11_CONTENT_TYPE;
+ return AXIS2_SUCCESS;
}
else
{
- soap_content_type = AXIOM_SOAP12_CONTENT_TYPE;
+ return AXSI2_FAILURE;
}
- om_output->mime_output = axiom_mime_output_create(env);
- om_output->mime_boundry = axiom_output_get_mime_boundry(om_output, env);
- root_content_id = axiom_output_get_root_content_id(om_output, env);
- status = axiom_mime_output_write_to_wire(om_output->mime_output,
- env, stream,
- buffer, om_output->binary_node_list,
- om_output->mime_boundry,
- om_output->root_content_id,
- om_output->char_set_encoding,
- soap_content_type);
- return status;
}
- return status;
-}*/
+ return AXIS2_SUCCESS;
+}
+
+AXIS2_EXTERN axutil_array_list_t *AXIS2_CALL
+axiom_output_get_mime_parts(
+ axiom_output_t * om_output,
+ const axutil_env_t * env)
+{
+ AXIS2_ENV_CHECK(env, AXIS2_FAILURE);
+ return om_output->mime_parts;
+}
+
Propchange: webservices/axis2/branches/c/post_1_4_mtom/c/src/core/description/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jun 18 05:01:27 2008
@@ -0,0 +1,2 @@
+.deps
+.libs
Propchange: webservices/axis2/branches/c/post_1_4_mtom/c/src/core/engine/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jun 18 05:01:27 2008
@@ -0,0 +1,2 @@
+.deps
+.libs
Propchange: webservices/axis2/branches/c/post_1_4_mtom/c/src/core/transport/http/sender/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jun 18 05:01:27 2008
@@ -0,0 +1,2 @@
+.deps
+.libs
Modified: webservices/axis2/branches/c/post_1_4_mtom/c/util/include/axutil_utils.h
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/util/include/axutil_utils.h?rev=669142&r1=669141&r2=669142&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/util/include/axutil_utils.h (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/util/include/axutil_utils.h Wed Jun 18 05:01:27 2008
@@ -246,6 +246,13 @@
const axutil_env_t * env,
axis2_char_t * dest,
axis2_char_t * src);
+
+ AXIS2_EXTERN axis2_status_t AXIS2_CALL
+ axis2_char_2_byte(
+ const axutil_env_t *env,
+ axis2_char_t *char_buffer,
+ axis2_byte_t **byte_buffer,
+ int *byte_buffer_size);
/** @} */
Propchange: webservices/axis2/branches/c/post_1_4_mtom/c/util/src/
------------------------------------------------------------------------------
--- svn:ignore (added)
+++ svn:ignore Wed Jun 18 05:01:27 2008
@@ -0,0 +1,2 @@
+.deps
+.libs
Modified: webservices/axis2/branches/c/post_1_4_mtom/c/util/src/utils.c
URL: http://svn.apache.org/viewvc/webservices/axis2/branches/c/post_1_4_mtom/c/util/src/utils.c?rev=669142&r1=669141&r2=669142&view=diff
==============================================================================
--- webservices/axis2/branches/c/post_1_4_mtom/c/util/src/utils.c (original)
+++ webservices/axis2/branches/c/post_1_4_mtom/c/util/src/utils.c Wed Jun 18 05:01:27 2008
@@ -582,3 +582,36 @@
}
return 0;
}
+
+AXIS2_EXTERN axis2_status_t AXIS2_CALL
+axis2_char_2_byte(
+ const axutil_env_t *env,
+ axis2_char_t *char_buffer,
+ axis2_byte_t **byte_buffer,
+ int *byte_buffer_size)
+{
+ int length = 0;
+ int i = 0;
+ axis2_byte_t *bytes = NULL;
+
+ length = (int) axutil_strlen(char_buffer);
+ bytes = (axis2_byte_t *)
+ AXIS2_MALLOC(env->allocator, length * sizeof(axis2_byte_t));
+
+ if (!bytes)
+ {
+ AXIS2_ERROR_SET(env->error, AXIS2_ERROR_NO_MEMORY, AXIS2_FAILURE);
+ AXIS2_LOG_ERROR(env->log, AXIS2_LOG_SI,
+ "No memory. Cannot create byte buffer");
+ return AXIS2_FAILURE;
+ }
+
+ for (i = 0; i < length; i++)
+ {
+ bytes[i] = (axis2_byte_t) char_buffer[i];
+ }
+ *byte_buffer = bytes;
+ *byte_buffer_size = length;
+ return AXIS2_SUCCESS;
+}
+