diff --git a/pom.xml b/pom.xml index d26a5b4..d37fe4f 100644 --- a/pom.xml +++ b/pom.xml @@ -148,6 +148,19 @@ + + maven-javadoc-plugin + + + javadoc + package + jar + + public + + + + diff --git a/src/main/java/com/inteligr8/alfresco/acs/AcsClientConfiguration.java b/src/main/java/com/inteligr8/alfresco/acs/AcsClientConfiguration.java index db447e8..b436423 100644 --- a/src/main/java/com/inteligr8/alfresco/acs/AcsClientConfiguration.java +++ b/src/main/java/com/inteligr8/alfresco/acs/AcsClientConfiguration.java @@ -7,6 +7,14 @@ import org.springframework.context.annotation.Configuration; import com.inteligr8.rs.ClientCxfConfiguration; import com.inteligr8.rs.ClientJerseyConfiguration; +/** + * This class provides a POJO & Spring-based implementation of the + * ClientConfiguration interface. You can use it outside of the Spring + * context, but you will need the spring-context and spring-beans libraries in + * your non-Spring application. + * + * @author brian@inteligr8.com + */ @Configuration @ComponentScan public class AcsClientConfiguration implements ClientCxfConfiguration, ClientJerseyConfiguration { @@ -20,8 +28,8 @@ public class AcsClientConfiguration implements ClientCxfConfiguration, ClientJer @Value("${content.service.security.basicAuth.password:admin}") private String basicAuthPassword; - @Value("${content.service.security.accessToken:#{null}}") - private String accessToken; + @Value("${content.service.security.bearerToken:#{null}}") + private String bearerToken; @Value("${content.service.security.oauth.tokenUrl:#{null}}") private String oAuthTokenUrl; @@ -49,57 +57,109 @@ public class AcsClientConfiguration implements ClientCxfConfiguration, ClientJer @Value("${content.service.jersey.putBodyRequired:true}") private boolean putBodyRequired; - + public String getBaseUrl() { return this.baseUrl; } + public void setBaseUrl(String baseUrl) { + this.baseUrl = baseUrl; + } + public String getBasicAuthUsername() { return this.basicAuthUsername; } + + public void setBasicAuthUsername(String basicAuthUsername) { + this.basicAuthUsername = basicAuthUsername; + } public String getBasicAuthPassword() { return this.basicAuthPassword; } + + public void setBasicAuthPassword(String basicAuthPassword) { + this.basicAuthPassword = basicAuthPassword; + } - public String getAccessToken() { - return this.accessToken; + public String getBearerToken() { + return this.bearerToken; + } + + public void setBearerToken(String bearerToken) { + this.bearerToken = bearerToken; } public String getOAuthTokenUrl() { return this.oAuthTokenUrl; } + + public void setOAuthTokenUrl(String oAuthTokenUrl) { + this.oAuthTokenUrl = oAuthTokenUrl; + } public String getOAuthClientId() { return this.oAuthClientId; } + + public void setOAuthClientId(String oAuthClientId) { + this.oAuthClientId = oAuthClientId; + } public String getOAuthClientSecret() { return this.oAuthClientSecret; } + + public void setOAuthClientSecret(String oAuthClientSecret) { + this.oAuthClientSecret = oAuthClientSecret; + } public String getOAuthAuthCode() { return this.oAuthAuthCode; } + + public void setOAuthAuthCode(String oAuthAuthCode) { + this.oAuthAuthCode = oAuthAuthCode; + } public String getOAuthAuthRedirectUri() { return this.oAuthAuthRedirectUri; } + + public void setOAuthAuthRedirectUri(String oAuthAuthRedirectUri) { + this.oAuthAuthRedirectUri = oAuthAuthRedirectUri; + } public String getOAuthUsername() { return this.oAuthUsername; } + + public void setOAuthUsername(String oAuthUsername) { + this.oAuthUsername = oAuthUsername; + } public String getOAuthPassword() { return this.oAuthPassword; } + + public void setOAuthPassword(String oAuthPassword) { + this.oAuthPassword = oAuthPassword; + } public boolean isDefaultBusEnabled() { return this.defaultBusEnabled; } + + public void setDefaultBusEnabled(boolean defaultBusEnabled) { + this.defaultBusEnabled = defaultBusEnabled; + } public boolean isPutBodyRequired() { return this.putBodyRequired; } + public void setPutBodyRequired(boolean putBodyRequired) { + this.putBodyRequired = putBodyRequired; + } + } diff --git a/src/main/java/com/inteligr8/alfresco/acs/AcsClientCxfImpl.java b/src/main/java/com/inteligr8/alfresco/acs/AcsClientCxfImpl.java index 8d997a8..7c78d77 100644 --- a/src/main/java/com/inteligr8/alfresco/acs/AcsClientCxfImpl.java +++ b/src/main/java/com/inteligr8/alfresco/acs/AcsClientCxfImpl.java @@ -8,7 +8,12 @@ import com.inteligr8.rs.ClientCxfConfiguration; import com.inteligr8.rs.ClientCxfImpl; /** - * Configured JAX-RS Client & WebTarget for ACS & CXF + * This class provides a POJO & Spring-based implementation of the Apache + * CXF client. You can use it outside of the Spring context, but you will need + * the spring-context and spring-beans libraries in your non-Spring + * application. + * + * @author brian@inteligr8.com */ @Component("acs.client.cxf") @Lazy @@ -17,6 +22,20 @@ public class AcsClientCxfImpl extends ClientCxfImpl { @Autowired private AcsClientConfiguration config; + /** + * This constructor is for Spring use. + */ + AcsClientCxfImpl() { + } + + /** + * This constructor is for POJO use. + * @param config + */ + public AcsClientCxfImpl(AcsClientConfiguration config) { + this.config = config; + } + @Override protected ClientCxfConfiguration getConfig() { return this.config; diff --git a/src/main/java/com/inteligr8/alfresco/acs/AcsClientJerseyImpl.java b/src/main/java/com/inteligr8/alfresco/acs/AcsClientJerseyImpl.java index 9fed41e..68fc263 100644 --- a/src/main/java/com/inteligr8/alfresco/acs/AcsClientJerseyImpl.java +++ b/src/main/java/com/inteligr8/alfresco/acs/AcsClientJerseyImpl.java @@ -8,7 +8,12 @@ import com.inteligr8.rs.ClientJerseyConfiguration; import com.inteligr8.rs.ClientJerseyImpl; /** - * Configured JAX-RS Client & WebTarget for ACS & Jersey + * This class provides a POJO & Spring-based implementation of the Apache + * CXF client. You can use it outside of the Spring context, but you will need + * the spring-context and spring-beans libraries in your non-Spring + * application. + * + * @author brian@inteligr8.com */ @Component("acs.client.jersey") @Lazy @@ -17,6 +22,20 @@ public class AcsClientJerseyImpl extends ClientJerseyImpl { @Autowired private AcsClientConfiguration config; + /** + * This constructor is for Spring use. + */ + AcsClientJerseyImpl() { + } + + /** + * This constructor is for POJO use. + * @param config + */ + public AcsClientJerseyImpl(AcsClientConfiguration config) { + this.config = config; + } + @Override protected ClientJerseyConfiguration getConfig() { return this.config; diff --git a/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApi.java b/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApi.java index 8b0d48a..4c38b15 100644 --- a/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApi.java +++ b/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApi.java @@ -26,119 +26,236 @@ import com.inteligr8.alfresco.acs.api.TrashcanApi; import com.inteligr8.alfresco.acs.api.TypesApi; import com.inteligr8.alfresco.acs.api.V0Api; import com.inteligr8.alfresco.acs.api.VersionsApi; +import com.inteligr8.rs.AuthorizationFilter; +import com.inteligr8.rs.Client; import com.inteligr8.rs.ClientConfiguration; /** - * Alfresco Content Services Spring-ready API + * This class serves as the base implementation for the JAX-RS API for the ACS + * Public ReST API. + * + * @author brian@inteligr8.com */ public abstract class AcsPublicRestApi { abstract ClientConfiguration getConfig(); - protected abstract T getApi(Class apiClass); + abstract Client getClient(); + + protected final T getApi(Class apiClass) { + return this.getApi(null, apiClass); + } + + protected T getApi(AuthorizationFilter authFilter, Class apiClass) { + return this.getClient().getApi(authFilter, apiClass); + } public ActionsApi getActionsApi() { return this.getApi(ActionsApi.class); } + public ActionsApi getActionsApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, ActionsApi.class); + } + public ActivitiesApi getActivitiesApi() { return this.getApi(ActivitiesApi.class); } + public ActivitiesApi getActivitiesApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, ActivitiesApi.class); + } + public AspectsApi getAspectsApi() { return this.getApi(AspectsApi.class); } + public AspectsApi getAspectsApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, AspectsApi.class); + } + public AuditApi getAuditApi() { return this.getApi(AuditApi.class); } + + public AuditApi getAuditApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, AuditApi.class); + } public AuthenticationApi getAuthenticationApi() { return this.getApi(AuthenticationApi.class); } + public AuthenticationApi getAuthenticationApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, AuthenticationApi.class); + } + public CommentsApi getCommentsApi() { return this.getApi(CommentsApi.class); } + public CommentsApi getCommentsApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, CommentsApi.class); + } + public DiscoveryApi getDiscoveryApi() { return this.getApi(DiscoveryApi.class); } + public DiscoveryApi getDiscoveryApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, DiscoveryApi.class); + } + public DownloadsApi getDownloadsApi() { return this.getApi(DownloadsApi.class); } + public DownloadsApi getDownloadsApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, DownloadsApi.class); + } + public FavoritesApi getFavoritesApi() { return this.getApi(FavoritesApi.class); } + public FavoritesApi getFavoritesApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, FavoritesApi.class); + } + public GroupsApi getGroupsApi() { return this.getApi(GroupsApi.class); } + public GroupsApi getGroupsApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, GroupsApi.class); + } + public NetworksApi getNetworksApi() { return this.getApi(NetworksApi.class); } + public NetworksApi getNetworksApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, NetworksApi.class); + } + public NodesApi getNodesApi() { return this.getApi(NodesApi.class); } + public NodesApi getNodesApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, NodesApi.class); + } + public PeopleApi getPeopleApi() { return this.getApi(PeopleApi.class); } + public PeopleApi getPeopleApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, PeopleApi.class); + } + public PreferencesApi getPreferencesApi() { return this.getApi(PreferencesApi.class); } + public PreferencesApi getPreferencesApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, PreferencesApi.class); + } + public ProbesApi getProbesApi() { return this.getApi(ProbesApi.class); } + public ProbesApi getProbesApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, ProbesApi.class); + } + public QueriesApi getQueriesApi() { return this.getApi(QueriesApi.class); } + public QueriesApi getQueriesApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, QueriesApi.class); + } + public RatingsApi getRatingsApi() { return this.getApi(RatingsApi.class); } + public RatingsApi getRatingsApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, RatingsApi.class); + } + public RenditionsApi getRenditionsApi() { return this.getApi(RenditionsApi.class); } + public RenditionsApi getRenditionsApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, RenditionsApi.class); + } + public SearchApi getSearchApi() { return this.getApi(SearchApi.class); } + public SearchApi getSearchApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, SearchApi.class); + } + public SharedLinksApi getSharedLinksApi() { return this.getApi(SharedLinksApi.class); } + public SharedLinksApi getSharedLinksApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, SharedLinksApi.class); + } + public SitesApi getSitesApi() { return this.getApi(SitesApi.class); } + public SitesApi getSitesApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, SitesApi.class); + } + public TagsApi getTagsApi() { return this.getApi(TagsApi.class); } + public TagsApi getTagsApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, TagsApi.class); + } + public TrashcanApi getTrashcanApi() { return this.getApi(TrashcanApi.class); } + + public TrashcanApi getTrashcanApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, TrashcanApi.class); + } public TypesApi getTypesApi() { return this.getApi(TypesApi.class); } + public TypesApi getTypesApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, TypesApi.class); + } + public VersionsApi getVersionsApi() { return this.getApi(VersionsApi.class); } + public VersionsApi getVersionsApi(AuthorizationFilter authFilter) { + return this.getApi(authFilter, VersionsApi.class); + } + public V0Api getV0Api() { return this.getApi(V0Api.class); } + + public V0Api getV0Api(AuthorizationFilter authFilter) { + return this.getApi(authFilter, V0Api.class); + } } diff --git a/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiCxfImpl.java b/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiCxfImpl.java index 6934da5..b31bd5f 100644 --- a/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiCxfImpl.java +++ b/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiCxfImpl.java @@ -5,10 +5,15 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import com.inteligr8.alfresco.acs.api.NodesCxfApi; +import com.inteligr8.rs.AuthorizationFilter; +import com.inteligr8.rs.Client; import com.inteligr8.rs.ClientConfiguration; /** - * Alfresco Content Services Spring-ready API for CXF + * This class provides the Apache CXF client to the JAX-RS API for the ACS + * Public ReST API. It also provides extension API helpers. + * + * @author brian@inteligr8.com */ @Component("acs.api.cxf") @Lazy @@ -17,18 +22,35 @@ public class AcsPublicRestApiCxfImpl extends AcsPublicRestApi { @Autowired private AcsClientCxfImpl client; + /** + * This constructor is for Spring use. + */ + AcsPublicRestApiCxfImpl() { + } + + /** + * This constructor is for POJO use. + */ + public AcsPublicRestApiCxfImpl(AcsClientCxfImpl client) { + this.client = client; + } + @Override ClientConfiguration getConfig() { return this.client.getConfig(); } - + @Override - protected T getApi(Class apiClass) { - return this.client.getApi(apiClass); + Client getClient() { + return this.client; } public NodesCxfApi getNodesExtApi() { return this.client.getApi(NodesCxfApi.class); } + + public NodesCxfApi getNodesExtApi(AuthorizationFilter authFilter) { + return this.client.getApi(authFilter, NodesCxfApi.class); + } } diff --git a/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiJerseyImpl.java b/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiJerseyImpl.java index 8548a11..69e0708 100644 --- a/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiJerseyImpl.java +++ b/src/main/java/com/inteligr8/alfresco/acs/AcsPublicRestApiJerseyImpl.java @@ -5,10 +5,15 @@ import org.springframework.context.annotation.Lazy; import org.springframework.stereotype.Component; import com.inteligr8.alfresco.acs.api.NodesJerseyApi; +import com.inteligr8.rs.AuthorizationFilter; +import com.inteligr8.rs.Client; import com.inteligr8.rs.ClientConfiguration; /** - * Alfresco Content Services Spring-ready API for Jersey + * This class provides the Jersey client to the JAX-RS API for the ACS Public + * ReST API. It also provides extension API helpers. + * + * @author brian@inteligr8.com */ @Component("acs.api.jersey") @Lazy @@ -17,18 +22,35 @@ public class AcsPublicRestApiJerseyImpl extends AcsPublicRestApi { @Autowired private AcsClientJerseyImpl client; + /** + * This constructor is for Spring use. + */ + AcsPublicRestApiJerseyImpl() { + } + + /** + * This constructor is for POJO use. + */ + public AcsPublicRestApiJerseyImpl(AcsClientJerseyImpl client) { + this.client = client; + } + @Override ClientConfiguration getConfig() { return this.client.getConfig(); } @Override - protected T getApi(Class apiClass) { - return this.client.getApi(apiClass); + Client getClient() { + return this.client; } public NodesJerseyApi getNodesExtApi() { return this.client.getApi(NodesJerseyApi.class); } + + public NodesJerseyApi getNodesExtApi(AuthorizationFilter authFilter) { + return this.client.getApi(authFilter, NodesJerseyApi.class); + } } diff --git a/src/main/java/com/inteligr8/alfresco/acs/model/v0/PropertyInfo.java b/src/main/java/com/inteligr8/alfresco/acs/model/v0/PropertyInfo.java index 0a6a6dd..6c32b06 100755 --- a/src/main/java/com/inteligr8/alfresco/acs/model/v0/PropertyInfo.java +++ b/src/main/java/com/inteligr8/alfresco/acs/model/v0/PropertyInfo.java @@ -33,7 +33,7 @@ public class PropertyInfo extends NamedObject { private boolean indexed; @JsonProperty - private List contraints; + private List constraints; @@ -100,5 +100,13 @@ public class PropertyInfo extends NamedObject { public void setIndexed(boolean indexed) { this.indexed = indexed; } + + public List getConstraints() { + return constraints; + } + + public void setConstraints(List constraints) { + this.constraints = constraints; + } }