package elte.java2_utikalauz5.programok; /** JNLP API szemléltetése.

A program sorban végigteszteli a JNLP szolgáltatásokat, és csak egy példányban futtatható. A tesztek menete a Java konzolon jelenik meg, és minden művelet elvégzéséhez a felhasználónak engedélyt kell adnia. @see javax.jnlp @link.forrásfájl {@docRoot}/../data/programok/src JNLPTeszt.java @link.letöltés {@docRoot}/../data/programok JNLPTeszt.jnlp @since Java 2 Útikalauz programozóknak 5.0 */ class JNLPTeszt implements javax.jnlp.SingleInstanceListener,//csak 1 példányban java.awt.print.Printable { //nyomtatásteszthez kell /** Konstruktor az indításfigyelés inicializálásával */ private JNLPTeszt() { tesztSingleInstanceService(true); } /** Indításfigyelő regisztrálása és törlése. @param start Igaz értéke esetén regsztrálás, különben törlés. */ private void tesztSingleInstanceService(boolean start) { System.out.println("\n********** SingleInstanceService **********"); try { javax.jnlp.SingleInstanceService szervíz = (javax.jnlp.SingleInstanceService)javax.jnlp.ServiceManager.lookup( "javax.jnlp.SingleInstanceService"); //szervíz elérése System.out.println("Megvalósítás: "+szervíz); if (start) { System.out.println("SingleInstanceListener regisztrálása..."); szervíz.addSingleInstanceListener(this); } else { System.out.println("SingleInstanceListener deregisztrálása..."); szervíz.removeSingleInstanceListener(this); } } catch (Exception e) { //helyi hibakezelés e.printStackTrace(); } } /** Indítási értesítés. @param paraméterek Újabb példány indítási paraméterei. */ public void newActivation(String[] paraméterek) { System.out.println("\n********** SingleInstanceService **********"); System.out.println("Új példány indítása történt! A paraméterek:"); for (String paraméter : paraméterek) System.out.println("\t"+paraméter); } /** Tesztfájl neve */ private static final String TESZTFÁJL = "JNLPTeszt.tesztfile"; /** Alkalmazás gyökér URL-je */ private static java.net.URL gyökérURL; /** BasicService szolgáltatás tesztje */ private static void tesztBasicService() { System.out.println("\n********** BasicService **********"); try { //szervíz elérése javax.jnlp.BasicService szervíz = (javax.jnlp.BasicService) javax.jnlp.ServiceManager.lookup("javax.jnlp.BasicService"); System.out.println("Megvalósítás: "+szervíz); gyökérURL = szervíz.getCodeBase(); //gyökér URL eltárolása System.out.println("Gyökér URL: "+gyökérURL); System.out.println("Böngésző támogatott-e: "+ szervíz.isWebBrowserSupported()); System.out.println("Gyökér URL megjelenítés sikerült-e: "+ szervíz.showDocument(gyökérURL)); //böngésző indítása } catch (Exception e) { //helyi hibakezelés e.printStackTrace(); } } /** FileOpenService szolgáltatás tesztje */ private static void tesztFileOpenService() { System.out.println("\n********** FileOpenService **********"); try { //szervíz elérése javax.jnlp.FileOpenService szervíz= (javax.jnlp.FileOpenService) javax.jnlp.ServiceManager.lookup("javax.jnlp.FileOpenService"); System.out.println("Megvalósítás: "+szervíz); javax.jnlp.FileContents fájl=szervíz.openFileDialog(null, null); System.out.println("Megnyitott fájl: "+(fájl==null ? fájl : ( fájl.getName()+", mérete: "+fájl.getLength()))); } catch (Exception e) { //helyi hibakezelés e.printStackTrace(); } } /** FileSaveService szolgáltatás tesztje */ private static void tesztFileSaveService() { System.out.println("\n********** FileSaveService **********"); try { //szervíz elérése javax.jnlp.FileSaveService szervíz= (javax.jnlp.FileSaveService) javax.jnlp.ServiceManager.lookup("javax.jnlp.FileSaveService"); System.out.println("Megvalósítás: "+szervíz); javax.jnlp.FileContents fájl=szervíz.saveFileDialog(null, null, new java.io.ByteArrayInputStream(TESZTFÁJL.getBytes()), TESZTFÁJL); //tesztfájl írása System.out.println("Lementett fájl: "+(fájl==null ? fájl : ( fájl.getName()+", mérete: "+fájl.getLength()))); } catch (Exception e) { //helyi hibakezelés e.printStackTrace(); } } /** ExtendedService szolgáltatás tesztje */ private static void tesztExtendedService() { System.out.println("\n********** ExtendedService **********"); try { //szervíz elérése javax.jnlp.ExtendedService szervíz= (javax.jnlp.ExtendedService) javax.jnlp.ServiceManager.lookup("javax.jnlp.ExtendedService"); System.out.println("Megvalósítás: "+szervíz); System.out.println("Közvetlen fájlmegnyitás..."); javax.jnlp.FileContents fájl=szervíz.openFile(new java.io.File( TESZTFÁJL)); //tesztfájl megnyitása System.out.println("Megnyitott fájl: "+(fájl==null ? fájl : ( fájl.getName()+", mérete: "+fájl.getLength()))); } catch (Exception e) { //helyi hibakezelés e.printStackTrace(); } } /** PersistenceService szolgáltatás tesztje */ private static void tesztPersistenceService() { System.out.println("\n********** PersistenceService **********"); try { javax.jnlp.PersistenceService szervíz = //szervíz elérése (javax.jnlp.PersistenceService)javax.jnlp.ServiceManager.lookup( "javax.jnlp.PersistenceService"); System.out.println("Megvalósítás: "+szervíz); System.out.println("Muffin lekérdezése..."); javax.jnlp.FileContents fájl=null; try { fájl=szervíz.get(gyökérURL); } catch (java.io.FileNotFoundException fnfe) {} //még nincs megadva if (fájl==null) { System.out.println("Muffin létrehozása..."); System.out.println("Max adatméret: "+ szervíz.create(gyökérURL, 1024)); szervíz.setTag(gyökérURL, //nincs szerveroldali szinkronizálás javax.jnlp.PersistenceService.TEMPORARY); fájl=szervíz.get(gyökérURL); } else { System.out.println("Muffin olvasása..."); java.io.ObjectInputStream adat=new java.io.ObjectInputStream( fájl.getInputStream()); System.out.println("Muffin tartalma: "+adat.readObject()); adat.close(); } System.out.println("Muffin írása..."); java.io.ObjectOutputStream adat=new java.io.ObjectOutputStream( fájl.getOutputStream(true)); //aktuális dátummal felülírás adat.writeObject(new java.util.Date()); adat.close(); } catch (Exception e) { //helyi hibakezelés e.printStackTrace(); } } /** DownloadService szolgáltatás tesztje */ private static void tesztDownloadService() { System.out.println("\n********** DownloadService **********"); try { //szervíz elérése javax.jnlp.DownloadService szervíz= (javax.jnlp.DownloadService) javax.jnlp.ServiceManager.lookup("javax.jnlp.DownloadService"); System.out.println("Megvalósítás: "+szervíz); if (szervíz.isPartCached("main")) { System.out.println("A main letöltési csoport törlése..." ); szervíz.removePart("main"); } else System.out.println( "A main letöltési csoport nem érhető el lokálisan."); System.out.println("A main letöltési csoport letöltése..."); szervíz.loadPart("main", szervíz.getDefaultProgressWindow()); } catch (Exception e) { //helyi hibakezelés e.printStackTrace(); } } /** ClipboardService szolgáltatás tesztje */ private static void tesztClipboardService() { System.out.println("\n********** ClipboardService **********"); try { //szervíz elérése javax.jnlp.ClipboardService szervíz= (javax.jnlp.ClipboardService) javax.jnlp.ServiceManager.lookup("javax.jnlp.ClipboardService"); System.out.println("Megvalósítás: "+szervíz); System.out.println("Vágólap kiolvasása..."); java.awt.datatransfer.Transferable tartalom = szervíz.getContents(); Object adat = tartalom; if (tartalom!=null&&tartalom.isDataFlavorSupported( //szövegtartalom java.awt.datatransfer.DataFlavor.stringFlavor)) adat = tartalom. getTransferData(java.awt.datatransfer.DataFlavor.stringFlavor); System.out.println("Tartalom: "+adat); } catch (Exception e) { //helyi hibakezelés e.printStackTrace(); } } /** PrintService szolgáltatás tesztje */ private static void tesztPrintService(java.awt.print.Printable oldal) { System.out.println("\n********** PrintService **********"); try { //szervíz elérése javax.jnlp.PrintService szervíz= (javax.jnlp.PrintService) javax.jnlp.ServiceManager.lookup("javax.jnlp.PrintService"); System.out.println("Megvalósítás: "+szervíz); System.out.println("Oldalformátum beállítása..."); szervíz.showPageFormatDialog(szervíz.getDefaultPage()); System.out.println("1 oldal nyomtatása..."); szervíz.print(oldal); } catch (Exception e) { //helyi hibakezelés e.printStackTrace(); } } /** Nyomtatás elvégzése. @param g A nyomtatandó oldal grafikus felülete @param oldalforma A nyomtatható oldal formátuma @param oldal A nyomtatandó oldal sorszáma @return Oldal nyomtatása mehet, vagy nincs több oldal. */ public int print(java.awt.Graphics g, java.awt.print.PageFormat oldalforma, int oldal) throws java.awt.print.PrinterException { if (oldal==0) { //egyetlen oldal felépítése System.out.println("Nyomtatás folyamatban..."); g.drawString("JNLPTeszt tesztPrintService", (int)oldalforma. getImageableX()+10, (int)oldalforma.getImageableY()+10); return java.awt.print.Printable.PAGE_EXISTS; //mehet az oldal } System.out.println("Nyomtatás kész."); return java.awt.print.Printable.NO_SUCH_PAGE; //nincs több oldal } /** A tesztprogram indítása. @param argumentumok Az indításkor megadott paraméterek. */ public static void main(String argumentumok[]) { JNLPTeszt teszt = new JNLPTeszt(); //példányosítás try { System.out.println("\n------ A biztosított szolgáltatások: ------"); for (String szervíznév:javax.jnlp.ServiceManager.getServiceNames()) System.out.println("\t"+szervíznév); tesztBasicService(); //tesztek elvégzése tesztFileOpenService(); tesztFileSaveService(); tesztExtendedService(); tesztPersistenceService(); tesztDownloadService(); tesztClipboardService(); tesztPrintService(teszt); System.out.println("\n--- tesztelés vége, 1 perc múlva kilépés..."); Thread.sleep(1000*60); //1 perc várakozás } catch (Exception e) { e.printStackTrace(); } finally { teszt.tesztSingleInstanceService(false); //indításfigyelő törlése System.exit(0); //majd a program befejezése } } }