[sip-comm-dev] ProtocolProviderService implementation


#1

Hi All,

As I'm preparing myself to start programming by July, a have some issues I would like to clear out after have studied the MSN protocol e some of the source code.

If get it rigth, in order to provide the MSN protocol I have to implement the this interface(ProtocolProviderService), in fact, not only this interface but also all interfaces in the net.java.sip.communicator.service.protocol package.

I shall create the package net.java.sip.communicator.impl.protocol.msn with all the interfaces implementation (ContactList, Authorization, Call, etc). I don't see yet how would this service be called by the GUI, but I shall understand when I spend more time looking to the code. What if I have this library (JMML) I intend to use that has it own classes, which some times have the same name as those in the net.java.sip.communicator.service.protocol package? Use both of them???

The MSN Procotol uses other protocols to some of its features, like SIP to audio comunications, RTP to webcam sessions, MSNFTP to file exchange, etc. It also possible to implement other services, but I don't think thats the idea right know. I was wandering if the ProtocolProviderService implementation to the SIP protocol can be accessed from my implamentation or I shall take the actions inside my implementation??

The idea is to use existent libraries (for RTP, MSN, SIP, etc) as much as possible, adding "only" the software logic and execution flow.

My current list of priorities from the MSN provided features is:
-Presence
-Instant Messaging
-File exchange
-Webcam
-SIP

Thank you all for your atention,
Best regards...
Pedro Oliveira

PS: Still in debt with the icq account issue. (add an explanation to the error that will occur if the file is not correctly writen)

···

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#2

Hello Pedro,

Pedro Oliveira wrote:

If get it rigth, in order to provide the MSN protocol I have to implement the this interface(ProtocolProviderService), in fact, not only this interface but also all interfaces in the net.java.sip.communicator.service.protocol package.

Right. The ICQ bundle is already doing that so you could use it as an
example. Your implementation however is certainly going to be different
since it would have to adapt to the stack you are using.

I shall create the package net.java.sip.communicator.impl.protocol.msn with all the interfaces implementation (ContactList, Authorization, Call, etc).

Right.

I don't see yet how would this service be called by the GUI, but I shall understand when I spend more time looking to the code.

The GUI simply looks for all implementations of the
ProtocolProviderService currently registered in the OSGI and obtains
references to them

What if I have this library (JMML) I intend to use that has it own classes, which some times have the same name as those in the net.java.sip.communicator.service.protocol package? Use both of them???

Your lib, JMML, would be added as a jar to the project. in your classes,
located in:

net.java.sip.communicator.impl.protocol.msn

you would be implementing those from

net.java.sip.communicator.service.protocol

and you will be filling them with content that uses the jmml library. I
did not quite understand your concern with the names.

The MSN Procotol uses other protocols to some of its features, like SIP to audio comunications, RTP to webcam sessions, MSNFTP to file exchange, etc. It also possible to implement other services, but I don't think thats the idea right know. I was wandering if the ProtocolProviderService implementation to the SIP protocol can be accessed from my implamentation or I shall take the actions inside my
implementation??

Very good question! As far as RTP goes you could use the media service.
You could encapsulate MSNFTP in your implementation since no other
protocols are going to use it.

Now SIP is another story.

The SIP implementation of the protocol provider service would be using
the jain-sip reference implementation from NIST.

I guess the most logical way to deal with the situation would be to
simply export jain-sip as an OSGI service so that anyone interested
could use it. This way both MSN and the SIP impl of the protocol
provider will be able to access it.

Until we get there however you could simply start by implementing the
instant messaging part. I think there'll be few surprises there and that
it could be quite straightforward.

The idea is to use existent libraries (for RTP, MSN, SIP, etc) as much as possible, adding "only" the software logic and execution flow.

My current list of priorities from the MSN provided features is: -Presence -Instant Messaging -File exchange -Webcam -SIP

Cool. Sounds great!

Thank you all for your atention, Best regards... Pedro Oliveira

Cheers and good luck!
Emil

PS: Still in debt with the icq account issue. (add an explanation to
the error that will occur if the file is not correctly writen)

Re: PS: Ok!


#3

Hello Pedro,

I'm wondering have you any success with the msn protocol. Have you implemented something ?
I was thinking of doing this myself but I wanted to first check whether you've made any progress.
Cheers
damencho

···

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#4

Hello Damian

Sorry for my short answer yesterday, I was in a hurry... and just now I have
seen that the email I answered was sent only to me, let me answer to list
now, more complete though.

