Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
W
webmagic
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
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
沈俊林
webmagic
Commits
9a4eab44
Commit
9a4eab44
authored
Mar 16, 2014
by
yihua.huang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
add DynamicClassException to DynamicClassService.compileAndSave
parent
09c43efc
Changes
4
Show whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
42 additions
and
7 deletions
+42
-7
DynamicClassCompileException.java
...raft/webmagic/exception/DynamicClassCompileException.java
+15
-0
DynamicClassService.java
...va/us/codecraft/webmagic/service/DynamicClassService.java
+3
-1
DynamicClassServiceImpl.java
...ecraft/webmagic/service/impl/DynamicClassServiceImpl.java
+10
-3
DynamicClassServiceImplTest.java
...decraft/webmagic/service/DynamicClassServiceImplTest.java
+14
-3
No files found.
webmagic-avalon/webmagic-avalon-common/src/main/java/us/codecraft/webmagic/exception/DynamicClassCompileException.java
0 → 100644
View file @
9a4eab44
package
us
.
codecraft
.
webmagic
.
exception
;
/**
* @author code4crafter@gmail.com
*/
public
class
DynamicClassCompileException
extends
Exception
{
public
DynamicClassCompileException
(
String
message
)
{
super
(
message
);
}
public
DynamicClassCompileException
(
String
message
,
Throwable
cause
)
{
super
(
message
,
cause
);
}
}
webmagic-avalon/webmagic-avalon-common/src/main/java/us/codecraft/webmagic/service/DynamicClassService.java
View file @
9a4eab44
package
us
.
codecraft
.
webmagic
.
service
;
import
us.codecraft.webmagic.exception.DynamicClassCompileException
;
/**
* @author code4crafter@gmail.com
*/
public
interface
DynamicClassService
{
public
String
compileAndSave
(
String
sourceCode
)
;
public
Class
compileAndSave
(
String
sourceCode
)
throws
DynamicClassCompileException
;
}
webmagic-avalon/webmagic-avalon-common/src/main/java/us/codecraft/webmagic/service/impl/DynamicClassServiceImpl.java
View file @
9a4eab44
package
us
.
codecraft
.
webmagic
.
service
.
impl
;
import
org.codehaus.groovy.control.CompilationFailedException
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
us.codecraft.forger.Forger
;
import
us.codecraft.forger.ForgerFactory
;
import
us.codecraft.webmagic.dao.DynamicClassDao
;
import
us.codecraft.webmagic.exception.DynamicClassCompileException
;
import
us.codecraft.webmagic.model.DynamicClass
;
import
us.codecraft.webmagic.service.DynamicClassService
;
...
...
@@ -21,14 +23,19 @@ public class DynamicClassServiceImpl implements DynamicClassService {
private
ForgerFactory
forgerFactory
;
@Override
public
String
compileAndSave
(
String
sourceCode
)
{
Forger
<
Object
>
forger
=
forgerFactory
.
compile
(
sourceCode
);
public
Class
compileAndSave
(
String
sourceCode
)
throws
DynamicClassCompileException
{
Forger
<
Object
>
forger
;
try
{
forger
=
forgerFactory
.
compile
(
sourceCode
);
}
catch
(
CompilationFailedException
e
)
{
throw
new
DynamicClassCompileException
(
e
.
getMessage
(),
e
);
}
String
className
=
forger
.
getClazz
().
getCanonicalName
();
DynamicClass
dynamicClass
=
new
DynamicClass
();
dynamicClass
.
setClassName
(
className
);
dynamicClass
.
setSourceCode
(
sourceCode
);
dynamicClassDao
.
add
(
dynamicClass
);
return
className
;
return
forger
.
getClazz
()
;
}
}
webmagic-avalon/webmagic-avalon-common/src/test/java/us/codecraft/webmagic/service/DynamicClassServiceImplTest.java
View file @
9a4eab44
...
...
@@ -13,9 +13,11 @@ import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import
us.codecraft.forger.ForgerFactory
;
import
us.codecraft.webmagic.Foo
;
import
us.codecraft.webmagic.dao.DynamicClassDao
;
import
us.codecraft.webmagic.exception.DynamicClassCompileException
;
import
us.codecraft.webmagic.service.impl.DynamicClassServiceImpl
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
assertThat
;
import
static
org
.
assertj
.
core
.
api
.
Assertions
.
failBecauseExceptionWasNotThrown
;
/**
* @author code4crafter@gmail.com
...
...
@@ -25,7 +27,7 @@ import static org.assertj.core.api.Assertions.assertThat;
public
class
DynamicClassServiceImplTest
{
@Before
public
void
setUp
(){
public
void
setUp
()
{
MockitoAnnotations
.
initMocks
(
this
);
}
...
...
@@ -41,7 +43,16 @@ public class DynamicClassServiceImplTest {
@Test
public
void
testCompileAndSave
()
throws
Exception
{
String
className
=
dynamicClassService
.
compileAndSave
(
Foo
.
SOURCE_CODE
);
assertThat
(
className
).
isEqualTo
(
"us.codecraft.webmagic.Foo"
);
Class
aClass
=
dynamicClassService
.
compileAndSave
(
Foo
.
SOURCE_CODE
);
assertThat
(
aClass
.
getCanonicalName
()).
isEqualTo
(
"us.codecraft.webmagic.Foo"
);
}
@Test
public
void
testCompileFail
()
{
try
{
dynamicClassService
.
compileAndSave
(
"class s(("
);
failBecauseExceptionWasNotThrown
(
DynamicClassCompileException
.
class
);
}
catch
(
DynamicClassCompileException
e
)
{
}
}
}
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