• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

evolvedbinary / elemental / 982

29 Apr 2025 08:34PM UTC coverage: 56.409% (+0.007%) from 56.402%
982

push

circleci

adamretter
[feature] Improve README.md badges

28451 of 55847 branches covered (50.94%)

Branch coverage included in aggregate %.

77468 of 131924 relevant lines covered (58.72%)

0.59 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

81.82
/extensions/modules/expathrepo/src/main/java/org/exist/xquery/modules/expathrepo/RemoveFunction.java
1
/*
2
 * Elemental
3
 * Copyright (C) 2024, Evolved Binary Ltd
4
 *
5
 * admin@evolvedbinary.com
6
 * https://www.evolvedbinary.com | https://www.elemental.xyz
7
 *
8
 * Use of this software is governed by the Business Source License 1.1
9
 * included in the LICENSE file and at www.mariadb.com/bsl11.
10
 *
11
 * Change Date: 2028-04-27
12
 *
13
 * On the date above, in accordance with the Business Source License, use
14
 * of this software will be governed by the Apache License, Version 2.0.
15
 *
16
 * Additional Use Grant: Production use of the Licensed Work for a permitted
17
 * purpose. A Permitted Purpose is any purpose other than a Competing Use.
18
 * A Competing Use means making the Software available to others in a commercial
19
 * product or service that: substitutes for the Software; substitutes for any
20
 * other product or service we offer using the Software that exists as of the
21
 * date we make the Software available; or offers the same or substantially
22
 * similar functionality as the Software.
23
 *
24
 * NOTE: Parts of this file contain code from 'The eXist-db Authors'.
25
 *       The original license header is included below.
26
 *
27
 * =====================================================================
28
 *
29
 * eXist-db Open Source Native XML Database
30
 * Copyright (C) 2001 The eXist-db Authors
31
 *
32
 * info@exist-db.org
33
 * http://www.exist-db.org
34
 *
35
 * This library is free software; you can redistribute it and/or
36
 * modify it under the terms of the GNU Lesser General Public
37
 * License as published by the Free Software Foundation; either
38
 * version 2.1 of the License, or (at your option) any later version.
39
 *
40
 * This library is distributed in the hope that it will be useful,
41
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
42
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
43
 * Lesser General Public License for more details.
44
 *
45
 * You should have received a copy of the GNU Lesser General Public
46
 * License along with this library; if not, write to the Free Software
47
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
48
 */
49
package org.exist.xquery.modules.expathrepo;
50

51
import java.util.Optional;
52

53
import org.apache.logging.log4j.LogManager;
54
import org.apache.logging.log4j.Logger;
55
import org.exist.dom.QName;
56
import org.exist.repo.ExistRepository;
57
import org.exist.xquery.BasicFunction;
58
import org.exist.xquery.Cardinality;
59
import org.exist.xquery.FunctionSignature;
60
import org.exist.xquery.XPathException;
61
import org.exist.xquery.XQueryContext;
62
import org.exist.xquery.value.*;
63
import org.expath.pkg.repo.PackageException;
64
import org.expath.pkg.repo.Repository;
65
import org.expath.pkg.repo.UserInteractionStrategy;
66
import org.expath.pkg.repo.tui.BatchUserInteraction;
67

68

69
/**
70
 * Remove Function: Remove package from repository
71
 *
72
 * @author <a href="mailto:jim.fuller@exist-db.org">James Fuller</a>
73
 * @author cutlass
74
 * @author ljo
75
 */
76
public class RemoveFunction extends BasicFunction {
77
    @SuppressWarnings("unused")
78
        private final static Logger logger = LogManager.getLogger(RemoveFunction.class);
1✔
79

80
    public final static FunctionSignature signature =
1✔
81
                new FunctionSignature(
82
                        new QName("remove", ExpathPackageModule.NAMESPACE_URI, ExpathPackageModule.PREFIX),
83
                        "Remove package, pkgName, from repository.",
84
                        new SequenceType[] { new FunctionParameterSequenceType("pkgName", Type.STRING, Cardinality.EXACTLY_ONE, "package name")},
85
                        new FunctionReturnSequenceType(Type.BOOLEAN, Cardinality.EXACTLY_ONE, "true if successful, false otherwise"));
86

87
        public RemoveFunction(XQueryContext context) {
88
                super(context, signature);
1✔
89
         }
1✔
90

91
        public Sequence eval(Sequence[] args, Sequence contextSequence)
92
                throws XPathException {
93
            Sequence removed = BooleanValue.TRUE;
1✔
94
            boolean force = false;
1✔
95
            UserInteractionStrategy interact = new BatchUserInteraction();
1✔
96
            String pkg = args[0].getStringValue();
1✔
97

98
            try {
99
                Optional<ExistRepository> repo = getContext().getRepository();
1✔
100
                if (repo.isPresent()) {
1!
101
                    Repository parent_repo = repo.get().getParentRepo();
1✔
102
                    parent_repo.removePackage(pkg, force, interact);
1✔
103
                    repo.get().reportAction(ExistRepository.Action.UNINSTALL, pkg);
1✔
104
                    context.getBroker().getBrokerPool().getXQueryPool().clear();
1✔
105
                } else {
1✔
106
                    throw new XPathException(this, "expath repository not available");
×
107
                }
108
            } catch (PackageException | XPathException pe) {
×
109
                return BooleanValue.FALSE;
×
110
                // /TODO: _repo.removePackage seems to throw PackageException
111
                // throw new XPathException("Problem removing package " + pkg + " in expath repository, check the access permissions to the expath repository file directory  ", pe);
112
            }
1✔
113
        return removed;
1✔
114
        }
115
}
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2025 Coveralls, Inc