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());
>>>>>>>> }
>>>>>>>> }
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>
>>>
>>>
>>>
>>
>>
>
>
>
>