diff options
author | Herbert Eiselt <herbert.eiselt@highstreet-technologies.com> | 2019-02-28 15:23:42 +0100 |
---|---|---|
committer | Herbert Eiselt <herbert.eiselt@highstreet-technologies.com> | 2019-02-28 15:24:28 +0100 |
commit | 7446f23b3abc30d7c53f2eaa951742371c071171 (patch) | |
tree | b76a8d2e64c7aa850c09f8e69f01e7a262ab5cd5 /sdnr/wt/odlux/core/provider/src/main/java | |
parent | 49b155ec687cdf58fb51fe8245a2f5f4582b68f0 (diff) |
UX extensions
UX Maintenance client and further changes
Change-Id: I7643661d17db5fc3d3f94b58cb42ed0be558c64f
Issue-ID: SDNC-583
Signed-off-by: Herbert Eiselt <herbert.eiselt@highstreet-technologies.com>
Diffstat (limited to 'sdnr/wt/odlux/core/provider/src/main/java')
4 files changed, 234 insertions, 200 deletions
diff --git a/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/IndexOdluxBundle.java b/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/IndexOdluxBundle.java index ae0d0496b..dfd450f67 100644 --- a/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/IndexOdluxBundle.java +++ b/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/IndexOdluxBundle.java @@ -6,9 +6,9 @@ * ================================================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under @@ -21,112 +21,88 @@ import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.net.URL; -import java.util.ArrayList; -import java.util.Comparator; import java.util.List; import java.util.regex.Matcher; import java.util.regex.Pattern; import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundle; -import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleList; -import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleLoaderImpl; +import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleResourceAccess; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -public class IndexOdluxBundle extends OdluxBundle { +public class IndexOdluxBundle extends OdluxBundle implements OdluxBundleResourceAccess { - private static final String LR = "\n"; - private static Logger LOG = LoggerFactory.getLogger(IndexOdluxBundle.class); - private static final String BUNDLENAME_APP = "run"; - private static final String regexRequire = "require\\(\\[(\"" + BUNDLENAME_APP + "\")\\]"; - private static final String regexFunction = "function[\\ ]*\\((" + BUNDLENAME_APP + ")\\)[\\ ]*\\{"; - private static final String regexFunctionBody = "(" + BUNDLENAME_APP + "\\.runApplication\\(\\);)"; - private static final Pattern patternRequire = Pattern.compile(regexRequire); - private static final Pattern patternFunction = Pattern.compile(regexFunction); - private static final Pattern patternFunctionBody = Pattern.compile(regexFunctionBody); + private static Logger LOG = LoggerFactory.getLogger(IndexOdluxBundle.class); - public IndexOdluxBundle() { - super(null, BUNDLENAME_APP); + private static final String LR = "\n"; + private static final String BUNDLENAME_APP = "run"; + private static final String regexRequire = "require\\(\\[(\"" + BUNDLENAME_APP + "\")\\]"; + private static final String regexFunction = "function[\\ ]*\\((" + BUNDLENAME_APP + ")\\)[\\ ]*\\{"; + private static final String regexFunctionBody = "(" + BUNDLENAME_APP + "\\.runApplication\\(\\);)"; + private static final Pattern patternRequire = Pattern.compile(regexRequire); + private static final Pattern patternFunction = Pattern.compile(regexFunction); + private static final Pattern patternFunctionBody = Pattern.compile(regexFunctionBody); - } - @Override - protected String loadFileContent(URL url) - { - return this.loadFileContent(url, null); - } - - protected String loadFileContent(URL url, List<String> bundles) { - if (url == null) - return null; - LOG.debug("try to load res " + url.toString()); - StringBuilder sb = new StringBuilder(); - Matcher matcher; - BufferedReader in; - try { - in = new BufferedReader(new InputStreamReader(url.openStream())); + public IndexOdluxBundle() { + super(null, BUNDLENAME_APP); - String inputLine; - if (bundles == null) { - bundles = this.getLoadedBundles(); - } - while ((inputLine = in.readLine()) != null) { - if (url.getFile().endsWith("index.html")) { - matcher = patternRequire.matcher(inputLine); - if (matcher.find()) { - inputLine = inputLine.substring(0, matcher.start(1)) + "\"" + String.join("\",\"", bundles) - + "\"" + inputLine.substring(matcher.end(1)); - } - matcher = patternFunction.matcher(inputLine); - if (matcher.find()) { - inputLine = inputLine.substring(0, matcher.start(1)) + String.join(",", bundles) - + inputLine.substring(matcher.end(1)); - } - matcher = patternFunctionBody.matcher(inputLine); - if (matcher.find()) { - String hlp = ""; - for (String bundle : bundles) { - if (!bundle.equals(BUNDLENAME_APP)) - hlp += bundle + ".register();" + LR; - } - inputLine = inputLine.substring(0, matcher.start(1)) + hlp - + inputLine.substring(matcher.start(1)); - } - } - sb.append(inputLine + LR); - } - in.close(); - } catch (IOException e) { - LOG.warn("could not load resfile " + url.toString() + ": " + e.getMessage()); - return null; - } + } + @Override + protected String loadFileContent(URL url) + { + return loadFileContent(url, OdluxBundleLoaderImpl.getInstance().getLoadedBundles(this.getBundleName())); + } - return sb.toString(); - } - private List<String> getLoadedBundles() { - List<OdluxBundle> bundles = OdluxBundleLoaderImpl.getInstance().getBundles(); - List<String> list = new ArrayList<String>(); - bundles.sort(sortorderbundlecomparator); - for (OdluxBundle b : bundles) { - list.add(b.getBundleName()); - } - list.add(this.getBundleName()); - return list; - } + @Override + public String getResourceFileContent(String fn, List<String> bundleNames) { + return loadFileContent(this.getResource(fn),bundleNames); + } - private final Comparator<OdluxBundle> sortorderbundlecomparator = new Comparator<OdluxBundle>() { + private static String loadFileContent(URL url, List<String> bundlesNamesList) { + if (url == null) { + return null; + } + LOG.debug("try to load res " + url.toString()); + StringBuilder sb = new StringBuilder(); + Matcher matcher; + BufferedReader in; + try { + in = new BufferedReader(new InputStreamReader(url.openStream())); - @Override - public int compare(OdluxBundle arg0, OdluxBundle arg1) { + String inputLine; + while ((inputLine = in.readLine()) != null) { + if (url.getFile().endsWith("index.html")) { + matcher = patternRequire.matcher(inputLine); + if (matcher.find()) { + inputLine = inputLine.substring(0, matcher.start(1)) + "\"" + String.join("\",\"", bundlesNamesList) + + "\"" + inputLine.substring(matcher.end(1)); + } + matcher = patternFunction.matcher(inputLine); + if (matcher.find()) { + inputLine = inputLine.substring(0, matcher.start(1)) + String.join(",", bundlesNamesList) + + inputLine.substring(matcher.end(1)); + } + matcher = patternFunctionBody.matcher(inputLine); + if (matcher.find()) { + String hlp = ""; + for (String bundle : bundlesNamesList) { + if (!bundle.equals(BUNDLENAME_APP)) { + hlp += bundle + ".register();" + LR; + } + } + inputLine = inputLine.substring(0, matcher.start(1)) + hlp + + inputLine.substring(matcher.start(1)); + } + } + sb.append(inputLine + LR); + } + in.close(); + } catch (IOException e) { + LOG.warn("could not load resfile " + url.toString() + ": " + e.getMessage()); + return null; + } - int diff = arg0.getIndex() - arg1.getIndex(); - return diff > 0 ? 1 : diff < 0 ? -1 : 0; - } - }; + return sb.toString(); + } - public String getResourceFileContent(String fn, List<String> bundleNames) { - return this.loadFileContent(this.getResource(fn),bundleNames); - } - public Comparator<OdluxBundle> getBundleSorter() { - return this.sortorderbundlecomparator; - } } diff --git a/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/OdluxBundleLoaderImpl.java b/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/OdluxBundleLoaderImpl.java new file mode 100644 index 000000000..be271026d --- /dev/null +++ b/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/OdluxBundleLoaderImpl.java @@ -0,0 +1,130 @@ +/******************************************************************************* + * ============LICENSE_START======================================================================== + * ONAP : ccsdk feature sdnr wt + * ================================================================================================= + * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. + * ================================================================================================= + * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except + * in compliance with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software distributed under the License + * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express + * or implied. See the License for the specific language governing permissions and limitations under + * the License. + * ============LICENSE_END========================================================================== + ******************************************************************************/ +package org.onap.ccsdk.features.sdnr.wt.odlux; + +import java.util.ArrayList; +import java.util.Comparator; +import java.util.Iterator; +import java.util.List; +import java.util.concurrent.ConcurrentSkipListSet; +import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundle; +import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleLoader; +import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleResourceAccess; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +public class OdluxBundleLoaderImpl implements OdluxBundleLoader { + + private final static Logger LOG = LoggerFactory.getLogger(OdluxBundleLoaderImpl.class); + + private static OdluxBundleLoaderImpl singleton = null; + + private Object lock; + // private List<OdluxBundle> bundles; + private ConcurrentSkipListSet<OdluxBundle> bundles2; + private Comparator<OdluxBundle> sortorderbundlecomparator; + + public OdluxBundleLoaderImpl() { + if (singleton != null) { + LOG.error("Multiple intializations of singleton"); + } else { + lock = new Object(); + sortorderbundlecomparator = (arg0, arg1) -> { + int diff = arg0.getIndex() - arg1.getIndex(); + return diff > 0 ? 1 : diff < 0 ? -1 : 0; + }; + bundles2 = new ConcurrentSkipListSet<>(sortorderbundlecomparator); + + singleton = this; + } + } + + public static OdluxBundleLoaderImpl getInstance() { + if (singleton == null) { + LOG.warn("Test initialization order"); + new OdluxBundleLoaderImpl(); + } + return singleton; + } + + @Override + public int getNumberOfBundles() { + synchronized (lock) { + return this.bundles2.size(); + } + } + + @Override + public void addBundle(OdluxBundle bundle) { + LOG.debug("odlux bundle " + bundle.getBundleName() + " added"); + this.bundles2.add(bundle); + + + } + + @Override + public void removeBundle(OdluxBundle bundle) { + this.bundles2.remove(bundle); + LOG.debug("odlux bundle " + bundle.getBundleName() + " removed"); + + } + + private Comparator<OdluxBundle> getBundleSorter() { + return this.sortorderbundlecomparator; + } + + + public List<String> getLoadedBundles(String myBundleName) { + List<String> list = new ArrayList<>(); + for (OdluxBundle b : bundles2) { + list.add(b.getBundleName()); + } + list.add(myBundleName); + return list; + } + + private List<String> getBundleNames(String myBundleName) { + final List<String> names = new ArrayList<>(); + for (OdluxBundle b : bundles2) { + names.add(b.getBundleName()); + } + names.add(myBundleName); + return names; + } + + public String getResource(String fn, OdluxBundleResourceAccess indexBundle) { + String fileContent = null; + + if (indexBundle.hasResource(fn)) { + fileContent = indexBundle.getResourceFileContent(fn, getBundleNames(indexBundle.getBundleName())); + } else { + LOG.debug("not found in framework res. try to find in applications"); + final Iterator<OdluxBundle> it = bundles2.iterator(); + while (it.hasNext()) { + OdluxBundle b = it.next(); + if (b.hasResource(fn)) { + LOG.debug("found res in " + b.getBundleName()); + fileContent = b.getResourceFileContent(fn); + break; + } + } + } + return fileContent; + } + +} diff --git a/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/ResFilesServlet.java b/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/ResFilesServlet.java index 31544c2eb..41d10adfa 100644 --- a/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/ResFilesServlet.java +++ b/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/ResFilesServlet.java @@ -6,9 +6,9 @@ * ================================================================================================= * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at - * + * * http://www.apache.org/licenses/LICENSE-2.0 - * + * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under @@ -19,83 +19,54 @@ package org.onap.ccsdk.features.sdnr.wt.odlux; import java.io.IOException; import java.io.OutputStream; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - import javax.servlet.ServletException; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.onap.ccsdk.features.sdnr.wt.odlux.IndexOdluxBundle; -import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundle; -import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleList; -import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleLoaderImpl; import org.slf4j.Logger; import org.slf4j.LoggerFactory; public class ResFilesServlet extends HttpServlet { - /** - * - */ - private static final long serialVersionUID = -6807215213921798293L; - private static Logger LOG = LoggerFactory.getLogger(ResFilesServlet.class); - private final IndexOdluxBundle indexBundle; + /** + * + */ + private static final long serialVersionUID = -6807215213921798293L; + private static Logger LOG = LoggerFactory.getLogger(ResFilesServlet.class); + private final IndexOdluxBundle indexBundle; + + public ResFilesServlet() { + super(); + indexBundle = new IndexOdluxBundle(); + } + - public ResFilesServlet() { - super(); - indexBundle = new IndexOdluxBundle(); - OdluxBundleLoaderImpl.getInstance(); - } + @Override + protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - private List<String> getBundleNames(final List<OdluxBundle> bundles) { - final List<String> names = new ArrayList<String>(); - for (OdluxBundle b : bundles) - names.add(b.getBundleName()); - names.add(this.indexBundle.getBundleName()); - return names; - } + LOG.debug("get req: " + req.getRequestURI().toString()); + final String fn = req.getRequestURI().toString(); + String fileContent = null; - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { + fileContent = OdluxBundleLoaderImpl.getInstance().getResource(fn, indexBundle); - LOG.debug("get req: " + req.getRequestURI().toString()); - final String fn = req.getRequestURI().toString(); - String fileContent = null; - final List<OdluxBundle> bundles = OdluxBundleLoaderImpl.getInstance().getBundles(); - if (indexBundle.hasResource(fn)) { - bundles.sort(this.indexBundle.getBundleSorter()); - fileContent = indexBundle.getResourceFileContent(fn, this.getBundleNames(bundles)); - } else { - LOG.debug("not found in framework res. try to find in applications"); - synchronized (bundles) { - final Iterator<OdluxBundle> it = bundles.iterator(); - while (it.hasNext()) { - OdluxBundle b = it.next(); - if (b.hasResource(fn)) { - LOG.debug("found res in " + b.getBundleName()); - fileContent = b.getResourceFileContent(fn); - break; - } - } - } - } - if (fileContent != null) { - LOG.debug("found " + fn + " in res. write to output stream"); - resp.setStatus(200); - OutputStream os = resp.getOutputStream(); - os.write(fileContent.getBytes(java.nio.charset.StandardCharsets.UTF_8)); - os.flush(); - } else { - LOG.debug("file " + fn + " not found in res."); - resp.setStatus(404); + if (fileContent != null) { + LOG.debug("found " + fn + " in res. write to output stream"); + resp.setStatus(200); + OutputStream os = resp.getOutputStream(); + os.write(fileContent.getBytes(java.nio.charset.StandardCharsets.UTF_8)); + os.flush(); + os.close(); + } else { + LOG.debug("file " + fn + " not found in res."); + resp.setStatus(404); - } - } + } + } - public String loadFileContent(String filename) { - return this.indexBundle.getResourceFileContent(filename); - } + public String loadFileContent(String filename) { + return this.indexBundle.getResourceFileContent(filename); + } } diff --git a/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/RootServlet.java b/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/RootServlet.java deleted file mode 100644 index fa49536ca..000000000 --- a/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/RootServlet.java +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - ******************************************************************************/ -package org.onap.ccsdk.features.sdnr.wt.odlux; - -import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class RootServlet extends HttpServlet { - - - /** - * - */ - private static final long serialVersionUID = -2622614831559561459L; - private static Logger LOG = LoggerFactory.getLogger(RootServlet.class); - - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - - LOG.debug("redirect to index2.html"); - resp.sendRedirect("index2.html"); - } -} |