Passing array of parameters to constructor
I'm writing a script which facilitates interaction between javascript and an already existing flash library. One of the things I need to do is create an instance of class x, where class x can be one of a large number of classes. The constructors for these classes each take different numbers of parameters. I want to pass the parameters in from Javascript as an array, and I was hoping that there would be a way to pass the array contents into the constructor as parameters. I tried using apply, but it's not available on constructors.
The only other option I know of is to write a large case statement full of constructors, and for each parameter pass an integer indexed array element. Is there any other way?
Your going to have to unpack your array no matter what, so no.
You can make your class factory with your huge case, or, if you have the source for your lib you could modify the constructor, but its the same amount of work:
Was:
public function MyClass(s:String, n:Number, d:Date){...}
To:
public function MyClass(s:*, n:Number=0, d:Date=nul){
<case code here>
If you have a decent platform, or even javascript, you could maybe think about writing a parser that will generate the class factory case based on the constructor signatures.
Similar Messages
-
Axis: passing arrays as parameters to webservices
Hi,
I'm using axis to setup a webservice.
In my client application, I need to pass an array of bytes to the webservice.
How would I set this up when creating my call?
Here is how I setup my calls:
call.removeAllParameters();
call.setOperationName("methodName");
call.addParameter("paramName1", XMLType.XSD_?, ParameterMode.IN);
call.setReturnType( XMLType.XSD_BOOLEAN );
Boolean ret = (Boolean) call.invoke(new Object[]{ bytes });
where 'bytes' is the array of bytes.
The question marks are where I don't know what to do.
Can anyone help me?Try XMLType.SOAP_ARRAY (there is an example at this URL: http://www.bii.a-star.edu.sg/infoscience/seg/fileTransfer.asp)
-
Passing arrays as parameters to new pages?
I have probably either misunderstood something Murray said to
me, or
unconsciously extended it, but in developing my php driven
photo album I have
been working on the assumption that I could read a block of
data into an array,
and then pass that array (or a pointer to it?) as a parameter
to a new
invocation of the same page.
However, now that I tried it, it looks as if I can only pass
a single value in
any one parameter. Is this correct, or is there some way of
passing either an
array or a pointer to an array as a parameter?
Clancy"PeteC" <[email protected]> wrote:
>Create your array as a session variable.
Thanks. Yet another complexity to learn! For the moment I'll
put up with
rereading my data file every time I change pages. If (as it
currently appears)
this gives a good enough performance I wo'nt worry until I've
got the program
working. However there are still part of my job where session
variables would be
helpful, so when I've got the main part of my program working
I'll try to get my
head around them.
With best wishes,
Clancy -
Passing array as arguement in constructor
hi to all
i have a class called Workdays.
i made a constructor as
public Workdays(int userId, boolean [ ] workdays )
size of workdays is 7.
How do i initialize the consturctor?
i did
public Workdays(ResultSet rs) {
this( rs.getInt(1), rs.getBoolean(2),rs.getBoolean(3),rs.getBoolean(4),rs.getBoolean(5),rs.getBoolean(6), rs.getBoolean(7),rs.getBoolean(8));Apart from the bad design (don't pass ResultSet as parameter, but only the actual results wrapped in a DTO), do you have shifted the cursor of the ResultSet using ResultSet#next()? Which error/exception do you get anyway?
-
Call stored procedure in JDBC passing Array parameters
Hi all,
Im trying to call an Oracle Stored Procedure with JDBC. The problem is
that my parameter is an Array (PL/SQL Type is "Table Of").
How can i call this procedure by passing right Java parameters to
the Callable statement ??
In the Documentation, all samples don't work ! it's possible to
call a procedure that return Array Type but when we need to pass an Array as
a parameter we have a DataType exception.
Any idea ?
thanx in advance
Sam.Hi Sam,
I don't have an answer to your question, just some suggestions as to
where else you may find help.
Do you know about the "Ask Tom" website:
http://asktom.oracle.com
Also, you may find something in the comp.databases.oracle.* newsgroups:
http://groups.google.com
I found this article there -- but it's not exactly what you're looking
for:
http://groups.google.com/groups?q=array+group:comp.databases.oracle.server+author:Thomas+author:Kyte&hl=iw&as_qdr=w&selm=a9sg06027kf%40drn.newsguy.com&rnum=1
Good Luck,
Avi. -
Array of Parameters in OWB mapping
How do i pass an array of parameters to an OWB mapping.
Try this and similarly you can get all operator.
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
Cheers
Nawneet
Edited by: Nawneet_Aswal on Aug 30, 2010 8:43 AM -
hi,
is it possible to pass an array into a resultset? if yes please indicate how.
thank you all in advanceHi,
Sorry for the confusion, here's what I'm trying to accomplish.
I'm trying to create a report in Crystal Report and use Java as data source. My Java application needs to generate some value and pass them to the report as parameters. After some research I've found that I can use a Java Bean class as data source for Crystal Report that returns a ResultSet. Therefore I'm trying to pass some values in my Java app into the Bean class as array and convert them to a ResultSet for Crystal Report.
If you know of a different way please let me know, otherwise, this is what I meant by passing array into resultset.
thanks for your reply, -
Pass array to oracle stored procedure
I have such a problem: I have to pass array to stored procedure, so I declare type:
create type tNumberArray as table of number
and create procedure:
create or replace procedure proc_1 (in_param in tNumberArray) as
.... BODY OF PROCEDURE ...
when I call this procedure from C# like this:
int []pParam = new int[3] {1,2,3};
OracleCommand cmd = new OracleCommand("proc_1", dbConn);
cmd.CommandType = CommandType.StoredProcedure;
OracleParameter param14 = new OracleParameter("param", OracleDbType.Decimal);
param14.Value = pParam;
param14.CollectionType = OracleCollectionType.PLSQLAssociativeArray;
param14.Size = 3;
param14.Direction = ParameterDirection.Input;
cmd.Parameters.Add(param14);
cmd.ExecuteNonQuery();
an error occures. It say that there invalid number or type of parameters.
But when I declare both type and procedure in a package everything goes fine.
What is the matter? Did anybody have the same problem?Not I got next problem:
when I cannot pass parameter to stored procedure and get array fro it. In other words returning array from procedure and passing some input parameters to it does not word!
Does anybody know why it happens? -
Passing Array of java objects to and from oracle database-Complete Example
Hi all ,
I am posting a working example of Passing Array of java objects to and from oracle database . I have struggled a lot to get it working and since finally its working , postinmg it here so that it coudl be helpful to the rest of the folks.
First thinsg first
i) Create a Java Value Object which you want to pass .
create or replace and compile java source named Person as
import java.sql.*;
import java.io.*;
public class Person implements SQLData
private String sql_type = "PERSON_T";
public int person_id;
public String person_name;
public Person () {}
public String getSQLTypeName() throws SQLException { return sql_type; }
public void readSQL(SQLInput stream, String typeName) throws SQLException
sql_type = typeName;
person_id = stream.readInt();
person_name = stream.readString();
public void writeSQL(SQLOutput stream) throws SQLException
stream.writeInt (person_id);
stream.writeString (person_name);
ii) Once you created a Java class compile this class in sql plus. Just Copy paste and run it in SQL .
you should see a message called "Java created."
iii) Now create your object Types
CREATE TYPE person_t AS OBJECT
EXTERNAL NAME 'Person' LANGUAGE JAVA
USING SQLData (
person_id NUMBER(9) EXTERNAL NAME 'person_id',
person_name VARCHAR2(30) EXTERNAL NAME 'person_name'
iv) Now create a table of Objects
CREATE TYPE person_tab IS TABLE OF person_t;
v) Now create your procedure . Ensure that you create dummy table called "person_test" for loggiing values.
create or replace
procedure give_me_an_array( p_array in person_tab,p_arrayout out person_tab)
as
l_person_id Number;
l_person_name Varchar2(200);
l_person person_t;
l_p_arrayout person_tab;
errm Varchar2(2000);
begin
l_p_arrayout := person_tab();
for i in 1 .. p_array.count
loop
l_p_arrayout.extend;
insert into person_test values(p_array(i).person_id, 'in Record '||p_array(i).person_name);
l_person_id := p_array(i).person_id;
l_person_name := p_array(i).person_name;
l_person := person_t(null,null);
l_person.person_id := l_person_id + 5;
l_person.person_name := 'Out Record ' ||l_person_name ;
l_p_arrayout(i) := l_person;
end loop;
p_arrayout := l_p_arrayout;
l_person_id := p_arrayout.count;
for i in 1 .. p_arrayout.count
loop
insert into person_test values(l_person_id, p_arrayout(i).person_name);
end loop;
commit;
EXCEPTION WHEN OTHERS THEN
errm := SQLERRM;
insert into person_test values(-1, errm);
commit;
end;
vi) Now finally create your java class which will invoke the pl/sql procedure and get the updated value array and then display it on your screen>Alternatively you can also check the "person_test" tbale
import java.util.Date;
import java.io.*;
import java.sql.*;
import oracle.sql.*;
import oracle.jdbc.driver.*;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
public class ArrayDemo
public static void passArray() throws SQLException
Connection conn = getConnection();
ArrayDemo a = new ArrayDemo();
Person pn1 = new Person();
pn1.person_id = 1;
pn1.person_name = "SunilKumar";
Person pn2 = new Person();
pn2.person_id = 2;
pn2.person_name = "Superb";
Person pn3 = new Person();
pn3.person_id = 31;
pn3.person_name = "Outstanding";
Person[] P_arr = {pn1, pn2, pn3};
Person[] P_arr_out = new Person[3];
ArrayDescriptor descriptor =
ArrayDescriptor.createDescriptor( "PERSON_TAB", conn );
ARRAY array_to_pass =
new ARRAY( descriptor, conn, P_arr);
OracleCallableStatement ps =
(OracleCallableStatement )conn.prepareCall
( "begin give_me_an_array(?,?); end;" );
ps.setARRAY( 1, array_to_pass );
ps.registerOutParameter( 2, OracleTypes.ARRAY,"PERSON_TAB" );
ps.execute();
oracle.sql.ARRAY returnArray = (oracle.sql.ARRAY)ps.getArray(2);
Object[] personDetails = (Object[]) returnArray.getArray();
Person person_record = new Person();
for (int i = 0; i < personDetails.length; i++) {
person_record = (Person)personDetails;
System.out.println( "row " + i + " = '" + person_record.person_name +"'" );
public static void main (String args[]){
try
ArrayDemo tfc = new ArrayDemo();
tfc.passArray();
catch(Exception e) {
e.printStackTrace();
public static Connection getConnection() {
try
Class.forName ("oracle.jdbc.OracleDriver");
return DriverManager.getConnection("jdbc:oracle:thin:@<<HostNanem>>:1523:VIS",
"username", "password");
catch(Exception SQLe) {
System.out.println("IN EXCEPTION BLOCK ");
return null;
and thats it. you are done.
Hope it atleast helps people to get started. Comments are appreciated. I can be reached at ([email protected]) or [email protected]
Thanks
Sunil.sHi Sunil,
I've a similar situation where I'm trying to insert Java objects in db using bulk insert. My issue is with performance for which I've created a new thread.
http://forum.java.sun.com/thread.jspa?threadID=5270260&tstart=30
I ran into your code and looked into it. You've used the Person object array and directly passing it to the oracle.sql.ARRAY constructor. Just curios if this works, cos my understanding is that you need to create a oracle.sql.STRUCT out of ur java object collection and pass it to the ARRAY constructor. I tried ur way but got this runtime exception.
java.sql.SQLException: Fail to convert to internal representation: JavaBulkInsertNew$Option@10bbf9e
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:112)
at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:146)
at oracle.jdbc.oracore.OracleTypeADT.toDatum(OracleTypeADT.java:239)
at oracle.jdbc.oracore.OracleTypeADT.toDatumArray(OracleTypeADT.java:274)
at oracle.jdbc.oracore.OracleTypeUPT.toDatumArray(OracleTypeUPT.java:115)
at oracle.sql.ArrayDescriptor.toOracleArray(ArrayDescriptor.java:1314)
at oracle.sql.ARRAY.<init>(ARRAY.java:152)
at JavaBulkInsertNew.main(JavaBulkInsertNew.java:76)
Here's a code snippet I used :
Object optionVal[] = {optionArr[0]}; // optionArr[0] is an Option object which has three properties
oracle.sql.ArrayDescriptor empArrayDescriptor = oracle.sql.ArrayDescriptor.createDescriptor("TT_EMP_TEST",conn);
ARRAY empArray = new ARRAY(empArrayDescriptor,conn,optionVal);If you visit my thread, u'll see that I'm using STRUCT and then pass it to the ARRAY constructor, which works well, except for the performance issue.
I'll appreciate if you can provide some information.
Regards,
Shamik -
Passing array to call library function running on VxWorks (cRIO)
Hello,
I am using a cRIO 9012 running VxWorks.
I have a Call library function VI in my application and I want to pass arrays of doubles to this function.
The problem is that I can not access the values in the array.
Here is the source code of my function:
#include "D:\\Programme\\National Instruments\\LabVIEW 8.5\\cintools\\extcode.h"
double avg_num(double *in1, double *out1)
double ret;
ret = in1[0] + out1[0];
return ret;
The value of in1[0] and out1[0] is always.
When passing no arrays but single values, all is fine. But since my application is more complex than this example, I need to pass arrays.
The block diagram and parameter specification is as shown in the attached screenshots.
I am compiling the source code with the Gcc 6.3 which is available here:
http://zone.ni.com/devzone/cda/tut/p/id/5694
What am I doing wrong?
Or is passing arrays not supported on cRIO?
Maybe the makefile needs to be modified?
Thank you.
Best regards,
Christian
Attachments:
vi.JPG 88 KB
parameter.JPG 41 KBI guess I have solved the problem.
The key was to set the parameter "Minimum size" for all function parameters to <None>.
Having this, I can read the passed arrays. I do not know why this works but at the moment, it is ok for me.
Thank you all. -
Passing arrays with Test Stand to DIO 96
Does anyone know the easiest way of sending data arrays from Test Stand to a DIO 96 using a LabView dll? I have a Test Stand sequence where I will need to set bits and read bits from a DIO 96 and am going to make a LabView dll. I guess I will need to pass either arrays to and from each port or numeric data to and from each port to a dll and also figure out how the status of the bits in the DIO 96 will be remembered.
What is the best strategy for dealing with Test Stand and a DIO 96?
Has anyone any ideas or example code?Hi Steve,
either approach is perfectly valid, and as you say, the activeX approach does remove some of the flexability of where you get the data from, however, what you've really described is two separate things, rather than two separate styles of approach.
ActiveX or direct passing are simply the means of getting data from and to your TestStand data space.
Step types are a convenient way of wrapping up particular layouts and functionalilty into a very easily re-usable TestStand development item. You would still need some sort of code module to put with a step type, so you're not necessarily limiting your developed code to the Teststand environment.
Making links through ActiveX allows you to make a solid definition on configuration type items, and allow for edit substeps. For example, the NumericLimitTest step type has step.limits.high and step.limits.low. Rather than pass those to the edit substep as a dll call (which is perfectly valid), passing the sequence context (which also allows you to run the termination monitor etc) allows for the fixed references to the fixed data layout of the step. Self containment like this works when the data sources are fixed as you get with a step type to use the edit substep, or the pre/post substeps.
Working on a dll call allows more re-use because then you concentrate on the data, rather than where it's come from, however, for large amounts of different sources, the dll prototype can become very complex and difficult to document. You end up having to pass lots of parameters and some of them you might not use.
The question you're ultimately trying to answer is "what does it do to my architecture?"
The holy grail of TestStand architectures is any step type can be used in any sequence in any sequence file with any process model under any operator interface. Now this isn't always practical, but the closer you get to it, the more flexibility your system as a whole contains, and the easier it becomes to add in or change the layout / functionality of the system
With this comes code re-use, but the extra development time it takes to make good re-usable maintainable code isn't re-couped until the 4th or 5th re-use.
If you want in this case your passing of the array to occur from many different places in your sequences, and you're building up lots of sequences to use them, then making a step type, and passing through the most convenient method you decide upon will make the implementation of the sequences easier to do.
If you only need it in a couple of ways, then you can do without the step type, and if it's not many different data sources, then pass by parameter to the dll through the function prototype directly, and use a regular DLL adapter to acheive it.
Mostly my 2-cents worth.
Thanks
Sacha Emery
National Instruments
// it takes almost no time to rate an answer -
How can i pass array as argument in magento api method calling using sudzc API in iphone Native APP
0down votefavorite
I am implementing magento standard api method in native iphone app. I use webservice generated by sudzc. To call method I use:
[service call:self action:@selector(callHandler:) sessionId:@" " resourcePath:@" " args:@""];
When I used methods e.g. cart.info or product.info in which I have to pass one parameter; it gives valid response. But when I used method e.g. cart_product.add in which I have to pass an argument as value of array it gives error
SQLSTATE[42000]: Syntax error or access violation:
1064 You have an error in your SQL syntax;
check the manual that corresponds to your MySQL server version for the right syntax to use near ')' at line 1
I have tested in SOAP UI also. There also it gives me same error. But same method works in PHP file. Even I tried by creating same soap request which I created using JavaScript but still it doesn't work.
Can anyone help me to pass array as a parameter using sudzc api to call magento web services?There is an error in your SQL.
-
Hi,
I am facing issues like Type Mismatch while passing Array of interfaces from .NET to VBA and vice versa using VSTO technology.
My requirement is that ComInterfaceType needs to be InterfaceIsIDispatch.
My Interface definition is somewhat like this
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[Guid("AAF48FBC-52B6-4179-A8D2-944D7FBF264E")]
public interface IInterface1
[DispId(0)]
IInterface2[] GetObj();
[DispId(1)]
void SetObj(ref IInterface2[] obj);
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[Guid("CDC06E1D-FE8C-477E-97F1-604B73EF868F")]
public interface IInterface2
IF i am passing array of above interface (created in C#.Net) to VBA using GetObj API,i am getting type mismatch error in VBA while assigning the value to variable in VBA.Even assigning to variant type variable gives TypeMismatch.
Also while passing Array of interfaces from VBA using SetObj API,excel crashes and sometimes it says method doesn't exists.
Kindly provide some assistance regarding the same.
ThanksHi,
I am facing issues like Type Mismatch while passing Array of interfaces from .NET to VBA and vice versa using VSTO technology.
My requirement is that ComInterfaceType needs to be InterfaceIsIDispatch.
My Interface definition is somewhat like this
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[Guid("AAF48FBC-52B6-4179-A8D2-944D7FBF264E")]
public interface IInterface1
[DispId(0)]
IInterface2[] GetObj();
[DispId(1)]
void SetObj(ref IInterface2[] obj);
[ComVisible(true)]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
[Guid("CDC06E1D-FE8C-477E-97F1-604B73EF868F")]
public interface IInterface2
IF i am passing array of above interface (created in C#.Net) to VBA using GetObj API,i am getting type mismatch error in VBA while assigning the value to variable in VBA.Even assigning to variant type variable gives TypeMismatch.
Also while passing Array of interfaces from VBA using SetObj API,excel crashes and sometimes it says method doesn't exists.
Kindly provide some assistance regarding the same.
Thanks -
To pass the page parameters to a form in portal
Hi,
I am trying to develope a simple page using portal which contains
1. Simple parameter form.
2. Form that accepts the data from the simple parameter form.
I want to pass 2 page parameters to this form(no.2)
Is it possible to pass the page parameters to a form in portal?You can see a simple example of setting parameters here:
http://www.patrickhaston.co.uk/Portal/parameters.html
And to use them in a form:
http://www.patrickhaston.co.uk/Portal/webplsqlapp1.html
Hope this helps.
Patrick -
How to pass the report parameters through java not by using URL
Hello...
I have an oracle App. Server 10g with report service
I can the report using the URL :
http://host:Port/rwservlet/report=....
and passing the report parameters ...
But is there any way to call the report by pdf format and passing the parameters from java without using the url ???thank you shahcsanjay for your reply
but I think that web.showDocument can not be used by ordinary java web application ..
I think it can be used only with with "oracle forms" Am I right ?
If no can you please tell me where can I find a useful document about how to use web.showDocument ...
thanks again
Saleem
Maybe you are looking for
-
I had two tool bars with google search in the header part . Cannot delete them even if I delete firefox and relaod. Am not sure where any other details I have could be stored that I haven't found. I now assume it is on the firefox web site. I just wa
-
The WRE54G as an ethernet bridge?
Hiya, I have a wre54g and i also have a xbox 360 thats too far away to plug into the ethernet. As i dont want to pay 99 dollars for microsofts wifi xbox 360 thing, i was wondering if the front ethernet port could possibly be used as an ethernet brid
-
APEX Interactive Report - CSV Export Limitations?
Hello, I have an interactive report generated for some users. The issue I'm having right now is that the results that the users need is over 100k and the export to csv option caps out at 65,535 rows. Is this a limitation on APEX Interactive Report's
-
Org.eclipse.jdt.launching.localJavaApplication Error
I was developing nicely on Web Sphere Studio Developer Version=5.1.0 (with eclipse Release 2.1.1) but I just started getting the error "No Tab group defined for launch application type/n org.eclipse.jdt.launching.localJavaApplication" when trying to
-
Java Security (JAAS)
Hi! I created login module using java security (JAAS). In that 'logout' link is working properly at client side. but it is not working at server side. It is giving following exception at Browser. The requested URL could not be retrieved While trying