wso2 / carbon-governance Goto Github PK
View Code? Open in Web Editor NEWjagery
License: Apache License 2.0
jagery
License: Apache License 2.0
Description:
Improve findGovernanceArtifactConfiguration
method to reload the artifacts configurations from DB in case it fails to find an artifact configuration for a given key
Suggested Assignees:
@cnapagoda , @daneshk
Related Issues:
PUT operation of Governance REST API will be wiped off previously added meta data.
Intermittently artifact configurations not loaded properly for the tenant users. System gives a warning like below when try to list assets in api store and publisher UI.
TID: [xxx] [] [2017-08-09 23:33:18,687] xxxxx@xxxx [xxxx] [PUBSTORE] WARN
{org.wso2.carbon.apimgt.impl.utils.APIUtil} - Couldn't find GovernanceArtifactConfiguration of RXT: api. Tenant id set in registry : xxxx, Tenant domain set in PrivilegedCarbonContext: xxxx {org.wso2.carbon.apimgt.impl.utils.APIUtil}
When there are many life cycle configured in the system, lifecycle configuration page loading time will increases depends on the db query execution time. Main delay is in the lifecycle usage check where we execute db queries to find out the usage of each lifecycle.
Replace db query check with solr query search. Then we can reduce certain number of page loading time.
Description:
Current governance search does not support searching a property and attibute at once.
Suggested Labels:
Bug
Suggested Assignees:
N/A
Affected Product Version: 4.7.15
OS, DB, other environment details and versions: N/A
Steps to reproduce:
There is no way to do a search with property and attribute at once, unless the attribute is overview_name
Related Issues:
N/A
Description:
need to improve the code by removing hard coded string constants .
Description:
I am trying to enrich this handler (which protects APIs with Basic
Authentication) with the ability to read credentials from the governance registry. I thus used retrieveGovernanceArtifactByPath
from GovernanceUtils
.
import org.wso2.carbon.governance.api.common.dataobjects.GovernanceArtifact;
import org.wso2.carbon.governance.api.util.GovernanceUtils;
import org.wso2.carbon.registry.core.Registry;
import org.wso2.carbon.registry.core.config.RegistryContext;
import org.wso2.carbon.registry.core.exceptions.RegistryException;
.....
public boolean processSecurity(String credentials) {
String decodedCredentials = new String(new Base64().decode(credentials.getBytes()));
String userName = decodedCredentials.split(":")[0];
String password = decodedCredentials.split(":")[1];
/*here: */
try {
Registry reg = RegistryContext.getBaseInstance().getEmbeddedRegistryService().getConfigSystemRegistry();
GovernanceArtifact userNameFromReg = GovernanceUtils.retrieveGovernanceArtifactByPath(reg, "/_system/governance/users/ei_user");
GovernanceArtifact userPassFromReg = GovernanceUtils.retrieveGovernanceArtifactByPath(reg, "/_system/governance/users/ei_password");
if (userNameFromReg.getAttribute(".").equals(userName) && userPassFromReg.getAttribute(".").equals(password)) {
return true;
} else {
return false;
}
} catch (RegistryException e) {
e.printStackTrace();
return false;
}
<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/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>some_company</groupId>
<artifactId>REST-BasicAuth-Handler</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<name>REST-basic-auth-handler</name>
<url>http://maven.apache.org</url>
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
</properties>
<dependencies>
<dependency>
<groupId>org.apache.synapse</groupId>
<artifactId>synapse-core</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.apache.synapse</groupId>
<artifactId>synapse-extensions</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.wso2.carbon.governance</groupId>
<artifactId>org.wso2.carbon.governance.api</artifactId>
<version>4.8.19</version>
</dependency>
<dependency>
<groupId>org.wso2.carbon</groupId>
<artifactId>org.wso2.carbon.registry.core</artifactId>
<version>4.4.26</version>
</dependency>
</dependencies>
</project>
Compilation works OK, the .jar
is loaded from $EI_HOME/lib
but I get the following error:
[2020-10-19 15:56:49,592] [] ERROR - NativeWorkerPool Uncaught exception
java.lang.NoClassDefFoundError: org/wso2/carbon/governance/api/util/GovernanceUtils
at org.vicat.rest.BasicAuthHandler.processSecurity(BasicAuthHandler.java:78)
at org.vicat.rest.BasicAuthHandler.handleRequest(BasicAuthHandler.java:49)
at org.apache.synapse.rest.API.process(API.java:357)
at org.apache.synapse.rest.RESTRequestHandler.apiProcess(RESTRequestHandler.java:135)
at org.apache.synapse.rest.RESTRequestHandler.dispatchToAPI(RESTRequestHandler.java:113)
at org.apache.synapse.rest.RESTRequestHandler.process(RESTRequestHandler.java:71)
at org.apache.synapse.core.axis2.Axis2SynapseEnvironment.injectMessage(Axis2SynapseEnvironment.java:325)
at org.apache.synapse.core.axis2.SynapseMessageReceiver.receive(SynapseMessageReceiver.java:92)
at org.apache.axis2.engine.AxisEngine.receive(AxisEngine.java:180)
at org.apache.synapse.transport.passthru.ServerWorker.processNonEntityEnclosingRESTHandler(ServerWorker.java:338)
at org.apache.synapse.transport.passthru.ServerWorker.run(ServerWorker.java:159)
at org.apache.axis2.transport.base.threads.NativeWorkerPool$1.run(NativeWorkerPool.java:172)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at java.lang.Thread.run(Thread.java:748)
Caused by: java.lang.ClassNotFoundException: org.wso2.carbon.governance.api.util.GovernanceUtils cannot be found by REST_BasicAuth_Handler_1.0_SNAPSHOT_1.0.0
at org.eclipse.osgi.internal.loader.BundleLoader.findClassInternal(BundleLoader.java:501)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:421)
at org.eclipse.osgi.internal.loader.BundleLoader.findClass(BundleLoader.java:412)
at org.eclipse.osgi.internal.baseadaptor.DefaultClassLoader.loadClass(DefaultClassLoader.java:107)
at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
I also tried with to package all dependencies in a fat jar using maven-assembly-plugin, made sure that GovernanceUtils
was present in the .jar
: still the very same error.
Suggested Labels:
udf,registry,library
Affected Product Version:
WSO2-EI 6.5.0
Description:
We have granted write permission to registry resource (/_system/governance/trunk) for secondary user store role, but while trying to create asset using governance rest api, we get following error
[2018-05-10 15:18:09,729] ERROR {org.wso2.carbon.registry.core.jdbc.Repository} - Failed to add new resource. User pasan does not have authorization to update the collection /_system/governance/trunk.
[2018-05-10 15:18:09,731] ERROR {org.wso2.carbon.governance.api.common.GovernanceArtifactManager} - Failed to add artifact: artifact id: dd88831d-e432-4e8b-ac3c-6eac8ed9ec26. Failed to add new resource. User pasan does not have authorization to update the collection /_system/governance/trunk.
org.wso2.carbon.registry.core.exceptions.RegistryException: Failed to add new resource. User pasan does not have authorization to update the collection /_system/governance/trunk.
at org.wso2.carbon.registry.core.jdbc.Repository.addEmptyCollection(Repository.java:1167)
at org.wso2.carbon.registry.core.jdbc.Repository.add(Repository.java:1013)
at org.wso2.carbon.registry.core.jdbc.Repository.put(Repository.java:305)
at org.wso2.carbon.registry.core.jdbc.EmbeddedRegistry.put(EmbeddedRegistry.java:709)
at org.wso2.carbon.registry.core.caching.CacheBackedRegistry.put(CacheBackedRegistry.java:591)
at org.wso2.carbon.registry.core.session.UserRegistry.putInternal(UserRegistry.java:828)
at org.wso2.carbon.registry.core.session.UserRegistry.access$1000(UserRegistry.java:61)
at org.wso2.carbon.registry.core.session.UserRegistry$11.run(UserRegistry.java:804)
at org.wso2.carbon.registry.core.session.UserRegistry$11.run(UserRegistry.java:801)
at java.security.AccessController.doPrivileged(Native Method)
at org.wso2.carbon.registry.core.session.UserRegistry.put(UserRegistry.java:801)
at org.wso2.carbon.governance.api.common.GovernanceArtifactManager.addGovernanceArtifact(GovernanceArtifactManager.java:208)
at org.wso2.carbon.governance.api.generic.GenericArtifactManager.addGenericArtifact(GenericArtifactManager.java:218)
at org.wso2.carbon.governance.rest.api.Asset.createGovernanceAsset(Asset.java:505)
at org.wso2.carbon.governance.rest.api.Asset.createAsset(Asset.java:172)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.apache.cxf.service.invoker.AbstractInvoker.performInvocation(AbstractInvoker.java:188)
at org.apache.cxf.service.invoker.AbstractInvoker.invoke(AbstractInvoker.java:104)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:204)
at org.apache.cxf.jaxrs.JAXRSInvoker.invoke(JAXRSInvoker.java:101)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor$1.run(ServiceInvokerInterceptor.java:58)
at org.apache.cxf.interceptor.ServiceInvokerInterceptor.handleMessage(ServiceInvokerInterceptor.java:94)
at org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:272)
at org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
at org.apache.cxf.transport.http.AbstractHTTPDestination.invoke(AbstractHTTPDestination.java:249)
at org.apache.cxf.transport.servlet.ServletController.invokeDestination(ServletController.java:248)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:222)
at org.apache.cxf.transport.servlet.ServletController.invoke(ServletController.java:153)
at org.apache.cxf.transport.servlet.CXFNonSpringServlet.invoke(CXFNonSpringServlet.java:171)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.handleRequest(AbstractHTTPServlet.java:289)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.doPost(AbstractHTTPServlet.java:209)
at javax.servlet.http.HttpServlet.service(HttpServlet.java:650)
at org.apache.cxf.transport.servlet.AbstractHTTPServlet.service(AbstractHTTPServlet.java:265)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:220)
at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:122)
at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:614)
at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:169)
at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:103)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.continueInvocation(CompositeValve.java:99)
at org.wso2.carbon.tomcat.ext.valves.CarbonTomcatValve$1.invoke(CarbonTomcatValve.java:47)
at org.wso2.carbon.webapp.mgt.TenantLazyLoaderValve.invoke(TenantLazyLoaderValve.java:57)
at org.wso2.carbon.tomcat.ext.valves.TomcatValveContainer.invokeValves(TomcatValveContainer.java:47)
at org.wso2.carbon.tomcat.ext.valves.CompositeValve.invoke(CompositeValve.java:62)
at org.wso2.carbon.tomcat.ext.valves.CarbonStuckThreadDetectionValve.invoke(CarbonStuckThreadDetectionValve.java:159)
at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:956)
at org.wso2.carbon.tomcat.ext.valves.CarbonContextCreatorValve.invoke(CarbonContextCreatorValve.java:57)
at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:436)
at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1078)
at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:625)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1749)
at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.run(NioEndpoint.java:1708)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
at java.lang.Thread.run(Thread.java:748)
Suggested Labels:
Suggested Assignees:
Affected Product Version:
Governance Registry 5.3.0
OS, DB, other environment details and versions:
Steps to reproduce:
Set up GREG 5.3.0 with JDBC store as primary and Active Directory (read-only) as the secondary user store
Grant WRITE permissions to registry resource ("/_system/governance/trunk") for a particular Role in secondary user store
Try to add a new asset (in "/_system/governance/trunk") using Governance REST API
Related Issues:
Description:
Doing a property search on governance registry gives results with missing values, if the pagination context is initiated before the search.
Suggested Labels:
Bug
Suggested Assignees:
N/A
Affected Product Version: 4.7.0
OS, DB, other environment details and versions: N.A
Steps to reproduce:
Related Issues:
N/A
Description:
If assert has multivalue tables, Unable to add and retrieve multi-value(unbounded) attributes using Governance REST API
Suggested Labels:
Suggested Assignees:
cnapagodaAffected Product Version:
5.3.0, 5.4.0
OS, DB, other environment details and versions:
Steps to reproduce:
Related Issues:
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.