author | herrick |
Fri, 12 Oct 2018 19:00:51 -0400 | |
branch | JDK-8200758-branch |
changeset 56963 | eaca4369b068 |
permissions | -rw-r--r-- |
56963
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
1 |
/* |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
2 |
* Copyright (c) 2006, 2018, Oracle and/or its affiliates. All rights reserved. |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
3 |
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
4 |
* |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
5 |
* This code is free software; you can redistribute it and/or modify it |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
6 |
* under the terms of the GNU General Public License version 2 only, as |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
7 |
* published by the Free Software Foundation. |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
8 |
* |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
9 |
* This code is distributed in the hope that it will be useful, but WITHOUT |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
10 |
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
11 |
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
12 |
* version 2 for more details (a copy is included in the LICENSE file that |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
13 |
* accompanied this code). |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
14 |
* |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
15 |
* You should have received a copy of the GNU General Public License version |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
16 |
* 2 along with this work; if not, write to the Free Software Foundation, |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
17 |
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
18 |
* |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
19 |
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
20 |
* or visit www.oracle.com if you need additional information or have any |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
21 |
* questions. |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
22 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
23 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
24 |
package jnlp.converter.parser; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
25 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
26 |
import java.net.URL; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
27 |
import java.util.Properties; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
28 |
import java.util.ArrayList; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
29 |
import java.util.Arrays; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
30 |
import java.util.Enumeration; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
31 |
import java.util.LinkedList; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
32 |
import java.util.List; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
33 |
import java.util.concurrent.CopyOnWriteArrayList; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
34 |
import jnlp.converter.HTTPHelper; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
35 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
36 |
/** |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
37 |
* This class contains information about the codebase and properties, i.e., how |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
38 |
* to locate the classes and optional-packages |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
39 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
40 |
public class ResourcesDesc implements ResourceType { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
41 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
42 |
private final List<ResourceType> _list; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
43 |
private volatile JNLPDesc _parent = null; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
44 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
45 |
/** |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
46 |
* Create empty resource list |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
47 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
48 |
public ResourcesDesc() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
49 |
_list = new CopyOnWriteArrayList<>(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
50 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
51 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
52 |
public JNLPDesc getParent() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
53 |
return _parent; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
54 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
55 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
56 |
void setParent(JNLPDesc parent) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
57 |
_parent = parent; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
58 |
for (int i = 0; i < _list.size(); i++) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
59 |
Object o = _list.get(i); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
60 |
if (o instanceof JREDesc) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
61 |
JREDesc jredesc = (JREDesc) o; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
62 |
if (jredesc.getNestedResources() != null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
63 |
jredesc.getNestedResources().setParent(parent); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
64 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
65 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
66 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
67 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
68 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
69 |
public void addResource(ResourceType rd) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
70 |
if (rd != null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
71 |
_list.add(rd); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
72 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
73 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
74 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
75 |
boolean isEmpty() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
76 |
return _list.isEmpty(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
77 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
78 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
79 |
public JARDesc[] getLocalJarDescs() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
80 |
ArrayList<JARDesc> jds = new ArrayList<>(_list.size()); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
81 |
for (ResourceType rt : _list) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
82 |
if (rt instanceof JARDesc) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
83 |
jds.add((JARDesc) rt); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
84 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
85 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
86 |
return jds.toArray(new JARDesc[jds.size()]); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
87 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
88 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
89 |
public JREDesc getJreDesc() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
90 |
for (ResourceType rt : _list) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
91 |
if (rt instanceof JREDesc) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
92 |
return (JREDesc)rt; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
93 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
94 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
95 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
96 |
return null; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
97 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
98 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
99 |
public ExtensionDesc[] getExtensionDescs() throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
100 |
final ArrayList<ExtensionDesc> extList = new ArrayList<>(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
101 |
visit(new ResourceVisitor() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
102 |
@Override |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
103 |
public void visitExtensionDesc(ExtensionDesc ed) throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
104 |
// add all extensiondesc recursively |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
105 |
addExtToList(extList); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
106 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
107 |
}); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
108 |
return extList.toArray(new ExtensionDesc[extList.size()]); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
109 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
110 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
111 |
public JARDesc[] getAllJarDescs() throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
112 |
List<JARDesc> jarList = new ArrayList<>(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
113 |
addJarsToList(jarList); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
114 |
return jarList.toArray(new JARDesc[jarList.size()]); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
115 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
116 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
117 |
/** |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
118 |
* Add to a list of all the ExtensionDesc. This method goes recusivly through |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
119 |
* all ExtensionDesc |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
120 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
121 |
private void addExtToList(final List<ExtensionDesc> list) throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
122 |
// Iterate through list an add ext jnlp to the list. |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
123 |
visit(new ResourceVisitor() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
124 |
@Override |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
125 |
public void visitExtensionDesc(ExtensionDesc ed) throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
126 |
if (ed.getExtensionDesc() != null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
127 |
ed.getExtensionDesc().getMainJar(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
128 |
ResourcesDesc rd = ed.getExtensionDesc().getResourcesDesc(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
129 |
if (rd != null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
130 |
rd.addExtToList(list); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
131 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
132 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
133 |
list.add(ed); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
134 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
135 |
}); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
136 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
137 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
138 |
private void addJarsToList(final List<JARDesc> list) throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
139 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
140 |
// Iterate through list an add resources to the list. |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
141 |
// The ordering of resources are preserved |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
142 |
visit(new ResourceVisitor() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
143 |
@Override |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
144 |
public void visitJARDesc(JARDesc jd) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
145 |
list.add(jd); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
146 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
147 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
148 |
@Override |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
149 |
public void visitExtensionDesc(ExtensionDesc ed) throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
150 |
if (ed.getExtensionDesc() != null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
151 |
ResourcesDesc rd = ed.getExtensionDesc().getResourcesDesc(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
152 |
if (rd != null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
153 |
rd.addJarsToList(list); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
154 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
155 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
156 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
157 |
}); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
158 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
159 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
160 |
/** |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
161 |
* Get all the resources needed when a specific resource is requested. |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
162 |
* Returns null if no resource was found |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
163 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
164 |
public JARDesc[] getResource(final URL location) throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
165 |
final JARDesc[] resources = new JARDesc[1]; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
166 |
// Find the given resource |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
167 |
visit(new ResourceVisitor() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
168 |
@Override |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
169 |
public void visitJARDesc(JARDesc jd) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
170 |
if (GeneralUtil.sameURLs(jd.getLocation(), location)) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
171 |
resources[0] = jd; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
172 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
173 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
174 |
}); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
175 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
176 |
// Found no resource? |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
177 |
if (resources[0] == null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
178 |
return null; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
179 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
180 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
181 |
// No part, so just one resource |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
182 |
return resources; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
183 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
184 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
185 |
/* Returns the Expected Main Jar |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
186 |
* first jar with attribute main="true" |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
187 |
* else first jar if none has that attribute |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
188 |
* will look in extensions, and nested resource blocks if matching |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
189 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
190 |
protected JARDesc getMainJar() throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
191 |
// Normal trick to get around final arguments to inner classes |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
192 |
final JARDesc[] results = new JARDesc[2]; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
193 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
194 |
visit(new ResourceVisitor() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
195 |
@Override |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
196 |
public void visitJARDesc(JARDesc jd) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
197 |
if (jd.isJavaFile()) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
198 |
// Keep track of first Java File |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
199 |
if (results[0] == null || results[0].isNativeLib()) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
200 |
results[0] = jd; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
201 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
202 |
// Keep tack of Java File marked main |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
203 |
if (jd.isMainJarFile()) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
204 |
results[1] = jd; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
205 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
206 |
} else if (jd.isNativeLib()) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
207 |
// if jnlp extension has only native lib |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
208 |
if (results[0] == null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
209 |
results[0] = jd; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
210 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
211 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
212 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
213 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
214 |
@Override |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
215 |
public void visitExtensionDesc(ExtensionDesc ed) throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
216 |
// only check if no main yet and it is not an installer |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
217 |
if (results[1] == null && !ed.isInstaller()) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
218 |
JNLPDesc extLd = ed.getExtensionDesc(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
219 |
if (extLd != null && extLd.isLibrary()) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
220 |
ResourcesDesc rd = extLd.getResourcesDesc(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
221 |
if (rd != null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
222 |
// look for main jar in extension resource |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
223 |
rd.visit(this); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
224 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
225 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
226 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
227 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
228 |
}); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
229 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
230 |
// Default is the first, if none is specified as main. This might |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
231 |
// return NULL if there is no JAR resources. |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
232 |
JARDesc first = results[0]; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
233 |
JARDesc main = results[1]; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
234 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
235 |
// if main is null then return first; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
236 |
// libraries have no such thing as a main jar, so return first; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
237 |
// otherwise return main |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
238 |
// only returns null if there are no jars. |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
239 |
return (main == null) ? first : main; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
240 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
241 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
242 |
/* |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
243 |
* Get the properties defined for this object |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
244 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
245 |
public Properties getResourceProperties() throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
246 |
final Properties props = new Properties(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
247 |
visit(new ResourceVisitor() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
248 |
@Override |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
249 |
public void visitPropertyDesc(PropertyDesc pd) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
250 |
props.setProperty(pd.getKey(), pd.getValue()); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
251 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
252 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
253 |
@Override |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
254 |
public void visitExtensionDesc(ExtensionDesc ed) throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
255 |
JNLPDesc jnlpd = ed.getExtensionDesc(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
256 |
ResourcesDesc rd = jnlpd.getResourcesDesc(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
257 |
if (rd != null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
258 |
Properties extProps = rd.getResourceProperties(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
259 |
Enumeration e = extProps.propertyNames(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
260 |
while (e.hasMoreElements()) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
261 |
String key = (String) e.nextElement(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
262 |
String value = extProps.getProperty(key); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
263 |
props.setProperty(key, value); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
264 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
265 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
266 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
267 |
}); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
268 |
return props; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
269 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
270 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
271 |
/* |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
272 |
* Get the properties defined for this object, in the right order. |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
273 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
274 |
public List<Property> getResourcePropertyList() throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
275 |
final LinkedList<Property> propList = new LinkedList<>(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
276 |
visit(new ResourceVisitor() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
277 |
@Override |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
278 |
public void visitPropertyDesc(PropertyDesc pd) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
279 |
propList.add(new Property(pd.getKey(), pd.getValue())); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
280 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
281 |
}); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
282 |
return propList; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
283 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
284 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
285 |
/** |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
286 |
* visitor dispatch |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
287 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
288 |
@Override |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
289 |
public void visit(ResourceVisitor rv) throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
290 |
for (int i = 0; i < _list.size(); i++) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
291 |
ResourceType rt = _list.get(i); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
292 |
rt.visit(rv); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
293 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
294 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
295 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
296 |
public void addNested(ResourcesDesc nested) throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
297 |
if (nested != null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
298 |
nested.visit(new ResourceVisitor() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
299 |
@Override |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
300 |
public void visitJARDesc(JARDesc jd) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
301 |
_list.add(jd); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
302 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
303 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
304 |
@Override |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
305 |
public void visitPropertyDesc(PropertyDesc pd) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
306 |
_list.add(pd); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
307 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
308 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
309 |
@Override |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
310 |
public void visitExtensionDesc(ExtensionDesc ed) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
311 |
_list.add(ed); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
312 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
313 |
}); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
314 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
315 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
316 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
317 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
318 |
public static class JARDesc implements ResourceType { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
319 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
320 |
private URL _location; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
321 |
private String _locationString; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
322 |
private String _version; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
323 |
private boolean _isNativeLib; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
324 |
private boolean _isMainFile; // Only used for Java JAR files (a main JAR file is implicitly eager) |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
325 |
private ResourcesDesc _parent; // Back-pointer to the Resources that contains this JAR |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
326 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
327 |
public JARDesc(URL location, String version, boolean isMainFile, boolean isNativeLib, ResourcesDesc parent) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
328 |
_location = location; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
329 |
_locationString = GeneralUtil.toNormalizedString(location); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
330 |
_version = version; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
331 |
_isMainFile = isMainFile; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
332 |
_isNativeLib = isNativeLib; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
333 |
_parent = parent; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
334 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
335 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
336 |
/** |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
337 |
* Type of JAR resource |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
338 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
339 |
public boolean isNativeLib() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
340 |
return _isNativeLib; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
341 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
342 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
343 |
public boolean isJavaFile() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
344 |
return !_isNativeLib; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
345 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
346 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
347 |
/** |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
348 |
* Returns URL/version for JAR file |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
349 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
350 |
public URL getVersionLocation() throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
351 |
if (getVersion() == null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
352 |
return _location; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
353 |
} else { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
354 |
return GeneralUtil.getEmbeddedVersionURL(getLocation(), getVersion()); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
355 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
356 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
357 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
358 |
public URL getLocation() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
359 |
return _location; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
360 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
361 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
362 |
public String getVersion() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
363 |
return _version; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
364 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
365 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
366 |
public String getName() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
367 |
// File can be separated by '/' or '\\' |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
368 |
int index; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
369 |
int index1 = _locationString.lastIndexOf('/'); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
370 |
int index2 = _locationString.lastIndexOf('\\'); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
371 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
372 |
if (index1 >= index2) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
373 |
index = index1; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
374 |
} else { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
375 |
index = index2; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
376 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
377 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
378 |
if (index != -1) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
379 |
return _locationString.substring(index + 1, _locationString.length()); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
380 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
381 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
382 |
return null; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
383 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
384 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
385 |
/** |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
386 |
* Returns if this is the main JAR file |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
387 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
388 |
public boolean isMainJarFile() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
389 |
return _isMainFile; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
390 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
391 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
392 |
/** |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
393 |
* Get parent LaunchDesc |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
394 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
395 |
public ResourcesDesc getParent() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
396 |
return _parent; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
397 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
398 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
399 |
/** |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
400 |
* Visitor dispatch |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
401 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
402 |
public void visit(ResourceVisitor rv) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
403 |
rv.visitJARDesc(this); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
404 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
405 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
406 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
407 |
public static class PropertyDesc implements ResourceType { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
408 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
409 |
private String _key; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
410 |
private String _value; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
411 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
412 |
public PropertyDesc(String key, String value) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
413 |
_key = key; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
414 |
_value = value; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
415 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
416 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
417 |
// Accessors |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
418 |
public String getKey() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
419 |
return _key; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
420 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
421 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
422 |
public String getValue() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
423 |
return _value; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
424 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
425 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
426 |
/** |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
427 |
* Visitor dispatch |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
428 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
429 |
public void visit(ResourceVisitor rv) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
430 |
rv.visitPropertyDesc(this); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
431 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
432 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
433 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
434 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
435 |
public static class JREDesc implements ResourceType { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
436 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
437 |
private String _version; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
438 |
private long _maxHeap; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
439 |
private long _minHeap; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
440 |
private String _vmargs; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
441 |
private ResourcesDesc _resourceDesc; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
442 |
private JNLPDesc _extensioDesc; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
443 |
private String _archList; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
444 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
445 |
/* |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
446 |
* Constructor to create new instance based on the requirements from JNLP file. |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
447 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
448 |
public JREDesc(String version, long minHeap, long maxHeap, String vmargs, |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
449 |
ResourcesDesc resourcesDesc, String archList) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
450 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
451 |
_version = version; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
452 |
_maxHeap = maxHeap; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
453 |
_minHeap = minHeap; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
454 |
_vmargs = vmargs; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
455 |
_resourceDesc = resourcesDesc; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
456 |
_extensioDesc = null; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
457 |
_archList = archList; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
458 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
459 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
460 |
public String[] getArchList() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
461 |
return GeneralUtil.getStringList(_archList); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
462 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
463 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
464 |
public String getVersion() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
465 |
return _version; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
466 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
467 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
468 |
public long getMinHeap() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
469 |
return _minHeap; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
470 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
471 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
472 |
public long getMaxHeap() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
473 |
return _maxHeap; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
474 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
475 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
476 |
public String getVmArgs() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
477 |
return _vmargs; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
478 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
479 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
480 |
public String[] getVmArgsList() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
481 |
return GeneralUtil.getStringList(_vmargs); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
482 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
483 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
484 |
public ResourcesDesc getNestedResources() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
485 |
return _resourceDesc; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
486 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
487 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
488 |
public JNLPDesc getExtensionDesc() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
489 |
return _extensioDesc; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
490 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
491 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
492 |
public void setExtensionDesc(JNLPDesc ld) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
493 |
_extensioDesc = ld; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
494 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
495 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
496 |
/* visitor dispatch */ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
497 |
public void visit(ResourceVisitor rv) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
498 |
rv.visitJREDesc(this); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
499 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
500 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
501 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
502 |
public static class Property implements Cloneable { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
503 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
504 |
public static final String JNLP_VERSION_ENABLED = "jnlp.versionEnabled"; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
505 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
506 |
String key; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
507 |
String value; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
508 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
509 |
public Property(String spec) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
510 |
spec = spec.trim(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
511 |
if (!spec.startsWith("-D") || spec.length() < 3) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
512 |
throw new IllegalArgumentException("Property invalid"); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
513 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
514 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
515 |
int endKey = spec.indexOf("="); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
516 |
if (endKey < 0) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
517 |
// it's legal to have no assignment |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
518 |
this.key = spec.substring(2); // skip "-D" |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
519 |
this.value = ""; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
520 |
} else { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
521 |
this.key = spec.substring(2, endKey); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
522 |
this.value = spec.substring(endKey + 1); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
523 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
524 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
525 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
526 |
public static Property createProperty(String spec) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
527 |
Property prop = null; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
528 |
try { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
529 |
prop = new Property(spec); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
530 |
} catch (IllegalArgumentException iae) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
531 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
532 |
return prop; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
533 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
534 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
535 |
public Property(String key, String value) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
536 |
this.key = key; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
537 |
if (value != null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
538 |
this.value = value; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
539 |
} else { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
540 |
this.value = ""; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
541 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
542 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
543 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
544 |
public String getKey() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
545 |
return key; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
546 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
547 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
548 |
public String getValue() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
549 |
return value; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
550 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
551 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
552 |
// @return String representation, unquoted, unified presentation |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
553 |
public String toString() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
554 |
if (value.length() == 0) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
555 |
return "-D" + key; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
556 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
557 |
return "-D" + key + "=" + value; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
558 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
559 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
560 |
public void addTo(Properties props) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
561 |
props.setProperty(key, value); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
562 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
563 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
564 |
// Hash Object |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
565 |
public boolean equals(Object o) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
566 |
if (!(o instanceof Property)) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
567 |
return false; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
568 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
569 |
Property op = (Property) o; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
570 |
int hashTheirs = op.hashCode(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
571 |
int hashThis = hashCode(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
572 |
return hashTheirs == hashThis; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
573 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
574 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
575 |
public int hashCode() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
576 |
return key.hashCode(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
577 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
578 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
579 |
private static List<Object> jnlpProps = Arrays.asList(new Object[]{ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
580 |
JNLP_VERSION_ENABLED |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
581 |
}); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
582 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
583 |
public static boolean isJnlpProperty(String spec) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
584 |
try { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
585 |
Property p = new Property(spec); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
586 |
return isJnlpPropertyKey(p.getKey()); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
587 |
} catch (Exception e) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
588 |
return false; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
589 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
590 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
591 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
592 |
public static boolean isJnlpPropertyKey(String key) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
593 |
return key != null && jnlpProps.contains(key); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
594 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
595 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
596 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
597 |
public static class ExtensionDesc implements ResourceType { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
598 |
// Tag elements |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
599 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
600 |
private final URL _location; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
601 |
private final String _locationString; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
602 |
private final String _version; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
603 |
private final URL _codebase; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
604 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
605 |
// Link to launchDesc |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
606 |
private JNLPDesc _extensionLd; // Link to launchDesc for extension |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
607 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
608 |
public ExtensionDesc(URL location, String version) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
609 |
_location = location; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
610 |
_locationString = GeneralUtil.toNormalizedString(location); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
611 |
_version = version; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
612 |
_codebase = GeneralUtil.asPathURL(GeneralUtil.getBase(location)); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
613 |
_extensionLd = null; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
614 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
615 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
616 |
public boolean isInstaller() throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
617 |
if (getExtensionDesc() != null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
618 |
return _extensionLd.isInstaller(); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
619 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
620 |
return false; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
621 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
622 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
623 |
public URL getLocation() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
624 |
return _location; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
625 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
626 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
627 |
public String getVersionLocation() throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
628 |
if (getVersion() == null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
629 |
return _locationString; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
630 |
} else { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
631 |
return GeneralUtil.toNormalizedString(GeneralUtil.getEmbeddedVersionURL(getLocation(), getVersion())); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
632 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
633 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
634 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
635 |
public String getVersion() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
636 |
return _version; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
637 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
638 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
639 |
public URL getCodebase() { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
640 |
return _codebase; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
641 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
642 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
643 |
/* |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
644 |
* Information about the resources |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
645 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
646 |
public JNLPDesc getExtensionDesc() throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
647 |
if (_extensionLd == null) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
648 |
byte[] bits = HTTPHelper.getJNLPBits(getVersionLocation(), _locationString); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
649 |
_extensionLd = XMLFormat.parse(bits, getCodebase(), getVersionLocation()); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
650 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
651 |
return _extensionLd; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
652 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
653 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
654 |
public void setExtensionDesc(JNLPDesc desc) { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
655 |
_extensionLd = desc; |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
656 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
657 |
|
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
658 |
/** |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
659 |
* Visitor dispatch |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
660 |
*/ |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
661 |
public void visit(ResourceVisitor rv) throws Exception { |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
662 |
rv.visitExtensionDesc(this); |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
663 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
664 |
} |
eaca4369b068
8198472: Add support for creating bundles from JNLP files
herrick
parents:
diff
changeset
|
665 |
} |