Map.get(Object o) vs Map.get(K k) ?

Hi All,
I hace a question about Map (or may be TreeMap as it comes into my notice whle using TreeMap). I posted it on Collections related forum and got referred here
http://forum.java.sun.com/thread.jspa?threadID=684755
I was wondering why some methods of Map<k,V> specify Object as type for keys used and not the given type K. problem is that following code will throw a ClassCastException
String key="146564";
TreeMap<String, String> map = new TreeMap<String, String>();
map.put(key,key); /*If you uncomment this line you will get Exception*/
map.containsValue(new Long(key)); /*can compile */
map.containsKey(new Long(146564)); /*can compile */
String v = map.get("1");
//map.put(new Long(1), "");/*Can't compile*/
Exception in thread "main" java.lang.ClassCastException: java.lang.String
at java.lang.Long.compareTo(Long.java:34)
at java.util.TreeMap.compare(TreeMap.java:1093)
at java.util.TreeMap.getEntry(TreeMap.java:347)
at java.util.TreeMap.containsKey(TreeMap.java:204)
atTestClass.main(TestClass.java:27)It is suggested that since I am passing a Long to map.containsKey(), where as Map was declared as Map<String,String> I should expect to get such nasty runtime exceptions. My thinking is 'generics' are specifically designed to avoid such situations.
Can any one let me know why 'generics' are implemented such a way that is not orthognal accross various interfaces? i.e. why is it that I need to remember what instance of a Map was created with key/value pairs of Type A/B and which one with C/D, however if I am using Collection, it will be type checked at comple time? I would either expect to remember it always or to expet it to get type checked at compile time always.