As I sad, I have started by looking the ICQ implementation in order to
create some classes, mainly those related to the service
registration.(MsnActivator, MsnAccountID, ProtocolProviderServiceMsnImpl,
... ). By the way, what is that Joust Sim Connection I saw many times in the
ICQ implementation . I also have created a target to the msn in the build
file, I'll send these lines later today!

These last days I had some problems creating the slick package, but I didn't
write anything about it yet because I want to look deeper the ICQ slick
implementation. The first slick I have created is the one that tests the
service registration.

I think that is all, for the moment. I am really looking forward to speed up
my implementation rate and to keep you more updated about my progress.

Cheers
Pedro

···

On 7/25/06, Damian Minkov <damencho@gmail.com> wrote:

Hello Pedro,

I'm wondering have you any success with the msn protocol. Have you
implemented something ?
I was thinking of doing this myself but I wanted to first check whether
you've made any progress.

Cheers
damencho

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#5

Hello Pedro,

As I sad, I have started by looking the ICQ implementation in order to create some classes, mainly those related to the service registration.(MsnActivator, MsnAccountID, ProtocolProviderServiceMsnImpl, ... ).

I am currently putting up some documentation and implementation guidelines for the protocol provider service on sip-communicator.org

http://www.sip-communicator.org/index.php/Documentation/ProtocolProviderService

I think you may find it helpful. Beware, it's still a work in progress so let me know in case you'd like further clarification on some points.

By the way, what is that Joust Sim Connection I saw many times in the ICQ implementation .

JoustSIM is the stack we're using for ICQ support. The joust sim connection is an object instantiating the stack's connection class. You won't have an exact match for this class in your MSN implementation since you are using a different stack with its own architecture.

Here are the tasks I have created on the build.xml file on my machine. Please, alert me on any mistake... :slight_smile: It was sort of a copy and paste followed by some changing in the names.

    <!-- Alteracao Pedro -->
        <!-- BUNDLE-MSN -->
        <target name="bundle-msn">
            <!-- Creates a bundle containing the msn impl of the protocol provider."-->
            <jar compress="false" destfile="${bundles.dest}/protocol-msn.jar"
                manifest="src/net/java/sip/communicator/impl/protocol/msn/msn.provider.manifest.mf">

This seems ok.

                <zipfileset dir="${dest}/net/java/sip/communicator/service/protocol"
                    prefix="net/java/sip/communicator/service/protocol"/>

You don't need to include the protocol package since it is imported by the protocol.jar bundle. We've changed this recently so it may be a good idea to cvs update your sandbox.

                <zipfileset dir="${dest}/net/java/sip/communicator/impl/protocol/msn"
                    prefix="net/java/sip/communicator/impl/protocol/msn"/>

                <zipfileset src="\{lib\}/joscar\-0\.9\.4\-cvs\-bin\.jar&quot; prefix=&quot;&quot;/&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;zipfileset src=&quot;{lib}/oscar-aim.jar" prefix=""/>
                <zipfileset src="${lib}/retroweaver-rt.jar" prefix=""/>

These three jars contain the icq stack. There is no need for you to include them. You should replace them with the jars of your own stack.

            </jar>
        </target>

        <!-- BUNDLE-MSN-SLICK -->
        <target name="bundle-msn-slick">
            <!-- Creates a bundle containing the slick for the MSN protocol provider."-->
            <jar compress="false" destfile="\{bundles\.dest\}/protocol\-msn\-slick\.jar&quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;manifest=&quot;test/net/java/sip/communicator/slick/protocol/msn/msn\.provider\.slick\.manifest\.mf&quot;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;zipfileset dir=&quot;{dest}/net/java/sip/communicator/slick/protocol/msn"
                    prefix="net/java/sip/communicator/slick/protocol/msn"/>

                <zipfileset src="\{lib\}/joscar\-0\.9\.4\-cvs\-bin\.jar&quot; prefix=&quot;&quot;/&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;zipfileset src=&quot;{lib}/oscar-aim.jar" prefix=""/>
                <zipfileset src="${lib}/retroweaver-rt.jar" prefix=""/>

Once again these jars are irrelevant here.

            </jar>
        </target>

Good luck!
Emil

···

On 7/25/06, *Damian Minkov* <damencho@gmail.com > <mailto:damencho@gmail.com>> wrote:

    Hello Pedro,

    I'm wondering have you any success with the msn protocol. Have you
    implemented something ?
    I was thinking of doing this myself but I wanted to first check whether
    you've made any progress.

    Cheers
    damencho

    ---------------------------------------------------------------------
    To unsubscribe, e-mail:
    dev-unsubscribe@sip-communicator.dev.java.net
    <mailto:dev-unsubscribe@sip-communicator.dev.java.net>
    For additional commands, e-mail:
    dev-help@sip-communicator.dev.java.net
    <mailto:dev-help@sip-communicator.dev.java.net>


#6

Thanks Emil,

I am looking at the sip-comm site right now.... and also updating my sandbok as well...

Cheers
Pedro

Emil Ivov wrote:

···

Hello Pedro,

As I sad, I have started by looking the ICQ implementation in order to create some classes, mainly those related to the service registration.(MsnActivator, MsnAccountID, ProtocolProviderServiceMsnImpl, ... ).

I am currently putting up some documentation and implementation guidelines for the protocol provider service on sip-communicator.org

http://www.sip-communicator.org/index.php/Documentation/ProtocolProviderService

I think you may find it helpful. Beware, it's still a work in progress so let me know in case you'd like further clarification on some points.

By the way, what is that Joust Sim Connection I saw many times in the ICQ implementation .

JoustSIM is the stack we're using for ICQ support. The joust sim connection is an object instantiating the stack's connection class. You won't have an exact match for this class in your MSN implementation since you are using a different stack with its own architecture.

Here are the tasks I have created on the build.xml file on my machine. Please, alert me on any mistake... :slight_smile: It was sort of a copy and paste followed by some changing in the names.

    <!-- Alteracao Pedro -->
        <!-- BUNDLE-MSN -->
        <target name="bundle-msn">
            <!-- Creates a bundle containing the msn impl of the protocol provider."-->
            <jar compress="false" destfile="${bundles.dest}/protocol-msn.jar"
                manifest="src/net/java/sip/communicator/impl/protocol/msn/msn.provider.manifest.mf">

This seems ok.

                <zipfileset dir="${dest}/net/java/sip/communicator/service/protocol"
                    prefix="net/java/sip/communicator/service/protocol"/>

You don't need to include the protocol package since it is imported by the protocol.jar bundle. We've changed this recently so it may be a good idea to cvs update your sandbox.

                <zipfileset dir="${dest}/net/java/sip/communicator/impl/protocol/msn"
                    prefix="net/java/sip/communicator/impl/protocol/msn"/>

                <zipfileset src="${lib}/joscar-0.9.4-cvs-bin.jar" prefix=""/>
                <zipfileset src="${lib}/oscar-aim.jar" prefix=""/>
                <zipfileset src="${lib}/retroweaver-rt.jar" prefix=""/>

These three jars contain the icq stack. There is no need for you to include them. You should replace them with the jars of your own stack.

            </jar>
        </target>

        <!-- BUNDLE-MSN-SLICK -->
        <target name="bundle-msn-slick">
            <!-- Creates a bundle containing the slick for the MSN protocol provider."-->
            <jar compress="false" destfile="${bundles.dest}/protocol-msn-slick.jar"
                manifest="test/net/java/sip/communicator/slick/protocol/msn/msn.provider.slick.manifest.mf">

                <zipfileset dir="${dest}/net/java/sip/communicator/slick/protocol/msn"
                    prefix="net/java/sip/communicator/slick/protocol/msn"/>

                <zipfileset src="${lib}/joscar-0.9.4-cvs-bin.jar" prefix=""/>
                <zipfileset src="${lib}/oscar-aim.jar" prefix=""/>
                <zipfileset src="${lib}/retroweaver-rt.jar" prefix=""/>

Once again these jars are irrelevant here.

            </jar>
        </target>

Good luck!
Emil

On 7/25/06, *Damian Minkov* <damencho@gmail.com >> <mailto:damencho@gmail.com>> wrote:

    Hello Pedro,

    I'm wondering have you any success with the msn protocol. Have you
    implemented something ?
    I was thinking of doing this myself but I wanted to first check whether
    you've made any progress.

    Cheers
    damencho

    ---------------------------------------------------------------------
    To unsubscribe, e-mail:
    dev-unsubscribe@sip-communicator.dev.java.net
    <mailto:dev-unsubscribe@sip-communicator.dev.java.net>
    For additional commands, e-mail:
    dev-help@sip-communicator.dev.java.net
    <mailto:dev-help@sip-communicator.dev.java.net>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net


#7

Hi Emil,

I have seen that some things on the ICQ protocol have changed, like extending some classes instead of implementing interfaces (AccountID for instace) and some other changes. I have tracked the little code I have and modified it to be similar to the ICQ. I don't know when those changes were made though.

Last weekend I was looking for the slick classes but I didn't found them, I got confused because I was sure there were alredy some slick classes, am I wrong???

