summaryrefslogtreecommitdiffstats
path: root/sdnr/wt/odlux/core/provider/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wt/odlux/core/provider/src/main')
-rw-r--r--sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/IndexOdluxBundle.java162
-rw-r--r--sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/OdluxBundleLoaderImpl.java130
-rw-r--r--sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/ResFilesServlet.java99
-rw-r--r--sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/RootServlet.java43
-rw-r--r--sdnr/wt/odlux/core/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml15
5 files changed, 236 insertions, 213 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");
- }
-}
diff --git a/sdnr/wt/odlux/core/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wt/odlux/core/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml
index bf726ac93..76be14512 100644
--- a/sdnr/wt/odlux/core/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml
+++ b/sdnr/wt/odlux/core/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml
@@ -13,16 +13,6 @@ xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs">
<entry key="alias" value="/index2.html" />
</service-properties>
</service>
-
-<!-- <bean id="rootServlet" -->
-<!-- class="com.highstreet.technologies.odlux.RootServlet"> -->
-<!-- </bean> -->
-
-<!-- <service interface="javax.servlet.http.HttpServlet" ref="rootServlet"> -->
-<!-- <service-properties> -->
-<!-- <entry key="alias" value="/" /> -->
-<!-- </service-properties> -->
-<!-- </service> -->
<bean id="resFilesServlet"
class="org.onap.ccsdk.features.sdnr.wt.odlux.ResFilesServlet">
@@ -33,8 +23,7 @@ xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs">
<entry key="alias" value="/odlux" />
</service-properties>
</service>
-
- <bean id="loadersvc" class="org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleLoaderImpl"/>
+ <bean id="loadersvc" class="org.onap.ccsdk.features.sdnr.wt.odlux.OdluxBundleLoaderImpl"/>
<service id="serviceRegistration" interface="org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleLoader" ref="loadersvc"/>
-
+
</blueprint>