-
Notifications
You must be signed in to change notification settings - Fork 10
/
get_bundle_info.groovy
113 lines (89 loc) · 3.06 KB
/
get_bundle_info.groovy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
// MIT License
//
// Copyright (c) 2018-present Sebastien Le Marchand
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// The above copyright notice and this permission notice shall be included in all
// copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
// SOFTWARE.
//
// get_bundle_info.groovy
//
// Get information about an OSGi bundle.
//
// Tested under the following Liferay versions: 7.0.
//
// Getting other scripts: https://github.com/slemarchand/liferay-admin-scripts
//
// -- Constants (to update at your convenience)
//
// The symbolic name of the bundle to search
BUNDLE_SYMBOLIC_NAME ="com.liferay.portal.search"
// The version of the bundle to search. Can be left blank.
BUNDLE_VERSION = ""
//
// -- Implementation
//
import com.liferay.portal.scripting.groovy.internal.*;
import org.osgi.framework.*;
import java.util.*;
PORTLET = binding.hasVariable("actionRequest");
states = [1: "UNINSTALLED", 2: "INSTALLED", 4: "RESOLVED", 8: "STARTING", 10: "STOPPING", 32: "ACTIVE"];
Bundle[] bundles = FrameworkUtil.getBundle(GroovyExecutor.class).getBundleContext().getBundles();
Bundle foundBundle = null;
for (bundle in bundles){
if(bundle.getSymbolicName().equals(BUNDLE_SYMBOLIC_NAME)) {
if(foundBundle == null && (BUNDLE_VERSION == "" || bundle.getVersion().toString().equals(BUNDLE_VERSION))) {
foundBundle = bundle;
}
}
}
if(foundBundle != null) {
b = foundBundle
state = states.get(b.getState());
println("""
BundleId: ${b.getBundleId()}
Version: ${b.getVersion()}
State: ${state}
LastModified: ${b.getLastModified()}
Location: ${b.getLocation()}
Headers ===
""");
headers = b.getHeaders();
keys = headers.keys();
while(keys.hasMoreElements()) {
name = keys.nextElement();
value = headers.get(name);
println("${name}: ${value}");
}
println("""
Services in use bundles ===
""");
bundlesInUse = new HashSet();
for (s in b.getServicesInUse()){
bundlesInUse.add(s.getBundle());
}
for (sb in bundlesInUse){
println("${sb.getSymbolicName()} ${sb.getVersion()}");
}
} else {
message = "Bundle not found for symbolic name ${BUNDLE_SYMBOLIC_NAME} and version ${BUNDLE_VERSION==''?'*':BUNDLE_VERSION}";
if(PORTLET) {
println(message)
} else {
throw new Exception(message);
}
}