aboutsummaryrefslogtreecommitdiffstats
path: root/sdnr/wt/odlux/core
diff options
context:
space:
mode:
Diffstat (limited to 'sdnr/wt/odlux/core')
-rw-r--r--sdnr/wt/odlux/core/README.md1
-rw-r--r--sdnr/wt/odlux/core/model/pom.xml101
-rw-r--r--sdnr/wt/odlux/core/model/src/main/java/com/opensymphony/xwork2/util/ClassLoaderUtil.java37
-rw-r--r--sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/ClassLoaderUtilExt.java21
-rw-r--r--sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/IndexOdlBundle.java12
-rw-r--r--sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundle.java51
-rw-r--r--sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleList.java20
-rw-r--r--sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleLoader.java7
-rw-r--r--sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleResourceAccess.java18
-rw-r--r--sdnr/wt/odlux/core/provider/pom.xml5
-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/resources/OSGI-INF/blueprint/blueprint.xml15
-rw-r--r--sdnr/wt/odlux/core/provider/src/test/java/LoadResourcesTest.java26
-rw-r--r--sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestBundleLoaderImpl.java66
-rw-r--r--sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestLoadResources.java (renamed from sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleLoaderImpl.java)68
-rw-r--r--sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestRedirect.java (renamed from sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/RootServlet.java)46
-rw-r--r--sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestResFileServlet.java93
-rw-r--r--sdnr/wt/odlux/core/provider/src/test/resources/index.html24
-rw-r--r--sdnr/wt/odlux/core/provider/src/test/resources/index2.html24
-rw-r--r--sdnr/wt/odlux/core/provider/src/test/resources/odlux/index2.html24
22 files changed, 648 insertions, 402 deletions
diff --git a/sdnr/wt/odlux/core/README.md b/sdnr/wt/odlux/core/README.md
deleted file mode 100644
index 8b1378917..000000000
--- a/sdnr/wt/odlux/core/README.md
+++ /dev/null
@@ -1 +0,0 @@
-
diff --git a/sdnr/wt/odlux/core/model/pom.xml b/sdnr/wt/odlux/core/model/pom.xml
index c027e5ad8..f06f994dc 100644
--- a/sdnr/wt/odlux/core/model/pom.xml
+++ b/sdnr/wt/odlux/core/model/pom.xml
@@ -1,54 +1,55 @@
<project xmlns="http://maven.apache.org/POM/4.0.0"
- xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
- xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
- <modelVersion>4.0.0</modelVersion>
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
- <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
- <artifactId>sdnr-wt-odlux-core-model</artifactId>
- <version>0.4.1-SNAPSHOT</version>
- <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
- <packaging>bundle</packaging>
+ <groupId>org.onap.ccsdk.features.sdnr.wt</groupId>
+ <artifactId>sdnr-wt-odlux-core-model</artifactId>
+ <version>0.4.1-SNAPSHOT</version>
+ <name>ccsdk-features-sdnr-wt :: ${project.artifactId}</name>
+ <packaging>bundle</packaging>
- <parent>
- <groupId>org.onap.ccsdk.parent</groupId>
- <artifactId>binding-parent</artifactId>
- <version>1.2.1-SNAPSHOT</version>
- <relativePath />
- </parent>
- <licenses>
- <license>
- <name>Apache License, Version 2.0</name>
- <url>http://www.apache.org/licenses/LICENSE-2.0</url>
- </license>
- </licenses>
+ <parent>
+ <groupId>org.onap.ccsdk.parent</groupId>
+ <artifactId>binding-parent</artifactId>
+ <version>1.2.1-SNAPSHOT</version>
+ <relativePath />
+ </parent>
+ <licenses>
+ <license>
+ <name>Apache License, Version 2.0</name>
+ <url>http://www.apache.org/licenses/LICENSE-2.0</url>
+ </license>
+ </licenses>
- <dependencies>
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.core</artifactId>
- </dependency>
- <dependency>
- <groupId>org.osgi</groupId>
- <artifactId>org.osgi.compendium</artifactId>
- </dependency>
- <dependency>
- <groupId>org.slf4j</groupId>
- <artifactId>slf4j-api</artifactId>
- </dependency>
- </dependencies>
- <build>
- <plugins>
- <plugin>
- <groupId>org.apache.felix</groupId>
- <artifactId>maven-bundle-plugin</artifactId>
- <extensions>true</extensions>
- <configuration>
- <instructions>
- <Import-Package>*</Import-Package>
- <Export-Package>org.onap.ccsdk.features.sdnr.wt.odlux.*,com.opensymphony.*</Export-Package>
- </instructions>
- </configuration>
- </plugin>
- </plugins>
- </build>
-</project> \ No newline at end of file
+ <dependencies>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.core</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.osgi</groupId>
+ <artifactId>org.osgi.compendium</artifactId>
+ </dependency>
+ <dependency>
+ <groupId>org.slf4j</groupId>
+ <artifactId>slf4j-api</artifactId>
+ </dependency>
+
+ </dependencies>
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.felix</groupId>
+ <artifactId>maven-bundle-plugin</artifactId>
+ <extensions>true</extensions>
+ <configuration>
+ <instructions>
+ <Import-Package>*</Import-Package>
+ <Export-Package>org.onap.ccsdk.features.sdnr.wt.odlux.*,com.opensymphony.*</Export-Package>
+ </instructions>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/sdnr/wt/odlux/core/model/src/main/java/com/opensymphony/xwork2/util/ClassLoaderUtil.java b/sdnr/wt/odlux/core/model/src/main/java/com/opensymphony/xwork2/util/ClassLoaderUtil.java
index 10705b0ea..133b08494 100644
--- a/sdnr/wt/odlux/core/model/src/main/java/com/opensymphony/xwork2/util/ClassLoaderUtil.java
+++ b/sdnr/wt/odlux/core/model/src/main/java/com/opensymphony/xwork2/util/ClassLoaderUtil.java
@@ -1,12 +1,12 @@
/*
* Copyright 2002-2003,2009 The Apache Software Foundation.
- *
+ *
* 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.
@@ -27,7 +27,7 @@ import java.util.*;
*
* It has come out of many months of frustrating use of multiple application servers at Atlassian,
* please don't change things unless you're sure they're not going to break in one server or another!
- *
+ *
* It was brought in from oscore trunk revision 147.
*
* @author $Author$
@@ -37,7 +37,7 @@ public class ClassLoaderUtil {
//~ Methods ////////////////////////////////////////////////////////////////
/**
- * Load all resources with a given name, potentially aggregating all results
+ * Load all resources with a given name, potentially aggregating all results
* from the searched classloaders. If no results are found, the resource name
* is prepended by '/' and tried again.
*
@@ -51,9 +51,9 @@ public class ClassLoaderUtil {
* @param resourceName The name of the resources to load
* @param callingClass The Class object of the calling object
*/
- public static Iterator<URL> getResources(String resourceName, Class callingClass, boolean aggregate) throws IOException {
+ public static Iterator<URL> getResources(String resourceName, Class<?> callingClass, boolean aggregate) throws IOException {
- AggregateIterator<URL> iterator = new AggregateIterator<URL>();
+ AggregateIterator<URL> iterator = new AggregateIterator<>();
iterator.addEnumeration(Thread.currentThread().getContextClassLoader().getResources(resourceName));
@@ -69,7 +69,7 @@ public class ClassLoaderUtil {
}
}
- if (!iterator.hasNext() && (resourceName != null) && ((resourceName.length() == 0) || (resourceName.charAt(0) != '/'))) {
+ if (!iterator.hasNext() && resourceName != null && (resourceName.length() == 0 || resourceName.charAt(0) != '/')) {
return getResources('/' + resourceName, callingClass, aggregate);
}
@@ -89,7 +89,7 @@ public class ClassLoaderUtil {
* @param resourceName The name IllegalStateException("Unable to call ")of the resource to load
* @param callingClass The Class object of the calling object
*/
- public static URL getResource(String resourceName, Class callingClass) {
+ public static URL getResource(String resourceName, Class<?> callingClass) {
URL url = Thread.currentThread().getContextClassLoader().getResource(resourceName);
if (url == null) {
@@ -104,7 +104,7 @@ public class ClassLoaderUtil {
}
}
- if ((url == null) && (resourceName != null) && ((resourceName.length() == 0) || (resourceName.charAt(0) != '/'))) {
+ if (url == null && resourceName != null && (resourceName.length() == 0 || resourceName.charAt(0) != '/')) {
return getResource('/' + resourceName, callingClass);
}
@@ -119,11 +119,11 @@ public class ClassLoaderUtil {
* @param resourceName The name of the resource to load
* @param callingClass The Class object of the calling object
*/
- public static InputStream getResourceAsStream(String resourceName, Class callingClass) {
+ public static InputStream getResourceAsStream(String resourceName, Class<?> callingClass) {
URL url = getResource(resourceName, callingClass);
try {
- return (url != null) ? url.openStream() : null;
+ return url != null ? url.openStream() : null;
} catch (IOException e) {
return null;
}
@@ -144,7 +144,7 @@ public class ClassLoaderUtil {
* @param callingClass The Class object of the calling object
* @throws ClassNotFoundException If the class cannot be found anywhere.
*/
- public static Class loadClass(String className, Class callingClass) throws ClassNotFoundException {
+ public static Class<?> loadClass(String className, Class<?> callingClass) throws ClassNotFoundException {
try {
return Thread.currentThread().getContextClassLoader().loadClass(className);
} catch (ClassNotFoundException e) {
@@ -166,10 +166,10 @@ public class ClassLoaderUtil {
*/
static class AggregateIterator<E> implements Iterator<E> {
- LinkedList<Enumeration<E>> enums = new LinkedList<Enumeration<E>>();
+ LinkedList<Enumeration<E>> enums = new LinkedList<>();
Enumeration<E> cur = null;
E next = null;
- Set<E> loaded = new HashSet<E>();
+ Set<E> loaded = new HashSet<>();
public AggregateIterator<E> addEnumeration(Enumeration<E> e) {
if (e.hasMoreElements()) {
@@ -184,10 +184,12 @@ public class ClassLoaderUtil {
return this;
}
+ @Override
public boolean hasNext() {
- return (next != null);
+ return next != null;
}
+ @Override
public E next() {
if (next != null) {
E prev = next;
@@ -228,8 +230,9 @@ public class ClassLoaderUtil {
}
+ @Override
public void remove() {
throw new UnsupportedOperationException();
}
}
-} \ No newline at end of file
+}
diff --git a/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/ClassLoaderUtilExt.java b/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/ClassLoaderUtilExt.java
index 08d243666..4b58aac44 100644
--- a/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/ClassLoaderUtilExt.java
+++ b/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/ClassLoaderUtilExt.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
@@ -30,15 +30,14 @@ public class ClassLoaderUtilExt {
final static Logger LOG = LoggerFactory.getLogger(ClassLoaderUtilExt.class);
- public static URL getResource(String resourceName, Class callingClass) {
+ public static URL getResource(String resourceName, Class<?> callingClass) {
Iterator<URL> urls = null;
URL url = null;
try {
urls = getResources(resourceName, callingClass, true);
} catch (IOException e) {
- // TODO Auto-generated catch block
- e.printStackTrace();
+ LOG.debug("No resource {}",resourceName);
}
if (urls != null) {
while (urls.hasNext()) {
@@ -51,12 +50,20 @@ public class ClassLoaderUtilExt {
if (url == null) {
LOG.debug("res currently not found. try to find with bundle");
Bundle b = FrameworkUtil.getBundle(callingClass);
- url = b.getEntry(resourceName);
+ if(b!=null)
+ {
+ url = b.getEntry(resourceName);
+ }
+ else {
+ ClassLoader loader = Thread.currentThread().getContextClassLoader();
+ url = loader.getResource(resourceName);
+ }
+
}
return url;
}
- public static Iterator<URL> getResources(String resourceName, Class callingClass, boolean aggregate)
+ public static Iterator<URL> getResources(String resourceName, Class<?> callingClass, boolean aggregate)
throws IOException {
return ClassLoaderUtil.getResources(resourceName, callingClass, aggregate);
}
diff --git a/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/IndexOdlBundle.java b/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/IndexOdlBundle.java
new file mode 100644
index 000000000..66ff5658a
--- /dev/null
+++ b/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/IndexOdlBundle.java
@@ -0,0 +1,12 @@
+/*
+ * Copyright (c) 2019 Red Hat, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles;
+
+public interface IndexOdlBundle {
+
+}
diff --git a/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundle.java b/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundle.java
index 448169fad..e85c88b6f 100644
--- a/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundle.java
+++ b/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundle.java
@@ -21,11 +21,8 @@ import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.IOException;
-import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
-import java.util.ArrayList;
-import java.util.List;
/**
* At startup of each karaf bundle, each UI module creates an instance of this class via blueprint.
@@ -81,22 +78,6 @@ public class OdluxBundle {
public void initialize() {
LOG.info("Registering resources");
- try {
- List<String> resources = this.getResourceFiles("/odlux");
- if (resources.size() > 0) {
- for (String res : resources) {
- LOG.debug("found res " + res);
- }
- } else {
- String res = "/odlux/" + this.getBundleName() + ".js";
- if (this.hasResource(res)) {
- LOG.debug("found res " + res);
- } else
- LOG.warn("no resources found in bundle");
- }
- } catch (IOException e) {
- LOG.debug("problem searching for resources: " + e.getMessage());
- }
if (this.loader != null) {
if (this.bundleName == null)
LOG.error("bundle name is missing. Bundle can not be registered with odlux");
@@ -149,36 +130,4 @@ public class OdluxBundle {
return sb.toString();
}
- private List<String> getResourceFiles(String path) throws IOException {
- List<String> filenames = new ArrayList<>();
-
- try {
-
- InputStream in = getResourceAsStream(path);
- if (in != null) {
- BufferedReader br = new BufferedReader(new InputStreamReader(in));
- if (br != null) {
- String resource;
-
- while ((resource = br.readLine()) != null) {
- filenames.add(resource);
- }
- }
- }
- } catch (Exception e) {
- LOG.warn("problem loading res " + path);
- }
-
- return filenames;
- }
-
- private InputStream getResourceAsStream(String resource) {
- final InputStream in = getContextClassLoader().getResourceAsStream(resource);
-
- return in == null ? getClass().getResourceAsStream(resource) : in;
- }
-
- private ClassLoader getContextClassLoader() {
- return Thread.currentThread().getContextClassLoader();
- }
}
diff --git a/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleList.java b/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleList.java
deleted file mode 100644
index c2a514399..000000000
--- a/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleList.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles;
-
-import java.util.ArrayList;
-import java.util.List;
-
-public class OdluxBundleList extends ArrayList<OdluxBundle>{
-
- /**
- *
- */
- private static final long serialVersionUID = 8365348398621906220L;
-
- public List<String> getNames(){
- final List<String> names=new ArrayList<String>();
- for(OdluxBundle b:this)
- names.add(b.getBundleName());
- return names;
- }
-
-}
diff --git a/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleLoader.java b/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleLoader.java
index e288ee3ec..5c8231e9c 100644
--- a/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleLoader.java
+++ b/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleLoader.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
@@ -22,4 +22,7 @@ public interface OdluxBundleLoader {
public void addBundle(OdluxBundle bundle);
public void removeBundle(OdluxBundle bundle);
+
+ public int getNumberOfBundles();
+
}
diff --git a/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleResourceAccess.java b/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleResourceAccess.java
new file mode 100644
index 000000000..e2ec04f83
--- /dev/null
+++ b/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleResourceAccess.java
@@ -0,0 +1,18 @@
+/*
+ * Copyright (c) 2019 Red Hat, Inc. and others. All rights reserved.
+ *
+ * This program and the accompanying materials are made available under the
+ * terms of the Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ */
+package org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles;
+
+import java.util.List;
+
+public interface OdluxBundleResourceAccess {
+
+ boolean hasResource(String fn);
+ String getResourceFileContent(String fn, List<String> bundleNames);
+ String getBundleName();
+
+}
diff --git a/sdnr/wt/odlux/core/provider/pom.xml b/sdnr/wt/odlux/core/provider/pom.xml
index 3ba52803e..2eab5b246 100644
--- a/sdnr/wt/odlux/core/provider/pom.xml
+++ b/sdnr/wt/odlux/core/provider/pom.xml
@@ -58,6 +58,11 @@
<groupId>javax.servlet</groupId>
<artifactId>javax.servlet-api</artifactId>
</dependency>
+ <dependency>
+ <groupId>org.mockito</groupId>
+ <artifactId>mockito-core</artifactId>
+ <scope>test</scope>
+ </dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
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/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>
diff --git a/sdnr/wt/odlux/core/provider/src/test/java/LoadResourcesTest.java b/sdnr/wt/odlux/core/provider/src/test/java/LoadResourcesTest.java
deleted file mode 100644
index b8a68f166..000000000
--- a/sdnr/wt/odlux/core/provider/src/test/java/LoadResourcesTest.java
+++ /dev/null
@@ -1,26 +0,0 @@
-import static org.junit.Assert.*;
-
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import org.junit.Test;
-import org.onap.ccsdk.features.sdnr.wt.odlux.ResFilesServlet;
-
-import com.opensymphony.xwork2.util.ClassLoaderUtil;
-
-public class LoadResourcesTest {
-
- @Test
- public void test() {
- ResFilesServlet servlet = new ResFilesServlet();
- String indexhtml=null;
- indexhtml=servlet.loadFileContent("odlux/index.html");
- assertNotNull(indexhtml);
- final String regex = "require\\(\\[\"run\".*\\]";
- final Pattern pattern = Pattern.compile(regex,Pattern.MULTILINE);
- final Matcher matcher = pattern.matcher(indexhtml);
- System.out.println(indexhtml);
- assertTrue(matcher.find());
- }
-
-}
diff --git a/sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestBundleLoaderImpl.java b/sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestBundleLoaderImpl.java
new file mode 100644
index 000000000..bebbffdcf
--- /dev/null
+++ b/sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestBundleLoaderImpl.java
@@ -0,0 +1,66 @@
+/*******************************************************************************
+ * ============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.odlux.test;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
+import org.junit.Test;
+import org.onap.ccsdk.features.sdnr.wt.odlux.OdluxBundleLoaderImpl;
+import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundle;
+import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleLoader;
+
+public class TestBundleLoaderImpl {
+
+ @Test
+ public void test() {
+ OdluxBundleLoader loader = OdluxBundleLoaderImpl.getInstance();
+ int loaded = loader.getNumberOfBundles();
+
+ OdluxBundle bundle1 = new OdluxBundle();
+ bundle1.setBundleName("b1");
+ bundle1.setIndex(0);
+ bundle1.setLoader(loader);
+ OdluxBundle bundle2 = new OdluxBundle();
+ bundle2.setBundleName("b2");
+ bundle2.setIndex(55);
+ bundle2.setLoader(loader);
+ bundle1.initialize();
+ bundle2.initialize();
+ assertNotNull(bundle1.getResourceFileContent("index.html"));
+ assertNotNull(bundle2.getResourceFileContent("index2.html"));
+ assertEquals(loaded+2, loader.getNumberOfBundles());
+ loader.addBundle(bundle1);
+ loader.addBundle(bundle2);
+ assertEquals(loaded+2, loader.getNumberOfBundles());
+ loader.removeBundle(bundle1);
+ loader.removeBundle(bundle2);
+ assertEquals(loaded, loader.getNumberOfBundles());
+
+ assertTrue(bundle1.hasResource("index.html"));
+ assertTrue(bundle2.hasResource("index2.html"));
+ assertNotNull(bundle1.getLoader());
+ assertEquals(0,bundle1.getIndex());
+ bundle1.clean();
+ bundle2.clean();
+ assertEquals(loaded,loader.getNumberOfBundles());
+
+
+ }
+}
diff --git a/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleLoaderImpl.java b/sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestLoadResources.java
index 5b15be35c..3c9ad4308 100644
--- a/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleLoaderImpl.java
+++ b/sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestLoadResources.java
@@ -6,56 +6,40 @@
* =================================================================================================
* 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.model.bundles;
-
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-public class OdluxBundleLoaderImpl implements OdluxBundleLoader {
-
- final static Logger LOG = LoggerFactory.getLogger(OdluxBundleLoaderImpl.class);
- private static OdluxBundleLoaderImpl mObj;
-
- public static OdluxBundleLoaderImpl getInstance() {
- if (mObj == null)
- mObj = new OdluxBundleLoaderImpl();
- return mObj;
- }
-
- private final List<OdluxBundle> bundles;
-
- public synchronized List<OdluxBundle> getBundles() {
- return this.bundles;
+package org.onap.ccsdk.features.sdnr.odlux.test;
+import static org.junit.Assert.*;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import org.junit.Test;
+import org.onap.ccsdk.features.sdnr.wt.odlux.ResFilesServlet;
+
+public class TestLoadResources {
+
+ @Test
+ public void test() {
+ ResFilesServlet servlet = new ResFilesServlet();
+ String indexhtml=null;
+ indexhtml=servlet.loadFileContent("odlux/index.html");
+ assertNotNull(indexhtml);
+ final String regex = "require\\(\\[.*\"run\".*\\]";
+ final Pattern pattern = Pattern.compile(regex,Pattern.MULTILINE);
+ System.out.println(indexhtml);
+ final Matcher matcher = pattern.matcher(indexhtml);
+ assertTrue("Can not find patter '"+regex+"'",matcher.find());
}
-
- public OdluxBundleLoaderImpl() {
- this.bundles = Collections.synchronizedList(new ArrayList<OdluxBundle>());
- mObj = this;
- }
-
- @Override
- public synchronized void addBundle(OdluxBundle bundle) {
- LOG.debug("odlux bundle " + bundle.getBundleName() + " added");
- this.bundles.add(bundle);
-
- }
-
- @Override
- public synchronized void removeBundle(OdluxBundle bundle) {
- this.bundles.remove(bundle);
- LOG.debug("odlux bundle " + bundle.getBundleName() + " removed");
+ @Test
+ public void test2() {
}
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/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestRedirect.java
index fa49536ca..78d5eb8fe 100644
--- 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/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestRedirect.java
@@ -15,29 +15,43 @@
* the License.
* ============LICENSE_END==========================================================================
******************************************************************************/
-package org.onap.ccsdk.features.sdnr.wt.odlux;
+package org.onap.ccsdk.features.sdnr.odlux.test;
+
+import static org.junit.Assert.*;
+
+import org.junit.Test;
+import org.onap.ccsdk.features.sdnr.wt.odlux.IndexServlet;
+
+import static org.mockito.Mockito.*;
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 {
+public class TestRedirect {
- /**
- *
- */
- private static final long serialVersionUID = -2622614831559561459L;
- private static Logger LOG = LoggerFactory.getLogger(RootServlet.class);
+ private static final int RESPONSECODE_REDIRECT = 301;
- @Override
- protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ @Test
+ public void test() {
+ PublicIndexServlet servlet =new PublicIndexServlet();
+ HttpServletRequest req = mock(HttpServletRequest.class);
+ HttpServletResponse resp = mock(HttpServletResponse.class);
+ try {
+ servlet.doGet(req,resp);
+ } catch (Exception e) {
+ fail(e.getMessage());
+ }
+ verify(resp).setStatus(RESPONSECODE_REDIRECT);
+ }
+
+ private static class PublicIndexServlet extends IndexServlet{
+ @Override
+ public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ super.doGet(req, resp);
+ }
+ }
- LOG.debug("redirect to index2.html");
- resp.sendRedirect("index2.html");
- }
}
diff --git a/sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestResFileServlet.java b/sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestResFileServlet.java
new file mode 100644
index 000000000..287ed70d9
--- /dev/null
+++ b/sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestResFileServlet.java
@@ -0,0 +1,93 @@
+/*******************************************************************************
+ * ============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.odlux.test;
+
+import static org.junit.Assert.*;
+
+import java.io.IOException;
+import java.io.StringWriter;
+
+import javax.servlet.ServletException;
+import javax.servlet.ServletOutputStream;
+import javax.servlet.WriteListener;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+import static org.mockito.Mockito.*;
+import org.junit.Test;
+import org.onap.ccsdk.features.sdnr.wt.odlux.OdluxBundleLoaderImpl;
+import org.onap.ccsdk.features.sdnr.wt.odlux.ResFilesServlet;
+import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundle;
+import org.onap.ccsdk.features.sdnr.wt.odlux.model.bundles.OdluxBundleLoader;
+
+public class TestResFileServlet {
+
+ PublicResFilesServlet servlet;
+
+ private void testResReq(String res, int responseCode) {
+ HttpServletRequest req = mock(HttpServletRequest.class);
+ HttpServletResponse resp = mock(HttpServletResponse.class);
+ when(req.getRequestURI()).thenReturn(res);
+ StringWriter out = new StringWriter();
+ ServletOutputStream printOut = new ServletOutputStream() {
+
+ @Override
+ public void write(int arg0) throws IOException {
+ out.write(arg0);
+ }
+
+ @Override
+ public boolean isReady() {
+ return false;
+ }
+
+ @Override
+ public void setWriteListener(WriteListener writeListener) {
+
+ }
+ };
+ try {
+ when(resp.getOutputStream()).thenReturn(printOut);
+ servlet.doGet(req, resp);
+ } catch (ServletException | IOException e) {
+ fail(e.getMessage());
+ }
+ verify(resp).setStatus(responseCode);
+ }
+
+ @Test
+ public void test() {
+ servlet = new PublicResFilesServlet();
+ OdluxBundleLoader loader = OdluxBundleLoaderImpl.getInstance();
+ OdluxBundle b = new OdluxBundle();
+ b.setBundleName("b1");
+ b.setIndex(9);
+ b.setLoader(loader);
+ b.initialize();
+ testResReq("odlux/index.html", 200);
+ testResReq("odlux/fragmich.txt", 404);
+
+ }
+
+ @SuppressWarnings("serial")
+ private class PublicResFilesServlet extends ResFilesServlet {
+ @Override
+ public void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
+ super.doGet(req, resp);
+ }
+ }
+}
diff --git a/sdnr/wt/odlux/core/provider/src/test/resources/index.html b/sdnr/wt/odlux/core/provider/src/test/resources/index.html
new file mode 100644
index 000000000..4f4584dd9
--- /dev/null
+++ b/sdnr/wt/odlux/core/provider/src/test/resources/index.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
+ <!-- <link rel="stylesheet" href="./vendor.css" > -->
+ <title>O D L UX</title>
+</head>
+
+<body>
+ <div id="app"></div>
+ <script type="text/javascript" src="./require.js"></script>
+ <script type="text/javascript" src="./config.js"></script>
+ <script>
+ // run the application
+ require(["run"], function (run) {
+ run.runApplication();
+ });
+ </script>
+</body>
+
+</html> \ No newline at end of file
diff --git a/sdnr/wt/odlux/core/provider/src/test/resources/index2.html b/sdnr/wt/odlux/core/provider/src/test/resources/index2.html
new file mode 100644
index 000000000..4f4584dd9
--- /dev/null
+++ b/sdnr/wt/odlux/core/provider/src/test/resources/index2.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
+ <!-- <link rel="stylesheet" href="./vendor.css" > -->
+ <title>O D L UX</title>
+</head>
+
+<body>
+ <div id="app"></div>
+ <script type="text/javascript" src="./require.js"></script>
+ <script type="text/javascript" src="./config.js"></script>
+ <script>
+ // run the application
+ require(["run"], function (run) {
+ run.runApplication();
+ });
+ </script>
+</body>
+
+</html> \ No newline at end of file
diff --git a/sdnr/wt/odlux/core/provider/src/test/resources/odlux/index2.html b/sdnr/wt/odlux/core/provider/src/test/resources/odlux/index2.html
new file mode 100644
index 000000000..4f4584dd9
--- /dev/null
+++ b/sdnr/wt/odlux/core/provider/src/test/resources/odlux/index2.html
@@ -0,0 +1,24 @@
+<!DOCTYPE html>
+<html lang="en">
+
+<head>
+ <meta charset="UTF-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
+ <meta http-equiv="X-UA-Compatible" content="ie=edge">
+ <!-- <link rel="stylesheet" href="./vendor.css" > -->
+ <title>O D L UX</title>
+</head>
+
+<body>
+ <div id="app"></div>
+ <script type="text/javascript" src="./require.js"></script>
+ <script type="text/javascript" src="./config.js"></script>
+ <script>
+ // run the application
+ require(["run"], function (run) {
+ run.runApplication();
+ });
+ </script>
+</body>
+
+</html> \ No newline at end of file