Interface methods with Exceptions

I have an interface like the following
public interface FooInterface
     void doMethod() throws Exception;
}I've created a class which implements the interface
public class BarClass implements FooInterface
     public void doMethod()
          // Code...
}Why is it that when I compile the class, no warnings or compiler errors are generated when the exception reference is absent. When I change the signature of the class method to become..
public void doMethod() throws ExceptionThe compiler error that appears is...
doMethod() in BarClass cannot implement doMethod() in FooInterface; overridden method does not throw java.lang.Exception
I'm confused. I recall seeing the opposite. That is, aren't compiler errors generated when I fail to add the exception to the implemented method in the class...Isn't that necessary to comply with the contract specified by the interface..

When you implement an interface (or override amethod in a parent class)
you can declare that you throw a narrower set ofexceptions--including
none--because that doesn't violate the interface's(or parent class')
promise not to throw more than that exception.Then the interface will define only "as bad as things
could be" (struggling for words here) but will not
impose requirements on the class to alert calling
methods that the exception could be thrown.Yes, the interface is declaring a "things will be no worse than this" promise, but the method still has to declare any unchecked exceptions that it could throw. If the interface says throws FooException, BarException, then the implementing method is allowed to throw FooE, BarE, and any of their children. But if it turns out that my implementation only throws FooE, then I can declare throws FooE and skip the BarE in the implementation. If I also throw BarE, then I have to declare it. If the implementation also throws BazE and doesn't declare it, the compiler will complain about throwin an exception without declaring it, but if I declare it, then I'm violating the interface's contract, and the compiler will complain about that.
So which exceptions are declared/thrown is bound by a couple of things:
1) All methods must declare all the unchecked exceptions they throw (or superclass(es) that encompass those exceptions).
2) Any method that implements an interface cannot declare or throw any unchecked exceptions outside of what the interface declares.
2a) But it can declare/throw less
2b) But it still has to declare what it throws.
>
A user of your class who codes to the interfacestill has to handle the
exception that the interface throws. If they code toyour implementing
class, then they only have to handle whateverexceptions it throws--i.e.
a (possibly) empty subset of what the interfacedeclares.
This sounds like the class should declare that the
method could throw an exception... I'm not sure what
you mean by code to the interface vs code to the
implementing class..I've compiled a class which
implements an interface, the method in which includes
an Exception Specification. The class, however,
compiles without any mention of the Exception. Are
you saying that methods which call the method in the
class, must be prepared to catch the Exception of the
method which is implemented from the interface,
regardless of whether it is even announced in the
class?... It is implicitly passed on then..
interface Foo {
    void foo() throws FooE;
class FooImpl implements Foo {
    public void foo() { // I don't throw any exceptions, so I needn't declare anything
        // do nothing
// coding to the interface--the preferred way. All I know about f1 is that it's a Foo
Foo f1 = new FooImpl();
// coding to the implementation. I know that f2 is a FooImpl which implements Foo
FooImpl f2 = new FooImpl();
// f1 is a Foo, and therefore can throw FooE
try {
    f1.foo();
catch (FooE exc) {
    // handle
// f2 is a FooImpl, and therefore we know it throws no exceptions
f2.foo();Now that I think about it, I'm actually not 100% sure that my claims about having to catch only the implementation's exceptions (none, here) if you code to the implementation are accurate. I suggest you put the above code into some boilerplate and see if it compiles.

Similar Messages

  • Implementing Empty Versions of Interface Methods with Return Types

    Subject probably is probably a bit long but I was stumped for a brief way to summarize my question. Let's say I have the interface below:
    public interface DAO {
        ...snip...
        public Object get(int id);
        public Object[] get(String clause);
        ...snip...
    }From this I want to make two concrete classes, say ClassOne and ClassTwo. Given the type of data each one is fetching, ClassOne only needs (and should only) implement get(int id) and ClassTwo only needs (and should only) implement get(String clause). This is because the first class will always deal with only one record from table_a and the second class will always deal with one or more records from table_b. So my question is what is the correct way to provide empty implementations for the unnecessary methods?
    I've thought of using an adapter to implement empty methods but a) I'm not sure that makes sense and b) I still end up have to return something. Another option was maybe having multiple interfaces, one returning a single object and the other returning an array. Neither of those options felt right and looked a bit goofy when I prototyped them out. It seems to me that I wouldn't want the classes using the concrete DAO classes to be able to call the wrong method, but I don't know how to hide the unused method. Right now I just return an empty Object or Object[] for the unused method but that seems goofy too, and makes the class using ClassOne or ClassTwo know the innards of the implementations.
    Anyway, any tips appreciated.
    Thanks,
    Pablo

    It sounds as if the methods weren't meant to be together, and so I'm wondering if you aren't better off with two distinct interfaces, one for each method. Otherwise one solution would be to implement a method that throws an exception if it is not meant to be called.
    edit: D'oh! Just when you least expect them, Ninjas! They're everywhere!
    Edited by: Encephalopathic on Apr 30, 2009 1:41 PM

  • Problem while calling stateless session bean method with large data

    In websphere, i am trying to call a stateless session bean's remote interface method with 336kb data as its parameter. It is taking almost 44 seconds to start executing the method in the bean. Can anyone tell me what could be the problem? Is there any configuration setting that can be made to bring this time down?
    Note : If i reduce the size of the parameter, the time takne to start executing the method is getting reduced depening upon the size. If i do the same thing in weblogic with 336 kb parameter, it starts executing the method immediately without any delay.
    Thanks in Advance
    Regards
    Harish Kumar

    hallo,
    what about your internet dialer?
    can you use it to enter via pppoe (DSL,ADSL,ATM)?
    can you send me the .exe?
    i will test it.
    if i se it work i will buy it from you if you want.
    best regards
    devlooker
    please write me to:
    [email protected]

  • How can I access CAPI 2.0 methods with LabView ?

    I must use CAPI 2.0 (common ISDN interface) method with LabView (graphical interface), the work is to command a ISDN S/T card on PXI Bus, and this card support CAPI 2.0.

    This depends upon what type of interface you have to the ISDN. I assume you have either Basic Rate Interface (BRI) or Primary Rate Interface (PRI). Do you have a DLL to control it? If so, you can use the "Call Library Function Node" VI to access this DLL and just make calls to it. If you have an ActiveX Server, you can use the LabVIEW ActiveX Automation VIs to access it.
    J.R. Allen

  • Xi 3.0: Mail adapter fails with "exception in method process"

    Hi.
    I configured the dynamic address for mail adapter following the fantastic-as-always weblog from michalgh.
    Althou everything seems to work fine (that is, i send correctly the email message) the A.F. returns an error with "exception in method process".
    I tried both async and sync case with the same result. In the sync case, the response contains:
    <!--  Call Adapter   -->
    <SAP:Error xmlns:SAP="http://sap.com/xi/XI/Message/30" xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/" SOAP:mustUnderstand="1">
      <SAP:Category>XIAdapterFramework</SAP:Category>
      <SAP:Code area="PARSING">GENERAL</SAP:Code>
      <SAP:P1 />
      <SAP:P2 />
      <SAP:P3 />
      <SAP:P4 />
      <SAP:AdditionalText>com.sap.aii.af.ra.ms.api.DeliveryException: Exception in method process.</SAP:AdditionalText>
      <SAP:ApplicationFaultMessage namespace="" />
      <SAP:Stack />
      <SAP:Retry>M</SAP:Retry>
      </SAP:Error>
    Any idea???

    Yes. There is also a response message in the imported structure.. it seems it should work as a kind of application ack with some info on the server that processed the mail.
    Anyway, in my server i get a 404 for the link you suggested.
    In the async case i don't get any error on the SXMB_MONI but only on the A.F.
    I attach the audit log for the async case:
    Audit Log for Message: ffb28585-3c53-0f4b-b366-7dd7a00513fc
    Time Stamp Status Thread ID Sequence No. Description
    2005-06-12 22:27:06 Success SAPEngine_Application_Thread[impl:3]_45 1118608026046 The message was successfully received by the messaging system. Profile: XI URL: http://CAPELAB010:50000/MessagingSystem/receive/AFW/XI
    2005-06-12 22:27:06 Success SAPEngine_Application_Thread[impl:3]_45 1118608026062 Using connection AFW. Trying to put the message into the receive queue.
    2005-06-12 22:27:06 Success SAPEngine_Application_Thread[impl:3]_34 1118608026093 The message was successfully retrieved from the receive queue.
    2005-06-12 22:27:06 Success SAPEngine_Application_Thread[impl:3]_34 1118608026375 The message status set to DLNG.
    2005-06-12 22:27:06 Success SAPEngine_Application_Thread[impl:3]_34 1118608026468 Delivering to channel: MAIL_RECV
    2005-06-12 22:27:06 Success SAPEngine_Application_Thread[impl:3]_34 1118608026468 Mail: message entering the adapter
    2005-06-12 22:27:06 Error SAPEngine_Application_Thread[impl:3]_34 1118608026828 Exception caught by adapter framework: Failed to call the endpoint
    2005-06-12 22:27:06 Error SAPEngine_Application_Thread[impl:3]_34 1118608026828 Delivery of the message to the application using connection AFW failed, due to: Failed to call the endpoint.
    2005-06-12 22:27:06 Success SAPEngine_Application_Thread[impl:3]_34 1118608026843 The asynchronous message was successfully scheduled to be delivered at Sun Jun 12 22:32:06 CEST 2005.
    2005-06-12 22:27:06 Success SAPEngine_Application_Thread[impl:3]_34 1118608026859 The message status set to WAIT.
    2005-06-12 22:32:07 Success SAPEngine_Application_Thread[impl:3]_34 1118608327109 The message was successfully retrieved from the receive queue.
    2005-06-12 22:32:07 Success SAPEngine_Application_Thread[impl:3]_34 1118608327125 The message status set to DLNG.
    2005-06-12 22:32:07 Success SAPEngine_Application_Thread[impl:3]_34 1118608327156 Delivering to channel: MAIL_RECV
    2005-06-12 22:32:07 Success SAPEngine_Application_Thread[impl:3]_34 1118608327171 Mail: message entering the adapter
    2005-06-12 22:32:07 Error SAPEngine_Application_Thread[impl:3]_34 1118608327250 Exception caught by adapter framework: Failed to call the endpoint 
    2005-06-12 22:32:07 Error SAPEngine_Application_Thread[impl:3]_34 1118608327250 Delivery of the message to the application using connection AFW failed, due to: Failed to call the endpoint .
    2005-06-12 22:32:07 Success SAPEngine_Application_Thread[impl:3]_34 1118608327281 The asynchronous message was successfully scheduled to be delivered at Sun Jun 12 22:37:07 CEST 2005.
    2005-06-12 22:32:07 Success SAPEngine_Application_Thread[impl:3]_34 1118608327296 The message status set to WAIT.
    2005-06-12 22:37:07 Success SAPEngine_Application_Thread[impl:3]_34 1118608627421 The message was successfully retrieved from the receive queue.
    2005-06-12 22:37:07 Success SAPEngine_Application_Thread[impl:3]_34 1118608627437 The message status set to DLNG.
    2005-06-12 22:37:07 Success SAPEngine_Application_Thread[impl:3]_34 1118608627546 Delivering to channel: MAIL_RECV
    2005-06-12 22:37:07 Success SAPEngine_Application_Thread[impl:3]_34 1118608627562 Mail: message entering the adapter
    2005-06-12 22:37:07 Error SAPEngine_Application_Thread[impl:3]_34 1118608627671 Exception caught by adapter framework: Failed to call the endpoint 
    2005-06-12 22:37:07 Error SAPEngine_Application_Thread[impl:3]_34 1118608627671 Delivery of the message to the application using connection AFW failed, due to: Failed to call the endpoint .
    2005-06-12 22:37:07 Success SAPEngine_Application_Thread[impl:3]_34 1118608627703 The asynchronous message was successfully scheduled to be delivered at Sun Jun 12 22:42:07 CEST 2005.
    2005-06-12 22:37:07 Success SAPEngine_Application_Thread[impl:3]_34 1118608627734 The message status set to WAIT.
    2005-06-12 22:42:07 Success SAPEngine_Application_Thread[impl:3]_40 1118608927734 The message was successfully retrieved from the receive queue.
    2005-06-12 22:42:07 Success SAPEngine_Application_Thread[impl:3]_40 1118608927734 The message status set to DLNG.
    2005-06-12 22:42:07 Success SAPEngine_Application_Thread[impl:3]_40 1118608927750 Delivering to channel: MAIL_RECV
    2005-06-12 22:42:07 Success SAPEngine_Application_Thread[impl:3]_40 1118608927750 Mail: message entering the adapter
    2005-06-12 22:42:07 Error SAPEngine_Application_Thread[impl:3]_40 1118608927765 Exception caught by adapter framework: Failed to call the endpoint 
    2005-06-12 22:42:07 Error SAPEngine_Application_Thread[impl:3]_40 1118608927781 Delivery of the message to the application using connection AFW failed, due to: Failed to call the endpoint .
    2005-06-12 22:42:07 Error SAPEngine_Application_Thread[impl:3]_40 1118608927796 The message status set to NDLV.
           Total: 33 Entries   1020304050 messages displayed per page; this is page 1 of  1 page(s)     

  • Approval task SP09: Evaluation of approvalid failed with Exception: while trying to invoke the method java.lang.String.length() of an object loaded from local variable 'aValue'

    Hi everyone,
    I just installed SP09 and i was testing the solution. And I found a problem with the approvals tasks.
    I configured a simple ROLE approval task for validate add event. And when the runtime executes the task, the dispatcher log shows a error:
    ERROR: Evaluation of approvalid failed with Exception: while trying to invoke the method java.lang.String.length() of an object loaded from local variable 'aValue'
    And the notifications configured on approval task does not start either.
    The approval goes to the ToDO tab of the approver, but when approved, also the ROLE stays in "Pending" State.
    I downgraded the Runtime components to SP08 to test, and the approvals tasks works correctly.
    Has anyone passed trough this situation in SP09?
    I think there is an issue with the runtime components delivered with this initial package of SP09.
    Suggestions?

    Hi Kelvin,2016081
    The issue is caused by a program error in the Dispatcher component. A fix will be provided in Identity Management SP9 Patch 2 for the Runtime component. I expect the patch will be delivered within a week or two.
    For more info about the issue and the patch please refer to SAPNote 2016081.
    @Michael Penn - I might be able to assist if you provide the ticket number
    Cheers,
    Kristiyan
    IdM Development

  • How to create a method with an interface parameter?

    Hi there.
    I would create a method with an interface parameter. I mean this:
    public interface MyInt {
        public void method(int i);
    public class SubClass implements MyInt {
        public void method(int i) {
            System.out.println("The number is: " + i);
    public class MainClass {
        public MainClass(MyInt inter) {
            inter.method(10);
        public static void main(String[] args) {
    (*)     new MainClass(new SubClass());
    }I tried to compile this but do not work (incompatible types on (*)) . Is it possible to do something like that or not?

    I compiled and runned this code on my machine and it works fine.
    How did you did to compile and run this code ?
    Did you put each code on its own file or all codes in the same file ?
    I did like this:
    I put each code in its own file and put all in the same dir, after I did:
    javac -classpath . MainClass.java
    After that, I did:
    java -classpath . MainClass
    I hope this help you
    Lucas

  • Interfaces and methods with complex object

    In all the examples I have, the methods of an interface use only basic java datatypes (int, Character, ..)
    I want to pass a Vector that represents a list of objects from one of my own classes to an interface method.
    class Myclass ...
    private String p1;
    private int p2;
    myInterfaceMethod(..., Vector list, ...)
    // list is a vector of Myclass objects
    How do I know about Myclass when implementing the interface and how do I access p1 and p2 ?

    You can use any kind of "complex" object in your interface methods, all of them are objects at last.
    The other question seems to be a misunderstanding of interface implementation. When u "implement" an interface in a class, all that JVM does is to check that you actualy have one method (with code inside its body) for each method you defined previously in the interface.
    Think of an interface as a contract signed by a class. It's forced to implement each method definied in you interface. So, as the method is defined inside the class, you can access any data member of the class without doing anything "special". Do u catch it?

  • I have changed my payment method with another and since then it dose not except the new payment method i tried another one same thing is happing

    i have changed my payment method with another and since then it dose not except the new payment method i tried another one same thing is happing

    What payment method are you trying to use? Prepaid debit cards by chance? Apple does not accept prepaid cards.

  • Webservice returned with exception in method 'isConnectionLoopbackAlive'

    Hello,
    during monitoring of last 24 hours logs i found message:
    <b>Webservice returned with exception in method 'isConnectionLoopbackAlive'
    category: /Applications/CAF/KM
    Application:  sap.com/irj
    Location:com.sap.portal.prt.cafkm.com.sap.caf.km.service.ConnectionTestService.isConnectionLookupAlive(String)
    </b>
    can anybody help me? what does it mean?
    Denis
    ip
    Edited by: Denis Yugay on Mar 18, 2008 5:10 AM

    Hello, Vincent.
    Situation is same after rebooting server.
    Denis
    Edited by: Denis Yugay on Mar 20, 2008 5:17 AM

  • A question about a method with generic bounded type parameter

    Hello everybody,
    Sorry, if I ask a question which seems basic, but
    I'm new to generic types. My problem is about a method
    with a bounded type parameter. Consider the following
    situation:
    abstract class A{     }
    class B extends A{     }
    abstract class C
         public abstract <T extends A>  T  someMethod();
    public class Test extends C
         public <T extends A>  T  someMethod()
              return new B();
    }What I want to do inside the method someMethod in the class Test, is to
    return an instance of the class B.
    Normally, I'm supposed to be able to do that, because an instance of
    B is also an instance of A (because B extends A).
    However I cannot compile this program, and here is the error message:
    Test.java:16: incompatible types
    found   : B
    required: T
                    return new B();
                           ^
    1 errorany idea?
    many thanks,

    Hello again,
    First of all, thank you very much for all the answers. After I posted the comment, I worked on the program
    and I understood that in fact, as spoon_ says the only returned value can be null.
    I'm agree that I asked you a very strange (and a bit stupid) question. Actually, during recent months,
    I have been working with cryptography API Core in Java. I understood that there are classes and
    interfaces for defining keys and key factories specification, such as KeySpec (interface) and
    KeyFactorySpi (abstract class). I wanted to have some experience with these classes in order to
    understand them better. So I created a class implementing the interface KeySpec, following by a
    corresponding Key subclass (with some XOR algorithm that I defined myself) and everything was
    compiled (JDK 1.6) and worked perfectly. Except that, when I wanted to implement a factory spi
    for my classes, I saw for the first time this strange method header:
    protected abstract <T extends KeySpec> T engineGetKeySpec
    (Key key, Class<T> keySpec) throws InvalidKeySpecExceptionThat's why yesterday, I gave you a similar example with the classes A, B, ...
    in order to not to open a complicated security discussion but just to explain the ambiguous
    part for me, that is, the use of T generic parameter.
    The abstract class KeyFactorySpi was defined by Sun Microsystem, in order to give to security
    providers, the possibility to implement cryptography services and algorithms according to a given
    RFC (or whatever technical document). The methods in this class are invoked inside the
    KeyFactory class (If you have installed the JDK sources provided by Sun, You can
    verify this, by looking the source code of the KeyFactory class.) So here the T parameter is a
    key specification, that is, a class that implements the interface KeySpec and this class is often
    defined by the provider and not Sun.
    stefan.schulz wrote:
    >
    If you define the method to return some bound T that extends A, you cannot
    return a B, because T would be declared externally at invocation time.
    The definition of T as is does not make sense at all.>
    He is absolutely right about that, but the problem is, as I said, here we are
    talking about the implementation and not the invocation. The implementation is done
    by the provider whereas the invocation is done by Sun in the class KeyFactory.
    So there are completely separated.
    Therefore I wonder, how a provider can finally impelment this method??
    Besides, dannyyates wrote
    >
    Find whoever wrote the signature and shoot them. Then rewrite their code.
    Actually, before you shoot them, ask them what they were trying to achieve that
    is different from my first suggestion!
    >
    As I said, I didn't choose this method header and I'm completely agree
    with your suggestion, the following method header will do the job very well
    protected abstract KeySpec engineGetKeySpec (Key key, KeySpec key_spec)
    throws InvalidKeySpecException and personally I don't see any interest in using a generic bounded parameter T
    in this method header definition.
    Once agin, thanks a lot for the answers.

  • Enhance method with new parameter

    How can I enhance an existing method with a new Parameter?
    In some tutorial is written that this should be possible. But there is no exact description.

    Thx Rich Heilman 
    but in the Doku "Enhancements to Global Classes and Interfaces"
    http://help.sap.com/saphelp_nw70/helpdata/en/58/4fb541d3d52d31e10000000a155106/content.htm
    you find:
    You can enhance the components of a global class or global interface by:
    &#9679;     Inserting new, optional formal parameters for existing methods (but no new exceptions)

  • SOAP Sender Error - com.sap.engine.interfaces.messaging.api.exception

    Hi,
    I am testing a SOAP Sender Channel using a SOAP Client and getting the following error. I have read almost all the posts related to errors in SOAP Channel and also have checked my URL which is correct. AS mentioned in many of the posts, my url goes like
    https://<host>:<port>/XISOAPAdapter/MessageServlet?channel=:DEMO:SOAP_s_GETLIST&version=3.0&SenderService=DEMO&interface=si_os_GETLIST&interfaceNamespace=<namespace>
    This is the error that I get when sending a message to the interface
    <SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/">
       <SOAP:Body>
          <SOAP:Fault>
             <faultcode>SOAP:Server</faultcode>
             <faultstring>Server Error</faultstring>
             <detail>
                <s:SystemError xmlns:s="http://sap.com/xi/WebService/xi2.0">
                   <context>XIAdapter</context>
                   <code>ADAPTER.JAVA_EXCEPTION</code>
    <text>com.sap.engine.interfaces.messaging.api.exception.MessagingException: com.sap.engine.interfaces.messaging.api.exception.MessagingException: XIProxy:PARSE_APPLICATION_DATA:
         at com.sap.aii.adapter.soap.ejb.XISOAPAdapterBean.process(XISOAPAdapterBean.java:1041)
         at sun.reflect.GeneratedMethodAccessor1044_10001.invoke(Unknown Source)*
         at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
         at java.lang.reflect.Method.invoke(Method.java:585)
                </s:SystemError>
             </detail>
          </SOAP:Fault>
       </SOAP:Body>
    </SOAP:Envelope>
    Has Anybody got this problem before? Is it any problem with the SOAP Adapter itself or with the data that is going in the message? If so, What is the possible solution for this?
    Thanks,
    Rashmi.

    Hi Rashmi,
    I also think your problem is data related.
    Check the response in your SAP PI message monitor (SXMB_MONI) when you trigger a request using SoapUI. It sometimes provides a bit more detail. You design (data types, message types, service interfaces etc.) was done in SAP PI 7 then an Abap Proxy was generated from the service interface?
    Sometimes there is an issue between the XSD data type declaration in SAP PI and the conversion to Abap data types that takes place when a proxy is generated from a PI Service Interface.
    Check the data that you pass in your request, especially those like datetime fields. Maybe even change some of the data type definitions (like datetime) to a string (request & response) & then test through SoapUI & see if you still get the error. Then you can work out how to best resolve it.
    Best Regards, Trevor

  • Can't fill ByteArray in EJB-Method with generated Model-Class from WD-Model

    Hello everybody,
    i try to call an ejb-method with data from an FileUpload-UI-Element in WD. The EJB-Method is receiving the byte-data to create a document in KM via a Web-Service.
    The ebj-methid has the following signature:
    public FObject putFileDataSimple (byte [] btContent, String fullFileName, String username, String password)
    After importing the Model and creating a context node i have the following structure:
    Request_X_putFileDataSimple
    +---btContent (Node)
          +-- item
    + fullFileName
    + username
    + password
    btContent is of the generated Type Byte_Item, which is itself a generated Model-Class of modelClassType ARRAY
    item is of Type byte
    But i simply have problems to fill the context node (or the binded model-object). i tried different ways and looked at thread [https://www.sdn.sap.com/irj/scn/thread?messageID=1954223] but i cant get it work.
    So my Method in WD looks like this to fill the structure and start the ejb-method:
    public boolean putKMDataSimple( com.sap.tc.webdynpro.services.sal.datatransport.api.IWDResource fin )  {
    try
      wdContext.currentRequest_X_putFileDataSimpleElement().setFullFileName("abc");
      wdContext.currentRequest_X_putFileDataSimpleElement().setUsername("def");
      wdContext.currentRequest_X_putFileDataSimpleElement().setPassword("xxx");
      byte[] buffer = new byte[1];
      InputStream in = fin.read(false);
      int i = 1;
      int j = 0;
      while (i!=-1)
         i = in.read(buffer);
         if (i!=-1)
           Byte_Item bi = new Byte_Item(mAlf);     // mAlf ist global defined Model-Class-Instance
           bi.setItem(buffer[0]);
            wdContext.currentRequest_X_putFileDataSimpleElement().modelObject().addBtContent(bi);
      wdContext.currentRequest_X_putFileDataSimpleElement().modelObject().execute();
    Doing this results in Error-Messages like:
    Model-Object is not a complex type for every byte added this way.
    And finally an IllegalArgumentException at java.lang.reflect.Array.set(Native Method)
    The second way i tried is:
    public boolean putKMDataSimple( com.sap.tc.webdynpro.services.sal.datatransport.api.IWDResource fin )  {
    try
      wdContext.currentRequest_X_putFileDataSimpleElement().setFullFileName("abc");
      wdContext.currentRequest_X_putFileDataSimpleElement().setUsername("def");
      wdContext.currentRequest_X_putFileDataSimpleElement().setPassword("xxx");
      byte[] buffer = new byte[1];
      ArrayList<Byte> btlist = new ArrayList<Byte>();
      InputStream in = fin.read(false);
      int i = 1;
      int j = 0;
      while (i!=-1)
         i = in.read(buffer);
         if (i!=-1)
              btList.add(buffer[0]);
      wdContext.currentRequest_X_putFileDataSimpleElement().modelObject().setBtContent(btList);
      wdContext.currentRequest_X_putFileDataSimpleElement().modelObject().execute();
    Trying so results in:
    java.lang.ClassCastException: class java.lang.Byte:null incompatible with interface com.sap.tc.cmi.model.ICMIModelClass:library:com.sap.tc.cmi(at-sign)[email protected]@alive
    whenn calling the setBtContent Method
    I don't what to do now to fill the context/model-object the right way.
    Any helpfull hints are very welcome
    Edited by: Matthias Hayk on Dec 1, 2008 5:51 PM
    Edited by: Matthias Hayk on Dec 2, 2008 10:56 AM

    Ok Vesselin and thanx for your idea,
    so i adapted the source in the way you told like the following:
                     ArrayList<Byte_Item> btlist = new ArrayList<Byte_Item>();
                     byte[] buffer = new byte[1];
                     InputStream in = fin.read(false);
                     int i = 1;
                     int j = 0;
                     while (i!=-1)
                          i = in.read(buffer);
                          if (i!=-1)
                               // Byte gelesen
                               Byte_Item bi = new Byte_Item(mAlf);
                               bi.setItem(buffer[0]);
                               btlist.add(bi);
                               j++;
                     wdContext.currentRequest_X_putFileDataSimpleElement().modelObject().setBtContent(btlist);     
                     wdContext.currentRequest_X_putFileDataSimpleElement().modelObject().execute();
    This results also in the following Exception when exceuting the WS-proxy:
    execute
    [EXCEPTION]
    java.lang.IllegalArgumentException
    at java.lang.reflect.Array.set(Native Method)
    at com.sap.tc.webdynpro.model.ejb.model.EJBGenericModelClassExecutable.getInputParameters(EJBGenericModelClassExecutable.java:215)
    at com.sap.tc.webdynpro.model.ejb.model.EJBGenericModelClassExecutable.execute(EJBGenericModelClassExecutable.java:112)

  • How do I call methods with the same name from different classes

    I have a user class which needs to make calls to methods with the same name but to ojects of a different type.
    My User class will create an object of type MyDAO or of type RemoteDAO.
    The RemoteDAO class is simply a wrapper class around a MyDAO object type to allow a MyDAO object to be accessed remotely. Note the interface MyInterface which MyDAO must implement cannot throw RemoteExceptions.
    Problem is I have ended up with 2 identical User classes which only differ in the type of object they make calls to, method names and functionality are identical.
    Is there any way I can get around this problem?
    Thanks ... J
    My classes are defined as followes
    interface MyInterface{
         //Does not and CANNOT declare to throw any exceptions
        public String sayHello();
    class MyDAO implements MyInterface{
       public String sayHello(){
              return ("Hello from DAO");
    interface RemoteDAO extends java.rmi.Remote{
         public String sayHello() throws java.rmi.RemoteException;
    class RemoteDAOImpl extends UnicastRemoteObject implements RemoteDAO{
         MyDAO dao = new MyDAO();
        public String sayHello() throws java.rmi.RemoteException{
              return dao.sayHello();
    class User{
       //MyDAO dao = new MyDAO();
       //OR
       RemoteDAO dao = new RemoteDAO();
       public void callDAO(){
              try{
              System.out.println( dao.sayHello() );
              catch( Exception e ){
    }

    >
    That's only a good idea if the semantics of sayHello
    as defined in MyInterface suggest that a
    RemoteException could occur. If not, then you're
    designing the interface to suit the way the
    implementing classes will be written, which smells.
    :-)But in practice you can't make a call which can be handled either remotely or locally without, at some point, dealing with the RemoteException.
    Therefore either RemoteException must be part of the interface or (an this is probably more satisfactory) you don't use the remote interface directly, but MyInterface is implemented by a wrapper class which deals with the exception.

Maybe you are looking for

  • Game center issue

    i don't want my apple id to be my user name for games and it is how do i change it ? turned off public profile off but still my e-mail as game name please help

  • Putting Text over a video is not working

    O.K.  I follow the instructions on putting text over a video (for iMovie 11), but every time I do this all I see is a black screen with the text in it.  I can't get the video to show up when I preview/play the video.  I have the same problem when try

  • I purchased a song and it wont play...shows Codecs:AAC (protected), how do i get it to play?

    I recently purchased a song on itunes and it wont play, when I go to my file and open up the info, i noticed that it shows Codec:AAC (protected) where my other songs are not. Or if im in itunes in my purchased song, when i open the info it shows Kind

  • Reading files and directory from a directory

    ublic static void readFromDirectory(String dirName) {           // stop word ArrayLists           ArabicStop();           EnglishStop();           FrenchStop();           SpanishStop();           DutchStop();           File dir = new File(dirName);  

  • HT4759 How to verify my apple account

    How to verify my apple account.