Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
CONF
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
UvA
CONF
Commits
d10f3136
Commit
d10f3136
authored
Feb 08, 2017
by
Spiros Koulouzis
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
split packages
parents
Changes
21
Show whitespace changes
Inline
Side-by-side
Showing
21 changed files
with
1073 additions
and
0 deletions
+1073
-0
nb-configuration.xml
drip-api/nb-configuration.xml
+19
-0
pom.xml
drip-api/pom.xml
+157
-0
AppConfig.java
...api/src/main/java/nl/uva/sne/drip/api/conf/AppConfig.java
+46
-0
WebAppInitializer.java
...main/java/nl/uva/sne/drip/api/conf/WebAppInitializer.java
+36
-0
FileArgument.java
.../src/main/java/nl/uva/sne/drip/api/rest/FileArgument.java
+76
-0
IFileArgument.java
...src/main/java/nl/uva/sne/drip/api/rest/IFileArgument.java
+40
-0
UploadToscaController.java
.../java/nl/uva/sne/drip/api/rest/UploadToscaController.java
+127
-0
DRIPComponent.java
.../src/main/java/nl/uva/sne/drip/api/rpc/DRIPComponent.java
+28
-0
Planner.java
drip-api/src/main/java/nl/uva/sne/drip/api/rpc/Planner.java
+97
-0
drip-context-db.xml
drip-api/src/main/resources/drip-context-db.xml
+22
-0
drip-context-rest.xml
drip-api/src/main/resources/drip-context-rest.xml
+15
-0
drip.properties
drip-api/src/main/resources/drip.properties
+2
-0
log4j.properties
drip-api/src/main/resources/log4j.properties
+32
-0
context.xml
drip-api/src/main/webapp/META-INF/context.xml
+2
-0
index.jsp
drip-api/src/main/webapp/index.jsp
+13
-0
RESTTest.java
drip-api/src/test/java/nl/uva/sne/drip/rest/RESTTest.java
+87
-0
pom.xml
drip-commons/pom.xml
+85
-0
IRequest.java
...src/main/java/nl/uva/sne/drip/commons/types/IRequest.java
+48
-0
Request.java
.../src/main/java/nl/uva/sne/drip/commons/types/Request.java
+93
-0
RequestRepository.java
...java/nl/uva/sne/drip/commons/types/RequestRepository.java
+32
-0
pom.xml
pom.xml
+16
-0
No files found.
drip-api/nb-configuration.xml
0 → 100644
View file @
d10f3136
<?xml version="1.0" encoding="UTF-8"?>
<project-shared-configuration>
<!--
This file contains additional configuration written by modules in the NetBeans IDE.
The configuration is intended to be shared among all the users of project and
therefore it is assumed to be part of version control checkout.
Without this configuration present, some functionality in the IDE may be limited or fail altogether.
-->
<properties
xmlns=
"http://www.netbeans.org/ns/maven-properties-data/1"
>
<!--
Properties that influence various parts of the IDE, especially code formatting and the like.
You can copy and paste the single properties, into the pom.xml file and the IDE will pick them up.
That way multiple projects can share the same settings (useful for formatting rules for example).
Any value defined here will override the pom.xml file value but is only applicable to the current project.
-->
<org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_j2eeVersion>
1.6-web
</org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_j2eeVersion>
<org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_deploy_2e_server>
Tomcat
</org-netbeans-modules-maven-j2ee.netbeans_2e_hint_2e_deploy_2e_server>
</properties>
</project-shared-configuration>
drip-api/pom.xml
0 → 100644
View file @
d10f3136
<?xml version="1.0" encoding="UTF-8"?>
<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>
<parent>
<artifactId>
drip
</artifactId>
<groupId>
nl.uva.sne.drip
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<groupId>
nl.uva.sne.drip
</groupId>
<artifactId>
drip-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<packaging>
war
</packaging>
<name>
drip-api
</name>
<properties>
<endorsed.dir>
${project.build.directory}/endorsed
</endorsed.dir>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
<skipTests>
true
</skipTests>
</properties>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
<version>
1.4.3.RELEASE
</version>
</dependency>
<dependency>
<groupId>
com.fasterxml.jackson.core
</groupId>
<artifactId>
jackson-databind
</artifactId>
<version>
2.8.6
</version>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-context
</artifactId>
<version>
4.3.5.RELEASE
</version>
<type>
jar
</type>
</dependency>
<dependency>
<groupId>
com.rabbitmq
</groupId>
<artifactId>
amqp-client
</artifactId>
<version>
4.0.2
</version>
</dependency>
<dependency>
<groupId>
org.springframework.data
</groupId>
<artifactId>
spring-data-mongodb
</artifactId>
<version>
1.8.0.RELEASE
</version>
<type>
jar
</type>
</dependency>
<dependency>
<groupId>
commons-fileupload
</groupId>
<artifactId>
commons-fileupload
</artifactId>
<version>
1.3.2
</version>
</dependency>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<version>
4.12
</version>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.hamcrest
</groupId>
<artifactId>
hamcrest-core
</artifactId>
<version>
1.3
</version>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpmime
</artifactId>
<version>
4.5.2
</version>
<scope>
test
</scope>
<type>
jar
</type>
</dependency>
<dependency>
<groupId>
org.springframework.data
</groupId>
<artifactId>
spring-data-rest-core
</artifactId>
<version>
2.5.6.RELEASE
</version>
<type>
jar
</type>
</dependency>
<dependency>
<groupId>
nl.uva.sne.drip
</groupId>
<artifactId>
drip-commons
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<type>
jar
</type>
</dependency>
<dependency>
<groupId>
nl.uva.sne.drip
</groupId>
<artifactId>
drip-api
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<type>
war
</type>
</dependency>
<dependency>
<groupId>
javax
</groupId>
<artifactId>
javaee-web-api
</artifactId>
<version>
6.0
</version>
<scope>
provided
</scope>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-compiler-plugin
</artifactId>
<version>
2.3.2
</version>
<configuration>
<source>
1.7
</source>
<target>
1.7
</target>
<compilerArguments>
<endorseddirs>
${endorsed.dir}
</endorseddirs>
</compilerArguments>
</configuration>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-war-plugin
</artifactId>
<version>
2.1.1
</version>
<configuration>
<failOnMissingWebXml>
false
</failOnMissingWebXml>
</configuration>
</plugin>
<plugin>
<groupId>
org.apache.maven.plugins
</groupId>
<artifactId>
maven-dependency-plugin
</artifactId>
<version>
2.1
</version>
<executions>
<execution>
<phase>
validate
</phase>
<goals>
<goal>
copy
</goal>
</goals>
<configuration>
<outputDirectory>
${endorsed.dir}
</outputDirectory>
<silent>
true
</silent>
<artifactItems>
<artifactItem>
<groupId>
javax
</groupId>
<artifactId>
javaee-endorsed-api
</artifactId>
<version>
6.0
</version>
<type>
jar
</type>
</artifactItem>
</artifactItems>
</configuration>
</execution>
</executions>
</plugin>
</plugins>
</build>
</project>
drip-api/src/main/java/nl/uva/sne/drip/api/conf/AppConfig.java
0 → 100644
View file @
d10f3136
/*
* Copyright 2016 S. Koulouzis
*
* 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.
*/
package
nl
.
uva
.
sne
.
drip
.
api
.
conf
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.ComponentScan
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.context.annotation.PropertySource
;
import
org.springframework.context.annotation.PropertySources
;
import
org.springframework.web.multipart.commons.CommonsMultipartResolver
;
import
org.springframework.web.servlet.config.annotation.EnableWebMvc
;
@Configuration
@ComponentScan
(
"nl.uva.sne.drip"
)
//@PropertySource("classpath:drip.properties")
@PropertySources
({
@PropertySource
(
value
=
"classpath:drip.properties"
,
ignoreResourceNotFound
=
true
),
@PropertySource
(
value
=
"file:etc/drip.properties"
,
ignoreResourceNotFound
=
true
)
})
@EnableWebMvc
public
class
AppConfig
{
@Bean
(
name
=
"multipartResolver"
)
public
CommonsMultipartResolver
createMultipartResolver
()
{
CommonsMultipartResolver
resolver
=
new
CommonsMultipartResolver
();
resolver
.
setDefaultEncoding
(
"utf-8"
);
// resolver.setMaxInMemorySize(0);
//resolver.setMaxUploadSize(0);
//resolver.setMaxUploadSizePerFile(0);
return
resolver
;
}
}
drip-api/src/main/java/nl/uva/sne/drip/api/conf/WebAppInitializer.java
0 → 100644
View file @
d10f3136
/*
* Copyright 2016 S. Koulouzis
*
* 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.
*/
package
nl
.
uva
.
sne
.
drip
.
api
.
conf
;
import
javax.servlet.ServletContext
;
import
javax.servlet.ServletException
;
import
javax.servlet.ServletRegistration.Dynamic
;
import
org.springframework.web.WebApplicationInitializer
;
import
org.springframework.web.context.support.AnnotationConfigWebApplicationContext
;
import
org.springframework.web.servlet.DispatcherServlet
;
public
class
WebAppInitializer
implements
WebApplicationInitializer
{
@Override
public
void
onStartup
(
ServletContext
servletContext
)
throws
ServletException
{
AnnotationConfigWebApplicationContext
ctx
=
new
AnnotationConfigWebApplicationContext
();
ctx
.
register
(
AppConfig
.
class
);
ctx
.
setServletContext
(
servletContext
);
Dynamic
dynamic
=
servletContext
.
addServlet
(
"dispatcher"
,
new
DispatcherServlet
(
ctx
));
dynamic
.
addMapping
(
"/"
);
dynamic
.
setLoadOnStartup
(
1
);
}
}
drip-api/src/main/java/nl/uva/sne/drip/api/rest/FileArgument.java
0 → 100644
View file @
d10f3136
/*
* Copyright 2017 S. Koulouzis.
*
* 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.
*/
package
nl
.
uva
.
sne
.
drip
.
api
.
rest
;
import
java.io.Serializable
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
/**
*
* @author S. Koulouzis.
*/
class
FileArgument
implements
IFileArgument
,
Serializable
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
AUTO
)
private
String
id
;
private
String
url
;
private
String
encoding
;
private
String
contents
;
@Override
public
void
setID
(
String
id
)
{
this
.
id
=
id
;
}
@Override
public
String
getID
()
{
return
this
.
id
;
}
@Override
public
String
getURL
()
{
return
this
.
url
;
}
@Override
public
void
setURL
(
String
url
)
{
this
.
url
=
url
;
}
@Override
public
String
getEncoding
()
{
return
this
.
encoding
;
}
@Override
public
void
setEncoding
(
String
encoding
)
{
this
.
encoding
=
encoding
;
}
@Override
public
String
getContents
()
{
return
this
.
contents
;
}
@Override
public
void
setContents
(
String
contents
)
{
this
.
contents
=
contents
;
}
}
drip-api/src/main/java/nl/uva/sne/drip/api/rest/IFileArgument.java
0 → 100644
View file @
d10f3136
/*
* Copyright 2017 S. Koulouzis.
*
* 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.
*/
package
nl
.
uva
.
sne
.
drip
.
api
.
rest
;
/**
*
* @author S. Koulouzis.
*/
interface
IFileArgument
{
public
void
setID
(
String
id
);
public
String
getID
();
public
String
getURL
();
public
void
setURL
(
String
url
);
public
String
getEncoding
();
public
void
setEncoding
(
String
encoding
);
public
String
getContents
();
public
void
setContents
(
String
contents
);
}
drip-api/src/main/java/nl/uva/sne/drip/api/rest/UploadToscaController.java
0 → 100644
View file @
d10f3136
/*
* Copyright 2017 S. Koulouzis.
*
* 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.
*/
package
nl
.
uva
.
sne
.
drip
.
api
.
rest
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
nl.uva.sne.drip.api.rpc.Planner
;
import
java.io.File
;
import
java.io.IOException
;
import
java.net.URL
;
import
java.nio.file.Files
;
import
java.nio.file.Paths
;
import
java.util.ArrayList
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.concurrent.TimeoutException
;
import
java.util.logging.Level
;
import
java.util.logging.Logger
;
import
javax.annotation.security.RolesAllowed
;
import
javax.ws.rs.Consumes
;
import
javax.ws.rs.GET
;
import
javax.ws.rs.PUT
;
import
javax.ws.rs.Path
;
import
javax.ws.rs.Produces
;
import
javax.ws.rs.core.Response
;
import
nl.uva.sne.drip.commons.types.IRequest
;
import
nl.uva.sne.drip.commons.types.Request
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.http.converter.json.MappingJackson2HttpMessageConverter
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMethod
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.client.RestTemplate
;
import
org.springframework.web.multipart.MultipartFile
;
/**
*
* @author S. Koulouzis
*/
@RestController
@RequestMapping
(
"/rest"
)
@Component
public
class
UploadToscaController
{
@Value
(
"${input.tosca.folder.path}"
)
private
String
inputToscaFolderPath
;
@Value
(
"${message.broker.host}"
)
private
String
messageBrokerHost
;
// curl -X POST -F "file=@DRIP/input.yaml" localhost:8080/drip-api/rest/upload
@RequestMapping
(
value
=
"/upload"
,
method
=
RequestMethod
.
POST
)
public
@ResponseBody
String
toscaUpload
(
@RequestParam
(
"file"
)
MultipartFile
file
)
{
if
(!
file
.
isEmpty
())
{
try
{
String
originalFileName
=
file
.
getOriginalFilename
();
String
name
=
originalFileName
+
System
.
currentTimeMillis
();
File
targetToscaFile
=
new
File
(
inputToscaFolderPath
+
File
.
separator
+
name
);
file
.
transferTo
(
targetToscaFile
);
Planner
planner
=
new
Planner
(
messageBrokerHost
);
Request
r
=
new
Request
();
List
args
=
new
ArrayList
();
FileArgument
fileArg
=
new
FileArgument
();
fileArg
.
setURL
(
targetToscaFile
.
toURI
().
toString
());
args
.
add
(
targetToscaFile
);
r
.
setArguments
(
args
);
r
.
setCreationDate
(
new
Date
(
System
.
currentTimeMillis
()));
r
.
setStatus
(
IRequest
.
Status
.
SUCCESS
);
String
returned
=
planner
.
plan
(
r
);
planner
.
close
();
return
"You successfully uploaded "
+
name
+
" into "
+
name
+
"-uploaded !"
;
}
catch
(
IOException
|
IllegalStateException
|
TimeoutException
|
InterruptedException
ex
)
{
Logger
.
getLogger
(
UploadToscaController
.
class
.
getName
()).
log
(
Level
.
SEVERE
,
null
,
ex
);
}
}
return
"Upload failed. 'file' was empty."
;
}
@RequestMapping
(
value
=
"/args"
,
method
=
RequestMethod
.
GET
)
public
Request
args
()
{
try
{
Request
r
=
new
Request
();
List
args
=
new
ArrayList
();
args
.
add
(
1
);
args
.
add
(
"str"
);
FileArgument
targetToscaFile
=
new
FileArgument
();
byte
[]
bytes
=
Files
.
readAllBytes
(
Paths
.
get
(
"/home/alogo/Downloads/planner_output_all.yml"
));
targetToscaFile
.
setContents
(
new
String
(
bytes
,
"UTF-8"
));
targetToscaFile
.
setEncoding
(
"UTF-8"
);
args
.
add
(
targetToscaFile
);
r
.
setArguments
(
args
);
r
.
setCreationDate
(
new
Date
(
System
.
currentTimeMillis
()));
r
.
setStatus
(
IRequest
.
Status
.
SUCCESS
);
ObjectMapper
mapper
=
new
ObjectMapper
();
String
jsonInString
=
mapper
.
writeValueAsString
(
r
);
System
.
err
.
println
(
jsonInString
);
return
r
;
}
catch
(
IOException
ex
)
{
Logger
.
getLogger
(
UploadToscaController
.
class
.
getName
()).
log
(
Level
.
SEVERE
,
null
,
ex
);
}
return
null
;
}
}
drip-api/src/main/java/nl/uva/sne/drip/api/rpc/DRIPComponent.java
0 → 100644
View file @
d10f3136
/*
* Copyright 2017 S. Koulouzis.
*
* 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.
*/
package
nl
.
uva
.
sne
.
drip
.
api
.
rpc
;
/**
*
* @author S. Koulouzis.
*/
class
DRIPComponent
{
public
DRIPComponent
(){
}
}
drip-api/src/main/java/nl/uva/sne/drip/api/rpc/Planner.java
0 → 100644
View file @
d10f3136
/*
* Copyright 2017 S. Koulouzis.
*
* 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.
*/
package
nl
.
uva
.
sne
.
drip
.
api
.
rpc
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
java.io.File
;
import
java.io.IOException
;
import
com.rabbitmq.client.AMQP
;
import
com.rabbitmq.client.Channel
;
import
com.rabbitmq.client.Connection
;
import
com.rabbitmq.client.ConnectionFactory
;
import
com.rabbitmq.client.DefaultConsumer
;
import
com.rabbitmq.client.Envelope
;
import
com.rabbitmq.client.RpcClient
;
import
java.nio.file.Files
;
import
java.nio.file.Paths
;
import
java.util.UUID
;
import
java.util.concurrent.ArrayBlockingQueue
;
import
java.util.concurrent.BlockingQueue
;
import
java.util.concurrent.TimeoutException
;
import
nl.uva.sne.drip.commons.types.Request
;
/**
*
* @author S. Koulouzis.
*/
public
class
Planner
{
private
static
final
String
REQUEST_QUEUE_NAME
=
"planner_queue"
;
private
final
Connection
connection
;
private
final
Channel
channel
;
private
final
String
replyQueueName
;
public
Planner
(
String
messageBrokerHost
)
throws
IOException
,
TimeoutException
{
ConnectionFactory
factory
=
new
ConnectionFactory
();
factory
.
setHost
(
messageBrokerHost
);
factory
.
setPort
(
AMQP
.
PROTOCOL
.
PORT
);
//factory.setUsername("guest");
//factory.setPassword("pass");
connection
=
factory
.
newConnection
();
channel
=
connection
.
createChannel
();
// create a single callback queue per client not per requests.
replyQueueName
=
channel
.
queueDeclare
().
getQueue
();
}
public
String
plan
(
Request
r
)
throws
IOException
,
TimeoutException
,
InterruptedException
{
ObjectMapper
mapper
=
new
ObjectMapper
();
String
jsonInString
=
mapper
.
writeValueAsString
(
r
);
//Build a correlation ID to distinguish responds
final
String
corrId
=
UUID
.
randomUUID
().
toString
();
AMQP
.
BasicProperties
props
=
new
AMQP
.
BasicProperties
.
Builder
()
.
correlationId
(
corrId
)
.
replyTo
(
replyQueueName
)
.
build
();
channel
.
basicPublish
(
""
,
REQUEST_QUEUE_NAME
,
props
,
jsonInString
.
getBytes
(
"UTF-8"
));
final
BlockingQueue
<
String
>
response
=
new
ArrayBlockingQueue
(
1
);
channel
.
basicConsume
(
replyQueueName
,
true
,
new
DefaultConsumer
(
channel
)
{
@Override
public
void
handleDelivery
(
String
consumerTag
,
Envelope
envelope
,
AMQP
.
BasicProperties
properties
,
byte
[]
body
)
throws
IOException
{
if
(
properties
.
getCorrelationId
().
equals
(
corrId
))
{
response
.
offer
(
new
String
(
body
,
"UTF-8"
));
}
}
});
return
response
.
take
();
}
public
void
close
()
throws
IOException
,
TimeoutException
{
if
(
channel
!=
null
&&
channel
.
isOpen
())
{
channel
.
close
();
}
if
(
connection
!=
null
&&
connection
.
isOpen
())
{
connection
.
close
();
}
}
}
drip-api/src/main/resources/drip-context-db.xml
0 → 100644
View file @
d10f3136
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns=
"http://www.springframework.org/schema/beans"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:util=
"http://www.springframework.org/schema/util"
xmlns:mongo=
"http://www.springframework.org/schema/data/mongo"
xmlns:context=
"http://www.springframework.org/schema/context"
xsi:schemaLocation=
"
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/data/mongo
http://www.springframework.org/schema/data/mongo/spring-mongo.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
>
<import
resource=
"classpath:/drip-context-rest.xml"
/>
<context:component-scan
base-package=
"nl.uva.sne.drip"
/>
</beans>
\ No newline at end of file
drip-api/src/main/resources/drip-context-rest.xml
0 → 100644
View file @
d10f3136
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns=
"http://www.springframework.org/schema/beans"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xmlns:util=
"http://www.springframework.org/schema/util"
xmlns:mongo=
"http://www.springframework.org/schema/data/mongo"
xmlns:context=
"http://www.springframework.org/schema/context"
xsi:schemaLocation=
"
http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context.xsd"
>
</beans>
\ No newline at end of file
drip-api/src/main/resources/drip.properties
0 → 100644
View file @
d10f3136
input.tosca.folder.path
=
/tmp/
message.broker.host
=
172.17.0.2
drip-api/src/main/resources/log4j.properties
0 → 100644
View file @
d10f3136
# Internal log4j configuration. This is not packaged and distributed. The using
# party is in control of its own log4j.properties.
# Root logger option
log4j.rootLogger
=
INFO, stdout
# Direct log messages to stdout
log4j.appender.stdout
=
org.apache.log4j.ConsoleAppender
log4j.appender.stdout.Target
=
System.out
log4j.appender.stdout.layout
=
org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern
=
%d{yyyy-MM-dd HH:mm:ss} %-5p %c{1}:%L - %m%n
log4j.appender.authorizationLog
=
org.apache.log4j.RollingFileAppender
log4j.appender.authorizationLog.File
=
logs/authorization.log
log4j.appender.authorizationLog.MaxFileSize
=
20MB
log4j.appender.authorizationLog.MaxBackupIndex
=
10
log4j.appender.authorizationLog.layout
=
org.apache.log4j.PatternLayout
log4j.appender.authorizationLog.layout.ConversionPattern
=
%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n
log4j.appender.authenticationLog
=
org.apache.log4j.RollingFileAppender
log4j.appender.authenticationLog.File
=
logs/authentication.log
log4j.appender.authenticationLog.MaxFileSize
=
20MB
log4j.appender.authenticationLog.MaxBackupIndex
=
10
log4j.appender.authenticationLog.layout
=
org.apache.log4j.PatternLayout
log4j.appender.authenticationLog.layout.ConversionPattern
=
%d{yyyy-MM-dd HH:mm:ss} %-5p - %m%n
log4j.category.authorizationLogger
=
TRACE, authorizationLog
#log4j.additivity.authorizationLogger=false
log4j.category.authenticationLogger
=
DEBUG, authenticationLog
#
log4j.additivity.authenticationLogger
=
false
\ No newline at end of file
drip-api/src/main/webapp/META-INF/context.xml
0 → 100644
View file @
d10f3136
<?xml version="1.0" encoding="UTF-8"?>
<Context
antiJARLocking=
"true"
path=
"/drip-api"
/>
drip-api/src/main/webapp/index.jsp
0 → 100644
View file @
d10f3136
<%@page
contentType=
"text/html"
pageEncoding=
"UTF-8"
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta
http-equiv=
"Content-Type"
content=
"text/html; charset=UTF-8"
>
<title>
JSP Page
</title>
</head>
<body>
<h1>
Welcom to the DRIP API
</h1>
</body>
</html>
drip-api/src/test/java/nl/uva/sne/drip/rest/RESTTest.java
0 → 100644
View file @
d10f3136
/*
* Copyright 2017 S. Koulouzis.
*
* 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.
*/
package
nl
.
uva
.
sne
.
drip
.
rest
;
import
java.io.File
;
import
java.io.IOException
;
import
org.junit.After
;
import
org.junit.AfterClass
;
import
org.junit.Before
;
import
org.junit.BeforeClass
;
import
org.junit.Test
;
import
java.net.URI
;
import
java.net.URISyntaxException
;
import
org.apache.http.HttpEntity
;
import
org.apache.http.HttpResponse
;
import
org.apache.http.client.HttpClient
;
import
org.apache.http.client.methods.HttpPost
;
import
org.apache.http.entity.mime.HttpMultipartMode
;
import
org.apache.http.entity.mime.MultipartEntity
;
import
org.apache.http.entity.mime.MultipartEntityBuilder
;
import
org.apache.http.entity.mime.content.FileBody
;
import
org.apache.http.impl.client.HttpClientBuilder
;
import
org.junit.Assert
;
import
static
org
.
junit
.
Assert
.
assertEquals
;
/**
*
* @author S. Koulouzis
*/
public
class
RESTTest
{
private
static
URI
url
;
private
static
File
toscaFile
;
public
RESTTest
()
{
}
@BeforeClass
public
static
void
setUpClass
()
throws
URISyntaxException
{
url
=
new
URI
(
"http://localhost:8080/drip-api/rest/upload"
);
toscaFile
=
new
File
(
"./etc/input.yaml"
);
}
@AfterClass
public
static
void
tearDownClass
()
{
}
@Before
public
void
setUp
()
{
}
@After
public
void
tearDown
()
{
}
@Test
public
void
testUpload
()
throws
IOException
{
HttpClient
client
=
HttpClientBuilder
.
create
().
build
();
HttpPost
post
=
new
HttpPost
(
url
);
MultipartEntityBuilder
builder
=
MultipartEntityBuilder
.
create
();
builder
.
setMode
(
HttpMultipartMode
.
BROWSER_COMPATIBLE
);
FileBody
fileBody
=
new
FileBody
(
toscaFile
);
builder
.
addPart
(
"file"
,
fileBody
);
HttpEntity
entity
=
builder
.
build
();
post
.
setEntity
(
entity
);
HttpResponse
status
=
client
.
execute
(
post
);
System
.
err
.
println
(
status
.
getStatusLine
());
assertEquals
(
200
,
status
.
getStatusLine
().
getStatusCode
());
//
}
}
drip-commons/pom.xml
0 → 100644
View file @
d10f3136
<?xml version="1.0" encoding="UTF-8"?>
<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>
<parent>
<groupId>
nl.uva.sne.drip
</groupId>
<artifactId>
drip
</artifactId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<artifactId>
drip-commons
</artifactId>
<packaging>
jar
</packaging>
<dependencies>
<dependency>
<groupId>
org.springframework.boot
</groupId>
<artifactId>
spring-boot-starter-web
</artifactId>
<version>
1.4.3.RELEASE
</version>
</dependency>
<dependency>
<groupId>
com.fasterxml.jackson.core
</groupId>
<artifactId>
jackson-databind
</artifactId>
<version>
2.8.6
</version>
</dependency>
<dependency>
<groupId>
org.springframework
</groupId>
<artifactId>
spring-context
</artifactId>
<version>
4.3.5.RELEASE
</version>
<type>
jar
</type>
</dependency>
<dependency>
<groupId>
com.rabbitmq
</groupId>
<artifactId>
amqp-client
</artifactId>
<version>
4.0.2
</version>
</dependency>
<dependency>
<groupId>
org.springframework.data
</groupId>
<artifactId>
spring-data-mongodb
</artifactId>
<version>
1.8.0.RELEASE
</version>
<type>
jar
</type>
</dependency>
<dependency>
<groupId>
commons-fileupload
</groupId>
<artifactId>
commons-fileupload
</artifactId>
<version>
1.3.2
</version>
</dependency>
<dependency>
<groupId>
junit
</groupId>
<artifactId>
junit
</artifactId>
<version>
4.12
</version>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.hamcrest
</groupId>
<artifactId>
hamcrest-core
</artifactId>
<version>
1.3
</version>
<scope>
test
</scope>
</dependency>
<dependency>
<groupId>
org.apache.httpcomponents
</groupId>
<artifactId>
httpmime
</artifactId>
<version>
4.5.2
</version>
<scope>
test
</scope>
<type>
jar
</type>
</dependency>
<dependency>
<groupId>
org.springframework.data
</groupId>
<artifactId>
spring-data-rest-core
</artifactId>
<version>
2.5.6.RELEASE
</version>
<type>
jar
</type>
</dependency>
<dependency>
<groupId>
javax
</groupId>
<artifactId>
javaee-web-api
</artifactId>
<version>
6.0
</version>
<scope>
provided
</scope>
</dependency>
</dependencies>
<properties>
<maven.compiler.source>
1.8
</maven.compiler.source>
<maven.compiler.target>
1.8
</maven.compiler.target>
</properties>
</project>
\ No newline at end of file
drip-commons/src/main/java/nl/uva/sne/drip/commons/types/IRequest.java
0 → 100644
View file @
d10f3136
/*
* Copyright 2017 S. Koulouzis.
*
* 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.
*/
package
nl
.
uva
.
sne
.
drip
.
commons
.
types
;
import
java.util.Date
;
import
java.util.List
;
/**
*
* @author S. Koulouzis
*/
public
interface
IRequest
{
public
enum
Status
{
FAILED
,
SUCCESS
;
}
public
void
setID
(
String
id
);
public
String
getID
();
public
Date
getCreationDate
();
public
void
setCreationDate
(
Date
creationDate
);
public
Status
getStatus
();
public
void
setStatus
(
Status
status
);
public
void
setArguments
(
List
args
);
public
List
getArguments
();
}
drip-commons/src/main/java/nl/uva/sne/drip/commons/types/Request.java
0 → 100644
View file @
d10f3136
/*
* Copyright 2017 S. Koulouzis.
*
* 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.
*/
package
nl
.
uva
.
sne
.
drip
.
commons
.
types
;
import
com.fasterxml.jackson.annotation.JsonFormat
;
import
java.io.Serializable
;
import
java.util.Date
;
import
java.util.List
;
import
javax.persistence.Column
;
import
javax.persistence.Entity
;
import
javax.persistence.GeneratedValue
;
import
javax.persistence.GenerationType
;
import
javax.persistence.Id
;
import
javax.persistence.Temporal
;
import
javax.persistence.TemporalType
;
/**
*
*
*
* @author S. Koulouzis.
*/
@Entity
public
class
Request
implements
IRequest
,
Serializable
{
@Id
@GeneratedValue
(
strategy
=
GenerationType
.
AUTO
)
private
String
id
;
@JsonFormat
(
pattern
=
"yyyy-MM-dd HH:mm:ss.S"
)
@Temporal
(
TemporalType
.
DATE
)
private
Date
creationDate
;
@Column
private
Status
status
;
@Column
private
List
arguments
;
@Override
public
void
setID
(
String
id
)
{
this
.
id
=
id
;
}
@Override
public
String
getID
()
{
return
this
.
id
;
}
@Override
public
Date
getCreationDate
()
{
return
this
.
creationDate
;
}
@Override
public
Status
getStatus
()
{
return
this
.
status
;
}
@Override
public
void
setStatus
(
Status
status
)
{
status
=
this
.
status
;
}
@Override
public
void
setArguments
(
List
args
)
{
this
.
arguments
=
args
;
}
@Override
public
List
getArguments
()
{
return
this
.
arguments
;
}
@Override
public
void
setCreationDate
(
Date
creationDate
)
{
this
.
creationDate
=
creationDate
;
}
}
drip-commons/src/main/java/nl/uva/sne/drip/commons/types/RequestRepository.java
0 → 100644
View file @
d10f3136
/*
* Copyright 2017 S. Koulouzis.
*
* 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.
*/
package
nl
.
uva
.
sne
.
drip
.
commons
.
types
;
/**
*
* @author S. Koulouzis
*/
import
java.util.List
;
import
org.springframework.data.repository.PagingAndSortingRepository
;
import
org.springframework.data.repository.query.Param
;
import
org.springframework.data.rest.core.annotation.RepositoryRestResource
;
@RepositoryRestResource
(
collectionResourceRel
=
"requests"
,
path
=
"requests"
)
public
interface
RequestRepository
extends
PagingAndSortingRepository
<
Request
,
Long
>
{
List
<
Request
>
findById
(
@Param
(
"id"
)
String
id
);
}
pom.xml
0 → 100644
View file @
d10f3136
<?xml version="1.0" encoding="UTF-8"?>
<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>
<groupId>
nl.uva.sne.drip
</groupId>
<artifactId>
drip
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<packaging>
pom
</packaging>
<properties>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
</properties>
<modules>
<module>
drip-api
</module>
<module>
drip-commons
</module>
</modules>
</project>
\ No newline at end of file
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment