Making all named member functions of an actionscript class avlbl to ExternalInterface automatically
Making all named member functions of an actionscript class available to ExternalInterface automatically :
I am trying to custom-tweak the as3 compiler to generate instructions to register all functions in the ClassDefinitionNode to ExternalInterface.
I guess the operation will have to be performed somwhere between the analyze sequences of the compiler, but am not quite able locate where.
I have this codelet (executed for all constructors, for every non-constructor)
ArgumentListNode argListNode = new ArgumentListNode(
new LiteralStringNode(
NodeMagic.getClassName(clNode)+ "." + functionCommonNode.identifier.name), 0);
//argListNode.items.add(new LiteralNullNode());
argListNode.items.add(new IdentifierNode(functionCommonNode.identifier.name, 0));
MemberExpressionNode mnode = new MemberExpressionNode(new IdentifierNode("ExternalInterface", 0),
new InvokeNode("addCallback",
argListNode),0);
mnode.ref = new ReferenceValue(cx, null, "ExternalInterface", ObjectValue.intrinsicNamespace); //NOT TOO SURE ABOUT THIS ONE
constructor.body.items.add(mnode
Any assistance would be appreciated!
Thanks!
Making all named member functions of an actionscript class available to ExternalInterface automatically :
I am trying to custom-tweak the as3 compiler to generate instructions to register all functions in the ClassDefinitionNode to ExternalInterface.
I guess the operation will have to be performed somwhere between the analyze sequences of the compiler, but am not quite able locate where.
I have this codelet (executed for all constructors, for every non-constructor)
ArgumentListNode argListNode = new ArgumentListNode(
new LiteralStringNode(
NodeMagic.getClassName(clNode)+ "." + functionCommonNode.identifier.name), 0);
//argListNode.items.add(new LiteralNullNode());
argListNode.items.add(new IdentifierNode(functionCommonNode.identifier.name, 0));
MemberExpressionNode mnode = new MemberExpressionNode(new IdentifierNode("ExternalInterface", 0),
new InvokeNode("addCallback",
argListNode),0);
mnode.ref = new ReferenceValue(cx, null, "ExternalInterface", ObjectValue.intrinsicNamespace); //NOT TOO SURE ABOUT THIS ONE
constructor.body.items.add(mnode
Any assistance would be appreciated!
Thanks!
Similar Messages
-
Hi,
In Indesign SDK there is a class IActionComponent having two pure virtual functions:
virtual void
UpdateActionStates(IActiveContext* ac, IActionStateList *listToUpdateGSysPoint mousePoint = kInvalidMousePoint, IPMUnknown* widget = nil) = 0;
virtual void
DoAction(IActiveContext* ac, ActionID actionID, GSysPoint mousePoint = kInvalidMousePoint, IPMUnknown* widget = nil)= 0;
But, the child class
class WIDGET_DECL CActionComponent : public IActionComponent
implements only UpdateActionStates function and not DoAction function.
There is no compilation error and the code is running fine..HOW
Can some one please explain me?Oops!!! there is a small correction in my C++ program. The JunkMethod is being called from the constructor...like the following code.
#include <iostream.h>
#include <stdlib.h>
class Base
public:
Base()
cout<<"In Base Class constructor..."<<endl;
JunkMethod();
void JunkMethod()
TestAbsFunc();
virtual void TestAbsFunc()= 0;
class TestAbstract:public Base
public:
TestAbstract()
cout<<"In Extend Class constructor..."<<endl;
void TestAbsFunc()
cout<<"In TestAbsFunc...."<<endl;
int main()
TestAbstract test;
return 0;
}You can see the change in the constructor of the Base class. JunkMethod is being called, just to bluff the compiler to call the virtual method (so that it won't crib saying that abstract method cannot be called from the constructor). When Java is supporting this functionality without giving any errors, C++ gives errors when you call an abstract method from the constructor or fails to execute when I do some work around like this. Isn't it a drawback of abstract funcationality supported by C++ (I'm not sure if it's a drawback or not)
Regards,
Kalyan. -
Remoting in Actionscript Class
I am working on a large project with .NET remoting and I am
having a problem with the Netconnection debugger. I have moved all
my remoting calls into an Actionscript class file so that I can
keep my timeline simple and clean. Everything is working fine. My
only issue is that I am getting no messages in the NetConnection
Debugger anymore. I have the Netdebug.initialize statement in my
class constructor.
Is there something else I need to do to get messages to
bubble out of my class to the Netconnection Debugger?Ok, I solved the problem. Apparently you have to have the
NetDebug Remoting Classes Object on the main timeline or your
remoting calls won't post messages to the Netconnection debugger.
So even though I am importing the libraries in my class and initing
the NetDebug object, without the actual compiled clip on the stage
somewhere I can't get messages. -
Reference to Class Member Functions
Hello all.
I have a question about references to LV class member functions. I have a small example to demonstrate my problem.
My test class Base implements a reentrant public dynamic dispatch member function, doSomething.vi.
Another test class, Child, inherits Base and overrides the implementation of doSomething.vi.
Now say I have an array of Base objects (which could include any objects from classes that inherit Base). I want to run the doSomething methods for all the objects in the array in parallel.
In C++, I'd define a pointer to the virtual member function doSomething, and use it with each object in the array and the correct version of doSomething would be called.
In Labview, the only way I've found to do it is like this:
This is less than ideal, because it relies on every child class implementing doSomething, and relies on specific names for the inputs to the method.
Is there a better way to do this?
Thank you,
ZolaI still suspect you are over-working this code and not leting LVOOP do tis thing.
As I understand it you want to creae an active object but detemine its class at run time. The recent Architect summit touched on messaging for what they are calling a "worker Pool" pattern or what-not. YOu may want to search on the summit stuff. lacking that I'll share some images of where I did something similar ( I think). Note this is an older app and new stuff like the "Start Asyncronous call..." has been introduced making this even easier.
I want to create a new Active Object (thread running in the background) so I invoke a method to do so
It invokes the following that create some queues for talking to it and getting info back.
Time does not permit me doing a complete write-up but I have assembled the above images into a LVOOP Albumn found here.
When you click on one of those images you will get a large view as shown in this example.
Just below that image you will find a link to the original thread where I posted the image and talked about it.
I believe the best I can do for you at the moment is to urge you to browse my albumn and chase the links.
That agllery was assembled in an attmept to help you and other before you asked. I hope it is helpful.
Ben
Ben Rayner
I am currently active on.. MainStream Preppers
Rayner's Ridge is under construction -
Input solicited: List function support as member functions in CFML
G'day:
I'm concerned about how Adobe have implemented the list-oriented member functions in ColdFusion 11. And I was hopeing to capture some community input as to what other people think, before raising it with Adobe:
Survey: lists in CFML, and the naming of list member functions
It'd be cool if you could take the time to complete the survey.
Thanks.
Adamruerric wrote:
I created a custom class called Rooms with all the appropriate setters and getters.Arguably, getters and setters are seldom appropriate.
I iterated through a csv file and input all of the data into my custom object class and then put that object into a list by using list.add().
Now I want to access the class methods through the use of the list.. how can I do so?
How I declared my list:
List list = new ArrayList<Rooms>(); // List implemented as growable array
Rooms xxx = (Rooms).list.get(20);
Says illegal start of type error.. What are you actually trying to accomplish here? Is list a static field of Rooms?
Also, I want to sort the list by the room capacity. My Rooms class has a .setCap and .getCap function but how can I sort the list using that?
From what I know about list.. it has a sort method but not exactly the way I want to sort a custom made class object..List doesn't have a sort method. There's a method in java.util.Collections to sort a list. I think it's "sort". You can pass it a java.util.Comparator that you write, to sort by whatever criteria you like.
Question: will the capacity of a room ever change? In real life, if you build a hotel, and a room has a capacity of 3 persons, does the room ever change capacity? If the capacity never changes, then it's debatable whether you really need a setCap() method. It would be better to set the capacity once, in the constructor, and leave it. -
Hi all,
I have a class which is named 'layout1'. This class has a member function called buildLayout(). I can call use the buildLayout() because it is put to static. So normally I can use the function like this:
layout1.buildLayout()
But now I want to dynamically select different layouts. After I have selected a layout I will get a string like this "layout1". Is it possible to do something like:
getClass("layout1").buildLayout() ?????
I hope someone can help me..
thxI take it you mean you want static members of different classes of a layout type?
Yes, you can do that by using what's called the "reflection" mechanism.
Class layoutClass = Class.forName(layoutName); // load class
Method method = layoutClass.getMethod("buildLayout", new Class[]{});
method.invoke(null,null);Serveral exceptions need to be handled. -
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> -
Stop and Play All Child MovieClips in Flash with Actionscript 3.0
I am stuck with the ActionScript here. I have a very complex animated flash movie for eLearning. These contain around 10 to 15 frames. In each frame I am having multiple movie clip symbols. The animation has been created using a blend of scripting and also normal flash animation.
Now I want to create pause and play functionality for the entire movie. I was able to create the pause function but when i try to play the movie it behaves very strange.
I was able to develop the pause functionality by refering to the below mentioned links:
http://www.unfocus.com/2009/12/07/stop-all-child-movieclips-in-flash-with-actionscript-3-0 /
http://www.curiousfind.com/blog/174
Any help in this regard is highly appreciated as i am approaching a deadline.
I am pasting the code below:
import flash.display.MovieClip;
import flash.display.DisplayObjectContainer;
import flash.utils.Timer;
import flash.events.TimerEvent;
import fl.transitions.*;
import fl.transitions.Tween;
import fl.transitions.easing.*;
import fl.transitions.TweenEvent;
import flash.events.Event;
import flash.events.MouseEvent;
stop();
// function to stop all movieclips
function stopAll(content:DisplayObjectContainer):void
if (content is MovieClip)
(content as MovieClip).stop();
if (content.numChildren)
var child:DisplayObjectContainer;
for (var i:int, n:int = content.numChildren; i < n; ++i)
if (content.getChildAt(i) is DisplayObjectContainer)
child = content.getChildAt(i) as DisplayObjectContainer;
if (child.numChildren)
stopAll(child);
else if (child is MovieClip)
(child as MovieClip).stop();
// function to play all movieclips
function playAll(content:DisplayObjectContainer):void
if (content is MovieClip)
var movieClip:MovieClip = content as MovieClip;
if (movieClip.currentFrame < movieClip.totalFrames) // if the main timeline has reached the end, don't play it
movieClip.gotoAndPlay(currentFrame);
if (content.numChildren)
var child:DisplayObjectContainer;
var n:int = content.numChildren;
for (var i:int = 0; i < n; i++)
if (content.getChildAt(i) is DisplayObjectContainer)
child = content.getChildAt(i) as DisplayObjectContainer;
if (child.numChildren)
playAll(child);
else if (child is MovieClip)
var childMovieClip:MovieClip = child as MovieClip;
if (childMovieClip.currentFrame < childMovieClip.totalFrames)
//childMovieClip.play();
childMovieClip.play();
function resetMovieClip(movieClip:MovieClip):MovieClip
var sourceClass:Class = movieClip.constructor;
var resetMovieClip:MovieClip = new sourceClass();
return resetMovieClip;
pauseBtn.addEventListener(MouseEvent.CLICK, onClickStop_1);
function onClickStop_1(evt:MouseEvent):void
MovieClip(root).stopAll(this);
myTimer.stop();
playBtn.addEventListener(MouseEvent.CLICK, onClickPlay_1);
function onClickPlay_1(evt:MouseEvent):void
MovieClip(root).playAll(this);
myTimer.start();
Other code which helps in animating the movie and other functionalities are as pasted below:
stage.addEventListener(Event.RESIZE, mascot);
function mascot():void {
// Defining variables
var mc1:MovieClip = this.mascotAni;
var sw:Number = stage.stageWidth;
var sh:Number = stage.stageHeight;
// resizing movieclip
mc1.width = sw/3;
mc1.height = sh/3;
// positioning mc
mc1.x = (stage.stageWidth/2)-(mc1.width/2);
mc1.y = (stage.stageHeight/2)-(mc1.height/2);
// keeps the mc1 proportional
mc1.scaleX <= mc1.scaleY ? (mc1.scaleX = mc1.scaleY) : (mc1.scaleY = mc1.scaleX);
stage.removeEventListener(Event.RESIZE, mascot);
mascot();
this.mascotAni.y = 100;
function mascotReset():void
// Defining variables
var mc1:MovieClip = this.mascotAni;
stage.removeEventListener(Event.RESIZE, mascot);
mc1.width = 113.45;
mc1.height = 153.85;
mc1.x = (stage.stageWidth/2)-(mc1.width/2);
mc1.y = (stage.stageHeight/2)-(mc1.height/2);
// keeps the mc1 proportional
mc1.scaleX <= mc1.scaleY ? (mc1.scaleX = mc1.scaleY) : (mc1.scaleY = mc1.scaleX);
var interval:int;
var myTimer:Timer;
// function to pause timeline
function pauseClips(secs:int, myClip:MovieClip):void
interval = secs;
myTimer = new Timer(interval*1000,0);
myTimer.addEventListener(TimerEvent.TIMER, goNextFrm);
myTimer.start();
function goNextFrm(evt:TimerEvent):void
myTimer.reset();
myClip.nextFrame();
myTimer.removeEventListener(TimerEvent.TIMER, goNextFrm);
// function to pause timeline on a particular label
function pauseClipsLabel(secs:int, myClip:MovieClip, myLabel:String):void
interval = secs;
myTimer = new Timer(interval*1000,0);
myTimer.addEventListener(TimerEvent.TIMER, goNextFrm);
myTimer.start();
function goNextFrm(evt:TimerEvent):void
myClip.gotoAndStop(myLabel);
myTimer.removeEventListener(TimerEvent.TIMER, goNextFrm);
MovieClip(root).pauseClips(4.5, this);
// function to fade clips
function fadeClips(target_mc:MovieClip, next_mc:MovieClip, from:Number, to:Number):void
var fadeTW:Tween = new Tween(target_mc, "alpha", Strong.easeInOut, from, to, 0.5, true);
fadeTW.addEventListener(TweenEvent.MOTION_FINISH, fadeFinish);
function fadeFinish(evt:TweenEvent):void
next_mc.nextFrame();
fadeTW.removeEventListener(TweenEvent.MOTION_FINISH, fadeFinish);
// function to fade clips with speed
function fadeClipsSpeed(target_mc:MovieClip, next_mc:MovieClip, from:Number, to:Number, speed:int):void
var fadeTW:Tween = new Tween(target_mc, "alpha", Strong.easeInOut, from, to, speed, true);
fadeTW.addEventListener(TweenEvent.MOTION_FINISH, fadeFinish);
function fadeFinish(evt:TweenEvent):void
next_mc.nextFrame();
fadeTW.removeEventListener(TweenEvent.MOTION_FINISH, fadeFinish);
// function to show screen transitions
function screenFx(target_mc:MovieClip, next_mc:MovieClip):void
//var tweenTW:Tween = new Tween(target_mc,"alpha",Strong.easeInOut,0,1,1.2,true);
var tranFx:TransitionManager = new TransitionManager(target_mc);
tranFx.startTransition({type:Iris, direction:Transition.OUT, duration:1.2, easing:Strong.easeOut, startPoint:5, shape:Iris.CIRCLE});
tranFx.addEventListener("allTransitionsOutDone",doneTrans);
function doneTrans(evt:Event):void
next_mc.nextFrame();
tranFx.removeEventListener("allTransitionsOutDone",doneTrans);
// function to show screen transitions inverse
function screenFxInv(target_mc:MovieClip, next_mc:MovieClip):void
var tweenTW:Tween = new Tween(target_mc,"alpha",Strong.easeInOut,0,1,1.2,true);
var tranFx:TransitionManager = new TransitionManager(target_mc);
tranFx.startTransition({type:Iris, direction:Transition.IN, duration:2, easing:Strong.easeOut, startPoint:5, shape:Iris.SQUARE});
tranFx.addEventListener("allTransitionsInDone",doneTrans);
function doneTrans(evt:Event):void
next_mc.nextFrame();
tranFx.removeEventListener("allTransitionsInDone",doneTrans);
// function to zoom in
function zoomFx(target_mc:MovieClip):void
//var tweenTW:Tween = new Tween(target_mc,"alpha",Strong.easeInOut,0,1,1.2,true);
var tranFx:TransitionManager = new TransitionManager(target_mc);
tranFx.startTransition({type:Zoom, direction:Transition.IN, duration:3, easing:Strong.easeOut});
//tranFx.addEventListener("allTransitionsInDone",doneTrans);
/*function doneTrans(evt:Event):void
next_mc.nextFrame();
// Blinds Fx
function wipeFx(target_mc:MovieClip):void
var tranFx:TransitionManager = new TransitionManager(target_mc);
tranFx.startTransition({type:Wipe, direction:Transition.IN, duration:3, easing:Strong.easeOut, startPoint:9});
// Blinds Fx Center
function fadePixelFx(target_mc:MovieClip):void
var tranFx:TransitionManager = new TransitionManager(target_mc);
tranFx.startTransition({type:Fade, direction:Transition.IN, duration:1, easing:Strong.easeOut});
tranFx.startTransition({type:PixelDissolve, direction:Transition.IN, duration:1, easing:Strong.easeOut, xSections:100, ySections:100});This movie is an animated movie from the start to end. I mean to say that though it stops at certain keyframes in the timeline it stops for only a certain time and then moves on to the next animation sequence.
Its not an application where the user can interact.
On clicking the play button i want the movie to play normally as it was playing before. If the user has not clicked on the pause button it would anyhow play from start to finish.
Is there anyway where i could send in the fla file? -
Error getting the server-side naming service functionality
Hi all,
we are currently setting up the CTS+ activity based transport scenario. Everything seems to be working fine, however, we have to import each transport twice...
Before I go into detail in the error we get I will first describe our landscape. All the configuration we did was done in debate with SAP.
We use the SAP Solution manager (ehp1 SP 4) as the CTS+ server as recommended by SAP and have an NWDI system of which we only use the components DTR and CBS (since CMS is not used anymore in the activity based transport). We have defined three logical ports/RFCs. CTSCONFIG points to the NWDI system. CTSDEPLOY is running on the java stack of the solution manager and is only used for portal content (=epa) transports. CTSDEPLOY_DI is pointing to the NWDI system and is used for all NWDI (=dip) changes. The NWDI is running ehp1 SP3.
In STMS I defined all the non-abap systems (and configured them to use CTSDEPLOY_DI) and created the following transport route:
upload system (IMP) -> DEV -> ACC -> QAS -> PRD
I first attached the used dependencies in a transport request (SAP_BUILDT, EP_BUILDT, etc) these imported just fine. Then I did the SCA files which contain our custom code. I extracted these from the assemble step on our current NWDI system which will be removed as soon as we switch to the new CTS+ environment.
When we import the transport into the runtime systems then we see the DTR and CBS be filled sucesfully for this specific system. However, the transport request itself always fails with errorcode 12 and the error is:
Error during export service registration: Error getting the server-side naming service functionality during getInitialContext opera
tion. com.sap.engine.services.jndi.persistent.exceptions.NamingException: Error getting the server-side naming service functionality during getInitialContext operation.
Error in execution of Web services CTSDEPLOY_DI , exception is cx_cts_file_import_failed
File import canceled
When we then reimport the same transport it will go the second time fine. This is no problem during the setup but will not be workable when we go live ofcourse. Is there anyone who had this issue before as well and have a solution for it?
Kind Regards,
Nico van der Linden...Hello Nico,
I would need the java trace files to get more info on this issue, but you can start troubleshooting this error with these notes:
#1172252: CTS+, 'attach file': Troubleshooting Guide;
#1003674: Enhancement for non-ABAP systems in CTS;
#1155884: CTS+, configuration 'close coupling': Troubleshooting guide;
Pay special attention to parameter NON_ABAP_WBO_CLIENT, whether it's correctly set on your CTS+ system(s).
Note #1003674 is a must for any CTS+ systems to work properly, as well as having an updated version of the transport programs (tp and R3trans).
Lastly, note #1155884 goes through some JCoException exceptions that commonly take place during CTS+ transports. But again, you need to check the underlying trace files to find the root cause of your issue.
I hope this information helps.
Best regards,
Tomas Black -
Member function and member procedure inside an object type in Oracle.
Hi All,
Please do have a look at these codes and help me understand. I have no idea about this member function and member procedure. How do they work? Please explain me about this.
Regards,
BS2012
create type foo_type as object (
foo number,
member procedure proc(p in number),
member function func(p in number) return number
create type body foo_type as
member procedure proc(p in number) is begin
foo := p*2;
end proc;
member function func(p in number) return number is begin
return foo/p;
end func;
end;
/Methods are just like functions or procedures in a package, except they're not in a package, their part of an object type.
The object has attributes (which are the variables declared in it).
To use such an object you would do things like this...
SQL> set serverout on
SQL>
SQL> declare
2 v_foo foo_type;
3 v_val number;
4 begin
5 v_foo := foo_type(20); -- instantiate the object and initialize the object attributes
6 v_foo.proc(20); -- call the object method (proc)
7 v_val := v_foo.func(4); -- call the object method (func)
8 dbms_output.put_line(v_val);
9 end;
10 /
10
PL/SQL procedure successfully completed.The Type definition you've declared creates the object class, but not actually an object itself.
To actually have an object you need to declare a variable of that object class type, and then instantiate it. When you instantiate the object you need to initialize all the attributes (generally you can pass null if required for each of them to initialize them).
Once you have your object instantiated, you can call the methods within that object as demonstrated above, a bit like calling functions and procedures in a package, except they are methods within the object type itself, and therefore called directly by referencing them from the variable.
The documentation goes into a lot more detail of objects if you look it up. -
Hyperion Planning search member function error
Hi,
We have a Oracle EPM 11.1.1.3 64 bit implementation on windows 2003 R2 servers. Users are authenticated externally through shared services. For only one user the planning search member function doesn't work correctly.
When the user clicks on the search member function in a data form, he gets redirected to the login page.
Please note that this just happens for only one user irrespective of the machine from where he logs on. For all other 500 or so users the search function works fine.
Thanks in advance!!!Can this user drill into this dimension using SmartView/Classic add-in?
IOW, is this a weird security issue that only manifests itself in POV dropdowns, or does the security work when trying to retrieve when in rows.
If you create another username with the same security, does it behave the same way?
Just wondering how weird, weird is.
Regards,
Cameron Lackpour -
Server-side naming service functionality
Dear all,
I have this problem on my JCA connection:
###Exception #1#com.sap.engine.services.jndi.persistent.exceptions.NamingException: Error getting the server-side naming service functionality during getInitialContext operation.
at com.sap.engine.services.jndi.InitialContextFactoryImpl.getInitialContext(InitialContextFactoryImpl.java:238)
at ...etc etc....
The problem is on this part of code:
public void doProcessBeforeOutput() throws PageException {
TestJCABean myBean = new TestJCABean();
myBean.setStr(remoteStr);
((IPortalComponentRequest)getRequest()).getServletRequest().setAttribute("myBean", myBean);
this.setForward("TestJCA.jsp");
I really don't understand, any suggestion regarding this?
I will apprecciate a lot.
VipaHi Ravi,
here my code, thanks for your help.
-----TESTJca.java
public class TestJCA extends PageProcessorComponent {
public DynPage getPage(){
return new TestJCADynPage();
public static class TestJCADynPage extends JSPDynPage{
private final static String LOGGER = "NameJCA";
private final static ILogger log = PortalRuntime.getLogger(LOGGER);
private String remoteStr = "";
public void doInitialization(){
//Accedo il portal component profile per ottente il valore del system alias configurato per l'iview
//MNT è stato configurato da portal e sul file xml
log.info(this, "[doInitialization()]comincio");
IPortalComponentRequest request = (IPortalComponentRequest) this.getRequest();
IPortalComponentContext compContext = request.getComponentContext();
IPortalComponentProfile userProfile = compContext.getProfile();
//Ritorna MNT che ho aggiunto in portalapp.xml
String sys = userProfile.getProperty("System");
log.info(this, "[doInitialization()]valore del system alias: "sys"");
//Utilizza la funzione per la connessione al sys di backend e reperimento dell'info necessarie
remoteStr = getRemoteString(request, sys);
log.info(this, "[doInitialization()]remoteStr: "remoteStr"");
public void doProcessAfterInput() throws PageException {
public void doProcessBeforeOutput() throws PageException {
TestJCABean myBean = new TestJCABean();
myBean.setStr(remoteStr);
((IPortalComponentRequest)getRequest()).getServletRequest().setAttribute("myBean", myBean);
// fill your bean with data here...
//log.info(this, "[doInitialization()]Setto il nome della jsp");
this.setJspName("TestJCA.jsp");
//this.setForward("TestJCA.jsp");
//IResource jsp = request.getResource(IResource.JSP, "pagelet/bannerOriginalle.jsp");
//response.include(request, jsp);
@param pgContext
@param response
@param compBean
@param cubeName
@param templateID
private String getRemoteString(IPortalComponentRequest request, String sapSystem) {
IConnection connection = null;
try {
// get the Connector Gateway Service
Object connectorservice = PortalRuntime.getRuntimeResources().getService(IConnectorService.KEY);
IConnectorGatewayService cgService = (IConnectorGatewayService) connectorservice;
if (cgService == null) {
log.info(this, "[getRemoteString()]Error in get Connector Gateway Service
try {
IUser user = request.getUser();
ConnectionProperties cp = new ConnectionProperties(user.getLocale(), user);
connection = cgService.getConnection(sapSystem, (ConnectionProperties) request);
} catch (Exception e) {
log.severe(this, "[getRemoteString()]Connection to SAP system failed. Exception:" +e.getLocalizedMessage());
if (connection == null) {
log.info(this, "[getRemoteString()]Connection is null
} else {
log.info(this, "[getRemoteString()]Connection succesful");
} catch (Exception e) {
log.severe(this, "[getRemoteString()]Exception occured. Exception:" +e.getLocalizedMessage());
log.info(this, "[getRemoteString()]Iview: runFunction");
try {
// Get the Interaction interface for executing the command
IInteraction ix = connection.createInteractionEx();
// Get interaction spec and set the name of the command to run
IInteractionSpec ixspec = ix.getInteractionSpec();
//String functionName = "Z_ESTRAIDATA";
String functionName = "RPL_CUSTOMER_NAME_GET";
// Put Function Name into interaction Properties.
ixspec.setPropertyValue("Name", functionName);
// return structure - dovrebbe essere il nome del parametro di export della funzione
//cambiarlo di conseguenza
//String function_out = "ERRORE";
String function_out = "PE_NAME1";
String function_in_value = "1000010001";
RecordFactory rf = ix.getRecordFactory();
MappedRecord input = rf.createMappedRecord("input");
// put function input parameters
// input.put("ZSC_CUBE", cubeName);
// input.put("ZSC_PERVAL", selection);
// input.put("ZSC_UTENTE", user.getLogonUid());
input.put("PI_KUNNR", function_in_value);
//ottengo l'oggetto che mi rappresenta l'output della funzione
//lancio la RFM
MappedRecord output = (MappedRecord) ix.execute(ixspec, input);
Object rs = null;
try {
Object result = output.get(function_out);
if (result == null) {
rs = new String(" ");
} else if (result instanceof IRecordSet) {
rs = (IRecordSet) result;
log.info(this, "[getRemoteString()]rs ritornato: " + rs.toString());
return rs.toString();
// Do need all type here ?
else {
rs = result.toString();
log.info(this, "[getRemoteString()]rs ritornato: " + rs.toString());
return rs.toString();
} catch (Exception ex) {
log.severe(ex, "[getRemoteString()]Error getting function result. Exception:" +ex.getLocalizedMessage());
log.info(this, "[getRemoteString()]Codice errore ritornato: " + rs.toString());
} catch (Exception e) {
log.severe(e, "[getRemoteString()]Error getting function interaction. Exception:" +e.getLocalizedMessage());
return null;
-----TESTJcaBean.java
package ... ... ... ...
import java.io.Serializable;
public class TestJCABean implements Serializable {
private String str;
@return
public String getStr() {
return str;
@param string
public void setStr(String string) {
str = string; -
Reusing functions in ActionScript Classes
I have an MXML Component which I am using as a Base Class for
other components that share similar functionality. The Extended
Classes use some of the same functions. Those functions perform no
logic in the Base Class, but are called by Event Listeners in the
Base Class. Right now, I have those functions setup as protected
functions, and I am overriding them in the Extended Classes, but
I'm thinking this isn't the best way to do this. Should I use an
Interface???
Any suggestions would be greatly appreciated...
Thank you."Ansury" <[email protected]> wrote in
message
news:gacbks$1b0$[email protected]..
> Yes, I was referring to having your inheriting classes
implement the
> interface
> (still a pain in the rear), but like I said you have to
remember to add
> the
> interface to each class anyway... It's probably not
worth worrying about
> it at
> this stage of AS's life.
>
> Regarding abstract classes in current AS, that's
interesting. But I
> usually
> avoid fancy hacks that are likely to confuse new people
looking at or
> maintaining my code. Maybe it's not the coolest strategy
but many people
> do
> appreciate it when you omit that fancy fancy automagic
tricky code and go
> with
> something much easier to understand or maintain from the
outsider's
> perspective.
>
> Also I'm not sure what that method gets you over simply
throwing an
> exception
> in a function that must be implemented by an extending
class. I guess
> this:
> "We can make a real abstract class that implements none,
some, or all of
> an
> interface?s methods". (Although really you can still do
that with the
> common
> exception throwing method.) I suppose this is useful if
you're making
> lots of
> complex hierarchies and leveraging polymorphism alot and
so on, but that
> type
> of design tends to get trickier than it's worth in
practice.
>
> And if this gave you a compile time error that might be
cooler, but it
> looks
> like it's still just generating a run-time error.
Anyway, enough rambling
> on.
>
> Cool trick, but I'll wait until Adobe decides to support
abstract natively
> and
> it becomes common knowledge - maybe with Flex 4 and
Flash 10?
Probably too soon after As3 and ECMA parted ways -
Consider this code:
header.h:
#include <iostream>
class A{
int i;
public:
A() : i(101) {}
void print();
void g(A&);
cpp1:
#include "header.h"
inline void A::print() { std::cout << i << '\n'; }
int main()
A a;
a.print();
g(a);
cpp2:
#include "header.h"
void g(A& a) { a.print(); }
Note that the member function A::print is defined outside its class with the specifier inline. The code executes normally in VS2014, despite the fact that the member function is odr-used in cpp2, but it is not defined in this file.
I found the following quotes from the C++11 Standard:
9.3/3:
An inline member function (whether static or non-static) may also be defined outside of its class definition provided either its declaration in the class definition or its definition outside of the class definition declares the function as inline.
3.2/3:
An inline function shall be defined in every translation unit in which it is odr-used.
7.1.2/4:
An inline function shall be defined in every translation unit in which it is odr-used and shall have exactly the same definition in every case.
The two last quotes above don't speak exactly about a member function but I believe they should be applied in this case too, as the inline specifier is a hint for the compiler to expand the function inline at the point of call. If we assume the compiler
does this inline expansion, how does it know the definition of the member function, while compiling the cpp2 file?On 12/31/2014 12:13 PM, Belloc wrote:
C++ is supported on many different systems, with tools provided by many different vendors. Microsoft's linker happens to be pretty smart about merging identical blocks of code. Other toolchains may use linkers that weren't designed with this in mind,
and that would choke on multiple definitions of the same symbol. The C++ standard is written so that it's actually implementable, on as many platforms as possible.
Frankly I don't understand your statement above. What would be the difficulty for any compiler*that is already compliant with 3.2/3 and 7.1.2/4*, to adapt its code, so that each call to an inline function in a TU, which doesn't carry the function
definition, is simply not inlined?
That's the easy part. The "there's identical function definition in every .obj file, and the linker is expected to merge them all together" is the hard part. Normally, if you define a regular (non-inline) function in more than one source
file, you get a linker error. Microsoft's linker has a special way to mark "defined more than once, just pick any copy" block of code (see __declspec(selectany) ). Other linkers may not.
Igor Tandetnik -
Alter type to add a member function
Hello,
I have Oracle 9i r2 and I really nedd to add a member function into an Object that is associated to other.
My Object spec is this:
TYPE CM_CTRL_CM AS OBJECT
lo_Ent_CM CM_Ent_CM,
member function IniEntCM(self in out CM_Ctrl_CM) return integer
I do this to add a member function:
alter type CM_Ctrl_CM add member function FijDatCM(ao_DatCM in CM_DatCM) return integer cascade ;
And as the result I get the nex the Object Spec:
TYPE CM_CTRL_CM AS OBJECT
lo_Ent_CM CM_Ent_CM,
member function IniEntCM(self in out CM_Ctrl_CM) return integer
alter type CM_Ctrl_CM add member function FjDatCM(ao_DatCM in CM_DatCM) return integer cascade
As you can see, all the alter type statement is added at the end of my Object Spec wich cause a compilation error and the object get invalid.
I need to know how to add a member function. It's very important for the my project successfull.
Thanks.
Luis SilvaAnd as the result I get the nex the Object Spec:
TYPE CM_CTRL_CM AS OBJECT
lo_Ent_CM CM_Ent_CM,
member function IniEntCM(self in out CM_Ctrl_CM) return integer
alter type CM_Ctrl_CM add member function FjDatCM(ao_DatCM in CM_DatCM) >> return integer cascade
/**************************************************************************************/Fnord. What is this supposed to mean?
Let me introduce you to a very technical skill known only to the illuminati: cut'n'paste. Using this skill you will be able to transmit information across great differences.
To use cut'n'paste:
(1) Open a reply to this message.
(2) Run your code in SQL*Plus.
(3) Highlight the code and the feedback and use the editor command to cut the code.
(4) Return to the forum and use the editor command to paste the result.
(5) Post
See what you've posted obviously is not from SQL*Plus. Maybe it's some other IDE. But we're stupid. If you show us output from SQL*Plus we can diagnose the problem otherwise we're flying blind.
Oh, and please include the code for CM_Ent_CM, as we can't run your SQL without it.
Cheers, APC
Maybe you are looking for
-
Error in query due to exc aggregation with non-cumulative KF
Hi All, when i am trying to execute a query I am getting the following errors. SAPLRRI2 and form RTIME_FUELLEN_06-01- Program error in class SAPMSSY1 method: UNCAUGHT _ESCEPTION. I have calculated KF of non-cumulative KF. If I delete the calculated t
-
Ipod nano compatibility with ipod accessories
Is the ipod nano compatible with other ipod accessories? Will it work with my Bose speaker system built for the ipod? Will the car charger and battery backups that I have purchased for my ipods work with the nano? thanks
-
HI, I am trying to install OBIEE 11.1.1.6 on Windows 7 . Have created repository successfully ,using the RCU 11.1.1.6 and now tring to install OBI. I am getting the below error "Operating system does not support IPV4". Can anyone please suggest why i
-
Resize and crop images to a specific width and height
Hi, I want to convert images to thumbnails with a 'standard' format - I need all images to have the same width and height. So I need to resize and then crop the images. Is this possibe with JAI? Are there other libraries which can do this better? I'v
-
Hi :) I have define a Pattern: [{alnum}{L}]+ to find a word, but i still want this pattern to avoid some words that i don't want, such as "hello", "how"...etc. How do I define a new Pattern to fit this request. thx:)