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 | |
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')
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 |