I was wondering how would it be if could commit the code, as you all would be able to follow what I have been doing and give me feedbacks, tips and suggestions to thing like code conventions and related stuff... but this is just an idea....

I will have extra time to dedicate to my implementation in the next three weeks, let see what will I do in this time!!!

Cheers
Pedro

Emil Ivov wrote:

···

Hello Pedro,

Just wanted to know how are things going with MSN. Do you need any help working on it? Let us know if you encounter any problems or have any questions.

Cheers
Emil

Pedro Oliveira wrote:

Thanks Emil,

I am looking at the sip-comm site right now.... and also updating my sandbok as well...

Cheers
Pedro

Emil Ivov wrote:

Hello Pedro,

As I sad, I have started by looking the ICQ implementation in order to create some classes, mainly those related to the service registration.(MsnActivator, MsnAccountID, ProtocolProviderServiceMsnImpl, ... ).

I am currently putting up some documentation and implementation guidelines for the protocol provider service on sip-communicator.org

http://www.sip-communicator.org/index.php/Documentation/ProtocolProviderService

I think you may find it helpful. Beware, it's still a work in progress so let me know in case you'd like further clarification on some points.

By the way, what is that Joust Sim Connection I saw many times in the ICQ implementation .

JoustSIM is the stack we're using for ICQ support. The joust sim connection is an object instantiating the stack's connection class. You won't have an exact match for this class in your MSN implementation since you are using a different stack with its own architecture.

Here are the tasks I have created on the build.xml file on my machine. Please, alert me on any mistake... :slight_smile: It was sort of a copy and paste followed by some changing in the names.

    <!-- Alteracao Pedro -->
        <!-- BUNDLE-MSN -->
        <target name="bundle-msn">
            <!-- Creates a bundle containing the msn impl of the protocol provider."-->
            <jar compress="false" destfile="${bundles.dest}/protocol-msn.jar"
                manifest="src/net/java/sip/communicator/impl/protocol/msn/msn.provider.manifest.mf">

This seems ok.

                <zipfileset dir="${dest}/net/java/sip/communicator/service/protocol"
                    prefix="net/java/sip/communicator/service/protocol"/>

You don't need to include the protocol package since it is imported by the protocol.jar bundle. We've changed this recently so it may be a good idea to cvs update your sandbox.

                <zipfileset dir="${dest}/net/java/sip/communicator/impl/protocol/msn"
                    prefix="net/java/sip/communicator/impl/protocol/msn"/>

                <zipfileset src="${lib}/joscar-0.9.4-cvs-bin.jar" prefix=""/>
                <zipfileset src="${lib}/oscar-aim.jar" prefix=""/>
                <zipfileset src="${lib}/retroweaver-rt.jar" prefix=""/>

These three jars contain the icq stack. There is no need for you to include them. You should replace them with the jars of your own stack.

            </jar>
        </target>

        <!-- BUNDLE-MSN-SLICK -->
        <target name="bundle-msn-slick">
            <!-- Creates a bundle containing the slick for the MSN protocol provider."-->
            <jar compress="false" destfile="${bundles.dest}/protocol-msn-slick.jar"
                manifest="test/net/java/sip/communicator/slick/protocol/msn/msn.provider.slick.manifest.mf">

                <zipfileset dir="${dest}/net/java/sip/communicator/slick/protocol/msn"
                    prefix="net/java/sip/communicator/slick/protocol/msn"/>

                <zipfileset src="${lib}/joscar-0.9.4-cvs-bin.jar" prefix=""/>
                <zipfileset src="${lib}/oscar-aim.jar" prefix=""/>
                <zipfileset src="${lib}/retroweaver-rt.jar" prefix=""/>

Once again these jars are irrelevant here.

            </jar>
        </target>

Good luck!
Emil

On 7/25/06, *Damian Minkov* <damencho@gmail.com >>>> <mailto:damencho@gmail.com>> wrote:

    Hello Pedro,

    I'm wondering have you any success with the msn protocol. Have you
    implemented something ?
    I was thinking of doing this myself but I wanted to first check whether
    you've made any progress.

    Cheers
    damencho

    ---------------------------------------------------------------------
    To unsubscribe, e-mail:
    dev-unsubscribe@sip-communicator.dev.java.net
    <mailto:dev-unsubscribe@sip-communicator.dev.java.net>
    For additional commands, e-mail:
    dev-help@sip-communicator.dev.java.net
    <mailto:dev-help@sip-communicator.dev.java.net>

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@sip-communicator.dev.java.net
For additional commands, e-mail: dev-help@sip-communicator.dev.java.net