use of org.wso2.siddhi.core.stream.input.source.Source in project carbon-apimgt by wso2.
the class SampleTestObjectCreator method createDefaultSiddhiAppforSubscriptionPolicy.
public static String createDefaultSiddhiAppforSubscriptionPolicy() {
SubscriptionPolicy policy = createDefaultSubscriptionPolicy();
RequestCountLimit limit = (RequestCountLimit) policy.getDefaultQuotaPolicy().getLimit();
String siddhiApp = "@App:name('subscription_" + policy.getPolicyName() + "')\n" + "\n@App:description('ExecutionPlan for subscription_" + policy.getPolicyName() + "')\n" + "\n@source(type='inMemory', topic='apim', @map(type='passThrough'))\n" + "define stream RequestStream (messageID string, appKey string, appTier string," + " subscriptionKey string," + " apiKey string, apiTier string, subscriptionTier string, resourceKey string, resourceTier string," + " userId string, apiContext string, apiVersion string, appTenant string, apiTenant string, " + "appId string, apiName string, propertiesMap string);\n" + "\n@sink(type='jms', @map(type='text'),\n" + "factory.initial='org.wso2.andes.jndi.PropertiesFileInitialContextFactory'," + " provider.url='tcp://localhost:5672', destination='TEST.FOO', connection.factory." + "type='topic',\n" + "connection.factory.jndi.name='TopicConnectionFactory')\n" + "define stream GlobalThrottleStream (throttleKey string, isThrottled bool" + ", expiryTimeStamp long);\n" + "\nFROM RequestStream\n" + "SELECT messageID, (subscriptionTier == '" + policy.getPolicyName() + "')" + " AS isEligible, subscriptionKey AS throttleKey, propertiesMap\n" + "INSERT INTO EligibilityStream;\n" + "\nFROM EligibilityStream[isEligible==true]#throttler:timeBatch(" + policy.getDefaultQuotaPolicy().getLimit().getUnitTime() + " " + policy.getDefaultQuotaPolicy().getLimit().getTimeUnit() + ", 0)\n" + "select throttleKey, (count(messageID) >= " + limit.getRequestCount() + ")" + " as isThrottled, expiryTimeStamp group by throttleKey\n" + "INSERT ALL EVENTS into ResultStream;\n" + "\nfrom ResultStream#throttler:emitOnStateChange(throttleKey, isThrottled)" + " select * " + "insert into GlobalThrottleStream;\n";
return siddhiApp;
}
use of org.wso2.siddhi.core.stream.input.source.Source in project carbon-apimgt by wso2.
the class SampleTestObjectCreator method createDefaultCustomPolicySiddhiApp.
public static String createDefaultCustomPolicySiddhiApp() {
CustomPolicy policy = createDefaultCustomPolicy();
String siddhiApp = "@App:name('custom_" + policy.getPolicyName() + "')" + "\n@App:description('ExecutionPlan for custom_" + policy.getPolicyName() + "')\n" + "\n@source(type='inMemory', topic='apim', @map(type='passThrough'))\n" + "define stream RequestStream (messageID string, appKey string, appTier string, " + "subscriptionKey string, apiKey string, apiTier string, subscriptionTier string," + " resourceKey string, resourceTier string, userId string, apiContext string, " + "apiVersion string, appTenant string, apiTenant string, appId string, apiName string, " + "propertiesMap string);\n" + "\n@sink(type='jms', @map(type='text'),\n" + "factory.initial='org.wso2.andes.jndi.PropertiesFileInitialContextFactory'," + " provider.url='tcp://localhost:5672', destination='TEST.FOO'," + " connection.factory.type='topic',\n" + "connection.factory.jndi.name='TopicConnectionFactory')\n" + "define stream GlobalThrottleStream (throttleKey string, isThrottled bool, " + "expiryTimeStamp long);\n" + "\n" + policy.getSiddhiQuery() + "\n" + "\nfrom ResultStream#throttler:emitOnStateChange(throttleKey, isThrottled)" + "\nselect *\n" + "insert into GlobalThrottleStream;\n";
return siddhiApp;
}
use of org.wso2.siddhi.core.stream.input.source.Source in project carbon-apimgt by wso2.
the class ApisApiServiceImpl method apisApiIdDocumentsDocumentIdContentGet.
/**
* Retrieves the content of a particular document
*
* @param apiId UUID of API
* @param documentId UUID of the document
* @param ifNoneMatch If-None-Match header value
* @param ifModifiedSince If-Modified-Since header value
* @param request msf4j request object
* @return Content of the document
* @throws NotFoundException When the particular resource does not exist in the system
*/
@Override
public Response apisApiIdDocumentsDocumentIdContentGet(String apiId, String documentId, String ifNoneMatch, String ifModifiedSince, Request request) throws NotFoundException {
String username = RestApiUtil.getLoggedInUsername(request);
try {
APIPublisher apiPublisher = RestAPIPublisherUtil.getApiPublisher(username);
String existingFingerprint = apisApiIdDocumentsDocumentIdContentGetFingerprint(apiId, documentId, ifNoneMatch, ifModifiedSince, request);
if (!StringUtils.isEmpty(ifNoneMatch) && !StringUtils.isEmpty(existingFingerprint) && ifNoneMatch.contains(existingFingerprint)) {
return Response.notModified().build();
}
DocumentContent documentationContent = apiPublisher.getDocumentationContent(documentId);
DocumentInfo documentInfo = documentationContent.getDocumentInfo();
if (DocumentInfo.SourceType.FILE.equals(documentInfo.getSourceType())) {
String filename = documentInfo.getFileName();
return Response.ok(documentationContent.getFileContent()).header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_OCTET_STREAM_TYPE).header(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=\"" + filename + "\"").header(HttpHeaders.ETAG, "\"" + existingFingerprint + "\"").build();
} else if (DocumentInfo.SourceType.INLINE.equals(documentInfo.getSourceType())) {
String content = documentationContent.getInlineContent();
return Response.ok(content).header(RestApiConstants.HEADER_CONTENT_TYPE, MediaType.TEXT_PLAIN).header(HttpHeaders.ETAG, "\"" + existingFingerprint + "\"").build();
} else if (DocumentInfo.SourceType.URL.equals(documentInfo.getSourceType())) {
String sourceUrl = documentInfo.getSourceURL();
return Response.seeOther(new URI(sourceUrl)).header(HttpHeaders.ETAG, "\"" + existingFingerprint + "\"").build();
}
} catch (APIManagementException e) {
String errorMessage = "Error while retrieving document " + documentId + " of the API " + apiId;
HashMap<String, String> paramList = new HashMap<String, String>();
paramList.put(APIMgtConstants.ExceptionsConstants.API_ID, apiId);
ErrorDTO errorDTO = RestApiUtil.getErrorDTO(e.getErrorHandler(), paramList);
log.error(errorMessage, e);
return Response.status(e.getErrorHandler().getHttpStatusCode()).entity(errorDTO).build();
} catch (URISyntaxException e) {
String errorMessage = "Error while retrieving source URI location of " + documentId;
ErrorDTO errorDTO = RestApiUtil.getErrorDTO(errorMessage, 900313L, errorMessage);
log.error(errorMessage, e);
return Response.status(Response.Status.INTERNAL_SERVER_ERROR).entity(errorDTO).build();
}
return null;
}
use of org.wso2.siddhi.core.stream.input.source.Source in project carbon-apimgt by wso2.
the class AbstractAPIManagerTestCase method testGetDocumentationContentInlineWithNullContent.
@Test(description = "Getting Documentation content when source type is INLINE and inline content is null", expectedExceptions = APIManagementException.class)
public void testGetDocumentationContentInlineWithNullContent() throws APIManagementException {
ApiDAO apiDAO = mock(ApiDAO.class);
AbstractAPIManager apiPublisher = getApiPublisherImpl(apiDAO);
DocumentInfo documentInfo = SampleTestObjectCreator.createDefaultDocumentationInfo();
when(apiDAO.getDocumentInfo(DOC_ID)).thenReturn(documentInfo);
when(apiDAO.getDocumentInlineContent(DOC_ID)).thenReturn(null);
apiPublisher.getDocumentationContent(DOC_ID);
verify(apiDAO, times(0)).getDocumentInlineContent(DOC_ID);
}
use of org.wso2.siddhi.core.stream.input.source.Source in project carbon-apimgt by wso2.
the class AbstractAPIManagerTestCase method testGetDocumentationContentFile.
@Test(description = "Getting Documentation content when source type is FILE")
public void testGetDocumentationContentFile() throws APIManagementException {
ApiDAO apiDAO = mock(ApiDAO.class);
AbstractAPIManager apiPublisher = getApiPublisherImpl(apiDAO);
DocumentInfo.Builder builder = new DocumentInfo.Builder();
builder.name("CalculatorDoc");
builder.sourceType(DocumentInfo.SourceType.FILE);
DocumentInfo documentInfo = builder.build();
when(apiDAO.getDocumentInfo(DOC_ID)).thenReturn(documentInfo);
String stream = "This is sample file content";
InputStream inputStream = new ByteArrayInputStream(stream.getBytes());
when(apiDAO.getDocumentFileContent(DOC_ID)).thenReturn(inputStream);
apiPublisher.getDocumentationContent(DOC_ID);
verify(apiDAO, times(1)).getDocumentFileContent(DOC_ID);
}
Aggregations