Path: csiph.com!usenet.pasdenom.info!aioe.org!.POSTED!not-for-mail From: "Richard Maher" Newsgroups: comp.lang.java.programmer Subject: Packages and Reflection in an Applet Date: Sat, 5 May 2012 13:25:22 +0800 Organization: HTTP *is* The Box - Let's think outside Lines: 77 Message-ID: NNTP-Posting-Host: jOhPn0KFjrxwuMc9OPMmCw.user.speranza.aioe.org X-Complaints-To: abuse@aioe.org X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.6157 X-RFC2646: Format=Flowed; Original X-Notice: Filtered by postfilter v. 0.8.2 X-Newsreader: Microsoft Outlook Express 6.00.2900.5931 X-Priority: 3 X-MSMail-Priority: Normal Xref: csiph.com comp.lang.java.programmer:14280 Hi, I have an unsigned Applet that needs to obtain a Username/Password from the user (via generic dialog boxes outside of the web-page) and optionally, on successful login, display some "welcome" info from the server. To that end, I have come up with a rudimentary AWT interface that pops-up a couple of modal dialogue boxes. (There is also a "status" window that has bytes received/sent etc). So, I have the default, fallback, rough-as-guts option for obtaining user credentials but would like to allow the consumers of my Applet to override the default and supply their own much slicker +/- localized UI. So I have the simple interface below that each prospective UI class must implement but I don't know what part packages/protection play in this scenario as well as reflection. If there are any people here with direct experience of the following conditions/questions I would be very grateful for their advice: - 1) Can a class loaded via Reflection (eg: myInter localGUI = (myInter)(class.forName("appletParameter").newInstance())) be in the same Package, and enjoy the benefits/protection of same, as the caller? Ideally here, the methods/variables/properties of the newly loaded class (albeit under the restriction of being loaded from the same codebase) being package private and not public? Again ideally, I do not want the methods in this GUI to be accessible from JavaScript but obviously accessible from my applet. 2) I'd expect the "tier3Client" implementing class (and any additional classes) to be supplied in a separate archive/JAR file and this will be located via the "archive=a,b,c" specifier (with "codebase_lookup" set to false). My "understanding" is that class.forName() will use the same classloader as the Applet and therefore I'm hoping that it will happily search through all specified JAR files looking for the requested class? 3) Are there any other restrictions/requirements or wil this just not work? Cheers Richard Maher /** * Copyright Tier3 (c) Software. All rights reserved. * * @author Richard Maher * @version 1.0 * */ package tier3Client; interface Tier3UserDialog { boolean doCredentials(); String getUsername(); String getPassword(); boolean isWelcomeRequired(); void doWelcome(byte[] t3IdBuf); void doConsole(byte[] t3IdBuf, Tier3Logoff sourceSession, String codeHost, int portNum); void updateRcvd(int bytes); void updateSent(int bytes); void showRefCnt(int pages); void appendConsoleMsg(String msg, int color); void appendConsoleMsg(String msg); void closeConsole(); }