Skip to content

Commit e817600

Browse files
committed
default package wrappers
1 parent 43ec77e commit e817600

File tree

4 files changed

+29
-26
lines changed

4 files changed

+29
-26
lines changed

DeCraftLauncher/AppletWrapper.cs

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -20,12 +20,15 @@ public class AppletWrapper
2020
public static void LaunchAppletWrapper(string className, MainWindow caller, JarConfig jar, Dictionary<string, string> appletParameters)
2121
{
2222
//first, compile the applet wrapper
23+
24+
bool isDefaultPackage = !className.Contains(".");
25+
2326
//todo: clean this up in the same way as i did with javaexec
2427
MainWindow.EnsureDir("./java_temp");
25-
File.WriteAllText("./java_temp/AppletWrapper.java", JavaCode.GenerateAppletWrapperCode(className, jar, appletParameters));
28+
File.WriteAllText("./java_temp/AppletWrapper.java", JavaCode.GenerateAppletWrapperCode(className, jar, appletParameters, isDefaultPackage));
2629
if (jar.appletEmulateHTTP)
2730
{
28-
File.WriteAllText("./java_temp/InjectedStreamHandlerFactory.java", JavaCode.GenerateHTTPStreamInjectorCode(jar));
31+
File.WriteAllText("./java_temp/InjectedStreamHandlerFactory.java", JavaCode.GenerateHTTPStreamInjectorCode(jar, isDefaultPackage));
2932
}
3033
List<string> compilerOut;
3134
try
@@ -48,7 +51,7 @@ public static void LaunchAppletWrapper(string className, MainWindow caller, JarC
4851

4952

5053
//now we launch the compiled class
51-
JavaExec appletExec = new JavaExec("decraft_internal.AppletWrapper");
54+
JavaExec appletExec = new JavaExec(!isDefaultPackage ? "decraft_internal.AppletWrapper" : "AppletWrapper");
5255

5356
//class paths
5457
//todo: make this cleaner (preferrably without getting rid of relative paths)
@@ -97,21 +100,16 @@ public static void LaunchAppletWrapper(string className, MainWindow caller, JarC
97100

98101
public static void TryLaunchAppletWrapper(string classpath, MainWindow caller, JarConfig jarConfig, Dictionary<string, string> appletParameters = null)
99102
{
100-
if (!classpath.Contains('.'))
103+
104+
try
101105
{
102-
MessageBox.Show("Launching default package applets is not implemented.", "DECRAFT");
106+
AppletWrapper.LaunchAppletWrapper(classpath, caller, jarConfig, appletParameters != null ? appletParameters : new Dictionary<string, string>());
103107
}
104-
else
108+
catch (Win32Exception)
105109
{
106-
try
107-
{
108-
AppletWrapper.LaunchAppletWrapper(classpath, caller, jarConfig, appletParameters != null ? appletParameters : new Dictionary<string, string>());
109-
}
110-
catch (Win32Exception)
111-
{
112-
MessageBox.Show("Applet wrapper requires JDK installed.");
113-
}
110+
MessageBox.Show("Applet wrapper requires JDK installed.");
114111
}
112+
115113
}
116114
}
117115
}

DeCraftLauncher/MainFunctionWrapper.cs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -17,11 +17,13 @@ public class MainFunctionWrapper
1717
{
1818
public static void LaunchMainFunctionWrapper(string className, MainWindow caller, JarConfig jar)
1919
{
20+
bool isDefaultPackage = !className.Contains(".");
21+
2022
MainWindow.EnsureDir("./java_temp");
21-
File.WriteAllText("./java_temp/MainFunctionWrapper.java", JavaCode.GenerateMainFunctionWrapperCode(className, jar));
23+
File.WriteAllText("./java_temp/MainFunctionWrapper.java", JavaCode.GenerateMainFunctionWrapperCode(className, jar, isDefaultPackage));
2224
if (jar.appletEmulateHTTP)
2325
{
24-
File.WriteAllText("./java_temp/InjectedStreamHandlerFactory.java", JavaCode.GenerateHTTPStreamInjectorCode(jar));
26+
File.WriteAllText("./java_temp/InjectedStreamHandlerFactory.java", JavaCode.GenerateHTTPStreamInjectorCode(jar, isDefaultPackage));
2527
}
2628
List<string> compilerOut;
2729
try
@@ -45,7 +47,7 @@ public static void LaunchMainFunctionWrapper(string className, MainWindow caller
4547

4648

4749
//launch
48-
JavaExec mainFunctionExec = new JavaExec("decraft_internal.MainFunctionWrapper");
50+
JavaExec mainFunctionExec = new JavaExec(!isDefaultPackage ? "decraft_internal.MainFunctionWrapper" : "MainFunctionWrapper");
4951

5052
mainFunctionExec.classPath.Add(Path.GetFullPath("./java_temp/"));
5153
mainFunctionExec.classPath.Add(Path.GetFullPath(MainWindow.jarDir + "/" + jar.jarFileName));

DeCraftLauncher/Utils/JarUtils.cs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,10 @@ where y.FullName.StartsWith(referencedClassName)
461461
}
462462
}
463463

464-
if (superClassName == "java.applet.Applet")
464+
if (superClassName == "java.applet.Applet" && (from y in classInfo.methods
465+
where y.Name(classInfo.entries) == "<init>"
466+
&& y.Descriptor(classInfo.entries) == "()V"
467+
select y).Any())
465468
{
466469
ret.entryPoints.Add(new EntryPoint(className, EntryPointType.APPLET));
467470
}

DeCraftLauncher/Utils/JavaCode.cs

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,10 @@ class SyntheticClass_1{{
2727
";
2828
}
2929

30-
public static string GenerateHTTPStreamInjectorCode(JarConfig jar)
30+
public static string GenerateHTTPStreamInjectorCode(JarConfig jar, bool isDefaultPackage)
3131
{
3232
return $@"
33-
package decraft_internal;
33+
{(!isDefaultPackage ? "package decraft_internal;" : "")}
3434
3535
import java.io.ByteArrayInputStream;
3636
import java.io.IOException;
@@ -177,7 +177,7 @@ public URLStreamHandler createURLStreamHandler(String protocol) {{
177177
";
178178
}
179179

180-
public static string GenerateAppletWrapperCode(string className, JarConfig jar, Dictionary<string, string> appletParameters)
180+
public static string GenerateAppletWrapperCode(string className, JarConfig jar, Dictionary<string, string> appletParameters, bool isDefaultPackage = false)
181181
{
182182
string additionalParameters = "";
183183

@@ -192,7 +192,7 @@ public static string GenerateAppletWrapperCode(string className, JarConfig jar,
192192

193193
return
194194
$@"
195-
package decraft_internal;
195+
{(!isDefaultPackage ? "package decraft_internal;" : "")}
196196
197197
import java.applet.Applet;
198198
import java.applet.AppletContext;
@@ -201,7 +201,7 @@ public static string GenerateAppletWrapperCode(string className, JarConfig jar,
201201
import java.net.URL;
202202
import javax.swing.JFrame;
203203
import javax.swing.WindowConstants;
204-
import {className};
204+
{(!isDefaultPackage ? $"import {className}" : "")};
205205
206206
public class AppletWrapper {{
207207
@@ -277,12 +277,12 @@ public void appletResize(int width, int height) {{
277277
";
278278
}
279279

280-
public static string GenerateMainFunctionWrapperCode(string className, JarConfig jar)
280+
public static string GenerateMainFunctionWrapperCode(string className, JarConfig jar, bool isDefaultPackage)
281281
{
282282

283283
return
284284
$@"
285-
package decraft_internal;
285+
{(!isDefaultPackage ? "package decraft_internal;" : "")}
286286
287287
import java.applet.Applet;
288288
import java.applet.AppletContext;
@@ -291,7 +291,7 @@ public static string GenerateMainFunctionWrapperCode(string className, JarConfig
291291
import java.net.URL;
292292
import javax.swing.JFrame;
293293
import javax.swing.WindowConstants;
294-
import {className};
294+
{(!isDefaultPackage ? $"import {className};" : "")}
295295
296296
public class MainFunctionWrapper {{
297297

0 commit comments

Comments
 (0)