Atg-rest-param-class-types

I am using something like this as input to an ATG rest webservice which does validation with an array input.
But i am not sure how to receive it in a formhandler especially from request.
{'atg-rest-param-class-types':{'container-class':
'java.util.ArrayList','element-class':
'java.lang.String'},'arg1':['sit','stay','speak']}
Pls help.
Should i use JSON input customizer?

Hi,
By receiving you mean you want to receive the output of this request which is in the form an array. In this case you can use atg-rest-output and type should be JSON. The output will parse itself into JSON. You'll not need Output Customizer for this.
Regards,
RahulV

Similar Messages

  • The system could not find a javax.ws.rs.ext.MessageBodyWriter or a DataSourceProvider class for the com.rest.assignment.EmpBean type and application/json mediaType.  Ensure that a javax.ws.rs.ext.MessageBodyWriter exists in the JAX-RS application for the

    Hi,
    Im trying to create a Rest WS with a @GET method that will return me an Emp object. I need the output as a JSON string.
    I have created a dynamic web project and added javax RS jars:
    When im trying to run this, i'm getting the below mentioned error:
    FlushResultHa E org.apache.wink.server.internal.handlers.FlushResultHandler handleResponse The system could not find a javax.ws.rs.ext.MessageBodyWriter or a DataSourceProvider class for the com.rest.assignment.EmpBean type and application/json mediaType.  Ensure that a javax.ws.rs.ext.MessageBodyWriter exists in the JAX-RS application for the type and media type specified.
    RequestProces I org.apache.wink.server.internal.RequestProcessor logException The following error occurred during the invocation of the handlers chain: WebApplicationException (500 - Internal Server Error)
    Please help as im stuck with this from long.
    Thanks in advance.
    Below is the code for my service class:
    package com.rest.assignment;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Enumeration;
    import java.util.HashSet;
    import java.util.Properties;
    import java.util.Set;
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.Application;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
    @Path("/restService")
    public class RestService extends Application {   
        @GET
        @Path("/getEmpDetails")
        @Produces(MediaType.APPLICATION_JSON)
        public Response getStringResponse()
            EmpBean empBean = new EmpBean();
            String filePath = "C:/Program Files/IBM/workspace/HelloWorld/src/com/rest/resources/EmpData.properties";
            Properties properties = new Properties();
            try {
                properties.load(new FileInputStream(filePath));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
             Enumeration e = properties.propertyNames();
             String result="";
            String[] empDetailsArr;
            while (e.hasMoreElements()) {
              String key = (String) e.nextElement();
              String empDetails = properties.getProperty(key);
              empDetailsArr=empDetails.split(",");    
              empBean.setFirstName(empDetailsArr[0]);
              empBean.setLastName(empDetailsArr[1]);
              empBean.setEmpId(empDetailsArr[2]);
              empBean.setDesignation(empDetailsArr[3]);
              empBean.setSkillSet(empDetailsArr[4]);
              result = empDetailsArr[1];
            //return empBean;
            return Response.ok(empBean).type(MediaType.APPLICATION_JSON_TYPE).build();
        @Override
        public Set<Class<?>> getClasses() {
            Set<Class<?>> classes = new HashSet<Class<?>>();
            classes.add(RestService.class);
            classes.add(EmpBean.class);
            return classes;
    and my empBean goes like this:
    package com.rest.assignment;
    public class EmpBean {
        private String firstName;
        private String lastName;
        private String empId;
        private String designation;
        private String skillSet;
        public String getFirstName() {
            return firstName;
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        public String getLastName() {
            return lastName;
        public void setLastName(String lastName) {
            this.lastName = lastName;
        public String getEmpId() {
            return empId;
        public void setEmpId(String empId) {
            this.empId = empId;
        public String getDesignation() {
            return designation;
        public void setDesignation(String designation) {
            this.designation = designation;
        public String getSkillSet() {
            return skillSet;
        public void setSkillSet(String skillSet) {
            this.skillSet = skillSet;
    Web.xml goes like this:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <display-name>restWS</display-name>
    <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>index.htm</welcome-file>
      <welcome-file>index.jsp</welcome-file>
      <welcome-file>default.html</welcome-file>
      <welcome-file>default.htm</welcome-file>
      <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
      <servlet-name>REST</servlet-name>
      <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
      <init-param>
       <param-name>javax.ws.rs.Application</param-name>
       <param-value>com.rest.assignment.RestService</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>REST</servlet-name>
      <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
    </web-app>
    When i try to return a string from my get method, it gives me a proper response. i get this exception when im trying to return a JSON response.

    Hi,
    Im trying to create a Rest WS with a @GET method that will return me an Emp object. I need the output as a JSON string.
    I have created a dynamic web project and added javax RS jars:
    When im trying to run this, i'm getting the below mentioned error:
    FlushResultHa E org.apache.wink.server.internal.handlers.FlushResultHandler handleResponse The system could not find a javax.ws.rs.ext.MessageBodyWriter or a DataSourceProvider class for the com.rest.assignment.EmpBean type and application/json mediaType.  Ensure that a javax.ws.rs.ext.MessageBodyWriter exists in the JAX-RS application for the type and media type specified.
    RequestProces I org.apache.wink.server.internal.RequestProcessor logException The following error occurred during the invocation of the handlers chain: WebApplicationException (500 - Internal Server Error)
    Please help as im stuck with this from long.
    Thanks in advance.
    Below is the code for my service class:
    package com.rest.assignment;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.IOException;
    import java.util.Enumeration;
    import java.util.HashSet;
    import java.util.Properties;
    import java.util.Set;
    import javax.ws.rs.GET;
    import javax.ws.rs.Path;
    import javax.ws.rs.Produces;
    import javax.ws.rs.core.Application;
    import javax.ws.rs.core.MediaType;
    import javax.ws.rs.core.Response;
    @Path("/restService")
    public class RestService extends Application {   
        @GET
        @Path("/getEmpDetails")
        @Produces(MediaType.APPLICATION_JSON)
        public Response getStringResponse()
            EmpBean empBean = new EmpBean();
            String filePath = "C:/Program Files/IBM/workspace/HelloWorld/src/com/rest/resources/EmpData.properties";
            Properties properties = new Properties();
            try {
                properties.load(new FileInputStream(filePath));
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
             Enumeration e = properties.propertyNames();
             String result="";
            String[] empDetailsArr;
            while (e.hasMoreElements()) {
              String key = (String) e.nextElement();
              String empDetails = properties.getProperty(key);
              empDetailsArr=empDetails.split(",");    
              empBean.setFirstName(empDetailsArr[0]);
              empBean.setLastName(empDetailsArr[1]);
              empBean.setEmpId(empDetailsArr[2]);
              empBean.setDesignation(empDetailsArr[3]);
              empBean.setSkillSet(empDetailsArr[4]);
              result = empDetailsArr[1];
            //return empBean;
            return Response.ok(empBean).type(MediaType.APPLICATION_JSON_TYPE).build();
        @Override
        public Set<Class<?>> getClasses() {
            Set<Class<?>> classes = new HashSet<Class<?>>();
            classes.add(RestService.class);
            classes.add(EmpBean.class);
            return classes;
    and my empBean goes like this:
    package com.rest.assignment;
    public class EmpBean {
        private String firstName;
        private String lastName;
        private String empId;
        private String designation;
        private String skillSet;
        public String getFirstName() {
            return firstName;
        public void setFirstName(String firstName) {
            this.firstName = firstName;
        public String getLastName() {
            return lastName;
        public void setLastName(String lastName) {
            this.lastName = lastName;
        public String getEmpId() {
            return empId;
        public void setEmpId(String empId) {
            this.empId = empId;
        public String getDesignation() {
            return designation;
        public void setDesignation(String designation) {
            this.designation = designation;
        public String getSkillSet() {
            return skillSet;
        public void setSkillSet(String skillSet) {
            this.skillSet = skillSet;
    Web.xml goes like this:
    <?xml version="1.0" encoding="UTF-8"?>
    <web-app id="WebApp_ID" version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
    <display-name>restWS</display-name>
    <welcome-file-list>
      <welcome-file>index.html</welcome-file>
      <welcome-file>index.htm</welcome-file>
      <welcome-file>index.jsp</welcome-file>
      <welcome-file>default.html</welcome-file>
      <welcome-file>default.htm</welcome-file>
      <welcome-file>default.jsp</welcome-file>
    </welcome-file-list>
    <servlet>
      <servlet-name>REST</servlet-name>
      <servlet-class>com.ibm.websphere.jaxrs.server.IBMRestServlet</servlet-class>
      <init-param>
       <param-name>javax.ws.rs.Application</param-name>
       <param-value>com.rest.assignment.RestService</param-value>
      </init-param>
      <load-on-startup>1</load-on-startup>
    </servlet>
    <servlet-mapping>
      <servlet-name>REST</servlet-name>
      <url-pattern>/rest/*</url-pattern>
    </servlet-mapping>
    </web-app>
    When i try to return a string from my get method, it gives me a proper response. i get this exception when im trying to return a JSON response.

  • Error while bringing up ATG REST Webservice

    Hi,
    I am trying to bring a REST Webservice using ATG 9.3 version.I am getting the below errors in the startup of the instance.I have added "REST" module in the Manifest file and am able to see the entry " C:\ATG\ATG9.3\REST\config\config.jar" in CONFIGPATH(Please let me know if there are other ways to find if the service has come up properly).I am trying to connect to the server using JAVA based REST Client as given below.Also,i have placed the jar files in the CLASSPATH of the module.I am hoping that the webservice have not come up properly because of these startup errors.Please help me out to resolve this issue.
    STARTUP EXCEPTION SEEN IN SERVER
    ========================
    2012-06-25 06:20:36,815 INFO [STDOUT] Unable to create class atg.rest.servlet.HeadRestServlet for configuration /atg/dynamo/servlet/dafpipeline/HeadRestServlet java.lang.ClassNotFoundException: No ClassLoaders found for: atg.rest.servlet.HeadRestServlet
    2012-06-25 06:21:56,325 INFO [nucleusNamespace.atg.userprofiling.sso.PassportAuthorityService] Starting passport authority service
    2012-06-25 06:21:56,460 INFO [STDOUT] **** Error
    2012-06-25 06:21:56,460 INFO [STDOUT]      
    2012-06-25 06:21:56,460 INFO [STDOUT] Mon Jun 25 06:21:56 EDT 2012
    2012-06-25 06:21:56,460 INFO [STDOUT]      
    2012-06-25 06:21:56,460 INFO [STDOUT] 1340619716460
    2012-06-25 06:21:56,460 INFO [STDOUT]      
    2012-06-25 06:21:56,460 INFO [STDOUT] /
    2012-06-25 06:21:56,460 INFO [STDOUT]      
    2012-06-25 06:21:56,460 INFO [STDOUT] Unable to set configured property "/atg/dynamo/servlet/Initial.initialServices" atg.nucleus.ConfigurationException: Unable to resolve component /atg/dynamo/servlet/dafpipeline/HeadRestServlet
    2012-06-25 06:22:06,528 INFO [STDOUT] Unable to create class atg.rest.RestConfiguration for configuration /atg/rest/Configuration java.lang.ClassNotFoundException: No ClassLoaders found for: atg.rest.RestConfiguration
    2012-06-25 06:22:06,528 INFO [STDOUT] **** Error
    2012-06-25 06:22:06,528 INFO [STDOUT]      
    2012-06-25 06:22:06,528 INFO [STDOUT] Mon Jun 25 06:22:06 EDT 2012
    2012-06-25 06:22:06,528 INFO [STDOUT]      
    2012-06-25 06:22:06,528 INFO [STDOUT] 1340619726528
    2012-06-25 06:22:06,528 INFO [STDOUT]      
    2012-06-25 06:22:06,528 INFO [STDOUT] /
    2012-06-25 06:22:06,528 INFO [STDOUT]      
    2012-06-25 06:22:06,528 INFO [STDOUT] Unable to set configured property "/atg/rest/Initial.initialServices" atg.nucleus.ConfigurationException: Unable to resolve component /atg/rest/Configuration
    CLASSPATH ENTRY
    ============
    <classpathentry exported="true" kind="var" path="C:/ATG/ATG9.3/REST/lib/atg-rest-1.0.jar"/>
         <classpathentry exported="true" kind="var" path="C:/ATG/ATG9.3/REST/lib/commons-fileupload-1.2.1.jar"/>
         <classpathentry exported="true" kind="var" path="C:/ATG/ATG9.3/REST/lib/commons-io-1.4.jar"/>
         <classpathentry exported="true" kind="var" path="C:/ATG/ATG9.3/REST/lib/dom4j-1.6.1.jar"/>
         <classpathentry exported="true" kind="var" path="C:/ATG/ATG9.3/REST/lib/log4j-1.2.15.jar"/>
         <classpathentry exported="true" kind="var" path="C:/ATG/ATG9.3/REST/client-lib/java/atg-rest-client-1.0.jar"/>
    REST CLIENT:
    ========
    import java.util.HashMap;
    import java.util.Map;
    import atg.rest.client.RestClientException;
    import atg.rest.client.RestComponentHelper;
    import atg.rest.client.RestResult;
    import atg.rest.client.RestSession;
    public class RestClient {
    RestSession mSession;
    protected void execute() throws RestClientException {
         System.out.println("inside execute");
         mSession = RestSession.createSession("localhost", 8080, "<USERNAME>", "<PASSWORD>");
         mSession.setUseHttpsForLogin(false);
         try {
         mSession.login();
         System.out.println("Login Successful");
         catch (Throwable t) {
         System.out.println(t);
         finally {
         try {
         mSession.logout();
         System.out.println("Logout Successful");
         catch (RestClientException e) {
         System.out.println(e);
    * @param args
    public static void main(String[] args) {
         System.out.println("inside main");
         // TODO Auto-generated method stub
         RestClient testATGRest = new RestClient();
         try {
         testATGRest.execute();
         catch (Throwable t) {
         System.out.println(t);
    REST CLIENT ERROR SEEN:
    =================
    atg.rest.client.RestClientException: java.io.IOException: Not Found http://localhost:8080/rest/bean/atg/userprofiling/ProfileServices/loginUser
    atg.rest.client.RestClientException: This session is not logged in and cannot be logged out

    I am trying to expose a method using REST Webservice and access the method using the browser.I have followed the steps specified in the thread:
    http://ecomwriter.com/2012/03/19/building-restful-web-services-using-atg/ .Have added a component called ProfileRESTWebservice and have defined a method “getLoginInfo” in the class file. The following entry is placed in the restSecurityConfiguration.xml
    <resource component="/atg/userprofiling/ProfileRESTWebservice" secure="true">
    <method name="getLoginInfo" secure="false"></method>
    </resource>
    But, I am receiving the following exception when trying to access the method using http://localhost:8080/rest/bean/atg/userprofiling/ProfileRESTWebservice/getLoginInfo
    10:07:33,147 ERROR [BeanServlet] Error code: 400
    atg.beans.PropertyNotFoundException: Can't find property named: getLoginInfo in class: com.vs.commerce.profile.ProfileRESTWebservice
    Can't find property named: getLoginInfo in class: com.vs.commerce.profile.ProfileRESTWebservice
    atg.rest.RestException: atg.beans.PropertyNotFoundException: Can't find property named: getLoginInfo in class: com.vs.commerce.profile.ProfileRESTWebservice
    at atg.rest.output.RestOutputCustomizerImpl.outputBeanProperty(RestOutputCustomizerImpl.java:616)
    at atg.rest.processor.BeanProcessor.doRESTGet(BeanProcessor.java:157)
    at atg.rest.servlet.RestPipelineServlet.serviceRESTRequest(RestPipelineServlet.java:394)
    at atg.rest.servlet.RestPipelineServlet.service(RestPipelineServlet.java:237)
    at atg.servlet.pipeline.PipelineableServletImpl.passRequest(PipelineableServletImpl.java:135)
    at atg.servlet.pipeline.PipelineableServletImpl.service(PipelineableServletImpl.java:298)
    at atg.rest.servlet.RestPipelineServlet.service(RestPipelineServlet.java:241)
    Can you pl help me out on this?

  • Not able to print anything on ATG Rest webservices

    Hi..I am new to ATG Rest.. Just for the heads up, i followed following steps :-
    1 ) Added rest module to MANIFEST.MF
    2) Created a custom class which looks like this -
    package com.sgs.utils;
    import atg.nucleus.GenericService;
    public class SGSdummy extends GenericService {
      public void dummy() throws Exception {
        logDebug("sdbfhj");
    3) Mapped it to the property file -
    $class=com.sgs.utils.SGSdummy
    $scope=global
    loggingInfo=true
    4) Configured the security for above component in restSecurityConfiguration.xml
    <rest-security>
    <resource component="/atg/commerce/order/dummy" secure="false">
    <!--  <default-acl value="Profile$role$admin:read,write,execute"/> -->
      <method name="dummy" secure="false"/>
    </resource>
    </rest-security>
    I commented acl as i really didn't need it for a POC plus it was throwing 401 unauthorized.
    5) Now I am calling it from chrome's Advanced Rest Client. However, status is 200 OK but I am not able to print a logDebug or sysout in my SGSdummy class.
         When i check console, it says "Depth 0 is greater than maximum depth 0"
         I tried to change maxDepthAllowed in configuration.properties but in vain..I need help to proceed.

    Now I am trying to create a REST request using custom client. I believe it should be a POST request as I am trying to call a method. My custom client looks like this :-
    package atg.rest.client;
    import java.io.IOException;
    import java.util.HashMap;
    import java.util.Map;
    import atg.rest.client.RestClientException;
    import atg.rest.client.RestComponentHelper;
    import atg.rest.client.RestResult;
    import atg.rest.client.RestSession;
    public class RestDemoClient {
      /** The m username. */
      private String mUsername;
      /** The m password. */
      private String mPassword;
      /** The m host. */
      private String mHost;
      /** The m port. */
      private int mPort;
      /** The m session. */
      private RestSession mSession = null;
       * Instantiates a new method call by rest.
      public RestDemoClient() {
       * Execute.
       * @throws RestClientException the rest client exception
      private void execute() {
       mSession = RestSession
         .createSession(mHost, mPort, mUsername, mPassword);
       mSession.setUseHttpsForLogin(false);
       Map<String,Object> params = new HashMap<String,Object>();
       params.put("atg-rest-input", "json"); 
       RestResult result = null;
       try {
        result = RestComponentHelper.executeMethod("/atg/rest/SGSdummy", "addOrder", new
          Object[] {}, params, mSession);
       } catch (RestClientException e1) {
        System.out.println(e1);
       try {
        if (result != null && result.getResponseCode() == 200) {
         System.out.println("Executed Successfully.");
        } else {
         System.out
           .println("Error while execution : Error Code ["
             + result.getResponseCode()
             + "] and Message ["
             + result.getResponseMessage() + "]");
       } catch (IOException e) {
        System.out.println("Error while execution Successfully.");
       * @param args
      public static void main(String[] args) {
       RestDemoClient stepUtils = new RestDemoClient(); 
       stepUtils.mUsername = "admin";
       stepUtils.mPassword = "admin";
       stepUtils.mHost = "localhost";
       stepUtils.mPort = 8080; 
       stepUtils.execute();
    But everytime i execute this, I get following exception :-
    atg.rest.client.RestClientException: java.io.IOException: Unauthorized Server returned HTTP response code: 401 for URL: http://localhost:8080/rest/bean/atg/rest/SGSdummy/addOrder
    Exception in thread "main" java.lang.NullPointerException
      at atg.rest.client.RestDemoClient.execute(RestDemoClient.java:64)
      at atg.rest.client.RestDemoClient.main(RestDemoClient.java:82)
    I tried different set of credentials but nothing seems to work out for me.
    However it always works fine for GET requests. I am able to see status as 200 OK but it never hits my addOrder() method in SGSdummy class, hence I am not able to print sysout in that method. For status 200 OK GET requests, my logs say "[JSONOutputCustomizer] Depth 0 is greater than maximum depth 0. Outputting object of class java.lang.String as string rather than continuing to nest."
    Can you give me some pointers how to run it without any errors plus it should print a random sysout in my custom class. Thanks

  • Not able to invoke ATG  Rest services

    Hi,
    I'm new ATG Rest service, To just create a dummy rest service I followed the below steps.
    1. added REST module in MANIFEST.MF file
    ATG-Required: DAS DPS DSS DCS B2CCommerce DAS REST
    2. created restSecurityCnfiguration.xml under atg/rest/seurity and following is the content of this file
    <programlisting>
         <rest-security>
              <default-acl value="Profile$login$admin:read,write,execute" />
              <resource component="/atg/service/TestComponent" secure="false"/>
         </rest-security>
    </programlisting>
    3. Created a TestComponent in my existing application and created a method testName
    public class TestComponent {
         public String getTestName(){
              return "arvind";
    4. Deployed my application on jboss.
    Now I'm trying to invoke this from a java class
    protected void execute() throws RestClientException {
              String mUsername = "admin";
              String mPassword = "admin";
              String mHost = "localhost";
              int mPort = 8080;
              RestSession mSession = null;
              RestResult result = null;
              mSession = RestSession.createSession(mHost, mPort, mUsername, mPassword);
              mSession.setUseHttpsForLogin(false);
              mSession.setUseInternalProfileForLogin(false);
              try {
                   mSession.login();
                   println("Login Successful");
                   result = RestComponentHelper.executeMethod("/atg/service/TestComponent", "testName", new Object[] {}, null, mSession);
              catch (Throwable t) {
                   println(t);
              } finally {
                   try {
                        mSession.logout();
                        println("Logout Successful");
                   } catch (RestClientException e) {
                        println(e);
    ----------------------------------------------------------------------out put ---------------------------------------------
    Login Successful
    atg.rest.client.RestClientException: java.io.IOException: Unauthorized Server returned HTTP response code: 401 for URL: http://localhost:8080/rest/bean/atg/service/TestComponent/testName
         at atg.rest.client.RestSession.createHttpRequest(RestSession.java:755)
         at atg.rest.client.RestComponentHelper.executeMethod(RestComponentHelper.java:252)
         at com.techm.restclient.RestClientSample.execute(RestClientSample.java:63)
         at com.techm.restclient.RestClientSample.main(RestClientSample.java:87)
    Caused by: java.io.IOException: Unauthorized Server returned HTTP response code: 401 for URL: http://localhost:8080/rest/bean/atg/service/TestComponent/testName
         at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
         at atg.rest.client.RestSession.createHttpRequest(RestSession.java:745)
         ... 3 more
    Logout Successful
    Even if I provide any username and password, which don't even exist, it says login succussful but while invocation it fails. Please help me here,
    What is default user I can use? or way to create new user ?
    Thanks in Advance,
    Arvind
    Edited by: Arvind Pal on Oct 4, 2012 10:21 AM
    Edited by: Arvind Pal on Oct 4, 2012 10:22 AM

    I created a user through ACC, and made the following changes.
    <programlisting>
         <rest-security>
              <default-acl value="Profile$login$arvind:read,write,execute" />
              <resource component="/atg/service/TestComponent" secure="false"/>
         </rest-security>
    </programlisting>
    and now I'm getting the loginStatus i.e userid of user "arvind".
    But while executing the invocation of web service call I'm getting the same exception.
    Do we need to give some permission somewhere for this user ? or I'm doing something wrong with restSecurityConfiguration.xml
    Login status[390002]
    Login Successful
    atg.rest.client.RestClientException: java.io.IOException: Unauthorized Server returned HTTP response code: 401 for URL: http://localhost:8080/rest/bean/atg/service/TestComponent/getTestName
         at atg.rest.client.RestSession.createHttpRequest(RestSession.java:755)
         at atg.rest.client.RestSession.createHttpRequest(RestSession.java:722)
         at atg.rest.client.RestComponentHelper.getPropertyValue(RestComponentHelper.java:182)
         at com.techm.restclient.RestClientSample.execute(RestClientSample.java:98)
         at com.techm.restclient.RestClientSample.main(RestClientSample.java:128)
    Caused by: java.io.IOException: Unauthorized Server returned HTTP response code: 401 for URL: http://localhost:8080/rest/bean/atg/service/TestComponent/getTestName
         at sun.net.www.protocol.http.HttpURLConnection.getInputStream(HttpURLConnection.java:1436)
         at atg.rest.client.RestSession.createHttpRequest(RestSession.java:745)
         ... 4 more
    Logout Successful
    Edited by: Arvind Pal on Oct 4, 2012 12:36 PM

  • ATG REST Webservices - XML response

    Hi,
    I need to build an ATG REST component which returns the response in XML format and it is done.
    The question that I have here is that, in the XML response, the response XML that I exactly want is embedded inside <atgResponse>..</atgresponse> tag.
    For ex:
    The actual response that I need in the client side.
    <address>
    <address1>123 Main st</address1>
    <address2>Apt 12</address2>
    <city>Attleboro</city>
    <state>MA</state>
    <zip>02073</zip>
    </address>
    The response that I am getting back from my REST component:
    <atgResponse>
    <address>
    <address1>123 Main st</address1>
    <address2>Apt 12</address2>
    <city>Attleboro</city>
    <state>MA</state>
    <zip>02073</zip>
    </address>
    </atgResponse>
    Do I need to handle the logic of taking the xml that I needed from the XML response that is coming from my REST component, in the client side only?
    The other concern that I have is, I do not want my client application to know that I am using ATG REST services.
    Appreciate any help in this.
    Thanks in advance,
    Gopinath Ramasamy

    I have not tried it but I would probably try to extend XMLOutputCustomizer and override sendToOutputStream(Object pDocument, DynamoHttpServletResponse pResponse) method as per the requirement. Here pDocument would actually be an instance of org.dom4j.Document so you can access and update its root element. You can also process other output elements as well by iterating through the elements and when done write the Document object through org.dom4j.Document to XMLWriter. Something like below:
    Document doc = (Document)pDocument;
    //process Document object
    org.dom4j.io.XMLWriter writer = new org.dom4j.io.XMLWriter(pResponse.getWriter(), createDefaultOutputFormat());
    writer.write(doc)Override the default /atg/rest/output/XMLOutputCustomizer configuration to refer your class and see if it serves your purpose.
    API reference for XMLOutputCustomizer:
    http://docs.oracle.com/cd/E24152_01/Platform.10-1/apidoc/atg/rest/output/XMLOutputCustomizer.html

  • Access ATG REST webservices from javascript..?

    Hi All,
    Can we access ATG REST web services from Javascript/jQuery..? If yes, then how..?
    Thanks,
    Vishnu

    Hi Nitin, I'm able to access /atg/dynamo/Configuration component's properties using REST services from following code -
    */atg/rest/security/restSecurityConfiguration.xml*
    <resource component="/rest/bean/atg/dynamo/Configuration">
         <default-acl value="[email protected]:read,write,execute"/>
         <property name="httpPort" secure="false"/>
    </resource>
    client Java code :
    public class RestClientRequest {
         public static void main(String[] args) {
              RestSession mSession = RestSession.createSession("localhost", 8180, "[email protected]", "chinna");
              mSession.setUseHttpsForLogin(false);
              try{
                   String loginStatus = mSession.login();
                   if(loginStatus == null || "null".equals(loginStatus)){
                        mSession=null;
                        System.out.println("Login failed");
                   else{
    RestResult result = RestComponentHelper.getPropertyValue("/atg/dynamo/Configuration", "httpPort", null, mSession);
    String test = result.readInputStream();
    System.out.println("\n\n"+result.readInputStream());
    but getting exception when i try to get repository item using the below code
    <rest-security>
    <resource component="/rest/repository/atg/commerce/catalog/ProductCatalog">
    <default-acl>[email protected]:read,write,execute"</default-acl>
    </resource>
    </rest-security>
    Client Java code:
    public class RestClientRequest {
         public static void main(String[] args) {
              RestSession mSession = RestSession.createSession("localhost", 8180, "[email protected]", "chinna");
              mSession.setUseHttpsForLogin(false);
              try{
                   String loginStatus = mSession.login();
                   if(loginStatus == null || "null".equals(loginStatus)){
                        mSession=null;
                        System.out.println("Login failed");
                   else{
    RestResult result = RestResult result = RestRepositoryHelper.getItems("/atg/commerce/catalog/ProductCatalog", "product", null, mSession);
    String test = result.readInputStream();
    System.out.println("\n\n"+result.readInputStream());
    Exception :
    Login successful
    Login Status : ATG3990000
    atg.rest.client.RestClientException: java.io.IOException: Unauthorized Server returned HTTP response code: 401 for URL: http://localhost:8180/rest/repository/atg/commerce/catalog/ProductCatalog/product
         at atg.rest.client.RestSession.createHttpRequest(RestSession.java:755)
         at atg.rest.client.RestSession.createHttpRequest(RestSession.java:722)
         at atg.rest.client.RestRepositoryHelper.getItems(RestRepositoryHelper.java:188)
         at in.vcarve.RestClientRequest.main(RestClientRequest.java:26)
    Caused by: java.io.IOException: Unauthorized Server returned HTTP response code: 401 for URL: http://localhost:8180/rest/repository/atg/commerce/catalog/ProductCatalog/product
         at sun.net.www.protocol.http.HttpURLConnection.getInputStream(Unknown Source)
         at atg.rest.client.RestSession.createHttpRequest(RestSession.java:745)
         ... 3 more
    Thanks,
    Vishnu

  • WHICH CLASS type of 4GB microSDHC does 5610XM supp...

    1. Any microSD(T-Flash)more than 2GB is known as "microSDHC".
    2. A 4GB microSDHC has three(3)class types, which are Class 2, Class 4 and Class 6.
    3. 5610XM can support microSDHC upto 4GB.
    Seems that there is no mention in the manual regarding to the captioned. I wonder if class 4 or class 6 - 4GB T-Flash (microSDHC)will 5610XM support?
    My question is "WHICH CLASS type of 4GB microSDHC does 5610XM support?"
    Please give a hand~~ many thanks!
    Quoted from -
    http://www.sandisk.com/Assets/File/pdf/retail/SDHC1.pdf
    What is Class Speed Rating?
    The SD Association has created and defined 3 speed classes to help you identify speed and performance capabilities/minimum requirements of SD/SDHC, miniSD/miniSDHC, and microSD/microSDHC cards and the host products.
    The SD Speed Class Ratings specify a minimum sustained write speed for SDHC/miniSDHC/microSDHC cards (Class 2: 2 MB/s; Class 4: 4 MB/s; Class 6: 6 MB/s*).

    Sandisk SDHC cards will work with the 5610. It is unknown if cards larger than 4GB will work, as no one has mentioned it yet.
    Here are the specs for the sandisk card:
    http://www.sandisk.com/Products/Item(2369)-SDSDQ-4096-SanDisk_microSDHC_4GB.aspx
    .Message Edited by psychomania on 27-Nov-200703:22 PM

  • What is the field and Table for "Batch Class" and "Class Type" in QM.

    Hi All,
    What is the field and Table for "Batch Class" and "Class Type" in QM.
    Thanks,

    Hi,
      For batch class the class type value is '023' . This you can find from KLAH table and the fileld for class type is KLART..
    And also all the data related to batch class are found in tables INOB, KLAH,KKSK and for the characeteristics of batch materials you can refer AUSP table.
    In INOB table, for batch class, you need to give 023 in KLART field and  value MCH1 in OBTAB filed.
    Please check this and let me know if this you need any more details?

  • Creating a new "Class type" in release procedure.

    Hi guys,
    how can I create a new <b>"Class type"</b> in release procedure?

    Hi,
    But I do not know why anyone would create a new batch type for release strategies, it is totally unnecessary and provides no additional options. The class type indicates which objects can be classified and there is already one for release strategies.
    You can create a new class or add characteristics to the existing class used in the release strategy anyway.
    Ther is also NO WAY that two classes can be used in the release strategy and this new class type would not change this either???
    Steve B

  • Creating a new class type in the classification system

    We are wanting to classify objects in a ZTABLE.  We have a home grown system for defining our customer requirements that is used as the way for the sales people to communicate to the engineering dept. what the customer wants.  A new need has come up that seems to be a good fit to be able to classify our customer requirements.  I have been trying to create a new class type that is linked to our ZTABLE.  However, even though it looks like we should be able to do this I have not been able to do it.  I ran across some documentation that seems to imply that adding a new class type used to be possible, but no longer is.
    Can anyone verify that creating a new class type is still possible to do?  We are on ECC 5.0.

    Can someone point me in the right direction as to how to create my own Class Type.  Is there some documentation as to how to dow this? Other than what is fould in SPRO I have tried and tried but no joy for me. 
    This is what I have done so far:
    in SPRO:
    1) Created an Object Key for my table ZLO_CUSTREQ.  This table has a primary key of CRQNR (custormer requirements number which is I created)  The documentation says that I need to add this key field to structure RMCLY (I did that).  BUT, it also says the RMCLY is embeded in structure RMCLX and it is not.  Do I need to modify RMCLX to add RMCLY as an append structure?
    2) Went to Maintain Object types and Class types and selected my table. Double clicked on Class Types in the Dialog Structure tree, which displayed an empty list of class types. 
    I then Clicked New Entries button and filled in the fields: Class type(Z10), Description(Customer Requirements), Table(ZLO_CUSTREQ).  in the Screens group I selected Keywords and Characteristics.  In the Functions group I selected: Standard class type and Multiple classifications. I then Clicked the back arrow.  This returned me to the Class Types list which now displayed my new class type. 
    When I click the save button it kicks me out the the SPRO menu screen and I get the warning message "Class type Z10 does not have the classification status incomplete system" . 
    Then, it won't let me re-enter the Maintain Object types and Class Types screen due to an error "View cluster is already open, go back with F3"
    When I hit F3 I am returned to the main SPRO screen.  After navigating back to the Maintain Object types and Class types I continue to get the View cluster already open error.  The only way I can get back to Maintain Object types and Class types  is to completely exit SPRO and start over.  When I do, class type Z10 is gone.
    I have repeated this procedure several times with always the same results.
    Can anyone please help me?

  • Change documents of material master classification class type 001 and 300

    Dear guru ,
    I want to see the history of change documents of material master classification using MM02.
    The system allow to see the history only for class type 023.
    For class type 001 or 300 the change document isnu2019t available.
    I must do some settings or the function for these class type arenu2019t available ?
    Thanks.

    Dear ,
    changes in values for a characteristic can be monitored in CL20N but as for MM02/MM03 transaction only for class type 023.
    For class type 001 or 300 the change document isnu2019t available.
    Thanks.

  • Determine class type of Generic Parameter (not via getGenericSuperclass()!)

    I need to know the class type of a generic Parameter. Please imagine this class:
    class MyGenericClass<T>
    }In cases where other classes derived from MyClass and defined the generic parameter (like MyDerivedClass extends MyGenericClass<String>),
    this snippets works just fine:
    (Class<T>) ((ParameterizedType) getClass().getGenericSuperclass()).getActualTypeArguments()[0];But now I have no inheritance but the definition of the type parameter via instantiation:
    MyGenericClass<String> entity = new MyGenericClass<String>();The method "getGenericSuperclass()" does not suit my needs because it does not target the actual class. Nor can "getTypeParameters() " help me...
    After countless trying to retrieved the type information, I still have no clue how to determine for that case that (in my example) the type parameter
    is a 'String'.
    Does anyone know the solution?

    Serethos_0 wrote:
    Sure I could pass the class type itself as parameter to be stored in 'exportClassType'. But I only tried to adapt the idea used e.g. in Generic DAOs
    as descibed here: [http://community.jboss.org/wiki/GenericDataAccessObjects]. The big difference is, that in the Generic DAO example the typed
    information is available within the class definition ..
    Besides that I am open for any other suggestion!I would recommend passing around the Class object as you say.
    Some might suggest that you make MyGenericClass abstract, forcing any instantiation to be like this:
    MyGenericClass<String> entity = new MyGenericClass<String>() {};That would indeed cause the String type parameter to be available at runtime, since you're creating an anonymous inner class. But it leads to a convoluted and extremely statically expensive instantiation pattern. Using the class object is a better solution IMO.

  • Internal class type 023 cannot be used in class maintenance

    Dear PP gurus,
    I am creating class from  t code CL01 and  while entering class type 023         , i am getting a error message
    "Internal class type 023 cannot be used in class maintenance" . when i pressed F4 , in the list 023 is not present.
    In the develpopment client , when i do the same  023 , it allows be to create class
    pls help me wher i am missing or?
    Regards

    Hello All,
    I am facing a similar problem.
    I have checked the following customization "SPRO --> Cross Application component -->Classification system --> Class --> Maintain Object type and class,
    Here select the MARA table click on the object and check class type 023 is assigned or not."
    Class type 023 is not assigned there. When i try to add a new entry I get the following error message
    "Specify the key within the work area".
    I referred to the following note :OSS Note 1066606, but that is concerned with AFS component.
    Kindly provide me a solution as soon as possible.
    Regards,
    Julia

  • Object dependency doesn't work for class type 001.

    Dear All,
    I would like to use classification for picking up material.
    I set up a class with class type 001 and assign to material.
    When I use mm03 to search the material with class, the object dependency in the characterist doesn't work.
    Does the object dependency work for the class type 001?
    The example is as below.
    If the characteristic CH_CAR = '01', then the characteristic CH_COLOR can show Red and Write.
    If the characteristic CH_CAR = '02', then the characteristic CH_COLOR can show Black and Blue.
    I wrote a depency precondition for this scenior, but it does't work.
    If I change the class to type 300 and attached to a configurable material, then when I create a sales order and configure the material, and the dependency did work.
    Does the object depency only support the class type 300?

    you can have object dependency in characterisitcs attached to material class. In this thread underneath the class is 001
    Length & Width is not converted in classivication view
    you may not be able to find objects using dependencies used in classification
    Object Dependencies in Classification - Classification System (CA-CL) - SAP Library

Maybe you are looking for

  • Jabber for Windows Login failed with - "Must change at Next Login" for CUCM Authentication

    Jabber for Windows users cannot login when "User Must Change at Next Login" is selected in the CUCM credential Policy I found this Bug-ID: CSCuh84476 https://tools.cisco.com/bugsearch/bug/CSCuh84476 We use Jabber for Windows 9.7.4! I just want to kno

  • Automatic clearing of Intercompany  postings in In-House Cash?

    Dear Sirs, can anyone confirm that If we are using In-house Cash we can get intercompany invoices automatically cleared? For example: Company A: vendor: Company B: customer. If company A make an invoice over company B, when we process the payment in

  • REST call in FBA WebApp returns error 401 unauthorized

    Update: I found out that this is happening only in a webapplication where FBA is activated. How can this be related? As soon as I deactivate FBA, 401 is gone. Hello, I'm trying to do a very basic REST call from a Console application to my SharePoint

  • Namespace on wsdl request

    Hi all, we need to accept a wsdl request with out a namespace on the top element in the body but our system keeps rejecting it as its returning null. the request coming in is  <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/

  • Network Error Detection

    Greetings: I am writing an embedded PL/SQL program in Visual C++ by using Pro*C/C++. The program connects to a remote Oracle server, registers for a DBMS_alert, and waits for an alert by using waitone(). The problem that I am having is that I need a