Page Menu
Home
Code
Search
Configure Global Search
Log In
Files
F391112
OpenAjax.js
No One
Temporary
Actions
View File
Edit File
Delete File
View Transforms
Subscribe
Mute Notifications
Award Token
Flag For Later
Size
5 KB
Subscribers
None
OpenAjax.js
View Options
/*******************************************************************************
* OpenAjax.js
*
* Reference implementation of the OpenAjax Hub, as specified by OpenAjax Alliance.
* Specification is under development at:
*
* http://www.openajax.org/member/wiki/OpenAjax_Hub_Specification
*
* Copyright 2006-2007 OpenAjax Alliance
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not
* use this file except in compliance with the License. You may obtain a copy
* of the License at http://www.apache.org/licenses/LICENSE-2.0 . Unless
* required by applicable law or agreed to in writing, software distributed
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR
* CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
******************************************************************************/
// prevent re-definition of the OpenAjax object
if
(
!
window
[
"OpenAjax"
]){
OpenAjax
=
new
function
(){
var
t
=
true
;
var
f
=
false
;
var
g
=
window
;
var
libs
;
var
ooh
=
"org.openajax.hub."
;
var
h
=
{};
this
.
hub
=
h
;
h
.
implementer
=
"http://openajax.org"
;
h
.
implVersion
=
"0.6"
;
h
.
specVersion
=
"0.6"
;
h
.
implExtraData
=
{};
var
libs
=
{};
h
.
libraries
=
libs
;
h
.
registerLibrary
=
function
(
prefix
,
nsURL
,
version
,
extra
){
libs
[
prefix
]
=
{
prefix
:
prefix
,
namespaceURI
:
nsURL
,
version
:
version
,
extraData
:
extra
};
this
.
publish
(
ooh
+
"registerLibrary"
,
libs
[
prefix
]);
}
h
.
unregisterLibrary
=
function
(
prefix
){
this
.
publish
(
ooh
+
"unregisterLibrary"
,
libs
[
prefix
]);
delete
libs
[
prefix
];
}
h
.
_subscriptions
=
{
c
:
{},
s
:
[]
};
h
.
_cleanup
=
[];
h
.
_subIndex
=
0
;
h
.
_pubDepth
=
0
;
h
.
subscribe
=
function
(
name
,
callback
,
scope
,
subscriberData
,
filter
){
if
(
!
scope
){
scope
=
window
;
}
var
handle
=
name
+
"."
+
this
.
_subIndex
;
var
sub
=
{
scope
:
scope
,
cb
:
callback
,
fcb
:
filter
,
data
:
subscriberData
,
sid
:
this
.
_subIndex
++
,
hdl
:
handle
};
var
path
=
name
.
split
(
"."
);
this
.
_subscribe
(
this
.
_subscriptions
,
path
,
0
,
sub
);
return
handle
;
}
h
.
publish
=
function
(
name
,
message
){
var
path
=
name
.
split
(
"."
);
this
.
_pubDepth
++
;
this
.
_publish
(
this
.
_subscriptions
,
path
,
0
,
name
,
message
);
this
.
_pubDepth
--
;
if
((
this
.
_cleanup
.
length
>
0
)
&&
(
this
.
_pubDepth
==
0
)){
for
(
var
i
=
0
;
i
<
this
.
_cleanup
.
length
;
i
++
){
this
.
unsubscribe
(
this
.
_cleanup
[
i
].
hdl
);
}
delete
(
this
.
_cleanup
);
this
.
_cleanup
=
[];
}
}
h
.
unsubscribe
=
function
(
sub
){
var
path
=
sub
.
split
(
"."
);
var
sid
=
path
.
pop
();
this
.
_unsubscribe
(
this
.
_subscriptions
,
path
,
0
,
sid
);
}
h
.
_subscribe
=
function
(
tree
,
path
,
index
,
sub
){
var
token
=
path
[
index
];
if
(
index
==
path
.
length
){
tree
.
s
.
push
(
sub
);
}
else
{
if
(
typeof
tree
.
c
==
"undefined"
){
tree
.
c
=
{};
}
if
(
typeof
tree
.
c
[
token
]
==
"undefined"
){
tree
.
c
[
token
]
=
{
c
:
{},
s
:
[]
};
this
.
_subscribe
(
tree
.
c
[
token
],
path
,
index
+
1
,
sub
);
}
else
{
this
.
_subscribe
(
tree
.
c
[
token
],
path
,
index
+
1
,
sub
);
}
}
}
h
.
_publish
=
function
(
tree
,
path
,
index
,
name
,
msg
){
if
(
typeof
tree
!=
"undefined"
){
var
node
;
if
(
index
==
path
.
length
)
{
node
=
tree
;
}
else
{
this
.
_publish
(
tree
.
c
[
path
[
index
]],
path
,
index
+
1
,
name
,
msg
);
this
.
_publish
(
tree
.
c
[
"*"
],
path
,
index
+
1
,
name
,
msg
);
node
=
tree
.
c
[
"**"
];
}
if
(
typeof
node
!=
"undefined"
){
var
callbacks
=
node
.
s
;
var
max
=
callbacks
.
length
;
for
(
var
i
=
0
;
i
<
max
;
i
++
){
if
(
callbacks
[
i
].
cb
){
var
sc
=
callbacks
[
i
].
scope
;
var
cb
=
callbacks
[
i
].
cb
;
var
fcb
=
callbacks
[
i
].
fcb
;
var
d
=
callbacks
[
i
].
data
;
if
(
typeof
cb
==
"string"
){
// get a function object
cb
=
sc
[
cb
];
}
if
(
typeof
fcb
==
"string"
){
// get a function object
fcb
=
sc
[
fcb
];
}
if
((
!
fcb
)
||
(
fcb
.
call
(
sc
,
name
,
msg
,
d
)))
{
cb
.
call
(
sc
,
name
,
msg
,
d
);
}
}
}
}
}
}
h
.
_unsubscribe
=
function
(
tree
,
path
,
index
,
sid
)
{
if
(
typeof
tree
!=
"undefined"
)
{
if
(
index
<
path
.
length
)
{
var
childNode
=
tree
.
c
[
path
[
index
]];
this
.
_unsubscribe
(
childNode
,
path
,
index
+
1
,
sid
);
if
(
childNode
.
s
.
length
==
0
)
{
for
(
var
x
in
childNode
.
c
)
return
;
delete
tree
.
c
[
path
[
index
]];
}
return
;
}
else
{
var
callbacks
=
tree
.
s
;
var
max
=
callbacks
.
length
;
for
(
var
i
=
0
;
i
<
max
;
i
++
)
if
(
sid
==
callbacks
[
i
].
sid
)
{
if
(
this
.
_pubDepth
>
0
)
{
callbacks
[
i
].
cb
=
null
;
this
.
_cleanup
.
push
(
callbacks
[
i
]);
}
else
callbacks
.
splice
(
i
,
1
);
return
;
}
}
}
}
// The following function is provided for automatic testing purposes.
// It is not expected to be deployed in run-time OpenAjax Hub implementations.
h
.
reinit
=
function
()
{
for
(
var
lib
in
OpenAjax
.
hub
.
libraries
)
{
delete
OpenAjax
.
hub
.
libraries
[
lib
];
}
OpenAjax
.
hub
.
registerLibrary
(
"OpenAjax"
,
"http://openajax.org/hub"
,
"0.6"
,
{});
delete
OpenAjax
.
_subscriptions
;
OpenAjax
.
_subscriptions
=
{
c
:
{},
s
:
[]};
delete
OpenAjax
.
_cleanup
;
OpenAjax
.
_cleanup
=
[];
OpenAjax
.
_subIndex
=
0
;
OpenAjax
.
_pubDepth
=
0
;
}
};
// Register the OpenAjax Hub itself as a library.
OpenAjax
.
hub
.
registerLibrary
(
"OpenAjax"
,
"http://openajax.org/hub"
,
"0.6"
,
{});
}
File Metadata
Details
Attached
Mime Type
text/plain
Expires
Sat, Feb 22, 20:21 (19 h, 25 m ago)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
24451
Default Alt Text
OpenAjax.js (5 KB)
Attached To
rZEDHG ZedLegacy
Event Timeline
Log In to Comment