This was heavily debated during the evaluation phase. The reason that get(Object) was favoured is basically backwards compatibility: the contract of Map talks only in terms of the equals(Object) method, and for many key types K there can be objects which are not of type K but are equal to a key of type K.
My personal view is that if get(K) introduces problems then you've used the wrong type for K, and your entire design is probably shoddy if there isn't a suitable interface type to use. Moreover, having get(K) would save me probably 5+ hours per year chasing bugs due to calling get (or Collection.contains, which is really the same issue) with the wrong object.
If you really want to compile against get(K), it's fairly straightforward to make a jar with a "fixed" java.util package and use this with javac -bootclasspath. I believe that as long as you don't distribute said jar (and you only need it for compilation, so that's fine) the licence permits this, but IANAL and this is not legal advice.

Similar Messages

  • In XI mapping, how to get number from a number_range object in SAP R/3

    HI All,
    I have a scenario where I need to read a Number_range object  in SAP R/3 or ABAP XI and retreive the current number.
    I need to use this number during the message mapping.
    (I read about JCO and RFC, but am a little confused about how-to and what is the correct approach)
    Just to let you know, I do not want to pass this number in the original IDOC coming from IDOC, so I need this lookup.
    Scenario:
    In MM, make a call to SAP.
    Get the latest number from SNRO( number-range object)
    Use this number in mapping.
    Any help pointers, greatly appreciated.
    Many thanks
    Shirin

    Shrin,
    Please find the parameters you need to specify while creating UDF
    Imports:javax.xml.transform.stream.StreamResult;com.sap.aii.mapping.lookup.;javax.xml.transform.dom.DOMSource;javax.xml.parsers.DocumentBuilder;java.io.;javax.xml.parsers.;org.w3c.dom.;org.xml.sax.;javax.xml.transform.;
    The Template for RFC Lookup
    String content = "";
    MappingTrace importanttrace;
    importanttrace = container.getTrace() ;
    //Filling the string with our RFC-XML (With Values)
    String m = "<?xml version=\"1.0\" encoding=\"UTF-8\"?><ns0:<Function Module name>xmlns:ns0=\"urn:sap-com:document:sap:rfc:functions\"></ns0:ZFI_GET_RUNID> ";
    RfcAccessor accessor = null;
    ByteArrayOutputStream out = null;
    try
    //1. Determine a channel (Business System, Communication channel)
    Channel channel = LookupService.getChannel("<Business System Name>","Communication channel name");
    //2. Get a RFC accesor for a channel.
    accessor = LookupService.getRfcAccessor(channel);
    //3. Create a xml input stream representing the FM request message.
    InputStream inputstream = new ByteArrayInputStream(m.getBytes());
    //4. Create xml Payload
    XmlPayload payload  =  LookupService.getXmlPayload(inputstream);
    //5. Execute Lookup
    Payload result = accessor.call(payload);
    InputStream in = result.getContent();
    //This are the extra step which i dont know what it mean
    //out = new ByteArrayOutputStream(1024);
    //byte[] buffer = new byte[1024];
    //for (int read = in.read(buffer); read > 0; read = in.read(buffer))
    //out.write(buffer,0,read);
    //content = out.toString();
    try {
    DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance();
    DocumentBuilder builder = factory.newDocumentBuilder();
    Document document = builder.parse(in);
    NodeList list = document.getElementsByTagName( "REsult" );
    Node node = list.item(0);
    if (node  != null)
         node = node.getFirstChild();
         if (node  != null)
              content = node.getNodeValue();
    } catch (Exception e) {
    importanttrace.addWarning("Error while closing accesor" + e.getMessage());
    catch (LookupException e)
    importanttrace.addWarning("Error While lookup" + e.getMessage());
    //This exception is not to be catch at this step as there is no try step before this
    //catch (IOException e)
    //importanttrace.addWarning("Error" + e.getMessage());
    finally
    if(out!=null)
      try{
           out.close();
    } catch (IOException e) {
    importanttrace.addWarning("Error while closing system" + e.getMessage());
    //7. close the accessor in order to free resources
    if (accessor!=null) {
    try{
          accessor.close();
    } catch (Exception e) {
    importanttrace.addWarning("Error while closing accesor" + e.getMessage());
    return content;
    Have mentioned in genric  where u need to specify the communication channel name, business service etc.,
    Moreover there is a field result, which is the output returned from the FM

  • Unale to get XSLT object in interface mapping

    Hi
    i had imported the zip file contaning xslt file for mapping in Import Archives .But during interface mapping, integration builder is not able to show me the created import archive object.
    Please Help me out.

    Hai Mitesh,
    After u r importing a <b>Zip</b> file ( which the zip file contains (<b>.xsl</b> extension...)),  make sure in the interface mapping to select xsl type and clik F4 to Select the zip file in the mapping program... and if u doesnt see ...
    try by clicking Environment --> Cache notifications and click refresh for some secs... then proceed with above steps u will <b>definitely</b> get...
    Regards,
    sridhar reddy . k

  • How get list of tables/functions/other objects used in a mapping?

    Hi,
    I would like to know list of objects such as tables, views, functions, procedures and table functions of all mappings in a module.
    Could any one please explain me, how can I do this using OMB+ scripting.
    Thank you,
    Regards,
    Gowtham Sen.

    OMBRETRIEVE MAPPING 'MAP_NAME' GET TABLE OPERATORS
    OMBRETRIEVE MAPPING 'MAP_NAME' GET VIEW OPERATORS
    OMBRETRIEVE MAPPING 'MAP_NAME' GET TRANSFORMATION OPERATORS
    OMBRETRIEVE MAPPING 'MAP_NAME' GET TABLE_FUNCTION OPERATORS
    Alternative variant (and maybe more simple) - use dictionary view DBA_DEPENDENCIES (or all_dependencies):
    select * from dba_dependencies where owner='MAP_OWNER' and type in ('PACKAGE','PACKAGE_BODY') and name='MAP_NAME'
    Oleg

  • Getting access to xiContext object in mapping

    Can someone please tell me how you get access to the xiContext object in XI mapping?

    What do you by "xiContext object"?

  • 'MAPI Session Handle' of the NGW 'Object Request Broker' could not be accessed (0x80004005) on attempt to get an address book

    Hi!
    When I try to access GW address book by calling
    DIGWAccount6::GetSystemAddressBook, or DIGWAccount6::AddressBooks, or even
    DIGWMessage::Send, I'm getting messagebox with title "Address Book Error"
    and message: "The 'MAPI Session Handle' of the Novell GroupWise 'Object
    Request Broker' could not be accesses. The address book cannot run (error:
    status: 0x80004005)."
    I'm using .NET and I only get this error when I create a console
    application. With windows application everything goes fine.
    I've tried reinstalling GW client, running fixmapi utility, installing
    different versions of MAPI CDO, but still got this problem.
    Any ideas?

    In the Application object.
    >>> On Monday, July 26, 2010 at 4:16 PM,
    shutchinson<[email protected]> wrote:
    > Where would we set this?
    >
    > Thanks!
    >
    > Scott
    >
    > Preston Stephenson;1755943 Wrote:
    >> Do you need to use the MAPI address book providers?
    >> Can you use MultiLogin and set MultiLoginAddressBookSupport = TRUE?
    >>
    >> Preston
    >>
    >> >>> On Tuesday, November 11, 2008 at 4:22 AM, Vladimir
    >> Iofik<[email protected]>
    >> wrote:
    >> > Hi!
    >> > When I try to access GW address book by calling
    >> > DIGWAccount6::GetSystemAddressBook, or DIGWAccount6::AddressBooks, or
    >> even
    >>
    >> > DIGWMessage::Send, I'm getting messagebox with title "Address Book
    >> Error"
    >>
    >> > and message: "The 'MAPI Session Handle' of the Novell GroupWise
    >> 'Object
    >> > Request Broker' could not be accesses. The address book cannot run
    >> (error:
    >>
    >> > status: 0x80004005)."
    >> > I'm using .NET and I only get this error when I create a console
    >> > application. With windows application everything goes fine.
    >> > I've tried reinstalling GW client, running fixmapi utility,
    >> installing
    >> > different versions of MAPI CDO, but still got this problem.
    >> >
    >> > Any ideas?

  • Map.get(K) and Map.get(Object)

    When I first saw the new 2.0 generics compiler, I was very pleased to see that the signature of Map.get() has changed (since 1.3) from:
        interface Map<K,V> { V get(Object obj); }to:
        interface Map<K,V> { V get(K key); }because it means buggy code like this:
        Map<File,Integer> fileSizeMap = new HashMap<File,Integer>();
        Integer sizeOfFile = fileSizeMap.get("/tmp/foo");
        if (sizeOfFile == null) {
            System.err.println("File not found in map");
        }(where I have mistakenly called Map.get() with a String rather than a File) will now get a compiler error rather than a fault raised several months after the application has gone live.
    So, as I say, I am very pleased with the new signature for Map.get(), although I would also like to see the following methods changed:
        boolean containsKey(Object)   -> boolean containsKey(K)
        boolean containsValue(Object) -> boolean containsValue(V)
        V remove(Object object)       -> V remove(K)However, I just read on http://cag.lcs.mit.edu/~cananian/Projects/GJ/Bugs/v20/map.html that Neal Gafter says that putting Map.get(K) into 2.0 was a mistake, and that it will be put back to Map.get(Object) in the next version.
    I do hope I haven't missed something obvious, but keeping these methods with Object parameters seems to me to be a backwards step from the excellent type safety benefits provided by Generics.
    Does anyone else agree with me that having get(K) would be beneficial in allowing the compiler to identify bugs that would otherwise only be discovered much later?
    Or, could someone explain to me why having get(Object) is preferable, and whether this reason is more important than the type safety issue I identified in my example code above?
    Many thanks in advance
    Geoff

    Gafter wrote:
    The reason the argument type is Object and not K is that existing code depends on the fact
    that passing the "wrong" key type is allowed, causes no error, and simply results in the
    key not being found in the map.But "existing code" does not use Generics, and therefore as with all other non-generic code, the authors of that code can choose to either leave it as it is (in which case their Maps will become Map<Object,Object> and Map.get() will then take an Object), or to upgrade it to Generics, and take advantage of the helpful compiler messages that may highlight some design flaws in the original code.
    In Jakarta Commons Collections (this is "existing code"), there's a class MultiHashMap which extends HashMap. When you call MultiHashMap.put(someKey, someValue) it appends someValue to an ArrayList that gets stored as the value in the HashMap. However when you call MultiHashMap.get(someKey), it returns a Collection of values, rather than just a single value.
    If they try to upgrade MultiHashMap to Generics, they are going to come up with a problem: they would be needing something like this:
        public class MultiHashMap<K,V> extends HashMap<K,V> {
            public V put(K key, V value) { ... }
            public Collection<V> get(K key) { ... }
        }which of course is not allowed, since Map<K,V>.get() returns V, not Collection<V>.
    Now, I don't hear anyone saying: This "existing code" relies on Map.get() returning an Object, so in Generics we're going to make Map.get() return Object rather than V.
    No, instead we (correctly) say: That MultiHashMap code was wrong to abuse the flexibility provided by the use of Object as the return value of Map.get(), and if it wishes to use Generics, it will either need to become MultiHashMap<K,Object>, or if it insists on being MultiHashMap<K,V>, it will not be allowed to extend HashMap.
    I really don't see the problem in using Generics (and a typesafe Java Collections API) as a means of highlighting problems in existing code. As I said before, existing code will continue to work as before, because List will become List<Object> and Map will become Map<Object,Object>.
    This is no worse than "accidentally" trying to get() with a key of the right
    type but the wrong value. Since none of these methods place the key into the
    map, it is entirely typesafe to use Object as the method's parameter.Suppose for a moment that when String.endsWith() was first written, it took an Object parameter instead of a String. If I were to say to you: This method needs to change its parameter from Object to String, would you tell me that that there's no need to make the change, because a String can only ever end in a String, and so it is entirely typesafe to use Object as the method's parameter?
    Geoff

  • Does an object get cloned when you put it in a Map?

    When you call the put method on a Map, does it clone the object you're "putting" in the Map, or does the Map just hold a reference?
    Thanks for any help!

    Everything is a reference (except the primatives like int, obviously). Java never does any of the nastiness of C++ where it will sometimes copy an object, and sometimes this and sometimes that. Everything except the primatives is a reference, and all method parameters are passed by value. Period.

  • Unable to map/get Attributes with import of LDIF Object Class

    Hi All,
    We are trying to take import of Customized Object Class and Attributes into OID through LDIF.
    LDIF import command is:
    ./ldapadd -p 3060 -h myhost -D "cn=orcladmin" -w Ac123456 -f xyzObjClass.ldif
    LDIF contents are:
    dn: cn=subSchemaSubentry
    changetype: modify
    add: objectclasses
    objectclasses: ( 1.3.6.1.4.1.1436.2.46 NAME 'ProviderObjClass' SUP ( organizationalPerson $ person $ top ) STRUCTURAL MAY ( attr1 $ attr2 ) )
    Note: attr1 and attr2 are already imported into OID.
    Result: We are able to create Object Class and also able to inherit Super Class. But we are not able to map the attributes to our Object Class.
    Can anybody help me in importing ?
    Thanks & Regards,
    Newbie

    Again, I don't work with Java and you should ask Java-related question in Flex (or Java) forum.
    Java or not - you need to package your server side language specific object into something that AS understands (text, XML, AMF object) and load this data into AS via, perhaps, URLLoader. Or you can open socket. Then you parse this data with AS3 code in SWF.

  • IDT SDK - getting object - table(s) mapping

    Hello,
    How do I find out which tables (in data foundation) using object in business layer?
    I try open universe business layer (blx) via sdk and get extra tables, but always return empty list.
    My code:
    public void getMapping() {
             SlContext context = null;
             IEnterpriseSession enterpriseSession = null;
             try {
                 context = SlContext.create();
                 enterpriseSession = CrystalEnterprise.getSessionMgr().logon(CMS_LOG_USER, CMS_LOG_PASS, CMS_LOG_HOST, CMS_AUTH_MODE);
                 context.getService(CmsSessionService.class).setSession(enterpriseSession);
                 LocalResourceService service = context.getService(LocalResourceService.class);
                 RelationalBusinessLayer businessLayer = (RelationalBusinessLayer) service.load(BLX_PATH);
                 RootFolder rootFolder = businessLayer.getRootFolder();
                 printObjectMapping(rootFolder);
                 service.close(businessLayer);
             } catch (SDKException e) {
                 System.out.println("Error: " + e.getMessage());
         protected static void printObjectMapping(BlItem biItem) {
             if (biItem instanceof BusinessObject) {
                 BusinessObject elem = (BusinessObject) biItem;
                 RelationalBinding binding = (RelationalBinding) elem.getBinding();
                 System.out.println("Object " + elem.getName() + " using tables: " + binding.getExtraTables());
             if (biItem instanceof BlContainer) {
                 for (BlItem item : ((BlContainer) biItem).getChildren()) {
                     printObjectMapping(item);
    BO 4.1 SP1
    Any ideas?

    It is in the com.sap.sl.sdk.authoring.businesslayer package.
    You obtain the service as you do the other SL services, with the SlContext.getService() method:
    BusinessLayerService blservice = myContext.getService(BusinessLayerService.class);
    Like all the other components of the SL SDK, it is referenced by an entry in the manifest of the all-encompassing sl_sdk.jar.  We've split (or hacked) this apart to put the individual components into our maven build and the internal jar is com.sap.sl.sdk.authoring.jar.  Not sure how you've configured your build but you should be able to find the class.
    Hope this helps.

  • Error while trying to get F4 help for a field mapped to an info object

    Hi,
    I am getting the following exception while trying to attach a search help to a drop down list box.The field belongs to a table on the BW server which has an explicit search help attached to it.I am getting the following exception:
    An exception occurred. This exception is dealt with in more detail below    
    . The exception, which is assigned to the class 'CX_BSP_SERVICES_SHLP', was neither            
    caught nor passed along using a RAISING clause, in the procedure "_ONCREATE"  "(METHOD)" . Since the caller of the procedure could not have expected this exception to occur, the running program was terminated. The reason for the exception is: The input help is not suitable.                                                  
    As I am new to BW server I am unable to find the solution.Please help me out.
    Regards
    Tejaswini

    Hi Craig,
    I was actually not using the f4 help of the
    IF_BSP_SERVICES class. Now I want to implement this as I have got many fields on my page. But I am getting the above mentioned error while doing this. The Code in OnInitialization() is:
    data: dataref1 type ref to data.
    data:wa_r8t_prog type ZR8T_S_API_PROG_H.
    get reference of wa_r8t_prog-ZR8CPRGTY into dataref1.
    try.
    call method runtime->ddic_utils->get_simple_helpvalues
    exporting
    data_object_ref = dataref1
    changing
    helpvalue_tab = t_vallist.
    catch cx_bsp_services.
    endtry.
    But I have a search help attached to 'ZR8T_S_API_PROG_H-ZR8CPRGTY' field
    My 'ZR8T_S_API_PROG_H' structure definition is as follows:
    .INCLUDE     ZR8T_REBATE_PROG          0     0     Rebate Program
    ZR8CPRGID     /BIC/OIZR8CPRGID     CHAR     32     0     Rebate Program ID
    COMP_CODE     /BI0/OICOMP_CODE     CHAR     4     0     Company Code
    ZR8CPRGTY     /BIC/OIZR8CPRGTY     CHAR     5     0     Program type
    Can I get f4 help from search help exits or do I have to use only value tables?
    Regards
    Tejaswini
    Message was edited by: Tejaswini Das

  • Type-mapping not working correctly, get "Unable to find a javaType for the xmlType" WARNING

    I'm manually creating a web-services.xml file, and using the autogen ant task to
    generate the codec XML/Java classes. The XML definition is provided by SAP.
    The ant build.xml file:
    <project name="buildWebservice" default="stubgen">
    <target name="stubgen">
    <clientgen ear="C:\projects\RMIS\ifrrequests\RMIS.ear"
    packageName="com.aa.rmis.webservice.client"
    clientJar="C:\projects\RMIS\ifrrequests\rmisws-client.jar"
    autotype="False" />
    </target>
    <target name="all" depends="stubgen"/>
    </project>
    The problem is seen below in the output from Ant. Note the WARNINIG. The problem
    is that the xml type cannot be mapped to the Java type.
    C:\projects\RMIS\ifrrequests>ant -buildfile clientbuild.xml
    Buildfile: clientbuild.xml
    stubgen:
    [clientgen] Generating client jar for RMIS.ear ...
    [clientgen] WARNINIG: Unable to find a javaType for the xmlType:['urn:sap-com:do
    cument:sap:business']:PaymentRequest.Create. Make sure that you have registered
    this xml type in the type mapping
    [clientgen] Using SOAPElement instead
    [clientgen] Compiling 4 source files to C:\DOCUME~1\944377\LOCALS~1\Temp\rmisws-
    client.jar-836624340
    [clientgen] Building jar: C:\projects\RMIS\ifrrequests\rmisws-client.jar
    BUILD SUCCESSFUL
    Total time: 17 seconds
    The Java source that has the implementation of the service methods is simply:
    package com.aa.rmis.webservice;
    import com.aa.rmis.ifr.request.*;
    public class TestService
    public TestService()
    public int serviceRequest(PaymentRequestCreate request)
    System.out.println("Received serviceRequest message");
    return 0;
    public void testStringRequest(String request)
    The web-service.xml file is attached, which contains the schema for the SAP PaymentRequest.Create
    object definition.
    Another problem I have, which is probably related, is that the service method
    that has a complex data type (non-built in data type) is not being deployed into
    the WebLogic server. But the other service method that simply takes a String
    parameter is.
    The steps I took are:
    1. Get XML from SAP Interface Repository (IFR) for PaymentRequest
    2. Use ant task autogen to generate the request codec classes
    3. Create the web-services.xml file by inserting the schema definition and the
    mapping file created by the autogen task, and defining the operations
    4. Build web-services.war file that contains all autogen compiled class files,
    the web-services.xml file, and the service implementation class
    5. Build the ear file that holds the web service files
    6. Use the clientgen ant task to generate (included above) to generate the client
    jar file that should contain the proxy for both of the service methods
    Environment:
    * WebLogic 7.02
    * JDK 1.3.1_06
    * JBuilder 9 Enterprise
    * Ant 1.4
    Possible causes:
    * Namespace not being used correctly
    * copied verbatim the mapping xml file generated by autogen into the web-services.xml
    file
    * xml-schema part of web-services.xml might not be set correctly
    * operation definition might not be using the correct namespace
    * Classpath used for ant might not be right
    * Doubt this is the problem, but I'm out of other ideas
    * Set by using the setWLEnv.cmd file provided by WebLogic
    * Tried adding the generated classes directory for my project to the classpath,
    but did not work
    I've been referencing the Programming WebLogic Web Services document throughout
    this entire process. I must be missing something.
    Can anybody from BEA help me out with this problem?
    Thanks in advance.
    [web-services.xml]

    Hi JD,
    I spent a few cycles looking over your web-services.xml file, however I
    don't have any suggestions other that one that looks like you have
    already tried, at the top, in the <schema...>
    targetNamespace="urn:sap-com:document:sap:business"
    Making edits to these generated files can be tricky and my only
    suggestion is to create a small reproducer to run by our outstanding
    support team.
    A quick look at our problem database shows one issue (CR095109) related
    to a similar problem at deploy time that was fixed with 7.0SP3. Again,
    the support folks will be able to help focus in on the issue.
    Regards,
    Bruce
    JD wrote:
    >
    The first posting contains the wrong web-services.xml file. Please refer to this
    one instead.
    "JD" <[email protected]> wrote:
    I'm manually creating a web-services.xml file, and using the autogen
    ant task to
    generate the codec XML/Java classes. The XML definition is provided
    by SAP.
    The ant build.xml file:
    <project name="buildWebservice" default="stubgen">
    <target name="stubgen">
    <clientgen ear="C:\projects\RMIS\ifrrequests\RMIS.ear"
    packageName="com.aa.rmis.webservice.client"
    clientJar="C:\projects\RMIS\ifrrequests\rmisws-client.jar"
    autotype="False" />
    </target>
    <target name="all" depends="stubgen"/>
    </project>
    The problem is seen below in the output from Ant. Note the WARNINIG.
    The problem
    is that the xml type cannot be mapped to the Java type.
    C:\projects\RMIS\ifrrequests>ant -buildfile clientbuild.xml
    Buildfile: clientbuild.xml
    stubgen:
    [clientgen] Generating client jar for RMIS.ear ...
    [clientgen] WARNINIG: Unable to find a javaType for the xmlType:['urn:sap-com:do
    cument:sap:business']:PaymentRequest.Create. Make sure that you have
    registered
    this xml type in the type mapping
    [clientgen] Using SOAPElement instead
    [clientgen] Compiling 4 source files to C:\DOCUME~1\944377\LOCALS~1\Temp\rmisws-
    client.jar-836624340
    [clientgen] Building jar: C:\projects\RMIS\ifrrequests\rmisws-client.jar
    BUILD SUCCESSFUL
    Total time: 17 seconds
    The Java source that has the implementation of the service methods is
    simply:
    package com.aa.rmis.webservice;
    import com.aa.rmis.ifr.request.*;
    public class TestService
    public TestService()
    public int serviceRequest(PaymentRequestCreate request)
    System.out.println("Received serviceRequest message");
    return 0;
    public void testStringRequest(String request)
    The web-service.xml file is attached, which contains the schema for the
    SAP PaymentRequest.Create
    object definition.
    Another problem I have, which is probably related, is that the service
    method
    that has a complex data type (non-built in data type) is not being deployed
    into
    the WebLogic server. But the other service method that simply takes
    a String
    parameter is.
    The steps I took are:
    1. Get XML from SAP Interface Repository (IFR) for PaymentRequest
    2. Use ant task autogen to generate the request codec classes
    3. Create the web-services.xml file by inserting the schema definition
    and the
    mapping file created by the autogen task, and defining the operations
    4. Build web-services.war file that contains all autogen compiled class
    files,
    the web-services.xml file, and the service implementation class
    5. Build the ear file that holds the web service files
    6. Use the clientgen ant task to generate (included above) to generate
    the client
    jar file that should contain the proxy for both of the service methods
    Environment:
    * WebLogic 7.02
    * JDK 1.3.1_06
    * JBuilder 9 Enterprise
    * Ant 1.4
    Possible causes:
    * Namespace not being used correctly
    * copied verbatim the mapping xml file generated by autogen into
    the web-services.xml
    file
    * xml-schema part of web-services.xml might not be set correctly
    * operation definition might not be using the correct namespace
    * Classpath used for ant might not be right
    * Doubt this is the problem, but I'm out of other ideas
    * Set by using the setWLEnv.cmd file provided by WebLogic
    * Tried adding the generated classes directory for my project to
    the classpath,
    but did not work
    I've been referencing the Programming WebLogic Web Services document
    throughout
    this entire process. I must be missing something.
    Can anybody from BEA help me out with this problem?
    Thanks in advance.
    Name: web-services.xml
    web-services.xml Type: ACT Project (text/xml)
    Encoding: base64

  • Not able to get distict values even after defining  MAP MEMBER FUNCTION

    Hi,
    I am trying to get distinct values from a query to a table type. Please see the code below
    CREATE OR REPLACE TYPE T_COPY_EVNT_DTL
    IS
      OBJECT
        eventId               VARCHAR2(100),
        eventDescription      VARCHAR2(100),
        promoMonthDescription VARCHAR2(100),
        promoStartDate        VARCHAR2(100),
        promoEndDate          VARCHAR2(100),
        PROMOCOSTSTARTDATE    VARCHAR2(100) ,
        MAP MEMBER FUNCTION sort_key
        RETURN VARCHAR2 );
    CREATE OR REPLACE TYPE BODY T_COPY_EVNT_DTL
    AS
      MAP MEMBER FUNCTION sort_key
      RETURN VARCHAR2
    IS
    BEGIN
      RETURN eventId ;
    END;
    END;
    CREATE OR REPLACE TYPE T_EVENT_TABLE
    IS
      TABLE OF T_COPY_EVNT_DTL;
              with event_data as (
    select '1' event,'event1' event_desc,'monthdesc1' promo_month_desc ,'01/01/2001' promo_start_date     ,'01/01/2002' promo_end_date,'01/02/2001' promo_cost_start_date from dual union all     
    select '1' event,'event1' event_desc ,'monthdesc1'promo_month_desc ,'01/01/2001' promo_start_date     ,'01/01/2002' promo_end_date,'01/02/2001' promo_cost_start_date from dual union all
    select '3' event,'desc3' event_desc ,'monthdesc3' promo_month_desc,'01/01/2001' promo_start_date     ,'01/01/2002' promo_end_date,'01/02/2001' promo_cost_start_date from dual union all
    select '2' event ,'desc2' event_desc ,'monthdesc2' promo_month_desc ,'01/01/2001' promo_start_date     ,'01/01/2002' promo_end_date ,'01/02/2001' promo_cost_start_date from dual )
    SELECT  cast(collect(distinct t_copy_evnt_dtl(event,
                                                                                                                        event_desc,
                                                                                                                        promo_month_desc,
                                                                                                                        promo_start_date,
                                                                                                                       promo_end_date,
                                                                                                                  promo_cost_start_date) ORDER BY
                                                                event_desc,
                                                                promo_month_desc,
                                                                promo_start_date,                                                   
                                                                promo_end_date,                                           
                                                                promo_cost_start_date) as t_event_table)  from event_data;
    result :
    T_EVENT_TABLE('T_COPY_EVNT_DTL('2','desc2','monthdesc2','01/01/2001','01/01/2002','01/02/2001')',
              'T_COPY_EVNT_DTL('3','desc3','monthdesc3','01/01/2001','01/01/2002','01/02/2001')',
              'T_COPY_EVNT_DTL('1','event1','monthdesc1','01/01/2001','01/01/2002','01/02/2001')',
              'T_COPY_EVNT_DTL('1','event1','monthdesc1','01/01/2001','01/01/2002','01/02/2001')')Please help me to find out the reason why it is not working...

    Remove the comma from T_COPY_EVNT_DTL TYPE.
    ORA-22800 indicates invalid user-defined type.
        PROMOCOSTSTARTDATE    VARCHAR2(100) ,
        MAP MEMBER FUNCTION sort_keyAnd it will be fine.
    SQL> CREATE OR REPLACE TYPE  T_COPY_EVNT_DTL
      2  IS
      3    OBJECT
      4    (
      5      eventId               VARCHAR2(100),
      6      eventDescription      VARCHAR2(100),
      7      promoMonthDescription VARCHAR2(100),
      8      promoStartDate        VARCHAR2(100),
      9      promoEndDate          VARCHAR2(100),
    10      PROMOCOSTSTARTDATE    VARCHAR2(100),
    11      --,
    12      MAP MEMBER FUNCTION sort_key
    13      RETURN VARCHAR2 );
    14  /
    Type created
    SQL>
    SQL> CREATE OR REPLACE TYPE BODY T_COPY_EVNT_DTL
      2  AS
      3    MAP MEMBER FUNCTION sort_key
      4    RETURN VARCHAR2
      5  IS
      6  BEGIN
      7    RETURN eventId ;
      8  END;
      9  END;
    10  /
    Type body created
    SQL>
    SQL> CREATE OR REPLACE TYPE T_EVENT_TABLE
      2  IS
      3    TABLE OF T_COPY_EVNT_DTL;
      4  /
    Type created
    SQL>
    SQL>     with event_data as (
      2  select '1' event,'event1' event_desc,'monthdesc1' promo_month_desc ,'01/01/2001' promo_start_date  ,'01/01/2002' promo_end_date,'01/02/2001' promo_cost_start_date from dual union all
      3  select '1' event,'event1' event_desc ,'monthdesc1'promo_month_desc ,'01/01/2001' promo_start_date  ,'01/01/2002' promo_end_date,'01/02/2001' promo_cost_start_date from dual union all
      4  select '3' event,'desc3' event_desc ,'monthdesc3' promo_month_desc,'01/01/2001' promo_start_date  ,'01/01/2002' promo_end_date,'01/02/2001' promo_cost_start_date from dual union all
      5  select '2' event ,'desc2' event_desc ,'monthdesc2' promo_month_desc ,'01/01/2001' promo_start_date  ,'01/01/2002' promo_end_date ,'01/02/2001' promo_cost_start_date from dual )
      6  SELECT  cast(collect(distinct t_copy_evnt_dtl(event,
      7                                                 event_desc,
      8                                                 promo_month_desc,
      9                                                 promo_start_date,
    10                                                promo_end_date,
    11                                              promo_cost_start_date) ORDER BY
    12                          event_desc,
    13                          promo_month_desc,
    14                          promo_start_date,
    15                          promo_end_date,
    16                          promo_cost_start_date) as t_event_table)  from event_data;
    CAST(COLLECT(DISTINCTT_COPY_EV
    <Object>

  • Get Map values using loops

    Hi,
    With a vector I can have a loop and to get the values with a index.
    Vector vec = new Vector()
    for(int idx=0; idx>vec.size(); idx++){
        System.out.println(vec.get(idx).toString());
    }I can do something similar with a map ? in other words have a loop and get the map values.
    I know that the map a other java.util Collections don't have a
    public Object get(int index)
    method as Vector, but How I can simulate this in a map.
    Some idea ??
    thanks

    what about using an iterator?
    Iterator it = map.values.iterator();
    while (it.hasNext()) {
    Object o = it.next();
    hf,
    dani

  • How to set/get the values thru Wedbynpro coding for User mapping fields

    Hi All
    In system object we have the user mapping fields like District,city,plant,Salesmanager.
    now we want to set/get the values of these usermapping fields of system object thru webdynpro coding...
    if anybody have sample codes of the same then it would be great help to me
    Thanks in advance
    Thanks
    Trisha Rani

    Hi Kavitha
    Thanks for your reply
    My requirement is exactly as follows.
    1) i have created one portal system object in system administration and also i created usermapping fields in the system object from the usermanagement  in system object.
    i created the user mapping fields like Plant,SalesManager,District etc.
    i also created the system alias name for the same system object
    2)  Now i came to persoanlize link and mapped the system object to the portal user.
    while mapping to the system object we need to enter Mapping userId, Password , once we enter these values and we can also enter the values of usermapping fields which we defined while creating the system object ( for example District,Salesmanager,Plant etc)
    once we enter all the values and click on save then these usermapping  values to be mapped to the portal user.
    3) Now my requirement is , i  want to control the usermapping field values thru webdynpro coding for setting/getting the values.
    I need sample code of the same.
    Please let me know if u need more details on the same.
    Thanks
    Trisha Rani

Maybe you are looking for

  • Blue Screen after installing WRT600N

    I have been running two wired high-end machines for over a year with an old Linksys 10/100 wired and wireless B Router.  I wanted to get the wired and wireless speed a bit faster so I bought the WRT600N mainly for the Gigabit switch and the USB port.

  • Use of asp:Grid in SharePoint 2010

    Hi, I have a form in SharePoint where data from a table in Database is exposed to user via asp:Grid. This grid has bunch of input fields and checkboxes to represent data in the table. There is also a Save button on the form upon pressing it, data sho

  • Transfering Windows Photo Gallery tags to iPhoto

    Hi there everyone! I just bought a macbook . I transferred my pictures from my Vista desktop to my new macbook using an external HD. However, the tags from Windows Photo Gallery did not transfer over as keywords into iPhoto . The weird thing is some

  • Where are the latest files that be downloaded in the computer?

    a problem confused me recently.i cannot find the files which be downloaded by adobe application manager. so, who can help me? thanks.

  • Boot with Startup CD plus simple backup?

    Is it possible to reboot to a formatted iMac with just the original 10.6 startup cd plus a simple backup (SilverKeeper) of library, system, applications and users?  Now using 10.6.8.