Migrating Legacy APIs to use Generics

hi,
I am migrating a DB facade type API to use generics.
This class can execute queries and has a API of the form
public List query(Query myQuery);
Obviously I'd much prefer to return a type safe list e.g.
public <T extends BusinessEntity List<T> query(Query<T> myQuery);
So the Query class has a concept of a Type which has relevant so API's it is used in knows what type it is returning.
My first question is, I feel a bit parameterising the Query class. The only reason why it is parameterised is so that when it is used in API's such as above.
It has not other purpose. Have I gone off on a tangent here?
Also, in some cases when the Applicaion is creating Query objects, it's obvious what to set the generic parameter to and it's very easy.
But for other cases it's not or it's not as important that it is set.
This could mean the design ends up where sometimes Query is parameterised and sometimes it is not. This sounds very messy.
I would appreciate your opinions :-) Are my better off just not parameterising the Query class?
I would then have an API such as:
public List<? extends BusinessEntity> query(Query query);
Maybe that's a better way to go? Any rule of thumb here?
Note: before anyone says it JPA is not possible :-)

[JPA2.0 perhaps|http://www.ibm.com/developerworks/java/library/j-typesafejpa/] ? Looks like they when with the typed Query so no harm doing the same I think.

Similar Messages

  • Getting information about a class using generics...

    Hi there.
    I have declared a class: "public class SomeClass<SC extends SomeClass>{/*Do something*/}".
    Can anyone tell me why a statement like "System.out.println(SC.class.getSimpleName());" within a method defined in SomeClass will not compile? Is there some other way to achieve what I want?

    YoungWinston wrote:
    Owen Thomas wrote:
    Well then, it would be great to be able to key a switch that tells the compiler one isn't working with "legacy code", if this might allow generics to reach a hitherto untapped potential.I don't see how, since not everybody is going to need (or want) such a switch. It also sounds like a recipe for disaster. Should we add such a switch for every enhancement that might have backwards-compatibility problems?Isn't that what the "deprecated" feature is for? Sure, there'll be backwards compatibility issues for a while, but after a few years, with management, things should settle as code is moved from pre to post "super-generics".
    Much of the Java core, and many third-party libraries might have to be re-written in that circumstance... economic stimulus.How could the Java core have been re-written if it requires use of a "not backwards-compatible" flag?i have not reason to believe that code compiled under a super-generics switch need not be backwards-compatible. One may have to simply exercise care in its use.
    I didn't want to bore you with trivia, and I didn't want you to frustrate me with more quips (well-meant though I'm sure they are) about how to write code. ;-)In which case I can only assume that you're using generics for something that probably, more correctly, requires reflection. Have you looked at the relevant parts of Class, as I suggested?No, but as you are impressing on me to have a look, I could do no wrong to have a sniff around. However, with no specific motivation in the current context, I don't think anything will catch my eye. The current need isn't great enough.

  • API's used in Interface programs of Oracle Applications

    hi
    can any one let me know about the PL/SQL API's that are used in interface programs of oracle applications.
    in what cases we are using them
    and if possible their syntax
    thanks in advance
    bye

    Pl Sql APIs are used for uploading / correcting the mass Data of Oracle HRMS and Oracle Payroll , For Technical person they are Fast and Easy for data Migration Purpose
    You Can Seach more on Metalink.
    You can search these APIs from your Data Base where name like '%API'

  • Right way to use generics for cellular automatons?

    Hi,
    i've got a question about using generic types in combination with subclassing (which should be used in a cellular automaton),
    In fact there are only 3 classes that are necessary to understand my problem:
    - Cell (abstract)
    - CellularAutomaton
    - SubclassedCell (extends Cell)
    These classeses work as follows:
    A cellular automaton holds some cell's with respect to the order they were added. The cell itself holds some properties and the most important function in this small "framework". This function is "performCellAction(CellularAutomaton ca)". It retrieves the "neighbor" cells from the given parameter and calculates a new state using these neighbors.
    The way i implemented this using generics is:
    public class CellularAutomaton<T extends Cell>{
      private List<T> cells;
      public T getLeftNeighbor(T cell) { ... } // gets the left neighbor of the given cell
      public T getRightNeighbor(T cell) { ... } // gets the left neighbor of the given cell
    public abstract class Cell [
      public void performCellAction(CellularAutomaton<? extends Cell> ca) {}
    public class SubclassedCell extends Cell {
      private String str;
      public void performCellAction(CellularAutomaton<? extends Cell> ca) {
        Cell left = ca.getLeftNeighbor();
        // PROBLEM:
        // How to call left.getStr() here???
        // How can i be sure that ca contains objects of class subclassedCell (or objects of subclasses of subclassedCell) ... and not objects of class cell or another subclasses cell
      public String getStr() {}
    }In fact i found "something like a solution", which looks like this:
    public class CellularAutomaton<T extends Cell>{
      private List<T> cells;
      public T getLeftNeighbor(T cell) { ... } // gets the left neighbor of the given cell
      public T getRightNeighbor(T cell) { ... } // gets the left neighbor of the given cell
      public void computer() {
        for (T cell: cells) {
          // compiler warning here!!
          cell.performCellAction(this);
    public abstract class Cell<T extends Cell<?>> [
      public void performCellAction(CellularAutomaton<T> ca) {}
    public class SubclassedCell extends Cell<SubclassedCell> {
      private String str;
      performCellAction(CellularAutomaton<SubclassedCell> ca) {
        SubclassedCell left = ca.getLeftNeighbor();
        left.getStr(); // works here
      public String getStr() {}
    }However, even in this "working" solution i get a compiler warning at the method CellularAutomaton->computer():
    The warning is Type safety: The method performCellAction(CellularAutomaton) belongs to the raw type Cell. References to generic type Cell<T> should be parametrized and Cell<T extends Cell<?>> also looks very uncommon to me.
    Is there a betted way to achieve the goal to access left.getStr() in the performCellAction of the subclassed cell??
    Regards,
    Niko

    I thought of that myself, but if i do this, i get the following error:
    The method performCellAction(CellularAutomaton<capture#1-of ?>) in the type Cell<capture#1-of ?> is not applicable for the arguments (CellularAutomaton<T>)

  • What are the common APIs we use in oracle interface

    What are the common APIs we use in oracle interface,and any APIs are there for validation Of data During Tranfer to interface table.
    How to find Api s in oracle applications in Individual modules

    For 11i, all public APIS are listed at http://irep.oracle.com
    For R12, use the "Integration Repository" responsibility in your R12 instance to list the APIs available in that instance
    HTH
    Srini

  • How to use Generic Object Services(GOS) for each table control record.

    Dear Expert,
                       I am using generic object services for document attachment but i am facing a problem while attaching document to a table control row. my requirement is to attach separate document for each and every row of table control but  i am unable to attach document row wise of the table control.for each row GOS should display corresponding attached document not all the attached document.
    Thanks in Advanced
    Bhuwan Tiwari
    Edited by: BHUWAN TIWARI on Feb 8, 2011 4:16 PM
    Edited by: BHUWAN TIWARI on Feb 8, 2011 4:16 PM

    You haven't explained what object and object key you're using, nor have you provided any indication of how you implemented the GOS attachment functionality.  You need to provide more information to resolve an issue like this.

  • Attach doc from external content server- using Generic Object Service (GOS)

    Dear All,
    i have intergrated an external content server to SAP using SAP archive link. All the scanned document are there in Content server and corresponding entries are done in SAP.I can search and view document using tcode : OAAD
    Please tell me steps for "how to attach a document from external content server using Generic Object Service "
    Scenario is :  For example when we change any Master records or create a new PO, or do some financial transaction then i need to attach the supporting document which is there in my content server connected  to SAP.how do we manual attach a Document in SAP using GOS.
    Do we need to do some special configuration to use GOS .please give the steps from initial.
    Thanks
    sandeep

    Hello,
    Check your configuration of document type assignement to required business document - object type, Archivelink table, content repository in OAC3 transaction.
    Goto respective business document > Click on GOS > Create > Store business document - Here you can see defined document type with desctiption. Double click on this the assign your document to this business document. Save it.
    This will help in attaching the document to your required business document.
    To verify you can check the archivelink table or by transaction OAAD.
    Hope this will help you.
    -Thanks,
    Ajay

  • How to attach document using Generic Object Service

    Hi all,
    How can i create attachment to the parked invoice using Generic Object services? i want function modules which are used to do it.
    Actually I want to do this from the business object method. I am having word document as one of the workitem step. once i get this document I need to attach this document to the parked invoice so that users can see that document by view object list.
    Its urgent.
    thanks.

    Hello,
    Check your configuration of document type assignement to required business document - object type, Archivelink table, content repository in OAC3 transaction.
    Goto respective business document > Click on GOS > Create > Store business document - Here you can see defined document type with desctiption. Double click on this the assign your document to this business document. Save it.
    This will help in attaching the document to your required business document.
    To verify you can check the archivelink table or by transaction OAAD.
    Hope this will help you.
    -Thanks,
    Ajay

  • Attach Documents using Generic Object Services

    With reference to Manual Bassani's SDN Contribution of code examples on how to attach documents using Generic Object Services - we have found that since implementing ECC 6 the following code no longer works (at the end of page 9):
    CALL CREATE ATTACHMENT SERVICE FROM TOOLBAR
    WHEN 'ATTACH'.
    CALL METHOD MANAGER->START_SERVICE_DIRECT
    EXPORTING
    IP_SERVICE = 'CREATE_ATTA'
    IS_OBJECT = OBJ
    EXCEPTIONS
    NO_OBJECT = 1
    OBJECT_INVALID = 2
    EXECUTION_FAILED = 3
    OTHERS = 4.
    It is necessary to use IP_SERVICE = 'PCATTA_CREA' to get this to function correctly.
    The original document can be found at [https://www.sdn.sap.com/irj/sdn/go/portal/prtroot/docs/library/uuid/0e6b0d95-0a01-0010-4696-ca0a48de5fb3]

    Check the Naimesh Patel Blog he explain very well
    http://help-abap.blogspot.com/2009/02/generic-object-services-gos-toolbar.html

  • How to trigger a workflow using generic object services?

    Hi Experts,
    Let me know on how to trigger a workflow using generic object services.
    My requirement is to trigger the FI document reversal document using Object services.
    Any info or docs relevant to this, please share with me..
    Thanks,
    Dinesh.

    Dinesh,
    First of you need to check if the transaction has a BO (in released status) published to use the GOS.
    These are the pre-requisites for GOS
    http://help.sap.com/saphelp_46c/helpdata/en/94/aa532cddd511d289860000e8216438/content.htm
    Once done.. check that you have valid workflow linkages active for this BO.
    Now when you click on the 'start workflow' the system will show all relevant workflows for the BO to choose from and to start.

  • How to start to work on MDM JAVA API by using webdynpro for java

    Hi all
    I have basic idea on MDM business package thru portal by using standard iViews.
    now i am planning to work on MDM JAVA APIs by using Webdynpro for Java as UI.
    1) can you please share the required documents on the same. how to start working on this by using MDM JAVA APIs in webdynpro for java
    2) what are the JARs files are required and how to integrate those jar files into webdynpro for java application.
    3)  is there any SDN help on MDM JAVA API with webdynpro for java? . can you please send the link on the same.
    4) can you please help by providing sample code on how to use JAVA APIs for retrieving,deleting,inserting and Updating the data in the database.
    if anybody helps on the same then it is the great help to me.
    points are always rewardable...
    Regards
    Suresh babu

    Hi Suresh,
    You can have the MDM JAVA API javadocs from the link
    http://help.sap.com/javadocs/MDM/SP06P2/index.html
    There you can see a package named com.sap.mdm.examples.The classes in it contains some examples using which you can start understanding the code.
    You need to have MDM JAR files for it. And these JAR files to be used at build time can be added to the project thru :-
    Right click on project-> properties->Java Build Path - > Add external JARs
    At run time you can add them the reference in
    Right click on project-> properties->web dynpro references->library reference.
    Thanks
    Namrata

  • Which API can use to save PDF document with Adobe Reader 9?

    Hello,
        which API can use to save PDF document with Adobe Reader 9? It is said that "CosDocSaveWithParams" can't be used.
    thanks!
    jimmy

    Unless the PDF file is "READER ENABLED for SAVE" (see the adobe product pages on LiveCycle Reader extensions server)
    You are not able to call a Save at all, if the document is reader enabled then you need to use the JavaScript call to save the document,
    As you appear to be wanting to do this in a plug-in you would need to call the script from a plug-in, this can be done using the AFExecuteThisScript () function call.
    Please note that this does will fail if the document is not reader enabled for save and you need to include the Forms HFT in your plug-in,
    This plug-in would also have to be approved by Adobe to be used with the reader and as you are implementing a function that is available in the full Acrobat product this may not be a straight forward approval.
    HTH
    Malky

  • Poor Performance using Generic Conectivity for ODBC

    Hi my friends.
    I have a problem usign Generic Conectivity , I need update 500,000 records in MS SQL Server 2005, I'm using Generic Conectivity for ODBC. In my Oracle Database i have create a DB_LINK called TEST to redirect to MS SQL Server database.
    Oracle Database: 10.2.0.4
    MS SQL Server version: 2005
    The time for update 1,000 records in MS SQL Server using DBMS_HS_PASSTHROUGH is ten minutes. This is a poor performance.
    This is de PL/SQL
    DECLARE
    c INTEGER;
    nr INTEGER;
    CURSOR c_TEST
    IS
    SELECT "x", "y"
    FROM TEST_cab
    WHERE ROWNUM <= 1000
    ORDER BY "y";
    BEGIN
    FOR cur IN c_TEST
    LOOP
    c := DBMS_HS_PASSTHROUGH.OPEN_CURSOR@TEST;
    DBMS_HS_PASSTHROUGH.PARSE@TEST(
    c,
    'UPDATE sf_TEST_sql
    SET observation= ?
    WHERE department_id = ?
    AND employee_id = ? ');
    DBMS_HS_PASSTHROUGH.BIND_VARIABLE@TEST (c, 1, 'S');
    DBMS_HS_PASSTHROUGH.BIND_VARIABLE@TEST (c, 2, 'N');
    DBMS_HS_PASSTHROUGH.BIND_VARIABLE@TEST (c, 3, 'ELABORADO');
    DBMS_HS_PASSTHROUGH.BIND_VARIABLE@TEST (c, 4, 'PENDIENTE');
    DBMS_HS_PASSTHROUGH.BIND_VARIABLE@TEST (c, 5, cur."x");
    DBMS_HS_PASSTHROUGH.BIND_VARIABLE@TEST (c, 6, cur."y");
    nr := DBMS_HS_PASSTHROUGH.EXECUTE_NON_QUERY@TEST (c);
    DBMS_HS_PASSTHROUGH.CLOSE_CURSOR@TEST (c);
    COMMIT;
    END LOOP;
    END;
    You can help, how better the performance for update 500,000 record by record in MS SQL Server. I need advantages of use Oracle Transparent Gateway for Microsoft SQL Server.
    your's can suggest my another solution ?
    Thanks.

    Hi,
    There are no real parameters to tune the gateways. You should turn on gateway debug tracing and check the SQL that is being sent to SQL*Server to make sure is update statements and nothing else.
    If this is the case then the time taken will be down to various factors, such as network delays, processing on SQL*Server and so on.
    How long does it take to update the same number of records directly on SQL*Server without the Oracle or the gateway involved or if you use another non-Oracle client to do the same updates across a network, if a network is involved ?
    It may be possible to improve performance by changing the HS_RPC_FETCH_REBLOCKING parameter, so have a look at this note in My Oracle Support -
    Tuning Generic Connectivity And Gateways (Doc ID 230543.1)
    Regards,
    Mike

  • 've recently upgraded to FireFox v22.0. Originally, a legacy XBAP I use always opened correctly in FireFox and had no problems displaying or running. As of v22.

    I've recently upgraded to FireFox 22. Originally, a legacy XBAP I use always opened correctly in FireFox and had no problems displaying or running. As of 22, it won't even attempt to download the application, let alone try and display it.
    I have the windows Presentation Foundation 3.5.30729.1 installed, which is the same version I have been using in older versions.
    Can anyone shed some light on any changes that would have effected this?

    Hi, I have a similar problem. I did attempt the *.rdf fix on a test system, but it didn't work (em:maxVersion was already 22).
    We got about inflow of phone calls from our clients experiencing the problem mentioned above from the 2nd of July onwards... and more are phoning in.
    All the complaints come from clients (+- 10 so far and rising in number) using Firefox v22 (we have checked), and all of them have said that it was working previously.
    We downgraded one of the clients to an older version of Firefox, and it worked again. So far we are telling our clients to downgrade until a fix comes out, or use Internet Explorer (*blush*)

  • APEX 4.0 "Use Generic Column Names" not working

    Hi,
    I have a report which is a SQL query (PL/SQL function body returning SQL query) in APEX 4.0. For this region i have selected the option "Use Generic Column Names (parse query at run time only)".
    For some reason when I run the page the browser just shows the error "The requested URL /apex/f was not found on this server". This happens only for the region type "SQL query (PL/SQL function body returning SQL query)" . If I choose the report region as SQL query and select the option "Use Generic Column Names (parse query at run time only)" That works fine. This happens only in APEX 4. Is it an apex 4 bug or am I missing something?
    Thanks
    Sashika.

    Hi,
    Just managed to get it running. The Apex 4.0 SQL query (PL/SQL function returning SQL) works just fine. I had a small error in the query itself. In the PL/SQL function I had a referenced page item whose value in the initial run is set to null which is making the fuzz. Just adding an NVL resolved the problem.

Maybe you are looking for

  • Dynamic image does not work in the template builder plug-in (Apex-BI Intgr)

    Hi all, I posted this problem in the BI Publisher topic but nobody responded maybe this is because mods thought this is an Apex-BI integration issue. If I'm in the wrong place, please do warn me. The documentation says: Direct Insertion Insert the jp

  • Can't connect to an extended Airport Express?

    My network is set up in the following way (see photo) 1 Time Capsule + 2 Airport Express to extend the network. No computers or devices can connect to the Airport Express named "AE02"? They all ONLY connect to the middle Airport Express called "AE01"

  • Firefox 4 doesn't allow MacBook Pro Trackpad features to work, for eg. zooming in and out by "pinching"

    I downloaded Firefox 4 and immediately noticed I could not zoom in and out by using the two finger "pinch" action used on MacBook Pro trackpads. I reverted to Firefox 3.6 and it works just fine. Could you please advise me how to rectify the fault on

  • Appleworks 6.2.9 Updater

    Updater will not open because "The default location required for this install could not be found. The install will be cancelled." The updater is in the same Applications folder as Appleworks 6. Both are standard English versions. Running Disk Utility

  • Help with Logic Express 8

    I am new to Logic Express 8. I Need help finding the tempo that I used to record an audio track. I recorded a guitar track and can't remember what tempo or the bp (beats per minute) setting I used when recording this track. Is there a way to retrieve