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 da...@apache.org on 2006/08/03 05:59:37 UTC
svn commit: r428221 - in /webservices/axis2/trunk/c:
samples/client/dynamic_client/ util/src/ woden/samples/
woden/samples/wsdl10/ woden/src/builder/ woden/src/builder/wsdl10/
woden/src/wsdl10/
Author: damitha
Date: Wed Aug 2 20:59:36 2006
New Revision: 428221
URL: http://svn.apache.org/viewvc?rev=428221&view=rev
Log:
fixing memory leaks in woden
Modified:
webservices/axis2/trunk/c/samples/client/dynamic_client/CalculatorDoc.wsdl
webservices/axis2/trunk/c/util/src/uri.c
webservices/axis2/trunk/c/woden/samples/test_wsdl2.c
webservices/axis2/trunk/c/woden/samples/wsdl10/test_wsdl1.c
webservices/axis2/trunk/c/woden/src/builder/resolver.c
webservices/axis2/trunk/c/woden/src/builder/wsdl10/wsdl10_reader.c
webservices/axis2/trunk/c/woden/src/wsdl10/desc.c
Modified: webservices/axis2/trunk/c/samples/client/dynamic_client/CalculatorDoc.wsdl
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/samples/client/dynamic_client/CalculatorDoc.wsdl?rev=428221&r1=428220&r2=428221&view=diff
==============================================================================
--- webservices/axis2/trunk/c/samples/client/dynamic_client/CalculatorDoc.wsdl (original)
+++ webservices/axis2/trunk/c/samples/client/dynamic_client/CalculatorDoc.wsdl Wed Aug 2 20:59:36 2006
@@ -246,7 +246,7 @@
<wsdl:port binding="impl:CalculatorSoapBinding" name="Calculator">
- <wsdlsoap:address location="http://localhost:5555/axis2/services/Calculator"/>
+ <wsdlsoap:address location="http://localhost:9090/axis2/services/Calculator"/>
</wsdl:port>
Modified: webservices/axis2/trunk/c/util/src/uri.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/util/src/uri.c?rev=428221&r1=428220&r2=428221&view=diff
==============================================================================
--- webservices/axis2/trunk/c/util/src/uri.c (original)
+++ webservices/axis2/trunk/c/util/src/uri.c Wed Aug 2 20:59:36 2006
@@ -671,27 +671,27 @@
/* The trivial bits are everything-but-path */
if ( uri_impl->scheme == NULL )
{
- uri_impl->scheme = base_impl->scheme ;
+ uri_impl->scheme = AXIS2_STRDUP(base_impl->scheme, env) ;
}
if ( uri_impl->hostinfo == NULL )
{
- uri_impl->hostinfo = base_impl->hostinfo ;
+ uri_impl->hostinfo = AXIS2_STRDUP(base_impl->hostinfo, env) ;
}
if ( uri_impl->user == NULL )
{
- uri_impl->user = base_impl->user ;
+ uri_impl->user = AXIS2_STRDUP(base_impl->user, env) ;
}
if ( uri_impl->password == NULL )
{
- uri_impl->password = base_impl->password ;
+ uri_impl->password = AXIS2_STRDUP(base_impl->password, env) ;
}
if ( uri_impl->hostname == NULL )
{
- uri_impl->hostname = base_impl->hostname ;
+ uri_impl->hostname = AXIS2_STRDUP(base_impl->hostname, env) ;
}
if ( uri_impl->port_str == NULL )
{
- uri_impl->port_str = base_impl->port_str ;
+ uri_impl->port_str = AXIS2_STRDUP(base_impl->port_str, env) ;
}
if ( uri_impl->hostent == NULL )
{
Modified: webservices/axis2/trunk/c/woden/samples/test_wsdl2.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/samples/test_wsdl2.c?rev=428221&r1=428220&r2=428221&view=diff
==============================================================================
--- webservices/axis2/trunk/c/woden/samples/test_wsdl2.c (original)
+++ webservices/axis2/trunk/c/woden/samples/test_wsdl2.c Wed Aug 2 20:59:36 2006
@@ -37,6 +37,7 @@
{
axis2_env_t *env = NULL;
axiom_document_t *om_doc = NULL;
+ axiom_stax_builder_t *om_builder = NULL;
axis2_char_t *doc_base_uri = NULL;
axis2_char_t *axis2c_home = NULL;
woden_resolver_t *resolver = NULL;
@@ -112,6 +113,10 @@
}
}
}
+ om_builder = AXIOM_DOCUMENT_GET_BUILDER(om_doc, env);
+ AXIOM_STAX_BUILDER_FREE(om_builder, env);
+ WODEN_DESC_FREE(desc, env);
+ axis2_env_free(env);
return 0;
}
@@ -126,7 +131,7 @@
reader = axiom_xml_reader_create_for_file(env, filename, NULL);
om_builder = axiom_stax_builder_create(env, reader);
- doc = axiom_document_create(env, NULL, om_builder);
+ doc = AXIOM_STAX_BUILDER_GET_DOCUMENT(om_builder, env);
AXIOM_DOCUMENT_BUILD_ALL(doc, env);
return doc;
Modified: webservices/axis2/trunk/c/woden/samples/wsdl10/test_wsdl1.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/samples/wsdl10/test_wsdl1.c?rev=428221&r1=428220&r2=428221&view=diff
==============================================================================
--- webservices/axis2/trunk/c/woden/samples/wsdl10/test_wsdl1.c (original)
+++ webservices/axis2/trunk/c/woden/samples/wsdl10/test_wsdl1.c Wed Aug 2 20:59:36 2006
@@ -39,6 +39,7 @@
{
axis2_env_t *env = NULL;
axiom_document_t *om_doc = NULL;
+ axiom_stax_builder_t *om_builder = NULL;
axis2_char_t *doc_base_uri = NULL;
axis2_char_t *axis2c_home = NULL;
woden_resolver_t *resolver = NULL;
@@ -72,6 +73,8 @@
resolver = woden_resolver_create(env);
desc = WODEN_RESOLVER_READ(resolver, env, om_doc, doc_base_uri);
+ AXIS2_FREE(env->allocator, doc_base_uri);
+ WODEN_RESOLVER_FREE(resolver, env);
intfaces = WODEN_WSDL10_DESC_GET_INTERFACES(desc, env);
intface = AXIS2_ARRAY_LIST_GET(intfaces, env, 0);
if (intface)
@@ -169,6 +172,10 @@
printf("Content is:\n");
}
}
+ om_builder = AXIOM_DOCUMENT_GET_BUILDER(om_doc, env);
+ AXIOM_STAX_BUILDER_FREE(om_builder, env);
+ WODEN_WSDL10_DESC_FREE(desc, env);
+ axis2_env_free(env);
return 0;
}
@@ -183,7 +190,7 @@
reader = axiom_xml_reader_create_for_file(env, filename, NULL);
om_builder = axiom_stax_builder_create(env, reader);
- doc = axiom_document_create(env, NULL, om_builder);
+ doc = AXIOM_STAX_BUILDER_GET_DOCUMENT(om_builder, env);
AXIOM_DOCUMENT_BUILD_ALL(doc, env);
return doc;
Modified: webservices/axis2/trunk/c/woden/src/builder/resolver.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/src/builder/resolver.c?rev=428221&r1=428220&r2=428221&view=diff
==============================================================================
--- webservices/axis2/trunk/c/woden/src/builder/resolver.c (original)
+++ webservices/axis2/trunk/c/woden/src/builder/resolver.c Wed Aug 2 20:59:36 2006
@@ -228,6 +228,7 @@
reader = woden_reader_create(env);
desc = WODEN_READER_READ_WSDL(reader, env, resolver_impl->root_node,
doc_base_uri);
+ WODEN_READER_FREE(reader, env);
}
AXIS2_QNAME_FREE(qname, env);
@@ -241,6 +242,7 @@
reader = woden_wsdl10_reader_create(env);
desc = WODEN_WSDL10_READER_READ_WSDL(reader, env, resolver_impl->root_node,
doc_base_uri);
+ WODEN_WSDL10_READER_FREE(reader, env);
}
return desc;
}
Modified: webservices/axis2/trunk/c/woden/src/builder/wsdl10/wsdl10_reader.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/src/builder/wsdl10/wsdl10_reader.c?rev=428221&r1=428220&r2=428221&view=diff
==============================================================================
--- webservices/axis2/trunk/c/woden/src/builder/wsdl10/wsdl10_reader.c (original)
+++ webservices/axis2/trunk/c/woden/src/builder/wsdl10/wsdl10_reader.c Wed Aug 2 20:59:36 2006
@@ -136,7 +136,6 @@
/* A map of imported schema definitions keyed by schema location URI */
axis2_hash_t *f_imported_schemas;
woden_wsdl10_ext_registry_t *f_ext_reg;
- axis2_uri_t *f_uri;
};
@@ -439,7 +438,6 @@
*/
static axis2_uri_t *
get_uri(
- void *reader,
const axis2_env_t *env,
const axis2_char_t *uri_str);
@@ -455,7 +453,6 @@
reader_impl->f_imported_schemas = NULL;
reader_impl->f_ext_reg = NULL;
- reader_impl->f_uri = NULL;
reader_impl->reader.ops = AXIS2_MALLOC(env->allocator,
sizeof(woden_wsdl10_reader_ops_t));
@@ -508,13 +505,7 @@
WODEN_WSDL10_EXT_REGISTRY_FREE(reader_impl->f_ext_reg, env);
reader_impl->f_ext_reg = NULL;
}
-
- if(reader_impl->f_uri)
- {
- AXIS2_URI_FREE(reader_impl->f_uri, env);
- reader_impl->f_uri = NULL;
- }
-
+
if((&(reader_impl->reader))->ops)
{
AXIS2_FREE(env->allocator, (&(reader_impl->reader))->ops);
@@ -618,7 +609,6 @@
void *ext_reg = NULL;
axis2_uri_t *uri = NULL;
axis2_char_t *target_namespc = NULL;
- axis2_uri_t *target_namespc_uri = NULL;
axiom_element_t *desc_el = NULL;
axis2_hash_t *attrs = NULL;
axis2_hash_index_t *index = NULL;
@@ -662,8 +652,10 @@
WODEN_WSDL10_DESC_ELEMENT_SET_EXT_REGISTRY(desc, env, ext_reg);
}
- uri = get_uri(reader, env, document_base_uri);
+ uri = get_uri(env, document_base_uri);
WODEN_WSDL10_DESC_ELEMENT_SET_DOCUMENT_BASE_URI(desc, env, uri);
+ AXIS2_URI_FREE(uri, env);
+ uri = NULL;
desc_el = AXIOM_NODE_GET_DATA_ELEMENT(desc_el_node, env);
target_namespc = AXIOM_ELEMENT_GET_ATTRIBUTE_VALUE_BY_NAME(desc_el,
@@ -671,8 +663,11 @@
if(NULL != target_namespc)
{
- target_namespc_uri = get_uri(reader, env, target_namespc);
+ axis2_uri_t *target_namespc_uri = NULL;
+
+ target_namespc_uri = get_uri(env, target_namespc);
WODEN_WSDL10_DESC_ELEMENT_SET_TARGET_NAMESPACE(desc, env, target_namespc_uri);
+ AXIS2_URI_FREE(target_namespc_uri, env);
}
/* parse the namespace declarations */
@@ -695,7 +690,7 @@
namespc_uri = AXIOM_NAMESPACE_GET_URI(namespc, env);
local_part = AXIOM_ATTRIBUTE_GET_LOCALNAME(attr, env);
value = AXIOM_ATTRIBUTE_GET_VALUE(attr, env);
- uri = get_uri(reader, env, value);
+ uri = get_uri(env, value);
if(0 == AXIS2_STRCMP(WODEN_WSDL10_NS_URI_XMLNS, namespc_uri))
{
if(0 == AXIS2_STRCMP(WODEN_WSDL10_ATTR_XMLNS, local_part))
@@ -708,6 +703,8 @@
WODEN_WSDL10_DESC_ELEMENT_ADD_NAMESPACE(desc, env, NULL, uri);
}
}
+ AXIS2_URI_FREE(uri, env);
+ uri = NULL;
}
desc = woden_wsdl10_desc_to_attr_extensible(desc, env);
@@ -974,8 +971,9 @@
axis2_uri_t *uri = NULL;
/* TODO handle missing namespace attribute (REQUIRED attr) */
- uri = get_uri(reader, env, namespc_uri);
+ uri = get_uri(env, namespc_uri);
WODEN_IMPORT_SET_NAMESPACE(imp, env, uri);
+ AXIS2_URI_FREE(uri, env);
}
if(NULL != location_uri)
@@ -985,8 +983,9 @@
/* TODO handle missing locationURI (OPTIONAL attr) */
imp = woden_import_to_import_element(imp, env);
- uri = get_uri(reader, env, location_uri);
+ uri = get_uri(env, location_uri);
WODEN_IMPORT_ELEMENT_SET_LOCATION(imp, env, uri);
+ AXIS2_URI_FREE(uri, env);
imported_desc = get_wsdl_from_location(reader, env, location_uri, desc,
wsdl_modules);
@@ -1026,9 +1025,10 @@
axis2_uri_t *uri = NULL;
void *included_desc = NULL;
- uri = get_uri(reader, env, location_uri);
+ uri = get_uri(env, location_uri);
include = woden_include_to_include_element(include, env);
WODEN_INCLUDE_ELEMENT_SET_LOCATION(include, env, uri);
+ AXIS2_URI_FREE(uri, env);
included_desc = get_wsdl_from_location(reader, env, location_uri, desc,
wsdl_modules);
@@ -1165,8 +1165,9 @@
if(NULL != tns)
{
void *base = WODEN_INLINED_SCHEMA_GET_BASE_IMPL(schema, env);
- axis2_uri_t *uri = get_uri(reader, env, tns);
+ axis2_uri_t *uri = get_uri(env, tns);
WODEN_SCHEMA_SET_NAMESPACE(base, env, uri);
+ AXIS2_URI_FREE(uri, env);
}
desc = woden_wsdl10_desc_to_desc_element(desc, env);
base_uri = WODEN_WSDL10_DESC_ELEMENT_GET_DOCUMENT_BASE_URI(desc, env);
@@ -1248,15 +1249,19 @@
WODEN_WSDL10_ATTR_NAMESPACE);
if(NULL != ns)
{
- uri = get_uri(reader, env, ns);
+ uri = get_uri(env, ns);
WODEN_SCHEMA_SET_NAMESPACE(base_schema, env, uri);
+ AXIS2_URI_FREE(uri, env);
+ uri = NULL;
}
sloc = AXIOM_ELEMENT_GET_ATTRIBUTE_VALUE_BY_NAME(import_el, env,
WODEN_ATTR_SCHEMA_LOCATION);
if(NULL != sloc)
{
- uri = get_uri(reader, env, sloc);
+ uri = get_uri(env, sloc);
WODEN_IMPORTED_SCHEMA_SET_LOCATION(schema, env, uri);
+ AXIS2_URI_FREE(uri, env);
+ uri = NULL;
}
if(NULL == WODEN_SCHEMA_GET_NAMESPACE(base_schema, env))
@@ -1624,8 +1629,9 @@
axis2_uri_t *uri = NULL;
uri_str = AXIS2_ARRAY_LIST_GET(string_list, env, i);
intface = woden_interface_to_interface_element(intface, env);
- uri = get_uri(reader, env, uri_str);
+ uri = get_uri(env, uri_str);
WODEN_INTERFACE_ELEMENT_ADD_STYLE_DEFAULT_URI(intface, env, uri);
+ AXIS2_URI_FREE(uri, env);
}
}
@@ -1780,9 +1786,10 @@
for(i = 0; i < size; i++)
{
uri_str = AXIS2_ARRAY_LIST_GET(str_list, env, i);
- uri = get_uri(reader, env, uri_str);
+ uri = get_uri(env, uri_str);
op = woden_interface_op_to_interface_op_element(op, env);
WODEN_INTERFACE_OP_ELEMENT_ADD_STYLE_URI(op, env, uri);
+ AXIS2_URI_FREE(uri, env);
}
}
@@ -1792,9 +1799,10 @@
{
axis2_uri_t *uri = NULL;
- uri = get_uri(reader, env, pat);
+ uri = get_uri(env, pat);
op = woden_interface_op_to_interface_op_element(op, env);
WODEN_INTERFACE_OP_ELEMENT_SET_PATTERN(op, env, uri);
+ AXIS2_URI_FREE(uri, env);
}
op = woden_interface_op_to_attr_extensible(op, env);
status = parse_ext_attributes(reader, env, op_el_node, "interface_op_element",
@@ -2284,9 +2292,10 @@
{
axis2_uri_t *uri = NULL;
- uri = get_uri(reader, env, type);
+ uri = get_uri(env, type);
binding = woden_binding_to_binding_element(binding, env);
WODEN_BINDING_ELEMENT_SET_TYPE(binding, env, uri);
+ AXIS2_URI_FREE(uri, env);
}
/* TODO extends attribute */
@@ -3166,7 +3175,6 @@
axis2_qname_t *binding_qn = NULL;
axis2_qname_t *attr_binding = NULL;
axis2_qname_t *attr_address = NULL;
- axis2_uri_t *address_uri = NULL;
axiom_element_t *endpoint_el = NULL;
axiom_element_t *temp_el = NULL;
axiom_node_t *temp_el_node = NULL;
@@ -3234,9 +3242,12 @@
if(NULL != address)
{
- address_uri = get_uri(reader, env, address);
+ axis2_uri_t *address_uri = NULL;
+
+ address_uri = get_uri(env, address);
endpoint = woden_wsdl10_endpoint_to_endpoint_element(endpoint, env);
WODEN_WSDL10_ENDPOINT_ELEMENT_SET_ADDRESS(endpoint, env, address_uri);
+ AXIS2_URI_FREE(address_uri, env);
}
endpoint = woden_wsdl10_endpoint_to_attr_extensible(endpoint, env);
@@ -3341,9 +3352,10 @@
if(NULL != ref)
{
- axis2_uri_t *ref_uri = get_uri(reader, env, ref);
+ axis2_uri_t *ref_uri = get_uri(env, ref);
feature = woden_feature_to_feature_element(feature, env);
WODEN_FEATURE_ELEMENT_SET_REF(feature, env, ref_uri);
+ AXIS2_URI_FREE(ref_uri, env);
}
attr_req = axis2_qname_create_from_string(env, WODEN_WSDL10_ATTR_REQUIRED);
@@ -3468,9 +3480,10 @@
if(NULL != ref)
{
- axis2_uri_t *ref_uri = get_uri(reader, env, ref);
+ axis2_uri_t *ref_uri = get_uri(env, ref);
property = woden_property_to_property_element(property, env);
WODEN_PROPERTY_ELEMENT_SET_REF(property, env, ref_uri);
+ AXIS2_URI_FREE(ref_uri, env);
}
property = woden_property_to_attr_extensible(property, env);
@@ -3701,7 +3714,8 @@
el = AXIOM_NODE_GET_DATA_ELEMENT(el_node, env);
namespc = AXIOM_ELEMENT_GET_NAMESPACE(el, env, el_node);
namespc_uri_str = AXIOM_NAMESPACE_GET_URI(namespc, env);
- if(NULL == namespc_uri_str || (0 == AXIS2_STRCMP(namespc_uri_str, WODEN_WSDL10_NS_URI_WSDL20)))
+ if(NULL == namespc_uri_str || (0 == AXIS2_STRCMP(namespc_uri_str,
+ WODEN_WSDL10_NS_URI_WSDL20)))
{
/* TODO Set error message */
return NULL;
@@ -3835,23 +3849,12 @@
*/
static axis2_uri_t *
get_uri(
- void *reader,
const axis2_env_t *env,
const axis2_char_t *uri_str)
{
- woden_wsdl10_reader_impl_t *reader_impl = NULL;
-
AXIS2_ENV_CHECK(env, NULL);
AXIS2_PARAM_CHECK(env->error, uri_str, NULL);
- reader_impl = INTF_TO_IMPL(reader);
- if(reader_impl->f_uri)
- {
- AXIS2_URI_FREE(reader_impl->f_uri, env);
- reader_impl->f_uri = NULL;
- }
- reader_impl->f_uri = axis2_uri_parse_string(env, uri_str);
-
- return reader_impl->f_uri;
+ return axis2_uri_parse_string(env, uri_str);
}
Modified: webservices/axis2/trunk/c/woden/src/wsdl10/desc.c
URL: http://svn.apache.org/viewvc/webservices/axis2/trunk/c/woden/src/wsdl10/desc.c?rev=428221&r1=428220&r2=428221&view=diff
==============================================================================
--- webservices/axis2/trunk/c/woden/src/wsdl10/desc.c (original)
+++ webservices/axis2/trunk/c/woden/src/wsdl10/desc.c Wed Aug 2 20:59:36 2006
@@ -1045,8 +1045,40 @@
AXIS2_URI_FREE(desc_impl->f_doc_base_uri, env);
desc_impl->f_doc_base_uri = NULL;
}
+ if(desc_impl->f_import_elements)
+ {
+ int i = 0, size = 0;
+
+ size = AXIS2_ARRAY_LIST_SIZE(desc_impl->f_import_elements, env);
+ for(i = 0; i < size; i++)
+ {
+ woden_import_t *import = NULL;
+
+ import = (woden_import_t *) AXIS2_ARRAY_LIST_GET(desc_impl->
+ f_import_elements, env, i);
+ WODEN_IMPORT_FREE(import, env);
+ }
+ AXIS2_ARRAY_LIST_FREE(desc_impl->f_import_elements, env);
+ desc_impl->f_import_elements = NULL;
+ }
/* TODO free f_namespcs */
-
+ if(desc_impl->f_namespcs)
+ {
+ axis2_hash_index_t *i = NULL;
+ axis2_uri_t *namespc = NULL;
+ void *v = NULL;
+
+ for (i = axis2_hash_first (desc_impl->f_namespcs, env); i; i =
+ axis2_hash_next (env, i))
+ {
+ axis2_hash_this (i, NULL, NULL, &v);
+ namespc = (axis2_uri_t *) v;
+ AXIS2_URI_FREE(namespc, env);
+ }
+ axis2_hash_free(desc_impl->f_namespcs, env);
+ desc_impl->f_namespcs = NULL;
+ }
+
if(desc_impl->super)
{
axis2_hash_free(desc_impl->super, env);
---------------------------------------------------------------------
To unsubscribe, e-mail: axis-cvs-unsubscribe@ws.apache.org
For additional commands, e-mail: axis-cvs-help@ws.apache.org