SBT custom conflict manager - sbt

I would like to get a better idea of conflicting dependencies between artifacts in my organization. For this, I have created a meta-project that includes all the other top-level projects. To identify conflicts of various transitive dependencies, my idea was to use a conflict manager.
I know I can set a conflict manager like this
conflictManager := ConflictManager.strict
How would I set the strict manager only for com.example packages, and possibly compose it with other more specific managers?
Is it possible to create completely custom dependency managers, which would only warn about conflicts?
I am also thankful for other ideas on solving this problem.

You can do it with
conflictManager := ConflictManager.strict.copy(organization = "com.example.*")
You can vary (Ivy) type of conflict manager, organization and module filters. See this sbt source with it's definition. Also see Ivy docs on types of conflict managers
It seems that you can define a custom Ivy conflict manager setting it's name with ConflictManager("...") (see the Ivy docs on what you can to write there). Although I don't see any way to combine several conflict managers: sbt provides only one setting key conflictManager and sets the ivy manager directly from it.

Related

Error "Multiple attachments set for the same contract" after implicit cordapp upgrade to new contracts version

After implicit contract upgrade i got an error when execute tx - java.lang.IllegalArgumentException: Multiple attachments set for the same contract.
the problem related to net.corda.core.transactions.TransactionBuilder.selectContractAttachmentsAndOutputStateConstraints method which detect groups contained more than one attachment for the same contract name.
To perform upgrade I have changed the version of the contracts, so I do not have contracts with the same version on the node.
In the table NODE_ATTACHMENTS_CONTRACTS i really have the same CONTRACT_CLASS_NAME and different ATT_ID, however it should be in this way when I add new contract version (add jar to cordapps folder).
Such approach described in https://github.com/corda/samples/tree/release-V4/implicit-cordapp-upgrades and in the example it functioning well.
Thanks for any help.
Normally Multiple attachments error is caused by incorrect project structures that have multiple sub-projects(with the same name) under the root project.
Unfortunately, without seeing your code, we cannot really see what is the issue with your code.
Thus, i would suggest you follow the sample and do it again, and consult with
our documentation at
https://docs.corda.net/docs/corda-os/4.4/api-contract-constraints.html#implicit-vs-explicit-contract-upgrades
the contract upgrade article
https://medium.com/corda/contract-upgrades-and-constraints-in-corda-425055a9a47f

JFrog Artifactory AQL

I am currently trying to query Artifactory for specific artifacts related to a core project. All artifacts will be prefixed with a project tag. Example: "proj1-core". I use Artifactory aql to query artifacts using name attribute.
Now I also have a need to query specific type of artifacts - maven, pypi, npm, docker. I am aware of type attribute of artifact domain, but it is not which defines these types. I have seen types have specific properties. Example - npm.*, pypi.*, docker.*.
But for maven it has artifact.* and not for others. I am trying to find a common property which gives the type of the artifact.
Please let me know of any pointers.
The Artifactory query language does not have a field which includes the package type.
You can assume the package type from the repository, which will cover most cases (not including Generic repositories or generic artifacts which are deployed to typed repositories).

Specify dependency branch or commit ID in Swift PM's Package.swift

Is there a way to define dependency in Package.swift that would point at a certain branch latest commit, or even to just a specific commit ID (just like it is possible with Carthage)?
Use case would be, let's say I have a library repo where I would like to branch out and make some changes, and then be able to test them out in a dependent project.
As of Swift 4 you can use .branch() and .revision() as described in PackageDescription.md.
It is possible.
Go to project
Click on "Package Dependencies" Tab
Double click on the package you want to change the branch of
Specify the branch/commit.
Not yet, but swiftpm team is working on. Now you must specify a package version when declaring a dependency.
import PackageDescription
let package = Package(
name: "Example",
dependencies: [
.Package(url: "https://github.com/somePackage", "1.0.0")
]
)
In the future it will be possible, there was a discussion to add Version Locking but its not accepted and implemented yet.
For your use case you can fork the repo, do the changes, test them and then add a version tag to your fork. Now it's much more easier to do changes with Editable Packages functionality.

Can I run code at Alfresco startup?

I have an Alfresco module that I would like to have do some cleanup when a new version of it is installed.
In the current situation, an older version of the module created a folder node with custom properties at the root of the repository. We've since decided to have multiple such nodes, and none of them at that location. I'd like to put into the next version of the module code that would run at Alfresco startup, check for the existence of the old node, copy its properties into the appropriate new nodes, and delete the old node.
Is such a thing possible? I've looked at the Bootstrap configuration file, but that appears to only allow one to add things to the repository, not modify or delete them.
My suggestion is that you write a patch. That is a class that implements
org.alfresco.repo.admin.patch.AbstractPatch
Then you can do pretty much anything you want on bootstrap (except executing searches against solr since it wont be available).
Add some spring configuration, take a look at the file patch-services-context.xml for inspiration.
Yes you can do that, probably you missed the correct place in the documentation about that:
If you open Import Strategy you'll find a section Per BootstrapView, you should be using something like REPLACE_EXISTING or UPDATE_EXISTING for your ACP packaged content (if you're using ACPs as your bootstrap importing strategy).
Here is a more detailed description of the UUID Bindings values.
Hope that helps.
You can use patches.
When alfresco server starts it applies patches and executes database updates etc.
Definition :
A patch is a piece of Java code that executes once when Alfresco
Content Services starts. Custom patches can be implemented.
Documentation Link

How to find the use of default tables available in drupal

How can I able to find the usage of default tables available in drupal.
Is there any documentation available?
For example: there is a table called node. I need to know what is the usage of it and how it acts.
Any suggestions or answers will be helpful and grateful.
Your question is not very clear (the term "usage" is quite ambiguous), but you could install the Devel module. After setting it up it will show, for every page loaded (home page included), which SQL queries are run.
Every module can add tables to the database. A default Drupal install uses core modules, either required ones or those installed as dependencies of the default installation profile. These modules install their own tables.
Each module declares its tables in its implementation of hook_schema. The Schema module use the information from the implementations of this hook to provide a schema documentation.
Most of the time, you shouldn't directly access the database but use the API provided by the modules managing the data. Tables are usually considered private for their modules. New release of a module may change its schema in an incompatible way. Using API is much safer. Unfortunately, sometimes database access is the only option. In these cases, implementation of a data access layer between your code and the database is advised.

Resources