From 7446f23b3abc30d7c53f2eaa951742371c071171 Mon Sep 17 00:00:00 2001 From: Herbert Eiselt Date: Thu, 28 Feb 2019 15:23:42 +0100 Subject: UX extensions UX Maintenance client and further changes Change-Id: I7643661d17db5fc3d3f94b58cb42ed0be558c64f Issue-ID: SDNC-583 Signed-off-by: Herbert Eiselt --- sdnr/wt/odlux/core/README.md | 1 - sdnr/wt/odlux/core/model/pom.xml | 101 ++++++------- .../opensymphony/xwork2/util/ClassLoaderUtil.java | 37 ++--- .../wt/odlux/model/bundles/ClassLoaderUtilExt.java | 21 ++- .../wt/odlux/model/bundles/IndexOdlBundle.java | 12 ++ .../sdnr/wt/odlux/model/bundles/OdluxBundle.java | 51 ------- .../wt/odlux/model/bundles/OdluxBundleList.java | 20 --- .../wt/odlux/model/bundles/OdluxBundleLoader.java | 7 +- .../odlux/model/bundles/OdluxBundleLoaderImpl.java | 62 -------- .../model/bundles/OdluxBundleResourceAccess.java | 18 +++ sdnr/wt/odlux/core/provider/pom.xml | 5 + .../features/sdnr/wt/odlux/IndexOdluxBundle.java | 162 +++++++++------------ .../sdnr/wt/odlux/OdluxBundleLoaderImpl.java | 130 +++++++++++++++++ .../features/sdnr/wt/odlux/ResFilesServlet.java | 99 +++++-------- .../ccsdk/features/sdnr/wt/odlux/RootServlet.java | 43 ------ .../resources/OSGI-INF/blueprint/blueprint.xml | 15 +- .../provider/src/test/java/LoadResourcesTest.java | 26 ---- .../sdnr/odlux/test/TestBundleLoaderImpl.java | 66 +++++++++ .../sdnr/odlux/test/TestLoadResources.java | 46 ++++++ .../features/sdnr/odlux/test/TestRedirect.java | 57 ++++++++ .../sdnr/odlux/test/TestResFileServlet.java | 93 ++++++++++++ .../core/provider/src/test/resources/index.html | 24 +++ .../core/provider/src/test/resources/index2.html | 24 +++ .../provider/src/test/resources/odlux/index2.html | 24 +++ 24 files changed, 695 insertions(+), 449 deletions(-) delete mode 100644 sdnr/wt/odlux/core/README.md create mode 100644 sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/IndexOdlBundle.java delete mode 100644 sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleList.java delete mode 100644 sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleLoaderImpl.java create mode 100644 sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleResourceAccess.java create mode 100644 sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/OdluxBundleLoaderImpl.java delete mode 100644 sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/RootServlet.java delete mode 100644 sdnr/wt/odlux/core/provider/src/test/java/LoadResourcesTest.java create mode 100644 sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestBundleLoaderImpl.java create mode 100644 sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestLoadResources.java create mode 100644 sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestRedirect.java create mode 100644 sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestResFileServlet.java create mode 100644 sdnr/wt/odlux/core/provider/src/test/resources/index.html create mode 100644 sdnr/wt/odlux/core/provider/src/test/resources/index2.html create mode 100644 sdnr/wt/odlux/core/provider/src/test/resources/odlux/index2.html (limited to 'sdnr/wt/odlux/core') 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 @@ - 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"> + 4.0.0 - org.onap.ccsdk.features.sdnr.wt - sdnr-wt-odlux-core-model - 0.4.1-SNAPSHOT - ccsdk-features-sdnr-wt :: ${project.artifactId} - bundle + org.onap.ccsdk.features.sdnr.wt + sdnr-wt-odlux-core-model + 0.4.1-SNAPSHOT + ccsdk-features-sdnr-wt :: ${project.artifactId} + bundle - - org.onap.ccsdk.parent - binding-parent - 1.2.1-SNAPSHOT - - - - - Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0 - - + + org.onap.ccsdk.parent + binding-parent + 1.2.1-SNAPSHOT + + + + + Apache License, Version 2.0 + http://www.apache.org/licenses/LICENSE-2.0 + + - - - org.osgi - org.osgi.core - - - org.osgi - org.osgi.compendium - - - org.slf4j - slf4j-api - - - - - - org.apache.felix - maven-bundle-plugin - true - - - * - org.onap.ccsdk.features.sdnr.wt.odlux.*,com.opensymphony.* - - - - - - \ No newline at end of file + + + org.osgi + org.osgi.core + + + org.osgi + org.osgi.compendium + + + org.slf4j + slf4j-api + + + + + + + org.apache.felix + maven-bundle-plugin + true + + + * + org.onap.ccsdk.features.sdnr.wt.odlux.*,com.opensymphony.* + + + + + + 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 getResources(String resourceName, Class callingClass, boolean aggregate) throws IOException { + public static Iterator getResources(String resourceName, Class callingClass, boolean aggregate) throws IOException { - AggregateIterator iterator = new AggregateIterator(); + AggregateIterator 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 implements Iterator { - LinkedList> enums = new LinkedList>(); + LinkedList> enums = new LinkedList<>(); Enumeration cur = null; E next = null; - Set loaded = new HashSet(); + Set loaded = new HashSet<>(); public AggregateIterator addEnumeration(Enumeration 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 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 getResources(String resourceName, Class callingClass, boolean aggregate) + public static Iterator 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 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 getResourceFiles(String path) throws IOException { - List 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{ - - /** - * - */ - private static final long serialVersionUID = 8365348398621906220L; - - public List getNames(){ - final List names=new ArrayList(); - 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/OdluxBundleLoaderImpl.java b/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleLoaderImpl.java deleted file mode 100644 index 5b15be35c..000000000 --- a/sdnr/wt/odlux/core/model/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/model/bundles/OdluxBundleLoaderImpl.java +++ /dev/null @@ -1,62 +0,0 @@ -/******************************************************************************* - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - ******************************************************************************/ -package org.onap.ccsdk.features.sdnr.wt.odlux.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 bundles; - - public synchronized List getBundles() { - return this.bundles; - } - - public OdluxBundleLoaderImpl() { - this.bundles = Collections.synchronizedList(new ArrayList()); - 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"); - - } - -} 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 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 @@ -57,6 +57,11 @@ javax.servlet javax.servlet-api + + + org.mockito + mockito-core + test junit 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 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 getLoadedBundles() { - List bundles = OdluxBundleLoaderImpl.getInstance().getBundles(); - List list = new ArrayList(); - bundles.sort(sortorderbundlecomparator); - for (OdluxBundle b : bundles) { - list.add(b.getBundleName()); - } - list.add(this.getBundleName()); - return list; - } + @Override + public String getResourceFileContent(String fn, List bundleNames) { + return loadFileContent(this.getResource(fn),bundleNames); + } - private final Comparator sortorderbundlecomparator = new Comparator() { + private static String loadFileContent(URL url, List 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 bundleNames) { - return this.loadFileContent(this.getResource(fn),bundleNames); - } - public Comparator 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 bundles; + private ConcurrentSkipListSet bundles2; + private Comparator 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 getBundleSorter() { + return this.sortorderbundlecomparator; + } + + + public List getLoadedBundles(String myBundleName) { + List list = new ArrayList<>(); + for (OdluxBundle b : bundles2) { + list.add(b.getBundleName()); + } + list.add(myBundleName); + return list; + } + + private List getBundleNames(String myBundleName) { + final List 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 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 getBundleNames(final List bundles) { - final List names = new ArrayList(); - 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 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 it = bundles.iterator(); - while (it.hasNext()) { - OdluxBundle b = it.next(); - if (b.hasResource(fn)) { - LOG.debug("found res in " + b.getBundleName()); - fileContent = b.getResourceFileContent(fn); - break; - } - } - } - } - if (fileContent != null) { - LOG.debug("found " + fn + " in res. write to output stream"); - resp.setStatus(200); - OutputStream os = resp.getOutputStream(); - os.write(fileContent.getBytes(java.nio.charset.StandardCharsets.UTF_8)); - os.flush(); - } else { - LOG.debug("file " + fn + " not found in res."); - resp.setStatus(404); + if (fileContent != null) { + LOG.debug("found " + fn + " in res. write to output stream"); + resp.setStatus(200); + OutputStream os = resp.getOutputStream(); + os.write(fileContent.getBytes(java.nio.charset.StandardCharsets.UTF_8)); + os.flush(); + os.close(); + } else { + LOG.debug("file " + fn + " not found in res."); + resp.setStatus(404); - } - } + } + } - public String loadFileContent(String filename) { - return this.indexBundle.getResourceFileContent(filename); - } + public String loadFileContent(String filename) { + return this.indexBundle.getResourceFileContent(filename); + } } diff --git a/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/RootServlet.java b/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/RootServlet.java deleted file mode 100644 index fa49536ca..000000000 --- a/sdnr/wt/odlux/core/provider/src/main/java/org/onap/ccsdk/features/sdnr/wt/odlux/RootServlet.java +++ /dev/null @@ -1,43 +0,0 @@ -/******************************************************************************* - * ============LICENSE_START======================================================================== - * ONAP : ccsdk feature sdnr wt - * ================================================================================================= - * Copyright (C) 2019 highstreet technologies GmbH Intellectual Property. All rights reserved. - * ================================================================================================= - * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except - * in compliance with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License - * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express - * or implied. See the License for the specific language governing permissions and limitations under - * the License. - * ============LICENSE_END========================================================================== - ******************************************************************************/ -package org.onap.ccsdk.features.sdnr.wt.odlux; - -import java.io.IOException; -import javax.servlet.ServletException; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -public class RootServlet extends HttpServlet { - - - /** - * - */ - private static final long serialVersionUID = -2622614831559561459L; - private static Logger LOG = LoggerFactory.getLogger(RootServlet.class); - - @Override - protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException { - - LOG.debug("redirect to index2.html"); - resp.sendRedirect("index2.html"); - } -} diff --git a/sdnr/wt/odlux/core/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml b/sdnr/wt/odlux/core/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml index bf726ac93..76be14512 100644 --- a/sdnr/wt/odlux/core/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml +++ b/sdnr/wt/odlux/core/provider/src/main/resources/OSGI-INF/blueprint/blueprint.xml @@ -13,16 +13,6 @@ xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"> - - - - - - - - - - @@ -33,8 +23,7 @@ xmlns:jaxrs="http://cxf.apache.org/blueprint/jaxrs"> - - + - + 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/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestLoadResources.java b/sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestLoadResources.java new file mode 100644 index 000000000..3c9ad4308 --- /dev/null +++ b/sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestLoadResources.java @@ -0,0 +1,46 @@ +/******************************************************************************* + * ============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.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()); + } + @Test + public void test2() { + + } + +} diff --git a/sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestRedirect.java b/sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestRedirect.java new file mode 100644 index 000000000..78d5eb8fe --- /dev/null +++ b/sdnr/wt/odlux/core/provider/src/test/java/org/onap/ccsdk/features/sdnr/odlux/test/TestRedirect.java @@ -0,0 +1,57 @@ +/******************************************************************************* + * ============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 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.HttpServletRequest; +import javax.servlet.http.HttpServletResponse; + +public class TestRedirect { + + private static final int RESPONSECODE_REDIRECT = 301; + + @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); + } + } + +} 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 @@ + + + + + + + + + O D L UX + + + +
+ + + + + + \ 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 @@ + + + + + + + + + O D L UX + + + +
+ + + + + + \ 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 @@ + + + + + + + + + O D L UX + + + +
+ + + + + + \ No newline at end of file -- cgit 1.2.3-korg