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;
+}
+