I believe you want someone to help you code you wrapper. I hope you find someone to do that for you on the list.
Jacek Wagner sent the following on 9/5/2008 10:57 AM: > It is my fault I did not communicate well enough what i wanted. Here is > my final attempt. > > This is what i want : add new product utilizing remote access via SOAP > > This is what i have: ofbiz has service "createProduct" that requires > auth="true" > > This is what i know: ofbiz services are not Web_services > > You suggested in previous exchange to created a wrapper in ofbiz (ofbiz > wrapper will call createProduct service ) that can be called using soap. > > I created ofbiz wrapper and when i test thru the webtools (used login > admin/ofbiz) it let me add new product, but when i call from the remote > client i am getting a message that i have to login to complete transaction. > The question is how to login within ofbiz wrapper before calling > createProduct implementation. > > Below the code that logins successfully, but does not pass credentials > to the service > > public static Map createLHSProduct(DispatchContext dctx, Map context) { > GenericDelegator delegator = dctx.getDelegator(); > > try { > String loginuser; > String loginpassword; > String productType; > String productName; > > // get the input parameter > > loginuser = (String) context.get("loginuser"); > Debug.logInfo("loginuser = " + loginuser, module); loginpassword = > (String) context.get("loginpassword"); > Debug.logInfo("loginpassword = " + loginpassword,module); > productType = (String) context.get("productTypeId"); > Debug.logInfo("productTypeId = " + productType,module); productName > = (String) context.get("internalName"); > Debug.logInfo("internalName = " + productName,module); > // login > context.put("login.username", loginuser); > context.put("login.password", loginpassword); > Map loginresult = LoginServices.userLogin(dctx, context); > Debug.logInfo("loginresult = " + loginresult,module); > //create new product > context.put("productTypeId", productType); > context.put("internalName", productName); Map > productresult = SimpleMethod.runSimpleService( > "org/ofbiz/product/product/ProductServices.xml", > "createProduct", dctx, context); > > return result; > > } catch (GenericEntityException ex) { > return ServiceUtil.returnError(ex.getMessage()); > } catch (Exception ex) { > return ServiceUtil.returnError(ex.getMessage()); > } > } > > > > BJ Freeman wrote: >> there is code already that you can follow the flow. >> it save me having to explain what is already used. >> you can follow the flow of that code to write you wrapper. >> >> for instance you are trying to deal with a product. >> so if you follow the code flow that creates a product in ofbiz >> you will have a template on how to do this in your wrapper. >> >> >> Jacek Wagner sent the following on 9/4/2008 5:41 PM: >> >>> I am not sure I follow. All what I want from this ofbiz wrapper to >>> obtain credential in order to complete adding new product. >>> This ofbiz wrapper is being called thru soap and has to be able to login >>> and process new product. >>> >>> BJ Freeman wrote: >>> >>>> I am assuming that you have read code that already does this operations >>>> to pick up what you not doing. >>>> >>>> >>>> BJ Freeman sent the following on 9/4/2008 5:05 PM: >>>> >>>> >>>>> did you check each return Map to check for a "success" message >>>>> >>>>> Jacek Wagner sent the following on 9/4/2008 3:01 PM: >>>>> >>>>>> Thank you for the tip. The return map includes error "You must be >>>>>> logged in to complete the Create an Product process." I hoped that by >>>>>> calling LoginServices.userLogin.....with admin/ofbiz (second task) >>>>>> I am >>>>>> receiving all credentials I need to complete the task. >>>>>> Jacek >>>>>> >>>>>> BJ Freeman wrote: >>>>>> >>>>>>> Simple services don't provide exceptions. >>>>>>> They do return a Map that has error messages in it. >>>>>>> https://demo.hotwaxmedia.com/webtools/control/availableServices?sel_service_name=createProduct >>>>>>> >>>>>>> >>>>>>> >>>>>>> take a look at the Out parameters >>>>>>> Note this is for >>>>>>> org/ofbiz/product/product/ProductServices.xml >>>>>>> and uses a map and runsync >>>>>>> >>>>>>> Jacek Wagner sent the following on 9/4/2008 9:55 AM: >>>>>>> >>>>>>> >>>>>>>> The following is an ofbiz wrapper that performs three tasks: >>>>>>>> login, get >>>>>>>> description for a given product, create new product >>>>>>>> >>>>>>>> When run from webtools (performs successfully all three tasks. when >>>>>>>> called as a soap performs successfully login & get descriptions >>>>>>>> for a >>>>>>>> given product. It also run thru create new product, but does not >>>>>>>> create >>>>>>>> new product neither throw any exception(s). >>>>>>>> >>>>>>>> Wondering Jacek >>>>>>>> >>>>>>>> >>>>>>>> public static Map createLHSProduct(DispatchContext dctx, Map >>>>>>>> context) { >>>>>>>> GenericDelegator delegator = dctx.getDelegator(); >>>>>>>> >>>>>>>> try { >>>>>>>> String productId; >>>>>>>> String loginuser; >>>>>>>> String loginpassword; >>>>>>>> String productType; >>>>>>>> String productName; >>>>>>>> >>>>>>>> // get the input parameter >>>>>>>> >>>>>>>> productId = (String) context.get("productId"); >>>>>>>> Debug.logInfo("productId = " + productId, module); >>>>>>>> loginuser = (String) context.get("loginuser"); >>>>>>>> Debug.logInfo("loginuser = " + loginuser, >>>>>>>> module); //prints to the console or console.log >>>>>>>> loginpassword = (String) context.get("loginpassword"); >>>>>>>> Debug.logInfo("loginpassword = " + loginpassword, >>>>>>>> module); //prints to the console or console.log >>>>>>>> productType = (String) context.get("productTypeId"); >>>>>>>> Debug.logInfo("productTypeId = " + productType, >>>>>>>> module); //prints to the console or console.log >>>>>>>> productName = (String) context.get("internalName"); >>>>>>>> Debug.logInfo("internalName = " + productName, >>>>>>>> module); //prints to the console or console.log >>>>>>>> >>>>>>>> // login >>>>>>>> context.put("login.username", loginuser); >>>>>>>> context.put("login.password", loginpassword); >>>>>>>> Map loginresult = LoginServices.userLogin(dctx, >>>>>>>> context); >>>>>>>> Debug.logInfo("loginresult = " + loginresult, >>>>>>>> module); //prints to the console or console.log >>>>>>>> >>>>>>>> //get description for a given product >>>>>>>> Map queryResult = delegator.findByPrimaryKey("Product", >>>>>>>> UtilMisc.toMap("productId", productId)); >>>>>>>> Map result = UtilMisc.toMap("description", productId); >>>>>>>> if (queryResult != null) { >>>>>>>> result.put("description", >>>>>>>> queryResult.get("description")); >>>>>>>> } >>>>>>>> >>>>>>>> //create new product >>>>>>>> context.remove("productId"); >>>>>>>> context.put("productTypeId", productType); >>>>>>>> context.put("internalName", >>>>>>>> productName); Map >>>>>>>> productresult = SimpleMethod.runSimpleService( >>>>>>>> "org/ofbiz/product/product/ProductServices.xml", >>>>>>>> "createProduct", dctx, context); >>>>>>>> >>>>>>>> return result; >>>>>>>> >>>>>>>> } catch (GenericEntityException ex) {//required if you use >>>>>>>> delegator in Java >>>>>>>> return ServiceUtil.returnError(ex.getMessage()); >>>>>>>> } catch (Exception ex) {//required if you use delegator in >>>>>>>> Java >>>>>>>> return ServiceUtil.returnError(ex.getMessage()); >>>>>>>> } >>>>>>>> } >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >>> >>> >> >> > > > >