24 Eylül 2018 Pazartesi

remove mustunderstand soap client Axis2

private void removeMustUnderstant(SOAPEnvelope env) {
    QName qName =new javax.xml.namespace.QName(
            "http://ey.webservices.ae/wsrv/common/types",            "MessageHeader",            "typ");    SOAPHeader header = env.getHeader();    OMChildrenQNameIterator childrenWithName = (OMChildrenQNameIterator) header.getChildrenWithName(qName);    while (childrenWithName.hasNext()) {
        org.apache.axiom.om.OMElement omElement = (org.apache.axiom.om.OMElement) childrenWithName.next();        QName mustAnderstandQName = omElement.resolveQName("soapenv:mustUnderstand");        if (mustAnderstandQName == null) {
            continue;        }
        OMAttribute mustAnderstandAttribute = omElement.getAttribute(mustAnderstandQName);        if (mustAnderstandAttribute == null) {
            continue;        }
        omElement.removeAttribute(mustAnderstandAttribute);    }
}

21 Eylül 2018 Cuma

9 Temmuz 2012 Pazartesi

Interface in Java

                                                                    INTERFACE
Diger programlasdirma dillerinde olan multiple inheritence xususiyyeti  Java dilinde yoxdur.Bunu  berpa etmek  ucun Javada  Interface ve  daxili siniflerden (Inner classes) istifade olunur.Interface siniflerle abstrakt  sinifler  arasinda araliq teskil  edir. Interface  sinife yol gostren bir xeritedir.Interface in esas vezifesi  abstrakt  siniflerde oldugu kimi birlesdirici rol oynamasidir .Abstrakt  sinifler daxilinde  abstrakt  metodlarla yanasi  hem de  adi metodlar  ola  biler.Amma Interface daxilinde yalniz govdesiz metodlar yer alir.
Sinif sinifden extends  olunur,Interfaceden ise implements edilir.Qeyd edek  ki  bir sinif bir 
nece Interface-i  implements ede biler.Hemin sinif daxilinde Interface-in govdesiz  metodlari mutleq override edilmelidir.Interface daxilindeki govdesiz metodlar private ola  bilmez.
Interface daxilindeki govdesiz metodlar avtomatik olaraq public olurlar ve bu deyisdirile bilmez.Eyni zamanda  global saheler (alanlar) de avtomatik olaraq public , static ve final xususiyyetine malik olurlar  ve deyisdirile bilmez. 
Qeyd edek ki Interface in obyekti yaradilmaz.
Abstrakt  sinif  Interface-den  implements edildikde  bu sinif  Interface daxilindeki  abstrakt metodlari  override etmelidirmi?Cavab:yox.
Cunki  interface ve abstrakt siniflerin esas meqsedi  oz alt siniflerine  govdesiz metodlarini override etdirmekdir.

public interface Heyvan {
public void ovla();
}

public abstract class Pisik implements Heyvan{
 public abstract void suic();
}

public class Aslan extends Pisik{

@Override
public void suic() {
System.out.println("Aslan su icir"); }

@Override
public void ovla() {
System.out.println("Aslan ovlayir");

}
}

Gorunduyu kimi Pisik abstrakat sinifi  Heyvan Interface-si daxilindeki ovla() metodunu override etmek mecburiyyetinde deyildir. Amma Aslan sinifi Pisik abstrakt  sinifinin ve Heyvan  interface sinin  alt sinifi oldugu ucun o mecburi olaraq  ovla() ve suic() metodlarini override etmelidir.
Sinif  sinifden  extends edildiyi kimi Interface de Interfaceden extends edillir.Javada  sinif yalniz bir sinifden extends  olunur.Yeni  "Javada bir sinifin yalniz  bir anasi ola biler" .Amma Interface ise  bele deyil.

public interface InterfaceA {
public void Java();
}


public interface InterfaceB {
public void Paskal();
}


public interface InterfaceC extends InterfaceB,InterfaceA{
public void C();
}


public class Test implements InterfaceC {

@Override
public void C() {
System.out.println("C 1970 de yaranan funksional programlasdirma dilidir ");
}

@Override
public void Paskal() {
System.out.println("Paskal 1968-1971 de yaranan prosedur programlsama dilidir");
}

@Override
public void Java() {
System.out.println("Java 1990 ilde yaranan Obyekt Yonlu Programlasma(OOP) dilidir");
}
public static void main(String[] args) {
Test test=new Test();
test.Paskal();
test.C();
test.Java();

}
}

Netice:
Paskal 1968-1971 de yaranan prosedur programlsama dilidir
C 1970 de yaranan funksional programlasdirma dilidir
Java 1990 ilde yaranan Obyekt Yonlu Programlasma(OOP) dilidir


Indi ise 3 sinifi Interface-e implements  edib Poliformizmden istifade ederek sade bir program yazaq:

public interface Calisan {
public void calis();
}


public class Mudur implements Calisan {

@Override
public void calis() {
System.out.println("Mudur calisir");
}
}

public class MudurMuavini implements Calisan {

@Override
public void calis() {
System.out.println("MudurMuavini calisir");
}
}

public class Programci implements Calisan {

@Override
public void calis() {
System.out.println("Programci calisir");
}
}

public class IsYeri {

public static void Isebasla(Calisan[] c) {
for (int i = 0; i < c.length; i++) {
c[i].calis();
}
}

public static void main(String[] args) {
Calisan[] c = new Calisan[3];
c[0] = new Mudur();
c[1] = new MudurMuavini();
c[2] = new Programci();
Isebasla(c);
}
}

Netice :
Mudur calisir
MudurMuavini calisir
Programci calis
ir



























  
                                                                    ABSTRAKT  SINIFLER
Abstrakt sinifler adi siniflerden ferqlenir.Teyin olunarken qarsisinda  abstrakt isci sozu yazilir.bunlarin obyekti  birbasa new sozu ile yaradilmaz.Bir sinifin abstrakt olmasi ucun onun  daxilinde  en azi bir abstrakt metod  olmalidir.Hec bir is gormeyen yeni , govdesiz metoda abstrakt metod deyilir.Abstract bir sinifden extends olunan altsinifller bu abstract sinifin icindeki butun abstrakt metodlari mutleq override etmelidir. Abstract siniflerin  Javada esas vezifesi birlesdirici rol oynamasidir.Asagidaki numuneye baxaq:
 
public abstract class Calisan {
   public abstract void calis();
   public void istirahetEt(){
   System.out.println("Istirahet vaxti");
}
}
public class Mudur extends Calisan {

@Override
public void calis() {
System.out.println("Mudur calisir");
}
}

public class MudurMuavini extends Calisan {

@Override
public void calis() {
System.out.println("MudurMuavini calisir");
}
}

public class Programci extends Calisan {

@Override
public void calis() {
System.out.println("Programci calisir");
}
}

public class IsYeri {
public static void Isebasla(Calisan[] c){
for (int i = 0; i < c.length; i++) {
c[i].calis();
}
}
public static void main(String[] args) {
Calisan[] c=new Calisan[3];
c[0]=new Mudur();
c[1]=new MudurMuavini();
c[2]=new Programci();
Isebasla(c);
  }
}

Belece  Abstract bir sinifden extends olunan altsinifllerin obyekti  asanliqla  Abstract  sinif tipinde olan referansa  baglanir ve polimorfizm ve gec baglanmanin istifadesi mumkun olur.